Controlador de motor sin escobillas Diy
En este tutorial aprenderemos a controlar un motor sin escobillas usando Arduino y ESC. En caso de que quieras más detalles de cómo funcionan los motores BLDC, puedes consultar el otro artículo o ver el siguiente vídeo que contiene la explicación del principio de funcionamiento de un motor sin escobillas y cómo controlar uno usando Arduino y ESC.
Para este ejemplo, tengo un motor BLDC outrunner con las siguientes especificaciones: tiene un índice de KV de 1000, puede ser alimentado usando una batería LiPo de 2S, 3S o 4S y requiere un ESC de 30A. El índice de KV en un motor sin escobillas define las RPM del motor por voltio sin carga.
En este caso, los 1000KV significan que, por ejemplo, si alimentamos el motor con una batería LiPo 2S que tiene un voltaje de 7,4 voltios, el motor puede alcanzar unas RPM máximas de 7,4 veces 1000, o sea 7400 RPM.
Los motores sin escobillas tienen una gran demanda de energía y el método más común para alimentarlos es el uso de baterías LiPo. El número “S” de una batería LiPo indica cuántas celdas tiene la batería, y cada celda tiene un voltaje de 3,7V.
Programación de Arduino esc
Electro Tech es una comunidad online (con más de 170.000 miembros) que disfruta hablando y construyendo circuitos electrónicos, proyectos y gadgets. Para participar hay que registrarse. El registro es gratuito. Haz clic aquí para registrarte.
Estoy trabajando esencialmente en un proyecto de investigación en un laboratorio en el que nos gustaría sincronizar múltiples motores de corriente continua sin escobillas o compensar sus fases (30 grados de compensación, perfectamente sincronizados, etc.). Por lo tanto, estamos tratando de controlar un motor BLDC alimentando las 3 bobinas en la secuencia adecuada con un tiempo de retardo establecido entre cada fase. La forma correcta de controlar un motor BLDC es percibir el EMF posterior o utilizar sensores de efecto Hall para determinar la posición del rotor y energizar la siguiente bobina en el momento perfecto. En nuestro caso, esto no es una opción porque tener sensores que determinen cuándo energizar la siguiente bobina nos quitaría la capacidad de controlar con precisión la rotación del motor o conocer su posición exacta.
Nuestro enfoque actual es el siguiente: Utilizando un Arduino Mega 2560 y un circuito montado según el esquema de abajo (sin los drivers IGBT/MOSFET), tenemos un código Arduino que utiliza la secuencia de conmutación de seis fases que se muestra en la segunda imagen. En lugar de esperar a que un sensor active la siguiente fase, hacemos que cada fase ocurra después de un retardo de tiempo establecido que puede ser alterado en el código. Por ejemplo, puedo establecer el tiempo de retardo a 900 microsegundos, de modo que cada fase en la secuencia se mantiene durante 900 microsegundos antes de cambiar a la siguiente. Usando este enfoque, hemos conseguido que el motor gire, pero nos enfrentamos a dos problemas principales:
Arduino ec motor
Hay dos tipos de motores de corriente continua sin escobillas: con y sin sensores. El motor BLDC con sensores tiene incorporados 3 sensores de efecto hall, estos sensores detectan la posición del rotor del motor BLDC. Controlar un motor BLDC con sensores es fácil ya que conocemos la posición del rotor como se hizo en el proyecto de abajo:
Cuando el motor BLDC gira, cada devanado (3 devanados) genera BEMF que se opone a la tensión principal. Las 3 señales BEMF generadas están desfasadas 120°, que es lo mismo que las señales del sensor de efecto hall. La figura siguiente muestra la relación entre las señales de efecto Hall y las señales BEMF:
Como se muestra en la figura anterior, las señales BEMF no están sincronizadas con las señales del sensor de efecto Hall (desplazamiento de fase de 30°). En cada secuencia de energización, se energizan dos devanados (uno conectado al positivo y el otro al negativo) y el tercer devanado se deja abierto (flotante). El devanado flotante se utiliza para detectar el cruce de cero, por lo tanto, la combinación de los 3 puntos de cruce de cero se utilizan para generar la secuencia de energización. En total tenemos 6 eventos:
Ansteuern del motor sin escobillas
Quiero construir un ESC usando un ATmega328 (usado en Arduino Uno). Este es el motor de corriente continua sin escobillas que he elegido y este es el MOSFET que he elegido para la alimentación. Se utilizará para accionar una hélice de velocidad variable en una dirección.
2/ Es necesario detectar la posición del rotor de alguna manera. El campo magnético en las bobinas del motor necesita girar ligeramente por delante del campo magnético en el rotor con el fin de tirar de él, por lo que necesita saber dónde está el rotor para encender el siguiente conjunto de bobinas en el momento adecuado. Si el motor no dispone de sensores de efecto Hall, esto se consigue detectando la corriente eléctrica en las bobinas. Esto sólo funciona una vez que el motor está girando, por lo que hay una secuencia fija más lenta para arrancar el motor.
1/ El número de kv es el número de revoluciones por voltios en vacío, por lo que a 14,4V el motor podría ir a 10.000 rpm que es 167Hz. 10MHz sería muy rápido para un motor – las puntas de una hélice de 10cm estarían al 2% de la velocidad de la luz.