Hallo Forum. Ich habe da mal eine Frage - für die meisten erfahreneren Nutzer wahrscheinlich eine Trivialität: Ich möchte eine IR Diode, deren Anode gegen VCC und deren Kathode gegen einen Pin meines µC angeschlossen ist, gerne gepulst betreiben. Die Diode soll alle 2ms für ca. 40µs geschaltet sein. Nun die Gretchenfrage: Wie sollte ich diese Funktion realisieren ? Als µC nutze ich derzeit einen ATmega8 @ 16MHz. Lieben Dank für alle hilfreichen Antworten.
Hallo Martin,
Schleife 1
{
Ausgang 1
Warte XXX Takte (40us) (640 Takte)
Ausgang 0
Warte XXX Takte (1,96 ms)
}
Wenn das alles ist, würde ich Assembler empfehlen. Im Tutorial sind gute
Hinweise dazu.
Grüße Michael
Das spannende bei der Sache ist noch die "Helligkeit", wenn man bei einer IR LED davon reden kann: Bei nur 40uS an und 2ms aus kann man die LED's natürlich höher pulsen. Bei LED's im sichtbaren Bereich noch interessanter (oder sogar notwendig, wenn man überhaupt was sehen will). Das Problem dabei: Die LED wird vielleicht mit einem Vorwiderstand von 5 oder 10 Ohm betrieben, was bei einem Programmierfehler zur Zerstörung der LEDs führt. Habe vor ein paar Wochen ein LED Stroboskop gebaut. LED's (weiß) werden an 12V mit 12 Ohm betrieben (30us Puls). 12 Ohm ist dabei noch zu viel. Habe zur Sicherheit hinter den uC einen 4538 gehängt (nicht retriggerbar), damit der Puls definitiv nicht zu lang wird. Vielleicht hilfts. Werner
Hey Leute. Zunächst einmal ein Dankeschön für die Vorschläge. @Michael: Das habe ich leider vergessen zu erwähnen - der µC hat in der Zwischenzeit noch einiges Anderes zu tun, ein blosses Warten zwischen den Zyklen kommt also eher nicht infrage. Richtung PWM, wie Der Schelm vorschlug, wäre da schon geeigneter. @Werner: Die IR LED ist bereits in einer Schaltung, in der sie einen 220 Ohm Widerstand an der +5V VCC vorgeschaltet hat, auch das hatte ich leider vergessen zu erwähnen. --- Wie stelle ich denn konkret PWM oder Timer mit ISR so ein, dass ich die angegebenen Timings hinbekomme ?
Einfach ausrechnen. 8bit Timer Prescaler 256 -> Timertakt = 1/16MHz = 62500Hz -> 16µs Obergrenze 125 -> PWM-Takt = 500Hz PWM-Wert = 1 -> 32µs PWM-Wert = 2 -> 48µs 16bit Timer Prescaler 1 -> Timertakt = 16MHz -> 1/16µs Obergrenze 32000 -> PWM-Takt = 500Hz PWM-Wert = 16*40-1 = 639 -> 40µs
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.