Temporizzazione su Misura: l’Accesso a Servizi a Pagamento con la Gettoniera Intelligente

Fornisce l’accesso temporizzato a servizi a pagamento come giochi, docce, phon ed erogatori di vario genere, grazie a un contamonete e un’interfaccia a display.

Nelle applicazioni che prevedono l’accesso a pagamento ad alcuni prodotti o servizi, tipicamente vengono utilizzate le cosiddette “gettoniere” elettriche o elettroniche, ossia apparecchi in grado di identificare le monete o specifici gettoni (chi ha qualche decennio sulle spalle ricorderà quelli dei telefoni pubblici…) e fornire un impulso in corrispondenza dell’acquisizione di quelli previsti.

Tipicamente ogni impulso attiva l’erogazione di un prodotto da parte di una macchina di vending o l’apertura di uno sportello di un tornello, ma anche i rubinetti di una doccia, un asciugacapelli o un servizio in un autolavaggio self-service, l’accesso alla tastiera di un computer pubblico o a un telefono e via di seguito.

Esistono, però, situazioni dove più che un impulso serve disporre di una temporizzazione da avviare all’introduzione della moneta o della serie di monete che compone una tariffa; per queste abbiamo pensato di realizzare il progetto qui descritto, che si basa sulla gettoniera della Futura Elettronica (cod. GETTON1), che già avevamo impiegato nel progetto del RetroPie apparso nel fascicolo n° 200 di Elettronica In.

Questo apparato riconosce monete da 1 centesimo fino a 2 euro passando per le misure intermedie e fornisce, su un’interfaccia seriale o parallela, l’informazione relativa all’acquisizione di ciascun pezzo.

Per convertire le informazioni fornite dalla gettoniera in temporizzazione abbiamo realizzato una scheda d’interfaccia (Fig. 1) che permette di contare i pezzi e assegnare a ciascuno o a un determinato importo introdotto, l’attivazione a tempo di un’apposita uscita, in modo da ottenere tempi rapportati all’importo introdotto, estendendo le possibilità d’impiego a tantissimi ambiti e a servizi con varie tariffe d’utilizzo.

Più esattamente, mediante la scheda di interfaccia è possibile temporizzare le uscite open-collector della gettoniera, in modo da poter gestire, ad esempio, la doccia di uno stabilimento balneare o di una palestra, ma anche un asciugacapelli, l’aspiratore di un autolavaggio; più in generale dove serva gestire a tempo qualcosa in funzione dell’importo.

Fig. 1 Connessioni e impostazioni della scheda.

La scheda di interfaccia della gettoniera

La gettoniera utilizzata prevede due modalità di interfacciamento: seriale e parallela; nella prima, sull’apposita linea d’uscita essa invia un certo numero di impulsi a seconda della moneta inserita, mentre nella modalità parallela (quella utilizzata nel nostro progetto) si appoggia a un’interfaccia a 6 pin, ognuno dei quali rappresenta un gruppo di monete. In quest’ultimo caso il pin corrispondente alla moneta riconosciuta viene portato a massa quando viene inserita una moneta appartenente ad un gruppo.

La scheda che abbiniamo alla gettoniera (vedete le due unità collegate nella Fig. 2) è sostanzialmente un’interfaccia tra utente e gettoniera dotata di 3 pulsanti, un dip-switch a 4 vie ed un jumper che permettono di configurare l’unità; inoltre la scheda legge lo stato delle uscite open-collector di cui è dotata la gettoniera e agisce di conseguenza sullo stato dei due relé di bordo.

I pulsanti, il dip-switch e il display costituiscono l’interfaccia utente, mentre la gettoniera è il blocco siglato U4 nello schema elettrico.

Il circuito viene governato dal microcontrollore U5, che è un PIC18F46K20 Microchip con architettura RISC ad 8 bit, 1kB di EEPROM dati, Flash di programma per istruzioni a 16 bit e capacità di calcolo fino a 16 MIPS, ottenuti con clock a 16 MHz; il clock può essere ottenuto dall’oscillatore interno (precisissimo e calibrato in fabbrica all’1%) sincronizzato da un quarzo esterno o funzionante in modo indipendente.

