Uso de convertidor Buck - Velocidad constante motores DC robot educativo

Saludos a todos en el foro. Les agradezco sus aportes a una pequeña duda, y perdón por lo extendido del mensaje.

Estoy diseñando un pequeño robot con Arduino para mis clases, que se programa a través de mBlock (no es el mClon, es algo más simple para seguir líneas, usar el sensor ultrasonido y un servomotor para una pinza), y como alimentación utilizo dos baterías 18650; el driver para los motores reductores es el L293B, y el robot funciona bien en general.

Como utilizo motores reductores N20 sin encoders es muy complicado controlar con precisión su desplazamiento, entonces el avance y los giros se controlan por tiempo. Sin embargo, al irse descargando las baterías, el movimiento del robot cambia, lo cual es problema porque hay que modificar los tiempos en la programación cada vez, cosa que puede complicar el trabajo con los alumnos. Por ejemplo, si se les pide que el robot se desplace para crear la figura de un cuadrado, para hacer un giro de aprox 90° con las baterías cargadas al máximo se activan los motores durante 0.4 segundos, pero si las baterías disminuyen un poco, con ese tiempo el giro ahora es de 60°, lo cual afecta el cumplimiento de la actividad.

He pensado (no he hecho pruebas aún) en usar un convertidor buck (MP23070N o LM2596) para conectar las baterías 18650, que generalmente suministran voltajes entre los 7.8V hasta los 6,8V cuando hay que recargarlas, y entregar un voltaje constante a los motores de 6V o 6.5V, de manera que aún cuando las baterías pierdan carga los motores siempre reciban el mismo valor de voltaje, buscando una velocidad constante y así la programación para el robot no debe modificarse.

Mis preguntas son las siguientes:

- ¿Cuál es la diferencia mínima de voltaje de entrada y salida a la que funciona un convertidor buck (MP23070N o LM2596)? No he encontrado información, en cambio sé que para el 7805 el voltaje mínimo de entrada debe ser 7,5V para entregar los 5V de salida.

- ¿Será funcional y eficiente hacer uso del convertidor buck para alimentar los motores y un Arduino Nano con 6V o 6.5V de salida?

- Suponiendo que las baterías pueden entregar una corriente constante durante su etapa útil, ¿será posible que con el convertidor buck los motores generen una potencia constante mientras se reduce la carga de las baterías, de modo que el robot siempre se mueva la misma distancia o realice giros en el mismo ángulo?

Apelo a sus experiencias, y agradezco los aportes para encontrar una buena solución a mi inquietud.
 

Dr. Zoidberg

Well-known-Papá Pitufo
¿Será funcional y eficiente hacer uso del convertidor buck para alimentar los motores y un Arduino Nano con 6V o 6.5V de salida?
Si, lo mas grave que puede suceder es que debas alimentar los motores con un poco menos tensión, con lo cual funcionarán mas lentos pero no es nada que no puedas corregir con la asignacion de tiempos.


- Suponiendo que las baterías pueden entregar una corriente constante durante su etapa útil, ¿será posible que con el convertidor buck los motores generen una potencia constante mientras se reduce la carga de las baterías, de modo que el robot siempre se mueva la misma distancia o realice giros en el mismo ángulo?
Si la corriente es constante y la tensión disminuye, entonces la potencia de la batería no es constante, y a menos que cambies las leyes de la termodinámica, no vas a poder crear potencia donde no existe.
 
Gracias por la respuesta. Tiene razón, potencia no se puede crear de la nada, me expresé mal.

La pregunta va a que si las baterías que uso (18650 7.8V - 6.8V) tienen una corriente de salida de hasta 3000mAh, y uso el convertidor buck con salida de 6V, por ejemplo, sabiendo con algunas medidas que los motores reductores n20 que utilizo consumen aproximadamente 1A pico de arranque y 250mA constantes en movimiento cuando se alimentan con 6V, ¿El convertidor permitirá adecuadamente conservar esa relación de potencia para que los motores giren a velocidad constante a medida que se descargan las baterías?

Mi premisa es que si la batería reduce su voltaje, aumentará la corriente suministrada para que en la salida del convertidor se garanticen los 6V y la corriente suficiente para los motores del robot, y ya que las baterías son de 3000mAh no habría problema, hasta que las baterías descarguen y el convertidor ya no pueda mantener la salida de 6V. Por eso me remito a las experiencias de quienes hayan utilizado este tipo de circuito.

