Estimados,
En esta ocasion quiero compartirles un controlador (variador) brushless que diseñe, y es un tanto "especial".
Lo hice a modo didactico por las siguientes razones:
1- Fue el motivo por el cual me inicie con microcontroladores alla hace muchos años.
2- Tengo el desafio de hacerme un quadcopter de cero.
3- Queria hacer algo que pueda usarse directamente con placas de control de quadcopters con motor a escobillas, es decir, que en vez de señal de servo tome la señal pwm del motor directamente, para hacer conversiones brushless de drones brushed.
4- Ademas, queria hacerlo con la mayor cantidad posible de componentes reciclados.
¿Porque especial? porque esta hecho de forma tal que el pwm para el motor no es generado por el micro del variador, sino que es la señal externa de control.
¿Porque tome esta decision?
porque, de nuevo, queria que ande directo como "actualizacion" de drones como los syma y porque con esta tecnica obtengo la mayor rapidez de respuesta posible ante cambios en la señal de entrada.
En un quadcopter, la velocidad de respuesta del variador es muy importante ya que afecta directamente la estabilidad. Normalmente un variador de avion es de 50hz, es decir la tasa de refresco de un servo. Los variadores para drones rondan los 500hz. Este variador es instantaneo, reacciona tan pronto como el motor reaccione
ya que el micro no esta interpretando la señal.
Mas detalles: Queria hacerlo con componentes lo mas sencillos posibles y que tuviera por aca, es decir: un PIC 16F628A en vez de atmel que todavia no tengo, etc. Ademas de los drivers, todos los otros componentes son reciclados de motherboards de PC.
Esa es la otra idea, ir a un servicio tecnico de computadoras a "hacerles el favor" de sacarles toda la chatarra de encima y reciclar.
Los diodos, transistores, mosfets, capacitores, resistencias, cristal... todo eso se saca de motherboards. Hay 6 mosfets canal N de potencia en formato DPAK en casi cualquier motherboard no demasiado vieja.
Aclaro que esta andando muy bien, pero al firmware del pic aun le falta un poco de trabajo. Por ejemplo, tengo que hacer la rutina de arranque open-loop. Asi como esta funciona muy pero muy bien con varios motores que probe (si el motor tiene iman de neodimio mejor aun) pero por las dudas, la rutina open-loop es obligatorio hacerla. (ya actualizare).
Sin mas chachara, al grano:
Adjunto 2 proyectos DISTINTOS:
1- bldc_nodriver.zip Esta es la primera version "final" que hice, donde NO se requiere driver para los mosfets ya que esta hecho con componentes discretos y bootstrap. NO RECOMIENDO hacer esta version por 2 motivos:
a- Es menos eficiente
b- Es mas dificil de armar
c- No le pienso dar soporte
de ningun tipo. La comparto solo para quien no tiene la posibilidad de conseguir los drivers de mosfets (IR2101 en este caso). Si quieren armar esta version, tengan en cuenta reconfigurar los pines y la polaridad del high side en el firmware ya que este esta para la segunda version. Ademas, en este PCB el positivo de bateria va soldado directo en las tabs de los mosfets 
2- bldc_dpak_v2: Esta es la version final y la que esta en las fotos. Tambien el firmware que adjunto esta configurado para esta version.
Algunos comentarios:
- La señal de PWM de entrada es invertida, es decir el tiempo en estado bajo es el duty cycle, ya que esta preparado para conectarse derecho a los mosfet que manejan los motores de las plaquitas de syma.
- Los mosfets pueden ser "cualquiera" en formato DPAK y canal N. En mi caso tengo una caja con unas 20 motherboards que me donaron y de ellas obtuve 24 mosfets iguales, pero tambien pueden hacer mezcla considerando leer los datasheets para mas o menos poner mosfets parejos. CUIDADO con el VGS y el voltaje de bateria que vayan a usar.
- Este version con driver usa el IR2101, esto significa que solo va a funcionar con 3 celdas lipo (minimo 10 volts, maximo que toleran los mosfets 20v en gate). Si necesitan algo para 2 celdas o se arman la version con driver discreto, o reemplazan el driver por IR2301 (haberlo sabido antes!!!) o similar.
- En la red de feedback (back emf) del motor, hay unos capacitores de 22nF. Estos son criticos dependiendo el motor. Por ejemplo, para un motor de cdrom sin modificar (unas 7000 rpm max) el capacitor seria de 33nF. En mi caso mis motores son de 2280 kV por lo que tuve que bajar el capacitor (con 10nF funciona) a 22nF para que llegue a las maximas vueltas.
- Los diseños y PCB estan hechos en KICAD. Adentro de los ZIP tienen la lista de materiales tambien. El firmware esta hecho en CSS.
- Para los observadores, SI, el pic esta overclockeado
a 25 Mhz cuando es de 20 Mhz. Esto no es estrictamente necesario. Con un cristal de 16 Mhz anda bien pero medio justo para motores de muchas RPM. Con un cristal de 20 Mhz anda perfecto PERO de los motherboards se obtienen gratis cristales de 25 Mhz y he probado esta version de PIC con osciladores ceramicos a 33 Mhz funcionando sin problemas... asi que la decision la tome y puse cristal de 25 Mhz. NO es necesario que hagan eso, pueden poner uno de 20 y se quedan tranquilos. (Ajusten el parametro en el firmware)
- Por ultimo, al firmware le falta un poco y la forma de trabajar con el back emf del motor en el soft no me convence demasiado pero funciona y muy bien. Tambien lo compare (osciloscopio mediante) con un variador comercial y las formas de onda son exactamente las mismas para el mismo motor, excepto que mi variador responde muchisimo mas rapido jaja (el variador de ejemplo que tengo es de avion ojo).
- Otra observacion: Si pueden obtener una o dos motherboards de notebook, entonces pueden obtener mosfets N en SO8 en vez de DPAK. Van a tener que rediseñar la placa pero terminara siendo mas chica. Esta placa es de unos 55mm x 25mm y esta apretada al 100%.
Sin mas, que lo disfruten! La intencion no es hacer algo mas barato (un variador cuesta 4 - 5 dolares en china) sino usar lo que se tiene y hacer las cosas uno mismo.
Quedo a la espera de comentarios, sugerencias, correcciones, etc. Ire actualizando el tema con avances a medida que modifique el software.
PD: Aun no se que pasara con la placa de syma donde lo voy a probar. En estatico funciona perfecto pero se que el PID de las mismas esta preparado para motores lentos, asi que un motor rapido quiza haga algo de bamboleo en sobrevuelo. Veremos.
En esta ocasion quiero compartirles un controlador (variador) brushless que diseñe, y es un tanto "especial".
Lo hice a modo didactico por las siguientes razones:
1- Fue el motivo por el cual me inicie con microcontroladores alla hace muchos años.
2- Tengo el desafio de hacerme un quadcopter de cero.
3- Queria hacer algo que pueda usarse directamente con placas de control de quadcopters con motor a escobillas, es decir, que en vez de señal de servo tome la señal pwm del motor directamente, para hacer conversiones brushless de drones brushed.
4- Ademas, queria hacerlo con la mayor cantidad posible de componentes reciclados.
¿Porque especial? porque esta hecho de forma tal que el pwm para el motor no es generado por el micro del variador, sino que es la señal externa de control.
¿Porque tome esta decision?
En un quadcopter, la velocidad de respuesta del variador es muy importante ya que afecta directamente la estabilidad. Normalmente un variador de avion es de 50hz, es decir la tasa de refresco de un servo. Los variadores para drones rondan los 500hz. Este variador es instantaneo, reacciona tan pronto como el motor reaccione
Mas detalles: Queria hacerlo con componentes lo mas sencillos posibles y que tuviera por aca, es decir: un PIC 16F628A en vez de atmel que todavia no tengo, etc. Ademas de los drivers, todos los otros componentes son reciclados de motherboards de PC.
Esa es la otra idea, ir a un servicio tecnico de computadoras a "hacerles el favor" de sacarles toda la chatarra de encima y reciclar.
Los diodos, transistores, mosfets, capacitores, resistencias, cristal... todo eso se saca de motherboards. Hay 6 mosfets canal N de potencia en formato DPAK en casi cualquier motherboard no demasiado vieja.
Aclaro que esta andando muy bien, pero al firmware del pic aun le falta un poco de trabajo. Por ejemplo, tengo que hacer la rutina de arranque open-loop. Asi como esta funciona muy pero muy bien con varios motores que probe (si el motor tiene iman de neodimio mejor aun) pero por las dudas, la rutina open-loop es obligatorio hacerla. (ya actualizare).
Sin mas chachara, al grano:
Adjunto 2 proyectos DISTINTOS:
1- bldc_nodriver.zip Esta es la primera version "final" que hice, donde NO se requiere driver para los mosfets ya que esta hecho con componentes discretos y bootstrap. NO RECOMIENDO hacer esta version por 2 motivos:
a- Es menos eficiente
b- Es mas dificil de armar
c- No le pienso dar soporte
2- bldc_dpak_v2: Esta es la version final y la que esta en las fotos. Tambien el firmware que adjunto esta configurado para esta version.
Algunos comentarios:
- La señal de PWM de entrada es invertida, es decir el tiempo en estado bajo es el duty cycle, ya que esta preparado para conectarse derecho a los mosfet que manejan los motores de las plaquitas de syma.
- Los mosfets pueden ser "cualquiera" en formato DPAK y canal N. En mi caso tengo una caja con unas 20 motherboards que me donaron y de ellas obtuve 24 mosfets iguales, pero tambien pueden hacer mezcla considerando leer los datasheets para mas o menos poner mosfets parejos. CUIDADO con el VGS y el voltaje de bateria que vayan a usar.
- Este version con driver usa el IR2101, esto significa que solo va a funcionar con 3 celdas lipo (minimo 10 volts, maximo que toleran los mosfets 20v en gate). Si necesitan algo para 2 celdas o se arman la version con driver discreto, o reemplazan el driver por IR2301 (haberlo sabido antes!!!) o similar.
- En la red de feedback (back emf) del motor, hay unos capacitores de 22nF. Estos son criticos dependiendo el motor. Por ejemplo, para un motor de cdrom sin modificar (unas 7000 rpm max) el capacitor seria de 33nF. En mi caso mis motores son de 2280 kV por lo que tuve que bajar el capacitor (con 10nF funciona) a 22nF para que llegue a las maximas vueltas.
- Los diseños y PCB estan hechos en KICAD. Adentro de los ZIP tienen la lista de materiales tambien. El firmware esta hecho en CSS.
- Para los observadores, SI, el pic esta overclockeado
- Por ultimo, al firmware le falta un poco y la forma de trabajar con el back emf del motor en el soft no me convence demasiado pero funciona y muy bien. Tambien lo compare (osciloscopio mediante) con un variador comercial y las formas de onda son exactamente las mismas para el mismo motor, excepto que mi variador responde muchisimo mas rapido jaja (el variador de ejemplo que tengo es de avion ojo).
- Otra observacion: Si pueden obtener una o dos motherboards de notebook, entonces pueden obtener mosfets N en SO8 en vez de DPAK. Van a tener que rediseñar la placa pero terminara siendo mas chica. Esta placa es de unos 55mm x 25mm y esta apretada al 100%.
Sin mas, que lo disfruten! La intencion no es hacer algo mas barato (un variador cuesta 4 - 5 dolares en china) sino usar lo que se tiene y hacer las cosas uno mismo.
Quedo a la espera de comentarios, sugerencias, correcciones, etc. Ire actualizando el tema con avances a medida que modifique el software.
PD: Aun no se que pasara con la placa de syma donde lo voy a probar. En estatico funciona perfecto pero se que el PID de las mismas esta preparado para motores lentos, asi que un motor rapido quiza haga algo de bamboleo en sobrevuelo. Veremos.
Adjuntos
-
bldc_pwm.zip344.2 KB · Visitas: 68
-
bldc_pwm_firmware.zip30.6 KB · Visitas: 61
-
bldc_v2_dpak_1.jpg89.6 KB · Visitas: 111
-
bldc_v2_dpak_2.jpg69.9 KB · Visitas: 121
-
bldc_dpak_v2.pdf71.5 KB · Visitas: 87
-
bldc_dpak_v2_pcb.pdf33.7 KB · Visitas: 59
-
bldc_nodriver.pdf67.7 KB · Visitas: 68
-
bldc_nodriver_pcb.pdf28.9 KB · Visitas: 44
Última edición por un moderador: