Page 1 of 1

Pilotare molti led con 2 fili

PostPosted: 08 Apr 2014, 21:20
by crizio
Salve a tutti, tutto bene?
per un lavoretto, vorrei sapere come posso pilotare una 30ina di led con 2 soli fili.
devo controllare il tutto con arduino2560 e programmare in bascom.
c'è qualcuno che ha mai fatto qualcosina del genere, quale chip da abbinare ad arduino mi consigliate?

vi ringrazio

Re: Pilotare molti led con 2 fili

PostPosted: 08 Apr 2014, 21:32
by suibaf
Potresti un utilizzare un paio si questi:
http://uk.farnell.com/nxp/pca9685pw/ic- ... dp/1854074

Re: Pilotare molti led con 2 fili

PostPosted: 08 Apr 2014, 22:49
by Leonardo
Ciao,
Devi controllare individualmente ogni led?

Re: Pilotare molti led con 2 fili

PostPosted: 09 Apr 2014, 07:19
by crizio
grazie suibaf,
si leonardo, devo controllare singolarmente ogni led, hai qualche consiglio da darmi?

Re: Pilotare molti led con 2 fili

PostPosted: 09 Apr 2014, 08:18
by Leonardo
Puoi valutare se il http://en.wikipedia.org/wiki/Charlieplexing può andare bene se non vuoi comprare nuovi componenti.

Se cerchi un Led Driver in formato DIP puoi valutare MM5450 http://www.micrel.com/_PDF/mm5450.pdf, capace di pilotare fino a 34 led a 15mA, non richiede una resistenza per ogni led in quanto li controlla in corrente.

Re: Pilotare molti led con 2 fili

PostPosted: 09 Apr 2014, 15:54
by crizio
ho visto l' mm5450 e mi sembra possa andare, io devo accendere una trentina di diodi led rossi.
non è che c'è qualcuno che ha pronta una procedura per settare i singoli led inviando i dati seriali, o una libreria anche precompilata per gestire questo integrato,
mi sareste di grande aiuto ;)

Re: Pilotare molti led con 2 fili

PostPosted: 09 Apr 2014, 16:28
by Leonardo
Per farla breve funziona come uno shift-register.

Qui puoi trovare un esempio per Arduino anche se non ti so dire se funziona in quanto mai provato http://forum.arduino.cc/index.php/topic,66090.0.html

Re: Pilotare molti led con 2 fili

PostPosted: 10 Apr 2014, 23:46
by js-bascom
Due fili piu' l'alimentazione (4 fili) o due fili in tutto? :?

Re: Pilotare molti led con 2 fili

PostPosted: 22 Apr 2014, 17:23
by crizio
ciao e rieccomi
finalmente ho procurato un m5451 e per fare esperienza ho montato questo circuito http://fl.hw.cz/design/segment_displeje/M5451_sch.gif con 4 display rossi a led, per farci un orologio digitale, o altro man mano si vedrà.
l'ho interfacciato in spi con un atmega2560 ma non riesco a fare accendere i led. ho collegato i segnali data e clock ma non sto capendo come inviare i dati al circuito. non so se è un problema hardware o il programma anche se ancora posso dire di aver scritto pochissimo.
qualcuno potrebbe aiutarmi? grazie

Re: Pilotare molti led con 2 fili

PostPosted: 22 Apr 2014, 18:29
by Leonardo
Puoi pubblicare il codice?
La resistenza da 3.3k è troppo bassa, devi avere massimo 0.75mA

Re: Pilotare molti led con 2 fili

PostPosted: 22 Apr 2014, 19:13
by crizio
sto cercando di trasmettere lo stato dei led utilizzando l'istruzione
SHIFTOUT pin , pclock , var , option [, bits , delay ]

seguendo la sintassi riportata qui
http://avrhelp.mcselec.com/index.html?shiftout.htm

non riesco a capire come configurare il comando. ho assegnato i pin (pin) e il (pclock) ma sto impazzendo con gli altri parametri. ci sono altri metodi migliori?

Re: Pilotare molti led con 2 fili

PostPosted: 22 Apr 2014, 22:07
by js-bascom
ho procurato un m5451
Che avrei quasi suggerito. ;) li ho usato per anni nelle mie insegne elettroniche.

Non ho tempo ora di guardare il codice ora pero' il trucco e' quello di mandare lo start bit (1) manuamente e poi usare l'SPI per il resto dei 34 clock cycles per i daii veri e proprii.

ATTENZIONE!! Assicurati che il resto dei bits ( sei nell'utima byte) non utilizzati siano ZERO altrimenti il chip sara confuso se trova un UNO perche' lo interpretera come un nuovo start bit.

L'atlro metodo sarebbe quello di inserire lo start bit come primo bit ma poi ti necessita ruotare tutti i bits e rimarranno 5 bit che DEVONO essere zero nell'ultima byte.

Re: Pilotare molti led con 2 fili

PostPosted: 23 Apr 2014, 07:11
by deluca
ciao einstein,
già @reset aveva aperto un topic su questo argomento
viewtopic.php?f=9&t=332&p=1080&hilit=m5450#p1080

Queste le sub essenziali per comandare il chip. @reset stava usando un at90s8515 ma basta riconfigurare i pins secondo le tue necessità.....
Code: Select all
'-----[ gestione M5450 by Giovanni De Luca - INFN-LNS ]---------------
$regfile = "8515DEF.DAT"
$crystal = 8000000
$hwstack = 64
$swstack = 16
$framesize = 50

Declare Sub Reset_m5450_d
Declare Sub Write_m5450_d
Declare Sub Bit_start_d

Ddrb.0 = 1                                                  'DOUT 5450
Ddrb.1 = 1                                                  'CLOCK 5450

  Dout1 Alias Portb.0
    Ck1 Alias Portb.1
'  enbl a gnd

Dim Y(4) As Byte                                            'valori da inviare al display
Dim X As Byte
'-------------------------------------------------------------------------------
Do
    'qui scrivi il tuo codice main
    'assegna a Y() i tuoi valori

Loop
'-------------------------------------------------------------------------------
End

'-------------------------[ write segmenti su display ]----------------------
Sub Write_m5450_d

  Reset_m5450_d
  Bit_start_d

    For X = 1 To 4                                          '4 se devi scrivere 4 cifre
      Shiftout Dout1 , Ck1 , Y(x) , 1 , 8 , 1         'oppure assegna 32 bit con una long
    Next X

    For X = 1 To 3
      nop:Ck1 = 1
      nop:Ck1 = 0
      nop
    Next X
End Sub

'-------------------------[ bit start display ]---------------------------------
Sub Bit_start_d

   nop:Dout1 = 1
   nop:Ck1 = 0
   nop:Ck1 = 1
   nop:Ck1 = 0
   nop:Dout1 = 0
   nop
End Sub
'--------------------[ RESET segmenti su M5450 display ]------------------------
Sub Reset_m5450_d

 Bit_start_d
 For X = 1 To 35
   nop:Ck1 = 1
   nop:Ck1 = 0
   nop
 Next X
End Sub