El món gira

Fa uns dies el meu fill -que té quatre anys- va portar de l’escola una maqueta del nostre estimat planeta. Ell mateix havia pintat a classe els oceans i els continents damunt una bola de poliestirè expandit (és a dir, porexpan), i li va clavar un pal de fusta per dur-lo amunt i avall com un xupa-xup. Després d’ensenyar-me la seva obra, em va preguntar si podíem posar la maqueta en un lloc que anés girant, tal com fa la Terra en realitat (darrerament està estudiant el sistema solar i és un tema que li apassiona). O sigui que ja tenia un repte damunt la taula, havia començat un nou projecte.

102_0270

La idea era senzilla, tant que no vaig fer ni un dibuix, va sortir tot parlant amb ell sobre com ho faríem. Vam quedar que faríem una base que s’endollaria a la corrent, on hi hauria un motor que faria girar el pal on hi clavaríem la maqueta del planeta. Som-hi!

MATERIALS
Un bon primer pas és sempre recopilar el material necessari. El primer que trobo és el motor, a la ja llegendària caixa de reciclatge. Si no recordo malament el vaig recuperar d’un expositor que feia girar els productes en una botiga. És perfecte perquè funciona directament a 230V, gira ben a poc a poc, i no fa soroll. A partir d’aquí la resta ve rodada: el cable per l’alimentació amb interruptor prové d’una làmpada de sobretaula; un retenidor de cables, una mica d’estany per soldar els cables al motor, tub retràctil per aïllar les soldadures, i ja tinc la part elèctrica completa. L’eix on hi clavaré el món pot ser gairebé qualsevol cosa, però el primer que se m’acut és un pal de bambú dels que et regalen als restaurants xinesos perquè el facis servir enlloc d’una forquilla; a la cuina en tinc molts. La resta del muntatge el completaré amb l’ajuda de la sempre polivalent cola calenta.

102_0267 102_0276

Ho he trobat tot excepte una cosa, només em falta la base. He estat rebuscant una mica, però tot el que he trobat m’ha semblat lleig o inadequat. No vull que el motor es vegi, i menys en un aparell que tindrem en un lloc de privilegi a la sala d’estar. Al final he pensat que bé em podia gastar uns quants cèntims en una base en condicions, així que he anat amb els nens al basar oriental que han obert al costat de casa. Hem trobat la base ideal, una capsa de fusta de la mida perfecta i sense cap acabat, l’excusa perfecta per fer una tarda de pintura amb els artistes de la casa. I per menys de tres euros.

102_0265

MANS A LES EINES
La capsa només necessita un parell de forats: un a la part superior per la sortida de l’eix (el palet de menjar arròs tres delícies), i l’altre, a la part del darrere, per permetre l’entrada del cable. Marco el centre de la tapa i la ubicació del forat del darrere amb l’ajuda del llapis i el regle. Llavors un cop de broca i llest.

102_0272 102_0277

A continuació, desmunto les frontisses i la tanca amb el tornavís. Tota vostra, a pintar, nanos! Així és com ha quedat de meravellosa la capsa, superat el trauma de la pintura infantil.

102_0288 102_0285

Aquest hauria estat un projecte d’una sola tarda, si no hagués calgut deixar assecar la pintura. Tot i així, no queda massa feina per fer.

El següent pas és fixar el retenidor de cable a la capsa, fer-hi passar el cable, i soldar-lo al motor. Aïllo les soldadures i ja ho tinc, ja puc comprovar que gira.

102_0292

Com que el motor ha funcionat, segueixo endavant més tranquil. Ara és el torn d’unir l’eix al motor. Per cert, que l’eix l’he tallat i li he fet punta amb el cutter, a punt per clavar-hi la bola de porexpan. Serà l’eix de rotació del món. En aquest procés faig servir la cola calenta, sense complicar-me, un bon pilot de cola i llest. Però resulta que no és tan fàcil, el pal té tendència a caure, no s’està quiet, i la cola tarda més del previst en assecar-se. No em puc permetre que no quedi ben recte amunt, sinó quan giri serà un desastre. Una mica més de cola i un anell de plàstic provinent de la cinta adhesiva ho resolen, al final. Expeditiu i lleig, m’encanta.

102_0283 102_0295

Falta enganxar el motor a la base i, per això torno a fer servir la cola calenta. Només m’he d’assegurar que l’eix del motor quedi ben bé al centre de la capsa, perquè el pal de bambú no fregui enlloc. Tampoc acaba essent fàcil, però prenent un parell de mides i aguantant el motor mentre la cola s’asseca ho acabo resolent.

102_0293

TOCS FINALS
Tot seguit collo les dues meitats de la capsa amb les frontisses i la tanca, això no té cap misteri; ja quasi ho tinc. Per últim, només em queda empalar la mare Gaia a l’estaca punxeguda del capitalisme… ehem, vull dir… del bastonet de bambú.

102_0299

Finalitzat! Tot seguit un preciós vídeo de demostració de l’aparell en funcionament.

Com a nota aclaridora i disculpa, he de dir que he obviat la feina de col·locar l’eix i/o la base a la inclinació correcta per fer que hi hagi estacions, sols de mitjanit i aquesta mena de detalls. Només es tractava de fer content un nen de quatre anys que vol veure com el món gira, i de moment això ja ho he aconseguit. I amb poca estona de feina.

Fins a la propera!

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.

El mòdul del xip L298

Si voleu controlar motors de corrent contínua de baixa potència des d’un microcontrolador o circuit lògic, us farà falta un transistor potent, un mosfet, un darlington, o uns quants de cada. Si el que voleu és que aquests motors vagin endavant i enrere, com per exemple per controlar el moviment d’un cotxe ràdio-controlat o un robot, necessitareu muntar un circuit que es diu “pont en H”. I si el que voleu és tenir tot això integrat en un sol xip que ho té tot controlat, tard o d’hora anireu a parar a l’L298. Aquest integrat és un clàssic entre els constructors de robots d’arreu del món des de fa molt de temps, i no per res, sinó perquè és senzill, barat, robust, i fiable. I a més es troba en format “thru-hole”, el preferit dels aficionats!

dibuix L298N

Anem a veure què fa aquest xip, i com ho fa. El títol del datasheet és “Dual full-bridge driver”, que vindria a voler dir que hi ha dos ponts en H que subministren corrent, si fa no fa. Només cal veure l’esquema intern (“block diagram”) per identificar de seguida els dos ponts, tal com els heu vist a l’enllaç que us he posat de la viquipèdia (Com? Que no ho heu llegit?). A partir d’aquí es tracta de veure quina és la capacitat màxima de l’integrat, sobretot quant a tensió i corrent, ja que els motors, per petits que siguin, s’enfilen de seguida en aquests paràmetres.

Diu la fulla de dades que la tensió màxima que pot controlar l’L298 són 46V, que no és pas poc. La corrent pot arribar a 4A, de manera que amb aquest animalet podem moure motors força importants. Però això no vol dir que podem fer el que volem per sota d’aquests màxims, hi ha altres coses que hem de tenir en compte. Si llegim una mica més avall, veiem que els 4 ampers que dèiem fa uns moments són en realitat 2 per canal, que podem sobrepassar només durant períodes molt curts de temps. I també hem de tenir en compte la potència màxima que dissiparà el xip, 25W. Però aquesta dada porta implícita una condició, la temperatura no pot superar un cert valor. Per això és important que aquests xips portin als nostres muntatges radiadors per mantenir-se freds. Ara no entraré en càlculs ni en teories perquè no és el propòsit d’aquest post ni d’aquest blog, però feu-me cas, quan feu muntatges amb molta potència, tingueu en compte que la temperatura sempre és un factor limitant: és el que al final acaba fregint els components!

Des del punt de vista de l’ús que li podem donar a l’L298, aquests dos ponts H que hi ha integrats al xip es poden fer servir per diverses coses. La més evident és controlar dos motors alhora, però també es poden controlar solenoides, motors pas a pas, i tot el que se’ns acudeixi.

Suposem que us ha agradat aquest xip i el voleu provar, quina seria la manera més senzilla? Doncs comprant un mòdul, és clar! Que no recordeu el meu post al respecte? Us ho recordaré, doncs: es tracta de buscar “L298N module” a l’ebay o l’aliexpress, cercar per tot el món, ordenar per preu i transport, i finalment trobar una cosa com aquesta:

pantalla mòdul L298N ebay

En veureu molts, però no us espanteu que quasi tots són idèntics. Jo per posar la foto aquí n’he triat un a l’atzar; com podeu veure, per menys de tres dòlars ja el tens (2,18€ al canvi d’ara mateix), i a més te l’envien a casa des de l’altra banda del món. He mirat als distribuïdors habituals què em costaria només el xip, aquests són els resultats. Digikey: 3,77€. Farnell: 4,95€. Mouser: 3,74€. Cap d’ells inclou el transport, és clar. Quincalla xinesa, recordeu?

Al final jo en vaig comprar un altre, d’un proveïdor que ja li he comprat altres coses i és ràpid i fiable. Us poso un PDF amb totes les característiques que hi havia a la pàgina de l’article. Si us ho mireu, veureu que l’esquema d’aquest mòdul no deixa de ser el que recomana el datasheet del xip (figura 6, només es representa la meitat del circuit) amb alguns afegits. La part fonamental és el xip L298N en un encapsulat “multiwatt” (que és el que dóna la “N” al final del nom) que dissipa molta potència, junt amb el seu radiador d’alumini negre reglamentari; els vuit diodes recomanats, i connexions per les entrades i sortides. Com a extres hi ha un regulador a 5V amb els seus condensadors i un led indicador, per si volem alimentar el circuit lògic aprofitant la tensió que farem servir pels motors. Hi ha dos “jumpers” o ponts per connectar o desconnectar les potes que permeten els moviments de cada motor, això no cal ni tocar-ho. L’entrada d’alimentació dels motors, que són dos borns (massa i positiu), i un de sortida pels 5V del regulador que ja he esmentat (la massa o GND és comú a l’alimentació dels motors). La resta són dos borns de dos pols cadascun, un per a cada motor, que es troben a cada banda de la placa del mòdul. Tot seguit us explico com ho he cablejat tot plegat, mireu-vos primer les fotos.

tot el conjunt

el boarduino al protoboard el cablejat del mòdul

Com podeu veure, he posat un motor DC a cada born de sortida del mòdul, que podré controlar individualment. Aquests motors provenen de dues impressores de tinta HP que vaig tenir al marbre d’autòpsies fa un temps. Com que no en tinc les característiques, els he provat abans. Sembla que poden anar bé fins a 24V, però no cal forçar-los tant, a més la meva font d’alimentació casolana no puja tan amunt. Els he provat a 12V, que a més de ser un valor molt habitual sembla una tensió segura pels motors. En buit (deixant-los rodar lliurement sense cap càrrega a l’eix) consumeixen uns 60mA. Si intento frenar l’eix amb els dits, provocant fregament, aquesta corrent puja de seguida a uns quants centenars de miliampers. Si freno completament l’eix del motor, la corrent que demana a la font és d’uns 900mA, quasi un amper. Sembla que en tot moment ens trobarem dins els límits segurs del mòdul i de la font (bé, si freno els dos motors alhora no, la font dóna 1,5A com a molt).

Els 12V que surten de la font d’alimentació van directament al mòdul dels motors. A la sortida del regulador del mòdul, que dóna 5V, hi he penjat el meu fidel Boarduino, que faré servir per aquesta prova. Entre l’Arduino i el mòdul de l’L298N hi he posat un cable amb quatre pins, un per cada entrada, que he hagut de fer a mida: una mica de cable pla multifilar que no recordo d’on va sortir, un connector femella tallat a mida (i ben llimat, que l’espai al mòdul és molt just per culpa dels jumpers) i una mica d’estany i tub retràctil. La connexió al protoboard ha estat un moment: els pins que controlaran els motors seran del 8 a l’11, la sortida del regulador del mòdul va al pin “5V” de l’Arduino, i he unit les masses (GND). Finalment és hora de fer un petit programa amb l’IDE de l’Arduino per a provar-ho.

// dosmotors.ino
// escrit per serkeros (serkeros.wordpress.com)
// febrer 2014
// llicencia -> creativecommons.org/licenses/by-nc/3.0

void setup()
{
  pinMode (8,  OUTPUT);     // establir els pins com a sortida
  pinMode (9,  OUTPUT);
  pinMode (10, OUTPUT);
  pinMode (11, OUTPUT);

  digitalWrite (8,  LOW);   // començar amb els dos motors parats
  digitalWrite (9,  LOW);
  digitalWrite (10, LOW);
  digitalWrite (11, LOW);
}

void loop()
{
  digitalWrite (8,  HIGH);  // engegar motor esquerre
  delay(1000);              // esperar un segon
  digitalWrite (8,  LOW);   // parar motor esquerre
  digitalWrite (10, HIGH);  // engegar motor dret
  delay(1000);
  digitalWrite (10, LOW);   // parar motor dret
  delay(1000);
  digitalWrite (9,  HIGH);  // engegar motor esquerre al reves
  delay(1000);
  digitalWrite (9,  LOW);   // parar motor esquerre
  digitalWrite (11, HIGH);  // engegar motor dret al reves
  delay(1000);
  digitalWrite (11, LOW);   // parar motor dret
  delay(1000);
  digitalWrite (8, HIGH);   // engegar tots dos motors alhora
  digitalWrite (10, HIGH);
  delay(1000);
  digitalWrite (8, LOW);    // parar els dos motors
  digitalWrite (10, LOW);
  delay(1000);
  digitalWrite (9, HIGH);   // engegar tots dos motors al reves alhora
  digitalWrite (11, HIGH);
  delay(1000);
  digitalWrite (9, LOW);    // parar els dos motors
  digitalWrite (11, LOW);
  delay(1000);
}

