PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : ADC-Wert unter 1V Instabiel



dennis1986
30.04.2010, 13:07
Guten Tag,

Ich betreibe an einem Atmega8 einen Entfernungssensor 2D120 von Sharp. Das Signal wandle ich mit dem 10Bit AD-Wandler des µC.
Der Sensor gibt in etwas 0,1 - 3,2V aus. Also bei meiner angelegten Reff-Spannung von 5V sollte der digitale Wert ca. 20 - 656 sein. Singt die Spannung des Ausgangssignal vom Sensor unter ca. 1V, schwingt der digitale Wert wahllos.

Wie bekomme ich das ganze stabilisiert? Kann ich den ADC irgendwie träger machen, oder muss mein Ausgangssignal des Sensors noch einmal Verstärken (OPV) und dann über einen Spannungsteiler abfragen?

Hat jemand von euch eine Idee?

Gruß Dennis

shedepe
30.04.2010, 13:14
Häng doch mal testweise nen kleinen Kondensator (10 - 100nf) zwischen Signal und Masse.

BASTIUniversal
30.04.2010, 13:42
Hi!
Hast du schon mal probiert statt dem Entfernungssensor ein Poti an den ADC anzuschließen?
Wenn die Geschichte sowohl mit Poti als auch mit Sensor unter 1V schwingt, dann weißt du, dass es nicht am Sensor liegt.

Poste am besten zusätzlich noch dein Programm und deinen Schaltplan.

Gruß
Basti

dennis1986
30.04.2010, 14:25
Schaltplan werde ich mal vorbereiten. Ist aber Nur Atmega8 in der Standartbeschaltung mit 3,6MHz Quarz. AVCC =5V direkt, AREF = 5V über 100nF angeschlossen, GND Masse.
Der Sensor liegt an ADC0 (pinc0) über einen 100nF angeschlossen.

Das Programm soll mir nur auf einem Display den digitalenwert anzegen. Zusätzlich noch den Wert vom high und low Byte.


$regfile = "m8def.dat" 'AtmelMega8 Deklaration
$crystal = 3686400 'Gibt Taktgeschwindigkeit des Quarzes an
$baud = 14400 'Festlegung der Übertragungsgeschwindigleit UART
Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Portd.4 , Db5 = Portd.5 , Db6 = Portd.6 , Db7 = Portd.7 , E = Portd.3 , Rs = Portd.2
Config Lcdbus = 4
Cursor Off

Config Timer0 = Timer , Prescale = 1024
Enable Timer0
Timer0 = 0

Config Adc = Single , Prescaler = Auto , Reference = Avcc
Start Adc

Ddrb = &B00110000
Ddrc = &B00011100
Ddrd = &B11111110
Portb = &B00001111

Declare Sub Warten()
Declare Sub Wertholen()

Dim Entfernungswertesumme As Word
Dim Messungen As Byte
Dim Entfernungswertdigi As Word At $160
Dim Entfernungswertdigi1 As Byte At $160 Overlay
Dim Entfernungswertdigi2 As Byte At $161 Overlay

Gosub Wertholen

Cls
Locate 1 , 1
Lcd "D: D1: "
Locate 2 , 1
Lcd "D2:"

Do
Entfernungswertdigi = 0
Entfernungswertdigi1 = 0
Entfernungswertdigi2 = 0
Gosub Wertholen
Locate 1 , 4
Lcd Entfernungswertdigi
Locate 1 , 13
Lcd Entfernungswertdigi1
Locate 2 , 5
Lcd Entfernungswertdigi2
Waitms 400
Loop
End


Sub Wertholen()
Entfernungswertdigi = 0
Entfernungswertdigi = Getadc(0)
End Sub


Sub Warten()
Do
Start Timer0
Loop Until Tcnt0 >= 169
Stop Timer0
Timer0 = 0
End Sub


Das Poti liefert das gleich Ergebnis. Mit einem Multimeter und Oszilloscope kann ich erkennen, das die Spannung auch bei 0,1V Ausgabe vom Sensor noch stabiel ist.
Ist der ADC pin offen , zeigt er gleiches Verhalten wie bei den kleinen Spannungen...

Hubert.G
30.04.2010, 15:43
Deine Spannung wird nicht stabil oder störungsfrei sein.
AVCC wie im Datenblatt vorgeschlagen beschalten. AREF nicht mit AVCC verbinden.

oberallgeier
30.04.2010, 17:34
Hi Dennis,


... an einem Atmega8 ... 2D120 von Sharp ... unter ca. 1V, schwingt der digitale Wert wahllos ...Wahllos - das klingt leider ziemlich nichtssagend? In welchem Bereich sind bei diesem "wahllos" die Werte? Welchen Abstand hattest Du da gemessen? Unter 10 mm oder über 120 mm?

Der GP2D120 ist bekannt für seine Störempfindlichkeit. Das Datenblatt gibt auch einen Hinweis zur Entstörung, ich bin mit diesem Vorgehen (https://www.roboternetz.de/phpBB2/zeigebeitrag.php?p=384864&sid=5d3540b6aa56e45dabe3a75777b0647b#384864) (evtl. den ganzen Thread lesen) zu guten Ergebnissen (https://www.roboternetz.de/phpBB2/zeigebeitrag.php?p=384168&sid=3bd838f23ab3fc3e88793908ca82475b#384168) gekommen. Dabei sind beide Kondensatoren wichtig. Die LED des Sharp zieht so viel Power, dass ich ausserdem die Versorgung des Sharp üblicherweise separat vom Controller habe, um Störungen zu vermeiden.


... oder muss mein Ausgangssignal des Sensors noch einmal Verstärken (OPV) ...Das klingt nicht gut. Schwankt denn Dein Ausganssignal - also das analoge Signal? Und welche Störfrequenzen hast Du da drauf?

dennis1986
01.05.2010, 17:05
Hallo,
Den Sensor habe mit Kondensatoren stabilisiert. Unter dem Ossi habe ich ein sehr glattes, stabiles analoges Ausgangssignal.
ARFF habe ich im Moment nur an 5V und mit einem 100nF gegen Masse. Im Datenblatt ist noch eine Spule zwischen 5V und ARFF. Bringt die wirklich etwas?
Mein digitaler Wert schwankt erste wenn mein Analogwert (Sensorausgabespannung) 0V-1V ist. Dann verhält sich das genau so als wenn der ADC-Pin offen wäre. Habe mein Sensorausgang mal noch mit einem 50K Widerstand gegen Masse gelegt. Der gewandelte digitale Wert schwankt jetzt weniger, bzw. fängt jetzt erst bei kleinen Spannungen (0V- 0,7V) an zu schwingen.

Es ist halt nur ein Schwingen des digitalen gewandelten Wertes. Wenn ich das analoge Signal mit einem Multimeter messe, passen halt dieses wahllose digitale Schwingen und der analoge Wert nicht zusammen. Aber wie schon gesagt, erst so zwischen 0V und 1V. Darüber ist alles ok.

Ich werde mit mal eine Spule besorgen und die an ARFF hängen. Mal schauen was das bringt…

Hubert.G
02.05.2010, 08:13
Die Spule gehört zwischen VCC und AVCC, AREF wird intern mit AVCC verbunden und gehört nur mit 100n nach AGND.

JonnyP
02.05.2010, 19:12
Ein ADC ist immer nur so gut, wie seine Referenz. Häng das Scope mal an die AVCC, die ja auch intern die Referenz bildet. Wenn es da rippelt oder rauscht und der standart LC-Filter nicht genug bringt, dann hilft nur eine stabile externe Referenzspannung.