Gracias por la atención.
 

Dr. Zoidberg

Well-known-Papá Pitufo
Mi premisa es que si la batería reduce su voltaje, aumentará la corriente suministrada para que en la salida del convertidor se garanticen los 6V
La corriente no va a aumentar para mantener los 6V a la salida por que la demanda de corriente proviene de la carga conectada al convertidor. Lo que va a suceder es que el convertidor variará el ancho del PWM para mantener los 6V a la salida...tanto como sea posible. Si la demanda de corriente es muy alta (y prolongada) la tensión de la batería caerá y si se sobrepasa el umbral del convertidor, también caerá la tensión de salida del mismo.
 
Yo veo desde el principio un camino retorcido para evitar lo inevitable. Que no se puede hacer un control en lazo abierto determinista.
Si quieres enseñar cómo va un robot, enseña a realimentar que está haciendo ese motor.
Si la batería se descarga, si esta en cuesta, si va más cargado, si la grasa del rodamiento se seca, si pasan mil cosas el motor no hará lo que yo me imagino que debería de hacer.
Para no poner un encoder o un sensor de giro de algún tipo, ponemos un regulador de tensión, luego uno de potencia y después de otra cosa, vamos poniendo cosas que seguirán sin ir porque no atacan la raíz del problema.

Pon un optoacoplador de ranura en la rueda y cuenta "los radios"de la rueda. O uno reflexivo y pintas la rueda de negro y blanco...
Un imán y un sensor hall, varios sensores, varios imanes...

Todo lo demás no va a funcionar por algún motivo, ahora uno y después otro.
 
De acuerdo con los comentarios. Lo correcto sería colocar encoders a las llantas y así controlar el desplazamiento del robot, pero el asunto es que es un proyecto escolar dónde se plantea usar programación en bloques con mBlock (similar a Scratch), y no tiene la opción de usar interrupciones, lo que es esencial para los encoders. Pensé en usar motores Pap pero son muy lentos y consumen bastante, y ya que los robots estarán en pistas planas y su peso será constante las variaciones de velocidad de los motores se presumen solo se dan en función de la descarga de la batería.

Necesito es definir una idea sobre cómo mantener un voltaje constante de 6 voltios para el circuito con una entrada de entre 7.6V y 6.6V que entregan las baterías 18650.

Sería algo similar a usar un zener de 6V, aunque debe tener una corriente de salida de 1A. Dado que no es posible usar un circuito zener por la potencia requerida en la salida, pensé en regulador buck, pero según he leído no sirve como creía pues igual que cualquier otro regulador variable, si disminuye el voltaje de entrada, así mismo disminuye la salida.

Gracias igualmente por sus aportes.
 

Dr. Zoidberg

Well-known-Papá Pitufo
y no tiene la opción de usar interrupciones, lo que es esencial para los encoders.
La unica interrupcion importante es la del timer. El conteo se hace por hardware con los contadores internos.
De todas formas, la robotica de robots moviles no es tan sencilla como para hacerla sin programar "en serio". Una cosa es seguir una línea con realimentacion optica del sensor y otra muy diferente es "dibujar" figuras con el robot en lazo abierto.

Tal vez debas pensar en algún ejercicio diferente ajustado a lo que tenes disponible.
 
Hola, si quieres evitar enconders, otra opción para nada simple sería, utilizar motores PAP.

Si, ya pensé en usarlos, sería más preciso pero o me ocupa muchos pines del Arduino Nano o me aumenta el tamaño del circuito si coloco un generador de pulsos externo, además que consumen mucha más corriente que los reductores n20.

De todas formas, la robotica de robots moviles no es tan sencilla como para hacerla sin programar "en serio". Una cosa es seguir una línea con realimentacion optica del sensor y otra muy diferente es "dibujar" figuras con el robot en lazo abierto.

Tal vez debas pensar en algún ejercicio diferente ajustado a lo que tenes disponible.

Se ha desviado el tema, si bien la robótica no es cuestión sencilla, el propósito es acercar niños a ella, y no se pueden complicar de más las cosas, aunque vale decir que con lo básico se puede hacer cosas atractivas que para los niños representa programar "en serio", no solo seguidores de línea que es en lo que todo el mundo piensa.

