Forum: Mikrocontroller und Digitale Elektronik Ad-Wandler, über großen bereich pin schalten


von Laza (Gast)


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

von Michael U. (Gast)


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

von Axel R. (Gast)


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.

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
Noch kein Account? Hier anmelden.