TPIC6C595 Shift Register

Ciao a tutti,
sto cercando di utilizzare il registro a scorrimento (TPIC6C595) al momento per pilotare alcuni led che poi verranno sostituiti con dei relè, la scelta di questo integrato rispetto al solito 74HC595 è per la corrente che il primo è in grado di pilotare.

Ho già realizzato in passato piccoli programmini utilizzando il 74hc595 e tutto funzionava, ora invece collegando questo nuovo registro tutto tace, nessun segno di vita sui led.

Qualcuno ha esperienza con questo registro e può darmi dei consigli?

Allego lo schema di collegamento e qui sotto trovate il codice di test.

#define latch 9 //SRCK
#define ck 8    //RCK
#define data 7 //SER IN

void setup() {
  pinMode(latch, OUTPUT);
  pinMode(ck, OUTPUT);
  pinMode(data, OUTPUT);

  digitalWrite(latch,LOW);
  shiftOut(data,ck,LSBFIRST,B00000001);
  digitalWrite(latch,HIGH);
  
}

void loop() {
  
}

Grazie mille

Buongiorno,
essendo il tuo primo post nella sezione Italiana del forum, nel rispetto del regolamento di detta sezione (… punto 13, primo capoverso), ti chiedo cortesemente di presentarti IN QUESTO THREAD (spiegando bene quali conoscenze hai di elettronica e di programmazione ... possibilmente evitando di scrivere solo una riga di saluto) e di leggere con molta attenzione tutto il su citato REGOLAMENTO ... Grazie. :slight_smile:

Guglielmo

P.S.: Ti ricordo che, purtroppo, fino a quando non sarà fatta la presentazione nell’apposito thread, nessuno ti potrà rispondere, quindi ti consiglio di farla al più presto. :wink:

gpb01:
Buongiorno,
essendo il tuo primo post nella sezione Italiana del forum, nel rispetto del regolamento di detta sezione (… punto 13, primo capoverso), ti chiedo cortesemente di presentarti IN QUESTO THREAD (spiegando bene quali conoscenze hai di elettronica e di programmazione ... possibilmente evitando di scrivere solo una riga di saluto) e di leggere con molta attenzione tutto il su citato REGOLAMENTO ... Grazie. :slight_smile:

Guglielmo

Chiedo scusa per la svista, ero convinto di averlo fatto! Ho provveduto subito...

Piccolo Update sul progetto, ho notato che nello schema allegato al primo post i led sono disegnati al contrario (era il primo problema che ho provveduto a risolvere) ora però i led si accendono nel modo corretto ma dopo la prima accensione non succede più nulla

#define latch 9 //SRCK   
#define ck 8    //RCK
#define data 7 //SER IN
#define enable 10

void setup() {
  pinMode(latch, OUTPUT);
  pinMode(ck, OUTPUT);
  pinMode(data, OUTPUT);
  pinMode(enable,OUTPUT);
  }

void loop() {
  digitalWrite(latch,LOW);
  shiftOut(data,ck,LSBFIRST,B10001001); //LSByte
  digitalWrite(latch,HIGH);

  delay(2000);

  digitalWrite(latch,LOW);
  shiftOut(data,ck,LSBFIRST,B10000001); //LSByte
  digitalWrite(latch,HIGH);

}

la seconda parte, quella dopo il delay non viene eseguita, o meglio il led corrispondente al BIT n.4 non viene mai spento, sbaglio qualcosa nel codice o il problema sono i collegamenti?

Grazie

Le uscite del TPIC6C595 sono dei Open Drain. Queste possono comutate solo a massa. Non possono dare +5V. Per questo i LED non possono essere collegate a massa ma devono essere collegate tra alimentazione e uscita TPIC6C595.

Ciao Uwe

You have no delay() after the 2nd shiftout().

Grazie a tutti,
ho risolto il problema che era generato da tre fattori (due miei errori e uno che non avevo considerato).

Questo era il primo problema (grazie Uwe :slight_smile: )

uwefed:
Le uscite del TPIC6C595 sono dei Open Drain. Queste possono comutate solo a massa. Non possono dare +5V. Per questo i LED non possono essere collegate a massa ma devono essere collegate tra alimentazione e uscita TPIC6C595.

il secondo problema, era più "stupido", ovvero un semplice problema di codice dovuto alla distrazione (thanks CrossRoads :slight_smile: )

CrossRoads:
You have no delay() after the 2nd shiftout().

dopo aver aggiustato queste due cose avevo comunque ogni tanto qualche "flicker" o problemi di accensione dei led, che ho risolto mettendo un condensatore (100nF) tra i 5V in ingresso all'integrato e GND.

Grazie a tutti, ora funziona perfettamente.