04-16-2013 04:13 AM
Can you help me to make the programm ?
FASTEST = 800 RPM
04-16-2013 03:17 PM
Assuming that the hall effect sensor is activiated for a whole 5 degrees during rotations you would only see the pulse on a single poll of the digital pin (this also assumes that everything is running at ideal speeds which is not going to happen). This is way too small for me to say that it would be reliable.
So, I would say that this is not possibel with an unmodified LIFA.
You would be much better off using the interupts provided by the Arduino. This requires writing custom firmware to set up a counter using the interupt pins along with custom functions in LabVIEW to get the information. You could probably even do the speed calculation on the Arduino before sending it back if you set up the counter this way.
09-10-2013 04:32 AM
hello
I have most the sampe problem. But I use a reedcontact to count RPM.
Do you have a example of counting digital Inputs?
tanks
09-10-2013 09:26 AM
To do it accurately, you would want to modify LIFA to include use of an interrupt pin that would detect when the reed switch activates and then calculate the time between the two consecutive pulses. Then, you would simply need to add a function to LIFA to send the rpm value back to LabVIEW. Also, you would need to compensate if you have multiple pulses per revolution. However, the accuracy of the measurements will depend on the speeds you will be expecting.
01-18-2014 10:33 AM
Hey,
great to find a tread with the same problem... I'm a Mechanical Engineering Student..
I want to measure the RPM of my Home made Dyno.
I have a Hall sensor and a perforatet disk with now 2 teeth.
Problem: Accurate Data only up to 700 RPM. No delay and so on. But over 700 RPM.. very noisy signal, missing signals and so on. (see picture)
@Nathan_B: Wow I'm a bit shocked. i thought that with the Baudrate of 115000 bit/s must be really enough..
Is there no other solution than modifiing the firmware? I don't think that i can do this^^..
When i start measuring i can go to 1000 RPM and get a good signal.. It seems there is more data speed. But after 5 - 10 seconds the signal gets noisy.. It seems that the memory gets full or so..
Regards Phil
01-18-2014 05:13 PM
You are using a method known as "polling". This can work if you are able to poll much faster than your signal changes. But, if your signal is changing faster than you are able to poll, you get what is known as aliasing. You can read about this by searching for the Nyquist theorm.
So, when you are polling using LabVIEW and Arduino, you are likely polling relatively slowly and will depend highly on your OS and everything else that is running on your computer. Everytime that you send a command to Arduino, you are also sending overhead (the stuff that is required for the communication but not directly related to the measurement itself). This overhead will slowdown your overall communication rate. So, you have to take into account the overhead when determining if the 115200 baud rate is "enough".
Using an interrupt pin eliminates the need to poll. It's how most incremental (including quadradure) encoders are implemented (afaik). For the Arduino, this would require that you get a 5V pulse for every tick/tooth on your encoder disk. You would then need to check the time between pulses (or you can measure the time for several pulses and adjust your formula accordingly).
01-19-2014 03:47 AM
Hey Nathan, thanks!
ok that semes logic for an mechanical engineer.
Due to my understanding: So there is a lot of comunication. So the bottleneck ist the comunication between lifa and Labview.
1. Without labview as an Example with a LCD Display on the Arduino it will work with no problems.. Less comunication.. Seemes logic
2. With an CHip with more Power like the CHIPKIT or the new Arduino Due would it be possible because more CPU Clock and more SRAM?
3. I have to modifiy the firmware
4. Would it bring some advantage to use the digital read port instead of digital read pin (i remember i read something abaout the speed) or to use the "get timing data" block from arduino?
Best Regards
Learned a lot in the last days
01-21-2014 11:07 PM
For example:
Two (2) pulses per revolution
Read 1: Value = 9; Time = 4.0 s
Read 2: Value = 19; Time = 14.0 s
Angular velocity = ((19 - 9)/2)/(14.0 - 4.0) = 5/10 = 0.5 revolutions/second