{"id":855,"date":"2019-12-28T16:25:37","date_gmt":"2019-12-28T16:25:37","guid":{"rendered":"http:\/\/robots-argentina.com.ar\/didactica\/?p=855"},"modified":"2020-11-04T15:13:02","modified_gmt":"2020-11-04T15:13:02","slug":"uso-de-la-placa-l298n-para-motores-de-cc","status":"publish","type":"post","link":"https:\/\/robots-argentina.com.ar\/didactica\/uso-de-la-placa-l298n-para-motores-de-cc\/","title":{"rendered":"Uso de la placa L298N para motores de CC"},"content":{"rendered":"
Este art\u00edculo es el paso 1 para ir adelantando explicaciones sobre el funcionamiento de un robot navegador<\/strong> con dos sensores de obst\u00e1culos al frente y uno en la parte trasera, que publicar\u00e9 en breve<\/em><\/strong>. Nos muestra c\u00f3mo se debe utilizar la placa de manejo (doble puente H<\/a>) L298N<\/a> para controlar un motor de CC.<\/p>\n <\/a><\/p>\n Este m\u00f3dulo tan com\u00fan en el Mercado, basado en el chip L298<\/a>, permite controlar dos motores de corriente continua, o un motor paso a paso bipolar, en ambos casos de hasta 2 A por salida.<\/p>\n Diagrama de circuito del circuito integrado L298<\/strong><\/p>\n <\/a><\/p>\n El m\u00f3dulo es autosuficiente para funcionar en el control de los motores, sin que sea necesario disponer de elementos adicionales. Ya tiene los diodos de protecci\u00f3n de contracorriente y un regulador LM78M05<\/a> interno que suministra 5V a la parte l\u00f3gica del integrado L298.<\/p>\n La salida en la bornera A esta compuesta por las l\u00edneas OUT1<\/strong> y OUT2<\/strong>, y la salida B por OUT3<\/strong> y OUT4<\/strong>. <\/p>\n <\/a><\/p>\n En la parte inferior se encuentran los pines de control del m\u00f3dulo, marcados como IN1<\/strong>, IN2<\/strong>, IN3<\/strong> e IN4<\/strong>. A los lados de estas se\u00f1ales encontramos un pin de 5V preparado para colocar puentes de selecci\u00f3n (jumpers) que habilitar cada una de las salidas del m\u00f3dulo, A y B). Los pines de habilitaci\u00f3n son nombrados, respectivamente, ENA<\/strong> y ENB<\/strong> (por la palabra en ingl\u00e9s Enable<\/strong> = habilitaci\u00f3n).<\/p>\n Conexi\u00f3n de alimentaci\u00f3n<\/strong><\/p>\n Este m\u00f3dulo se puede alimentar de dos maneras: utilizando o no el regulador LM7805<\/strong> integrado en la placa.<\/p>\n <\/a><\/p>\n El m\u00f3dulo permite ingresar una alimentaci\u00f3n para los motores y l\u00f3gica de entre 6V a 12V CC (7,5V a 12V si se est\u00e1 utilizando el regulador interno, 78M05).<\/p>\n Cuando el puente de selecci\u00f3n de 5V se encuentra activo, dado que de esta manera el regulador se encuentra activo, el pin marcado como +5V<\/strong> tendr\u00e1 un voltaje de salida de 5V CC. Este voltaje alimenta dentro de la placa la l\u00f3gica del chip, y tambi\u00e9n se puede usar para dar alimentaci\u00f3n a la parte de control del m\u00f3dulo, ya sea un microcontrolador de otro tipo o una placa Arduino, pero recomendamos que el consumo externo que se tome de la placa L298N no supere los 500 mA.<\/p>\n Cuando el jumper de selecci\u00f3n de 5V es retirado, el m\u00f3dulo admite una alimentaci\u00f3n m\u00e1s amplia para los motores: de entre 12V a 35V CC. Como en este caso el regulador interno 78M05 no se utiliza, tendremos que conectar el pin de +5V a una tensi\u00f3n de 5V externa, regulada, para alimentar la parte l\u00f3gica del L298N. Usualmente esta tensi\u00f3n puede ser la misma de la parte de control, ya sea un microcontrolador de otra l\u00ednea o una placa Arduino.<\/p>\n No se debe conectar una tensi\u00f3n de entrada al pin de +5V cuando se encuentre colocado el puente de selecci\u00f3n de 5V. Esto provocar\u00eda un conflicto entre ambas fuentes de alimentaci\u00f3n y podr\u00eda da\u00f1ar permanentemente el m\u00f3dulo.<\/font><\/strong><\/p>\n Control de un motor de CC<\/strong><\/p>\n Como demostraci\u00f3n, vamos a controlar un motor de CC usando la salida B<\/strong> del m\u00f3dulo. El pin de habilitaci\u00f3n ENB<\/strong> se mantiene en ALTO<\/strong> por medio de la conexi\u00f3n al pin 3 del Arduino, puesto en ALTO<\/strong> por el programa. Opcionalmente se puede conectar ENB<\/strong> a +5V<\/strong> con el jumper (marcado amarillo en los diagramas) \u2014como se observa en la imagen de abajo\u2014, aunque luego deberemos modificar la conexi\u00f3n para el segundo ejercicio.<\/p>\n El ejemplo fue desarrollado en Arduino UNO, pero el c\u00f3digo es compatible con cualquier Arduino.<\/p>\n Esquema de conexi\u00f3n del ejemplo 1<\/strong><\/p>\n <\/a><\/p>\n Tabla de se\u00f1ales de control<\/strong><\/p>\n <\/a><\/p>\n C\u00f3digo en el Arduino \u2013 Ejemplo 1<\/strong><\/p>\n El programa activar\u00e1 el motor en un sentido por cuatro segundos, luego detiene el motor por medio segundo, despu\u00e9s activa el motor en sentido inverso por cuatro segundos, y por \u00faltimo detiene el motor durante cinco segundos. Este ciclo se repite indefinidamente.<\/p>\n Control de un motor CC con variaci\u00f3n de su velocidad<\/strong><\/p>\n Si queremos controlar la velocidad del motor, debemos hacer uso de una salida PWM<\/a><\/strong>, en este ejemplo la salida digital 3<\/strong> del Arduino Uno. Esta se\u00f1al PWM<\/strong> ser\u00e1 aplicada a los pines de activaci\u00f3n de cada salida, ENA<\/strong> y ENB<\/strong> respectivamente, de manera que en este caso los jumper de habilitaci\u00f3n a +5V<\/strong> no deben ser colocados.<\/p>\n\/*\r\nEjemplo de control de motor CC usando modulo L298\r\nEl programa activa el motor en un sentido por 4 segundos,\r\npara el motor por 500 ms, activa el motor en sentido inverso por 4 segundos\r\ny se detiene por 5 segundos. Se repite indefinidamente.\r\n*\/\r\nint ENB = 3; \/\/ ENB conectada al pin 3 \/ SIN EL JUMPER EN ENB\r\nint IN3 = 5; \/\/ Input4 conectada al pin 4\r\nint IN4 = 4; \/\/ Input3 conectada al pin 5\r\n\r\nvoid setup()\r\n{\r\npinMode(ENB, OUTPUT); \/\/ ENB\r\npinMode(IN4, OUTPUT); \/\/ Input4\r\npinMode(IN3, OUTPUT); \/\/ Input3\r\ndigitalWrite(ENB,HIGH); \/\/ ALTO habilita la salida B \/ SIN EL JUMPER EN ENB\r\n}\r\n\r\nvoid loop()\r\n{\r\n\/\/ Motor gira en un sentido\r\ndigitalWrite(IN4, HIGH);\r\ndigitalWrite(IN3, LOW);\r\ndelay(4000);\r\n\/\/ Motor no gira\r\ndigitalWrite(IN4, LOW);\r\ndelay(500);\r\n\/\/ Motor gira en sentido inverso\r\ndigitalWrite(IN3, HIGH);\r\ndelay(4000);\r\n\/\/ Motor no gira\r\ndigitalWrite(IN3, LOW);\r\ndelay(5000);\r\n}\r\n<\/pre>\n
\n