Si llegiu el codi font us adonareu que no m’hi he trencat el cap: engegar un motor endavant, després l’altre, després al revés, els dos alhora… Ben senzill, però ja veieu que funciona. Ara imagineu una roda a cada motor i ja teniu el sistema locomotor del vostre primer robot. Fàcil, oi?

Una altra cosa seria que volguéssim controlar la velocitat de gir dels motors, això ja és una mica més complicat, tot i que amb l’Arduino no us penseu que gaire. La manera més fàcil de fer-ho, contra el que pugui semblar, no és regular la tensió als motors; és fer servir impulsos d’amplada controlada, o PWM en anglès. Si no sabeu de què va això del PWM millor que us llegiu l’article de la viquipèdia, però si us fa mandra us en faig un resum ràpid. Es tracta d’un senyal digital (uns i zeros) a una freqüència fixa (ara mateix no importa massa quina, però prou ràpida), dins la qual la proporció de temps de 0 i 1 es pot variar. D’aquesta manera, si és tot zero (0%) el motor està parat; i si és tot 1 (100%) el motor funciona al màxim. La gràcia però és que podem triar qualsevol estat intermig (per exemple, el 50%, en la que hi hauria la mateixa estona de 1 i de 0, o el 75% on hi hauria tres temps d’1 per cada temps de 0). En l’entorn Arduino és molt fàcil implementar el PWM, com ja he dit, només heu de llegir el funcionament de l’ordre “analogWrite”. En essència, el nostre PWM té 8 bits de resolució (podem donar valors de 0 a 255, més precisió que 0,5%). Mireu-vos aquest codi que he escrit i el resultat que ha tingut als motors. Adoneu-vos que hi ha hagut un petit canvi al hardware; com que no tots els pins de l’Arduino poden donar una sortida PWM, he canviat les connexions. Ara un motor es controla pels pins 5 i 6 (abans el feia anar amb el 8 i el 9), mentre que l’altre segueix amb els pins 10 i 11.

canvis al cablejat

// dosmotors_pwm.ino
// escrit per serkeros (serkeros.wordpress.com)
// febrer 2014
// llicencia -> creativecommons.org/licenses/by-nc/3.0

void setup()
{
  pinMode (5,  OUTPUT);              // establir els pins com a sortida
  pinMode (6,  OUTPUT);
  pinMode (10, OUTPUT);
  pinMode (11, OUTPUT);

  digitalWrite (5,  LOW);            // començar amb els dos motors parats
  digitalWrite (6,  LOW);
  digitalWrite (10, LOW);
  digitalWrite (11, LOW);
}

void loop()
{ int gas;                           // variable on posarem el valor del PWM

  for (gas = 255 ; gas > 0 ; gas--)  // motor esquerre de gas a fons a parat
    {  analogWrite (5, gas);
       delay(20);
    }
  digitalWrite (5,  LOW);            // parar del tot el motor esquerre
  delay(2000);                       // espera dos segons
  for (gas = 255 ; gas > 0 ; gas--)  // ara el mateix en sentit contrari
    {  analogWrite (6, gas);
       delay(20);
    }
  digitalWrite (6, LOW);             // parar del tot el motor esquerre  
  delay(2000);
  
  for (gas = 255 ; gas > 0 ; gas--)  // ara el mateix amb el motor dret
    {  analogWrite (10, gas);
       delay(20);
    }
  digitalWrite (10,  LOW);
  delay(2000);
  for (gas = 255 ; gas > 0 ; gas--)
    {  analogWrite (11, gas);
       delay(20);
    }
  digitalWrite (11, LOW); 
  delay(2000); 
}

Bé, ja veieu que és ben útil, aquest xip; i amb aquest mòdul, resulta molt fàcil incorporar-lo als vostres invents. Jo per part meva en penso encarregar algun més, ja que són molt útils i ràpids d’aplicar. Em faltaria explicar-vos com utilitzar-lo per a controlar un motor pas a pas, però aquestes bestioles ja són figues d’un altre paner i ara no em vull enrotllar més. Ho deixem per un altre dia, d’acord? De moment podeu trobar totes les fotos penjades al flickr, com sempre. A reveure!