Semaforo in miniatura con Raspberry Pi: cablaggio di molti LED


8

Sfondo:

Sono un ingegnere civile specializzato in dispositivi di controllo del traffico e ho un piccolo progetto di hobby per costruire un sistema di semafori modello in scala. Sono in grado di gestire e controllare la programmazione del semaforo da solo utilizzando un Raspberry Pi (in più questo mi dà la possibilità di implementare il controllo dinamico e programmato e l'interfaccia con un serio schema di controllo del traffico e possibilmente dati reali sul traffico). Ho solo bisogno di aiuto con il cablaggio di molti LED sul lato hardware :)

Ho seguito questo tutorial http://www.raspberrypi-spy.co.uk/2012/06/control-led-using-gpio-output-pin/ bene (incluso l'utilizzo di una fonte di alimentazione esterna invece del Pin 2), ma Probabilmente incontrerò il problema di troppe connessioni GPIO per tutti i semafori.

Successivamente ho provato il multiplexing con una matrice LED http://www.appelsiini.net/2011/how-does-led-matrix-work . Il multiplexing funziona, tuttavia, le luci sono generalmente più deboli, dubito che questo si ridimensionerà bene e questo tende ad aumentare la complessità del controllo.

Domanda chiave:

A parte ottenere una scheda di espansione sul Raspberry Pi, ci sono altri trucchi che potrei usare per controllare più LED con meno segnali 0/1?

Una cosa sui semafori è che di solito arrivano in blocchi di tre, solo uno dei quali è mai attivo alla volta. Esiste un circuito relativamente semplice là fuori che mi consentirebbe di "attivare" un blocco di LED utilizzando un singolo segnale 0/1?


1
b = soffitto (ln (N) / ln (2)) dove N è il numero di LED da controllare e b è il numero di bit necessari per implementare il controllo. Pertanto un'unità semaforo, in cui è attivo solo 1 LED su 3 alla volta, richiederebbe 2 bit I / O per il controllo. Con I / O a 8 bit, puoi controllare 32 unità semaforo: 2 bit per i dati (quale 1 su 3 accende per accendere), 5 bit per l'indirizzo (a quale 1 in 32 o 2 ^ 5 ti riferisci), e 1 bit per latch. Spero che qualcuno possa estenderlo a una risposta completa.
shimofuri,

La risposta di seguito è buona e ciò che stavo per suggerire, ma come qualcosa di semplice non sono riuscito a trovare un buon circuito di riferimento. Potresti anche usare un piccolo microcontrollore da 8 pin da $ 1 e far rotolare il tuo bus seriale per dispositivi praticamente illimitati anche se è un po 'su un progetto in sé se non li hai mai usati prima.
PeterJ,

La ricerca di "[multiplexing] [led]" troverà domande con entrambi questi tag. Potresti trovare alcune informazioni utili lì.
Phil Frost,

OP potrebbe godere di questo semaforo di Velleman
Chetan Bhargava,

Risposte:


11

Conosci i registri a scorrimento come 74HC595? Richiede 3 pin dal tuo RPI e puoi controllare 8 linee di uscita. Puoi facilmente collegarli in cascata controllando efficacemente n × 8 linee di uscita.

I dati vengono sincronizzati in serie nel registro a scorrimento e una volta trasferiti tutti gli 8 bit di uscita, i bit vengono agganciati alle uscite.

Stavo per aggiungere il foglio dati qui, ma https://www.sparkfun.com/products/733 mostra un bel video e ha anche un collegamento al foglio dati.


4

Shift registra come jippie suggerisce di funzionare bene. Tuttavia, il multiplexing può anche funzionare per più LED di quanto ci si possa aspettare. La soluzione per ridurre la luminosità è aumentare la corrente di picco in modo che la corrente media rimanga la stessa. È possibile farlo aumentando la tensione o riducendo la resistenza di limitazione della corrente.

Il motivo per cui una corrente eccessiva danneggia un LED è che la giunzione si surriscalda. Se viene dato il tempo di raffreddarsi tra gli impulsi, gli impulsi possono essere più forti. La scheda tecnica del LED dovrebbe specificare sia una corrente media massima, sia una corrente di picco massima che non devono essere superate. Se non sei troppo preoccupato per l'elevata affidabilità (un progetto di hobby, non una nave spaziale) e non ti dispiace fumare alcuni LED o piegare un po 'le regole, puoi sempre testare i limiti da solo.

Inoltre, guarda al charlieplexing per un modo per multiplexare più LED da un numero minore di pin. Il limite superiore a quanti LED possono essere collegati con questo metodo è di solito la luminosità ottenibile con la corrente disponibile dai pin GPIO, non il numero di pin.

Ulteriori letture: la pulsazione di un LED a corrente più elevata produce una luminosità apparente maggiore?


1
Tendo a evitare di spingere troppo in alto le correnti di picco in assenza di circuità che può impedire che una fila venga lasciata troppo a lungo. Ogni unità di riga basata su software è quasi certo di guastarsi di tanto in tanto e un circuito ben progettato dovrebbe essere immune ai danni da tale occorrenza.
Supercat,

-1

Utilizzare USB o Ethernet per controllare le luci tramite una scheda relè ad aggancio come questa

http://www.robot-electronics.co.uk/acatalog/Relay_Modules.html

Ho usato queste schede per altre applicazioni e sono eccellenti


2
Ci aspettiamo che le risposte qui siano in gran parte indipendenti. I collegamenti marciscono nel tempo e non è necessario fare affidamento sulle informazioni principali. Dichiarare la risposta in un paragrafo o due e utilizzare i collegamenti per fare riferimento a informazioni di base aggiuntive.
Olin Lathrop,

Giusto! La scheda in questione a cui mi riferivo da Robot Electronics è un driver di relè controllato USB o Ethernet. Viene fornito con un semplice set di comandi per attivare o disattivare ciascuno degli 8 o 16 relè sulla scheda. Questi relè possono essere facilmente utilizzati per commutare lo stack LED dei semafori e consentire il controllo tramite la porta USB o Ethernet del Raspberry PI
Gareth

@Gareth Quindi metti queste informazioni nella risposta non qui.
Butzke,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.