Rodes de robot

102_0257

QUÈ ÉS AIXÒ?
Mireu-vos bé la foto, perquè aquest és el meu subjecte d’avui. Que què és això? Doncs és un conjunt de motor, reductor, roda i disc d’encoder. En poques paraules, és una roda per fer robots, joguines i vehicles teledirigits. Us en poso més fotos a sota, així us n’aneu fent a la idea.

102_0263 102_0262
Com podeu veure, són unes rodes força bones pel vostre robot. Els pneumàtics són força grans i tous, i el motor porta un reductor incorporat.

I ara, les fotos de les peces per separat.
102_0261
Aquí tenim les dues rodes. Com podeu veure, no són idèntiques. Després us ho explico.

102_0260
Els dos motoreductors. Un dels dos té eix pels dos costats, i l’altre només per un. Després us explico perquè és millor el que té el doble eix. El motor ja us deu sonar, si us agrada remenar; és el típic que porten les joguines.

102_0258
Aquí teniu totes les peces separades. Els discs de plàstic plens de forats tenen un sentit, no us penseu.

D’ON HO HE TRET?
Aquesta mena de motors i rodes són molt populars a ebay, i molt barats. Per poc més de 3$ podem trobar tot el conjunt amb els ports pagats, a punt per arribar a casa vostra. Si guanyeu una subhasta fins i tot us pot sortir encara més barat!

Jo ja feia molt de temps que els tenia vistos, i per fi vaig decidir provar-los. Vaig comprar totes aquestes peces per separat, a diferents venedors i preus, per veure si eren tots iguals o hi havia diferències de color, mides, etc. El resultat de la prova és que són lleugerament diferents, però no tant com per ser incompatibles entre ells.

Abans d’explicar-vos què fer-ne i com fer-ho, feu la prova de cercar-los per ebay. Només cal que cerqueu “robot motor wheel”, i us n’apareixeran una bona colla, als resultats. Potser la meitat o més són com aquests que us he ensenyat. Curiosament, si a la cerca hi afegim la paraula màgica, “Arduino”, gairebé l’únic model que ens apareix és aquest del que us parlo avui. N’ignoro el motiu, <ironia> suposo que deu ser perquè, com tothom sap, no es pot fer un robot si no és amb un Arduino </ironia>.

Una cosa que heu de tenir en compte és que n’hi ha amb diferents etapes de reducció, d’aquests reductors. Ara no em posaré a fer una xerrada sobre mecànica, només us vull advertir d’un fet evident. Si trieu una reducció molt gran, per exemple 1:120, la roda girarà més a poc a poc (120 vegades més lentament que el motor), i això vol dir que el robot serà molt lent. Si la reducció és més petita, diguem de 1:48, el robot serà més ràpid. Quin avantatge té, doncs, la reducció gran? Doncs que el que perdem en velocitat ho guanyem en parell. En altres paraules, més lent vol dir més potent, té més força i per tant pot moure més pes. O sigui que si voleu fer un robot ràpid i lleuger (un seguidor de línies, per exemple), trieu una reducció petita. Si el que voleu és un robot lent però forçut (per fer sumo, per exemple), la vostra elecció ha de ser una etapa reductora molt gran. Ja ho teniu clar? Què voleu, un Lamborghini o una excavadora?

Jo n’he comprat de tots dos tipus, un de més lent i un de més ràpid, per provar-los a veure què tal van. De moment només els he provat sense cap càrrega, girant lliurement. Pel que expliquen els venedors, els motors funcionen entre 3V i 6V (una gamma de tensions molt bona per fer servir piles i bateries), i així els he provat. Us poso els resultats de les corrents que han consumit mentre giraven, perquè us en feu una idea.

Motor 1 (lent)
3V: 140mA girant lliurement, 250mA frenant l’eix amb els dits.
6V: 170mA girant lliurement, 290mA frenant l’eix amb els dits (no hi ha qui el pari).

Motor 2 (ràpid)
3V: 70mA girant lliurement, 350mA frenant l’eix amb els dits (es para completament).
6V: 90mA girant lliurement, 280mA frenant l’eix amb els dits.

QUÈ SE’N POT FER?
Com ja us he dit, jo en penso fer un robot, un de senzill. O potser dos, ja que se m’acudeixen moltes maneres d’utilitzar aquest motor per fer la tracció, una cosa tan important i necessària. Tinc moltes idees al cap, i algunes de començades en paper o inclús en format físic. Com que de moment no tinc res prou madur com per ensenyar-ho, us poso una colla d’exemples que he trobat per ebay tot buscant els motors. En aquest lloc hi ha una bona colla de kits per fer robots que utilitzen aquestes peces. Mireu les imatges a continuació i us en feu una idea. (Les imatges que poso tot seguit són extretes d’ofertes d’ebay, per tant són propietat de llurs venedors. No he sabut trobar quina llicència hi ha per aquesta mena de temes, però si algun venedor m’ho demana, retiraré encantat la seva imatge).

 

 

 

COM HO FARÉ?
D’entrada, si comencem per les rodes i els motors, que ja tinc, el següent pas seria el controlador del motor. En aquest cas els motors consumeixen relativament poca corrent, com ja heu vist; cadascun el podria controlar amb un transistor, una parella darlington o fins i tot un mosfet. També podria fer un pont en H molt senzill, per poder controlar cada motor endavant i enrere. Els lectors assidus recordareu el post que vaig fer sobre el L298, que és un xip econòmic i molt adient per aquest ús. Amb només aquests components i una roda “boja” al davant, ja tindríem resolt -a més de la tracció- el tema de la direcció: només cal fer girar una roda més ràpid que l’altra, i ja aconseguim que el robot giri (tal com ho fa un tanc sobre les seves erugues).

Em sembla el moment adient per fer un incís, i explicar per què serveix la roda plena de forats que heu vist a les fotos. És un component bàsic per fer un encoder, que ens permetrà saber la velocitat a la que giren les rodes. S’ha de posar un diode led i un fototransistor (una mena d’opto-acoplador) a cada banda de la roda, apuntant l’un a l’altre. D’aquesta manera, quan la roda giri, la llum del diode passarà a través del forat i arribarà al fototransistor, provocant un senyal; un senyal diferent es produirà quan no hi hagi forat, i el fototransistor no vegi la llum del led. Si coneixem l’interval de temps entre els senyals i el nombre de forats, podrem calcular les revolucions de la roda per simple matemàtica. I, sabent el diàmetre de la roda, podem calcular la velocitat del robot. També podem saber si una roda està encallada (si hem topat), i altres factors que hem de tenir en compte per dirigir el nostre aparell de manera autònoma. Per això era tan útil el segon eix, per poder muntar la rodeta dels forats. Tanco l’incís i segueixo amb el control dels motors.

Una altra opció que tinc a mà per controlar els motors és el motor shield d’adafruit. Fa un temps el vaig comprar i muntar, aquest kit, però encara no havia tingut la ocasió de fer-lo servir. És bastant més car que el mòdul del L298, però entre d’altres té l’avantatge que el puc col·locar sobre l’Arduino diecimila sense cap més cable ni preocupació.

Bé, ja veieu que tinc moltes opcions, ara es tracta que em decanti per una o altra, i que pensi en la resta d’aspectes del robot (control, sensors, etc). Però això ja seria molt llarg d’explicar i fer, i aquest no és el propòsit del post d’avui. Seguirem aquest camí un altre dia.

TRES DIMENSIONS
I ara, després de tot aquest text inútil, arribem per fi a algun lloc. Tot això que us he explicat era només per posar-vos en antecedents, ja que la trista realitat d’aquest post és que l’he fet només per penjar uns arxius.
Resulta que he dibuixat totes aquestes peces en 3D per dissenyar un robot. Per estrany que pugui semblar, no tinc temps per trastejar al talleret amb eines i cables, però de tant en tant sí que en tinc una mica -lluny del talleret- per fer ximpleries com aquesta amb l’ordinador.
I aprofitant que ja tinc fets els sòlids, els penjo a la xarxa perquè tots els podeu utilitzar al disseny del vostre següent robot. Si aquest és el cas, us estalviareu la feina que he tingut jo dibuixant (no n’hi ha per tant, tampoc no ha estat tanta!). A més, ara no em negareu que baixar-vos arxius que no fareu servir mai no és un dels vostres vicis, oi?
Els sòlids estan en format STEP, perquè els podeu utilitzar amb el vostre software de tres dimensions preferit, vosaltres mateixos. Pot ser que les mides no siguin exactament iguals a les de les peces que us compreu vosaltres, ja us he explicat que d’un venedor a un altre hi ha petites diferències. Les peces que vaig comprar jo no són pas idèntiques entre elles, n’he dibuixat una de les dues, sense preocupar-me de les dècimes de mil·límetre de diferència que hi pugui haver. A vosaltres tampoc us hauria d’importar, total estem fent robots casolans i no una llançadora espacial. En últim cas, si tant us molesta, editeu els arxius per fer coincidir les mides a la perfecció, què voleu que us digui…

