Circuito per il blocco delle frequenze dannose (>15KHz) e ampli video VGA->RGB - PARTE 1

Area dedicata alle guide tecniche,consigli e suggerimenti.
Rispondi
Avatar utente
Barito
Extreme Arcader
Extreme Arcader
Messaggi: 1857
Iscritto il: 08/12/2015, 19:18
Reputation: 500

Circuito per il blocco delle frequenze dannose (>15KHz) e ampli video VGA->RGB - PARTE 1

Messaggio da Barito » 01/09/2016, 11:05

EDIT: se sei solo interessato alla realizzazione del circuito, vai direttamente alla PARTE 2 di questa guida; se vuoi invece vedere come il circuito sia stato pensato alle origini e come si sia evoluto, leggi il seguito [yes.gif]

Lurkando un po' in rete alla ricerca di info riguardo un possibile circuito di blocco delle frequenze di sincronia dannose per i nostri amati monitor a bassa risoluzione, mi sono imbattuto in questo ANTICO post di un certo Tim Worthington il quale, ben prima della nascita di schede di interfaccia apposite come JammASD, Jpac et simila, risolveva il problema con un proprio circuito.

Tengo a precisare che io non ho provato il circuito, ma ci sono molte informazioni utili che, prima che vengano perse, vorrei condividere con voi appassionati.

Ho preparato una traduzione molto alla buona, con commenti personali e una impostazione un po' diversa dall'originale, giusto per semplificare la lettura; inoltre, nell'articolo originale ci sono informazioni utili per un circuito di interfaccimaneto scart - monitor arcade (quindi un qualcosa di utile in caso si volesse collegare una consolle al cab) che qui non riporto.

Ultimo, ma non ultimo, ho scritto uno sketch che permette di sostituire il microcontrollore originario (12C508) con Arduino [weight_lift.gif]

Circuito VGA to Monitor Arcade

Questo circuito permette di bloccare le frequenze di sincronia dannose in ingresso al monitor arcade a risoluzione standard (frequenza di oscillazione orizzontale 15KHz); inoltre, amplifica e controlla il segnale video RGB.

Credits: questo articolo è in parte estratto da uno scritto del 2005/2006 di Tim Worthington; l'articolo originale è reperibile al link http://members.optusnet.com.au/eviltim/ ... ga2arc.htm.
La parte su Arduino, invece, è originale.

Queste le caratteristiche dei segnali video di interesse nel nostro hobbie:
caratterstiche segnali video.png
In particolare, qui ci concentriamo sulleprime due colonne, quelle cioè relative al segnale video in uscita dal PC , e quello in uscita da una scheda jamma (e, di conseguenza, quello che si aspetta il nostro monitor arcade).
La differenza di ampiezza del segnale video è ciò a cui la prima parte del circuito fa fronte. La necessità di amplificare il segnale RGB nasce dal fatto che, come vedi confrontando le tabelline di qui sopra, la scheda video VGA in uscita ha una tensione di 0.7 Vpp, mentre il segnale RGB necessario in ingresso al monitor Arcade è tipicamente 2-5 Vpp.

Tieni comunque presente che l'uscita video di molte schede VGA aumenta fino a 1.4 Vpp in assenza di una resistenza di 75 Ohm in uscita. Questa tensione può essere sufficiente a pilotare certi monitor arcade senza bisogno di amplificazione, quindi in alcuni casi é possibile evitare questa parte del circuito. Un esempio su tutti: i segnali video delle ATI Radeon 9200 e 9250 (benchmark in ambito forzatura video) sono sufficientemente elevati da poter evitare l'amplificazione.
dcvid.png
Il circuito è costituito da tre circuiti amplificatori identici, uno per colore; ogni circuito amplificatore è costituito da due stadi: il primo è una configurazione base con un guadagno di circa “6” e impedenza di ingresso di circa 75 ohm; il secondo è un buffer, necessario a causa dell'alta resistenza in uscita dal primo stadio. I due diodi nello stadio di buffer servono ad abbassare il DC offset ad un livello accettabile.

Al posto dei BC548 può essere usato qualsiasi transistor NPN con beta > 100 (es. BC549).
Il circuito è dimensionato su un input video di 0.7 Vpp 75 ohm. Il segnale in uscita dal circuito ha una impedenza di 4 Ohm con un DC offset aggiunto di mezzo volt. Una impedenza così bassa (qualche Ohm) può causare problemi di eccessivo contrasto con alcuni monitor che si aspettano di essere collegati a sorgenti ad alta impedenza. Per risolvere basta aggiungere una resistenza in serie ad ogni uscita colore (prova a partire da resistenze da 270 ohm, a salire).

Parts list

Direct Coupled Amplifier Parts List

Codice: Seleziona tutto

Part                Value        Tolerance        Quantity
Transistor NPN      BC548        -                6
Diode               1N4148       -                6
Resistor            1k           1%               3
Resistor            130          1%               3
Resistor            75           1%               3
Resistor            220          5%               3
Resistor            180          1%               1
Resistor            680          1%               1
Resistor            1k8          5%               1
Electro Capacitor   220u         -                1
Electro Capacitor   10u          -                1


subs: BC548 = BC549, PN100, 2N3904 or 2SC1815
1N4148 = 1N914, any fast signal diode[/size]

Leggevo che esiste una mod per N64 che sfrutta un ampli video THS7314 o THS7374... il vantaggio dell'uso di questo integrato sarebbe la riduzione DRASTICA di saldature necessarie (parliamo di una robetta tipo >>questa<<).
EDIT : TEST ESEGUITI E NUOVO CIRCUITO DISPONIBILE! VEDI Circuito per il blocco delle frequenze dannose (>15KHz) e ampli video VGA->RGB - PARTE 2

Questo primo circuito può essere esteso alla seconda funzione più utile nell'interfacciamento di un PC ad un monitor arcade a bassa risoluzione: il blocco delle frequenze di sincronia potenzialmente dannose (frequenze > 15 Khz).
Il circuito è molto semplice, ma necessita dell'uso di un microcontrollore, il quale richiede di essere programmato tramite apposito programmatore.
dcvidimod.png
In buona sostanza, il microcontrollore monitorizza la frequenza di sync orizzontale e tramite un operazionale “AND” (74LS08, IC2 in figura) permette o meno il passaggio dei due segnali di sync, orizzontale e verticale.
Il passaggio dei sync è permesso per fequenze di sync orizzontale < 17KHz; contemporaneamente, in caso di frequenze di sync orizzontale dannose blocca i segnali video (blanking) mandando in saturazione la base di Q7.
Nota che questo circuito è in grado di far passare un segnale di sync sia positivo (col multimetro misureresti tensioni di 0-1V essendo il segnale vero e proprio troppo rapido per essere registrato dal multimetro) sia negativo (tensioni di 4-5 V col multimetro). In sostanza, quale che sia la polarità del segnale di sync in uscita dalla scheda video, questa è mantenuta in uscita del circuito di blocco frequenze.
Un LED (LED1) si accende quando le frequenze di sync e amplificatori video sono BLOCCATI.

Questo il codice sorgente del programma (aprilo in blocco note e salvalo come “vgastop.asm” senza virgolette):

Codice: Seleziona tutto

        title   "VGA/15khz RGB detector by Tim Worthington"
        ; 15/7/04
        ; pin 5 = Horizontal sync input
        ; pin 6 = Logic output (high < 17KHz > low)
        ; pin 7 = inverted logic output (low < 17KHz > high)
        ; pin 2 = same as pin 7

                processor       12c509
                __config 0xfea
w               equ     0
f               equ     1
gpio            equ     0x06
tmr0            equ     0x01
cycount         equ     0x0c
status          equ     0x03

                org     0x000
                movlw   b'10101000'
                option
                movlw   b'00001100'
                tris    gpio
                clrf    gpio

start           clrf    tmr0
wait            btfss   tmr0, 1         ;wait for a h-sync pulse
                goto    wait
                clrf    cycount
                clrf    tmr0
do              incf    cycount, f      ;increase cycount every 4 uS
                btfss   tmr0, 3         ;count 8 h-sync pulses
                goto    do
                movlw   d'116'          ;h-sync_cut_off(in uS) * h-sync_pulses_counted / cycount_time(in uS)
                                        ;58(17.2khz) * 8 / 4
                subwf   cycount, w
                btfss   status, 0
                goto    block
                movlw   b'00000010'
                movwf   gpio            ;pass
                goto    start
block           movlw   b'00100001'
                movwf   gpio            ;block
                goto    start
                end     
Questo il file binario (hex) per la programmazione del microcontrollore (salvalo come “vgastop.hex” senza virgolette).

Codice: Seleziona tutto

:10000000A80C02000C0C0600660061002107060A1D
:100010006C006100AC0261070A0A740C8C000307D3
:0E002000140A020C2600050A210C2600050A0F
:021FFE00EA0FE8
:00000001FF
Nel caso il segnale di sincronia in uscita dalla scheda video fosse positivo e tu lo volessi rendere negativo, potresti porre in uscita dalla scheda video o dal circuito di blocco frequenze un semplice circuito tipo:
syncfix.png
Per rendere composito il segnale di sync (negativo) in uscita dal circuito di blocco frequenze, puoi usare un circuito tipo:
syncadd.png
Nota che il segnale di sync in ingresso in questo ultimo circuito DEVE essere NEGATIVO.

Circuito di blocco frequenze di sync dannose con arduino
La parte del microcontrollore, forse la più antipatica dato che serve un programmatore apposta per farlo funzionare, può essere resa molto più accessibile utilizzando arduino.
Per i miei test ho usato un arduino nano, quindi non il "solito" arduino Leonardo, per il semplice fatto che non ci serve qui emulare una tastiera o un joystick. Se stai usando Arduino come interfaccia PC-Cab e ti avanzano pin, COMUNQUE fai fare queste operazioni ad una seconda Arduino perchè faremo un campionamento di frequenza che richiede un certo tempo e fintanto che viene eseguito, blocca tutte le altre funzioni. Non guasta il fatto che una arduino nano (o UNO, va benissimo lo stesso) costa meno della metà di una Leonardo (tipo due euro la cinesina!), quindi nel caso fossi interessato al solo blocco frequenze una Leo sarebbe sprecata.

Lo schema di qui sopra, diventa:
dcvidimodarduino.png
Il principio di funzionamento è il medesimo del circuito che abbiamo visto prima, eccetto il LED che ora è controllato direttamente dal microcontrollore e ci dice quando la frequenza NON è dannosa (vabbè, scelta mia, niente di che).
Come vedi ho cambiato qualche pin rispetto il progetto originario, ma puoi cambiarli come vuoi (fermo restando che meglio non usare i pin 0 e 1 di arduino).

Lo sketch da utilizzare è il seguente:

Codice: Seleziona tutto

//Questo sketch permette di monitorare la frequenza di sync
//orizzontale in uscita da una scheda video, e bloccarla nel caso
//fosse dannosa per un monitor a bassa risoluzione (15KHz).
//il circuito compelssivo prevede l'uso di un operazionale AND
//tipo 74LS08.
//
//by Barito 2016

const int HSyncPin = 3; //PIN di controllo frequenza
const int outSyncPin = 5;//PIN di abilitazione/blocco sync
const int ledPin = 13;//PIN led di controllo (opzionale)
const int videoPin = 7;//PIN di abilitazione/blocco video
const int samples = 5000;//numero di misure

int samplesm;//numero di misure su cui mediare il segnale

//31KHz  -> 32 us
//25KHz -> 40 us
//15KHz -> 66 us
unsigned long periodoSum = 0;
unsigned long periodoIst = 0;
unsigned long periodoMedio=0;
unsigned long FREQKHz=0;

int DEBUG=0;

void setup(){

  pinMode(HSyncPin, INPUT);
  pinMode(ledPin, OUTPUT);
  pinMode(outSyncPin, OUTPUT);

if (DEBUG){
Serial.begin(9600);}

}

void loop(){

periodoSum = 0;  
samplesm = samples;
for(unsigned int i=0; i<samples; i++){
  periodoIst = pulseIn(HSyncPin,HIGH);
  if(periodoIst < 100 && periodoIst > 10){
  periodoSum += periodoIst;} 
  else {samplesm--;}
  periodoMedio = (periodoSum/samplesm)+5;}

FREQKHz=1000/periodoMedio;

if(FREQKHz<17){
  digitalWrite(outSyncPin, HIGH);
  digitalWrite(videoPin, LOW);
  digitalWrite(ledPin, HIGH);}
else {
  digitalWrite(outSyncPin, LOW);
  digitalWrite(videoPin, HIGH);
  digitalWrite(ledPin, LOW);}

if (DEBUG){
Serial.print("frequenza KHz:  ");
Serial.println(FREQKHz);
Serial.print("periodo us:  ");
Serial.println(periodoMedio);
}     

}//end loop
In questo codice ho usato una funzione che non avevamo ancora incontrato: PulseIn(). Questa permette di misurare la lunghezza di un impulso in microsecondi. Data la forma dell'onda di sync, quello che io ho imposto è la misurazione della parte HIGH dell'impulso di sync negativo (la parte più lunga), il filtraggio dei valori, il calcolo di una media su qualche migliaio di misurazioni "buone" e l'aggiunta di 5 microsecondi che sono più o meno la lunghezza dell'impulso di sync.
Questo metodo non ritorna un valore accurato della frequenza di sync, ma un valore che per i nostri fini è più che attendibile. Inoltre, funziona solo per sync negativo in uscita dalla scheda video (che, comunque, è quantomeno quello default delle ATI Radeon serie 92xx forzate con CRT emudrivers visto che i test li ho fatti con una 9200 senza altre modifiche).
Con sync positivo misura valori di frequenza di qualche centinaio di KHz, e lo blocca. Per sync positivo, comunque, bastano piccole modifiche allo sketch per farlo funzionare (il bello di Arduino!).

Ecco una foto del prototipo su breadboard
SAM_2616.JPG
Semplice semplice.

Bene, ma sta roba funziona?
Risposta non scontata: si, FUNZIONA!!
Ho usato un PC forzato a 15KHz con CRT emudriver e comparato i segnali in fase di boot (31 KHz) e su desktop (15Khz). Nessuna altra modifica.

Ecco alcuni valori di media sync registrati da Arduino in fase di boot...
SAM_2601.JPG
Come vedi i valori oscillano un po' in qualche caso (c'è un "27" li in alto) ma siamo chiaramente sopra i 15khz

Questi invece alcuni valori di media sync sul desktop...
SAM_2599.JPG
La prova del nove:

questo il segnale di sync in uscita dal 74LS08 in fase di boot misurato con l'oscilloscopio: encefalogramma piatto! [flexion.gif]
SAM_2605.JPG
ecco il segnale di sync sul desktop: un perfetto segnale di sync negativo a 15 KHz!
SAM_2594.JPG

Il periodo del segnale è di circa (il mio oscilloscopio è da combattimento, non viene calibrato almeno da 15 anni e la sonda che uso fa cagare) 64 micro secondi (1/0.000064 = 15625Hz) [2guns.gif]

VA ALLA PARTE 2 DELLA GUIDA
Non hai i permessi necessari per visualizzare i file allegati in questo messaggio.
Non é vero che siamo quello che mangiamo: siamo quello che non dimentichiamo.


Avatar utente
giuppo
Site Admin
Site Admin
Messaggi: 3316
Iscritto il: 03/11/2015, 7:46
Medaglie: 28
Reputation: 529
Località: San Salvo
Nazione: Italia
:
Medaglia d'oro Medaglia d'argento Medaglia di bronzo Medaglia di legno I - Team Battle Challengebuster Maestro Yoda

Re: Assemblaggio di un circuito per il blocco delle frequenze dannose (>15KHz)

Messaggio da giuppo » 01/09/2016, 12:14

Barito sei il top [up.gif]
Arcademania the forum around you


Avatar utente
Barito
Extreme Arcader
Extreme Arcader
Messaggi: 1857
Iscritto il: 08/12/2015, 19:18
Reputation: 500

Re: Assemblaggio di un circuito per il blocco delle frequenze dannose (>15KHz)

Messaggio da Barito » 01/09/2016, 12:18

Grazie, ma in questo caso di mio c'é poco (arduino a parte) ;)
Non é vero che siamo quello che mangiamo: siamo quello che non dimentichiamo.


Avatar utente
bisus
Arcade Maniac
Arcade Maniac
Messaggi: 2924
Iscritto il: 03/11/2015, 2:16
Reputation: 486
Località: Firenze
Contatta:

Re: Assemblaggio di un circuito per il blocco delle frequenze dannose (>15KHz)

Messaggio da bisus » 01/09/2016, 19:45

questo è un progetto che cercavo da tempo, purtroppo non mi sembra alla mia portata ....
Segnalazioni problemi Forum
Non esitate a contattarmi in privato se doveste avere problemi sul forum http://www.arcademania.eu
grazie


Avatar utente
Barito
Extreme Arcader
Extreme Arcader
Messaggi: 1857
Iscritto il: 08/12/2015, 19:18
Reputation: 500

Re: Assemblaggio di un circuito per il blocco delle frequenze dannose (>15KHz)

Messaggio da Barito » 01/09/2016, 20:08

É più semplice di quanto sembri. La parte di ampli video é lunga da preparare su millefori, ma a ben vedere son tre circuiti identici (e, come dicevo, può pure essere che non serva!); quella di blocco frequenze una volta resa con arduino sarà molto "domestica" e semplicissima da realizzare (una decina di saldature, forse meno, e l'upload di uno sketch dal proprio PC: niente programmatori esterni o linguaggi di programmazione complicati).
Non é vero che siamo quello che mangiamo: siamo quello che non dimentichiamo.


Avatar utente
Barito
Extreme Arcader
Extreme Arcader
Messaggi: 1857
Iscritto il: 08/12/2015, 19:18
Reputation: 500

Re: Circuito per il blocco delle frequenze dannose (>15KHz) e ampli video VGA->RGB

Messaggio da Barito » 04/09/2016, 12:21

Ragazzi, novità in primo post: sono riuscito a sostituire il microcontrollore originario (12C508) con Arduino!

Adesso non avete più scuse ... [coolgun.gif]
Non é vero che siamo quello che mangiamo: siamo quello che non dimentichiamo.


Avatar utente
b4nd1t0
Extreme Arcader
Extreme Arcader
Messaggi: 2212
Iscritto il: 06/06/2016, 17:34
Medaglie: 8
Reputation: 526
Località: Roma
Nazione: Italia
:
Medaglia d'oro Medaglia di bronzo Medaglia di legno
Contatta:

Re: Circuito per il blocco delle frequenze dannose (>15KHz) e ampli video VGA->RGB

Messaggio da b4nd1t0 » 05/09/2016, 9:53

Grazie Barito, veramente interessante, sto facendo un ordine con un po' di arduino per iniziare a smanettare e questo sarà sicuramente un progetto da fare.
mame-wolfmame-hbmame cab friendly ed altri emu compilati da me -> vai quì

in bacheca uso wolfmame 0.167 (e mo è rimasto solo masez! [on_eek.gif] )


Dexther
Gamer
Gamer
Messaggi: 120
Iscritto il: 23/09/2016, 21:38
Reputation: 0

Re: Circuito per il blocco delle frequenze dannose (>15KHz) e ampli video VGA->RGB - PARTE 1

Messaggio da Dexther » 17/09/2017, 15:57

scusa la domanda scema. ma cosi facendo non ho bisogno di nulla per usare un pc vga con una scart su crt ?


Avatar utente
Barito
Extreme Arcader
Extreme Arcader
Messaggi: 1857
Iscritto il: 08/12/2015, 19:18
Reputation: 500

Re: Circuito per il blocco delle frequenze dannose (>15KHz) e ampli video VGA->RGB - PARTE 1

Messaggio da Barito » 17/09/2017, 19:24

Serve comunque un software per la forzatura a 15KHz
Non é vero che siamo quello che mangiamo: siamo quello che non dimentichiamo.


Dexther
Gamer
Gamer
Messaggi: 120
Iscritto il: 23/09/2016, 21:38
Reputation: 0

Re: Circuito per il blocco delle frequenze dannose (>15KHz) e ampli video VGA->RGB - PARTE 1

Messaggio da Dexther » 19/09/2017, 21:32

dici che potrei usare qualche software per windows 10 ?


Avatar utente
Barito
Extreme Arcader
Extreme Arcader
Messaggi: 1857
Iscritto il: 08/12/2015, 19:18
Reputation: 500

Re: Circuito per il blocco delle frequenze dannose (>15KHz) e ampli video VGA->RGB - PARTE 1

Messaggio da Barito » 19/09/2017, 21:55

Certo: puoi usare i CRT emudrivers di Calamity su win 10.
Non é vero che siamo quello che mangiamo: siamo quello che non dimentichiamo.


Rispondi

Chi c’è in linea

Visitano il forum: Nessuno e 2 ospiti