Tachometer outputting increased value under load erroneously

4 Ansichten (letzte 30 Tage)
Hi all!
This project is being done in simulink.
In the project I am working on I need to count rotations per minute using a hall effect sensor. To do this I have said type of sensor connected to an arduino and it is sending out a pulse wave to a digital input pin.
To measure RPM I want to use the tachometer block. Without any load on the motor in use the output value the tachometer is outputting is precise. I put some load on the motor to slow it down, and the measured RPM increases, opposite of what it should be doing.
The whole reason I need these measurments is to know exactly how fast the motor is spinning under load.
Does anyone know what is going on?

Akzeptierte Antwort

Sean Brennan
Sean Brennan am 23 Jun. 2021
There's several things that could explain this behavior:
  1. Your code is detecting transitions from the sensor as high/low. If there are rotational vibrations in the motion, e.g. the teeth are moving very slightly backward due to load even when moving MOSTLY forward, each backward vibration would count as "more" speed because it could trip the sensor twice. A solution to fix this would be to use an A/B type encoder which detects direction changes (even minor ones), or you could possibly low-pass filter the tach signal.
  2. Motors operating under load draw far more current than without load, which may be generating electrical noise that you are picking up on your sensor. Solutions to this would again be to low-pass filter the signal, use shielded wire on the sensor side, keep the sensor wire physically separated from the motor's power wires, use twisted-pair ground/signal wire on the sensor, and make sure the sensor's power/ground lines are completely independent of the motor's power/ground.
  3. Your no-load speed measurements are aliased, namely are not being measured fast enough. An easy way to check for this is to make sure to measure the motor's speed under different applied voltages (or speed settings) as you ramp the speed up. If you are aliasing, the sensor will start to miss a tooth count, causing the speed to decrease again with higher speeds. Thus, when you slow the motor down (like under load), the speed would be increasing. As a rule, you want to make sure you are measuring the tooth sensor at least 2 times faster than the teeth can move by the sensor (Nyquist criterion), but in practice at least 5 to 10 times faster.
If these aren't the issue, it could be code - in which case you should post this to the forum. Hope this gives some debugging ideas!

Weitere Antworten (0)

Kategorien

Mehr zu Arduino Hardware finden Sie in Help Center und File Exchange

Produkte


Version

R2021a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by