Archiv verlassen und diese Seite im Standarddesign anzeigen : IR LED bzw Phototransistor "auslesen"
daniel.weber
09.03.2008, 17:41
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
Sauerbruch
09.03.2008, 21:52
Mit dem genialen AD-Wandler und dem segensreichen Befehl "GETADC".
daniel.weber
09.03.2008, 23:53
hallo,
vielen dank hättest du vielleicht ein einfaches Beispiel für mich? wäre super.
Sauerbruch
10.03.2008, 00:09
Dim A as Word
Config Adc = Single , Prescaler = Auto , Reference = Avcc
Start Adc
A=GETADC(0)
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.
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).
daniel.weber
10.03.2008, 11:08
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.
Sauerbruch
10.03.2008, 11:13
...absolut korrekt!
daniel.weber
10.03.2008, 11:15
ok dann weis ich bescheid, werde ich dann heute mal ausprobieren.
lg
Daniel
oberallgeier
10.03.2008, 11:43
Hi, daniel,
... sehe ich das also richtig, dass es bei einem Mega8 ... also max. 6 analoge Sensoren mit einem Mega8 schalten.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.
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/datasheets.asp?family_id=607#760
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.