Forum: Mikrocontroller und Digitale Elektronik rs232 IR Datenübertragung


von Kei N. (mckalle)


Lesenswert?

Hallo,

ich möchte vom PC aus Daten über Infrarot an einen µC senden. Bisher 
habe ich mich mit Elektronik beschäftigt, jedoch noch nicht mit µCs. 
Programmieren kann ich in verschiedenen Hochsprachen, jedoch kein ASM, 
soweit ich weiß, reicht ja aber C für µC-Programmierung.

Ich möchte Daten über eine serielle Schnittstelle ausgeben und von dort 
auf eine IR-Diode. Die Ausgabe über rs232 an eine normale LED 
funktioniert wunderbar.
Die IR-Empfänger (zB TSOP4836) brauchen jedoch eine Trägerfrequenz von 
36kHz und dazu auch noch alle paar Pulse eine Pause von einigen Pulsen 
Länge.
Wie erzeuge ich am einfachsten diese Trägerfrequenz? Den Strom für diese 
Sendeeinheit werde ich von einer USB-Schnittstelle abzapfen.
Ich möchte auf der Senderseite nach Möglichkeit KEINEN µC verwenden.

Wie sorge ich dafür, dass innerhalb eine Pulspause vom PC geschickte 
Daten trotzdem noch ankommen?

von Lehrmann M. (ubimbo)


Lesenswert?

Kei Ner schrieb:
> reicht ja aber C für µC-Programmierung.

Nuja C Programmieren heißt nicht Microcontroller Programmieren können !:
http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial

Kei Ner schrieb:
> Ich möchte Daten über eine serielle Schnittstelle ausgeben und von dort
> auf eine IR-Diode. Die Ausgabe über rs232 an eine normale LED
> funktioniert wunderbar.

Wird nix vernünftiges.

Kei Ner schrieb:
> Die IR-Empfänger (zB TSOP4836) brauchen jedoch eine Trägerfrequenz von
> 36kHz und dazu auch noch alle paar Pulse eine Pause von einigen Pulsen
> Länge.

Dafür nutzt man im Normalfall PWM (-> siehe AVR Tutorial)

Kei Ner schrieb:
> Ich möchte auf der Senderseite nach Möglichkeit KEINEN µC verwenden.

Das wird nur was wenn man ein fertiges IRDA Modul verwendet das über 
eine RS232 Schnittstelle verfügt / USB

von Falk B. (falk)


Lesenswert?

@  Kei Ner (mckalle)

>ich möchte vom PC aus Daten über Infrarot an einen µC senden. Bisher

>auf eine IR-Diode. Die Ausgabe über rs232 an eine normale LED
>funktioniert wunderbar.

Das ist auch keine Kunst. Das Empfangen ist die Kunst.

>Die IR-Empfänger (zB TSOP4836) brauchen jedoch eine Trägerfrequenz von
>36kHz und dazu auch noch alle paar Pulse eine Pause von einigen Pulsen
>Länge.

>Wie erzeuge ich am einfachsten diese Trägerfrequenz?

NE555 oder 74HC14 als RC Oszillator.

> Den Strom für diese
>Sendeeinheit werde ich von einer USB-Schnittstelle abzapfen.

kann man machen.

>Ich möchte auf der Senderseite nach Möglichkeit KEINEN µC verwenden.

Musst du nicht, ein FT232 + die ICs von oben reichen.

>Wie sorge ich dafür, dass innerhalb eine Pulspause vom PC geschickte
>Daten trotzdem noch ankommen?

Muss man nicht so eng sehen, durch die Modulation kommt schon das Signal 
an. Das passt. IRDA mit 115k2 Baud arbeitet ohne Träger und es geht 
auch.

MFG
Falk

von Kei N. (mckalle)


Lesenswert?

> Nuja C Programmieren heißt nicht Microcontroller Programmieren können !:
> http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial
Wenn ich nicht weiterkomm, frag ich einfach ;)


> Kei Ner schrieb:
>> Die IR-Empfänger (zB TSOP4836) brauchen jedoch eine Trägerfrequenz von
>> 36kHz und dazu auch noch alle paar Pulse eine Pause von einigen Pulsen
>> Länge.
>
> Dafür nutzt man im Normalfall PWM (-> siehe AVR Tutorial)
PWM nutzt man doch eig platt gesagt zum Dimmen.


