Keine 0 LSB erreichbar

#519044
Lesenswert?

Hallo.

ich schaffe es nicht das beim ATmega16 mein interner A/Dwandler 0LSB 
anzeigt wenn ich den Eingang mit Masse verbinde.

Ich benutze externe Referenz die ich noch abgleiche ( 0,0 - 5,0V sollen 
0-1000LSB werden).

Lege ich an den Eingang Masse habe ich etwa 28 -34 LSB. Das Ergebnis ist 
von  Kanal zu Kanal etwas unterschiedlich.
Es handelt sich soweit ich das sagen kann nicht um Rauschen, denn die 
Werte stehen bei dem jeweiligen Kanal absolut staibl, allerdings mittle 
ich auch kräftig (65x)
Ich prüf morgen mal wie das aussieht wenn ich nicht mittle.

Welche Ursachen kann das haben?

eine die mir einfallen würde wäre eine Potentialdifferenz innerhalb der 
GND- Strecke, derartiges konnte ich aber nicht messen.



Gast #519064
Lesenswert?

@Sirko Pöhlmann

>Lege ich an den Eingang Masse habe ich etwa 28 -34 LSB. Das Ergebnis ist
>von  Kanal zu Kanal etwas unterschiedlich.

Das ist viel zu viel. Da is was faul.

>Werte stehen bei dem jeweiligen Kanal absolut staibl, allerdings mittle
>ich auch kräftig (65x)

Warum 65x?? 64 ist wesentlich sinnvoller, da sie Division zur 
Schiebeoperation vereinfacht wird. Vielleicht liegt dort der Fehler? 
Schmuggelt sich dort irgendwo ein Wert rein?

MfG
Falk
#519075
Lesenswert?

Was soll die REF schon machen ? :-)

ist eine trimmbare Präzisionsreferenzspannungsquelle 5,0V.
Ist entsprechend Datenblatt angeschlossen. Die Referenzspannung steuert 
ja den "oberen" auflösungspunkt, da ist alles ok, kein Rauschen oder so, 
er arbeitet sauber bis 5,11V = 1023LSB ( 5,00=1000LSB).
Das Problem besteht nur an der unteren Grenze.

Die riesige Potentialdifferenz konnte ich bisher nicht finden, 
kontrolliere morgen aber nochmal die Software nach den Ports. Die 
meisten sind aber gar nicht benutzt, außer 4 A/D Eingängen und Uart ist 
praktisch nix angeschlossen. Trotzdem klingt das im Moment am 
vielversprechendsten!

Nein, ich messe keine differentielle Spannung mit Verstärkung.


#519078
Lesenswert?

Falk wrote:
> @Sirko Pöhlmann
>
>>Lege ich an den Eingang Masse habe ich etwa 28 -34 LSB. Das Ergebnis ist
>>von  Kanal zu Kanal etwas unterschiedlich.
>
> Das ist viel zu viel. Da is was faul.
>

sag ich ja :-)

>>Werte stehen bei dem jeweiligen Kanal absolut staibl, allerdings mittle
>>ich auch kräftig (65x)
>
> Warum 65x?? 64 ist wesentlich sinnvoller, da sie Division zur
> Schiebeoperation vereinfacht wird. Vielleicht liegt dort der Fehler?
> Schmuggelt sich dort irgendwo ein Wert rein?


ähhh, sorry, natürlich mittle ich mit 64x wegen der Schiebeoperationen, 
verschrieben...
>
> MfG
> Falk
Gast #519321
Lesenswert?

Die ADC Wandler in µC sind in der Regel so aufgebaut das ein 
Eingangsmultiplexer vor die Klemmschlatung geschaltet ist , und nach der 
Klemmschaltung dann der eigentliche AD Wandler kommt.

Wird jetzt von Eingang X auf Eingang Y geschaltet muss die 
Klemmschaltung umgeladen werden. Das benötigt Zeit.

Prüf mal noch ob du diese Zeit lang genug eingestellt hast.

Wenn diese Zeit zu kurz ist, hat das zur Folge das du an Eingang Y eine 
Spannung erkennst die irgendwo zwischen dem Wert an X und dem Wert an Y 
liegt.

#519340
Lesenswert?

Ralph wrote:
> Die ADC Wandler in µC sind in der Regel so aufgebaut das ein
> Eingangsmultiplexer vor die Klemmschlatung geschaltet ist , und nach der
> Klemmschaltung dann der eigentliche AD Wandler kommt.

ja , ich weiß

> Wird jetzt von Eingang X auf Eingang Y geschaltet muss die
> Klemmschaltung umgeladen werden. Das benötigt Zeit.

aha,da hab ich ja noch gar nix von gehört. hm. wieviel Zeit?.... mal 
sehen ob ich das im Datenblatt finde...

>
> Prüf mal noch ob du diese Zeit lang genug eingestellt hast.

