giovedì 12 marzo 2009

PinMAME comanda un vero Flipper

Descrizione generale

Il progetto nasce dalla curiosità di sapere come è gestito a livello di elettronica un flipper SS , e dalla curiosità di sapare come il PinMAME lavora e come si interfaccia con programmi come VirtualPinball.
Avendo anche a disposizione un playfield completo di tutto ad esclusione della parte elettrica/elettronica, ho incominciato a pensare come il PinMAME potesse gestire tutte le funzionalità presenti su un piano di gioco. Ed ecco nascere questo progetto ...

Il sistema è formato da due componenti : un computer sul quale gira il PinMAME ed una scheda elettronica a microcontrollore (MCU) , collegata da un lato al PC e dall'altra alle componenti del playfield.
Il trasferimento dati tra PC e MCU avviene tramite un collegamento seriale (RS232 o USB conv.)
Attualmente sono gestiti 32 solenoidi (bobine e flash) , 64 lampade e 64 interruttori.

Scheda elettronica

La scheda elettronica è costituita da tre MCU collegate tra loro per lo scambio di informazioni e la gestione delle unità esterne ; una di esse è collegata al computer via cavo sariale.
Sulla scheda trovano posto i transistor di potenza per l'attivazione dei solenoidi, quelli per le lampade, ed infine gli integrati che gestiscono gli switch.
Al fine di rendere più agevole il lavoro, non sono stati scelti componenti a montaggio superficiale;
I tre microcontrollori hanno una velocità di funzionamento a 8 MHz / 8MIPS , e sono abbastanza veloci da gestire il tutto senza rallentamenti. Il costo dei microcontrollori è di circa 8 euro ciascuno. Nel caso sia necessaria una maggiore velocità di elaborazione, sono già in cantiere 3 MCU da 160 MHz / 40 MIPS

Solenoidi / Bobine

Al momento solo 32 solenoidi sono gestiti ; essi possono essere bobine oppure flash.
Sono gestiti da una singola MCU , le cui uscite provvedo a pilotare un transistor che funge da pre-driver per il tansistor di media potenza (tipo TIP102) ; qualora la bobina consumi un amperaggio elevato, il TIP102 fungerà da pre-driver per un terzo transistor di potenza (TIP36C).
Il collegamento è quello classico : il solenoide è sempre alimentato (48 volt o 32 volt), ed il transistor che chiude a massa.



Il video mostra l'attività dei solenoidi numerati dal 25 al 32; le uscite della MCU sono collegate agli otto led della scheda di sviluppo; i led accesi indicano i solenoidi non attivi, mentre i led spenti indicano i solenoidi attivati

Lampade

La gestione delle 64 lampade è affidata alla seconda MCU; anche quì si è conservato lo schema classico : 8 colonne/driver e 8 righe/return.

Come per i solenoidi , ogni 10 millisecondi il computer invia lo stato di tutte le colonne e di tutte le righe alla MCU, la quale provvede ad aggiornare i transistor dei driver e dei return.

Il video mostra l'attività delle otto righe delle lampade collegate agli otto led della board. Come prima, i led accesi indicano le uscite poste a zero, e viceversa i led spenti indicano le uscite delle righe attive.

Switch

Il terzo ed ultimo microcontrollore è quello che sovraintende agli switch; i 64 switch sono gestiti come una matrice di 8x8, cosichè risultano facilmente collegabili ai microswitch già presenti nel playfield.

In questo caso, il microcontrollore invia al computer solo le informazione inerenti al cambiamento di stato di ogni singolo switch : in tal modo si evita di sovvracaricare di lavoro il programma sul pc e viene decongestionato il traffico dati sulla linea seriale.

Quì c'è poco da dire...

Considerazioni sulla sicurezza

I microcontrollori che gestiscono i solenoidi e le lampade , sono stati dotati di un watchdog. Questo fa sì che nel caso in cui la MCU non sia più in grado di eseguire correttamente il programma, essa si resetti automaticamente e ponga a livello logico basso le sue uscite, in modo tale da diseccitare le bobine e spegnere le lampade (evitando così di bruciare qualcosa).

La funzione di watchdog entra in funzione quando la MCU è bloccata per più di 500 millisecondi, oppure nel caso in cui non riceva i dati dal computer entro un tempo di 500 millisecondi. Ciò vuol dire che se il computer viene spento oppure si 'pianta', o qualcuno scollega il cavo seriale, i solenoidi e le lampade si spengono.

Sviluppi

La scheda di controllo è completata, non mi resta che raccimolare un paio d'ore per collegarla al playfield e vedere come si comporta nel complesso (già, perchè i singoli componenti sono stati testati all'inizio del progetto)...

3 commenti:

Anonimo ha detto...

complimenti , molto interessante ed utile .
Complimenti ancora
Flipperloris

Mirko ha detto...

Grazie Flipperloris.
A presto

Fede ha detto...

Assolutamente interessante!!
Posso chiederti se ti va di condividere con me un po del lavoro che hai fatto? Sono interessato a realizzare una cosa simile sui miei flipper ...

Grazie!
Fede