by Dr. Stack van Hay | 28. März 2013 23:03
Es kommt immer wieder vor, dass wir Frickler einen optischen Impuls übertragen wollen, die bewährte Lösung ist, eine LED und eine Fotodiode flach abzufeilen und das Lichtleiterkabel anzukleben. Es gibt auch noch verschiedene verbesserte Versionen dieser Technik.
Aber warum nicht einfach einen Baustein verwenden, der dafür vorgesehen ist? Ich experimentieren ein wenig mit dem GP1FAV51RK0F.
Genial an diesem Baustein ist, dass er
was will man mehr?
Es gibt neben dem GP1FAV51RK0F (Receiver) dem entsprechend den GP1FAV51TK0F (Transmitter) und für 3.3 V noch den GP1FAV31RK0F bzw. GP1FAV31TK0F. Die Bausteine sind sehr tolerant, was die Eingangsspannung angeht (max. 7V). Etwas empfindlich scheinen sie beim Löten zu sein, denn der Hersteller empfiehlt, die Pins nicht direkt mit dem Lötkolben zu berühren! Bei mir ist allerdings deswegen noch keiner kaputt gegangen. (Von einem, den ich mit Netzspannung gut durchgebraten habe berichte ich euch später …)
Im Wesentlichen hatte ich drei Probleme mit dem Teil
Ist eigentlich einfach:
[toggle title=“Steile Flanken per PNP-Transistor“ style=“fancy“]
Die folgende einfache Schaltung mit einem Standard-Kleinsignal-PNP-Transistor BC856B sorgt für eine bessere Flankensteilheit beim Einschalten.
[2]
Hier sieht man den Effekt am Beispiel einer linear ansteigenden Versorgungsspannung. In der Realität ist der Effekt noch besser, weil die Versorgungsspannung nicht linear sondern exponentiell ansteigt (normalerweise).
[/toggle]
Mit dem Satz [quote]The output (H/L Level) of this product are not fixed constantly when it receivers the modulating light (including DC light, no input light) less than 0.1 Mb/s [/quote] ist übrigens einfach gemeint, dass das sich kein konstanter High-Pegel von 5 V ergibt, sondern die Spannung langsam, mit geschätzt 0.05 V/ms abfällt. Wenn man das in kauf nehmen kann, ist es also durchaus möglich sinnvoll mit viel geringeren Frequenzen, als den geforderten 100 kHz zu operieren.
Hier ein Schaltplan für einen Atmet ATTINY45 als Decoder an dem optischen Empfänger. Am Programmierheader stehen die digitalen Ausgänge PB5, PB2, PB1 und PB0 für angeschlossene Schaltungen zur Verfügung, PB4 verbindet den optischen Empfänger mit dem Microcontroller. Selbst mit dem 1€ ATTINY45 kann man also hervorragend rumspielen.
# [4] [5] [6]
#include <avr/io.h>
#include <avr/interrupt.h>
#include <util/delay.h>
volatile uint8_t state;
volatile uint8_t level;
int main(void)
{
DDRB = ~(1 << DDB4); // Alle ausser PB4 auf Ausgang (0 = Input, 1 = Output)
PORTB = ~(1 << PB4 | 1 << PB0); // Alle ausser PB4 und PB0 auf high
PCMSK |= _BV(PCINT4);
GIMSK |= _BV(PCIE);
level = PINB & _BV(PB4);
sei();
while(1)
{
}
return 0; /* never reached */
}
// Vorläufig reagiere ich einfach auf eine fallende Flanke und fertig.
ISR(PCINT0_vect)
{
uint8_t pinstate = PINB & _BV(PINB4);
if (pinstate == 0 && level != 0)
{
state = 0;
PORTB |= _BV(PB0);
_delay_ms(50);
PORTB &= ~_BV(PB0);
}
level = pinstate;
}
Source URL: https://drsvanhay.de/optische-signale-ubertragen-mit-toslink-spdif-kabeln/
Copyright ©2024 Dr. Stack van Hay unless otherwise noted.