DONWLOADS
Va, anem per feina, que es fa tard. Els següents arxius per baixar són enllaços al meu google drive. Els arxius STEP estan comprimits dins d’arxius RAR sense contrasenya ni res. Vosaltres mateixos, barra lliure!

roda

LA RODA
(és un conjunt de llanda + pneumàtic)

conjunt motoreductor

EL MOTOREDUCTOR
(és un conjunt de motor + reductor + eix de sortida)

IMPORTANT
Jo no he fet el disseny d’aquestes peces, per tant no en tinc els drets, ni la propietat industrial, ni intel·lectual, ni res de tot això. Jo només he dibuixat els sòlids d’unes peces que he comprat, i allibero aquests dibuixos al món sota la llicència CC-SA-BY-NC, que és la mateixa que utilitzo per tot el contingut original que hi ha en aquest blog. Per suposat, si feu servir aquests arxius és sota la vostra responsabilitat, vosaltres sabreu. Jo no assumiré cap responsabilitat de res que us pugui passar per fer-los servir (no sé pas què, però ho poso per si de cas).
Per suposat, si poso aquests arxius aquí és perquè els feu servir. Per tant, us animo a:
-Utilitzar-los pel vostre ús personal.
-Copiar-los, enviar-los, i distribuïr-los com us doni la gana (sempre que no cobreu per fer-ho).
-Penjar-los al vostre blog, web, twitter, o el que sigui.
-Modificar-los al vostre gust.
En tot cas, només us demano que n’esmenteu l’origen (un enllaç al meu blog és suficient).

Ja em direu com us ha anat, m’encantaria rebre comentaris d’algú que els hagi fet servir.

Això ha estat tot per avui… Ja sé que ha estat molt temps sense publicar i això d’avui no és gran cosa, però faig el que puc amb el temps que tinc. Estic preparant moltes coses, però ho tinc tot a mitges i no tinc temps d’acabar res. Fins a la propera.

Aire calent

Per fi me l’he comprat! Després de molt de temps pensant si ho havia de fer o no, decidir-me a favor, i pensar quin model era el més adient per començar, finalment vaig fer un cop de cap. Aquest és l’aparell.

100_2880

Una estació de soldadura d’aire calent! M’he decantat per un model 858D+ de la marca Atten. És un model barat, xinès i senzill, just el que necessito per començar a fer els primers passos en SMD (i no parlem de l’ús que li donaré recuperant components de les plaques que m’aporten les autòpsies). Jo tenia els meus dubtes sobre comprar un aparell tan senzill, però tenia molt clar que no era qüestió de gastar-se prop de 1000€ en una màquina tal com cal. Finalment, un video del gurú de l’electrònica Dave Jones em va acabar de convèncer. Llavors només va ser qüestió de buscar una mica per ebay, fins que vaig trobar el que em va semblar un preu prou bo i un proveïdor de confiança. El preu final va ser de 39,99$, amb unes despeses d’enviament de 25$ més. Al canvi del moment van ser 48,38€ en total. Tota una estació de soldadura d’aire calent per menys de 50€!

Després de dues setmanes d’espera que s’han fet llargues, per fi ha arribat. El que faré a continuació és un reportatge fotogràfic de com ha arribat, com es protegeix i presenta, quines peces porta, etc. El que es coneix amb el terme anglo-saxó de “unboxing”, és a dir, “treure de la caixa”.

100_2867 100_2868
100_2869

El paquet és aquest, tal com l’he recollit de l’oficina de correus (no hi cabia, a la bústia). Una vegada eliminat el paper kraft, hi ha una capa de manta de bombolles que protegeix la caixa de cartró. La caixa és blanca, de cartró gruixut i serigrafiada. Bona presentació, per tractar-se d’un model tan econòmic. Podeu veure que ha arribat il·lesa.

100_2870 100_2871

Quan obro la caixa em saluda el manual, que es troba damunt de tot. Per desgràcia, està escrit únicament en uns caràcters il·legibles per a la gran majoria dels occidentals com jo mateix. Un problema típic d’aquesta mena de compres.

100_2872

Sota una bona protecció d’escuma, podem veure totes les peces que formen l’estació. Les trec de la caixa, impacient. A sota hi ha una base de cartró que les aguanta al lloc i les acaba de protegir de més impactes produïts durant el transport.

100_2873 100_2874 100_2875

Aquí ho tenim tot, la pistola d’aire, el suport, els tres brocs de diferents mides, i l’estació, amb el controls. El suport de la pistola s’ha de collar a la pròpia estació; és molt senzill, només calen dos cargols que ja són al seu lloc. La pistola estava embolicada amb un cartró plegat, per més protecció.

100_2877

Ara que he collat el suport i he connectat el cable d’alimentació al darrere, l’aparell està llest per funcionar per primera vegada. Per provar-lo, li he posat el broc més prim, de moment.

100_2882

Així es veu per darrere. Hora d’endollar!

100_2881

Quan s’endolla no passa res, té un interruptor general al frontal. Apretant-lo, l’aparell es posa en mode “sleep”, com podeu veure al display. Realment fer-lo anar és molt fàcil, només cal aixecar la pistola del suport perquè comenci a bufar (tinc entès que hi ha un imant a la base). Llavors apareix la temperatura al display, que podem graduar amb els dos botons vermells, amunt i avall; durant aquesta operació, ens indica la temperatura que estem programant. Uns segons després torna a indicar la temperatura actual de l’aire. Finalment, el potenciòmetre negre regula el cabal, la quantitat d’aire que expulsa la pistola. És tant senzill de fer anar que quasi no importa que el manual sigui un jeroglífic.

Quan penges la pistola segueix bufant l’aire, però deixa de produïr escalfor, de manera que la temperatura baixa ràpidament (el display ens indica la temperatura actual, no la programada). Quan la temperatura arriba als 100ºC, la pistola deixa de bufar aire i torna al mode “sleep”.

100_2862

Per les primeres proves que he fet, realment funciona molt bé i és un aparell molt útil. Llàstima que la pasta de soldar que vaig demanar em va arribar seca! Hauré d’esperar uns dies per començar a provar de soldar components SMD. Mentrestant, em dedicaré a treure components de les plaques per a reciclar-los pel meu ús personal…

A vosaltres només us puc dir que sembla un aparell molt recomanable, està per veure si la durabilitat també és bona. I a la meva nova adquisició només li he de dir: benvinguda al talleret!

Quincalla xinesa

Ara que estem en aquestes festes consagrades a la família, l’amor i l’alegria al consumisme més pur i dur, em sembla que és el moment més adient per fer una petita explicació de la mena de compres que fa algú com jo, i la mena de regals que li encantaria rebre enlloc de colònies, mocadors, o calçotets. No em malinterpreteu, jo faig aquestes compres durant tot l’any, i no només en aquestes dates; el Nadal només ha estat l’excusa per començar a introduir el tema d’avui.

No cal dir que quan parlo de comprar material, vull dir material electrònic, i evidentment, a través de la xarxa. L’època en que podies comprar resistències o condensadors a cada poble mitjà ha passat a la història fa temps. Jo ho havia fet, però mica en mica vaig haver de conduir més i més quilòmetres per comprar els components més habituals com resistències, condensadors, diodes i demés. Comprar la meitat dels xips va esdevenir impossible; fins i tot anant a les dues últimes botigues decents d’electrònica que subsisteixen a tot el meu país (que jo sàpiga), molt lluny de casa meva, no acabes trobant el que busques, en el millor dels casos quelcom similar que t’obliga a canviar tots els teus plans. I llavors t’adones que has perdut quasi tot un dia i 50€ de gasolina per comprar 10€ en components. Sort que sempre ens queda la xarxa.

Si us hagués de recomanar que féssiu compres de material per aquesta afició que compartim, us recomanaria llocs web que tenen productes bons, molt ben documentats, fiables, i amb una assistència al client i una logística que fan posar vermells de vergonya els directius de les millors marques del món. Aquest serà el tema d’un altre dia, perquè avui em vull endinsar en un món molt més insegur, desconegut, fosc i emocionant: el de la quincalla “made in xina”. Deixeu-me que us ho expliqui.

Quan parlo de “quincalla” em refereixo a aquests petits mòduls, eines i aparells de molt baix cost que són de gran ajuda per desenvolupar el nostre projecte a la fase de prototipatge, abans que ens plantegem fer una placa a mida i el software definitiu. Pantalles LCD, bateries lipo, “breakout boards” de xips comercials, arduinos clònics de baix cost, carregadors, reguladors, convertidors dc/dc, drivers de motors i un llarg etcètera. No entrarien en aquesta categoria eines imprescindibles com les estacions de soldadura, els oscil·loscopis, les fonts d’alimentació, ni les plaques de desenvolupament comercials; tot això és massa car per anomenar-ho “quincalla”, i jo personalment no tinc clar si m’arriscaria a comprar-ho segons on, tenint en compte la importància que té per poder treballar en condicions.

