www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Keine 0 LSB erreichbar


Autor: Sirko Pöhlmann (poehli)
Datum:

Bewertung
0 lesenswert
nicht 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.




Autor: Benedikt K. (benedikt) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Entweder hast du eine gewaltige Potentialdifferenz (30 entspricht etwa 
150mV) aufgrund eines Kurzschlusses (z.B. Port auf Ausgang und High, und 
mit Masse verbunden), oder du misst eine Differentielle Spannung mit 
hoher Verstärkung.

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was macht die Referenzspannungsquelle? Wie sieht die Beschaltung von 
AREF aus?

> In either case, the external AREF pin is directly connected
> to the ADC, and the reference voltage can be made more immune
> to noise by connecting a capacitor between the AREF pin and ground.

(aus Mega16 user's manual)

Autor: Falk (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Sirko Pöhlmann (poehli)
Datum:

Bewertung
0 lesenswert
nicht 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.



Autor: Sirko Pöhlmann (poehli)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Rolf Magnus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sind alle GND- und AGND-Pins verschaltet und überprüft?

Autor: Ralph (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.


Autor: Sirko Pöhlmann (poehli)
Datum:

Bewertung
0 lesenswert
nicht 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 
:-)


Autor: Sirko Pöhlmann (poehli)
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: Simon K. (simon) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Da ich noch nichts dazu gelesen habe:

Wo hast du welche Kondensatoren wie eingebaut?
Genug Abblockkondensatoren an der Versorgungsspannung und an AREF?

Autor: Uli (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Da ist nicht irgend eine NICHT-Rail-to-Rail Elektronik davor ?

Autor: Sirko Pöhlmann (poehli)
Datum:

Bewertung
0 lesenswert
nicht 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.



Autor: Björn Wieck (bwieck)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Sirko Pöhlmann (poehli)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
die Referenz versorg ich über +15V, die aus dem  dcdc kommen ( 5V rein 
+/-15V raus)

Autor: helferlein (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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" :)

Autor: Falk (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Björn Wieck (bwieck)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sirko Pöhlmann wrote:
> die Referenz versorg ich über +15V, die aus dem  dcdc kommen ( 5V rein
> +/-15V raus)

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.

Gruß
Björn


Autor: Marvin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Öhm - 15V an der Referenz? Kann ich mir nicht vorstellen.
Leg doch mal die Referenz an VCC (interne Referenz abschalten!).

Autor: Sirko Pöhlmann (poehli)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Björn Wieck (bwieck)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht 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?

...

Autor: Sirko Pöhlmann (poehli)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Falk (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Björn Wieck (bwieck)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Falk (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.