L’oscillatore è dotato di PLL e in teoria può funzionare fino a 64 MHz.

Come tutti i microcontrollori più recenti della Microchip, anche questo opera fra 1, 8 e 3,6V, non a caso nel circuito viene alimentato da un regolatore che fornisce 3,3 volt.

Fig. 2 L’insieme di gettoniera e scheda di interfaccia.

 

Il microcontrollore, dopo il power-on reset, inizializza i propri I/O impostando RB0÷RB5 come input dotati di pull-up per la lettura delle uscite della gettoniera ed RC7 come uscita utilizzata per la gestione dell’ingresso INI, che è l’ingresso di inibizione dell’accettatore di monete; INI, una volta attivato, impedisce che la gettoniera accetti monete anche se riconosciute e nel nostro caso serve per evitare che inserita una moneta, ne accetti altre sottraendole all’utente. Infatti, una volta avviata una certa temporizzazione il sistema non considera più i segnali forniti dalla gettoniera, quindi l’aggiunta di denaro verrebbe ignorata.

Le linee RC0÷RC6 vengono inizializzate come output e servono a gestire il display sul piano della visualizzazione delle immagini (4 bit più criteri E ed RS) e per quanto riguarda la retroilluminazione (RC6, che attraverso il transistor T1 accende i LED portando a massa la linea BL-, mentre BL+ è fissa a 5 volt).

Il display scelto è un “piccolo” 8 caratteri su due righe. Notate che sebbene il display funzioni a 5V, i suoi ingressi accettano anche livelli logici 0/3,3V forniti dalle linee di I/O del microcontrollore; questo ci risparmia l’utilizzo di traslatori di tensione.

Quanto alle linee RB6, RB7, RE3, dedicate alla lettura dei pulsanti P1, P2 e P3, abbiamo collegato a ciascuna un resistore di pull-up esterno terminante sul positivo dei 3,3 volt); le stesse sono ripetute sul connettore CNP, che permetterà a chi lo desidera di portare all’esterno i pulsanti.

Come input sono inizializzati anche gli I/O RA0÷RA3, in questo caso destinati alla lettura dello stato del dip-switch a 4 vie siglato DS1. Anche queste linee del microcontrollore, non potendo essere dotate internamente di pull-up, hanno ciascuna un resistore esterno collegato al +3,3V (si tratta di R15, R16, R17 ed R18).

Le linee RD0 e RD1 vengono inizializzate la prima come I/O bidirezionale e la seconda come output e sono dedicate all’interfacciamento via I²C-Bus con l’integrato RTC, vale a dire U3; questo integrato è un DS1307 e siccome funziona a 5V si è reso necessario l’adattatore di livelli formato dai MOSFET Q1 e Q2, i quali consentono di convertire in TTL gli impulsi forniti dal microcontrollore e in 0/3,3V quelli inviati dall’SDA dell’U3.

Prendendo in considerazione la linea bidirezionale, il funzionamento di questo traslatore si spiega così: quando SDA si trova a livello alto (5V) assicurato dal resistore di pull-up R2, il MOSFET Q1 è interdetto e la resistenza R1 mantiene il pin 19 del microcontrollore a 3,3V, determinando l’1 logico; invece quando SDA dell’U3 si porta a zero logico, attraverso il diodo di protezione del MOSFET la condizione passa sull’RD0 dei microcontrollore anche se il Q1 resta interdetto.

Vediamo ora come si comporta il traslatore quando è il micro a trasmettere dati verso l’RTC: un livello logico alto sul piedino 19 lascia interdetto il MOSFET e il suo diodo di protezione interno, ma determina ugualmente 1 logico sull’SDA dell’U3 in quanto a ciò provvede il resistore di pull-up R2; invece quando il microcontrollore trasmette lo zero logico, il MOSFET Q1 passa in conduzione perché il suo source si trova a zero volt e il gate è polarizzato dai 3,3V, quindi il drain trascina a zero la linea SDA dell’U3.

