Hallo Forum! Vor ein paar Wochen habe ich ein Arduino Starter-Paket mit einem Arduino Mega geschenkt bekommen. Jetzt bin ich ein wenig damit am rumspielen und habe mir zunächst einen IR-Empfänger gebastelt. Das hat auch geklappt. Nur das mit dem IR-Sender haut irgendwie nicht hin. Da würde ich mal gerne Rat zu haben. Da die von mir ausgewählte LED einen Strom von 100mA zieht, der Ausgang des Arduino aber nur maximal 40mA liefert, muss ich logischerweise mit einem Transistor zur Stromverstärkung arbeiten. In meinem Starterkit ist ein BC547C enthalten, der gerade die geforderten 100mA liefern kann. Die Werte habe ich so weit wie möglich aus den Datenblättern entnommen. Bei der Diode handelt es sich um eine IR-Diode 950nm LD 274-3. Erstes Ziel ist die Dimensionierung von R1 und Rb. R1 = 3,1V / 100mA = 31 Ohm Rb = 4,3V / 5mA = 869 Ohm Das Signal, das ich mittels der LED senden will, arbeitet mit 38 kHz. Wenn ich das richtig sehe, sollte der Transistor eine Frequenz bis zu 300 MHz bewältigen können. Ist das soweit korrekt?
So, jetzt zum Controller. Zur Ansteuerung der IR-Diode habe ich die folgende Arduino IR-Libary genutzt: http://www.arcfn.com/2009/08/multi-protocol-infrared-remote-library.html Der Libary liegt zum Senden eines IR-Signals folgendes kleines Beispiel bei:
1 | #include <IRremote.h> |
2 | |
3 | IRsend irsend; |
4 | |
5 | void setup() |
6 | { |
7 | Serial.begin(9600); |
8 | } |
9 | |
10 | void loop() { |
11 | if (Serial.read() != -1) { |
12 | for (int i = 0; i < 3; i++) { |
13 | irsend.sendSony(0xa90, 12); // Sony TV power code |
14 | delay(100); |
15 | } |
16 | } |
17 | } |
Laut Kommentar soll ich die Diode an Port 3 anschließen. Das habe ich alles getan, hat aber leider nicht gefruchtet. Gebe ich manuell ein High auf die Basis, sehe ich in meiner DigiCam die IR-Led wunderbar leuchten.
Keiner mag sich mal die Schaltung anschauen, die ich berechnet und aufgebaut habe? Haut das mit der Dimensionierung so hin? Ist das Arduino-Zeug zu sehr N00b-Kram, den ich hier nicht zu erwähnen brauch?
Heinz Sturrhahn schrieb: > Keiner mag sich mal die Schaltung anschauen, die ich berechnet und > aufgebaut habe? Haut das mit der Dimensionierung so hin? Ohne nachgerechnet zu haben, sieht die Auslegung plausibel aus. ~800 Ohm als Basiswiderstand kann hinkommen. Eventuell könnte man kleiner gehen um den Transistor ordentlich in die Sättigung zu treiben, aber das dürfte hier nicht das Problem sein. Dein IR Led müsste auf jeden Fall leuchten, möglicherweise mit verminderter Helligkeit. Und das tut sie ja auch laut deinen Tests. > Ist das Arduino-Zeug zu sehr N00b-Kram, den ich hier nicht zu erwähnen > brauch? Ne. Aber es hängt alles am IRsend Objekt. Und in das kann hier keiner hineinschauen. Das ganze ist ein bischen so, wie wenn man von aussen ein Wohnhaus betrachtet und feststellen soll, warum der Lift nicht geht. Wenn eine Fliegerbombe aufs Haus gefallen ist, dann kann man das noch feststellen. Jedoch gibt es viele Möglichkeiten, die man von aussen eben nicht sehen kann. Mein Vorschlag wäre: noch mehr abspecken. Du hast 2 mögliche Fehlerquellen: UART und IR-Sender. Also schalte erst mal einen davon aus. Zb die UART void loop() { irsend.sendSony(0xa90, 12); // Sony TV power code delay(100); } tut sich was an der LED? Wenn ja, dann ist die UART dein Problem.
Guten Morgen Karl! Mittlerweile hatte ich schon weiter getestet und genau deine Vorgeschlagenen Schritt durchgeführt. Die LED zB. direkt mit einem 100 Ohm Widerstand an den Ausgang gehängt und irsend in einer Endlosschleife ohne Anfangsbedingung laufen lassen. Leider ohne Erfolg... Ich habe auch testweise eine normale LED mit einem 220 Ohm Widerstand an den Ausgang gehängt, die blieb ebenfalls dunkel. Mittlerweile habe ich mir mal die Library angeschaut. Dort ist der Port 3 fest angegeben für das irsend. Aber warum das nicht mag...
Vielleicht mal den Basiswiderstand vom uC trennen und dort "zu Fuß" +5Volt anlegen, dann sollte die normale LED heftig brennen (ruckzuck defektgehen). Meine Vermutung: Lötfehler, Transistor-Pinreihenfolge etc.
Wie gesagt, ich habe die LEDs mit entsprechenden Vorwiderständen direkt am Ausgang betrieben. Die IR-LED und normale LED bleiben beide dunkel. Die einfache Schaltung und die Schaltung mit Transistor funktioniert, wenn ich den Ausgang einfach für 100ms abwechselnd von High auf Low schalten lassen. Also an der Schaltung kann es eigentlich nicht liegen. Wie auch, wenn nur ein Vorwiderstand und die LED anliegen. Anode und Kathode habe ich beachtet. > Die LED zB. direkt mit einem 100 > Ohm Widerstand an den Ausgang gehängt und irsend in einer Endlosschleife > ohne Anfangsbedingung laufen lassen. Leider ohne Erfolg... Ich habe auch > testweise eine normale LED mit einem 220 Ohm Widerstand an den Ausgang > gehängt, die blieb ebenfalls dunkel.
Hmpf... Habe auf der Seite die Kommentare mal weiter durchgelesen. Die Vermutung, das es an einem Unterschied zwischen den Controllern liegt, hat sich jetzt bestätigt: > My code won't work with an Arduino mega as it has a different processor > and the pins are all different. (Sorry I didn't mention that in my > original article.) You could see if there's anything on PWM pin 9; I > believe that's where the OC2B output connects on the mega. Probably you'll > need to study the atmega 1280 datasheet and see how the PWM flags are > different for the mega's processor, and change the code appropriately. > Unfortunately I don't have a mega, so I can't try this myself. Werde das heute Abend mal testen. Aber das wird wohl der Fehler gewesen sein.
Hallo. Das es irgendwie Unterschiede zweischen dem Uno und Mega Board geben muß, habe ich auch irgendwie feststellen müssen. Ich nutze auch die IR Librarie und besitze das Uno als auch das Mega Board. An dem Mega Board funktioniert mein IR Sender an Pin3 auch nicht. Am Uno Board funktioniert es einwandfrei. Gruß sourcecode
Versuche mal statt: irsend.sendSony(0xa90, 12); // Sony TV power code irsend.sendSony(0xa90, 3); // Sony TV power code oder häng die Diode auf Port 12.
Hy...Hast du schon ne Antwort für dein Problem gefunden????Ich habe nämlich dasselbe.....;)
Heinz Sturrhahn schrieb: > Da die von mir ausgewählte LED einen Strom von 100mA zieht Die LED "zieht" nicht 100mA, sondern sie nimmt was sie kriegen kann. DU mußt darauf achten, das die als maximal zulässig angegebenen 100mA nicht überschritten werden. Keiner zwingt dich, das auszureizen.
Öh... Ich hatte das Problem dann damals gelöst. Lag irgendwie an dem unterschiedlichen Verhalten des PWM zwischen Uno und Mega, wie schon in dem zitierten Text erwähnt.
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.