Observación interesante sobre comportamiento extraño usando motores y transceptor IR

0

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

    
pregunta David Norman

1 respuesta

2

Para mi hay 3 posibilidades:

  1. Este es un error de firmware No hay nada de malo en tu hardware, pero hay un error en tu código. Si fuerza su entrada IR a GND utilizando un cable, soldadura o cualquier otra cosa. ¿Sigue ocurriendo el problema?

  2. Hay algo en el pin de entrada para el IR . Puede evaluar eso conectando un osciloscopio en el pin IR de su MCU. Su motor probablemente está perturbando la parte IR. Tal vez esté utilizando un extremo sensible para su IR. ¿Los cables del motor podrían estar cerca de las partes IR?

    Solución: mejor aislamiento, mejor desacoplamiento, separación física de los cables, etc ...

  3. No hay nada medible en la entrada IR de tu MCU, pero no es un error de firmware . El problema podría ser la fuente de alimentación. ¿Desacoplas adecuadamente el poder de tu MCU? ¿De dónde viene la potencia del motor? ¿El mismo suministro que el MCU? ¿Está regulado? Es posible que el motor esté consumiendo demasiada corriente o que esté generando demasiado ruido en los rieles de alimentación, lo que puede provocar que la MCU se moleste de alguna manera. Trate de medir sus rieles eléctricos con un osciloscopio, si es ruidoso o está caído, entonces este es su problema.

    Solución: use un regulador de voltaje adecuado, coloque tapas de desacoplamiento en el pin de la MCU pero también a través de la fuente de alimentación del motor, cerca del motor.

respondido por el Blup1980

Lea otras preguntas en las etiquetas