Mit dem genialen AD-Wandler und dem segensreichen Befehl "GETADC".
Hallo,
zu erst muss ich sagen ich bin Anfänger auf diesem Gebiet hier von daher bitte ich etwas um Nachsicht, wenn sich die Frage etwas "dumm" anhört.
Ich habe mit einem IR LED und einem Phototransistor vor einen Liniensensor zu bauen, der Bau an sich ist bereits abgeschlossen, nun geht es ans Programmieren.
Nun frag ich mich wie ich mittels dem Voltwert, der ja je nach Helligkeit vom Phototransistor "rauskommt" eine verarbeitbare Variable (0 für dunkel - 255? für hell) bekomme.
Ist das so etwas wie ein "umgedrehter PWM?" da steht ja auch für einen bestimmten Wert eine bestimmte Voltzahl.
Wäre für ein paar Denkanstöße dankbar.
LG
Daniel
Mit dem genialen AD-Wandler und dem segensreichen Befehl "GETADC".
hallo,
vielen dank hättest du vielleicht ein einfaches Beispiel für mich? wäre super.
Der eingebaute AD-Konverter (ADC) misst eine anliegende Eingangsspannung mit einer Auflösung von 1024. Als Referenzwert kannst Du entweder Versorgungsspannung (AVCC) oder eine interne Referenzspannung wählen. Ist die Eingangsspannung 0V, ist das Ergebnis 0, erreicht sie den Wert der Referenzspannung, kommt bei der Konversion 1023 raus.Code:Dim A as Word Config Adc = Single , Prescaler = Auto , Reference = Avcc Start Adc A=GETADC(0)
Dem Konverter ist ein Multiplexer vorgeschaltet, der verschiedene Pins auf den eigentlichen Eingang legen kann. Deshalb ist es unabdingbar, beim Befehl "GETADC" immer die Bezeichnung des verwendeten Einganges dazuzuschreiben (also GETADC(0) für den Eingang ADC0).
Die Variable die diesen Wert erhält, sollte ein Word sein, wegen des Maximalwertes von 1023.
Der Prescaler legt fest, mit welchem Takt die Konversion stattfindet (Auto ist meistens okay).
vielen dank für die super Antwort, damit kann man doch mal arbeiten
sehe ich das also richtig, dass es bei einem Mega8 "nur" 6 ADC Eingänge gibt? Ich könnte also max. 6 analoge Sensoren mit einem Mega8 schalten.
...absolut korrekt!
ok dann weis ich bescheid, werde ich dann heute mal ausprobieren.
lg
Daniel
Hi, daniel,
Bitte beachte die entsprechenden Notizen in der Dokumentation ab Seite 196 des mega8 zur "Umschaltzeit" von einem Pin auf den anderen und der danach folgenden Messzeit des ADC. Sonst gibt es leider etwas Murks. Übrigens hast Du die 6 Kanäle im PDIP, in anderen Gehäusen sinds max. 8 Kanäle.Zitat von daniel.weber
Gearbeitet wird also ungefähr so: Umschalten, (neue) Messung starten und danach warten (evtl. Interrupt abwarten) bis die Messung fertig ist. Ich kann mich auch daran erinnern, dass zumindest bei einigen AVR-Typen (sicherlich beim tiny13) die erste Wandlung nicht absolut stimmig sein muss. Aber das wirst Du sicher im Datenblatt sehen.
Das jeweils aktuellste Datenblatt kannst Du Dir hier holen:
http://www.atmel.com/dyn/products/da...ily_id=607#760
Ciao sagt der JoeamBerg
Lesezeichen