Real-Time Measurement and Control

cancel
Showing results for 
Search instead for 
Did you mean: 

crank angle measurement using a Hall Effect sensor.

Has anyone ever used a Hall Effect sensor to measure engine speed and crank angle? I'm trying to figure out how to have it measure crank angle of a single-cylinder engine using any DAQ system. I just need to know what parameters or VI's are used to translate the data output from a Hall Effect sensor into crank angle in degrees. I have a 35-teeth wheel attached to the crankshaft and the sensor installed right in front of it so i'm getting 35pulses/ revolution. I guess my question is how do i manipulate the pulses i'm getting into crank angle in degrees? Do i go about it like an incremental encoder or do i use tone extraction, etc. Any suggestion will be appreciated. Thanks.
0 Kudos
Message 1 of 9
(6,645 Views)

jaydee1,

 

I am by no means a Hall Effect expert, but first we need to figure out what type of output the sensor has usually it is TTL or the like.  If so will probably want to look at an example like Count Digital Events-Buffered-Continuous-Ext Clk.vi and then do some math to figure out which angle you are at.

 

You might also want to look at these similar forums here and here.  There are also many others.

Sincerely,
Jason Daming
Applications Engineer
National Instruments
http://www.ni.com/support
0 Kudos
Message 2 of 9
(6,636 Views)

Ok, so i got the hall sensor to give engine speed using tone extractor vi (obtaining frequency and then manipulating the data). The problem i  have now is getting crank angle from it. The missing tooth on the crank gear (36-1) has been aligned to approximate the TDC of the engine. However, I've spent all day trying to figure out a way to write my code so that i get 360 degrees per revolution with a TDC indicator from the missing tooth. There are tons of help here on using the incremental encoder for this but it seems like the Hall effect sensor is not so popular here. Unfortunately, i'm stuck with it and need some help. Thanks y'all.

0 Kudos
Message 3 of 9
(6,612 Views)
Have you tried counting the edges from the teeth that have passed through the sensor and converting as necessary?
Regards,


h_baker
National Instruments
Applications Engineer
0 Kudos
Message 4 of 9
(6,592 Views)
The problem is not with the counting, it's with specifying an action whenever i get to the 36th tooth (that is missing). I need a way to mark that spot. I know this can be done, i just don't seem to be able to wrap my head around it.
0 Kudos
Message 5 of 9
(6,578 Views)
Try using a case structure when you reach the 36th tooth to contain a while loop with shift register to keep track of the number of times this tooth has passed.  You can also do any calculations related to this count inside the structure.
Regards,


h_baker
National Instruments
Applications Engineer
0 Kudos
Message 6 of 9
(6,544 Views)
Thanks man. I have actually thought about that. The problem is actually doing it. How do i specify that when the program sees a missing tooth (in the form of a crest that's at maximum (5V) when it should normally return to zero), it should carry out an action. I guess i'm just not able to specify that condition. So from 0 to 35, i have continuous troughs and crests in regular manner until i reach 36 where i get a crest instead of a trough; how do i specify that in every revolution?
0 Kudos
Message 7 of 9
(6,539 Views)

jaydee1,

 

I think what you might be looking for is Pulse Measurements.vi and use the pulse duration output.  If not you will probably find what you want on that Pallette.  From what I understand you need to detect when a pulse stays high for longer that the normal time.  You would use this output to feed the case structure that h_baker mentioned.

Sincerely,
Jason Daming
Applications Engineer
National Instruments
http://www.ni.com/support
0 Kudos
Message 8 of 9
(6,520 Views)
Ok, due to sampling rate limitations on my DAQ, i'm trying to transfer my application to a compactrio 9014 with a NI-9401 and a NI-9221 module. Still using my hall-effect sensor, i connected its output to the analog input (i.e 9221) and tried to use the same tone-extractor vi i used in my previous application to obtain frequency and subsequently, calculate my engine speed, but i'm getting zero output from the frequency terminal of the tone-extractor. Then i tried connecting to the digital input (NI-9401); i'm able to count high and low periods, and the rising edge but I have no clue how to convert this to engine speed in revolutions per minute. I tried using the ticks in FPGA and obtaining ticks/count like was done in quadrature encoder.vi example, but it didn't work. My ticks/count increments to 154 and stops there. I believe someone out there might have accomplished this task; please help me out. Thanks.
0 Kudos
Message 9 of 9
(6,387 Views)