>>Wie erzeuge ich am einfachsten diese Trägerfrequenz?
>
> NE555 oder 74HC14 als RC Oszillator.
Nen Ozillator krieg ich hin, gibt ja genug Bauanleitungen im Internet, 
aber wie sorge ich für die Pulspausen?


>>Ich möchte auf der Senderseite nach Möglichkeit KEINEN µC verwenden.
>
> Musst du nicht, ein FT232 + die ICs von oben reichen.
Ich habe zwar eine rs232 Schnittstelle, aber wenn nur ein USB-Kabel 
anstatt ein USB- und ein RS232-Kabel zur Schaltung gehen, dann ist das 
natürlich deutlich einfacher :)
Sehe ich das richtig, dass der FT232 eine virtuelle RS232-Schnittstelle 
zur Verfügung stellt?


>>Wie sorge ich dafür, dass innerhalb eine Pulspause vom PC geschickte
>>Daten trotzdem noch ankommen?
>
> Muss man nicht so eng sehen, durch die Modulation kommt schon das Signal
> an. Das passt. IRDA mit 115k2 Baud arbeitet ohne Träger und es geht
> auch.
Diese TSOP-Empfänger gibt es (scheinbar?) nicht mehr. Aber irgendwie 
muss ich die Daten ja empfangen. Was gibt es für alternativen?

Wenn diese Modulation mit 36/38kHz funktioniert, dann müsste die 
Übertragung auch schon mit 38400 baud ohne Modulation funktionieren? 
Also direkt den TX-Ausgang vom FT232RL an nen Treibertransistor für ne 
Infrarot-Diode.
Was muss dann auf der Empfängerseite sein?
Reicht ein IR-Empfänger an die Basis von nem Transistor, der auf nen I/O 
von dem µC geht? Wenn der µC dann auch noch UART unterstützt, dann hab 
ich auch keine Probleme mit der Fehlerbehebung, da der µC das 
automatisch macht (im Programm dem UART sagen, welche baud-rate, 
paritätbits,... er geliefert bekommt).

Für serielle Datenübertragung sollte man einen externen Quarz am µC 
nehmen, richtig?

Danke für Eure Mühe.

von Kei N. (mckalle)


Lesenswert?

Das mit dem USB-Seriell-Wandler-IC lass ich bleiben, der ist mir viel zu 
klein zum Löten ;)

von Michael H. (michael_h45)


Lesenswert?

Lehrmann Michael schrieb:
> Wird nix vernünftiges.
Blödsinn.
Liefer einen Grund, den ich dir nicht in 2 Zeilen widerlegen kann...

> Dafür nutzt man im Normalfall PWM (-> siehe AVR Tutorial)
Aha... und wie erklärst du dir dann, dass es IR-Technik schon gab, bevor 
jeder Furz mit Mikrocontrollern gelassen wurde?
-> Blödsinn

> Das wird nur was wenn man ein fertiges IRDA Modul verwendet das über
> eine RS232 Schnittstelle verfügt / USB
Völliger Käse!
IRDA ist hier absolut nicht nötig.

von Michael H. (michael_h45)


Lesenswert?

Kei Ner schrieb:
>> NE555 oder 74HC14 als RC Oszillator.
> Nen Ozillator krieg ich hin, gibt ja genug Bauanleitungen im Internet,
> aber wie sorge ich für die Pulspausen?
Dafür musst du auf der Software-Seite sorgen.

Der TSOP fliegt dir nicht um die Ohren, wenn du mal 1s lang Träger 
sendest. Die Empfindlichkeit geht runter - mehr aber auch nicht.
Wenn du also Probleme mit der Reichweite kriegst, kannst du dir darüber 
auch noch gedanken machen.

> Sehe ich das richtig, dass der FT232 eine virtuelle RS232-Schnittstelle
> zur Verfügung stellt?
Genau.
Man kann ihn allerdings auch in einem anderen Modus ohne virtuellen 
COM-Port betreiben, falls man sich die Suche nach der richtigen 
Port-Nummer sparen will.
D2XX Programmer's Guide: 
http://www.ftdichip.com/Support/Documents/ProgramGuides/D2XX_Programmer's_Guide(FT_000071).pdf

