Estoy buscando un IC que me de un mínimo de 6 canales PWM independientes para el control del motor, preferiblemente con una interfaz SPI pero esto no es crítico. Mi micro estará ocupado con cálculos de coma flotante, etc, así que no quiero correr el riesgo de atarlo. ¿Alguna sugerencia?
Respuestas
¿Demasiados anuncios?Ya lo tienes:
No hay necesidad de añadir otro chip. Como afirmaron Olin y Steven, estos periféricos de hardware probablemente utilizarán una CPU comparable a la de un periférico externo. No te arriesgas a escribir tu CPU empleando periféricos hardware.
Y lo que es más importante, el punto flotante en un AVR es tu cuello de botella, no el PWM. Considera elegir un microcontrolador con hardware de coma flotante, añadir un coprocesador con coma flotante, cambiar a un procesador que tenga coma flotante y 6 canales PWM (probablemente un DSP o ARM9 que será mucho más complejo y caro que tu Atmega88), o (preferiblemente) modificar tus algoritmos para que sean más rápidos y utilicen aritmética de coma fija. Acelerar el PWM de 0.2% a 0.1% (si es que usar un IC PWM externo es realmente útil) no ayudará si tus algoritmos de punto flotante están tomando el 200% del tiempo de tu CPU.
Estoy de acuerdo con Steven . No hay ningún problema en tener el PWM producido por el mismo micro que está haciendo el cálculo pesado porque las señales PWM se producirán en hardware sin intervención de firmware requerida excepto cuando se desea cambiar las propiedades PWM. Módulos PWM integrados es entonces una ventaja porque tomará menos ciclos para alterar su configuración de lo que sería ir a través de un bus SPI o algo para comunicarse con un chip PWM externo.
Todo lo que necesitas es un microcontrolador con 6 o más canales PWM hardware. Echa un vistazo a la gama alta dsPIC33Fs de Microchip. Debería haber algunos con al menos 6 canales PWM. 6 realmente no es un número enorme para un controlador de gama alta hoy en día.
¿Tal vez controladores LED? Las tiras RGB suelen controlarse con PWM. Hay algunos buenos controladores por ahí que tienen un montón de canales, como 8 a 24 salidas PWM. Como el PCA9685. Desafortunadamente es I2C y de 16 canales (sobrecarga de bits), pero es un chip PWM dedicado puede conectar fácilmente algunos controladores FET para su motor. Creo que una solución mucho más fácil opuesto a la adición de otro microcontrolador en su tablero.
El PCA9685 puede conmutar hasta 1kHz, lo que me parece suficientemente rápido para motores.
Un microcontrolador separado para su PWM, como Matt sugiere, es una posibilidad, pero tal vez usted ni siquiera necesita eso. Usted no está diciendo qué micro que desea utilizar, pero los controladores NXP LPC175x y LPC176x tienen al menos 6 canales PWM que están controlados por el hardware del temporizador y no requieren software una vez configurados, por lo que puedes dedicar más tiempo a los cálculos. Ajustar los temporizadores no debería ser más intensivo para el controlador que mantener una línea de control con un controlador externo.
Si estás usando un controlador diferente puedes seguir usando uno de los LPC1751 como controlador PWM. Es un controlador de gama baja, pero tiene más que suficiente a bordo para hacer el PWM.
- Ver respuestas anteriores
- Ver más respuestas