¿Eliminando el ruido del motor con el sensor de efecto Hall?

1

Estoy tratando de construir un sistema de indexación para un giradiscos ferroviario modelo. Quiero usar un sensor de efecto Hall como tacómetro para una marcha, y controlar el motor con un Arduino y un puente H. Tengo un tablero del conductor del motor H bridge barato de Ebay y un Arduino Uno y un sensor de efecto Hall de Sparkfun. Con el motor de la plataforma giratoria que tengo que usar, estoy recibiendo toneladas de ruido eléctrico. Está activando las interrupciones en el Arduino cada vez que está encendido. ¿Qué puedo hacer para reducir esto?

Editar:

Aquí está el esquema de la parte del sensor del efecto Hall del circuito. Hoja de datos del sensor

simular este circuito : esquema creado usando CircuitLab

Estoy usando una placa de controlador de motor, no el protector oficial del motor Arduino, para impulsar el motor. No tengo una hoja de datos, pero aquí hay un enlace de Amazon.

El motor que estoy usando es un motor de plataforma giratoria Atlas HO, y de acuerdo con el número de pieza al costado, encontré esta hoja de datos. [No me permitirá publicar un enlace porque mi reputación es inferior a 10. El motor es un FK-280PA.]

    
pregunta K4KFH

2 respuestas

1

Un experimento barato podría ser agregar algo de capacitancia al cable de señal. No importa si va a + 5V o GND; Funcionará de la misma manera.

Frecuencia de corte = 1 / (2 * pi * R * C) donde C está en Farads, R está en Ohms (10k como se dibuja en este momento), pi es 3.14159 ... y la frecuencia está en Hertz ( eventos por segundo). Recuerda mantener los prefijos SI rectos.

Mantenga un margen cómodo entre el corte y su frecuencia máxima esperada de dientes, y debe rechazar al menos parte del ruido del motor que cae por encima de eso.

También querrá asegurarse de que esté utilizando un disparador Schmitt en algún lugar entre este filtro y la interrupción, ya sea integrado en el chip o un inversor schmitt externo o algo similar que requiera un gran cambio en la entrada para cambiar realmente Estado y no es sólo un amplificador analógico con ganancia ridícula. Debido a que no puede deshacerse de todos el ruido, este último todavía le dará un montón de interrupciones a medida que la señal pase de alta a baja o viceversa; el primero esperará un alto o bajo más sólido antes de cambiar, lo que debería reducir el número de transiciones por diente.

Si puede obtener un no-conteo confiable entre dientes y aún puede ver todos los dientes, pero no puede obtener exactamente un conteo por diente, entonces tendrá que hacer un poco de rebote en el software. Las dos formas en que me gusta hacerlo son:

  1. Lea el pin periódicamente, independientemente de la actividad, lo suficientemente lento como para fallar el rebote, pero lo suficientemente rápido como para seguir respondiendo.
  2. Use un temporizador para ignorar todas las transiciones que están demasiado cerca de la última. Seguirás interrumpiendo en todos ellos, pero no hagas nada si aún no ha sido suficiente.

# 1 funciona bien para las interfaces de usuario, pero creo que # 2 podría ser mejor para su situación.

    
respondido por el AaronD
1

El FK-280PA es un motor de CC con escobilla de carbón que tiene una corriente de bloqueo de 3.25A a 12V. Siempre que tenga instalados condensadores de supresión de RF (~ 0.1uF entre terminales o desde cada terminal hasta la caja) no debería producir mucha interferencia.

Las razones más probables para detectar interferencias son un 'bucle de tierra' (corriente del motor que pasa por el cable de tierra del sensor), o corriente / voltaje inducido en los cables del sensor.

Debe ejecutar cables de tierra separados para el controlador del motor y el sensor. La conexión a tierra del conductor del motor se debe conectar directamente a la fuente de alimentación con un cable corto y grueso. La tierra del sensor debe ir a la tierra del Arduino. De esa manera, la señal del sensor no se verá afectada por la corriente relativamente alta del motor.

Compruebe si hay inducción moviendo el sensor y su cableado lejos de los cables del motor. Puede reducir la corriente inducida retorciendo los cables del sensor y manteniéndolos a cierta distancia de los cables del motor. El acoplamiento capacitivo (voltaje) se puede reducir utilizando un cable blindado, con el blindaje conectado al cable de tierra en un extremo.

Otra posibilidad, si está ejecutando todo desde la misma fuente de alimentación, es que no puede manejar la corriente total del motor y está causando que la tensión de suministro se caiga momentáneamente. Para solucionarlo, obtenga una mejor fuente de alimentación y / o coloque un condensador de filtro grande (por ejemplo, 1,000uF) en los terminales de entrada de alimentación del controlador del motor.

O puede ser que tenga el sensor mal conectado. El circuito recomendado muestra un condensador de 100 nF de Vdd a Vss y un condensador de 4.7 nF de OUT a Vss. ¿Incluyó esos y ha verificado que los números de pin son correctos?

    
respondido por el Bruce Abbott

Lea otras preguntas en las etiquetas