> Diese TSOP-Empfänger gibt es (scheinbar?) nicht mehr.
Diese Typen nicht.
Aber es gibt TSOP34838, SFH5110, uswusf.

> Wenn diese Modulation mit 36/38kHz funktioniert, dann müsste die
> Übertragung auch schon mit 38400 baud ohne Modulation funktionieren?
Naja.
Es geht, aber die trägerbasierte Übertragung ist zuverlässiger - schon 
alleine, weil du Umgebungslichtstörungen ausfiltern kannst.

> Was muss dann auf der Empfängerseite sein?
Typischerweise ein Transimpedanzverstärker, der den Strom der Photodiode 
in eine Spannung wandelt und verstärkt.

> Für serielle Datenübertragung sollte man einen externen Quarz am µC
> nehmen, richtig?
Ja.


Hast du schon über die Anschaffung eines Entwicklungsboards nachgedacht?
Ein STK500 hat potential, dich so lange zu beschäftigen, dass die 
Investition definitv lohnt, auch wenn man später auf andere/schnellere 
Architekturen als den AVR umsteigt.

von Michael H. (michael_h45)


Lesenswert?

Kei Ner schrieb:
> Wie erzeuge ich am einfachsten diese Trägerfrequenz? Den Strom für diese
> Sendeeinheit werde ich von einer USB-Schnittstelle abzapfen.
> Ich möchte auf der Senderseite nach Möglichkeit KEINEN µC verwenden.
http://www.lochraster.org/etherrape/images/etherrape-schematic.png
Der Part mit dem NE555 sollte fuer dich interessant sein.

von Kei N. (mckalle)


Angehängte Dateien:

Lesenswert?

Danke für die Hilfe.

Ich bin nun zu ersten Ergebnissen gekommen und würde mich über 
Kommentare freuen.
Zum Sender: Nach dem Schaltplan von Michael wird die Schaltfrequenz 
durch R7/R8 bestimmt. Als Wert für 38kHz steht dort 1,9k. Aber es sind 
zwei Widerstände. Wie muss ich das also verstehen? Und wie groß müssen 
diese dimensioniert werden?
Den rs232-Port vom PC kann ich so nicht an den NE555 anschließen. Könnte 
ich eine Zener-Diode zwischen Pin 3 vom Stecker und Masse legen, um die 
Spannung zu begrenzen, oder wäre ein Optokoppler vielleicht sogar 
sinnvoller?

Zum Empfänger: Angeblich soll es möglich sein, den Empfänger direkt an 
einen µC-Eingang anzuschließen. Hat jemand Erfahrung damit?
Den Widerstand und den Kondensator am Empfänger kann ich wohl weg 
lassen, da ich die Spannung sowieso mit einem Regler heruntersetzen 
möchte. Da ich nur 24V zur Verfügung habe, kam mir ein DC/DC Wander (TSR 
1-2450) sehr gelegen. Zur TMA-Serie von Traco habe ich gelesen, dass 
diese die Spannung nur sehr ungenau Regeln. Ist die TSR-Serie zum µC 
betreiben geeignet oder sollte man besser noch einen Standard 
Linearregler dranhängen?
An die Ausgänge vom µC werde ich wohl Optokoppler dran hängen. Ist da 
ein Widerstand von 390 Ohm in Reihe mit einem 4n33 passend?
Die Optokoppler sollen am Ende den Basistrom Transistoren an- und 
ausschalten. Die Transistoren sind mit 6-7 LEDs in Reihe an den 24V. 
(PWM-Dimmung für ne Deckenlampe mit Warm- und Kaltweißen sowie RGB-LEDs)

Fällt euch sonst noch etwas auf?

von Michael H. (michael_h45)


Lesenswert?

Kei Ner schrieb:
> Zum Sender: Nach dem Schaltplan von Michael wird die Schaltfrequenz
> durch R7/R8 bestimmt. Als Wert für 38kHz steht dort 1,9k. Aber es sind
> zwei Widerstände. Wie muss ich das also verstehen? Und wie groß müssen
> diese dimensioniert werden?
Beide gleich groß. Ich bin allerdings eher auf 1,6k für 38kHz gekommen.
Aber das kannst du ja dann ausprobieren und messen.

