Forum: Mikrocontroller und Digitale Elektronik ISP / I2C Relay Driver IC wird gesucht, (Alternative zu PCF8574 + ULN2803A.)


von Jan (Gast)


Lesenswert?

Um 13 Relais (12V, 50mA pro Relais ) mit einer MCU anzusteuern wird ein 
Treiberbaustein benötigt. (Nicht genügend MCU IOs sind frei, io Expander 
ist nötig)

Der erste Gedanke war erst mal PCF8574 + ULN2803A. Das ganze braucht man 
dann zwei mal um 13 Relays zu bedienen, ziemlich aufwändig insgesamt ,4 
Bausteine.

Da gibt es bestimmt schon was fertiges. Vielleicht kann jemand was 
empfehlen?
So was  wie z.B. MAX4820, leider nicht 12V kompatibel.
(Irgend ein IO expander mit open drain Ausgang für 12V und 50mA )
Gibt es sowas?

Danke im Voraus
Jan

von Stefan F. (Gast)


Lesenswert?


von Jobst Q. (joquis)


Lesenswert?

Der MCP23017 ist ein I2C IO-Expander mit 16 Ausgängen. Damit hättest du 
nur 3 ICs. Treiber wie den ULN2803 wirst du sowieso brauchen, um die 
nötige Leistung sicherzustellen.

Gegenüber dem PCF8574 ist allerdings beim MCP23017 die Software zum 
ansteuern aufwendiger.

Mit PCF8574 bräuchtest du übrigens auch noch Inverter (74HC540), da sie 
mit Open Drain und invertierter Logik arbeiten.

von Jan (Gast)


Angehängte Dateien:

Lesenswert?

Danke für die schnelle Antwort.
Genau nach so was habe ich gesucht.

Was mich wundert ist ein Diagramm im Datenblatt tpic6b595.pdf auf Seite 
15.

Nach meinem Verständnis sollte der Strom „D1 current“ - grüne Kurve 
anfangen zu fließen mit der Steigenden Flanke von RCK . Der fängt aber 
an zu fließen mit der steigenden Flanke von SRCK ?

Hat jemand eine Idee?

von Christian S. (roehrenvorheizer)


Lesenswert?

"After the 16th clock, a pulse to the register clock (RCK) transfers the 
data to the storage registers."

MfG

von Jan (Gast)


Lesenswert?

Hallo Christian,


durch den RCK Puls (steigende Flanke) werden die Daten ins Storage 
Register übertragen. Das Storage Register ist auch das Ausgangsregister. 
"The storage register transfers data to the output buffer when 
shift-register clear (SRCLR) is high." Und SRCLR ist ja permanent high 
(mit VCC verbunden).
Somit müsste eine Änderung der Ausgänge nur mit der steigenden Flanke 
von RCK erfolgen. Das Entspricht aber nicht dem Bild.

Ist das Bild im Datenblatt Falsch?

Gruss,
Jan

von Peter Kranl (Gast)


Lesenswert?

NXP hat dafür den PCA9621 65mA pro Ausgang, alle zusammen max.500mA.

von Wolfgang (Gast)


Lesenswert?

Christian S. schrieb:
> "After the 16th clock, a pulse to the register clock (RCK) transfers the
> data to the storage registers."

Eben, so steht es geschrieben.
Und in Fig.15 geht D1 current erst mit der einen halben SRCK-Takt später 
folgenden steigenden Flanke von SRCK hoch, nicht mit RCK.

von Jobst Q. (joquis)


Lesenswert?

Peter Kranl schrieb:
> NXP hat dafür den PCA9621 65mA pro Ausgang, alle zusammen max.500mA

Schade, dass die Ausgangsspannungen nicht höher sein können als die 
Versorgung (max 5,5V). So ist es leider kaum mehr als ein PCF8574 mit 
etwas höheren Strömen.

von Schwarzseher (Gast)


Lesenswert?

Einfach 13 SOT23 Mosfet-chen statt den ULNs auf die Platine packen?

von Jan (Gast)


Lesenswert?

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

von Jan (Gast)


Angehängte Dateien:

Lesenswert?

Falls es jemanden noch interessiert,
ich habe inzwischen die TPIC6B595 ausprobiert.

Die Änderung der Ausgänge erfolgt gleichzeitig mit der steigenden Flanke 
von RCK und nicht verzögert wie dargestellt im Datenblatt  tpic6b595.pdf 
auf Seite 15 Figure 15.

Bild „shift_latch_Relay_prog“ zeigt das propagation delay rising edge 
RCK zum durchschalten des Ausgangstransistors.

Als last ist ein Relay gegen Vbat=12V angeschlossen.
Kanal1 zeigt das RCK Rising edge
Kanal2 zeigt die TPIC6B595 Ausgangsspannung (der Ausgangstransistor wird 
eingeschaltet).

Gruss,
Jan

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
Noch kein Account? Hier anmelden.