tengo un motor brushless de 750W en el cual regulo las rpm mediante un potenciómetro manual de 10k conectado al driver del motor. El potenciómetro tiene una diferencia de potencial entre 0 y 5V en sus extremos. He adquirido una tarjeta "motion controller" para regular mediante software las revoluciones, pero la salida es PWM 0-10V.
Mi intención es crear una interfaz, mediante arduino, para acondicionar la salida PWM y poder sustituir el potenciómetro manual.
Dado que el potenciómetro alimenta al driver del motor entre 0 y 5V, supongo debo convertir la entrada PWM a arduino de alguna manera que limite la tensión analógica de salida a 5V mediante un conversor AD/DA de 12bits, por ejemplo, y que arduino mapee las entradas PWM 0-10V y emita la señal analógica correspondiente. Lo que se me escapa son dos cosas:
Como acondiciono la señal de 10V para que arduino la pueda leer?
El razonamiento que tengo es lógico o esto se hace de otra manera?
Comienzo respondiéndote y luego tal vez le de un giro a tu enfoque.
Ahora leo que tu 2da consulta se refiere al enfoque asi que respondo ahi.
Como acondiciono la señal de 10V para que arduino la pueda leer?
Un simple divisor resistivo. Un para de resistencias de 10k y en el punto medio tendras 0-5V
El razonamiento que tengo es lógico o esto se hace de otra manera?
El tema es que compraste la tarjeta "motion controller" para regular mediante software y no termino de entender si pretendes si o si que todo pase por esa tarjeta o que sea Arduino quien comando las cosas ahora porque algo sobra.
con tu Tarjeta Motion Controler y un divisor resistivo, como te dije ya esta.
Gracias Surbyte.
Las revoluciones del motor brushless quiero que sean comandadas por la tarjeta motion controller mediante gcode. Es decir, yo mando desde el PC un comando a la tarjeta, digamos S1500 lo cual se traduce en que quiere que el motor gire a 1500 rpm. Si el máximo de revoluciones del motor son por ejemplo 3000, este mandará un PWM de 50% dutty cicle, entiendo. Como el potenciómetro actual que tiene el driver original que yo ajusto a mano, regula la tensión entre 0 y 5V, supongo debo transformar esa señal PWM a una analógica entre 0 y 5V, ya que la media de tensión de una señal PWM 10V son 10V y puedo quemar la placa del potenciómetro no?
Es tan sencillo como ese divisor de tensión que me comentas??? La señal de salida sería PWM también al pasar por el resistor, aceptará el driver del motor que no sea una señal analógica pura?
No..
A ver. Te entendí mal.
La salida de la Motion Controller es una PWM de 0-10V, y tu quieres emular el comportamiento del potenciometro.
Entonces necesitas agregar un filtro pasabajos para convertir la señal PWM en una señal analógica 0-ALGO.
Mi comentario anterior de que con un simple divisor tenias resuelto esta mal, se debió a una mal interpretación.
Ahora luego del filtro pasabajos, tal vez requieras de un AO amplificador operacional que garantice ese 0-5V
Ese esquema esta en el foro, ha sido respondido varias veces.
Lo primero que debes hacer a ese esquema es eliminar las R de 10k
La que cierra entre (-) y salida se transformará en un cable, o sea ambas unidas y la que va entre (-) y GND se retira directamente.
El AO entonces no amplifica sino que se comporta como seguidor. Lo que tenga en la entra NO Inversora lo muestra a la salida.
Ahora en teoría a la salida tendrías una anaógica 0-10V con lo que solo habria que poner un divisor a la salida con las dos R de 10K pero entre OUT y GND. Entre el punto medio de las dos R y GND tendras 0-5V
Ya veo, utilizo el AO con realimentación negativa sin ganancia, y los 10V analógicos a la salida los hago pasar por un divisor de tensión para obtener tensiones en el rango de 0-5V.
La resistencia de 10K a la entrada junto con el condensador de 1uF actuan como filtro pasobajo, que es lo que me comentas que transforma la entrada PWM en analógica pura, cierto?
Vale pues si esos valores de los componentes son válidos, los utilizo tal cual. El circuito es más sencillo de lo que creía, no necesito el arduino. Alimento el AO con +15V tb no?
En uno de los links que me pasaste me pareció leer algo relativo a que el AO tenía problemas para dar una salida a 0V cuando la entrada eran 0V exactos (sería el caso del motor parado), eso es así?
Por otro lado, debería medir la corriente máxima que pasa por el potenciómetro original, por si debo limitarla con un divisor de corriente en el nuevo circuito o no es necesario?
Muchisimas gracias por tu ayuda, haces que lo que parecía complejo no lo sea en absoluto
La resistencia de 10K a la entrada junto con el condensador de 1uF actuan como filtro pasobajo, que es lo que me comentas que transforma la entrada PWM en analógica pura, cierto?
Si asi es.
Vale pues si esos valores de los componentes son válidos, los utilizo tal cual. El circuito es más sencillo de lo que creía, no necesito el arduino. Alimento el AO con +15V tb no?
Correcto, con 12 a 15V estará bien.
En uno de los links que me pasaste me pareció leer algo relativo a que el AO tenía problemas para dar una salida a 0V cuando la entrada eran 0V exactos (sería el caso del motor parado), eso es así?
Es muy posible que asi sea.
Si me permitirieras decidir yo no usaria el motion controller y en su lugar buscaría un DAC y lo manejaría con el Arduino. Repetería todo como para que se le envie algo como lo que tu deseas he incluso no habria que bajar de 10 a 5V.
Un dac bien elegido entregará 0-5V con mejor resolución.
NO se si lo dije pero un ESP32 o DUE que tienen DAC y que son de 12Bits te garantizan 4096 pasos contra apenas 256 de un PWM.
Respecto del 0, esta garantizado con un DAC externo a un arduino cualquiera o las opciones DUE/ESP32
Por otro lado, debería medir la corriente máxima que pasa por el potenciómetro original, por si debo limitarla con un divisor de corriente en el nuevo circuito o no es necesario?
En general no es necesario.
Amplio mi idea del uso de un UNO/NANO + DAC externo
Ejemplo MCP4725 DAC 0-5V I2C
Este es un simple caso pero uno muy util.
No tienes nada que armar, solo conectar 4 cables SDA SCL GND y VCC y su salida directo al reemplazo del potenciómetro.
Usas un UNO o un NANO pero tmb va con el Arduino que tengas a mano.
Luego un programa simple que envie datos desde la PC o lo haces con teclado. Como gustes.
Entiendo Surbyte, pero el motion controller gobierna muchos mas dispositivos y es necesario, ya que los algoritmos que implementa son muy muy complejos y no sería capaz de programarlos. Siguiendo con el esquema que me comentabas, habría alguna manera de obtener esa relación 0V pwm -> 0V analógica?
Siguiendo con el esquema que me comentabas, habría alguna manera de obtener esa relación 0V pwm -> 0V analógica?
Te basas en comentarios y no en experiencia propia.
Si una PWM llega a 0, el filtro no tiene forma de entregar algo mayor a 0 V asi que no veo porque pueda fallar.
Es algo barato de armar, porque no lo pruebas a ver como se comporta?
En Arduino tenemos una función que genera una PWM que es analogWrite(pin, valor) con valor entre 0 y 255
Cuando envias 0 es 0
Si tiens 0V el filtro RC se descargará lentamente pero transcurrido un tiempo llegará a 0V (espero...)
Por eso no me gustan los elementos analógicos porque siempre tendrás esa incertidumbre.
Tampoco creo que el control de velocidad reaccione a 0.1V por dar un ejemplo. Porque no verificas eso? Intenta ajustar el potenciometro del control de velocidad a ver cuando te parece imperceptible, o que el motor no gira y ese será tu margen de maniobra.
Hi,
Podrias remplazar la resistencia variable con una digital de 10k. La puedes variar usando el arduino y SPI. Ahora no se cuantos watts es la resistencia existente que usas para variar los rpms. Adjunto el link para tu consideracion. http://www.analog.com/media/en/technical-documentation/data-sheets/AD5174.pdf