Ciò detto, spendiamo qualche riga per spiegare come funziona l’integrato Real Time Clock DS1307, che abbiamo voluto nel circuito per mantenere l’ora e la data di sistema senza far gravare questo compito sul microcontrollore Microchip; il DS1307 è un integrato della Maxim-Dallas contenente un contatore BCD (Binary Coded Decimal) a basso consumo, che conta secondi, minuti, ore, giorni, mesi e anni, provvisto di 56 byte di RAM statica non volatile; il componente determina automaticamente quali sono i mesi con meno di 31 giorni ed effettua la correzione per l’anno bisestile.

L’orologio può operare nelle modalità 12 o 24 ore, con indicazione delle ore antimeridiane (AM) e di quelle pomeridiane (PM). Le informazioni sull’ora e la data vengono collocate in un apposito registro e trasferite all’esterno al microcontrollore (su richiesta di quest’ultimo) mediante l’I²C-bus del quale il chip è provvisto (SDA ed SCL).

Oltre a ciò, il DS1307 dispone di un’uscita di clock programmabile che rende disponibile un’onda quadra ricavata dalla frequenza di clock dell’orologio (determinata, a sua volta, dal quarzo da 32,768 kHz collegato ai piedini 1 e 2) che, mediante un apposito divisore interno, può essere ridotta a 1 Hz, 4,096 kHz, 8,192 kHz (può anche fornire l’intero clock).

Il DS1307 dispone anche di un circuito di controllo in grado di verificare la mancanza o l’insufficienza dell’alimentazione principale (Vcc) e fare in modo che la tensione occorrente al proprio funzionamento venga prelevata dalla batteria di backup; nel nostro caso è una pila a bottone (BAT1) CR2032 da 3 V, che garantisce un’autonomia di circa 6 mesi in assenza di alimentazione e che si trova tra il piedino 3 (Vbat) e la massa (pin 4, ossia GND).

La sezione di controllo dell’alimentazione è dimensionata in modo da svolgere due compiti: preservare la memoria in cui sono contenuti i dati sull’ora e la data attuali e mantenere attivo il contatore dell’orologio. Il primo viene svolto conservando nella RAM non volatile le informazioni corrispondenti, mentre il secondo è espletato dall’alimentazione di riserva presa dalla pila collegata fra il piedino 3 e il 4.

La sezione di controllo dell’alimentazione interviene sulle altre funzioni del DS1307, bloccando la comunicazione con l’I²C-bus e la produzione dell’eventuale segnale di clock ausiliario SQW, in modo da minimizzare il consumo di energia. L’intervento della protezione avviene quando la tensione letta tra il piedino dell’alimentazione principale (8) e massa (4) è minore di 1,25 volte la tensione della pila.

Spiegata anche la sezione orologio, vediamo le uscite a relé, ognuna delle quali fa capo a una linea di I/O del microcontrollore inizializzata come output che pilota un transistor NPN montato ad emettitore comune, pilotato in base da un partitore resistivo (R9-R10 per T2 e R11-R20 per T3) e impiegato come interruttore statico.

Quando RA7 si porta a livello logico alto, manda in saturazione T2, il quale alimenta con il proprio collettore la bobina del relé RL1; idem per RE2, che quando passa ad uno logico fa saturare T3, il quale comanda l’attivazione del relé RL2.

Questi due relé ci permettono di attivare il servizio associato all’importo introdotto nella gettoniera (RL1) e di fornire un avviso acustico o d’altro genere in prossimità del tempo disponibile (RL2); in particolare, RL2 pulserà al ritmo di 1s/1s verso la fine del periodo disponibile segnandone lo scadere, a partire dal tempo che imposterete.

Notate che dello scambio di ciascun relé vengono resi disponibili solo i contatti C ed NO (usiamo quindi i due relé come semplici interruttori, invece che da deviatori…) e prevediamo la possibilità, per i carichi e le applicazioni che lo consentono, di alimentare gli stessi dalla scheda fornendo agli scambi la tensione prelevata dalla linea d’ingresso dell’alimentazione +V; la rispettiva funzionalità si abilita chiudendo i ponticelli JP01 e JP01S.

Passiamo adesso alla linea RA4 del microcontrollore, inizializzata come input e dotata di resistore di pull-up esterno (R19) che utilizziamo per leggere lo stato del jumper JPR.

