Hola bienvenidos nuevamente a otro capítulo de este máster en Arduino y llega la oportunidad de presentar
estos motores de corriente continua utilizados principalmente para robótica.
Tienen la ventaja de que incluyen una caja de reducción para obtener a su salida menores revoluciones
por minuto y más fuerza lo que no nos va a permitir crear autos vehículos robots con cierta tracción
así que son muy interesantes.
Estos motores poseen dos terminales y los vamos a alimentar con entre 6 y 7 voltios.
Esa es su tensión incluso un poco más.
No pasa nada con menos tensión.
Lo peor que puede pasar es que gire poco que no tenga fuerza o que los sumo nos gire.
Una ventaja es que nunca nos vamos a equivocar en la polaridad ya que podemos alimentarlo de ambas maneras.
De hecho que esto es algo que vamos a usar ya que al invertir la polaridad de alimentación vamos a lograr
que el motor gire en el sentido opuesto.
Su consumo es bastante considerable en comparación de los actuadores que venimos utilizando en el curso.
Estamos hablando de que consume entre 100 y 200 miliamperios incluso más incluso más cuando está bajo
cierta carga sin motor se fuerza a consumir bastante corriente por ende nunca lo vamos a poder alimentar
directamente desde la placa Arduino vamos a terminar quemando o el regulador o el fusible o poniendo
en riesgo el puerto BSB de la computadora entonces para poder controlar estos motores vamos a utilizar
un módulo que está basado en el integrado L 2 98 el L 2 98 tiene en su interior lo que se conoce como
puente.
Un puente H es una configuración especial de transistores que nos va a permitir de manera simple generar
el mismo efecto que si invirtiéramos los cables en el motor.
Y para qué quiero esto.
Justamente para lograr con un controlador en este caso el Arduino UNO la acción de invertir el sentido
de giro del motor.
Entonces yo puedo hacer que mi vehículo mi robot vaya hacia adelante o hacia atrás como vamos a tener
a futuro dos ruedas haciendo girar una hacia adelante y la otra hacia atrás consigo giros pero en definitiva
para qué necesito este driver.
Cómo se conoce este driver de motores de corriente continua y también puede ser usado para motores paso
a paso.
Para qué lo necesito.
Pues lo que va a hacer es de intermediario entre una fuente de poder de mayor potencia y el motor recibiendo
órdenes de nuestro Arduino UNO con nuestra placa Arduino.
Yo voy a poder decirle a este módulo qué tiene que hacer y cómo va a controlar el motor de esa manera
estamos protegiendo la alimentación de la placa Arduino.
Entonces vamos a ver en profundidad cómo funciona este módulo cómo lo voy a operar.
Bueno para eso vamos a describir un poco sus pines.
Bueno en primer lugar vemos dos borderías de dos tornillos una a cada lado y vamos a ver qué dice en
La Bombonera de la izquierda.
1 2.
Aquí vamos a conectar uno de los motores y en el caso de que tengamos dos motores como va a ser el nuestro.
Más adelante tenemos una Wörner a la derecha con dos tornillos la serigrafía dice como veremos A3 AT
4 están descritas como salidas porque esos son.
Por ahí va a salir la tensión que va a controlar los motores.
Luego tenemos una Wörner de tres tornillos en la parte inferior y en las inscripciones dice behin o
ves ese gran en la patita del medio y después otra tercera salida que dice 5 voltios.
Vamos a ver un poquito esto cómo funciona.
En Beijing y drawn la primera y segunda posición de la Borna era vamos a conectar la alimentación que
proviene de la fuente grande de la Fuente que va a alimentar nuestros motores.
De hecho cuando el Sampere está puesto por éste Pin van a salir 5 voltios por si necesito alimentar
otra cosa me está brindando una segunda opción esta placa aprovechando que tiene un regulador que se
usa para controlar lo digital de este módulo me ofrece la posibilidad de utilizar también esos 5 voltios
para algo que yo necesite cuando ya utilizamos motores de más de 12 voltios.
Bueno me voy a ver en la obligación de traer de la placa Arduino o de otro lado 5 voltios para inyectarlo
por aquí pero para eso voy a tener que retirar el zampar siempre algo que también es importante en esta
configuración es comunicar los Ground a las masas yo necesito masa común entre la fuente principal del
motor y la fuente del microcontrolador en este caso la fuente del Arduino UNO Y ahora vamos a ver las
entradas digitales que nos va a permitir controlar propiamente el motor como vemos en la parte central
de tabernera tenemos cuatro pines y 1 al ponerlo en alto va a activar la salida output 1 la 2 la salida
2 y 3 la salida 3 4 la salida 4 entonces podemos redondear que los dos pines de la izquierda que señalo
ahora controlan el motor izquierdo y los dos pines de la derecha el motor derecho.
Si yo pongo este pin en alto y el PIN segundo en bajo voy a lograr que el motor comience a girar en
un sentido si yo invierto la lógica de estos pines primero en bajo segundo en alto el motor izquierdo
va a girar en el otro sentido.
Lo mismo sucede con el motor de la derecha.
Ahora bien cómo voy a controlar la velocidad de estos motores si hacemos andar uno de los motores.
Vamos a descubrir que al retirar el Samper que señalo a continuación supongamos hago girar el motor
de la izquierda y mientras está girando Quito este Samper voy a notar que se detiene el motor y esto
sucede por lo siguiente Cuando yo pongo el pin que vemos aquí en alto el motor gira por eso se llama
enable habilita la salida de estos motores habilita la salida de este motor entonces si queremos controlar
velocidad este ping que señaló Acá nos viene como anillo al dedo para aplicar aquí una señal pedo leve.
M.
Esto va a ser que en función del ancho de pulso de esa señal obtengamos más o menos revoluciones por
minuto en el motor para poder utilizar este pin.
Voy a tener que retirar previamente el champán o este puente plástico que tenemos aquí.
Lo mismo pasa a la derecha puedo controlar la velocidad del motor derecho poniendo una señal doble BGM
en el pin que señalo.
Bueno y cómo vamos a conectar esta placa al Arduino UNO.
Miren lo vamos a hacer así uno lo vamos a conectar a la salida digital.
3 Y de ahí en más así.
4 5 y 6 o sea.
Entonces con las áreas digitales de 3 a 6 vamos a controlar el sentido de giro de los motores y luego
vamos a sacar otros dos cables de este ping que está acá y otro de este pin para qué vamos a usar esos
pines.
Vamos a sacar entonces de esos dos pines dos cables que van a ir este al PIN digital número 10 y uso
el 10 porque estoy seguro que tiene Pedro el BBM.
Y este al 11 porque también estoy seguro que tiene doble BBM.
Quiero controlar con estos pines la velocidad del motor y con los del medio voy a controlar el sentido
de giro del mismo bueno ahora llegó el turno de conectar los motores a los motorcito de estos vienen
con dos contactos de chapa de cobre y lo ideal y se lo recomiendo mucho es que los suelten.
No basta con enrollar los hay.
Si bien funcionaría como algo precario una prueba momentánea habría que soltarlos para eso.
Por último la alimentación.
Yo voy a conectar en Bein aquí voy a conectar los 6 voltios que vienen de mi batería en mi caso estoy
usando esta batería de 6 voltios y en gran a conectar tanto el gran que viene de la batería.
Negativo de esa pila como el negativo que viene del Arduino para asegurarnos por qué a veces cuando
trabajamos con baterías de baja tensión no es suficiente la tensión para poder ser regulada y utilizar
el jammer puesto.
Recuerden los usos han propuesto no necesito traer 5 voltios para la etapa lógica para asegurarnos podemos
sacar el lo quitamos y ahí si venimos con 5 voltios del Arduino y lo inyectamos aquí bueno ahí tendríamos
ya conectado y configurado todo el hardware para empezar a probar estos motores así que si me acompañan
vamos al código bueno vamos a proceder entonces a declarar los pines que provienen de nuestra placa
controladora de motores.
Entonces vamos a hacer lo siguiente Con esto Veidt.
Recuerden la costumbre de que usamos Veidt para ahorrar memoria y vamos a decir motor izquierdo a Iguala
3 pero en el PIN 3 tenemos este este motor que vendría a ser ah bueno vendría a ser el primer pin.
Entonces después necesitaré otro que es con los
K puse el motor izquierdo ve con estos dos estoy completando los dos primeros pines.
O sea que controlando el estado alto o bajo de estos dos pines voy a generar que el motor izquierdo
vaya en un sentido u otro.
Remarco de que le he puesto el motor izquierdo pensando en que tenemos dos motores para generar algún
tipo de unidad rodante que vaya para un lado o para el otro de acuerdo a cómo accionan los motores.
Bueno hacemos lo mismo para el motor derecho
luego tenemos los enable que son estos pines que nos permiten activar o desactivar el motor que nosotros
vamos a usar para la señal.
VM y controlar así la velocidad.
Vamos con el del motor izquierdo
que lo teníamos en el PIN 10 y ahora vamos con el derecho
listo nos va a hacer falta también otra variable pero esta vez no constante que va a ser velocidad.
Me animo a ponerle de tipo Veidt porque sé de antemano que la velocidad no va a superar los 255 por
qué.
Porque esta variable es la que voy a usar para definir el doble B.M y se acuerdan.
El problema reside a valores de cero a 12:54 justo el tamaño de un bait así que acá de nuevo estoy agarrándome
el poner un entero
vamos al zETAp vamos a necesitar habilitar el puerto serial y vamos ahora a definir cómo van a trabajar
cada una de las salidas digitales las cuatro que tenemos y van a ser todas salidas así que vamos
listo esto por este lado y que nos falta ahora.
Bueno dijimos que vamos a usar señales P doble M Yo me voy a asegurar para que siempre arranque detenido
nuestro motor en definir y asignarle un valor el valor cero.
Entonces yo ya tranquilamente puedo hacer acá lo siguiente análogo Rohit.
Se acuerdan de que no necesitamos declarar el PIN Mogt cuando vamos a hacer doble BM sobre un pin entonces
análogo right Nagle y vamos a probar con el motor izquierdo.
Y qué valor le voy a pasar de velocidad qué ancho de pulso.
Bueno yo le quiero pasar el cero porque quiero que arranque detenido siempre pero ya lo tengo en una
variable velocidad de ahora en más me voy a manejar con esa variable para indicar la velocidad vamos
a hacer lo mismo para el Derecho.
Bueno se acuerdan cuál era la ventaja de usar estos pedrolo VM.
La ventaja está que es una capacidad del hardware así que en cuanto declaraba esto la señal P2 9M permanecía
emitiéndose de manera ininterrumpida aunque no tengamos nada bueno en este caso esta señal va a ser
nula porque es de tamaño o ancho cero el pulso.
Pero ya hemos habilitado esa salida.
Así que con que a posteriori modifiquemos el valor de velocidad mediante Analogue Rohit ya sea en el
Luv o en otra función podemos hacer que el motor empiece a girar a determinada velocidad.
Cómo ven.
Yo ya me preparé una función acá.
Iba a ser para controlar el motor izquierdo vamos a empezar a probar con el motor izquierdo.
Miren que en esta función que preparé estoy esperando un valor que se llama sentido.
Qué es este sentido.
Es simplemente en qué dirección va a rotar el motor.
Entonces vamos a decir lo siguiente Si sentido es igual a tu ni convencion va a ser esta sin sentido
y buena TV.
Quiero que vaya para adelante y si sentido es igual a Fals lo vamos a hacer en el sentido opuesto para
hacer girar el motor simplemente hacemos esto digital Ronit debo pasarle el PIN en este lado.
En este caso motores pierdo a lo que quiero en alto y luego el PIN ve del mismo motor lo quiero en bajo.
Con esto no estoy haciendo otra cosa más que ponerle en un pin del motor positivo y en el otro pin negativo
se entiende bastante simple después voy a decir X o sea si no es sentido igual la.
O sea si es igual a Fals voy a poner lo mismo pero el inverso.
Eso es todo
lo
y por último vamos a agregar fuera del IBF porque quiero hacerlo siempre el tema de establecer la velocidad.
Entonces voy a decir acá estamos controlando la izquierda así que me copio esto.
Miren ahí está Analogue right en el izquierdo velocidad acá faltona de una
y otra vez.
Perfecto bueno esto es lo que va a hacer es cambiar la velocidad a la que está girando el motor.
Pero cómo llega esta variable a donde estoy modificando en definitiva la velocidad del motor.
Bueno lo que tendría que hacer en realidad de acá es decir recibir una segunda variable
llamada real y acá Bell entonces lo que puedo hacer.
O sea que no va a tener mayor función esta variable más que para el inicio llamarla así.
Velocidad inicial acá y acá vamos a agregar y modificar esto inicial ahora me va gustando más
pero de momento no va a funcionar esto porque a esta función no le estoy llamando desde ningún lado.
Ahora qué puedo hacer.
Voy a poner a prueba los dos sentidos de giro cómo haciendo esto control izquierdo que me pide control
izquierdo que le pase primero un sentido bueno quiero que vaya para adelante y luego le tengo que pasar
la velocidad.
Por ahora le voy a pasar la velocidad máxima que sería 12:54 quiero que se mantenga así durante 2 segundos
copio y pego lo que voy a hacer ahora es en el sentido opuesto otros dos segundos algo que tengo que
tener en cuenta es que esto es una mala práctica con los motores estoy maltratando el motor por qué.
Porque está yendo hacia un lado y no espero que se frene que ya lo estoy poniendo en el sentido opuesto.
Eso a la larga daña engranaje daña el motor e incluso genera un gran pico de consumo entonces no viene
mal generar un segundo de espera entre cambio y cambio bueno esto es algo que vamos a cuidarnos para
cuando desarrollemos aplicaciones con motores de corriente continua sobretodo que lleven una carga muy
importante.
Supongamos que este motor está haciendo girar una pesa de un kilo.
Se imaginan si yo le cambiara repentinamente el sentido pobre motor tendría que romper la inercia de
la velocidad que ya trae más generar el movimiento opuesto.
Pobre motor.
Así que sigamos.
Bravo.
Bueno tengo un error me olvidé de modificar cuando cogí pegué el nombre de esta variable a que sería
yo.
Ahora tendré que andar.
Y acá también estaba el error aquí el error
corregido
y por el que me quedó
ahora vamos
vieron.
No nos fue tan bien acá nos falta algo muy muy importante.
Ahí luego de los dos segundos funcionando quiero que se detenga Espere un segundo detenido.
Vuelve a arrancar en el sentido opuesto.
Y otra vez
vuelvo a detenerlo cuando lo detengo acá da lo mismo si pongo o Fals porque va a estar en cero no hay
inconveniente.
Vamos a ver qué hace esto.
Bueno cómo ven la pausa se está generando pero no cambia el sentido vamos a tener que analizar un poco
más en qué estamos errando y como ven acá este es un error típico clásico totalmente involuntario de
mi parte por supuesto y es haber puesto un signo igual.
Simple aquí porque acá lo que estoy haciendo es decir que sentido es igual a tú y yo quiero preguntar
si es igual a truc.
Por eso se usa doble signo.
Ahora sí probamos ya
cómo lo ven ya lo hemos conseguido.
Solo nos resta ahora empezar a controlar la velocidad y acá vamos a hacer un ejercicio muy necesario
que es descubrir el menor ancho de pulso necesario para que el motor empiece a girar.
Sucede que la primera parte del recorrido del doble B.M será desde el cero hasta aproximadamente el
60 o por ahí no sirve de nada porque no es suficiente para que gire van a escuchar que el motor Sumba
por la misma frecuencia del doble B.M pero no alcanza a girar.
Entonces yo necesito descubrir cuál es el recorrido útil que tengo en el doble B.M.
Por lo general arranca como les digo del 50 60 hasta los 254.
Cómo vamos a hacer esto.
Miren de la siguiente manera nos vamos a valer de la variable velocidad inicial que sabemos que arranca
en cero vamos a incrementarla en 1 luego vamos a dejar un pequeño delay para que no suba tan rápido.
Y por último
vamos a imprimir por pantalla el valor de velocidad así lo tenemos en la terminal y qué estamos haciendo
cada 100 milisegundos.
Aumentar en 1.
Quizás esto sea muy rápido.
Ahí vamos a aumentar en 1 la velocidad o sea el ancho de pulso.
Yo lo estoy pasando en cada vuelta a la función controlã izquierdo un incremento en la velocidad.
Entonces yo voy a tener que mirar el motor y si pudiera al mismo tiempo la terminal para detectar en
qué velocidad o sea en qué ancho de pulso empieza a girar el motor.
Vamos a probarlo y veamos
dónde estamos en 60.
Bueno podríamos decir que el 70 arranca.
Miren cómo empieza a acelerar.
Me permite entonces declarar ahora una nueva variable que va a ser velocidad mínima para qué.
Para que cuando necesitemos que el motor se ponga en marcha viniendo de detenido ya sabemos que tenemos
que arrancar en 70.
Esto no quiere decir que para dejarlo frenado lo tengamos que dejar en 70 o menos porque va a quedar
consumiendo el motor frenado es cero solo que cuando querramos hacer un incremento progresivo vamos
a utilizar el 70 como punto de partida para que rompa la inercia rápidamente.
Bueno ya conocemos un poco más sobre motores.
Sabemos conectarlos a la placa Arduino.
Cómo vincularlos mediante un controlador de motores.
Y podemos cambiar su sentido controlar su velocidad y lo más importante que acabamos de ver.
Casi sin darnos cuenta cómo progresivamente irá aumentando la velocidad para no generar tirones o movimientos
bruscos.
Gracias por acompañarme en este capítulo nos vemos.