PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : atmega32 <---> atmeg32 Infrarot-Kommunikation



jcrypter
06.08.2010, 00:08
Hallo liebes Forum,

ich habe gerade angefangen mich mit Mikrocontrollern zu beschäftigen.
Ein paar Dinge habe ich schon realisiert.

Was ich jetzt gerne machen würde wäre eine Kommunikation zwischen zwei Kontrollern, es geht um das Senden von Zahlen im zweistelligen Bereich von einem Controller zum anderen. Es geht dabei nur um eine Richtung, ein Chip kann nur senden, der andere nur Empfangen.

Es ist nicht so schlimm, wenn dabei auch mal eine Übertragung nicht funktioniert.
Was ja eh schwierig zu kontrollieren ist wenn eine Kommunikation nur in einer Richtung stattfindet...

Ich habe bei Google gesucht aber nichts passendes gefunden.
Es geht dabei um eine möglichst einfache und unkomplizierte Lösung.

Hat einer von euch eine Idee, ein Tutorial oder etwas vergleichbares?

Ich danke euch für eure Mühe!
Crypi

Hubert.G
06.08.2010, 08:11
Schau mal wie die das beim ASURO machen, da gibt es die IR-Schnittstelle.

-schumi-
06.08.2010, 12:21
Du könntest dir den RC5-Code mal anschauen, der wird auch von vielen Fernbedienungen für Fernseher usw. benutzt..

Wenn du den Standard nimmst kannst du 2 Zahlen senden, die erste von 0-31 und die zweite von 0-63. Da kannst du auch den erweiterten Standard benutzen, dann reicht die 2. Zahl von 0-127.

Im Notfall kannst du auch die Bits der 1. & 2. Zahl zusammenfügen, dann kannst du eine Zahl von 0-4095 übertragen, sollte also reichen ;-)
Allerdings kann es sein, dass dann dein Fernseher etc. auf einmal komische Sachen macht (sich verselbstständigt), denn die 1. Zahl gibt an welches Gerät angesprochen wird und die 2. den Befehl.

Infos:
http://www.rn-wissen.de/index.php/RC5-Code

MfG + Viel Erfolg
-schumi-

jcrypter
06.08.2010, 12:22
Guten Morgen,

an den dachte ich auch schon.

ich werde mir das mal angucken.

Danke für den Tipp!

Crypi

radbruch
06.08.2010, 13:46
Hallo

Ob serielle Daten oder RC5 übertragen werden soll ist eigentlich egal. Wichtig (und gemeinsam für beides) ist die Hardwaregrundlage.

Bei der IR-Kommunikation wird das eigentliche Signal auf eine Trägerfrequenz aufmoduliert um Störungen durch Fremdlicht zu minimieren. Gebräuchlich (und bei RC5 zwingend!) sind 36kHz. Für diese Trägerfrequenz gibt es spezielle Empfänger (TSOP genannt) die das Signal aus der Trägerfrequenz wieder ausfiltern und (invertiert!) zur Auswertung bereitstellen.

Zur Modulation der Trägerfrequenz wird die sendende IR-LED mit der Kathode am Signalausgang und die Anode am Ausgang des Trägersignals angeschlossen (natürlich mit Vorwiderstand).

Bei High-Signal bleibt die IR-LED dunkel, der TSOP empfängt nichts, sein invertierter Ausgang bleibt high. Bei Low-Signal blinkt die IR-LED im Rythmus des Taktsignals, der TSOP erkennt das Trägersignal und der Ausgang des Empfänges wechselt nach Low.

(Der TSOP benötigt je nach Typ ca. 6-10 Pegelwechsel des Trägersignals. Diese Pegelwechsel dienen bei RC5 als Mass für die Bitlänge und beschränkt bei der seriellen Übertragung die Baudrate auf 2400 Baud. Für höhere Baudraten gibt es TSOPs für deutlich höhere Trägerfrequenzen)

Als Beispiel für den Aufbau einer solchen Schnittstelle zeige ich einen Ausschnitt aus dem Schaltplan des asuro im Anhang. Obwohl der Aufbau mit R17/C8 nicht dem Datenblatt des SFH 5110-36 entspricht, funktioniert diese Schaltung bei ausreichender Versorgungsspannung Vcc gut. Bestellbeispiele für TSOP und IR-LED:

TSOP: Conrad-Best.-Nr.: 171069
IR-LED: http://shop.conrad.at/ce/de/product/184376/
(Bestellnummern aus https://www.roboternetz.de/phpBB2/zeigebeitrag.php?t=50631)

Zur Software: Die Trägerfrequenz erzeugt man am einfachsten mit einem Timer an dessen OCx-Ausgang (mit 72kHz toggeln!), das Signal entweder mit dem TXD des USART oder manchestercodiertes RC5 an einem beliebigen Pin. Auswerten des TSOP dann entsprechend mit RXD oder Polling/Interrupt an beliebigem Pin.

Ich hoffe, ich habe nichts wichtiges vergessen.

Gruß

mic