¿Es este microcontrolador PIC lo suficientemente potente como para controlar los LED PWM?

Pregunta corta

¿Es un PIC24F16KM202 ( hoja de datos ) lo suficientemente potente como para variar el brillo de 12 LED de 12 salidas PWM sin ningún paso visible de los niveles de brillo?

-------------------------------------------

Pregunta completa

Después de usar la herramienta de búsqueda PIC de Microchip para acotar una MCU según los requisitos de mi proyecto, solo me queda PIC24F16KM202 .

Mi preocupación es que algunas de las especificaciones que tiene están en el extremo inferior de la escala en comparación con otros PIC, y no tengo experiencia real antes con microcontroladores (este es mi primer proyecto de MCU/electrónica), no estoy seguro exactamente si / cómo afectará el rendimiento de mi proyecto.

El proyecto se basa realmente en la conducción de LED RGB a través de PWM, y quiero asegurarme de que el PIC sea capaz de desvanecer los LED sin problemas, sin saltos visibles entre los niveles de brillo, y también si la MCU será lo suficientemente potente como para almacenar y ejecutar el programa.

Me gustaría obtener algunos consejos antes de comprar algunos y descubrir que no van a ser lo suficientemente buenos y comenzar de nuevo.

Breve esquema del proyecto:

  • 12*PWM para controlar 4 conjuntos de LED RGB de forma independiente (a través de transistores).

  • UART para conectar a un módulo bluetooth (RN4020?) para controlar el color de los LED RGB.

  • 6 pines de entrada para cambiar el estado de los LED RGB.

  • EEPROM para almacenar el último estado entre encendido/apagado.

El color del LED RGB se cambiará con poca frecuencia por UART / bluetooth. El brillo/encendido/apagado será controlado con frecuencia por 6 entradas.

Especificaciones PIC24F16KM202:

  • máx. Salidas PWM: 16

  • Bases de tiempo PWM: 5

  • Resolución PWM (bits): 16

  • Resolución PWM (ns): 62

  • Velocidad de la CPU (MIPS): 16

  • Memoria de programa (KB): 12

He estado leyendo la hoja de datos de PIC24F y buscando en Google durante mucho tiempo para tratar de resolverlo, pero, sinceramente, estoy abrumado por la cantidad de información que aún no entiendo. Apreciaría mucho si alguien pudiera ayudarme respondiendo mi pregunta y/o indicarme algún material conciso y relevante que me permita aprender cómo responder la pregunta yo mismo.

Gracias por tu tiempo :)