Ich hab da sicher gar nix eingestellt, es liegen zwar eine Menge 
Schritte dazwischen aber nicht explizit ein längeres Warteintervall.

>
> Wenn diese Zeit zu kurz ist, hat das zur Folge das du an Eingang Y eine
> Spannung erkennst die irgendwo zwischen dem Wert an X und dem Wert an Y
> liegt.

Kann ich nachvollziehen, allerdings sollte dann der Fehler am ersten 
abgefragten Eingang nicht auftreten, denn zwischen der Abfrage des 
letzten Kanals und des ersten Kanals liegt eine deutliche Pause ( 
Datenaufbereitung, UART senden ) Oder?

@ Rolf: na das will ich eigentlich hoffen, ist auf eigener Platine 
gelötet, aber ich mess nochmal nach. Das Problem tritt aber auf allen 4 
benutzten Kanälen auf, ich würde daher ausschließen das es ein Fehler in 
der jeweiligen Kanalaufbereitung ist. Ich hatte den Verdacht das A/D-GND 
keine Verbindung hat, konnte aber zwischen A/D-GND und GND keine 
Differenz messen. Morgen Früh klapper ich mal alle anderen GNDs noch ab 
:-)

#519538
Lesenswert?

Also ich bin jetzt mit meinem Latein am Ende.

Ich kann nirgends auf der Platine eine Potentialdifferenz in der GND 
Strecke finden.

Ic habe den Controller mal mit anderen getauscht ( Atmega 16 und Atmega 
323), das Problem bleibt bestehen, der gemessene GND "Offset" ändert 
sich  ( zB 60 statt 28 LSB), aber ist trotzdem immer da,

Die Eingänge liegen wie gesagt direkt an Masse.

Ich habe 1,5ms Wartezeit zwischen die Kanalumschaltung vor dem Wandler 
gesetzt - bringt gar nix.

Ich habe die Mittelungen raus genommen - bringt gar nix. Der Wert 
rauscht nur die typ +/-1LSB, ansonsten stabil bei ca 30 LSB.

Sobald ich mit meiner am A/D angelegten Spannung über den Wert komme der 
den 30 LSB entspricht (150mV) funktioniert die Spannungsmessung des 
Wandlers wie gewünscht.

Es muß irgendwo einen Fehler geben - bloß wo.

Wen ich ihn nicht finde bleibt mir nur den A/DGND mit einem 
Spannungsteiler von -15V aus auf etwa -150mV zu ziehen und zu sehen ob 
es dann funktioniert.  Wäre aber nur rumdoktern an Symptomen...
#519569
Lesenswert?

ich versorge den Controller direkt aus der USB Buchse auf der Platine. 
Die ist in der Realität aber etwas unter 5V, etwa 4,91V. An der 
USB-Buchse sitzten 10nF zwischen GND und 5V

Der Controller hängt dann über 10µH an 5V und 100nF an GND

VCC --10uH----100nF--GND
            |
            |
           5V

Ansonsten gibts noch die Resetbeschaltung mit 47k ->5V und 47pF->GND
Und d


aus den 5V der USB Schiene mach ich noch +/-15V die ich für OPVs und 
anderes brauche.


#519689
Lesenswert?

Sirko Pöhlmann wrote:
> ich versorge den Controller direkt aus der USB Buchse auf der Platine.
> Die ist in der Realität aber etwas unter 5V, etwa 4,91V. An der
> USB-Buchse sitzten 10nF zwischen GND und 5V

Mit was versorgst du denn deine Spannungsreferenz ?

Dir ist klar das der ARef Eingang nie nicht höheres potential haben darf 
als VCC..

Gruß
Björn
Gast #519741
Lesenswert?

hallo,

ich hatte mal ein ähnliches problem mit einem pic,
nach langer suche war es dann ein dummer programmierfehler(überlauf)
der die internen pullups am AD port für einen takt zwischen den
messungen aktivierte.

vielleicht hast du ja auch das "glück" :)
Gast #519749
Lesenswert?

@helferlein

>der die internen pullups am AD port für einen takt zwischen den
>messungen aktivierte.

Ei Pll-up wird aber wohl kaum die Masse nennenswert hochziehen können 
wenn der Eingang hart auf Masse liegt).

MFG
Falk
#519777
Lesenswert?

Programmierfehler kann ich ausschließen, wenn ich direkt nach dem 
Wandeln eine 0 ins Register schreibe kommt zum Schluß auch eine 0 raus 
:-)

nein -15V kommen natürlich nicht an die Ref, das ist ein 
Missverständnis...

"Wenn ich das jetzt richtig verstanden habe bekommt dein AREF Pin 5.11V
und AVCC 4.9-5V oder ?
Das kann nicht gehen, Siehe Datenblatt."

Ja, da steckt das Problem wohl. Ich hatte im Hinterkopf das +/-0,3V 
Abweichung ok sind , das betrifft aber nur Avcc , nicht die Ref.

