Hallo, ich möchte mit meinem TINY26 schwankungen auf einer 12Vleitng messen, dh ich muss einen bereich von 11V-13,2V erfassenkönne, da habe ich einen spannungsteiler mit 10K und 1,8K genommeen und die mitte auf den AD des µController gepackt. Ich verwende die interne 2,56V referenz spannung,.. nun habe ich aber ein kleines problem, die pannung sprigt wesentlich mehr als die im datenblatt angegebnen 3mV also 1,5LSB. der Code ist folgender: Init_ADC: ;ADC = Enable, ADC-IRQ= Enable, ADC Prescaler = 32 ldi temp0, (1<<ADEN)|(0<<ADSC)|(0<<ADFR)|(1<<ADIE)|(0<<ADPS2)|(0<<ADPS1)|(0<<ADPS0) out ADCSR, temp0 ;interne 2,56V referenz und ein C an PA3=AREF, Channel0 ist selektiert mit Mux0-4 ldi temp0, (1<<REFS1)|(1<<REFS0)|(0<<ADLAR)|(0<<MUX4)|(0<<MUX3)|(0<<MUX2)|(0<<MUX1) |(0<<MUX0) out ADMUX,temp0 sei ;// Global IRQ Enable ;startet eine singel ADC Conversion und gibt sie in Strom_L,Strom_H aus ADC_Conversion: sbi ADCSR,ADSC ;setze bit Start ADC Conversion, ADC startet ADC_Conversion_1: sbic ADCSR,ADSC rjmp ADC_Conversion_1 in Return_L, ADCL in Return_H, ADCH ret ist etwa in der SW ein fehler oder ist die intern referenz nicht brauchbar,.. ich brauch keine super genauen messerte, aber mit 20mV Auflösung sollte dass dann schon passen.
bevor Du alles verfluchst solltest Du an den AD Wandler Eingang einen kleinen Kondensator hinmachen, zb. 100nF. Vielleicht hilft das ja schon. Die Spannung schwankt vielleicht. Hast Du ein Oszi mit dem Du das checken kannst?
ja, kondensator war schon dran 1µF prallel 100n, am oszi sieht alles perfekt aus. Sebastian
ja, an aref ist ein 100n kondensator,.. an avcc ist 100R an 5V und ein 100n nach masse,.. alles so wie im datenblatt beschrieben. der Prozessor läft mit 16MHz und mach mit timer 0 8KHz irqs und auf timer 2 ein 31KHz PWM. ich kann den Controller deshalb nicht in den Sleep modus versetzen wenn ich die ad wandlung brauche... siehe Noise Canceler im Datenblatt. Davon abgesehen sollte der AD wandler trozdem noch sehr genau arbeiten können, beim Mega163 geht das bei 8MHz Probelmlos mit nur 1,5Bit fehler. Die Presaceler vom AD Wandler habe ich auch schon in alle möglichen varianten geändert, das brachte auch kein erfolg. Sebastian
Der Prescaler ist definitiv zu hoch ADC Prescaler = 128 entspricht dann 125 kHz. Bei 16 MHz ist auch die Leitungsführung recht kritisch um stabile Ergebnisse bei hoher Auflösung zu erhalten.
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.