> Den rs232-Port vom PC kann ich so nicht an den NE555 anschließen. Könnte
1
                              5V ^
2
                                 |
3
                                |¯|
4
                                |_| 4,7k
5
                                 |         reset
6
                                 o-------O des
7
                                 |         NE555
8
                ____           |/
9
    TX  O------|____|----o-----|   BC547
10
    Pin 3       22k      |     |\>
11
                        ---      |
12
    RS232        1N4148 / \      |
13
                        ---      |
14
    Pin 5                |       |
15
    GND O----------------o-------+

> Zum Empfänger: Angeblich soll es möglich sein, den Empfänger direkt an
> einen µC-Eingang anzuschließen. Hat jemand Erfahrung damit?
Ja. Geht.
Aber sieh zur Sicherheit noch einen externen Pullup vor. Die TSOP haben 
nur einen Pullup intern am Ausgang, der in gestörter Umgebung leicht 
überwunden werden kann.
> Den Widerstand und den Kondensator am Empfänger kann ich wohl weg
> lassen, da ich die Spannung sowieso mit einem Regler heruntersetzen
Vorsicht, der Tiefpass ist durchaus sinnvoll, gerade wenn vielleicht 
noch Anschlusskabel im Spiel sind.

> diese die Spannung nur sehr ungenau Regeln. Ist die TSR-Serie zum µC
> betreiben geeignet oder sollte man besser noch einen Standard
> Linearregler dranhängen?
Geht.

> An die Ausgänge vom µC werde ich wohl Optokoppler dran hängen. Ist da
> ein Widerstand von 390 Ohm in Reihe mit einem 4n33 passend?
Ganz schön wenig. 1k reicht auch noch leicht.

> Fällt euch sonst noch etwas auf?
C9 darf ruhig um einen Faktor 20 größer sein.

von Kei N. (mckalle)


Lesenswert?

Danke für die schnelle Antwort.

Wie berechnet man den Widerstandswert für den NE555?

Bei welchen Bauteilen muss ich besonders darauf achten, dass sie dicht 
bei einander sind? Quarz, den zugehörigen Kondensatoren, 
Endstörkondensatoren für die Stromversorgung direkt am µC. Was noch?

Ich werde demnächst mal eine Bauteilliste zusammenstellen. Ich bin mir 
nämlich zB bei den Kondensatoren nicht sicher, welche Typen man nehmen 
sollte ;)

von Michael H. (michael_h45)


Lesenswert?

Kei Ner schrieb:
> Wie berechnet man den Widerstandswert für den NE555?
Die Formeln kann man im Datenblatt finden, oder ganz bequem geht das 
auch hier: http://www.elektronik-kompendium.de/sites/slt/0310131.htm
Aber: Kondensatoren bekommst du im Normalfall schon mal nur mit 20% 
Toleranz und dann gelten diese Formeln auch nicht für jede 
Versorgungsspannung.
Falls es eine geätzte Platine werden soll, würde ich auf alle Fälle 
Bestückoptionen zum Abgleich setzen.
Also zu den Frequenzbestimmenden Bauteilen noch jeweils das gleiche 
Bauteil parallel dazu.

> Bei welchen Bauteilen muss ich besonders darauf achten, dass sie dicht
...
> Ich werde demnächst mal eine Bauteilliste zusammenstellen. Ich bin mir
Sowas bespricht man am besten, wenn schon Ergebnisse da sind.
Kondensatoren am NE555 können keramische Typen sein. (Kerko oder 
Vielschicht bei Reichelt.)

von Kei N. (mckalle)


Lesenswert?

Michael H. schrieb:
> Beide gleich groß. Ich bin allerdings eher auf 1,6k für 38kHz gekommen.
> Aber das kannst du ja dann ausprobieren und messen.
Ich habe nochmal mit der Formel vom Elko nachgerechnet und komme 
ebenfalls auf 1,9k. Bei 1,6k komme ich auf eine Frequenz von ~45kHz

von Kei N. (mckalle)


Angehängte Dateien:

Lesenswert?

