Encoder e Interfaccia

Panoramica Generale

Partiamo distinguendo le due categorie

L’encoder, o codificatore, è un componente elettronico digitale. La funzione logica dell’encoder standard, consiste nel presentare alla sua uscita un determinato codice a seconda dell’ingresso attivato

L’interfaccia è il componente fisico o logico che permette a due o più sistemi elettronici di comunicare e interagire.
Interfacciare vuol dire quindi collegare, seguendo un formato standard che consenta lo scambio di dati, due o più dispositivi eterogenei in modo da permettere loro lo scambio di informazioni.

wikipedia

Encoder

Un Encoder, nella pratica, codifica per il sistema dei valori in ingresso rendendoli utilizzabili dal sistema.
L’esempio più semplice è il classico mouse del computer.
All’interno vi sono due encoder, uno per asse, che leggono la rotazione di un disco mosso dalla palla del mouse

Sullo stesso principio si basano gli spinner e le trackball che possiamo trovare nei nostri amati “cassoni”.

Spinner

In queste interfacce abbiamo la necessità di ruotare la manopola senza un fine corsa.
Serve necessariamente un encoder di tipo ottico.
Vi sarà, per tanto, un disco forato sull’asse dello spinner che verrà fatto ruotare con il movimento del controller e verrà rilevata la velocità e la direzione di rotazione dai sensori.
Esistono diversi tipi di encoder rotativi: Scansione ottica riflessiva, ottico di tipo trasmissivo, lineari o assoluti.

Quello che interessa a noi è solamente interfacciare la lettura al pc.
Se si acquista uno spinner studiato per essere collegato al computer avrà già un encoder usb, altrimenti andrà collegato ad una interfaccia che permetta di elaborare i dati.

Trackball

Sullo stesso principio si basa la Trackball. Pensandoci non è altro che un mouse rovesciato.
Abbiamo, solitamente, due encoder per asse e un rotante di guida.
Lo spostamento asse X e Y viene quindi gestito in modo autonomo e combinato dal nostro utilizzatore, che sia un pc, una pcb o uno strumento di lavoro.

Come possiamo notare il principio è identico a quello di un mouse.

Per entrambi i controller, quando non sono predisposti per essere utilizzati direttamente dal nostro pc, si renderà indispensabile l’uso di una interfaccia in grado di gestirli traducendone i segnali in dati leggibili dal nostro sistema.

Qui un progetto di un utente di ArcadeItalia che ha ricreato una trackball utilizzando un mouse

Volante

Questi controlli si differenziano in due categorie: a 270° o 360°
Quelli a 360° sono i volanti senza fine corsa, per cui possono ruotare all’infinito senza bloccarsi.
L’esempio più clamoroso in ambito Arcade sono i vari Super Sprint ( a 3 volanti ) e Championship Sprint (a 2 volanti ), noti per il girare vorticoso dei comandi nel corso del gioco.

In questo caso il volante e di tipo 360°, senza fine. All’interno avrà quindi un encoder incrementale ottico a disco forato, esattamente come uno Spinner !

In altri casi il volante non è libero di girare ma è vincolato in un angolo di 270°. La lettura avverrà attraverso un potenziometro.

Un potenziometro varia la resistenza al ruotare della manopola. Fondamentalmente esso è costituito da uno strato di materiale ad alta resistenza elettrica, sopra il quale si muove un contatto strisciante: spostando il contatto mobile è possibile ottenere valori diversi di resistenza, misurabili fra l’inizio dello strato resistivo ed il contatto stesso.
Prendendo come +5v nel contatto 1, massa sul contatto 3 e come valore di misura in contatto 2 avremo che al ruotare di S verso gli estremi, si avrà un aumento o una diminuzione della resistenza nel contatto 2, andando a variare il valore di potenza letto nello contatto centrale.
Prelevando il valore centrale e un riferimento potrò sapere se il mio valore aumenta o diminuisce e quindi sapere in che direzione mi sto spostando rispetto al centro.

Pedali

Acceleratore o freno, il pedale ha due modalità: a potenziometro, come visto sopra per il volante a 270°, oppure a microswitch.
Avrò quindi un valore variabile e modulabile nel primo caso, mentre avrò un contatto On-Off nel secondo

