Arduino Motor Shield R3 Detección de corriente

0

Estoy tratando de usar la funcionalidad de detección actual de Arduino Motor Shield R3 , el escudo se basa en L289 . Los valores que leo parecen ser muy ruidosos. Estoy usando la función Arduino UNO A0 analogRead () para detectar la corriente. Para solucionar esto, he intentado usar un filtro de paso bajo entre el protector del motor y el arduino uno.

simular este circuito : esquema creado usando CircuitLab

Esto ayudó a corregir el ruido de medición, sin embargo, tengo varias preguntas al respecto:

  1. ¿El ruido en la señal de detección es más causado por el propio motor del hecho de que el motor es impulsado por PWM? (Tenga en cuenta que ya he aumentado la frecuencia PWM de Arduino Uno a 32 kHz).
  2. Si agregaría un filtro de paso bajo a la señal de entrada de PWM, ¿la detección de la corriente aún sería ruidosa? He intentado agregar un filtro de paso bajo a PWM pero no parece que cambie la detección de corriente. Sin embargo, el filtro de paso bajo afectó al motor, comenzó a funcionar como de costumbre y se desaceleró casi hasta detenerse con el tiempo. Tal vez conecté incorrectamente el filtro de paso bajo para PWM.
  3. ¿Existe realmente alguna ventaja de agregar un filtro de paso bajo para una señal PWM de entrada o es PWM de 32 kHz lo suficientemente rápido y debería ir con el filtro de paso bajo para la detección de corriente?
pregunta JuliusG

1 respuesta

3

En el diagrama de bloques en la hoja de datos, puede ver que la detección de corriente está influenciada por las etapas de salida del puente H. Esto significa que cuando usa PWM para impulsar el motor, el voltaje de detección variará con la señal de PWM. El voltaje a través de la resistencia sensorial es proporcional a la corriente a través de él, que a su vez depende del voltaje a través de la inducción del motor. Durante el período positivo de la señal PWM, la corriente aumentará 'lentamente' mientras que durante el período negativo de la señal PWM la corriente disminuirá 'lentamente'. En la práctica, esto se verá un poco como una onda triangular y ese es el ruido que se mide.

La solución es asegurarse de sincronizar la medición de la tensión de detección con la señal PWM. Por ejemplo, puede adjuntar una interrupción al temporizador que se usa para la señal PWM y requiere un poco de indagación en la hoja de datos del microcontrolador (y algunos ensayos y errores) para descubrir cómo darse cuenta de eso. Otra opción es conectar un pin de interrupción al pin de salida PWM, que puede ser más simple para comenzar. Se puede hacer, aunque es posible que deba disminuir la frecuencia de PWM (para adaptarse a la conversión de ADC dentro del ciclo de trabajo de PWM), programar directamente los registros de hardware (las bibliotecas de Arduino son lentas) o utilizar algún ensamblaje.

    
respondido por el jippie

Lea otras preguntas en las etiquetas