So, nun habe ich noch Fragen zur "Leistungsstufe" für die LEDs ;)
Ich möchte die LEDs vom µC über PWM ansteuern. Die Ausgänge vom µC 
steuern die Optokoppler an. Vom Strom her sollte der das ja schaffen mit 
40mA pro Pin :)

Nun bin ich mir aber bei der Dimensionierung der Widerstände für die 
LEDs und Transistoren nicht ganz sicher. Das Ganze soll so sein, dass 
wenn der µC kein Signal gibt, die LEDs an sind. Die LEDs brauchen 50mA 
bei 3,1V. Ich habe 24V zur Verfügung, also kann ich 7 Stück davon in 
Reihe schalten. Dazu ein Widerstand mit 47 Ohm. Soweit die Theorie.
Aber es fällt ja auch an der Kollektor-Emitterstrecke ein Spannung ab, 
ca. 0,2V, richtig? Dann würde ich auf 43 Ohm für den LED-Widerstand 
kommen.
Nun der Basis-pull-up (beispielhaft durch R17 dargestellt): Reicht ein 
Basisstrom vom Ib=4mA pro Transistor, um diesen voll durch zu steuern?
An der Basis-Emitterstrecke fallen 0,7V ab, bleiben noch 
23,3V/0,004A~5,8kOhm.
Kann ich jetzt einfach die Transistorbasen parallel schalten und mit 
EINEM Widerstand mit +24V verbinden? Der Widerstand müsste dann 
natürlich für 3 Transistoren 23,3V/0,012A~1,9kOhm groß sein.

von klaus (Gast)


Lesenswert?

gab's da nicht mal was wie IRDA ?

von Scans (Gast)


Lesenswert?

Aber IRDA ist Trägerlos und ohne Träger wirds schwierig mit der 
Entfernung.
Der Nachrichtentechniker würde sagen: typisches Kanal-Mismatch ^^

von Kei N. (mckalle)


Lesenswert?

klaus schrieb:
> gab's da nicht mal was wie IRDA ?

Ja, aber das ist ja nur ein Protokoll. Ich brauch ja aber erst mal die 
Schicht dadrunter.

von klaus (Gast)


Lesenswert?

Hier was zum physical layer von irda:

http://www.maxim-ic.com/app-notes/index.mvp/id/3024

Manche Prozessoren können das direkt, man braucht nur einen Transistor 
und die LED. Aus Sicht des Prozessors ist es einfach eine serielle 
Strecke. Es gibt auch fertige LED/Photodiodenkombinationen dafür. Sowas 
lag früher bei manchen PC-Mainboards bei, kann man möglicherweise noch 
finden.

MfG Klaus

von Hans (Gast)


Lesenswert?

>Ja, aber das ist ja nur ein Protokoll. Ich brauch ja aber erst mal die
>Schicht dadrunter.

Nein, IrPhy (im IrDA) ist Layer1.

VG,
Hans

von Kei N. (mckalle)


Lesenswert?

klaus schrieb:
> http://www.maxim-ic.com/app-notes/index.mvp/id/3024
Danke, daber das ist ja eher was, wenn ich zwischen zwei Geräten eine 
richtige Kommunikation haben möchte. Es reicht für meine Anwendung 
jedoch, wenn der PC dem µC Daten senden kann. Vom PC sollen nur die 
Farben eingestellt werden.

Hans schrieb:
> Nein, IrPhy (im IrDA) ist Layer1.
Ich hatte einige Artikel über Fernbedienungen gelesen und da wurde IrDA 
zwar nicht als Protokoll bezeichnet, aber so beschrieben.

Stimmen die Widerstände so, wie ich sie in Post #2047419 versucht habe, 
zu berechnen?

von Kei N. (mckalle)


Lesenswert?

Kennt jemand einen günstigen (<1€) Spannungsregler mit enable/shutdown 
pin oder kann mir jemand sagen, ob man den LM317 mit 1kHz an und 
ausschalten kann?
Ich möchte gerne jeden LED-Strang (7 LEDs bei den weißen, 8 bei den 
bunten) nicht einfach mit nem Widerstand betreiben, sondern mit einer 
KSQ. Ich habe gerade mal mein Netzteil nachgemessen, und da kommen 25V 
raus, nur weiß ich nicht, wie es unter Belastung reagiert. Nur mit nem 
Widerstand, der für 25V ausgelegt ist, würden die LEDs deutlich dunkler 
werden, wenn auf einmal anstatt 50mA nurnoch 40mA durchfließen. Ich habe 
irgendwo mal eine KSQ aus FET und pnp-Transistor gesehen, die mit einem 
2. pnp dann an- und ausgeschaltet werden konnte. Sowas wäre vielleicht 
noch einfacher.