Wenn ich mit der Ref etwas unter AVcc gehe verschwindet das Problem!

Nur komme ich dann mit meinem Auflösungs und Dynamikbereich nicht mehr 
hin. Ich brauch zwingend 5,00V = 1000LSB

Ich müßte also am besten nur für die Versorgung des Atmega die knapp 5V 
aus dem USB etwas anheben, auf 5,3- 5,5V zB.  Wie macht man das am 
besten?
#519792
Lesenswert?

Sirko Pöhlmann wrote:

> Nur komme ich dann mit meinem Auflösungs und Dynamikbereich nicht mehr
> hin. Ich brauch zwingend 5,00V = 1000LSB

Was misst Du denn eigentlich für ein Signal das es auf 0.00488 V 
Auflösung ankommt ? Du kannst ja in Software umrechnen.

Gruß
Björn
#519815
Lesenswert?

> Nur komme ich dann mit meinem Auflösungs und Dynamikbereich nicht mehr
> hin. Ich brauch zwingend 5,00V = 1000LSB

Das mag ich ungern glauben. Wenn Du vor dem ADC des AVRs sowiso einen 
Operationsverstärker zur Aufbereitung Deines Eingangssignals hast, so 
kannst Du durch Verstellen dessen Verstärkung auf Deine gewünschte 
Auflösung kalibrieren.

Ich vermute stark, dass der Fehler im Analogteil (OPV) liegt. Hast Du 
mal den ADC direkt (ohne OPV davor) mit einem Poti zwischen GND und Vcc 
getestet?

...
#519968
Lesenswert?

Der Aufbau ist so:

Messgerät Messbereich 0 - 1000ppm
Ausgang: 4-20mA

mein Umsetzer:
Eingang 4-20mA -> spezieller Schnittstellen-Umsetzer-IC-> 0-5V -> 
0-1000LSB digitalisiert als Asci Ziffernfolge via USB an PC -> am PC ist 
dann

Messbereich 0-1000ppm am Messgerät = LSB Wert 0-1000

ok?

sobald ich da an der 0-5V Geschichte fummel komm ich in Schwierigkeiten 
bzw es bietet sich dermaßen elegant an das genau SO zu machen da man 
überhaupt kein weitere Rechnerei mehr braucht. Wann hat man es schonmal 
das der gesendete LSB wert exakt dem Messwert entspricht.
Gast #519977
Lesenswert?

@Sirko Pöhlmann

>Der Aufbau ist so:

>Messgerät Messbereich 0 - 1000ppm
>Ausgang: 4-20mA

>mein Umsetzer:
>Eingang 4-20mA -> spezieller Umsetzer-IC-> 0-5V -> 0-1000LSB

Die meisten Leute nehmen statt eines (teuern) Umsetzer ICs einfach einen 
240 Ohm Widerstand.

Stromschnittstelle

Beitrag "Hall-Sensor Mikrocontroller"

>digitalisiert als Asci Ziffernfolge via USB an PC -> am PC ist dann
>Messbereich 0-1000 = LSB Wert 0-1000

>ok?

Wenns eh schon ASCII ist, dann rechnet niemand in LSB sondern 
sionnvollerweise in Einheiten V, A, wasauchimmer. IN deinem Fall ppm
Un ob du nun 0-1000 ppm auf 0-5V oder 0-2,5 oder 0-3,3 oder 0-4,096V 
abbildest ist praktisch egal.

>sobald ich da an der 0-5V Geschichte fummel komm ich in Schwierigkeiten

Nö, du musst nur deinen Umsetzer-IC mit einem geringeren 
Verstärkunksfaktor einstellen (oder einfach einen kleineren Widerstand 
nehemen).
Wenn dann dein 0-1000ppm in 0...4,096 V umgewandelt werden, gehts 
wunderbar mit 5V AVR Betriebsspannung.

MfG
Falk
#519979
Lesenswert?

Sirko Pöhlmann wrote:
> Der Aufbau ist so:
>
> Messgerät Messbereich 0 - 1000ppm
> Ausgang: 4-20mA
>
> mein Umsetzer:
> Eingang 4-20mA -> spezieller Schnittstellen-Umsetzer-IC-> 0-5V ->
> 0-1000LSB digitalisiert als Asci Ziffernfolge via USB an PC -> am PC ist
> dann
>
> Messbereich 0-1000ppm am Messgerät = LSB Wert 0-1000


AD-Wert durch 1,023 teilen und runden...
Musst Du nur noch in Software giessen.
Gast #519986
Lesenswert?

@Björn Wieck

>> Messbereich 0-1000ppm am Messgerät = LSB Wert 0-1000

>AD-Wert durch 1,023 teilen und runden...
>Musst Du nur noch in Software giessen.

Von hinten durch die Brust ins Auge! Aua.

Besser nochmal die Grundlagen der Messtechnik durcharbeiten, mit Fokus 
aus Kalibrierung und Messwertumformung.

MFG
Falk

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren