Continue to Site

Welcome to EDAboard.com

Welcome to our site! EDAboard.com is an international Electronics Discussion Forum focused on EDA software, circuits, schematics, books, theory, papers, asic, pld, 8051, DSP, Network, RF, Analog Design, PCB, Service Manuals... and a whole lot more! To participate you need to register. Registration is free. Click here to register now.

[SOLVED] some questions motor speed monitoring

Status
Not open for further replies.
very nice project as an application of hall effect sensor and it also measures data but the prototype is not easy to build... :)

You are correct, it would take some time and effort. I think the project shows incredible resourcefulness, using a bearing out of an old hard drive, plastic Easter Eggs for the wind cups, etc.

Besides you wouldn't need to build the entire project, you could adapt portions to your desire tasks.

Sleep tight and I'll talk to you in the morning, your morning that is!

BigDog
 
maybe not worth doing it at any cost... it would be appreciable for a simpler solution at student level....

few post and links of bigdogguru looks complicated to me at my level tooo....
 
hello, I have now a small motor from my old TOY car... :)

Im planning to count the RPM using EXternal ISR..
let say for example

PHP:
ISR countRPM()
{
   RPM++;

}
and another ISR for the time(1ms)
let say


PHP:
ISR time() //count 1ms
{
   tic++;   
  if(tic >= 500) //example it is 1second
  {
     tic = 0;
      second_has_elapsed = 1;
  }

}

then after this do the computation and then display to LCD..

now, pls tell me what is your suggestions :)

---------- Post added at 12:50 ---------- Previous post was at 12:44 ----------

can I divide the count variable(RPM) with seconds? because I don't want to update the RPM every minute.. im confused... :)

---------- Post added at 13:33 ---------- Previous post was at 12:50 ----------

Im confused of some RPM counter in youtube because even the motor is just started then the starting RPM count is 2000 and others 1000..
how could that be?
 

An alternative to count pulses/sec would be to use two timers, one set to count the input pulses and the second timer as a gate for the first timer to measure the pulses for a specific time period, for example if you measure for 0.5sec you will get 25 counts , then multiply with two to get the counts /sec and clear the timers to start over (or keep the current value and subtract it).

This method I describe uses the timer with an external clock source (I prefer a 16bit timer so that there is no need for overflow counting), all you have to do is provide the square wave pulses to the mcu timer input.
The advantage of this way is that you will only have a few interrupt (depending on the overflows of the counters) while with the external interrupt you will get interrupts every few ms (depending on the speed of the motor)

Alex
 
An alternative to count pulses/sec would be to use two timers, one set to count the input pulses and the second timer as a gate for the first timer to measure the pulses for a specific time period, for example if you measure for 0.5sec you will get 25 counts , then multiply with two to get the counts /sec and clear the timers to start over (or keep the current value and subtract it).

let say for example my hall sensor sensed 200 pulses/sec then if I want to update the display every one second then I will just display the 200 pulses?
so if this is the scenario in 60seconds = 1minute the RPM will be 200*60 =12000RPM?
 

If there is one hall sensor that gives one pulse per revolution and you want to measure the revolution/min then you can sample for a smaller while and multiply the value, you can measure for 1sec and multiply with 60 or measure for 0.5sec and multiply with 120 or you can measure for longer periods too if you want like 10sec *6.
Your calculation is correct, a higher sample period will probably give more accurate result so theoretically if you measure for 1min you will have the best accuracy , if you measure for 1sec then an error of 1 revolution will result in 60 revolutions when multiplied in the final result

Alex
 
If there is one hall sensor that gives one pulse per revolution and you want to measure the revolution/min

yes I have only one sensor..

Your calculation is correct, a higher sample period will probably give more accurate result so theoretically if you measure for 1min you will have the best accuracy

but If I measure the pulses every 1minute it's not exciting. It's more exciting to look at if the numbers are moving... :)

---------- Post added at 16:01 ---------- Previous post was at 15:57 ----------

I think what I did not get here is the math concept of this topic How I will display the RPM in real-time..
 

but If I measure the pulses every 1minute it's not exciting. It's more exciting to look at if the numbers are moving... :)

In that case you can display a number and have it scrolling left and right doing some dance moves while you wait for the correct measurement result :lol::lol::lol::lol::lol:

I think you can combine both accuracy and fast result, measure for 0.5sec to get an estimation of the speed and show it on the screen, then at 1sec do another estimation , then at 10sec , 20sec, 30, 40, 50 and 60sec show the updated results
In the meanwhile you can have an array where you can hold the last six measurements (every 10sec) and each time you get a new measurement replace the older one of the 6 measurements, then by adding these 6 results you will be able to shown the speed result for the last 60sec.
The disadvantage is that this works like a 60sec average so even if the motor stops it will take about 1 min to see a result of 0 in the screen.
You can do many different things, it is up to you to decide what exactly you want.

Alex
 
In that case you can display a number and have it scrolling left and right doing some dance moves while you wait for the correct measurement result :lol::lol::lol::lol::lol:

Alex

hehe... yeah it's possible.. hehe

check this video this can be the array sample method you mentioned



---------- Post added at 16:23 ---------- Previous post was at 16:20 ----------

but I dont understand the logic why the RPM starts at 2000 ?? what's the reason..?
 

It seems to be some kind of moving average but the buffer samples seem to be at a faster rate because the value shown changes fast when the fan speed changes.
It also gives the 0 very fast when the fan stops this can be a condition that checks the measured pulses and if they are 0 then it immediately clears all the stored results so it shows 0.

Alex

---------- Post added at 17:31 ---------- Previous post was at 17:27 ----------

Why would you expect it to start from 0, in the way I have described you start showing the measured values which will be very close to the real speed and you start using the average only when the array is filled, so when you measure at 1 sec , 10sec etc you will also get the correct rotation speed.

Alex
 

Im not expecting it to to start at 0 hehe :) I mean if the motor is very slow let say 50RPM only..
 

The video shows a pc fan and they usually have 1500-2500RPM , if you have a slow rotating motor then you will also see lower results, the screen just shown the result of the measurement.
If you have a very slow motor that gives pulses every sec or more then you have to measure for a few seconds to get a meaningful result , a 50 RPM motor will give 0 in 0.5sec or 1sec , you have to measure at least 5sec to get just 4 pulses that can give an estimation of the actual rotating speed

Alex
 

ckshivaram this discussion in for the RPM of the engine which are higher that normal until the engine warms up, I don't see the relation with a circuit that measures the DC motor speed.

Alex
 
But the links you have posted talk about real RPM of an automobile engine which are higher when the engine is cold, how is this related to the initial rotation value shown in the lcd of a circuit that measures the RPM of a DC motor?
The DC motor will accelerate and then keep an almost constant speed (assuming that the load doesn't vary) but it is not about that either, romel was just wondering why the initial value shown in the display was 2000.

Alex
 
anyway.. to make it simple. :)

I will have two display in the LCD. the pulse detected in seconds and the total pulsed detected in minutes... :-D :-D :-D :-D :-D :-D :-D
after the update of RPS meaning 1min it will be reset and the RPM updated for the total /minute... hehe RPS is just for a sake of my intention to see a moving numbers in the lcd... hehe what do you think.... :) :-D :-D :-D :-D:-D :-D :-D :-D :-D :-D

PHP:
  --------------------------------------------
|RPM: xxxx                                   |----->> this is the LCD :P
|RPS: xxxx                                   |----> 2x16 LCD  -D :-D :-D :-D
 ---------------------------------------------
 

RPS will show 0 for any speed below 60RPM and you said that you have a 50 RPM motor

I think not.. because every one second the pulse detected is being store to RPS and display to LCD

Im not sure I am doing right... hehe :-D :-D :-D :-D :-D :-D :-D :-D :-D:-D :-D :-D
 

Status
Not open for further replies.

Similar threads

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Back
Top