PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Geschwindigkeit bei Infrarotkommunikation



LLiinnuuxx
22.02.2008, 18:59
Wie der Titel schon erahnen lässt wollte ich mich erkundigen wie schnell eine Datenübertragung mit Standard IR-Fototransistore und Dioden ist.

Die Übertragung findet über eine sehr kurze Strecke statt (maximal 1 cm). Sie muss aber schnell erfolgen, da sich der Sender bewegt. es ist nur unidirektionale Kommunikation nötig.

Übertragen werden sollen ca 36 Bits. Wie schließe ich dann optimaler weise die Fototransistoren an (Es sollen möglichst viele an einer AVR angeschlossen werden).

Wäre dankbar wenn ihr euere Erfahrungen mit mir teilt.

LLiinnuuxx


Kurz:

Wie schnell mit Standard InfrarotDiode und Fototransistor?
Wieviele Empfänger an welchem AVR?

Besserwessi
22.02.2008, 20:25
Die normalen IR Dioden können Frequenzen bis etwa 1 MHz verarbeiten, einige auch noch etwas mehr. Fototransitoren sind dagegen eher langsam und sollten wohl durch Fotodioden ersetzt werden. Bei entspechendem Verstärker sind die eher schneller als die meisten IR dioden.
Wenn es extrem schnell sein müßte man wohl einen IR Laser als Sender nehmen. Das wird aber eher aufwendig.


Als eingang würde sich einmal der UART eingang anbieten, wenn denn die UART schnell genug ist. Bei einigen AVR Typen gibt es davon 2. Sonst könnte man noch einen Kanal als sorftware UART realisieren, da wird aber die Geschwindigkeit kaum über 500 kBaud liegen können. Dazu wäre ein Kanal mit Interruptsfunktion sinnvoll.
Wenn die Empfänger nicht gleichzeitig aktiv sind könnte man die extern zusammenschalten oder einen multiplexer davorschalten.

Wie schnell muß es denn sein ?
Müssen alle Empfänger gleichzeitig empfangen werden ?

LLiinnuuxx
23.02.2008, 11:17
Es soll möglich sein, dass alle Empfänger gleichzeitig empfangen.

Zur Geschwindigkiet:
Es reicht denke ich wenn ich ca 50.000 Bits pro Sekunde übertragen kann ... da sind bereits Reserven eingerechnet.

Nur das Problem ist halt das ich möglichst viele Empfänger an einem AVR betreiben möchte (Fehlerfrei, Fehlerkorrektur auch bereits vorgesehen)

Was könnt ihr den für FotoDioden und InfrarotDioden empfehlen (Reichelt), die möglichst klein sind?


Gerechnet wurde mit einer Überfahrtsgeschwindigkeit von 0,5 m/s wenn die Fotodiode und die Infrarotdiode sich 1mm lang überlappen soll die Kommunikation stattfinden. (Diode sendet die ganze Zeit, empfangen werden kann aber erst bei der Überfahrt). Dauer der Überfahrt : 1/500 m/s in der Zeit sollen 72 Bits übertragen werden (Sicherheitshalber mal 100% drauf getan). So komme ich an meine Geschwindigkeit. (wiedermal aufgerundet von 36.000)


Nochmal das doppelte als Puffer einzuplanen ist denke ich sinnvoll, da die Bauteile sich ja nicht zwingend einen mm lang überdeken.


Dankbar wäre ich für Schaltungsideen, Bauteilvorschläge und Softwareideen (UART zB).

Desweiteren weiß ich noch nicht wie ich zB 8 dieser Dioden mit einem uC auswerten soll. (evtl ADC?)


DANKE euer LLiinnuuxx

Besserwessi
23.02.2008, 19:31
Weil man nicht weiß wann die Verbindung zustandekommt, wird man nicht mit den normalen UART Datenformat arbeiten können. Man wird da kaum erreichen das man die richtigen Startbits kriegt. Man muß sich also wohl ein eigenes Protokoll überlegen, das es verträgt irgendwo in der Mitte anzufangen. Ohne extra Hardware wird man die Daten wohl ganz in Software einlesen müssen. Ein einfaches Protokoll wäre z.B. die Übertragung durch lange und kurze Pulse ähnlich wie bei der DCF77, nur halt schneller. Viel mehr als 2 Kanäle gleichzeitig werden da aber kaum möglich sein.

Notfalls würde eine UART mit sehr vielen (z.B. 4) Stopbits gehen. Dann sollte man spätestens nach 2 Bytes wieder syncron sein. Damit sollte ein AVR Prozessor eine UART in Hardware und eine in Software bedienen können. Mit etwas glück könnte man veilleicht noch eine 2.te Software uart hinkriegen, wird aber sehr knapp. Für mehr als 3 Eingänge an einem AVR sehe ich wenig chancen. Da wird man eventuell das ganze auf mehrere Porzessoren aufteilen müssen.
Was wohl möglich wäre sind mehrere Eingänge die überwacht werden, wobei aber gelichzeitig nur ein Eingang ausgewertet wird.

Datenraten von 50 kBaud könnte man gerade noch mit Fototransitoren hinkriegen. Es wird aber schwierig, wenn die Amplitude stark schwankt, denn wenn man die Sättigung erreicht wird das wohl zu langsam.

Ich würde aber lieber Fotodioden (z.B. BP104F) nehmen. Als Verstäker könnten CMOS inverter (z.B. HEF4069 oder 74HCU04) dienen. Ich habe die Kombination noch nicht getestet, sollte man also erst noch mal testen, bevor man das mehrfach aufbaut. Alternativ wäre ein Transitor und ein 74HC14 Gatter möglich.
Als Sendediode sollte irgendeine SMD IR LED gehen.

LLiinnuuxx
23.02.2008, 20:10
Ein geeignetes Protokoll hatte ich bereits schon vorgesehen.

ist also mit inbegriff ...


Nur 2 Empfänger pro Kontroller ist aber sehr mager ...

ich werde mal Berechnungen durchführen wie wahrscheinlich es ist das 2 Empfänger gleichzeitig ein Signal einlesen müssen.

Ich glaube das kommt so gut wie nie vor und dann muss ich dar halt durch ...

unter der Vorraussetzung das nicht mehr als ein allerhöchstens 2 Signale gleichzeitig ausgelesen werden müssen, kann man dann 8 oder mehr empfänger an eine AVR anschließen ... ?

LLiinnuuxx


mehrere Kontroller sind bereits notwendig ... aber ich kann ja schlecht für jeden empfänger einen Kontroller nehmen ....

Besserwessi
23.02.2008, 22:38
Wie viel ein Kontroller schaft hängt vom protokoll ab. Die UART mit viel Stopbits hat den Vorteil, dass man einen Kanal in Hardware machen kann. Dazu Parallel sollte man dann noch einen ein Software empfangen können, wobei man da wohl mehre Eingänge für überwachen kann. Das ist also Gleichzeitig ein Hardware Signal und eines von etwa 8 möglichen in Software.

Nur mal interressehalber, wofür soll das weren ? Vielleicht ließe sich ja noch was an Strecke änderen um auch langsamer senden zu können. Möglich wären z.B. 2 IR LEDs hintereinander.

So schlimm wären 2 Kanäle je Kontroller auch nicht, schließlich solle da schon ein Tiny2313 oder Mega48 reichen. Ein Mega640 hat sogar 4 hardware UARTS, das sollte für 4 bis 5 Kanäle reichen, ist aber recht groß.

LLiinnuuxx
24.02.2008, 19:45
Es wird ein Rückmeldesystem für die Modellbahn. Die Wagen beinhalten den Sender und identifizieren sich über jedem Empfänger. Und da minimal alle 20cm ein Sensor sein soll wäre es schon gut wenn möglichst viele an einen uC dran können.

übertragen werden soll eine 8Bit ID und 16Bit Daten für Erweiterungen.

LLiinnuuxx
24.02.2008, 19:55
Desweiteren müssen die empfangenen Daten an einen Hauptcontroller weiter gereicht werden ... oder so lange gepuffert werden bis der Hauptcontroller anfragt.

Also ein RIESEN Mikrokontrollernetz :-p

mal sehen ob das so geht

Besserwessi
24.02.2008, 22:03
So schlimm sind 2-3 Kanäle pro Chip nicht. Da sollte auch ein Puffern und die Übertragung der Daten weiter zur Zentrale mit drin sein. Wenn man die Datenrate reduziert, könnten vielleicht auch mehr Kanäle drin sein. Notfalls halt wirklich 2 sende LEDs je wagen, oder ein einfacher Lichleiter. Dann hätte man die doppelte Zeit und könnte langsamer senden.
Wie viele Kanäle man per chip Empfangen kann, hängt dann auch von der Verbindung zur Zentrale ab. Wenn es genügend langsam ist könnte man sicher auch 2 von möglichen 8 (oder gar mehr) Kanälen gleichzeitig lesen. Zu viele Kanäle sollte man auch nicht zusammenfassen, denn Lange Kabel von der Fotodiode zum Controller sind problematisch.

Da sich Züge nicht ganz frei bewegen können, reicht für viel Positionen wahrscheinlich auch das reine Erkennen ob überhaupt ein Zug vorbeikommt.

Ist ein Interessantes Projekt. Wegen der Geschwindigkeit wird man wohl in Assembler Programmieren müssen, denn C ist gerade bei der Manipulation von einzelen Bits und bei Interrrupts nicht so schnell. Der Datenempfang selber scheint mir auch nicht unmöglich lang für ein Assembler Programm.

sigo
01.03.2008, 23:06
Hi,

ich habe eine Übertragung mittels TSOP-7000 und schnellen IR-LEDs (TSHF5201 bzw. TSHF5401 je nach Winkel) realisiert.

Es funzt bis 38,4kBit/s (von mir getestet zuverlässig). Die Daten werden (von einem ATtiny2313) mit 455kHz moduliert. Reichweite: bis zu mehrere Meter. Ein 8-Pin-ATtiny15 oder 25 könnte das Senden übernehmen.

Das Gute am TSOP-7000 ist, dass du einen sehr empfindlichen Empfänger mit 120°-Blickwinkel, und Demodulation etc bekommst, der dir gleich einen TTL-Ausgang liefert. Das Teil ist etwa so klein, wie ein TO-92 Gehäuse.

Wenn du einen der neueren ATmegas nimmst, mit Port-Change-Interrupts, kannst du interuptgetrieben in Assembler bei 38,4kBit/s locker 8 oder mehr Empfänger auswerten, da sie eh nicht alle ständig senden..
Die Daten könnten dann (über einen Ringpuffer) per UART oder I2C bei hoher Datenrate weiter zum Master gehen..die Peripheriebausteine sind ja eine Art Shoot & forget, und belasten den Controller kaum..
Eine sehr feine Sache ist übrigens der 9-Bit-Mode des UART. Damit kann man auf einfache Weise Datenobjekte mit einer Adresse versehen und auch dei Arbitrierung machen. (Siehe Datenblatt oder google Intel UART 9-bit-Mode)

Sigo