El DVD trobat

Fa molt de temps, vaig trobar un aparell de DVD literalment tirat per terra, al carrer. Estava al costat del contenidor, com si aquesta fos manera de desprendre’s d’un aparell electrònic! Consideracions ecològiques al marge, l’aparell no tenia gaire bona pinta: li havien desmuntat la tapa, que estava deformada; faltava el cable d’alimentació i la tapa de la safata i, evidentment, no tenia el comandament a distància. Tot i això, no cal dir que el vaig agafar i me’l vaig endur a casa. Em va semblar que potser el podria arreglar, i si més no en podria treure una bona colla de peces i components, abans de portar-ne les restes a la deixalleria, tal com es mereixia.

Un cop el vaig tenir sobre la taula, me’l vaig mirar. La marca era Philips, que sempre és garantia d’una certa qualitat; semblava força vell, no dels primers DVD que es devien fabricar, però tampoc prou modern com per reproduir DivX i tota aquesta sèrie de formats comprimits. El millor de tot era que tenia un bonic VFD (pantalla fluorescent de buit) amb caràcters alfanumèrics que podria recuperar si no l’aconseguia posar en marxa.

Ara faré un salt enrere en el temps de més de dos anys, per rememorar la reparació de l’aparell. En principi no tenia pensat explicar la reparació en aquest blog, de tan fàcil com va ser, però com que després la cosa no s’ha quedat aquí, la poso per tenir una primera presa de contacte amb el subjecte.

VIATGE AL PASSAT (LA REPARACIÓ)
Aixecant la tapa, m’adono que hi ha peces soltes a dins, i està ple de porqueria. És com si haguessin intentat arreglar l’aparell, ho haguessin deixat estar, i llavors l’haguessin fet servir de paperera. El netejo a fons i li faig una ullada amb calma: li falten uns quants cargols, la unitat del DVD està solta, i hi ha alguns cables desconnectats; també li falta el cable d’alimentació.

El que hi ha a dins no sembla massa complicat, si més no l’estructura general. Al frontal de l’aparell hi ha un parell de plaques, una de molt petita a l’esquerra només pel botó d’standby, i una de més gran a la dreta on hi ha el VFD i la resta de botons. Ja a l’interior, tenim la unitat a l’esquerra, una placa mare de control on hi ha tota la part digital i de connexions d’àudio i vídeo, i una font d’alimentació a la dreta, en una placa d’una sola cara. Connectar les plaques entre elles no suposa cap problema, per sort hi ha els cables amb els connectors, i a més són tots diferents. El cable pla que va del grup del làser a la placa mare està una mica malmès, però res que no es pugui solucionar amb unes tisores i unes pinces.

Ara que està tot connectat, podria fer una primera prova de funcionament, a veure fins a quin punt està mort, aquest trasto. Però hi ha un problema, com ja he dit no hi ha cable d’alimentació. I no és que l’hagin tallat o desconnectat, és que han arrencat el connector estirant el cable, de la manera més bèstia. Per veure fins a quin punt arriben els danys, i per arreglar-ho si puc, he de separar el circuit de la font de la carcassa de l’aparell.

Vist per sota, m’adono que la brutal estirada del cable ha malmès les pistes de la placa de la font, però no és res que no es solucioni amb el soldador i un parell de minuts. Agafo un cable amb clavilla europea que tenia per aquí i el soldo directament sota la placa, a les pistes, després d’engrandir amb una broca els forats que va deixar lliures el connector (els cables no passaven pels forats del connector). Ja tinc alimentació! Una ullada ràpida a aquesta zona de la placa, on hi podria haver problemes importants, no em deixa veure cap rastre d’espurnes ni cremades; fins i tot el fusible sembla en perfecte estat (i el tester ho confirma). A punt doncs per endollar-lo.

Només d’endollar-lo, l’aparell es posa en standby, i m’ho fa saber encenent un led vermell al frontal. Prement el botó corresponent, el pacient torna a la vida. M’alegra veure que la pantalla fluorescent funciona perfectament. Toco uns quants components per palpar la temperatura (sense ficar la mà als llocs on hi ha tensions perilloses, que ja sé el que em faig!), però res sembla escalfar-se massa. Va tot bé, de moment.

El problema apareix quan toco el botó d’obrir la safata, que no respon. La pantalla em dóna un missatge ben clar, «open», però res de res, la safata no es mou. Em sembla sentir un soroll que indica que hi ha un motor que està patint. Finalment, el trasto desisteix d’obrir-se i la pantalla em diu que no hi ha cap disc inserit. Em sembla que ja sé perquè el van llençar. El problema està localitzat a la unitat del disc, o sigui que vaig per feina.

Desendollo l’aparell, desconnecto la unitat de la resta de plaques i me la miro a fons. Els eixos dels motors estan un mica bruts, i això sempre pot provocar problemes, però no sembla la causa de que no s’obri. També hi ha una peça mòbil de la safata que pot necessitar lubricant, però tampoc sembla prou important. Al final detecto que hi ha una peça de plàstic de la safata que està mal posada, i que provoca que la safata s’encalli. Un lleuger moviment des de la part de sota i es posa a lloc amb un sonor «clec». Ara puc obrir i tancar la safata amb la mà, mentre que abans no podia, s’encallava. Sembla que això és tot, però cal provar-ho. Ja que hi sóc netejo els motors de cabells i pols, però la part del lubricant me l’estalvio, ja que la safata es mou fina com la seda.

Si hagués de fer una hipòtesi, diria que la causa de que la safata no sortís era aquesta peça mal posada, que crec que va quedar així després que la safata rebés alguna mena de força externa. Possiblement l’usuari va empènyer la safata massa fort quan estava extreta, o la va moure una mica de costat, o quelcom va impedir que sortís quan l’aparell l’estava expulsant. No és una avaria rara, us ho puc assegurar. Una vegada vaig arreglar una safata d’un CD que es va encallar quan estava extreta perquè es va tancar la porta de vidre de l’equip de música. I un amic meu va espatllar fa molts anys un vídeo VHS intentant treure una pel·lícula porno més ràpid del que l’aparell la feia sortir, amb les presses de veure que els seus pares entraven per la porta…

Va, prou històries i fem la prova, a veure si està arreglat o no… Funciona! Ho he provat amb un CD i un DVD, i en tots dos casos arrenca. Els discs giren amb normalitat i l’aparell dóna senyal (he hagut de connectar un TV a l’euroconnector per comprovar-ho), o sigui que es pot dir que està funcionant a ple rendiment. Ja només falta tornar-ho a muntar tot dins la carcassa, comprar un comandament a distància universal per quatre euros a la botiga dels xinos i ja ho tindré, un DVD per la cara.

RETORN AL PRESENT
Això hauria estat la reparació, simple i insulsa com poques. Ja us he dit que no valia la pena ni publicar-la, per això no ho vaig fer al seu moment. Per què ho he fet ara, doncs? Perquè dos anys després m’he adonat que no he fet servir l’aparell ni una sola vegada (no sóc gaire de comprar pelis ni d’anar al vídeo-club), només el tinc sota la TV de l’habitació col·leccionant pols i ocupant espai… O sigui que se’n va d’aquí, fora trastos. És hora de fer-ne alguna cosa.

De tot el que em pot oferir aquest aparell, només hi ha una cosa que m’interessa, i ja he dit abans quina era: la pantalla. Aquest display VFD té molt bona pinta, i m’encantaria incloure’l en algun dels meus propers projectes. Se m’acut que el podria connectar a un port USB de l’ordinador, i així podria veure el nom de la cançó que estic escoltant (moltes vegades només faig servir l’ordinador per escoltar música; llavors apago el monitor per no gastar tant, però tinc l’inconvenient que no puc veure els títols de les cançons, ja que tinc el reproductor d’MP3 en «random» sobre una carpeta d’uns 40Gb…), o el temps, o notificacions si tinc correus, les temperatures internes, els «twits» de la gent que segueixo (si tingués twitter), o quelcom així. A la mateixa placa de la pantalla hi ha el receptor infraroig pel comandament a distància, així que també podria tirar els temes endavant o enrere, canviar el volum, o potser el mode de visualització… ja veurem.


Si no ho tinc mal entès, però, hi pot haver un problema. Aquestes pantalles fan servir una tensió força alta per activar una mena de reixa que porten a dins. Això podria suposar haver de tenir una font d’alimentació especial, no seria tan fàcil com connectar-la als 5V de l’USB i ja està. Per suposat podria utilitzar la mateixa font del DVD, però n’heu vist la mida?

Pel control de la pantalla no crec que hi hagi cap problema insuperable, dins el DVD ja hi deu haver el xip controlador que se n’encarrega, d’això. Hi hauria de posar un Arduino o un micro semblant i programar-li les funcions. Caldria veure el protocol de comunicació entre la placa mare i aquest xip, aquí hi podria haver un altre problema. Si no és estàndar i ningú no l’ha descobert tocarà fer enginyeria inversa, i això vol dir moltes hores que no tinc. Com que tot això són suposicions, el millor que puc fer és encomanar-me a sant Google i a veure què passa…

He tingut sort! Per primera vegada des que em dedico a fer aquesta mena de coses, he trobat un manual de reparació de l’aparell, amb esquemes i circuits de tot plegat. Això m’ha permès identificar una colla de components i les connexions entre les plaques, cosa que serà molt útil i m’estalviarà molta feina. Com que he trobat el datasheet del xip que controla el display, m’estalviaré haver de desxifrar el protocol que us deia abans. Us deixo la documentació, per si us interessa.

Philips DVD625
Manual de l’usuari. Manual d’instruccions per saber com funciona, el mateix que et donen imprès quan et compres l’aparell.
Manual de reparació de l’aparell. Només pels ulls privilegiats del personal dels Serveis d’Asistència Tècnica. Conté informació molt valuosa per veure les connexions entre plaques, patillatges, referències de components, etc.

Xip controlador del VFD
Datasheet del PT6312 (Princeton). És el xip controlador que porta la placa de la pantalla. El datasheet em serà molt útil per conèixer el protocol de dades i ordres, i descobrir les connexions físiques amb la pantalla.
Datasheet de l’UPD16312 (NEC). Sembla que és compatible 100% amb l’altre xip. Me l’he baixat per si hi ha algun aspecte que no queda prou clar a l’altre datasheet.

Nota: Per suposat, aquests documents pertanyen a les seves respectives companyies, jo no en sóc l’autor ni hi tinc res a veure. Els poso aquí com a referència i res més. Penseu que els podeu trobar per la xarxa igual que he fet jo.

He començat a comprovar els esquemes amb el tester i he vist que tot es correspon. Malauradament, tal com suposava, hi ha una línia de tensió de -24V de la font cap a la pantalla que pot ser un problema. Després comprovaré de quanta corrent estem parlant, si no és gaire sempre puc muntar un circuit convertidor DC per pujar la tensió (boost converter) i resoldre el tema de l’espai. Però ara he vist que hi ha un altre problema, si vull fer servir aquesta mateixa font. Quan l’aparell rep alimentació, passa a mode standby, com ja us he explicat. Doncs bé, treure l’aparell d’aquest estat és feina de la placa mare, que rep el senyal del botó del frontal o del comandament via la placa de la pantalla (que porta integrat el receptor d’infrarojos) i reacciona en conseqüència. Aquesta reacció implica passar alguna mena de senyal a la font, que fins al moment només mantenia activa una línia de 5V de tensió que suposo que deu tenir molt poca capacitat de corrent (això és l’standby, no? Aturar la font perquè l’aparell gasti poc). El més sorprenent és que el microcontrolador principal de la placa mare sempre està activat amb aquesta línia de 5V, esperant despertar-se (suposo que es deu trobar en alguna mena de mode de baix consum) rebent alguna interrupció del botó frontal o del controlador de la pantalla (que controla alhora el receptor IR i també alguns botons, ho he confirmat amb el datasheet).

Evidentment si vull fer el projecte que us he dit no conservaré pas les tres plaques, seria absurd per mides i consum, o sigui que he de trobar la manera de treure la placa mare de l’equació. La font també la vull treure, però això ho deixo per més endavant; aquesta línia de tensió de -24V em pot donar algun problema, hi he d’anar pensant. De moment seguiré amb la font original del DVD, per tant he de trobar la manera de treure-la del mode standby.

Per tant la fulla de ruta d’aquí estant és:
1. Descobrir com treure la font del mode standby sense la intervenció de la placa mare.
2. Descobrir com controlar la pantalla sense la placa mare.

Sembla que ha arribat l’hora de pensar, tot plegat s’està convertint en una «menjada d’olla». Porto massa estona mirant datasheets, esquemes i manuals, i necessito acció. També m’he adonat que porto molta lletra seguida sense fotos, i per tant m’estic fent pesat. Hem de fer una pausa. És hora de fer una autòpsia.

L’AUTÒPSIA
Com no podia ser de cap altra manera, hi ha d’haver un cos damunt el marbre, sinó això no seria el Talleret, no? En aquest cas, la unitat de disc del DVD no la necessito per res, per tant ja tenim subjecte. Fem-li una ullada superficial.

A primera vista, només hi ha molt de plàstic negre inútil, i un parell de motors. Serà qüestió d’anar desmuntant i veure què apareix. El primer que es pot fer desaparèixer és aquesta placa de PCB que ho tapa tot i no serveix per a res, i llavors anar enretirant peces de plàstic mòbils. Una vegada desmuntada la safata, que no serveix per res, arribarem als motors i al grup de la lent i el làser.

Ja tenim una mica més clar el panorama. Apareix un tercer motor (són tots tres molt semblants), i ja es veu la lent. De moment tenim el cable amb els connectors, i una colla de material mecànic. Vaig primer per la peça gran de plàstic, i allibero els dos motors que hi ha. Per desgràcia, me’n carrego un fent palanca per fer saltar la peça de plàstic inútil que porta enganxada (massa fort) a l’eix. Si és que no aguanten res!

Desmuntar el grup de la lent sempre és fascinant per mi, a part de ser laboriós. És increïble la tecnologia que hi ha ficada en tant poc espai, i com s’ha anat refinant (i abaratint) amb el pas dels anys. Ja veieu que no hi ha gran cosa com a botí: molt material mecànic (molles, cargols normals i microscòpics, un eix, un engranatge, una corretja de goma, quatre «silent-blocks» contra les vibracions, etc.), tres imants molt petits i potents, els dos motors que ja us he dit, un polsador, cables i connectors, i el material òptic: dos mirallets petits, dues lents concentradores, i un làser invisible que -si mai descobreixo com fer-lo anar- només pot ser útil per fondre’m l’altra retina. Aquesta advertència ho diu prou clar, no?

El botí no és pas molt, però no n’esperava més, de fet, d’una simple unitat de DVD. Aquí el teniu.

EL PROJECTE
Ara que ja hem passat el parèntesi de la micro-autòpsia i ja estic més tranquil, podem tornar al tema que ens ocupa. Si recordeu on ho hem deixat, tinc pendents dues coses: el tema del control del display, i el problema del mode standby de la font.

Des d’un principi he pensat fer servir un Arduino (com no!) per controlar la pantalla. És econòmic, omnipresent, i té més suport que qualsevol altre trasto d’aquest estil. Per tant vaig per feina amb la meva venerable (del 2007) Diecimila. Hora de teclejar. Fa bastant de temps que no programo, però si no recordo malament només hi ha una manera d’atacar el problema: obrir el datasheet del PT6312, absorbir-lo, i teclejar unes quantes desenes de línies de codi, tot comprovant-lo de tant en tant amb l’infal·lible mètode de la prova i l’error. Com que en aquest cas no el puc anar comprovant amb la pantalla (només amb el compilador de l’IDE), hauré de reduir al mínim les possibilitats d’error; per tant faré el codi més fàcil que pugui. Amb això n’hi hauria d’haver prou per comprovar que la pantalla funciona, llavors ja escriuré algun codi més útil. El resultat és aquest; es diu «prova_PT6312», i aquí el teniu.

// prova de la pantalla VFD controlada amb el xip PT6312 
// per SeRKeRoS 18-1-2015 

// definir els pins fisics de conexio amb l'Arduino 
#define DATA 2 
#define CLK 3 
#define CS 4 

void setup()  // codi que s'executa una sola vegada a l'inici 
{ 
  // definir els pins com a sortides 
  pinMode(DATA, OUTPUT); 
  pinMode(CLK, OUTPUT); 
  pinMode(CS, OUTPUT); 
  // posar-los tots amunt (inactius) 
  digitalWrite(DATA,HIGH); 
  digitalWrite(CLK,HIGH); 
  digitalWrite(CS,HIGH); 
  
  // cicle d'inici segons el datasheet 
  delay (200); 
  digitalWrite(CS, LOW);  // inici d'ordre 
  envia(0x40);  // set command 2: normal, incrementar, dades a pantalla 
  digitalWrite(CS, HIGH);  // fi d'ordre 
  digitalWrite(CS, LOW);  // inici d'ordre 
  envia(0xc0);  // set command 3: adreça inicial 0 
  digitalWrite(CS, HIGH);  // fi d'ordre 
  digitalWrite(CS, LOW);  // inici d'ordre 
  envia(0x05);  // set command 1: 9 digits, 13 segments 
  digitalWrite(CS, HIGH);  // fi d'ordre 
  digitalWrite(CS, LOW);  // inici d'ordre 
  envia(0x8f);  // set command 4: display on, PWM al maxim 
  // aqui no cal posar un fi d'ordre, ja que venen dades al darrere 
  // fi del cicle d'inici 
  
  // escrivim 7 caracters, calen dos bytes per cadascun 
  for (unsigned char o=0; o<14; o++) 
  {  envia(0xff);}  // FF=encendre tots els segments 
  digitalWrite(CS, HIGH);  // fi de l'enviament de dades 
} 

void loop()  // codi que s'executa continuament 
{ 
    // no fer res, ja hem fet tot el que voliem fer 
} 

void envia(byte dada)  // rutina per enviar dades al PT6312 
{ 
  for (unsigned char a=0; a<8; a++) 
  {  digitalWrite(CLK, LOW); 
      if(bitRead(dada, a) & 0x01) 
        { 
           digitalWrite(DATA, HIGH); 
        } 
      else 
        { 
           digitalWrite(DATA, LOW); 
        } 
      digitalWrite(CLK, HIGH); 
  } 
} 

Sí, ja ho sé, m’hauria de fer vergonya escriure un codi així. És rupestre, però es tracta d’anar per feina, no de fer virgueries. El cas és que ara ja tinc un mínim programa per comprovar si apareix quelcom a la pantalla, o sigui que puc tornar al hardware, que és el primer que he de fer funcionar.

Preparo les connexions entre les plaques, primer entre la del VFD i l’Arduino. Tal com podeu veure al programa, DATA és el pin 2, CLK el 3, i CS el 4. He posat els mateixos noms que hi ha a l’esquema de la placa del display. El següent pas és unir la GND de la placa del VFD amb la GND de l’Arduino, perquè les dues plaques comparteixin un nivell de tensió de referència, sinó és molt difícil que res funcioni. Tiro doncs un cable de la GND de l’Arduino al pin 5 del connector, que és la GND de la placa VFD. Veig que al connector hi ha un pin que es diu +5VSTBY, podria ser que donant-li 5V per aquí la font surti del mode de repòs? O simplement els 5V de l’Arduino alimentaran el xip controlador, de manera que no faci falta la línia de 5V de la font? És possible que sigui tan fàcil? Bé, no em costa res provar-ho: hi connecto els +5V de l’Arduino sense pensar-m’ho massa. L’Arduino anirà alimentat pel mateix port USB de l’ordinador que he fet servir per programar-lo.

A més dels que ja he esmentat, el connector de la placa té dos pins més: un que es diu «RC» i que va al receptor infraroig, i un de més misteriós que es diu «1KHZ». El del receptor no em preocupa, ja que segons l’esquema no té relació amb el controlador, només porta els codis del receptor del comandament a distància cap a la placa mare. Però l’altre senyal, el «1KHZ», va a parar a un petit circuit que el condiciona i el porta al VFD, i això em fa pensar que podria ser necessari. Com que estic molt impacient per provar el codi de l’Arduino, l’ignoro temporalment; ja tornaré a pensar en aquest pin si la prova no funciona (quina gran manera de treballar, aquesta meva, oi?).

Compilo el programa, el pujo a l’Arduino, i no passa res, pantalla en blanc. Malament. Però no tot són males notícies, he avençat una mica: el llum de l’standby s’ha apagat al moment que he connectat l’Arduino al port, per tant aquests 5V han despertat la font. Un problema resolt. Anem a veure l’altre, això que la pantalla es quedi en blanc. Crec que hi poden haver dos problemes bàsics que facin que tot plegat no funcioni:
1- El codi que he escrit és una autèntica porqueria.
2- El pin anomenat «1KHZ» i que he volgut obviar tenia la seva utilitat.

Analitzem les opcions en termes de possibilitats. La primera opció és molt possible, escriure codi en C i llegir datasheets complicats no és el millor que es pot fer a altes hores de la nit després d’un dia intens de feina, us ho ben asseguro; a més, estic força rovellat, perquè negar-ho. Com que ja estic fart de programar, de llegir el datasheet del controlador, de buscar errors al programa, i a més tots hem de tenir una mica d’orgull del que fem, concedeixo un punt a la causa número dos.

Mirem la segona opció: és molt possible que aquest senyal tingui alguna funció, sinó perquè posar-lo? Els enginyers que fan aparells de consum que han de sortir el màxim de barats no solen posar components perquè sí. A més, si heu llegit com funciona un VFD, veureu que fa falta una mena d’oscil·lació a la reixeta, cosa que es podria generar amb aquest senyal. El fet que el senyal vagi a parar a la pantalla VFD directament (pins «F1» i «F2») i no al xip que la controla em fa pensar que és bàsic pel seu funcionament. Un altre punt per aquesta darrera opció. O sigui que escullo aquest camí per seguir endavant.

Si vull descobrir què caram és aquest senyal, toca fer una mica d’enginyeria inversa. Torno a muntar les plaques del DVD en el seu estat original per mirar què és aquest senyal, què hi ha quan l’aparell funciona. Segons els esquemes del manual de reparació, hi ha un test point a la placa mare on puc «punxar» el senyal i mirar-lo a l’osciloscopi, és el «TP33». La «GND» l’agafo d’un altre test point, el «TP57», que és molt proper. Uns segons de soldador i ja hi tinc uns cables a punt per agafar amb la sonda.

Mentre la pantalla del VFD està apagada, aquest senyal no porta res. Però al moment que s’engega i comença a funcionar, just quan sortim del mode standby, apareix una ona quadrada. Ja m’esperava això, més o menys, una ona quadrada d’una freqüència d’1 KHz (ho he deduït jo sol pel nom del senyal, que llest, no?). Però resulta que la freqüència no té res a veure amb 1KHz, és d’uns 42.1KHz! O tinc l’osciloscopi fet pols, o algú m’ha intentat enganyar. L’amplitud de l’ona és de 3V, cosa molt normal tenint en compte que prové directament del microcontrolador de la placa mare, que deu funcionar a aquesta tensió tan normal per un component així. Diria a cop d’ull que el temps que està a 0V i el que està a +3V són el mateix (cicle del 50%). Mireu-ho vosaltres mateixos…

Què puc fer ara? Doncs un petit circuit per generar aquesta mateixa ona, injectar-la a la placa del VFD i veure què passa, què més podria fer? Com a tots els projectes, ha arribat aquell moment tan esperat d’agafar un venerable 555 i punxar-lo al protoboard. Som-hi! Primer dibuixo l’esquema a la pissarra (veure a continuació), i llavors el trasllado al protoboard; temps total: cinc minuts.

He comprovat el senyal de sortida d’aquest circuit a l’osciloscopi, i és pràcticament igual que el que vaig punxar de la placa mare (aquest dóna uns 36KHz i l’altre uns 42KHz); no em sembla que la petita diferència pugui ser un problema, i si ho és ja ajustaré els valors dels components. És hora d’injectar el senyal a la placa de la pantalla i enganyar-la vilment. Ho torno muntar tot com abans, però ara amb l’oscilador del 555. Aquí teniu la foto.

Per si no ho acabeu de veure, us en faig un croquis a la pissarra:

Si heu mirat l’esquema amb atenció, us deveu haver fixat que he alimentat el 555 a 5V (provinents de l’Arduino), per tant el senyal quadrat de sortida té una amplitud de 5V i no de 3V com tenia el senyal original. M’ha semblat que no hi hauria gaire diferència, ja que segons l’esquema aquest senyal es condiciona amb uns transistors que l’acaben posant a una amplitud molt més gran. A més, el primer d’aquests transistors ja porta unes resistències a l’entrada de la base que el protegeixen. Però perquè ho he fet, això? Doncs primer per estalviar-me un divisor de tensió a la sortida del 555 (pura mandra, només són dues resistències miserables!) però segon i més important perquè si a 5V funciona, en el futur aquest senyal el pot donar el mateix Arduino (interrupció de timer) i em puc estalviar tot el circuit del 555 al disseny final.

Va, prou xerrar i provem si funciona. Connecto la font a la xarxa, l’Arduino al port USB i de sobte apareixen els símbols a la pantalla, tots els segments encesos. Funciona! El programa encara no serveix per res, però ja en faré un de nou; de moment el més important és que he aconseguit engegar la pantalla.

102_0308

Ara que he aconseguit una petita victòria, és hora d’una retirada a temps. Podríeu dir que no acabo mai res (i no us faltaria raó), però és que aquest post s’està fent massa llarg, i encara es poden fer moltes coses amb aquesta pantalla. De moment ja he aconseguit el que volia: fer-vos veure que amb el que uns llencen els altres podem fer coses molt interessants. Hores d’entreteniment i aprenentatge, i perquè no diversió, sense necessitat de gastar ni un euro!

Un altre dia tornaré a agafar aquesta pantalla, i podré fer-hi més coses i explicar-les en profunditat: definir una aplicació per la pantalla, escriure un codi decent que faci quelcom útil, potser fer una font més petita i una capsa… qui sap. De moment em sembla que avui ja m’estic fent pesat, i si vosaltres no us heu cansat de llegir, jo sí que ho he fet d’escriure. De fet, si heu arribat fins aquí us mereixeu la meva absoluta devoció. No cal dir que si teniu alguna idea, dubte, o suggeriment, podeu deixar el vostre comentari, serà benvingut!

Vinga doncs, fins a la propera.

Retorn als orígens

El problema
Fa uns dies, a la feina, havia de muntar un circuit lluny de l’abast de ningú, però hi havia un problema: per activar-lo s’havia d’apretar un botó situat al propi circuit. Aquesta placa formava part d’una instal·lació més gran, amb d’altres components que funcionaven a 12V, i que jo activaria remotament amb un mecanisme normal de paret a 230V que alimentaria la font de 12V. En principi, només de rebre la corrent d’alimentació, tots els circuits havien de funcionar i llestos. Però em vaig haver de trobar el maleït botó de standby en aquesta placa. I, com no, el muntatge s’havia de fer l’endemà, o sigui que no hi havia temps per gaire floritures.

Provar la solució més fàcil
El primer pensament va ser llençar-se a la solució més fàcil: creuar el botó. Com que no es tracta d’un interruptor o conmutador (en aquest cas no hi hauria hagut problema, el deixo en la posició d’engegat i cap problema) sinò d’un polsador, això no té perquè funcionar. La placa pot estar esperant un flanc de pujada o baixada per sortir del mode standby, i no simplement un nivell alt o baix. Però ho havia de provar, era el més ràpid. I ho vaig fer, vaig fer un pont amb el soldador i un cable prim i ho vaig engegar per provar-ho. Merda! No seria tan fàcil.

Trobar la següent solució més fàcil
El següent pensament que vaig tenir (mentre desoldava el pont) va ser analitzar la placa per veure com funcionava i buscar una solució alternativa quasi igual de ràpida. Però la placa era a doble cara, plena de diminuts components en SMD, i si remenant la placa li provocava un dany irreversible o de lenta reparació, el projecte se n’anava en orris. Descartat un “hacking” profund de la placa, havia de trobar una altra solució. Només calia apretar el botó uns instants després de l’arrencada (per donar-li temps al micro a fer el que hagi de fer i posar-se en standby) i deixar-lo anar uns milisegons més tard, simulant el que jo mateix estava fent amb el dit.

Està bé, hora de fer un altre circuit, vaig pensar. Un circuit que simuli la polsació del botó. Acostumats com estem tots els del gremi, el primer que et ve al cap és un Arduino. Aquesta és una petita deformació que mica en mica hem d’abandonar en favor de la lògica i la raó, en aquest cas era matar mosques a canonades. La meva següent deformació (microcontroladors i electrònica digital) em va portar a pensar que un micro ben petit (el meu preferit és l’AtTiny13) podia fer la feina de manera ben senzilla i barata, i és veritat. Però si a algú de la “vella escola” li expliques que has hagut de grabar codi programat en llenguatge C en una memòria flash que hi ha dins un microcontrolador que té la mateixa potència (si fa no fa) que un ordinador de principis dels anys 80 només per apretar un botó, es faria un fart de riure. I tindria tota la raó, he de reconèixer.

Una mica avergonyit, vaig començar a treure la pols dels meus records més antics d’electrònica. Em venia al cap un 556 (un xip amb dos 555 a dins que ja he fet servir en algunes ocasions) per controlar els dos temps, el d’espera i el de polsació. Però havia de ser més fàcil, no, més senzill, no… la paraula més escaient és bàsic. Em vaig remuntar a les bases, a primer curs, als orígens… Electrònica analògica!

Electrònica analògica
Tot i que m’havia costat arribar a aquesta conclusió, la solució passava per fer un circuit analògic molt bàsic. Per posar-me en situació, vaig agafar els apunts de primer i els vaig fullejar, revivint nostàlgicament els anys 90 sense voler. Però no tinc temps per tonteríes, el rellotge no perdona! En un full vaig començar a dibuixar esquemes amb els components més bàsics de tots. Quan hi portava uns minuts em vaig començar a espantar, estava més rovellat del que em pensava, no recordava gairebé res! Però em vaig dir que ho tiraria endavant per orgull, m’havia de demostrar que podia fer una cosa tan senzilla (vergonya de nou). I no oblidem que un termini de lliurament que se’t tira a sobre també ajuda a treure el millor de tu mateix…

O sigui que en uns minutets més vaig tenir un esquema ben senzill. Faltava fer els càlculs dels valors dels components i arreglar-lo una mica, perquè era una mica caòtic, però tenia pinta de poder funcionar. Com que no me n’acabava de refiar (la meva confiança en unes habilitats llargament oblidades era en aquests moments molt baixa), necessitava una manera de comprovar-ho tot plegat abans d’agafar el soldador per fondre estany. Vaig recordar les classes de primer, llavors abans de muntar cap circuit ens el feien simular en un ordinador (en aquells temps devia ser un 486!). Però fa molt que no ho faig, i no tinc ni idea de com està el panorama de simuladors.

Vaig anar pel camí més fàcil una vegada més, consultar el famós oracle Google. Em va respondre una cosa molt interessant, “simulador de circuits online”, mmm… M’estalvio d’instal·lar res, més ràpid, net i fàcil! Aquesta entrada resultava ser l’enllaç a circuitlab.com i cap allà vaig anar; molt dolent havia de ser per no poder simular un circuit tan senzill. (Que consti que això és veritat, no tinc res a veure amb aquesta web ni hi he anat mai abans, no estic fent publicitat premeditadament ni res semblant).

CircuitLab
El que segueix és un petit incís en la història, un parèntesi per explicar-vos les meves sensacions utilitzant aquesta aplicació per primera vegada. No pretèn ser un anàlisi exhaustiu ni una crítica, només us vull explicar el que em vaig trobar. Potser us serveix, potser no. Si us estic donant massa la pallissa salteu-vos uns quants paràgrafs…

pantalla inicial

El primer que hem de fer és crear un compte, si pretenem gravar la nostra feina. Podem triar entre el gratuït i el de pagament, no cal dir que me’l vaig fer gratuït. Llavors tenim una pantalla amb tot el que hem fet, que en diuen workbench, i d’aquí podem saltar a l’editor per començar a treballar.

pantalla workbench

Només d’obrir l’editor, veiem una interfície molt intuitiva: a l’esquerra hi ha un panell amb els components, que podem anar posant a l’espai de la dreta, que està quadriculat per ajudar. Sembla que no hi ha gaire varietat de components, però seran més que suficients pel que vull fer. Fent doble clic al component que tenim posat ens permet variar-ne els valors o triar els tipus, això és molt ràpid i està molt ben resolt; no obstant no hi ha gaire varietat en alguns casos, com per exemple el transistor NPN.

pantalla editor

Posar els components a l’espai de treball és molt fàcil, enllaçar-los amb els “cables” ja no ho és tant. Quan “empalmes” cables i components no acabes d’estar mai segur que s’hagin connectat correctament, sembla que aquest és un punt que es pot millorar. Però el pitjor és quan mous els components que ja estan connectats: els cables no els segueixen, i es desconnecten (potser estem tots plegats massa acostumats a l’Eagle?). Això fa que haguem de tornar a tirar cables cap amunt i avall i, tot i que funcionen bé, no són tan ràpids de treballar-hi com en d’altres programes.

El desplaçament per l’espai de treball també és molt ràpid i intuitiu, es fa prement la rodeta del mouse, i girant-la s’activa el zoom, una cosa que comença a ser un estàndar. Els menús contextuals (botó dret del mouse) són clars i concisos, i la sel·lecció, moviment i esborrat molt normals i útils; si us dic la veritat, la primera vegada que vaig fer anar l’Eagle em va costar molt més. El menú de la barra superior també està molt clar, tot i que no té gaires funcions hi ha tot el que necessitem. Destaca la possibilitat d’exportar el circuit com a imatge (ens deixa triar la mida) i com a document PDF.

pantalla simulacio

La part del simulador també és molt senzilla, per accedir-hi simplement hem de canviar el panell de l’esquerra pel de simulació prement el corresponent botó sota el panell. En alguns casos em va donar resultats molt estranys, o es “clavava” molta estona per calcular la gràfica; sovint aquesta era una mica estranya, amb els mateixos valors a l’eix Y (tensions monitoritzades). L’eix X (temps) es pot determinar molt fàcilment, però si ens passem de mostres (resolució) o de temps, el programa es nota que li costa fer els càlculs, diguem que no és el motor de càlcul més ràpid que hagi vist. Per sort jo només necessitava simular els primers segons. Finalment me’n vaig sortir, de la simulació, i em va permetre canviar els valors dels components per obtenir els temps que jo volia sense fer més càlculs.

Com a conclusió, diré que tot plegat és molt correcte i útil, però no deixa de tenir una mica d’aire de “beta”, cosa que em fa pensar que encara té un llarg camí per recórrer. Però a mi m’ha funcionat bé, i us el recomano. El que jo personalment no faria (com a mínim de moment) és fer un compte de pagament, crec que no val la pena… Però això és una decisió molt personal, jo de moment us recomano que el proveu, que no hi perdeu res. El compte gratuït te el desavantatge que et va sortint un missatge molt empipador que no et deixa fer res durant un minut; crec que apareix quan portes 10 minuts treballant, i després cada vegada més sovint, fins que es fa insuportable. En aquest punt, jo vaig tancar la sessió i la vaig obrir una estona després. Un punt que m’ha agradat molt, ja per acabar, és que podem fer els nostres circuits “públics”, de manera que tothom els pugui veure i remenar. No cal dir que jo ho he fet, i per tant teniu el circuit a la vostra disposició per adaptar-lo a les vostres necessitats. Aquí en teniu l’adreça.

El circuit
timer-doble
Aquest és l’esquema final del circuit, tal com l’he simulat i gravat al CircuitLab, i tal com el vaig soldar a la placa de prototips. El funcionament és molt senzill, us el començo a explicar pel final. Hi ha un relé (RLY1) que és el que vaig connectar als dos pins del polsador de la placa. Per activar aquest relé, hi ha un transistor NPN, Q2, un clàssic BC547 més que suficient per la corrent que consumirà la bobina del relé que he trobat per aquí (he mesurat 40mA). Aquest transistor s’ha de posar en saturació per donar-li la massa (GND) a la bobina del relé, l’altre extrem està posat a la tensió (VCC) de 12V. El diode D1 és simplement per evitar que la corrent inversa provocada quan la bobina del relé torni al seu lloc no cremi el transistor. També és un clàssic, un 1N4148, molt petit però suficient per la mena de corrents de les que estic parlant.

La senyal de sortida del transistor l’he monitoritzat al simulador, perquè és la que m’indicarà si s’activa el relé, i per tant, el botó. Per posar Q2 en aquest estat de saturació hi ha C2, que es carregarà de tensió a través de R2 al moment que es connecti l’alimentació. Quan la tensió de C2 arribi a un cert nivell, provocarà una corrent de base a Q2 a través de R4, posant Q2 en conducció fins que arribi a saturar. Aquest és el temps “curt”, per dir-ho d’una manera, des que hi ha alimentació fins que s’activa el relé, i per tant es “polsa” el botó. Sense fer gaire càlculs, vaig determinar els valors de R2 i C2 a ull, i després els vaig ajustar tot simulant per obtenir mig segon aproximadament.

Però cal “deixar anar” el botó després d’apretar-lo, i d’aquesta part se n’encarrega Q1, que és igual que Q2 i a més està muntat de la mateixa manera. En aquest cas la seva saturació va a càrrec de C1 a través de R1. Quan C1 té prou tensió, polaritza el transistor a través de la seva resistència de base R3, per entrar en saturació finalment. En aquest estat, Q1 provoca un curtcircuit virtual entre les potes de C2, per tant el “buida” de tensió, provocant que Q2 entri en estat de tall, i per tant, s’obri el relé. Per obtenir el temps “llarg” d’un segon aproximadament no em vaig haver de trencar el cap, vaig duplicar el valor del condensador (agafant el següent valor estàndar, és clar).

Els que hagueu arribat llegint fins aquí (us felicito!) i hi entengueu una mica tindreu una observació a fer. El funcionament del circuit es basa en que els transistors comencen en estat de tall, això vol dir que els condensadors han d’estar descarregats. Però us haureu adonat que una vegada el circuit faci la seva feina, C1 quedarà carregat, saturant Q1, i per tant no deixant que Q2 deixi d’estar mai en tall; això vol dir que el relé no es podrà activar. Teniu raó, però això no em preocupa perquè aquest circuit és un one-shot, només ha de funcionar una sola vegada. I si mai necessito tornar-lo a engegar, deixant-lo prou temps sense alimentació serà suficient perquè C1 es descarregui per ell mateix. De totes maneres no és gens difícil de resoldre, si a algú li interessa ho podem comentar.

Conclusió
Només em queda per dir que vaig muntar el circuit en placa perforada de prototip, va funcionar a la primera i vaig poder acabar el projecte a temps. I el cost de tot plegat devia ser ridícul, el més car hauria estat el relé (però era recuperat), i després la placa perforada, de la que vaig fer servir una part molt petita. La resta de components no deuen sumar ni un euro tots junts.

Aquesta vegada no he pogut incrustar fotos al text per fer-lo més amè, ja que tractant-se de feina hi ha aspectes ètics i probablement legals que me n’impedeixen la publicació. Pel que fa al circuit, és la meva propietat intel·lectual i la faig servir com vull, és a dir, la poso a disposició de tothom. Finalment, les captures de pantalla de l’aplicació de circuitlab.com les hes posat per ilustrar-vos les meves explicacions. Si la gent de CircuitLab creu que les he de treure, que m’ho diguin i ho faré, però crec que només els estic fent publicitat gratuïta, i a més no els he deixat tan malament!

Salut i fins una altra.