Ich muss 2 AVRs (ATmega8) über Infrarot miteinander verbinden, d.h. ich brauche eine bidirektionale Kommunikation ohne Master und Slave. Das TWI Interface würde mir gut gefallen, aber es hat eben die Einteilung in Master und Slave... Die Verbindung mus zudem noch relativ sicher sein. aber das ist nicht das Problem, eine CRC Routine habe ich bereits.
Dann sieh' Dir mal das IrDA-Protokoll* an. Dafür gibt es fertige Sender- und Empfängerbausteine - ein weiterer Vorteil wäre die Möglichkeit, eventuell auch mit anderen IrDA-Geräten (PDA, PC etc.) zu kommunizieren. *) www.irda.org
Dran habe ich shcon gedacht... Ich benötige allerdings keine so hohe Geschwindigkeit und vor allem habe ich schon ein paar IRF274 IR-Dioden und TSOP1736 herumliegen die ich verwenden möchte.
vieleicht eine total blöde Idee, aber warum eigentlich nicht via RS232? einen Phototransistor (mit verstärker) an den RX eine IR- Diode an den TX? Nicht in der Luft zerreissen bitte! Ist nur eine Idee!
"keine so hohe Geschwindigkeit"? IrDA kann, wie beispielsweise von Palm-PDAs realisiert, auch mit verhältnismäßig langsamen Baudraten (< 115200) betrieben werden. Ich weiß jetzt gerade "offhand" nicht, bis zu welcher Baudrate das heruntergeht, meine aber 19200 in der Liste der angebotenen Raten gesehen zu haben. Du könntest ja das IrDA zugrundeliegende Protokoll (Datensicherungsschicht) mit Deinen Sende- und Empfangsdioden realisieren; niemand zwingt Dich, dazu spezielle IrDA-Transmitter zu verwenden.
ok... Rs232 gefällt mir gar nichtmal so schlecht... Man kann es ja auch mit Paritätsbit verwenden. Kan man einfach so eine Sendediode mit einem Transistor an Rx anschliessen und den TSOP an Tx?
@Philip: Im Prinzip ja, aber es empfiehlt sich, einen höherfrequenten Träger mit den seriellen Daten zu modulieren. Dann ist es auf der Empfängerseite einfacher, das Nutzsignal von Störungen ('ne Lampe reicht!) zu trennen. Dieses Konzept wird auch in üblichen IR-Fernbedienungen angewendet.
Apropos Störungen, Nutzsignal und trennen. Ich wollte letzens einen RC5-Empfänger mit einem 36 kHz TSOP basteln, und bin schier verzweifelt, warum das Ding manchmal Interrupts bekommen hat, obwohl ich nichts gemacht habe. Es ist meine Schreibtischlampe, Leuchtstoffröhre. Nur als Vorwarnung, bevor jemand am gleichen Problem ein paar Tischkanten verschleißt. Der Fernseher, zu dem die Fernbedienung eigentlich gehört, hat sich übrigens von der Lampe nicht stören lassen, selbst wenn man voll in sein "Auge" reinleuchtet kann er die Fernbedienung einwandfrei erkennen und richtig schalten. Vielleicht war mein TSOP auch einfach kaputt bzw. nicht schmalbandig genug, und es gibt besseres.
@Zotteljedi: Ich habe seit Jahren eine IR-Fernbedienung auf Basis eines TSOP laufen. Störimpulse bekommt man immer rein, auch wenns noch so schmalbandig wäre. Die Kunst ist eben, diese Störungen vom Nutzsignal zu trennen. @Phillip: Der I2C-Bus ist durchaus nicht in "Master" und "Slave" getrennt. Jeder Baustein darf auch Master sein. Dein Problem ist allerdings, daß Du dann zwei Signale (Takt und Daten) übertragen mußt - und das würde sehr aufwendig werden. Der in den üblichen Fernbedienungen verwendete Träger um die 35-40 kHz eignet sich nur zum Übertragen von kleinen Datenmengen. Bei einer Baudrate von 9600 Baud würden pro Bit nur ca. 4 Impulse der Trägerfrequenz übrigbleiben - das ist zuwenig. Schau Dir mal den LM567 an, das ist ein PLL der auch als Tondekoder verwendet werden kann.
@Zotteljedi, Dein TSOP ist völlig in Ordnung, aber er kann doch nicht wissen, welches Protokoll Du verwendest. Es ist also allein Deine Auswertesoftware, die nicht in Ordnung ist. Schau dir z.B. mal meine Routine in der Codesammlung an. Die macht diverse Tests, um falsche Impulslängen und falsche Datenpakete zu unterdrücken. Peter
> Dein TSOP ist völlig in Ordnung, aber er kann doch nicht wissen, > welches Protokoll Du verwendest. Ich war viel mehr verwundert, daß die Lampe überhaupt eine Reaktion hervorgerufen hatte. Mir war nicht so klar, daß die genau (bzw. unter anderem auch) bei 36 kHz rumstört. Vielleicht bastel ich mir für den nächsten Versuch einen optischen Tiefpaßfilter ('ne Socke drüberziehen oder sowas)... Vom nächsten Lotterie-Gewinn wird eh erstmal ein Oszi gekauft, wenn man nur ein Multimeter zum Debuggen hat, dann sieht jedes Problem wie Gleichstrom aus.
Wen ich aufmodulieren will, benötige ich aber eine externe Schaltung (Rx Ausgang NAND 36kHz Signal) oder ich mache es intern indem ich mit einem Timer ein 36Khz Signal generiere und den Ausgangspin entweder aktiviere oder deaktiviere.
Ein externer NE555 ist doch kein Problem, mit C = 10 nF, Ra = 2,2 kOhm und Rb = 1 kOhm recht nah dran (35,5 kHz), wenn eins der Bauteile trimmbar ist könnte das gut hinhauen. Kurzes googeln scheint zu zeigen, daß das praxistauglich ist.
"Ein externer NE555 ist doch kein Problem" Nö, aber nur völlig überflüssig. Schau Dir mal T1 an, da gibt es einen Modus "toggle pin on compare". Also einfach das Toggle ein- oder ausschalten. Und dann z.B. im Manchestercode senden. Die IR-Empfänger haben nämlich eine interne AGC um sich wechselnden Lichtverhältnissen anzupassen. Die kann aber irritiert werden, wenn lange Zeit nur 1 oder 0 gesendet wird. Peter
Wo gibt`s ein Beispiel zum Manchestercode oder einem anderen sicheren Übertragungscode, ev. mit CRC?
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.