Pel que fa al “made in xina”, parlo dels llocs on podem comprar-ho directament, perquè tant si és de marca com si no, haurà estat fabricat a la Xina i/o països propers del sud-est asiàtic. I si és barat encara és més probable, però no hi haurà tants intermediaris, controls de qualitat, transportistes i duaners implicats. Parlo de comprar directament als llocs que ja deveu conèixer, com poden ser dealextreme, aliexpress, miniinthebox i semblants, però sobretot, ebay. Per mi cada dia encara és motiu de sorpresa veure el preu que et pot costar segons què, amb el transport des de l’altra banda del món inclòs. I no parlo de guanyar subhastes, sinó simplement del preu que demana el venedor per comprar-li el producte directament. És clar que el canvi de divisa ajuda molt a obtenir aquesta sensació, però tot i això, no deixa de ser sorprenent.

Com ja us he dit, he fet servir aquest sistema en moltes ocasions, amb resultats molt diversos, i tinc la intenció de seguir-ho fent. He de reconèixer, a més, que estic enganxat; buscar el mateix producte aquí i allà a veure quines diferències hi ha i qui el té més barat; obrir cada dia la bústia esperant veure el petit sobre encoixinat de paper kraft; muntar circuits de prova per saber si funciona o no; deixar comentaris al venedor, donant-li les gràcies o insultant-lo perquè ha passat un mes i mig i no he rebut res… És tot un món, i per mi, molt interessant, divertit i fins i tot emocionant.

Que m’agradi aquest sistema “arriscat” de comprar no vol dir que deixi d’utilitzar les altres fonts que us comentava al principi quan vull un producte fiable, de qualitat, i ben documentat. Simplement no sempre necessito tant, o sigui que em puc estalviar uns diners i fer servir aquest altre mètode. Avui us posaré un exemple d’això que us parlo, una de les meves últimes adquisicions.

modul i2c memoria i rtc

El mòdul del DS1307
El primer exemple d’aquesta sèrie serà un mòdul que conté un RTC (rellotge de temps real, o real time clock). Un RTC, per qui ara estigui fent una cara rara, és un xip que manté l’hora, com un rellotge. Això és important pels nostres circuits que necessiten saber l’hora i el dia que és, ja que els microcontroladors no saben a quin dia viuen. Per ells l’únic temps que coneixen és relatiu, per dir-ho d’una manera quants milisegons han passat des de l’última vegada que han rebut alimentació o han fet un reset; però no si és de dia o de nit, ni si l’any és el 1995 o el 2018. Segur que hi ha un RTC a l’ordinador que ara mateix mires, o dins el teu cotxe, per exemple. Una característica important dels RTC és que segueixen comptant, per tant mantenint l’hora, encara que no rebin corrent. És obvi que necessiten alguna energia per fer-ho, però molt poca; per això és sol fer servir una pila petita. Recordes la pila tipus rellotge que hi ha a la placa base del teu PC?

Un xip molt popular per aquest ús, i relativament fàcil de fer servir, és el DS1307. Hi ha llibreries per Arduino arreu, i es poden trobar moltes explicacions de com funciona a la xarxa. Es comunica utilitzant I2C, la qual cosa vol dir que només faran falta dos pins del nostre micro per obtenir les prestacions que ens dóna. He buscat un mòdul per aquest xip a la xarxa, i he trobat aquest.

“Arduino I2C RTC DS1307 AT24C32 Real Time Clock Module For AVR ARM PIC SMD”

Si us hi fixeu a la pròpia denominació hi ha tota la informació rellevant (tags). Adoneu-vos que la paraula “Arduino” no falla mai en aquesta mena de quincalla. És una bona paraula clau per les vostres cerques a ebay; jo la tinc com a etiqueta per descobrir nous productes, de fet.

Aquest és un dels llocs més barats que he trobat (1,15€ amb transport inclòs!), però no un dels que ofereix més informació. La descripció es redueix a les següents línies:

    Item description:

  • Brand new and high quality.
  • This is the DS1307 Real Time Clock developed by one of our designer waiman.
  • The module comes fully assembled.
  • The DS1307 is accessed via the I2C protocol.
  • Two wire I2C interface.
  • Hour : Minutes : Seconds AM/PM.
  • Day Month, Date – Year.
  • DS1307 based RTC without LIR2032 battery.
  • 1Hz output pin.
  • 56 Bytes of Non-volatile memory available to user.
  • Size: 2.9cm x 2.6cm – 1.14inch x 1.02inch.

Si heu mirat la foto amb atenció, haureu vist dos xips i no un de sol (el DS1307). L’altre és una memòria (Atmel AT24C32), o sigui que aquest mòdul és doble, és a dir, un breakout board per dos xips alhora. Em crida l’atenció que, malgrat al títol de l’article si que hi apareix, a la denominació no hi ha informació ni cap referència a l’altre integrat que hi ha a la placa, la memòria; la descripció és exclusiva pel DS1307. I no és massa informació, és clar, però en aquests casos no espereu gaire més. De fet, l’anglès no només és intel·ligible, sinó que és quasi correcte, i això ja és molt! Un lloc seriós proporcionaria l’esquema (complint un dels requisits més bàsics de l’Open Source Hardware), un manual, datasheets, i potser llibreries, exemples de muntatges i codi font… Però això és ebay i xina, no un lloc seriós de “maquinari de codi obert”, recordes? Ens haurem d’espavilar.

Com que aquests venedors d’ebay porten tots el mateix (i mai no saps qui ho fabrica, és una de les principals característiques de Xina), podem trobar informació millor en altres venedors. El risc que el producte sigui molt diferent és mínim; compareu les fotos i us n’adonareu. Feu la prova, busqueu “DS1307 RTC module” a ebay i ja em direu el què. El xip de memòria no em fa cap falta, però he trobat mòduls semblants que no la porten i valen el mateix, o sigui que agafo aquest i ja està.

modul a dx

Mireu on l’he trobat, també, i és clavat!

Ara fem un “fast-forward” en el temps de quasi un mes i ens situem quan m’arriba el paquet a casa (quasi un mes? us ho havia dit!). Està ben embolicat i ha arribat il·lès, és hora de fer les proves. Per fer-les, és clar, faré servir un Arduino. Però no faré servir la meva venerable Diecimila, ja que la tinc ocupada en una altra cosa que estic fent; ni tampoc l’Arduino Nano, que també el tinc muntat en un protoboard per un altre projecte (sí, sempre ho tinc tot a mitges, començo moltes coses i no acabo res). Faré servir un Arduino Pro Mini clònic (l’original és de Sparkfun) que vaig comprar seguint aquest mateix mètode que us he comentat, i que va arribar fa unes setmanes. Llavors li vaig soldar les tires de pins mascle, però no el vaig arribar a provar, ara serà el moment. Tot plegat ho muntaré en un protoboard molt petit que prové del mateix lloc. Us en poso la referència aquí a sota, per si us interessa. Per cert, quasi me n’oblido! Cal posar-li una pila al mòdul perquè faci la seva feina, al meu cas li he posat una CR2032 que tenia per aquí, de fer-la servir en altres projectes. I per connectar-lo al protoboard cal soldar-li uns pins mascle als forats que porta per aquest ús. És només un moment de soldador.

protoboard a ebay

Protoboards, mai no en tens prous! i si són de colors, millor!

mini arduino a ebay

Sí, tot un Arduino per 2,27€! i amb 32K de RAM, no 16K!

Per començar la prova, he de connectar el mòdul del rellotge amb l’Arduino. El GND i el VCC estan clars, com a mínim des del moment que miro el datasheet i m’adono que el DS1307 accepta els 5V de l’Arduino sense problemes; a partir d’aquí a buscar-se la vida. El primer lloc que he trobat amb una mica de documentació és Adafruit, on hi ha un tutorial, com sempre excel·lent. Segons el tutorial, la connexió l’he de fer als pins A4 i A5; molt fàcil, si no fos perquè són els dos pins que no té el petit Arduino Pro Mini! Després de mirar una bona estona la documentació de la llibreria “Wire” a la web de l’Arduino, arribo a la conclusió que no puc fer servir dos pins que no siguin aquests. Per sort, hi ha dos forats a la placa d’on puc treure l’accés a aquests dos pins. El problema és que aquests forats no estan alineats amb els forats del protoboards, o sigui que no hi puc soldar simplement uns connectors mascle com a la resta de pins; la solució és soldar dos cables, i connectar-los directament al punt desitjat del protoboard. No queda massa bonic, però és efectiu al 100%. Trigo més a escalfar el soldador que a soldar els dos cables, però un cop fet faig els ponts amb la placa del rellotge (pins SCL i SDA) tal com diu el tutorial i llestos! El hardware per a la prova està a punt, aquí teniu la foto.

muntatge modul rtc i arduino

Foto del muntatge de prova, amb l’Arduino Pro Mini, el protoboard, el mòdul que estic provant, i només 4 cables. D’aquest cable gris que creua el mòdul encara no n’he parlat, seguiu llegint.

