Arduino Motor Shield R3 Detección de corriente

Estoy tratando de usar la funcionalidad de detección de corriente 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 escudo del motor y arduino uno.

esquemático

simular este circuito : esquema creado con 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 causado más por el propio motor que por el hecho de que el motor es impulsado por PWM? (Tenga en cuenta que ya aumenté la frecuencia PWM de Arduino Uno a 32 kHz).
  2. Si agregara un filtro de paso bajo a la señal PWM de entrada, ¿la detección de corriente seguiría siendo ruidosa? Intenté agregar un filtro de paso bajo a PWM, pero no pareció cambiar 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é el filtro de paso bajo para PWM incorrectamente.
  3. ¿Existe realmente alguna ventaja de agregar un filtro de paso bajo para una señal PWM de entrada o el PWM de 32 kHz es lo suficientemente rápido y debería usar el filtro de paso bajo para la detección de corriente?
No puede esperar que sepamos qué es un "Arduino Motor Shield R3". Ni siquiera puedo decir a partir de su pregunta si R3 es algún tipo de número de modelo, el designador de una resistencia u otra cosa. Este es un sitio de electrónica general donde los arduinos son un pequeño subconjunto de lo que se habla. Un esquema ayudaría a explicar exactamente qué se está detectando y cómo se presenta a una entrada A/D (¿presumiblemente?) de un microcontrolador en alguna parte.
No desea filtrar señales PWM de paso bajo; la idea es encender y apagar un transistor, evitando colocarlo en un estado intermedio en el que disipa calor.

Respuestas (1)

En el diagrama de bloques de 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 accionar el motor, el voltaje Sense variará con la señal PWM. El voltaje a través de la resistencia de detección 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 parecerá un poco a una onda triangular y ese es el ruido que mide.

La solución es asegurarse de sincronizar la medición del voltaje 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 investigación en la hoja de datos del microcontrolador (y algo de prueba y error) para descubrir cómo darse cuenta. Otra opción es conectar un pin de interrupción al pin de salida PWM, que puede ser más sencillo para empezar. Se puede hacer, aunque es posible que deba reducir la frecuencia de PWM (para ajustar 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 usar algún ensamblaje.

ingrese la descripción de la imagen aquí

¿Un filtro de paso bajo en la señal de detección no está logrando el mismo efecto? ¿También desaparecería esta onda triangular si usara un cambio de voltaje directo en lugar de PWM?
El filtro de paso bajo logrará el mismo efecto, pero requiere hardware adicional, mientras que el muestreo síncrono es una solución de software. No estoy seguro de lo que quiere decir con "cambio de voltaje directo usado en lugar de PWM"
Prefiero la solución de hardware en este caso. Por cambio de voltaje directo estaba pensando en filtrar el PWM que va al blindaje del motor. ¿Hacer esto tendría alguna ventaja en comparación con la función de detección de filtrado?
Si filtra el PWM a un voltaje analógico que ingresa al escudo del motor, definitivamente matará el escudo. Las etapas de salida no están diseñadas para voltajes analógicos, son altas o bajas. Ahora que lo pienso y reviso el diagrama del circuito en mi respuesta, el chip del controlador convertirá el voltaje analógico en una señal lógica de todos modos (las puertas AND), por lo que no funcionará en absoluto.