Basta con que vean un mBot de us$100, y traten de hacer un modelo más sencillo de us$25 pero que igual solucione laberintos y realice otras tareas con ultrasonido, infrarrojos, servos y sensor de colores. El mBot es costoso, tiene el mismo problema de no tener encoders, e igual que en mi caso, los giros y avances se controlan por tiempo. Sin embargo, si se toman el tiempo de ver una competencia mBlock-Makex, veran que para un nene si es programar en serio.

Lo único que busco es modificar la alimentación para que sea más constante y sea menos problematico hacer un giro cercano a 90° con motores que reciban un voltaje similar durante la carga útil de una batería , no una sugerencia por cambiar de apuesta porque un niño no me va a entender una interrupción, además que en el software que se usa las interrupciones no se pueden gestionar.

Igualmente gracias por los aportes.
 

Dr. Zoidberg

Well-known-Papá Pitufo
Basta con que vean un mBot de us$100, y traten de hacer un modelo más sencillo de us$25 pero que igual solucione laberintos y realice otras tareas con ultrasonido, infrarrojos, servos y sensor de colores. El mBot es costoso, tiene el mismo problema de no tener encoders, e igual que en mi caso, los giros y avances se controlan por tiempo. Sin embargo, si se toman el tiempo de ver una competencia mBlock-Makex, veran que para un nene si es programar en serio.
Esos sensores son los que proveen la realimentacion y esos robots por algo valen lo que valen, pero sin realimentacion de posición no vas a poder lograr que recorran o dibujen figuras medianamente reales.

Te repito, la solución de laberintos no tiene NADA que ver con dibujar figuras.
 
En cualquier caso llevan una realimentación de algo.
Los siguelíneas al menos dos sensores ópticos. Los de laberintos al menos dos detectores de golpes.

Un sensor de algo hay que poner si o si.

Es verdad que scratch es penosamente limitado, pero habrá que ver a dónde llega. Y si no llega para robot, hacer otra cosa, no sé, un semáforo, una puerta que se abre sola... Algo en lo que la herramienta que uses si que sea suficiente y cuyo funcionamiento si que enseñe cómo funciona algo en el mundo real.

Reflexión en voz alta:
Me gustaría saber dónde está la "didactiquez" en algo que está mal planteado de origen porque por ese camino no se va a ningún lado. Luego me toca desenseñar lo que los alumnos se creen que saben para reenseñar lo que és. "Me lo paso bomba" desenseñando.

Volviendo a la pregunta original, para no desviarnos de el tema, pon un regulador de tensión. Fin del hilo. Da igual si lineal o conmutado, total...
¡Ah no, que incluso con tensión constante no tenemos garantía alguna! Bueno, lo mismo se acaba el trimestre y he tenido distraídos a los chavales que ese sí era el objetivo, porque no me digas que el objetivo era enseñar robótica porque esto no es robótica
 
Última edición:
Saludos a todos en el foro. Les agradezco sus aportes a una pequeña duda, y perdón por lo extendido del mensaje.

Estoy diseñando un pequeño robot con Arduino para mis clases, que se programa a través de mBlock (no es el mClon, es algo más simple para seguir líneas, usar el sensor ultrasonido y un servomotor para una pinza), y como alimentación utilizo dos baterías 18650; el driver para los motores reductores es el L293B, y el robot funciona bien en general.

Como utilizo motores reductores N20 sin encoders es muy complicado controlar con precisión su desplazamiento, entonces el avance y los giros se controlan por tiempo. Sin embargo, al irse descargando las baterías, el movimiento del robot cambia, lo cual es problema porque hay que modificar los tiempos en la programación cada vez, cosa que puede complicar el trabajo con los alumnos. Por ejemplo, si se les pide que el robot se desplace para crear la figura de un cuadrado, para hacer un giro de aprox 90° con las baterías cargadas al máximo se activan los motores durante 0.4 segundos, pero si las baterías disminuyen un poco, con ese tiempo el giro ahora es de 60°, lo cual afecta el cumplimiento de la actividad.

He pensado (no he hecho pruebas aún) en usar un convertidor buck (MP23070N o LM2596) para conectar las baterías 18650, que generalmente suministran voltajes entre los 7.8V hasta los 6,8V cuando hay que recargarlas, y entregar un voltaje constante a los motores de 6V o 6.5V, de manera que aún cuando las baterías pierdan carga los motores siempre reciban el mismo valor de voltaje, buscando una velocidad constante y así la programación para el robot no debe modificarse.

