Forum: Mikrocontroller und Digitale Elektronik IR-Sender und Empfänger für µC


von Christian (Gast)


Lesenswert?

Hallo liebe µC und ET Freunde,


vorab, ich komme aus der Softwareentwicklung und bin deswgen nicht so 
Standfest was die Elektronik angeht.
Ich möchte eine IR-LED und einen IR-Empfänger an meinen Atmega8 (Vcc = 
5V) anschließen und verwenden (LED im Pulsbetrieb). Folgende Komponenten 
würde ich dazu verwenden:

http://www.produktinfo.conrad.com/datenblaetter/150000-174999/171115-da-01-en-IR_EMPFAENGER_MODUL_TSOP_4838__VIS.pdf
http://www.produktinfo.conrad.com/datenblaetter/150000-174999/171140-da-01-en-IR_SENDEDIODE_TSAL_6200__VIS.pdf

Beim Empfänger würde ich wie im Datenblatt (Seite 2) angegeben den 100 
Ohm Widerstand und 0,1µF Kondensator anschließen, zusätzlich würde ich 
aber noch einen Widerstand von 1k Ohm zwischen Ausgang und dem GPIO am 
µC anschließen, dann wäre der Strom auf 0,5 mA begränzt, ist das so in 
Ordnung?

Bei der IR-LED bin ich mir nicht ganz sicher was die Angaben im 
Datenblatt angeht. Hier steht einmal If = 100mA, Ifm = 200mA mit tp = 
20ms und Ifsm = 1,5A mit tp = 100µs. Ist tp die Pulsdauer und die LED 
benötigt mehr Strom bei kürzerer Dauer bzw. nur 100mA im Dauerbetrieb? 
Für If = 100mA hätte ich einen 39 Ohm Widerstand verwendet.

Dürfte ich diese LED dann einfach direkt ansteuern mit meinem µC? Laut 
Datenblatt ist die Funktion der I/O Pins nur bis zu 40.0mA garantiert. 
Ich habe allerdings schon einige andere Schaltungen gesehen wo sie 100mA 
direkt ansteuern, deswegen die Frage.


Danke im Voraus!

von könich (Gast)


Lesenswert?

moinmoin

Den Widerstand zwischen dem Empfänger Ausgang und GPIO brauchst du 
eigentlich nicht, als Eingang ist der µC hochohmig. Kann dich aber 
retten, wenn du den aus versehen als Ausgang schaltest, da reichen aber 
auch 250Ohm.

Die Stromangaben bei der LED resultiern aus thermischen Grenzen. tp ist 
tatsächlich die Einschaltzeit.
 Konstant gehen 100mA. Im Pulsbetrieb mit 50% Duty Cycle (also Hälfte 
der Zeit an/aus) gehen 200mA solange die Pulse kleiner als 100µs sind 
(nicht 20ms wie du geschrieben hast). Bis 200mA kannst du also relativ 
sicher gehen, deine Pulse liegen ja bei 13µs.
Die 1,5A von IFMS sind nur für einen einzigen kurzen Stoß (100µs), damit 
kannst du also nicht rechnen.

Den Vorwiderstand für die LED hast du richtig berechnet, für 200mA 
könntest du entsprechend einen 22Ohm Wiederstand nehmen.

Ich würde einen Pin am Atmega nicht mit 100mA belasten, mit 200mA erst 
recht nicht. Entweder einen Transistor verwenden, oder <40mA verwenden.
Eigentlich ist auch 20mA die Grenze für eine zuverlässige Funktion, 40mA 
ist wirklich nur die obere Grenze der Belastbarkeit vor dauerhaften 
Schäden.

von Gilbert (Gast)


Lesenswert?

Christian schrieb:
> Dürfte ich diese LED dann einfach direkt ansteuern mit meinem µC? Laut
> Datenblatt ist die Funktion der I/O Pins nur bis zu 40.0mA garantiert.

Interessant, was in die Originalangaben immer hineininterpretiert wird. 
Ich schließe mich aber da lieber dem könich an.

> Ich habe allerdings schon einige andere Schaltungen gesehen wo sie 100mA
> direkt ansteuern, deswegen die Frage.

