Estoy trabajando en un robot con las siguientes especificaciones:
- Motores de vibración de dos monedas con clasificación de 3 V para locomoción
- Motores activados utilizando dos transistores Darlington (se muestra un diagrama a continuación)
- Transistores activados mediante pines PWM en el microcontrolador ATMEGA164PA
- Un módulo de transceptor IR para la comunicación
- Usando dos baterías de celda de moneda en paralelo, cada una nominal de 3 V, 300 mAh
Solo estoy recibiendo señales de IR en el momento en el que estoy encuestando el pin RxD para comprobar cuándo está lento e incrementar un contador cada vez que el pin baja (RxD está activo bajo)
Estoy enfrentando un problema extraño. Estoy usando PWM en el temporizador 0 para conducir los motores y cuando configuro el PWM en los registros OCR0x a 0 (o cualquier otro valor), noté que el pin RxD comienza a recibir señales (baja) aunque no esté enviando Cualquier señal al módulo transceptor. Sin embargo, cuando inhabilito el temporizador 0, todo está bien y el transceptor solo recibe cuando le envío algo.
No puedo averiguar por qué es eso. ¿Hay algo mal que podría estar haciendo? Tengo un condensador de supresión de ruido cerca de los motores, así como el diodo del volante.
EDIT
Otra observación interesante. Cuando manejo los motores directamente al encender el pin GPIO (el mismo pin que PWM_1) en lugar de usar el PWM, noté que no hay interferencia con el transceptor de infrarrojos, lo que indica que el temporizador es un problema.
Nota: más observaciones vendrán a medida que avanzo