Tot seguit és el torn del software. Per estalviar-vos una estona avorrida explicant tot el que he provat i buscat que no ha portat cap resultat positiu, aniré directament al que sí que ha funcionat i ha estat fàcil de fer anar.

El primer que he fet ha estat instal·lar la llibreria Time que hi ha a la web de l’Arduino. He fet servir un programa -o sketch- que es diu “TimeRTCSet.pde”, i que es troba entre els exemples inclosos a la mateixa llibreria. Carregar el programa al microcontrolador ha estat el procés de sempre: connectar el cable FTDI a l’USB de l’ordinador i a l’Arduino; així ja tenim una connexió sèrie entre el PC i l’Arduino. Al meu cas el port sèrie virtual es diu “/dev/ttyUSB0” (estic fent servir Ubuntu Linux), el vostre pot ser diferent. Un petit problema que he hagut de resoldre ha estat dir-li a l’IDE de l’Arduino que la placa que estava fent servir era una Duemilanove amb Atmega328, fins que no ho he trobat he anat provant una i altra, perquè el programa no pujava. Coses de fer servir Arduinos estranys… Una vegada resolt aquest detall, el programa ha pujat sense problema. He obert la consola sèrie de l’IDE a 9600 baudis i he vist el que m’estava dient el micro. Fins aquí tot va bé, ara he de posar el mòdul en hora.

Això és el que rebem pel port sèrie la primera vegada que connectem el mòdul, no està posat en hora.

Llegint alt per alt el codi del programa que he carregat al micro (no hi ha millor documentació que llegir el codi font), sembla evident que la manera de posar en hora el rellotge és enviar un comandament a través de la connexió sèrie que tinc oberta. Aquest comandament és una lletra ‘T’ majúscula, seguida de la data en format Unix, és a dir, el nombre de segons que han passat des que van començar a sonar les campanades de cap d’any del 1970 (jo no recordo com va ser aquella nit, més que tot perquè encara no havia nascut).

Per mi ha estat molt fàcil obtenir aquest nombre, (ja us he comentat que faig servir Linux?) simplement he obert un terminal i he escrit: “date +%s”, el resultat ha estat 1387631082. Ignoro com us ho fareu els que feu servir ordinadors bonics amb pomes que brillen, o ordinadors normals amb sistemes operatius que tenen finestres amb els vidres de colors. Sempre podeu calcular-ho manualment (però no feu trampes, sense calculadora!), o buscar un lloc online que ho digui o ho calculi (segur que hi és, hi ha de tot). Seguint amb l’exemple, jo he posat “T1387631082” (la T que us deia i el número que m’ha donat el terminal) i el rellotge s’ha posat automàticament en hora a les 13:04:42 del 21 de Desembre del 2013. Que fàcil!

Ha estat enviar la cadena alfanumèrica pel port i el rellotge s’ha posat en hora.

Una vegada posat en hora, podem desconnectar l’alimentació del mòdul, que seguirà mantenint l’hora, gastant molt poca energia (en algun lloc he llegit que una pila nova ens pot durar més de 10 anys!). Quan tornem a connectar l’Arduino al port sèrie de l’ordinador, ens seguirà donant l’hora correctament.

O aquesta és la teoria, perquè quan l’he tornat a connectar, el programa m’ha dit que la hora no estava posada, com si mai l’hagués posat en hora. Que estrany, no funciona. És l’hora del “troubleshooting”! Per molt senzill que sigui un mòdul, projecte, o programa, aquest moment sempre arriba. En aquests casos sempre recordo una màxima que utilitzo des que vaig començar a programar, fa molts anys: “Si funciona a la primera, és que alguna cosa no va bé”.

Em dirigeixo al primer sospitós, tester en mà; no és cap altre que el mòdul RTC, recordeu el títol del post? Després de punxar en una bona colla de llocs, tot buscant tant continuïtat com tensió, he trobat una cosa: em sorprèn que hi ha 0V entre els dos pins de la pila. És estrany, em pensava que era força nova. Culpa meva, canvio la pila i ja està. La trec del porta-piles (que no és massa fàcil, tot s’ha de dir) i la mesuro amb el tester. Ara em dóna 2,3V, això sí que és estrany. Analitzant-ho amb lògica, arribo a la conclusió que el mòdul ha de tenir un curt-circuit, per això la pila dóna tensió quan està fora del mòdul. Alhora el curt està buidant la pila a velocitats bestials. Per tant no era problema meu, la pila estava bé quan li he posat. Però ara sense la pila el tester diu que no hi ha curt-circuit. Al moment m’apareix un gran interrogant al cap, estic desconcertat. Però de nou ho miro fredament, això vol dir que la pila provoca el curt!