È possibile modificare il pedale in modo che abbia sia il potenziometro che il micro, oppure agire lato software.

Cambio

Parlando di volante, viene in mente sicuramente il cambio.
Come funzionano ?
Esistono diversi tipi di cambio.
Il più semplice è il 2 vie On-Off, come quello su outrun.

Il funzionamento è molto semplice: marcia “Low” micro aperto, marcia “Hi” micro chiuso.
Questo genere di cambio presenta un problema su Mame, per il quale è necessario disattivare il “toggle”

<system name=”outrun”>
        <input>
            <port tag=”:SERVICE” type=”P1_BUTTON1″ mask=”16″ defvalue=”0″ toggle=”no”>
            </port>
        </input>
    </system>

Opzione cambio a 2 vie

Questo accade perché nel mame i comandi sono emulati da una tastiera, per tanto quando si preme il tasto di cambio marcia, si passa dalla marcia Low alla Hi – o viceversa – e si cambia stato quando si preme nuovamente il tasto configurato per il cambio.
Disabilitando l’opzione Toggle, aggiungendo quindi nel file di .cfg del gioco la parte in grassetto, si avrà un funzionamento identico a quello del cambio reale, cambiando stato con la pressione o il rilascio del micro.

Similmente il cambio sequenziale ha due micro, uno per marcia, ma ad ogni cambio ritorna in posizione di ‘folle’

Settati correttamente i due pulsanti per aumentare o calare la marcia saremo già pronti per usare il cambio.

Le cose si complicano con il cambio a 4 o più marce.
In questo caso una combinazione di micro darà la marcia in uso

Sw1Sw2Marcia
OffOffPrima
OnOffSeconda
OnOnTerza
OffOnQuarta
Tabella di esempio cambio a 4 marce – 2 microswitch

Qui è necessario costruirsi una interfaccia o un programma che gestisca gli input.

Nel Topic Conversione Sega Rally di AndreaIta è possibile vedere come si può interpretare la tabella sopra attraverso degli integrati, creando un segnale da codificare con una interfaccia per il pc.


Interfaccia

Abbiamo visto vari comandi che possiamo trovare in un cab, ma come possiamo utilizzarli con il pc?
Tramite le schede costruite per gestire gli encoder che abbiamo visto.

Interfacce Ultimarc

Le schede marchiate Ultimarc sono interfacce costruite per venire incontro alle mille esigenze di chi vuole trasformare un Cabinet in MameCab.
Sul sito del produttore https://www.ultimarc.com/ potete trovare gli ultimi modelli e vederne le caratteristiche.
Solitamente una Jpac va bene per un cab con comandi classici – joystick e pulsanti, mentre per Spinner, Trackball o Volante sarà necessario controllare quale scheda legga i dati degli encoder in nostro possesso.

Jpac

Il collegamento è molto semplice: video dal pc, cavo usb dalla tastiera da una parte e connettore jamma dall’altra.

Caratteristiche