No está diciendo en ninguna parte cuánta corriente necesita para sus LEDS, qué tan grande es su programa o cuantificar la suavidad requerida de la conmutación de sus LED. Sin esa información, ¿cómo podría alguien saber si es una coincidencia?
@PlasmaHH: Corriente: los LED se controlarán desde transistores, así que supongo que la corriente es mínima. Tamaño del programa: desconocido, pero traté de dar una descripción para indicar la complejidad/tamaño. Suavidad requerida: indetectable por el ojo humano. Disculpen si falta información, soy muy nuevo en esto. Gracias
"indetectable por el ojo humano" significa diferentes cosas dependiendo de si el observador está estacionario en relación con los LED. Además, si encuentra que necesita un PIC más poderoso, probablemente no requerirá "comenzar de nuevo" . Solo obtenga algunas muestras y pruebe cosas ...
@RogerRowland: Interesante. ¿Cuál sería la diferencia entre el mejor y el peor de los casos (suponiendo una diferencia relativa estacionaria y de 60 mph)?
Ok, imagine que su LED está pulsando a alguna frecuencia (25 Hz, 100 Hz, lo que sea) y luego calcule qué tan separados (en distancia) están esos pulsos, por ejemplo, a 60 mph. Si la distancia es "grande", entonces la probabilidad de que el observador perciba los pulsos es mayor. Alguna información útil aquí .
@RogerRowland: Traté de obtener muestras, pero Microchip no envía muestras al Reino Unido :(
@parrowdice Sí, lo hacen. Estoy en el Reino Unido y pido muestras regularmente. Pequeñas cantidades y limitadas a tres pedidos al mes, pero todas gratuitas. Solo hay que esperar un rato para la entrega.
@RogerRowland: Extraño. Volví a intentarlo y recibí el mismo mensaje: "Actualmente no aceptamos pedidos para el país de envío seleccionado. Gracias por su interés en Microchip". Simplemente volví al inicio del proceso de pago e hice clic en "siguiente", "siguiente", etc., y el pedido se realizó en el tercer intento. ¡Gracias por eso, o habría terminado comprando un montón!

Respuestas (3)

Mirando la hoja de datos de ese dispositivo, necesitaría usar la función de comparación de salida para controlar el PWM. Sin embargo, parece que no podrá establecer 16 períodos PWM individuales, por lo que es posible que esto no haga lo que espera. Probablemente sería mejor usar los pines de salida como E/S general y usar interrupciones para crear sus propios períodos PWM. Si lo hace usted mismo usando interrupciones, su elección de micros puede abrirse.

Esta es la respuesta correcta. Las frecuencias de PWM que necesita son bastante bajas, y puede simplemente configurar una tabla con anticipación (tiempo hasta el próximo evento, pin para encender/apagar) y ejecutar todo con una interrupción de temporizador de alta prioridad.
¿Cómo obtuviste esa información de la hoja de datos? ¿Quiere decir que no podría establecer 16 ciclos de trabajo individuales? ¿No necesitaría solo 1 período, sino variar el ciclo de trabajo en los 12 pines de salida diferentes? Gracias
Esta instrucción - 13.3 Modo de comparación de salida - El modo de comparación de salida compara el valor del registro del temporizador con el valor de uno o dos registros de comparación. Por lo tanto, no podrá tener ciclos de trabajo individuales, porque solo hay uno o dos registros de comparación.
Hace bastantes años hice un panel de estrellas para colocar encima de una cama. Tenía 88 LED blancos hechos para brillar como estrellas usando PWM. Estaba controlado por un PIC 16f877. Puedes verlo aquí: handyhowie.co.uk/handyhowie/Stars.html
@HandieHowie ¡Muy buen proyecto!
@HandyHowie: Creo que esta es la dirección que tomaré, parece la más sencilla para mí. Gracias a todos los demás, excelentes sugerencias también. PD: me gustan tus proyectos en tu sitio. ¡La mayoría de ellos son los que yo también he querido hacer!

No estoy seguro de que ningún micro tenga 12 salidas PWM de hardware individuales. Aparte de ese (no tan) pequeño detalle, el micro que mencionas debería estar bien.

Hay varias opciones que vienen a la mente:

  • usar múltiples micros- la comunicación tiene que ser resuelta, pero bajo riesgo

  • intente hacer PWM utilizando los periféricos existentes en un chip; alto riesgo de disminución del rendimiento si es muy quisquilloso; 7 bits pueden ser pasos casi imperceptibles para algunas personas, para otras pueden tomar 10 bits. Si la base PWM tiene que ser 1kHz, el jitter 1us es 1 LSB. Es un procesador de 16 MIPS, no estoy seguro de que sea práctico controlar 12 salidas a un microsegundo o dos.

  • use CPLD o FPGA externos para hacer PWM: otro sistema de desarrollo con una curva de aprendizaje pronunciada, pero alta flexibilidad y rendimiento

  • use micro + chip ASIC diseñado para letreros de video LED con PWM incorporado: la opción más fácil, en mi opinión

Estoy un poco confundida. En la página 24 muestra al menos 12 pines de salida MCCP/SCCP/PWM, ¿o lo estoy interpretando mal? ¿O está diciendo que los pines no se pueden controlar individualmente, en cuyo caso, por qué son pines individuales? Gracias.
¿No puede usar normalmente múltiples registros de captura/comparación en un temporizador para generar múltiples PWM con la misma frecuencia base y vincularlos a las salidas? No necesitará 12 PWM libremente programables para lograr lo que se necesita.
No puedo verlo ahora, pero creo que hay 5 salidas de ciclo de trabajo PWM individuales en este chip (2 SCCP + 3 MCCP).
@Arsenal OP solo necesita un período, pero no creo que el chip pueda generar 12 PWM configurados individualmente. Si la comparación de captura pudiera usarse con límites en el ciclo de trabajo mínimo/máximo, eso podría ser posible. Tomaría un poco de estudio de los documentos.
Sí, eso parece correcto, la descripción de la capacidad de los módulos es un poco engañosa (¡hasta 6 salidas! (pero solo 2 registros para comparar)).

Si estoy leyendo la hoja de datos correctamente, tiene 2 SCCP y 3 MCCP, aunque el MCCP se lee como si pudiera generar hasta 6 salidas PWM, solo hay 2 registros de comparación de salida por SCCP y MCCP, por lo que incluso si puede usar cada uno de como una salida separada, terminaría solo con 10 ciclos de trabajo diferentes (no estoy seguro de si eso es posible, en realidad).

Entonces, este PIC probablemente no pueda hacer eso solo con sus módulos de temporizador. Si quieres hacerlo de esa manera, hay otros controladores disponibles.

El STM32F051, por ejemplo, ofrece 8 módulos de temporizador, 7 tienen capacidades de comparación de captura, en total tiene 17 canales de comparación de captura disponibles (sí, cada canal tiene su propio registro de comparación de captura configurable).

Sin embargo, debe verificar el paquete correcto para que todas esas salidas no colisionen entre sí (no se pueden asignar libremente a ningún pin en STM32)

(Menciono este controlador solo porque estoy trabajando con él actualmente y tengo la hoja de datos abierta, seguramente hay otras marcas que ofrecen la misma capacidad)