von Michael H. (michael_h45)


Lesenswert?

Kei Ner schrieb:
> Ich möchte gerne jeden LED-Strang (7 LEDs bei den weißen, 8 bei den
> bunten) nicht einfach mit nem Widerstand betreiben, sondern mit einer
> KSQ. Ich habe gerade mal mein Netzteil nachgemessen, und da kommen 25V
Konstantstromquelle: Konstantstromquelle mit bipolaren Transistoren
Zieh mit dem Optokoppler die Basis von T1 gegen Massen. Dann ist die 
LED-Kette per default an und trotzdem dimmbar.
An der KSQ-Strecke werden mindestens 800mV abfallen.

von Kei N. (mckalle)


Angehängte Dateien:

Lesenswert?

Michael H. schrieb:
> Kei Ner schrieb:
>> Ich möchte gerne jeden LED-Strang (7 LEDs bei den weißen, 8 bei den
>> bunten) nicht einfach mit nem Widerstand betreiben, sondern mit einer
>> KSQ. Ich habe gerade mal mein Netzteil nachgemessen, und da kommen 25V
> Konstantstromquelle: Konstantstromquelle mit bipolaren Transistoren
> Zieh mit dem Optokoppler die Basis von T1 gegen Massen. Dann ist die
> LED-Kette per default an und trotzdem dimmbar.
> An der KSQ-Strecke werden mindestens 800mV abfallen.
Danke!
Funktioniert das auch, wenn ein Optokoppler mehrere LED-Stänge mit 
jeweils einer eigenen KSQ ansteuert? (s. Anhang)

von Michael H. (michael_h45)


Lesenswert?

Kei Ner schrieb:
> Funktioniert das auch, wenn ein Optokoppler mehrere LED-Stänge mit
> jeweils einer eigenen KSQ ansteuert? (s. Anhang)
Nein.
Verlustleistung am Transistor T1 aus dem Artikel beachten.
Nimm 33k für R2 aus dem Artikel.

Wozu der OK, wenn auf beiden Seiten die selbe Masse vorkommt?

von Kei N. (mckalle)


Lesenswert?

Michael H. schrieb:
> Kei Ner schrieb:
>> Funktioniert das auch, wenn ein Optokoppler mehrere LED-Stränge mit
>> jeweils einer eigenen KSQ ansteuert? (s. Anhang)
> Nein.

Kann man die KSQs mit einem Widerstand entkoppeln? Das wäre nämlich 
schon wichtig, da ich 5*7 LEDs mit einem Ausgang vom µC steuern möchte.
Ein Ausgang Warmweiß, einer Kaltweiß und dann noch drei für RGB.

Michael H. schrieb:
> Verlustleistung am Transistor T1 aus dem Artikel beachten.

25V - 3,1V*7 = 3,3V
UR1 = 0,6V
ILed = 0,05A
UT1 = (3,3V-0,6V) * 0,05A = 0,135 W
(Richtig? ;))

Michael H. schrieb:
> Wozu der OK, wenn auf beiden Seiten die selbe Masse vorkommt?
Ich dachte mir, dass dadurch die Belastung vom µC einen ein maximum 
nicht überschreitet, egal, ob am Ausgang irgendwas schief läuft. Wenn 
der nicht nötig ist, wirds natürlich ~3€ günstiger :)

von Kei N. (mckalle)


Angehängte Dateien:

Lesenswert?

Könnte man die Konstantstromquellen mit Dioden parallel steuern?

von Kei N. (mckalle)


Angehängte Dateien:

Lesenswert?

Falls es noch irgendjemanden interessiert: Die Datenübertragung mit 
Infrarot funktioniert wunderbar. Aktuell habe ich 2400 Baud eingestellt.
Im Anhang ist der Schaltplan für alle Neulinge so wie ich ;)

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.