– Ingressi completamente protetti contro scariche statiche e connessioni inverse, supporta 3 connessioni JAMMA extra (Tilt, Service SW e Test)
– Supporto porte per monete da 12 volt.
– Set di codici chiave completamente programmabile. Memorizzato anche dopo lo spegnimento.
– Doppia interfaccia USB o tastiera.
– Supporta il cablaggio LED preassemblato I-PAC opzionale con 3 LED di montaggio a pannello che emulano le luci della tastiera.
– Inserire le spine nella presa della tastiera sul PC o sulla porta USB.
– Il LED di autotest fornisce un controllo istantaneo di tutti i cavi. Può indicare quale, se presente, input ha un problema.
– Nessuna alimentazione separata necessario.
– Non utilizza una matrice – nessun ghost (blocco). Tutti gli input sono completamente separati e generano il proprio interrupt: questo è il metodo più veloce possibile.
– Non utilizza un metodo di scansione che causa un ritardo variabile.
– Utilizza i tasti MAME standard oppure puoi programmare il tuo set di caratteri.
– Funzioni di spostamento. Tenendo premuto “Start1” e premendo altri pulsanti si invia un intervallo di codici per le funzioni MAME come “escape”, “Coin 1”, “tab”, “enter”. Ciò significa che non sono necessari pulsanti aggiuntivi sull’mobile. In modalità programmabile qualsiasi input può essere il tasto shift e tutti i tasti possono essere programmati con un comando “shiftato”.
– Connettore per tastiera ordinaria che può essere utilizzato insieme ai controlli se necessario.
– Non sono necessari driver speciali. I driver USB sono i driver Windows generici.
– Connettore per ingresso VGA dalla scheda VGA del PC. invia il segnale del pc attraverso il connettore JAMMA per il collegamento al monitor arcade.
– L’amplificatore video di bordo aumenta il segnale ai livelli di monitor arcade standard. Utilizza un chip amplificatore video a larghezza di banda elevata.
– Il microcontrollore personalizzato consente di inviare segnali di sincronizzazione al monitor solo se si trovano nell’intervallo corretto per cui è progettato il monitor. Evita frequenze dannose per il monitor.
– Il circuito di sincronizzazione converte anche sincronizzazioni orizzontali e verticali separate in sincronizzazione composita. Può gestire la sincronizzazione verticale sia positiva che negativa.
– Se necessario, è possibile dividere a metà un segnale VGA a 31 KHz in modo da visualizzare un’immagine stabile su un monitor arcade a 15 KHz. Utile per controllare l’avanzamento e la configurazione dell’avvio (non per l’uso dell’applicazione). Smette automaticamente di dividere il segnale quando rileva che una corretta velocità di 15 Khz viene inviata dal PC.
– Gestisce l’audio verso il Jamma utilizzando due connettori a vite come ingresso

Ipac

Ne esistono diverse versioni con caratteristiche diverse.
Una Ipac ‘base’ gestisce gli input come se fosse una tastiera, la Apac come se fossero joypad analogico/digitale

Dal sito del produttore:
L’I-PAC è una gamma di schede che consentono il collegamento di controlli arcade come pulsanti e joystick a una porta della tastiera o una porta USB su una scheda madre del PC. È stato progettato per l’emulatore MAME ma può essere utilizzato con altri emulatori o qualsiasi software che richieda input da tastiera o controller di gioco.
È progettato per essere utilizzato all’interno di un cabinet Arcade con la scheda madre del PC montata all’interno, ma potrebbe essere facilmente utilizzato con una semplice plancia comandi.
L’I-PAC 2 ha 32 ingressi. Sono tutti programmabili e sono contrassegnati come 2 joystick, 8 pulsanti ciascuno, più i tasti di controllo coin1, coin2, start1, start2 e ESC. È possibile assegnare qualsiasi input come tasto Maiusc (Shift) per accedere a un set di codici alternativo. Questa scheda ha anche un connettore che può essere configurato per collegare la nostra trackball e spinner o per le nostre interfacce della console.
I tasti di controllo MAME sono assegnati di default agli ingressi “A” e “B”.
L’I-PAC 4 ha 56 ingressi. Tutti programmabili e contrassegnati come 4 joystick, 8 pulsanti ciascuno più moneta 1,2,3,4 e inizio 1,2,3,4. È possibile assegnare qualsiasi input come tasto Maiusc (Shift) per accedere a set di codici alternativo.

Mini-PAC Standard – Mini-PAC Opti

La Mini-Pac, nelle due versioni Standard o Opti sono una IPac in miniatura.
Gestiscono 32 ingressi, non necessitano di alimentazione esterna e hanno il pregio di essere piccole.

Sono riprogrammabili e hanno la funzione Shift
La versione MiniPAC – Opti può gestire anche Spinner e Trackball.

U-HID / U-HID Nano / BlueHID

Altre interfacce ed Encoder, tutte programmabili e che possono gestire comandi analogici o digiatali, spinner, trackball, joypad ..


InterfacceASD

Italiane, di qualità ottima, nate sul nostro Forum, costruite seguendo i consigli e le necessità degli utenti nelle varie configurazioni.

JammASD

La JammASD ha molti punti di forza
– blocca le frequenza dannose
– ha un amplificatore video
– ha un amplificatore audio
– è alimentata via usb
– già preconfigurata per il mame
– completamente riprogrammabile ed è vista come una tastiera
– nessun ritardo o blocchi causati dalla pressione di più tasti e tante altre peculiarità che potete leggere nella brochure della scheda

Il cuore di JammASD è un potente microcontrollore (1) che si occupa delle assegnazioni dei tasti e della comunicazione con il PC tramite porta PS/2. Un secondo microcontrollore (2) combina i due sincronismi video in un unico sincronismo composito e controlla che questo non vada fuori frequenza; ai suddetti si affiancano un amplificatore video a larga banda con il compito di portare i segnali di uscita dalla vostra scheda video a livelli compatibili con il monitor ed un amplificatore audio stereo (4).
JammASD prevede inoltre 3 uscite di tipo “open collector” (5) per commutare carichi esterni con portata fino a 100 mA ed un connettore RCA (6) per il collegamento delle pistole lightgun.

Sezione video:
– La scheda JammASD è stata corredata di un amplificatore a larga banda adibito a gestire il debole segnale video uscente dalle schede video dei PC (0,7 volt su 75Ohm) portandolo a 3,5V con uscita a bassa impedenza; questo permette di avere immagini migliori e piu realistiche.

– Il microcontrollore miscela i segnali di sync restituendo al monitor un sync composito di tipo negativo indipendentemente dalla polarità dei sync di ingresso!

– la scheda prevede un esclusivo sistema di protezione per il vostro monitor, infatti tramite i jumper (7) è possibile selezionare la frequenza di scansione orizzontale con la quale esso lavora.
Se l’uscita del vostro pc è ad una frequenza diversa da quella settata il microcontrollore smette di trasferire il sincronismo composito e disabilita l’amplificatore video che oscurerà il monitor evitando la visione dell’immagine che scorre in orizzontale senza controllo; questo non solo evita di mostrare sgradevoli immagini fuori frequenza ma previene anche possibili guasti al vostro monitor.

Tra i settaggi disponibili c’è:
1) 15Khz;
2) 15Khz/31Khz(immagine sdoppiata per diagnostica)
3) 25Khz
4) nessun controllo per i monitor multifrequenza

NB: JammASD non converte le frequenze uscenti dalla vostra scheda video; la conversione deve effettuarla il vostro PC con un sistema software o hardware.

SmartASD

Caratteristiche
La scheda viene vista dal PC come un dispositivo HID composito (quindi utilizza i driver di sistema) contenente una tastiera, un mouse e 2 joystick (8 assi, 32 pulsanti e 8 direzioni hatswitch/POV ciascuno).
È composta da 32 ingressi digitali e 8 ingressi analogici. 8 ingressi digitali dei 32 originali, possono essere utilizzati per collegare 4 encoder ottici. Ognuno degli ingressi può essere associato a una o più funzioni delle 4 periferiche integrate ed il tutto viene configurato tramite 100 rules a disposizione.
Tutti gli ingressi digitali possono diventare anche uscite ma a bassa corrente, quindi hanno bisogno di un circuito esterno per pilotare qualcosa, tipo led, relè. per pilotare le uscite ci sarà una libreria dll oppure è possibile farlo direttamente tramite un HID output report.

Software
Di seguito i file del software di configurazione. Il secondo è lo stesso della JammASD, quindi non è necessario se è già installato sul PC.

Mirror1: SmartASDConfig RuntimeEngine

Options
Il software prevede anche delle opzioni a riga di comando per automatizzare i processi
-device name
permette il cambio del nome della scheda. utile quando sul sistema ne vengono utilizzate più di una
-config file
permette di caricare al volo una configurazione salvata in precedenza su file
-flash
permette di salvare su memoria flash non volatile l’attuale configurazione della scheda
-reset
permette di effettuare un reset della scheda
-output 1133557799BBDDFF
permette di cambiare lo stato delle uscite. si tratta di 8 byte esadecimale, i primi 4 rappresentano lo stato delle 32 uscite, i restanti 4 rappresentano la maschera che indica a quali uscite vanno applicate
-enc F
permette l’azzeramento dei valori degli encoder. si tratta di una cifra decimale che indica quali dei 4 encoder resettare

nell’esempio seguente viene caricata la configurazione file.dat e resettati gli encoder 1 e 4
smartasd.exe -config file.dat -enc 9

Configurazione di default
D1->Keyboard->5
D2->Keyboard->1
D3->Keyboard->UP ARROW
D4->Keyboard->DOWN ARROW
D5->Keyboard->LEFT ARROW
D6->Keyboard->RIGHT ARROW
D7->Keyboard->LEFT CTRL
D8->Keyboard->LEFT ALT
D9->Keyboard->SPACE
D10->Keyboard->LEFT SHIFT
D11->Keyboard->Z
D12->Keyboard->X
D13->Keyboard->6
D14->Keyboard->2
D15->Keyboard->R
D16->Keyboard->F
D17->Keyboard->D
D18->Keyboard->G
D19->Keyboard->A
D20->Keyboard->S
D21->Keyboard->Q
D22->Keyboard->W
D23->Keyboard->I
D24->Keyboard->K

Output
Configurando i canali digitali come “Output” si possono pilotare carichi di vario genere. Un esempio reale è l’illuminazione dei pulsanti tramite il frontend FEEL dalla versione 1.7 in poi. C’è anche la possibilità di ricevere comandi da LEDBlinky tramite questo tool o da MameHooker tramite questo script.
I canali della scheda non possono erogare molta corrente quindi hanno bisogno di un driver di potenza. 

Ideale per connettere uno Spinner, come in questo Topic di TheBaro
Oppure un volante e tante altre periferiche come in questo progetto di Marcoqwerty


Interfacce Zero Delay

Sono interfacce cinesi, inizialmente di pessima fattura con parti saldate male o con falsi contatti. Ultimamente, visto il costo basso, se ne possono trovare anche di produttori più accorti.
Hanno il difetto di non avere spesso una documentazione correlata anche se il collegamento è molto semplice.
Si trovano spesso in kit preconfezionati. Vengono gestite come controller via usb, per tanto non necessitano di driver.
Sono spesso causa di problemi in quanto, se collegate in due o più ad un raspberry, vengono riconosciute come un unico controller e capita si invertano player1 e player2 o che configurando il secondo si vada a sovrascrivere la configurazione del primo.
Per ovviare a questo problema si devono collegare esattamente in egual modo, con lo stesso ordine, i cavetti dei bottoni ed il joystick. Configurando un player l’altro sarà già settato come il primo.

Encoder Inputs

  • 1 x 5 Pin Joystick Input
  • 1 x 10 Pin Joystick Input
  • 12 x Unmapped Button Inputs
  • 4 x Hardware Preset Button Input
  • AUTO – For autofire
  • TURBO – For rapidfire
  • CLR – Clears AUTO/TURBO
  • MODE – Sets thumb-joystick mode

XinMotek

Altra interfaccia piccola e versatile. Spesso utilizzata su Raspberry

Features:

  • USB 2.0 protocol, the response speed is faster than USB1.1;
  • MicroUSB jack for connecting any standard USB cable;
  • Compatible with win10/win8/win7/vista/XP/2000/98, Linux, PS3, Linux, MAC, Android, Raspberry Pi;
  • NO support PS3 Home Button(PS button);
  • Supports Mode button for direction control switching between X/Y axes and Digital-pad;
  • Supports more push buttons;
  • Lead-free process;
  • Passed CE certification;
  • No soldering required;
  • Kit contains all the wires and USB cable;

Altre Schede Pc2Jamma

Esistono tante altre schede simili a quelle viste sin’ora.
Normalmente le funzioni base le hanno tutte, quindi ingresso video vga, audio tramite jack e controlli via usb con uscita su jamma.
Alcune sono programmabili, altre no.
Le ultime versioni non necessitano di driver in quanto viste come tastiera, ma può capitare di trovare ancora in vendita interfacce vecchie di anni.
L’importante è sapere cosa si sta comprando e cosa si vuole fare.


JVS e JVSPAC

La JvsPac interfaccia una Jvs ad un Pc.
La Jvs, a sua volta, interfaccia una sistema Noami al Jamma.

È spiegato brevemente a questo indirizzo


JammaPi

Menzione speciale per la JammaPi. Una scheda nata per interfacciare il Raspberry al Jamma. È possibile uscire su pettine jamma con comandi audio e video. Potenziometri per regolare il 3 canali video, possibilità di uscire anche su scart o vga ( in base alla versione ) e morsettiera per l’audio.
Alimentazione esterna non necessaria.
Pagina FacebookPagina sul Forum