Mis preguntas son las siguientes:

- ¿Cuál es la diferencia mínima de voltaje de entrada y salida a la que funciona un convertidor buck (MP23070N o LM2596)? No he encontrado información, en cambio sé que para el 7805 el voltaje mínimo de entrada debe ser 7,5V para entregar los 5V de salida.

- ¿Será funcional y eficiente hacer uso del convertidor buck para alimentar los motores y un Arduino Nano con 6V o 6.5V de salida?

- Suponiendo que las baterías pueden entregar una corriente constante durante su etapa útil, ¿será posible que con el convertidor buck los motores generen una potencia constante mientras se reduce la carga de las baterías, de modo que el robot siempre se mueva la misma distancia o realice giros en el mismo ángulo?

Apelo a sus experiencias, y agradezco los aportes para encontrar una buena solución a mi inquietud.
La diferencia mínima del LM2596 es insignificante, si poner 6,5V a la entrada del convertidor y este está puesto con una salida de 6V, su salida será 6V, funcionan de manera diferente a uno lineal como un LM7805. Yo diría que lo pruebes, debería funcionar el mantener más o menos constante la velocidad de los motores, el inconveniente es que la carga se reducirá más rápidos, dado que la corriente que las baterías deben entregar a medida que su tensión baja va a ir en aumento, acelerando el proceso de descarga. Si usas 2 de esas pilas te recomiendo que uses un BMW para protegerlas de sobre descargar.
 
Por fin hoy llegaron los módulos 2596 que pedí hace días, y si bien me hacen falta algunas pruebas, puedo decir que hasta el momento han resultado buenos reguladores.

Yo pensaba que iban a ser como un LM317, que si bien se regulaba la salida, en mi experiencia el voltaje de salida cambiaba si se alteraba el voltaje de entrada. Pero estos conversores DC LM2596 parece que si conservan el voltaje de salida constante aún cuando se cambia el de entrada.

He ajustado el LM2596 para una salida de 6V al conectar las baterías 18650 que entregan 7.6V. Luego he conectado una batería de 9V, un adaptador de pared de 12V y un cargador de portátil de 18V, y en todos los casos el voltaje de salida resultó 6V, sin varía más que algunas centésimas. Como dice juanma2468, habrá que seguir probando para ver si durante la carga útil de las baterías los motores mantienen una velocidad constante, y tendré que pensar en el módulo de protección para las baterías, aunque el problema es que los que había visto son solo para una batería como el tp4056, será cuestión de buscar un módulo para dos baterías en serie.
 
Hay y unos módulos universales que si falta ponen y si sobra quitan y mantienen la tensión de salida constante se alimenten de donde se alimenten.
El problema es entonces que no sabes cómo están las baterías, las tienes que supervisar aparte. Claro que eso lo tienes que hacer de todos modos.
 
Por fin hoy llegaron los módulos 2596 que pedí hace días, y si bien me hacen falta algunas pruebas, puedo decir que hasta el momento han resultado buenos reguladores.

Yo pensaba que iban a ser como un LM317, que si bien se regulaba la salida, en mi experiencia el voltaje de salida cambiaba si se alteraba el voltaje de entrada. Pero estos conversores DC LM2596 parece que si conservan el voltaje de salida constante aún cuando se cambia el de entrada.

He ajustado el LM2596 para una salida de 6V al conectar las baterías 18650 que entregan 7.6V. Luego he conectado una batería de 9V, un adaptador de pared de 12V y un cargador de portátil de 18V, y en todos los casos el voltaje de salida resultó 6V, sin varía más que algunas centésimas. Como dice juanma2468, habrá que seguir probando para ver si durante la carga útil de las baterías los motores mantienen una velocidad constante, y tendré que pensar en el módulo de protección para las baterías, aunque el problema es que los que había visto son solo para una batería como el tp4056, será cuestión de buscar un módulo para dos baterías en serie.
Las placas que controlan el estado de las pilas se llaman BMS (Batery Managment System) o Sistema de Gestión de Batería. En tu caso tenés que buscar un BMS del tipo 2S ya que son 2 baterías en serie, por mercado libre está lleno, saludos.
 
Arriba