Infine vediamo le linee RD2, RD3, RD4, RD5, collegate al connettore CNOUT, che è un’interfaccia attualmente non gestita dal firmware, disponibile a futuri sviluppi; il contatto 1 di tale connettore è riservato all’alimentazione di dispositivi e circuiti eventualmente collegati alla scheda, che può essere a 5 o 12 volt a seconda dell’impostazione del jumper JOUTV.

Terminiamo la descrizione dello schema elettrico con la sezione di alimentazione, che inizia con la morsettiera PWR, ai cui contatti + e – si deve applicare una tensione continua di valore compreso fra 12 e 14V (l’assorbimento massimo con relé e gettoniera attivati è circa 400 milliampere) che attraversa il diodo di protezione (evita danni al circuito in caso di inversione della polarità di alimentazione) e raggiunge la linea +V; da quest’ultima prendono tensione le bobine dei relé, la gettoniera, il jumper JOUTV ed il primo regolatore della catena, ossia U1, che è il classico 7805 il cui scopo è ricavare i 5 volt stabilizzati con i quali funzionano l’RTC e il display LCD (i 5V arrivano anche all’altro estremo del jumper JOUTV). Notate che i jumper delle uscite a relé ricevono tensione dal +PWR.

La tensione all’ingresso dell’U1 viene filtrata da C1 e C2, mentre C3 e C4 filtrano la linea dei 5 volt.

Nella catena di alimentazione abbiamo poi un secondo regolatore, U2, di tipo a basso drop-out (LD1086V33), che fornisce i 3,3 volt stabilizzati con cui vengono alimentati il microcontrollore, nonché i jumper e i dip-switch che lo contornano.

Tabella 1 Impostazioni dei dip switch.

L’interfaccia utente

Descritto lo schema elettrico, vediamo come funziona e in che modo si utilizza la nostra gettoniera a tempo; partiamo dal dip-switch a 4 vie SW1, che permette di impostare quanto esposto nella Tabella 1.
Di seguito descriviamo le funzioni corrispondenti.

Accumulo monete: se attivata, tale funzione consente di poter inserire più monete in modo da incrementare il timer, mentre se disattivata, una volta inserita una moneta bisognerà attendere la fine del tempo impostato per poterne inserire una nuova; in caso contrario ciò che verrà introdotto sarà espulso dalla gettoniera e non produrrà alcun impulso da parte delle uscite open-collector.

Funzione avvisatore acustico: quando attivo permette di ricevere un avviso acustico al di sotto del tempo impostato via menu in modo da avvisare l’utilizzatore della scadenza del servizio entro breve. L’avviso sarà ad intermittenza di un secondo e verrà sfruttata l’uscita “O1S” alla quale potrà essere connesso un qualsiasi tipo di avviso compatibile con le caratteristiche dell’uscita a relé fornita.

Funzione anti Black-Out: permette se attiva, di salvare in memoria il count-down del tempo, in questo modo se dovesse andare via la corrente, l’utilizzatore non perderà il credito in quanto potrà usufruirne immediatamente al ritorno della tensione di rete.

Il jumper JPR serve a scegliere la modalità di funzionamento; chiuso, abilita la modalità programmazione, mentre aperto attiva il normale utilizzo.
Nel caso che il jumper sia chiuso, premendo il tasto P1 si potrà accedere alla configurazione dell’ora, che anche se non fondamentale, potrebbe essere comoda su alcuni impianti.

Se invece, sempre a jumper chiuso, si premerà il tasto P3, si potrà configurare il tempo di attivazione dell’avvisatore e tutti i timer di ogni gruppo. La prima configurazione da fare sarà quella del tempo dell’avvisatore (tra 10 secondi e 50 secondi).

Per variare il valore premere P1 o P2 in modo da decrementare o incrementare quanto mostrato, invece premendo P3 verrà confermato quanto impostato e si passerà alla configurazione successiva, ovvero quella del timer per il gruppo 1. Ogni timer prevede in ordine, la configurazione delle ore, dei minuti e dei secondi.

