Hier mal meine Version eines Sensors. Diese Version beruht darauf, dass immer eine kleine Spannung (Gemessen zum Nullleiter) am Körper anliegt. Legt man einen ADC Kanal per zB 300k auf GND, werden normalerweise Messungen mit dem Wert 0 erfasst. Allerdings reicht schon diese normale Körperspannung um den Wert auf etwa 4-5 (2,56V Referenz) anzuheben. Dies merkt das Programm und toggelt PB0. (Jedoch nur, wenn vorher eine 0 gemessen wurde). Hält man den Finger auf der Kontaktfläche, passiert kein Toggling. Also nur bei einer "Rising Edge". Theoretisch ist das Programm besser, wenn man einfach nur ein Bit setzt in der ISR und den Rest in der Main-Loop macht, habe ich mir hier allerdings gespart, da sonst eh nix passiert. Vorteil hierbei ist, dass die meisten AVRs 8 ADC Eingänge haben und man so einfach 8 Taster implementieren kann. Hoffentlich liegt auch an jedem Körper diese Spannung an. Nicht dass es ein Effekt ist, den nur ich hier im Zimmer habe :D
Ups, Waren noch ein paar Kommentare nicht auf dem neusten Stand.
ADMUX = (3<<REFS0)|(1<<ADLAR); ADCSRA = (1<<ADEN)|(1<<ADIE)|(7<<ADPS0); In den Zeilen ist auch was nicht ganz in Ordnung, oder hat sich bei den neuen GCC-Versionen was geändert?
Achso, naja ich setze die Bits halt immer einzeln, deshalb war ich etwas verwirrt. Wenn man bei alles AVRs davon ausgehen kann dass die entsprechenden Bits in den Registern immer nebeneinander stehen funktioniert es ja.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.