Vielen Dank für zahlreiche Antworten und Anregungen.
Ich denke das der von Stefan-Us genannte Baustein, TPIC6B595 am besten
geeignet ist. Ich bevorzuge eine Lösung ohne I2C, die Ansteuerung ist
einfacher.
Ich werde zwei von diesen Bausteinen kaskadieren, somit könnte ich 16
lasten schalten.
Der Baustein hat sogar integrierten Schutz der Ausgänge, d.h. die
Freilaufdioden müssen nicht bestückt werden.
>„The device contains a built-in voltage clamp on the outputs for inductive
transient protection.”
Die Ansteuerung ist sehr einfach, ich werde die folgende Funktion
verwenden :
1 | void output( uint16_t data )
|
2 | {
|
3 | uint8_t i;
|
4 |
|
5 | for( i = 0; i < 16; i++ )
|
6 | {
|
7 | if( data & 0x8000 )
|
8 | PORTB |= (1<<SER);
|
9 | else
|
10 | PORTB &= ~(1<<SER);
|
11 |
|
12 | data <<= 1;
|
13 |
|
14 | PORTB |= (1<<SCK);
|
15 | PORTB &= ~(1<<SCK);
|
16 | }
|
17 |
|
18 | PORTB |= (1<<RCK);
|
19 | PORTB &= ~(1<<RCK);
|
20 | }
|
Ich gehe davon aus das tatsächlich das Bild im Datenblatt tpic6b595.pdf
auf Seite 15 nicht korrekt ist, mein Verständnis ist, das Änderung der
Ausgänge nur mit der steigenden Flanke von RCK erfolgen kann. (bei einer
konstanten Beschaltung von /SRCLR und /G)
Vielleicht weis jemand wo man die SMD Version von diesem Baustein
„günstig“ bekommen kann?
Die DIL version ist bei Reichelt verfügbar.
Grüße,
Jan