ADC -Spinnt

Gast #31911
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.
Gast #31912
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?
Gast #31915
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
Gast #31916
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.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 23 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.