Ich habe folgendes Problem mit dem ADC des ATMEGA16. wenn ich an irgendeinen Eingang des 8 Kanal ADC einen Spannungsteiler anschließe, funktioniert alles perfekt und auch die über UART ausgegebenen Werte stimmen mit der eingestellten Spannung am Teiler überein. Jedoch wenn ich jetzt einen Widerstand von 10k an den betreffenden ADC Eingang gegen VCC anschließe, bekomme ich anstatt 1023 irgendwelche Werte von 400 bis 688 ausgegeben, die aber dann weitestgehend konstant bleiben. Die Einstellungen des ADC wie folgt: --> 5V Referenzspannung an dem AREF Pin mit Kondensator --> Der ADC Prescaler ist auf einen Wert von 64 eingestellt --> ADMUX [4:0] =0x00 entspricht einem single ended channel ADC0 --> der ADC wird weiters von dem interenen Timer1 durch dessen overflow getriggert. Das gesamte Programm findet sich im Dateianhang. LG.
>ADMUX [4:0] =0x00 entspricht einem single ended channel ADC0
Der Satz ist an und für sich korrekt, ABER in deinem Code steht
1 | //Zeile 87 ff.
|
2 | ADMUX = 0x00; |
3 | ADMUX |= (0<<REFS0) | (1<<MUX0); |
4 | ^^^^^^^^^
|
Was doch sagt, dass du ADC1 misst, oder? hth. Jörg ps.: wenn du jede Sekunde messen willst, dann schreib das doch auch hin:
1 | #define T1_PRELOAD (0x10000 - (F_CPU/256))
|
2 | //...
|
3 | TCNT1 = T1_PRELOAD; |
4 | TCCR1B = (1<<CS12); |
hey, ja stimmt haben zuerst mit dem ADC0 gearbeitet und danach einen anderen Eingang probiert um zu sehen ob vl der ADC0-Eingang defekt ist. Weißt du vl was mit dem ADC sein könnte? lg
schau mal im Datenblatt, die Quelle darf nicht zu hochohmig sein weil die Sample & Hold Stufe im ADC diese sonst zu stark belastet, ansonsten klemme mal einen kleinen Kerko zw. ADC-Eingang und Masse. Das könnte dein Problem lösen. Was misst du überhaupt evtl. wäre ein LC einem RC Netzwerk überlegen falls das Signal zu Sprunghaft ist.
@Thomas im späteren Verlauf führen wir eine einfache Tempmessung durch. Jetzt wollten wir einfach mal den ADC testen, einmal einen 10k gegen Masse => Wert 0, dann gegen VCC Wert war nicht 1023 sondern irgendwas zwischen 500 und 600. Hab das Problem schon gefunden, es lag mal wieder am Board bzw an mir :) (EasyAVR5), hab vergessen die Leds wegzuschalten, Schande über mich... Was mich jetzt noch interessieren würde wären deine Tipps bezüglich dem Kondensator und den Netzwerken, die Schaltung sieht dann bei uns so aus, das wir den NTC zwischen Eingang und Masse anschliessen und zwischen VCC und Eingang. lg
ups da hab ich was vergessen Was mich jetzt noch interessieren würde wären deine Tipps bezüglich dem Kondensator und den Netzwerken, die Schaltung sieht dann bei uns so aus, >das wir den NTC zwischen Eingang und Masse anschliessen und zwischen VCC >und Eingang. sollte so natürlich sein : die Schaltung sieht dann bei uns so aus, das wir den NTC zwischen Eingang und Masse anschliessen und zwischen VCC und Eingang einen Widerstand der der Hälfte des NTC_Wertes bei Raumtemperatur entspricht, wären dann also ca 5k Ohm lg
Hallo, das mit der nicht zu hochohmigen Quelle für den ADC hat folgende Ursache: wenn die Quelle zu hochohmig ist, ist der Kondensator der S&H im AVR nicht schnell genug auf den anliegenden Wert geladen/entladen, das gibt also Meßfehler. Wenn die Änderungen nur langsam erfolgen, ist das normalerweise kein Problem. Allerdings reagiert der Eingang immer empfindlicher auf eingekoppelte Störspannungen, wenn die Quelle nicht relativ niederohmig ist. Da kann ein Kondensator zwischen ADC-In und GND dann helfen als Tiefpaß gegen Störungen. Mit 10k sollte es noch nicht passieren, ich durfte aber durch ungünstigen Aufbau beim experimetieren auch schon einen 1µ rüberhängen, um erstmal sinnvolle Werte zu bekommen. Mich verwirrt allerdings, daß Du einen recht konstanten Wert bekommst, daß ist eher ungewöhnlich. Gruß aus Berlin Michael
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.