Quelle. Sie versuchen vielleicht "anzusteuern". Man kann auch versuchen 
1A und mehr aus einem Portpin zu entnehmen. Man braucht ja nur den 
Lastwiderstand entsprechend gering zu machen oder? Vielleicht wird ja 
auch nur 20% PWM Duty Cycle bei 20mA hochgerechnet. Quelle! Oder doch 
das Datenblatt für bare Münze nehmen?

von Jojo S. (Gast)


Lesenswert?

Einen unnötigen Angst-Widerstand am Eingang aber den Ausgang überlasten 
? Das passt nicht zusammen...
Irgendeinen billigen Transistor sollte dir dein uC schon Wert sein. 
Schaltung siehe hier: https://www.mikrocontroller.net/articles/IRSND

von Stefan F. (Gast)


Lesenswert?

Ich kenne das so, dass die I/O Pins von AVR im Kurschlussfall bei 5V 
maximal 40mA liefern.

von Christian (Gast)


Lesenswert?

Danke für die Antworten!

@könich: Bei den 20ms hab ich wohl irgendwelche Zahlen vertauscht, hatte 
zu viele verschieden Dattenblätter offen. Kannst du mir noch sagen wie 
du auf die 13µs gkeommen bist?

@Gilbert, wie ich schon gesagt habe, ist das Gebit hier neu für mich. Im 
Datenblatt steht lediglich das Werte über 40mA permanenten Schaden am 
Chip anrichten können. Vielleicht habe ich es überlesen, aber ich habe 
keine Angabe zum Dauerbetrieb gefunden, daher die Annahme dass bis zu 
unter 40mA der Chip funktionieren sollte.

@jojos Danke für den Link, ich werde für meine Schaltung auch einen 
BC337 nehmen.

von Marc V. (Firma: Vescomp) (logarithmus)


Lesenswert?

Christian schrieb:
> zu viele verschieden Dattenblätter offen. Kannst du mir noch sagen wie
> du auf die 13µs gkeommen bist?

 Vielleicht, weil 36KHz für IR üblich ist ?

: Bearbeitet durch User
von Harald W. (wilhelms)


Lesenswert?

Christian schrieb:

> @Gilbert, wie ich schon gesagt habe, ist das Gebit hier neu für mich. Im
> Datenblatt steht lediglich das Werte über 40mA permanenten Schaden am
> Chip anrichten können. Vielleicht habe ich es überlesen, aber ich habe
> keine Angabe zum Dauerbetrieb gefunden, daher die Annahme dass bis zu
> unter 40mA der Chip funktionieren sollte.

Fragt sich nur, wie lange.:-(

von Christian (Gast)


Lesenswert?

@Marc Vesely: Darauf bin ich auch gekommen nachdem ich geantwortet habe 
:)

Ich habe den Basiswiderstand für den BC377 wie folgt berechnet:

Aus dem Datenblatt:
Vbe = 1,2V bei 300mA Ic, -> mit 0,7V gerechnet.
hFE = 100
----
Ib = If/hFE = 200/100 = 2mA
Rb = (Vcc - Vbe) / Ib = 4,3/0,002 = 2150Ohm

Also würde ich einen etwas kleineren Widerstand mit 2100Ohm verwenden.

Muss ich denn auch den Spannungsabfall Vce = 0,7 beachten?
Dann würde der Vorwiderstand LED nicht mehr 18,25Ohm sondern

R = (5 - 0,7 - 1,35) / 0,2 = 14,75Ohm

ergeben. Und die Verlustleistung am Vorwiderstand wäre statt 880mW nur 
600mW (bei 22 bzw. 15Ohm Widerständen)

von Weinbauer (Gast)


Lesenswert?

um mit UART zu Senden wirst Du die invertieren müssen, also 2mal 
Transistor,
dann brauchts noch die 36kHz Träger und das ganze per "und" verknüpfen 
z.B. die CE-Strecken von 2 Tranistoren hintereinander und dann auf die 
LED

von Weinbauer (Gast)


Lesenswert?

PS: Transistoren im Schaltbetrieb werden übersteuert, daher max 1 kR als 
Basisvorwiderstand

von Weinbauer (Gast)


Lesenswert?

PPS: ist etwas verwirrend geschrieben, die LED muss natürlich vor die 
Kollektoren

Und die Übersteuerung ist fürs schnelle saubere Schaltverhalten 
(Flankensteilheit)

also zusammenfassend:

vom UART TX gehts auf 1k Widerstand, von dort an die Basis T1.
T1 ist als Schalter Emitter auf GND, Kollektor mit auch wieder 1k gegen 
Vss.
Vom Kollektor zusätzlich auf Basis T2.
T2 hängt mit Emitter an GND.
T3 Basis hängt an 360 kHz, Emitter an Kollektor T2, Kollektor T3 an LED 
+ RV gegen Vss

und fertig ist die Laube, dass der TSOP auch was empfangen kann

von Christian (Gast)


Lesenswert?

Hallo Weinbauer,

ich habe nicht vor mit UART zu senden, ich möchte nur Signale empfangen 
und dekodieren und selber welche aussenden.

Ich werde den 2,1k Widerstand durch 1k austauschen, danke!

von Stefan F. (Gast)


Lesenswert?

> die Übersteuerung ist fürs schnelle saubere Schaltverhalten

Wohl eher, um die Verluste auf der C-E Strecke zu reduzieren, damit der 
Transistor weniger warm wird.

von Gilbert (Gast)


Lesenswert?

Weinbauer schrieb:
> PS: Transistoren im Schaltbetrieb werden übersteuert, daher max 1 kR als
> Basisvorwiderstand

1 kR ? Ein Kilo Reben oder doch 1kΩ oder 1kOhm?

PS Es gibt auch noch Graphen in Datenblättern, zB "Pin Driver Strength" 
unter "ATmega8 Typical Characteristics"

von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

Christian schrieb:

> ich habe nicht vor mit UART zu senden, ich möchte nur Signale empfangen
> und dekodieren und selber welche aussenden.

Dafür gibts IRMP und IRSND. Einfacher gehts nicht.

von Christian (Gast)


Lesenswert?

Frank M. schrieb:
> Christian schrieb:
>
>> ich habe nicht vor mit UART zu senden, ich möchte nur Signale empfangen
>> und dekodieren und selber welche aussenden.
>
> Dafür gibts IRMP und IRSND. Einfacher gehts nicht.

Ich weiß, ich mache das ja auch zum Teil nur um etwas dabei zu lernen 
und mich mehr mit µC auseinanderzusetzen. Und genau die selbe 
Funktionalität möchte ich auch nicht nachimplementieren. Ich will 
Signale empfangen und speichern mit der Möglichkeit sie wieder zu 
versenden.

von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

Christian schrieb:
> Ich weiß, ich mache das ja auch zum Teil nur um etwas dabei zu lernen
> und mich mehr mit µC auseinanderzusetzen. Und genau die selbe
> Funktionalität möchte ich auch nicht nachimplementieren. Ich will
> Signale empfangen und speichern mit der Möglichkeit sie wieder zu
> versenden.

Na dann viel Erfolg. Beachte nur, dass eine 1:1 Wiedergabe bei 
bestimmten Protokollen in die Hose gehen kann. Es gibt Protokolle, die 
zum Beispiel ein Toggle-Bit verwenden - z.B. RC5 und RC6 (z.B. XBOX). 
Wenn Du das Bit nicht auch togglest nach jedem Frame, kann das Gerät 
weitere Frames schlicht ignorieren.

Oder auch NEC-Protokoll: Das benutzt bei Wiederholungen (z.B. langem 
Drücken der Lautstärke-Taste) einen speziellen Wiederholungsframe, 
welche das Gerät veranlasst, den letzten Befehl zu wiederholen.

Ich drücke Dir die Daumen.

von Christian (Gast)


Lesenswert?

Frank M. schrieb:
>
> Na dann viel Erfolg. Beachte nur, dass eine 1:1 Wiedergabe bei
> bestimmten Protokollen in die Hose gehen kann. Es gibt Protokolle, die
> zum Beispiel ein Toggle-Bit verwenden - z.B. RC5 und RC6 (z.B. XBOX).
> Wenn Du das Bit nicht auch togglest nach jedem Frame, kann das Gerät
> weitere Frames schlicht ignorieren.
>
> Oder auch NEC-Protokoll: Das benutzt bei Wiederholungen (z.B. langem
> Drücken der Lautstärke-Taste) einen speziellen Wiederholungsframe,
> welche das Gerät veranlasst, den letzten Befehl zu wiederholen.
>
> Ich drücke Dir die Daumen.

Danke :-) ich erwarte mir nicht dass es gleich beim ersten Versuch 
funktioniert.

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.