Ad-Wandler, über großen bereich pin schalten

Gast #554453
Lesenswert?

Hallo!!!

Ich möchte mit dem atmega8 eine Batteriespannung von 12 V an dem ad 
wandler messen ( über spannungsteiler und co) und einen ausgang nach der 
gemessenen spannung ein/ausschalten.

nun habe ich im tut gelesen, das der wandler rauscht, und die 2 letzten 
bits springen.

Wie kann ich es nun in assembler realisieren, das der pin z.b. im 
bereich zwischen 3,1-3,3 V ein und zwischen 4-4,3 V ausgeschaltet wird.
dies würde einem dezimalwert von 634-675 und 819-880 entsprechen (vref 
5V, 10bit). wenn ich nun den eingangswert, bzw die ergebnisregister ADCL 
und H z.b. mit dem dez.wert von 634 vergleichen würde, würde er evtl. - 
durch das rauschen bedingt - diesen wert niemals erreichen und nie 
schalten. habt ihr mir vielleicht einen codeschnipsel oder ne seite die 
mir dieses problem aufzeigt?!
klar, ich könnte mit jedem einzelnen dezimalwert vergleichen, aber da 
wirste ja blöd im kopf, mal ganz von der durchlaufzeit abgesehen...

ich danke euch schonmal im vorraus.

MFG
Gast #554483
Lesenswert?

Hallo,

wo ist das Problem? Du hast eine Hysterese von über 100 Werten, also bei 
z.B. unter 675 einschalten, über 819 einschalten, fertig.

Selbst webb er um 4Bit (16 Werte schawankt, passiert da noch nichts...

Gruß aus Berlin
Michael
Gast #554516
Lesenswert?

Hi,
bei dieser 'geforderten Ungenauigkeit' kannst Du das ADLAR-Bit im ADMUX 
setzen und nur das ADCH-Register auslesen. dein Wertebereich geht nunmal 
schon nur noch bis 255. Dieses Ergebnis schiebst Du ein-zwei mal nach 
rechts(lsr). Jetzt hast Du zwei ungenaue Schwellen, die Du einfach 
abfragen kannst.
Es sei denn, Du brauchst den ADC auch noch für andere Sachen.

AxelR.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren