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.

Deixa un comentari

Fill in your details below or click an icon to log in:

WordPress.com Logo

Esteu comentant fent servir el compte WordPress.com. Log Out / Canvia )

Twitter picture

Esteu comentant fent servir el compte Twitter. Log Out / Canvia )

Facebook photo

Esteu comentant fent servir el compte Facebook. Log Out / Canvia )

Google+ photo

Esteu comentant fent servir el compte Google+. Log Out / Canvia )

Connecting to %s