Si passa dall’uno all’altro confermando l’impostazione, pertanto confermando le ore, si passerà ai minuti e poi ai secondi.

Terminate le impostazioni dei 6 timer, il tutto è pronto per l’utilizzo.

Sulla scheda di controllo sono poi presenti altri connettori e jumper che possono essere utili. Ad esempio il jumper JPO1 piuttosto che JPO1S permette di portare direttamente il 12V (presa prima del diodo di protezione alimentazione) sul contatto “C” del relé, pertanto in tal caso il carico se funzionante a 12V potrà essere collegato direttamente tra la massa di alimentazione e il contatto “N.O.” dove si troverà il 12V a relè eccitato.

Il ponticello JOUTV è sempre legato al connettore CNOUT, il quale permette di portare 5V o 12V sul pin +V di CNOUT.

Effettuate le dovute configurazioni, il jumper JPR può essere aperto in modo da impedire all’utente di accedere accidentalmente alle impostazioni.

Ora si potrà collegare la gettoniera alla scheda di controllo. Per collegarla non verrà sfruttato il connettore a 5 poli, pertanto si potrà scollegare tale connettore dalla gettoniera. Si dovrà invece collegare il connettore a 10 vie (5×2 vie) mediante cavo flat direttamente alla scheda di controllo sul connettore “U4”.

Si ricorda inoltre che il pulsante P3 durante il normale funzionamento (quindi non durante la modalità impostazioni) permette di mettere in pausa il timer e riattivarlo quando desiderato, in quanto il timer verrà congelato fino a nuova pressione del tasto P3. Se il tasto verrà premuto prima di inserire le monete, si porrà in pausa il timer, consentendo in ogni caso di caricare il credito e attivare l’uscita solo quando si è pronti premendo nuovamente il tasto P3.

Realizzazione pratica

Montate i componenti occorrenti ricordando che è previsto di utilizzare entrambe le facce del PCB: su quella superiore iniziate con le resistenze e i diodi, poi con il dip-switch e gli zoccoli per il DS1307 ed il microcontrollore, quindi montate il quarzo, cilindrico, che disporrete sdraiato per occupare meno spazio in altezza; sistemate i tre transistor e i condensatori non polarizzati, quindi i pin-strip per realizzare i jumper occorrenti e il connettore maschio da c.s. 2×5 poli a passo 2,54 mm.

A questo punto inserite e saldate i condensatori elettrolitici, il portapila per la CR2032, il trimmer multigiri verticale, i due relé e, infine, i regolatori di tensione, da posizionare entrambi nello stesso verso rivolti all’elettrolitico C6.

Passate quindi al lato opposto, dove inserirete i pulsanti (devono essere del tipo con perno attuatore lungo almeno 2 cm) saldandoli dal lato componenti, quindi due strip femmina da 8 poli a passo 2,54 mm (anche questi vanno saldati dal lato opposto del PCB…) nei quali innesterete il display tramite i pin strip che avrete avuto cura di saldarvi.

Fissate quindi il display mediante colonnine lunghe 3 mm, da avvitare dal lato componenti mediante viti 3MA.

Terminate le saldature inserite il DS1307 e il microcontrollore ognuno nel proprio zoccolo, ricordando di orientarli con il riferimento rivolto come mostrato nel disegno di disposizione componenti, al quale rimandiamo anche per il corretto orientamento di tutti i componenti polarizzati, vale a dire diodi, condensatori elettrolitici, transistor e regolatori di tensione.

Configurazione della gettoniera

Come prima cosa è necessario impostare la modalità di funzionamento in parallela, in quanto quella predefinita è la Seriale.

Per impostare la modalità dovete premere e tenere premuto il tasto “B” sulla gettoniera: quando sul display appare la scritta “AP” potete rilasciare il tasto e, a questo punto, premere più volte il tasto “A” fino a mostrare “A5”, quindi premere nuovamente “B” più volte fino a far comparire “02” sul display. Per confermare l’impostazione tenete premuto a lungo il tasto “A” fino a quando verrà mostrato “88” sul display, quindi rilasciatelo.

