ciao a tutti
sono di roma e da pochi mesi ho iniziato a studiare elettronica per hobby per la mia passione di costruire lampade, e grazie ad arduino ho visto si possono fare cose molto belle.
mi sono imbattuto in questo componente 74HC595, vorrei avere una spiegazione del suo funzionamento. cioè cosa accetta in entrata per pilotare le varie uscite?
ieri ho fatto una prova come nel documento shiftout su questo sito e ai piedini di uscita avevo una tensione di 0.955 o 0.980. non è troppo bassa? che cosa voltaggio mi dovrei aspettare. lo so che i led si accendono a 0.7 ma il mio non si accendeva (led rosso)
ciao stefanosky
La tensione dei led quando sono polarizzati in modo che si accendono é tra 1,4 e 3,6 V a secondo del colore e percui il materiale con cui sono fatti.
Hai agiunto una resistenza per limitare la corrente del LED. Metti qualcosa tra 300 e 1000 Ohm.
Senza niente collegato le tensioni del 595 dovrebbero essere vicini a 0V e vicini a 5V.
grazie della risposta.
ancora non ho messo le resistenze, la tensione di uscita è così bassa.
l'ho controllata con un multimetro.
forse c'era qualche falso contatto sulla breadboard.
in generale vorrei capire come funziona un microchip così.
ho visto il datasheet, che cos'è uno stage? non riesco a capirlo.
grazie
sai come funziona uno shift register? http://www.nxp.com/documents/data_sheet/74HC_HCT595.pdf
in pratica si mettono in ingresso dei bit 8 in modo seriale, qesti poi a seconda di come scegli escono in modo parallelo o in modo seriale.
prova a controllare che sia attiva l'uscita e l'enable, poi controlla il clock
no non so come funziona... sto vedendo dallo sheet, ma non sono abituato a leggere questi schemi. soprattutto quelli logici.
@milionario: stasera provo a fare questi controlli.
quindi creato un byte scelgo se farlo uscire dalle uscite parallele o dalla seriale. giusto?
ho visto infatti che dalla seriale escono dati per comunicare con un altro shiftregister
Ciao stefanosky
Hai un entrata seriale, un clock e un enable e 8 uscite.
Gli 8 bit gli scrivi uno dopo l'altro dentro e poi le 8 uscite prendono un valore per ogni bit inserito.
vedi Registro a scorrimento - Wikipedia
Mi ripeto metti le resistenze ai LED perché stai facendo un corto!!!
grazie,
si ora mi sto chiarendo un po' con quell'articolo
non ti preoccupare i led ancora non li ho messi , si ho visto dal tutorial del sito di arduino i valori delle resistenze, grazie per i valori che hai postato.
mi sto ricordando che non ho messo a TERRA l'ultimo piedino sotto gli output e quindi la tensione era bassa, forse era quello. più tardi provo.
grazie a tutti
ora ho i voltaggi giusti in output, avevo sbagliato un po di collegamenti.
ora aspetto i led che ho ordinato e do un'occhiata al codice per arduino.
ciao,
allora ho montato il tutto carino e pulito
uno shift register col suo condensatore (ho messo 10microfarad 25v), e i led con le loro resistenze.
vado a scrivere
shiftOut(dataPin, clockPin, MSBFIRST, B00000110);
e si accendono i due led 2° e 3°
e poi?
cioè, se lancio ancora quel comando con altri valori non succede nulla.
così
dove si azzera il chip? come?
pensavo bastasse mandargli una serie di bit
e come si shifta? cioè shift register non mi dovrebbe far lavorare sui bit con qualche comando?
se tolgo quel delay rimane fermo al primo byte
posto l'immagine con lo sketch caricato
non ho resistito l'ho messo anche su youtube http://www.youtube.com/watch?v=9BFxg98OYBE
ma il loop in arduino ogni quanto lo ripete?
grazie
aggiunta:
guardando la foto ho avuto l'idea: nel fare tutto compresso ho sbagliato a mettere i led che terminano sul lato del condensatore!
ho tolto il collegamento tra il condensatore e la terra e ora va.
quindi ho il condensatore libero , cioè è collegato solo al piedino del chip. se provo a metterlo a terra si blocca il movimento led.
idee?
Il condensatore al pin 12 (latch clock) non ci va. Toglilo del tutto.
Ralenta la velocitá di passare da LOW a HIGH e viceversa.
Il datasheet da il parametro "maximum input Rise and Falll Times" per 5V ca 0,5 µsec. HTTP 301 This page has been moved pagina 4 e figura 1 alla pagina 6.
La funzione loop: ogni volta che ha finito di elaborare le istruzioni rincomincia dal inizio della funzione.
La velocitá di ripetizione dipende dal tempo che serve per la funzione Loop. Se fai solo un delay di 1 secondo la funzione vrrá eseguito ca 1 volta al secondo.
nel video su youtube ho messo la spiegazione dei led che si accendono, la rimetto qui:
ho considerato gli 8 led che riesco a pilotare
primo : led per segno
2° : se è 10
3°: 20
4° : 30
5°: 1
6°: 2
7°: 3
8°: 5
quindi per fare 37°C accendo tutti e tre le decine e il 6° e l'8°
nel codice ho preso il campione di temperatura con degli if ho visto che decina avesse e imposto un flag a una variabile di appoggio
poi sottraggo al valore temperatura il flag (0, 10, 20, 30) e ottengo le decine che scorro con uno switch.
così si accendono prima le decine e poi le unità; vorrei costruire la stringa del byte da passargli in una volta con questa analisi utilizzando string, char e byte(). poi mi ci metto.
byez
PS: ma perchè nel forum non sempre appare il bottone modifica del msg?