Hi ha molts mòduls per Arduino o per a l'ús en projectes DIY per makers. En el cas de l' L298N és un mòdul per controlar motors. Amb ells es poden usar simples codis per programar la nostra placa Arduino i ser capaços de controlar motors DC d'una manera senzilla i controlada. Generalment, aquest tipus de mòdul s'usa més en robòtica o en actuadors mitjançant motors, encara que es pot utilitzar per a multitud d'aplicacions.
Ja vam introduir tot el necessari sobre el mòdul ESP, amb xip ESP8266, un mòdul que permet estendre les capacitats de les plaques Arduino i d'altres projectes perquè disposin de connectivitat WiFi. Aquests mòduls no només es poden usar aïllats, el bo és que es poden combinar. Per exemple, es pot usar un ESP8266 per al nostre prototip i el L298N, amb la qual cosa aconseguiríem un motor controlable a través d'Internet o per wireless.
Introducció a l'L298N i datasheets:
Encara que amb Arduino també es pot treballar amb motors pas a pas, que són bastant coneguts en robòtica, en aquest cas sol ser més habitual utilitzar el controlador o driver per a motors DC. Pots aconseguir informació de l'xip L298 i dels mòduls en els datasheets dels fabricants, com el de STMicroelectronics d'aquest enllaç. Si vols veure un datasheet de la lliçó concret, i no només de l'xip, pots descarregar aquest altre PDF de l' Handsontec L298N.
Però a grans trets, un L298N és un controlador de tipus H-bridge que permet el control de velocitat i direcció de gir de motors de corrent continu. També es pot fer servir amb motors pas a pas de forma senzilla gràcies als 2 H-pont que implementa. És a dir, un pont en H, el que significa que està format per 4 transistors que permetran invertir el sentit del corrent perquè el rotor de l'motor pugui girar en un o altre sentit segons vulguem. Això és un avantatge enfront dels controladors que només permeten controlar la velocitat de gir (RPM) controlant únicament el valor de la tensió d'alimentació.
El L298N pot treballar amb diversos voltatges, des dels 3v als 35v, ia una intensitat de 2A. Això és el que realment ha de determinar el rendiment o velocitat de gir de l'motor. Cal tenir en compte que l'electrònica que consumeix el mòdul sol consumir al voltant dels 3v, de manera que el motor va a rebre sempre 3v menys de l'alimentació a la qual ho estiguem alimentant. És un consum una mica elevat, de fet té un element d'alta potència que necessita d'un dissipador com podeu veure a la imatge.
Per controlar la velocitat, es pot fer alguna cosa invers al que fèiem amb el LM35, en aquest cas, en comptes d'obtenir una tensió determinada a la sortida i haver de converrtirla en graus, aquí serà tot el contrari. Alimentem a l'driver amb una tensió menor o major per obtenir un gir més ràpid o més lent. A més, el mòdul L298N permet alimentar també la placa Arduino a 5v sempre que estiguem alimentant el controlador amb al menys 12v de tensió.
Integració amb Arduino
Existeixen multitud de projectes amb els quals pots utilitzar aquest mòdul L298N. De fet, simplement pots imaginar tot el que podries fer amb ell i posar fil a l'agulla. Per exemple, un exemple senzill seria el control de dos motors de corrent continu com es pot apreciar en el diagrama anterior realitzat amb Fritzing.
Abans de treballar amb el L298N hem de tenir en compte que l'entrada de la lliçó o Vin admet tensions entre 3v i 35v i que ho hem de connectar també a terra o GND, com s'aprecia en la imatge amb el cable vermell i negre respectivament. Un cop connectat a l'alimentació, el següent és connectar el motor o els dos motors que accepta per controlar simultàniament. Això és implementar, només has de connectar els dos borns de l'motor a la fitxa de connexió que té el mòdul a cada costat.
I ara ve potser el més complicat, i és connectar les connexions de la lliçó o pins als d'Arduino de manera adequada. Recorda que si el jumper o pont regulador de la lliçó es troba tancat, és a dir, ja, s'activa el regulador de tensió de la lliçó i es té una sortida de 5v que pots fer servir per alimentar la placa Arduino. En canvi, si treus el jumper desactives el regulador i necessites alimentar Arduino de manera independent. Ull! Perquè el jumper només pot estar posat fins tensions de 12v, per a més d'això has de retirar-lo per no danyar el mòdul ...
Pots apreciar que hi ha 3 connexions per cada motor. Les marcades com IN1 a In4 són les que controles els motors A i B. Si no tens un dels motors connectat perquè només et cal un, llavors no hauràs de posar-les totes. Els jumpers que hi ha a cada costat d'aquestes connexions per a cada motor són ENA i ENB, és a dir, per activar el motor A i B que han d'estar si volem que funcionin tots dos motors.
Per a el motor A (Seria el mateix per a B), hem de tenir connectats IN1 i IN2 que van a controlar el sentit de gir. Si IN1 està en HIGH i IN2 en LOW, el motor gira en un sentit, i si estan en LOW i HIGH, gira en l'altre. Per controlar la velocitat de gir has de treure els jumpers INA o INB i usar els pins que apareixen per connectar-lo a PWM d'Arduino, de manera que si li donem un valor 0 a 255 obtenim una velocitat baixa o més alta respectivament.
Quant a la programació, també és senzilla en Arduino IDE. Per exemple, un codi seria:
<pre>// Motor A int ENA = 10; int IN1 = 9; int IN2 = 8; // Motor B int ENB = 5; int IN3 = 7; int IN4 = 6; void setup () { // Declaramos todos los pines como salidas pinMode (ENA, OUTPUT); pinMode (ENB, OUTPUT); pinMode (IN1, OUTPUT); pinMode (IN2, OUTPUT); pinMode (IN3, OUTPUT); pinMode (IN4, OUTPUT); } //Mover los motores a pleno rendimiento (255), si quieres bajar la velocidad puedes reducir el valor hasta la mínima que son 0 (parados)</pre> <pre>//Para mover los motores en sentido de giro contrario, cambia IN1 a LOW e IN2 a HIGH void Adelante () { //Direccion motor A digitalWrite (IN1, HIGH); digitalWrite (IN2, LOW); analogWrite (ENA, 255); //Velocidad motor A //Direccion motor B digitalWrite (IN3, HIGH); digitalWrite (IN4, LOW); analogWrite (ENB, 255); //Velocidad motor B }</pre>