¿Es posible usar PWM con 4 pines en PIC16F84A? [cerrado]

-1

He hecho un seguidor de línea y el problema que estoy enfrentando ahora es su ajuste de velocidad. El motor funciona demasiado rápido y, afortunadamente, mi controlador de motor admite el control de velocidad PWM.

Como mi proyecto se centra en PIC16F84A y uso 4 pines para controlar mis dos motores. ¿Sería posible implementar la funcionalidad PWM en los cuatro pines?

Sería fantástico si la solución provista estuviera más orientada al código o simplemente fuera un circuito mínimo.

    
pregunta Utkarsh Verma

1 respuesta

0

Como descubrió al leer la hoja de datos, el PIC16F84A no tiene ningún hardware PWM. Aún puede generar PWM, pero tendrá que hacerlo 'golpeando' los pines de E / S en el software.

La frecuencia, resolución y precisión máximas de PWM estarán limitadas por el tiempo de ejecución del código, y cuantas más salidas PWM produzca, más lentas serán (para dos motores, debería solo necesita dos salidas PWM, con las otras salidas mantenidas altas o bajas). Para obtener los mejores resultados, el código se escribiría en ensamblador, con una cuidadosa atención al tiempo de ejecución de cada instrucción.

Si la MCU necesita hacer otras cosas (p. ej., leer sensores fotográficos) al mismo tiempo, se vuelve complicado, pero es posible siempre que las otras cosas se puedan hacer entre transiciones PWM. Una solución es usar Timer0 para generar el tiempo de PWM, con las actualizaciones de pines de PWM realizadas en el ISR del temporizador. Esto introducirá cierta inestabilidad y reducirá la frecuencia máxima de PWM, pero permite que otro código se ejecute en segundo plano sin preocuparse por alterar el tiempo de PWM.

Si la MCU también debe ejecutar otro código con requisitos críticos de tiempo (por ejemplo, software UART), entonces se vuelve aún más complicado, tal vez incluso imposible. En ese caso, es posible que desee considerar cambiar a un PIC más moderno con PWM de hardware.

    
respondido por el Bruce Abbott

Lea otras preguntas en las etiquetas