Forum: Mikrocontroller und Digitale Elektronik Maus-LED-Ansteuerung an Atmega-PIN


von Stefan T. (tommie)


Lesenswert?

Hallo,

ich möchte in einer optischen Maus erkennen, wenn sie bewegt wird - dazu 
möchte ich mir die LED zu Nutze machen, die vom IC der Maus gesteuert 
ihre Helligkeit bei Bewegungen erhöht.

Die Versorgungsspannung der USB-Maus beträgt 5V, im Ruhezustand messe 
ich am LED-Ausgang des Controllers 1,55 V gegenüber GND, stupse ich die 
Maus an, so fällt die Spannung auf ca. 0,47V gegenüber GND (der Pin ist 
an der Kathode der LED angeschlossen). Wie kann ich diese Information am 
einfachsten wieder in saubere Signalpegel für einen ATmega wandeln? 
Meine ersten Versuche mit einem Transistor (BC337) verliefen mäßig, aber 
vielleicht habe ich da auch einfach nur einen simplen Denk- oder 
Handwerksfehler drin. Stromverstärkung brauche ich nicht, ich muss ja 
eigentlich nur die Spannung wandeln (0,47V -> 0V, 1,55V -> 5V). Welche 
Schaltung ist da am sinnvollsten?

von Brater (Gast)


Lesenswert?

Wie wäre es mit dem Analogeingang des uC? Diese Eingänge sind hochohmig, 
somit dürfte die Schaltung durch den ADC nicht beeinflusst werden.

Wichtig: die ADC-Referenzmasse muss auch angeschlossen sein, damit ein 
Potentialunterschied gemessen werden kann.

von c-hater (Gast)


Lesenswert?

Stefan Tomanek schrieb:

> Meine ersten Versuche mit einem Transistor (BC337) verliefen mäßig, aber
> vielleicht habe ich da auch einfach nur einen simplen Denk- oder
> Handwerksfehler drin.

Hast du.

Was du da an Spannungen gemessen hast, ist nicht wirklich vorhanden. Es 
sind nur die Mittelwerte einer PWM, also einer Rechteckspannung. Die 
"gemessenen" Mittelwerte hat dein Multimeter gebildet. Wer mißt, mißt 
Mist. Und wer mit einem ungeeigneten Meßgerät mißt, mißt kompletten 
Mist. Mit einem Oszi wäre das nicht passiert...

Im einfachsten Fall brauchst du also bezüglich der Ankopplung eines AVR 
überhaupt nichts besonderes zu unternehmen, sondern einfach nur einen 
Portpin anschließen, idealerweise den ICP-Pin. Dann kannst du zur 
Vermessung des Tastverhältnisses der Rechteckspannung nämlich die 
ICP-Funktionalität des Timers verwenden. In diesem Tastverhältnis 
stecken die von dir "gemessenen" Spannungen.

Der Zusammenhang müßte ungefähr dieser sein:

       Zeit des High-Pegels des Rechtecks
5V * --------------------------------------
     Gesamtzeit einer Periode des Rechtecks

Tatsächlich wird das nicht ganz passen, weil da die Flußspannung der LED 
in diesem Ausdruck nicht berücksichtigt ist.

Diese könnte allerdings, wenn hoch genug, dazu führen, daß der AVR über 
einen normalen Portpin überhaupt kein Rechteck sieht, sondern konstant 
Low.

Wenn das der Fall sein sollte, dann mußt du statt eines normalen Portpin 
eben einen Pin des Analog-Komparators verwenden. Der AC läßt sich intern 
dann ebenfalls als Eingang für die ICP-Funktionalität des Timers 
verwenden. Die Referenzspannung des AC muß auf einen geeigneten Wert 
gebracht werden. Ungefähr auf (5V-Flußspannung der LED)/2. Entweder ist 
eine der verfügbaren internen Referenzspannungen dafür geeignet oder du 
muß den zweiten Pin des AC über einen Spannungsteiler auf eine geeignete 
Referenzspannung ziehen und diese verwenden.

von Stefan T. (tommie)


Lesenswert?

Danke für die Tipps, PWM (oder zumindest eine gepulste Ansteuerung) 
hatte ich schon vermutet - ohne Oszilloskop war das leider nur mäßig 
überprüfbar. Glücklicherweise war die Frequenz so gering, dass ein 
angeklemmter Arduino noch problemlos die verschiedenen Werte anzeigen 
konnte.

Ich habe dann das Signal einfach in einen Digital-Pin meines µCs gekippt 
und prüfe in einer Schleife, ob in einem definierten Zeitraum 
"High"-Pegel reinkommen oder nicht. Manchmal ist die Lösung einfacher 
als zunächst vermutet :-)

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.