Cómo hacer un servomotor usando un motor DC En este tutorial, aprenderemos a convertir cualquier motor DC en un servomotor personalizado independiente con muchas características. A diferencia de los servomotores estándar que tienen un movimiento limitado de 180 o 270 grados, este tiene un rango ilimitado de 360 grados y, además, tenemos la capacidad de ajustar el rango de rotación a cualquier valor que necesitemos.Eso es bastante útil, creo, y además de eso, incluso podemos ajustar el punto central del servo. Entonces, podemos ajustar tanto el punto central como el rango de rotación al mismo tiempo. Principio de funcionamiento del servomotor Para explicar el principio de funcionamiento de un servomotor, tomemos un servomotor RC típico y veamos qué hay dentro.Podemos notar que tiene un pequeño motor DC, una placa controladora, un potenciómetro y una conexión de tres cables, dos cables para la alimentación y uno para la señal de entrada. Además, hay algunos engranajes para reducir la velocidad y aumentar el par del motor DC.Esta es una configuración típica para la mayoría de los servomotores RC o de hobby. El potenciómetro está conectado al eje de salida del motor DC, y actúa como sensor de posición, le indica al controlador la posición actual del eje del servomotor. La placa controladora controla el motor DC en función de la señal de entrada (la posición deseada) y la posición real que obtenemos como retroalimentación del potenciómetro. Esto representa un sistema de control de circuito cerrado.La señal de entrada, o la posición deseada, se compara con la posición real del motor que obtenemos del sensor de retroalimentación de posición. La diferencia que ocurre, que se llama error, luego se procesa en el controlador que ordena al motor que se mueva hasta que alcanza esa posición deseada. Cómo hacer un servomotor personalizado Entonces, si queremos construir nuestro propio servomotor con motores DC más grandes que los que usan estos servos RC típicos, podemos implementar el mismo sistema de control de circuito cerrado.Solo necesitamos un sensor de posición conectado al eje de salida de alguna manera y un microcontrolador para conducir el motor DC.Ahora, en cuanto al sensor de posición, la solución más simple es usar un potenciómetro simple como el que vimos en los servos RC. Sin embargo, el problema con estos tipos de potenciómetros es que tienen un rango de rotación limitado de solo 270 grados, lo que limita directamente el rango de rotación del servomotor. También hay otros tipos de potenciómetros que pueden hacer varias vueltas y pueden proporcionar un mejor rango y resolución, pero aún tienen una rotación limitada.Si necesitamos que el servomotor tenga un rango de rotación ilimitado, entonces necesitamos usar un codificador. Los codificadores son dispositivos electromecánicos que pueden realizar un seguimiento de la posición angular del eje con una rotación ilimitada. Hay muchos tipos de codificadores, como incrementales o absolutos, o según su tecnología de detección, óptica, magnética o capacitiva. Por supuesto, cada uno tiene sus propias ventajas y desventajas. Codificador AS5600 - Sensor de posición rotatorio magnético Elegí usar un codificador magnético, o el sensor de posición rotatorio magnético AS5600, porque es un codificador muy compacto y fácil de implementar que proporciona alta precisión o resolución. Solo mira lo pequeño que es este microchip.Tiene un sensor de efecto Hall incorporado que puede detectar cambios en la dirección del campo magnético. Entonces, solo tenemos que conectar un imán al eje de salida del motor y colocarlo cerca del microchip a una distancia de 0,5 a 3 mm.Ahora, a medida que el eje del motor y el imán giren, el sensor de efecto Hall capturará esos cambios en la dirección del campo magnético. Con la ayuda del convertidor A/D de 12 bits incorporado, el sensor AS5600 puede generar 4096 posiciones por vuelta o una rotación de 360 grados.Eso significa que puede detectar cambios en la posición angular tan pequeños como 0,0878 grados. Eso es bastante impresionante, y dado que es muy asequible y fácil de conseguir, es la mejor opción para un servomotor personalizado.Está bien, entonces, ¿qué más necesitamos?, un microcontrolador y un controlador para el motor DC. Elegí el controlador de motor DC DRV8871 que puede manejar hasta 3,5 amperios de corriente, y el microcontrolador Atmega32Elegí la versión de montaje en superficie, ya que es mucho más compacta que la versión DIP, y mi objetivo era hacer una PCB personalizada lo más pequeña posible en la que pueda incluir todo para que el servo funcione como un dispositivo independiente. Diagrama de circuito del servomotor personalizado Aquí está el diagrama de circuito completo de este servomotor personalizado.Puede obtener los componentes necesarios para este proyecto de los enlaces a continuación:AS5600 codificador magnético ………………….. Amazon / AliExpressDRV8871 controlador de motor DC ……………….…. Amazon / AliExpressAtmega328p-AU …………………………………. Amazon / AliExpressOscilador de cristal de 16Mhz …………………….. Amazon / AliExpressRegulador de voltaje AMS1117 de 5V ………..…. Amazon / AliExpressPotenciómetro cuadrado 3386P ………………. Amazon / AliExpressKit de condensadores 0805 …………………………….…. Amazon / AliExpressMotor DC de 12V - ~ 50RPM …………….……. Amazon / AliExpressDivulgación: estos son enlaces de afiliados. Como asociado de Amazon, gano con compras calificadas.Entonces, tenemos el microcontrolador Atmega328 junto con su circuito mínimo recomendado, que incluye un oscilador de 16Mhz, algunos condensadores y una resistencia.Para alimentar el microcontrolador y los demás componentes que requieren 5V, estamos utilizando el regulador de voltaje AMS1117, que reducirá la entrada de alimentación de 12V a 5V.Aquí está el sensor de posición AS5600 con su circuito recomendado que incluye dos condensadores y dos resistencias pull-up para la comunicación ICEl controlador de motor DC DRV8871 solo necesita una resistencia para limitar la corriente, y dos condensadores de desacoplamiento. Luego tenemos dos potenciómetros conectados a las entradas analógicas del microcontrolador, uno para ajustar el rango de rotación y el otro para ajustar la sensibilidad del servo. El botón pulsador se utiliza para establecer el punto central del servo, y el interruptor DIP bidireccional para seleccionar los modos de funcionamiento del servo. Hay un cabezal de pines para las entradas del servo, ya sea una entrada de voltaje analógico o una entrada PWM digital de un receptor RC, junto con un pin de 5V y un pin de tierra. También hay un cabezal de pines para programar el microcontrolador a través del protocolo SPI y el puerto serie.Aquí hay un resumen de este circuito y su flujo de trabajo. La entrada, o la posición angular deseada, se recibe a través de estos dos pines y puede ser un voltaje analógico proveniente de un potenciómetro o una señal PWM digital proveniente de un receptor RC. La entrada ingresa al microcontrolador donde se compara con la posición angular real que detecta el codificador, o el sensor de posición AS5600. Este sensor se comunica con el microcontrolador a través del protocolo ICLuego, el microcontrolador hace las matemáticas, calcula el error y, de acuerdo con él, envía una señal PWM al controlador DRV8871 que impulsa el motor DC hasta que alcanza esa posición deseada.Todo el circuito está alimentado por 12V, y el regulador de voltaje AS1117 proporciona 5V para el microcontrolador y los demás componentes de manera apropiada. Diseño de PCB De acuerdo con el diagrama de circuito, intenté diseñar la PCB lo más pequeña posible, y resultó ser de 40x40 mm.Coloco el codificador en la parte inferior y exactamente en el punto central de la PCB, para que se pueda montar y alinear fácilmente con el eje de salida del servo.Todos los demás componentes están ubicados en el otro lado para que no interfieran con el codificador y el eje de salida.Pedí la PCB a PCBWay. Aquí podemos simplemente cargar el archivo Gerber, elegir las propiedades de nuestra PCB y pedirla a un precio razonable.Diseñé la PCB para que tuviera 4 capas, las intermedias son para GND, lo que aumenta un poco el precio. No cambié ninguna de las propiedades predeterminadas, excepto el color de la PCB que elegí que fuera blanco, y marco que acepto el cambio de acabado de superficie a oro de inmersión si corresponde sin cargo adicional.Puedes encontrar y descargar el Gerber de la comunidad de intercambio de proyectos de PCBWay a través de la cual también puedes pedir directamente la PCB.Sin embargo, después de varios días la PCB llegó. La calidad de la PCB es excelente, todo es igual que en el diseño, y la obtuve en acabado de superficie de oro de inmersión.Está bien, entonces ahora podemos continuar soldando los componentes a ella. Empecé con los componentes más pequeños como este LED indicador, y los condensadores y las resistencias.Esta es en realidad mi primera vez soldando estos pequeños componentes SMD, y era realmente, realmente malo en eso.Lo más desafiante fue soldar el microcontrolador Atmega328, ya que los pines son realmente pequeños y muy cercanos entre sí, pero de alguna manera logré hacerlo.El microchip codificador AS5600 fue fácil de soldar en la parte posterior de la PCB, así como los componentes más grandes, de orificio pasante, como el interruptor DIP, los potenciómetros, los bloques de terminales y los cabezales de pines.De todos modos, aquí está la apariencia final de la placa controladora que, después de todo, resultó decente, creo.Ahora es el momento de hacer una caja de cambios adecuada para el motor DC y esta placa controladora. Modelo 3D del servo personalizado Diseñé la caja de cambios para este servomotor personalizado usando Onshape. El diseño de la caja de cambios depende, por supuesto, del motor DC. Como mencioné, podemos usar cualquier tamaño de motor DC en combinación con la placa controladora que acabamos de hacer.Aquí estoy usando un motor DC con un diámetro de 37 mm y una caja de cambios incorporada que genera 50 RPM. 50 RPM es una buena velocidad para un servomotor, pero quería ir un poco más bajo que eso, para obtener mejor par, así que hice una caja de cambios con una reducción de 3 veces. Utilicé engranajes de espina de pescado para ese propósito, ya que son eficientes y fáciles de hacer con una impresora 3D.Por supuesto, aquí tenemos la libertad de hacer este diseño de caja de cambios como queramos, ya que depende del motor DC que queramos usar y las velocidades de salida que queramos obtener.Coloqué la placa controladora en la parte posterior de esta caja de cambios y la alineé perfectamente en el centro del eje de salida.En caso de que queramos usar el eje del motor DC directamente como salida, simplemente podemos usar un juego de engranajes 1:1 para que podamos rastrear correctamente la posición del eje. O también podríamos usar un sistema de correa en tal caso. Como dije, tenemos infinitas posibilidades para hacer la caja de cambios. Descarga del modelo 3D y los archivos STL Puedes ver y explorar el modelo 3D de este servomotor personalizado directamente en tu navegador web con Onshape. (Necesitas una cuenta de Onshape para eso, puedes crear una cuenta gratuita para uso doméstico)Por supuesto, también puedes descargar el modelo 3D, así como los archivos STL necesarios para imprimir en 3D las piezas desde aquí:Archivo STEP:Archivos STL para impresión 3D: Ensamblaje del servo personalizado Aquí están las piezas impresas en 3D para esta construcción para que podamos comenzar a ensamblar el servomotor.Junto con ellos, necesitamos algunos tornillos M3 e inserciones roscadas, y algunos rodamientos.Primero, aseguré el motor DC a la placa base con algunos tornillos M3 con una longitud de 8 mm.Luego podemos instalar los dos engranajes en su lugar. El engranaje más pequeño va directamente al eje del motor DC, y el engranaje más grande será la salida del servo. Aunque, el eje de salida del está compuesto por dos partes.Instalé inserciones roscadas en ambos lados de esta parte del eje de salida, en un lado para conectar el engranaje a él, y en el otro lado para unir cosas a la salida del servo.También instalé inserciones roscadas en el engranaje más pequeño que se utilizará para asegurarlo al eje del motor DC. Ahora podemos deslizar los engranajes pareados en su posición. Como estos son engranajes de espina de pescado, debemos deslizarlos ambos en su lugar al mismo tiempo, de lo contrario no podemos emparejarlos si los insertamos uno por uno.Usando un tornillo de fijación, aseguré el engranaje pequeño al eje del motor DC. Apliqué 12V al motor DC para comprobar si el juego de engranajes funcionaría correctamente.Podemos terminar de ensamblar la caja de cambios insertando el panel lateral, el rodamiento de bolas para el eje de salida y la cubierta superior.Instalé algunas inserciones roscadas M3 en la placa posterior para que podamos asegurar todo el conjunto con algunos tornillos M3 de 20 mm de largo. Volví a probar la caja de cambios, funciona muy bien. Podemos notar cómo el eje de salida gira en la parte posterior y aquí necesitamos insertar el imán que el codificador AS5600 hará un seguimiento.Aseguramos la placa controladora a la caja de cambios usando algunos tornillos y tuercas MEl sensor de posición AS5600 ahora está perfectamente alineado con el imán, por lo que cuando el eje de salida gire, medirá el cambio en el campo magnético correctamente.Tenga en cuenta aquí que la dirección de magnetización del imán permanente es muy importante. Dependiendo de si está magnetizado axialmente o diametralmente, debemos colocar el imán perpendicular o paralelo a ese IC AS5600.Terminé cambiando la dirección de mi imán, ya que no tenía la magnetización correcta para que el codificador AS5600 pudiera medirlo.Luego, soldé dos cables al motor DC y conecté el motor al controlador con el bloque de terminales. En cuanto a la alimentación, conecté dos cables al bloque de terminales de alimentación, que en el otro lado tienen un conector de alimentación DC para conectar una fuente de alimentación de 12V. Y eso es todo, nuestro servomotor personalizado está listo. Programación del controlador Lo que queda por hacer ahora es darle vida a este servo, o programar el controlador. Para ese propósito, primero necesitamos grabar un gestor de arranque en el microcontrolador ATmega328p. Sin un gestor de arranque, el microcontrolador no podrá entender el lenguaje o el código que le enviaremos. Grabación del gestor de arranque Para grabar el gestor de arranque en el ATmega328p, necesitamos una placa Arduino, en mi caso usaré una placa Arduino Nano.Utilizaremos la comunicación SPI, por lo que necesitamos conectar los pines SPI adecuados en la placa Arduino y nuestra placa controladora.Ahora, utilizando el IDE de Arduino, necesitamos abrir el ejemplo de boceto ArduinoISP y cargarlo en la placa Arduino Nano. Con este código, el Arduino Nano ahora es capaz de grabar el gestor de arranque en el microcontrolador ATmega32Luego, desde el menú Herramientas, como Programador, necesitamos seleccionar Arduino como ISP y luego hacer clic en Grabar gestor de arranque.Mientras se graba el gestor de arranque, deberíamos notar que las luces de Arduino NANO parpadearán mucho, y eso dará como resultado una grabación exitosa del gestor de arranque. Carga de código Una vez que hayamos terminado con eso, ahora podemos programar o cargar el código en la placa controladora con la ayuda de un módulo de interfaz USB a UART.La placa controladora tiene pines dedicados para conectarlos fácilmente tal como se muestra en este diagrama de circuito.Ahora podemos abrir el código para este servomotor personalizado que hice y cargarlo en el controlador. Sin embargo, antes de hacerlo, primero debemos instalar las bibliotecas para el sensor AS5600 y el control PID. Podemos hacerlo fácilmente desde el Administrador de bibliotecas del IDE de Arduino. Una vez que presionemos el botón de carga, el código se escribirá en nuestro controlador ATmega328 a través del módulo de interfaz USB a UART.Y eso es todo, nuestro servomotor personalizado está listo. Ahora podemos conectar un potenciómetro a él para probarlo. Solo una nota de que la entrada analógica va al pin "S" en la placa controladora, en lugar del pin "A".Al diseñar la PCB, conecté estos dos pines incorrectamente al ATmega32Luego podemos seleccionar el modo de entrada analógico a través del interruptor DIP y encender el servo.Y aquí está, podemos controlar la posición del servomotor con la ayuda de la entrada analógica del potenciómetro. Hemos convertido con éxito nuestro motor DC en un servomotor. Código fuente Ahora echemos un vistazo al código de este servomotor personalizado.
Si quieres conocer otros artículos parecidos a Cómo hacer un servomotor usando un motor dc puedes visitar la categoría Motor.