Impostata la modalità, andrà definita la larghezza dell’impulso prodotto da ciascuna uscita dell’interfaccia parallela, a 100 ms (il massimo impostabile) in modo da assicurarci che l’inserimento moneta venga intercettato dal microcontrollore.

Per fare questo premete e tenete premuto il tasto “B” sulla gettoniera; quando la scritta “AP” viene visualizzata sul display della gettoniera, rilasciate il tasto e poi premete più volte il tasto “A” fino a mostrare “A2”, quindi premete nuovamente “B” fino a fare comparire “04” sul display.

Per confermare, tenere premuto a lungo il tasto “A” fino a quando verrà mostrato “88” sul display, quindi rilasciatelo.

Ora non rimane che associare le monete alla gettoniera; più precisamente, ogni tipologia di moneta verrà associata ad un gruppo (i gruppi sono 6, ovvero da C1 a C6), cosicché a seconda del taglio inserito verrà attivato il pin Cx del gruppo corrispondente sulla gettoniera.

Visto che i gruppi sono 6, ad ognuno assoceremo una moneta:
Gruppo C1: € 0,05
Gruppo C2: € 0,10
Gruppo C3: € 0,20
Gruppo C4: € 0,50
Gruppo C5: € 1,00
Gruppo C6: € 2,00

Nell’eseguire la fase di memorizzazione va tenuto presente un aspetto molto importante, ovvero che essendo le monete realizzate in anni diversi, potrebbero avere caratteristiche fisiche pressoché simili ma non identiche se pur appartenenti alla stessa valuta, pertanto è importante procurarsi monete coniate in anni differenti in modo da memorizzarle tutte nella gettoniera.

La gettoniera prevede proprio la possibilità, per la stessa valuta di memorizzare 20 monete, così da garantire il riconoscimento praticamente di tutte quelle che potrebbero essere introdotte dal pubblico.

Se venisse memorizzata sempre la stessa moneta per 20 volte, si rischierebbe che una moneta coniata in anno differente potrebbe non essere riconosciuta.

Consigliamo quindi di procurarvi 20 monete (o quelle che avete: più sono, meglio è…) dello stesso taglio, ma coniate in anni differenti ed apprenderle tutte e 20.

La procedura di memorizzazione sarà la medesima per ogni gruppo di monete, quindi basterà effettuare più volte quanto descritto di seguito, scegliendo un gruppo differente: dopo avere alimentato la gettoniera con 12V mediante cavo in dotazione collegato al connettore 5 poli della gettoniera, premere e tenere premuto il tasto “A” sulla gettoniera.

Quando la scritta “CP” viene visualizzato sul display della gettoniera, rilasciare il tasto, a questo punto premere più volte il tasto “A” fino a mostrare “C1” (primo gruppo di monete), quindi premere più volte il tasto “B” per impostare il valore della moneta.

Il valore della moneta è più che altro una comodità, perché permette di visualizzare a display il valore della moneta inserita per avere un corretto riscontro.

Nel nostro caso dato che al gruppo C1 memorizzeremo la moneta da 5 centesimi, sarà necessario premere più volte il tasto “B” fino a mostrare “01” sul display della gettoniera.

A questo punto, assicurarsi che la fessura posta sotto la gettoniera (dove usciranno le monete) sia libera, quindi iniziare ad inserire le monete nella gettoniera per 20 volte, ma qualora non si abbia trovato 20 monete differenti, inserire più volte anche la stessa moneta.

Quando sul display comparirà la lettera “F” e verranno emessi tre “beep”, vorrà dire che sono state memorizzate tutte e 20 le monete.

Per passare al gruppo successivo bisogna premere di nuovo il tasto “A”, quindi verrà mostrato “C2” (secondo gruppo) e si potrà procedere alla memorizzazione delle monete da 10 centesimi, impostando come valore della moneta “02”.

Eseguite la procedura per tutti gli altri gruppi, ricordando che i valori che abbiamo deciso di impostare sono puramente indicativi; pertanto nulla vi vieta di scegliere altri valori in base all’applicazione cui destinerete il sistema.

Una volta memorizzate tutte le monete, la gettoniera temporizzata sarà pronta per l’utilizzo.

 

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.

Menu