Un examen minuciós del porta-piles revela que hi ha una pota sota el lloc on connecta el pol positiu que es fica una mica sota la pila, on hi ha el pol negatiu. És només una punta molt petita de la peça metàl·lica que fa el contacte, però podria ser suficient. Tallo aquesta punta que sobresurt massa amb les alicates que faig servir per tallar les potes dels components després de soldar-los a les plaques, que tenen una punta molt fina. Torno a posar la pila, una de nova de fet, i mesuro la tensió a les potes del porta-piles. A la pantalla apareixen 3,1V, problema resolt! Tot havia estat culpa d’un porta-piles merdós. (Perdoneu que no hagi fet fotos d’aquesta incidència, però és que el mode “macro” de la meva càmera no dóna per tant).

Tornem, doncs, al pla inicial. Repeteixo l’operació de connectar l’Arduino a l’ordinador, posar el mòdul en hora, desconnectar-ho tot, i esperar una estona. Quan ho torno a connectar, de nou ha perdut l’hora! Torno a repassar la pila, però ara està bé. Què caram passa, ara? Pensem-ho amb calma, de nou. Si la pila té tensió i el micro no reté l’hora, o el micro està fotut o no li arriba la tensió de la pila. Anem a comprovar la segona hipòtesi, perquè la primera és molt improbable té molt mala solució. Tot mirant el datasheet del DS1307, trobo que l’entrada de tensió de la pila és al pin 3. Allà hi poso el tester i em trobo 0V. És possible que el fabricant del mòdul hagi obviat aquesta connexió? Com que no en tinc l’esquema, no tinc més remei que seguir investigant amb el tester.

Tot mirant la continuïtat dels diferents punts del circuit he trobat una cosa com a mínim rara. A la citada pota número 3 de l’integrat no hi ha connectat el positiu de la bateria (això ja ho he dit), sinó que aquesta pota va connectada a un pin de sortida que està marcat com a “BAT”. Jo d’entrada suposava que era una connexió a la pila (com puc haver deduït això?) per mesurar-la amb el micro o per carregar-la en cas que fos carregable, però no és així. He buscat per la resta del circuit i no he trobat cap altre lloc que estigui connectat a la pota 3 del xip, o sigui que aquest no rep cap tensió quan està desconnectat del port USB, per tant no pot seguir comptant el temps. Ignoro perquè hi ha una pila al mòdul, si no és per mantenir l’hora del rellotge; la memòria (l’altre xip) no se m’acut perquè la pot necessitar, una pila. Si tingués un esquema ho podria entendre, però és igual; ja tinc clar com ho he de resoldre.

La solució ha estat molt fàcil i expeditiva: he soldat un pont entre el positiu de la pila, i el citat pin de sortida anomenat “BAT”. En altres paraules, fent això he connectat la pila a la pota 3 del xip (és el cable gris de la foto que us he dit que ja explicaria). D’aquesta manera el xip hauria de ser capaç de seguir comptant el temps quan perd la tensió d’alimentació (els 5V que provenen de l’Arduino). Només cal provar-ho: li carrego de nou l’hora, el desendollo de l’ordinador, espero una estona, i el torno a endollar. Segueix donant bé l’hora, solucionat.

Funciona! Ha mantingut l’hora malgrat no rebre corrent de l’Arduino.

O sigui que ja tinc el mòdul del rellotge a temps real operatiu, i he pogut fer-vos una petita demostració de com funciona. He de dir que un dia després sense cap alimentació, he connectat el mòdul de nou i no ha perdut l’hora. Si hem de fer cas a les especificacions, no la perdrà en molts anys…

Espero que aquest exemple del mòdul RTC hagi estat prou il·lustratiu del que us explicava al principi, d’això de la “quincalla xinesa”. Ja heu pogut veure que hi ha enviaments lents, problemes, mala documentació, qualitat justa, però al final acaba funcionant i surt a molt bon preu. De pas exercitem una mica les nostres habilitats, i la matèria gris tot pensant com resoldre els inconvenients que ens van apareixent!

Només em queda dir-vos que aquest mòdul haurà de formar part d’un projecte en el que estic treballant, no l’he comprat només per escriure aquesta presa de contacte. Més endavant ja veureu de què es tracta, de moment no vull dir res més. Per als lectors habituals (si en tinc algun), aquesta vegada no he penjat les fotos al flickr, he cregut que no feia falta, de tan poques, i tan petites la majoria. Fins una altra!