An easier solution is an optical switch and a wheel with alternating clear and black boxes. This type of set up is used commonly on a lot of electronics, including the Roomba to determine tire speed and location. It simply counts the number of black boxes that goes by.
For the last 5 months I've been working on a sensor to use for my robot.
The goal is to know my speed.
How it all started
It all started with an assignment for school, I'd had to write a program(still haven't finished it, I'd need some help with VB6.0) which could read the speed of a dynamometer. This dynamometer uses a magnet or bolt that is connected to the axle that rotates. Then with an unipolar hall effect switch or an inductive sensor. Then based on the time between pulses you could determine the RPM, Speed and the Torque(based on the weight and size of the rollers).
How this is going to help us?
If you would know your speed you can determine the distance you have travelt and make use from the "floor map" and have the possibility to draw the route for your robot. (how to do the drawing and planning actions for the route, I don't know, I'm a mechanical engineer, not a programmer (<<-- why I love EZ-robot))
GPS:
No idea how to integrate it and probably not acurate enough for inhouse usage.
Encoder:
You have these in all sizes and shapes, varying in arrays of Hall effect sensors that reed the rotation of a magnet to a simple switch and a pin that is sticking out.
What I want to use
I'm planning to make a simple encoder. Using a magnet and a unipolar hall effect switch. The problem with this type of speedometer is that you want to know when the pulses come in every milisecond and you can't afford to miss it or the speed calculations will be of. I have tried it with the ADC meter, but it only reeds it every 100ms. So I'm going to use a frequency to voltage coverting circuit(using LM2917). In this circuit the frequency will be linear equal to the voltage.
I will probably use only 1 magnet. So if the frequency would be 10Hz my wheels would be rotating with 10RPM. So to know my speed I would only need to multiply the voltage coming out of the converter by the Hz/v and with the perifhery of my wheel.
Note: the more magnets you would use the higher the resolution of the speed.
With 10 magnets at 10RPM the frequency should be 100Hz. And then multiply this with the hz/v and the distance between magnets.
Dynamometer:
T = time (s)
T1= time at pulse 1 (ms)
T2= time at pulse 2 (ms)
dT= time between pulse 1&2 (ms)
x = distance between Pulse 1 & Pulse 2 (with 1 magnet your wheel perifhery) (m)
s = distance travelt (m)
v = velocity (ms)
a = acceleration (ms^2)
n = RPM
T = Torque (Nm)
I = Inertia (mm^4)
A = angular acceleration (degrees/second^2)
dT= T2-T1
v = x / dT
s = v * T
a = v / T
n = 60 / dT
I = a lot of calculating depending on you robot.
T = I * A
Some time ago I think it would be interesting to have a function in ARC that records the number of times a digital port goes from on to off, I mean a pulse counter.
This would add potential count the turns a wheel, by means of an optical encoder, or by a microswitch located at the wheel.
Thus we could write a script like this: when the pulse counter counts 20 pulses, robot turn left (just an example) ...
How about DJ? because if someone is able to do that, that's you ...
Just returned from the future and I took this screenshot to prove it, thanks DJ for hearing my prayers, well now I have to park my "delorean", ha ha ha.
An easier solution is an optical switch and a wheel with alternating clear and black boxes. This type of set up is used commonly on a lot of electronics, including the Roomba to determine tire speed and location. It simply counts the number of black boxes that goes by.
@Bret.
I have typed a very long story about it, but for some reason when I try to upload it, I only see like 30% of it.
For the last 5 months I've been working on a sensor to use for my robot. The goal is to know my speed.
How it all started It all started with an assignment for school, I'd had to write a program(still haven't finished it, I'd need some help with VB6.0) which could read the speed of a dynamometer. This dynamometer uses a magnet or bolt that is connected to the axle that rotates. Then with an unipolar hall effect switch or an inductive sensor. Then based on the time between pulses you could determine the RPM, Speed and the Torque(based on the weight and size of the rollers).
How this is going to help us? If you would know your speed you can determine the distance you have travelt and make use from the "floor map" and have the possibility to draw the route for your robot. (how to do the drawing and planning actions for the route, I don't know, I'm a mechanical engineer, not a programmer (<<-- why I love EZ-robot))
Other ways to know your speed
GPS: No idea how to integrate it and probably not acurate enough for inhouse usage.
Encoder: You have these in all sizes and shapes, varying in arrays of Hall effect sensors that reed the rotation of a magnet to a simple switch and a pin that is sticking out.
What I want to use I'm planning to make a simple encoder. Using a magnet and a unipolar hall effect switch. The problem with this type of speedometer is that you want to know when the pulses come in every milisecond and you can't afford to miss it or the speed calculations will be of. I have tried it with the ADC meter, but it only reeds it every 100ms. So I'm going to use a frequency to voltage coverting circuit(using LM2917). In this circuit the frequency will be linear equal to the voltage.
I will probably use only 1 magnet. So if the frequency would be 10Hz my wheels would be rotating with 10RPM. So to know my speed I would only need to multiply the voltage coming out of the converter by the Hz/v and with the perifhery of my wheel.
Note: the more magnets you would use the higher the resolution of the speed. With 10 magnets at 10RPM the frequency should be 100Hz. And then multiply this with the hz/v and the distance between magnets.
Calculations
Dynamometer: T = time (s) T1= time at pulse 1 (ms) T2= time at pulse 2 (ms) dT= time between pulse 1&2 (ms) x = distance between Pulse 1 & Pulse 2 (with 1 magnet your wheel perifhery) (m) s = distance travelt (m) v = velocity (ms) a = acceleration (ms^2) n = RPM T = Torque (Nm) I = Inertia (mm^4) A = angular acceleration (degrees/second^2)
dT= T2-T1
v = x / dT
s = v * T
a = v / T
n = 60 / dT
I = a lot of calculating depending on you robot. T = I * A
Encoder(the one I'm planning to use): The converter circuit I'm planning to use has a linear converting rate of 66Hz/v
V = Volt (V) (mind the capital V!) F = Frequency (Hz)
1 Hz = 1 RPM (because of 1 magnet) 1 Hz = 1/66 V
RPM = V * (1/66) * 60 v = V * (1/66) * x or
x = v * T
Some things might be of, love it if you'd share it with me if its off. To be continued!
Sorry about my lack of pictures ><
Some time ago I think it would be interesting to have a function in ARC that records the number of times a digital port goes from on to off, I mean a pulse counter. This would add potential count the turns a wheel, by means of an optical encoder, or by a microswitch located at the wheel. Thus we could write a script like this: when the pulse counter counts 20 pulses, robot turn left (just an example) ... How about DJ? because if someone is able to do that, that's you ...
Just returned from the future and I took this screenshot to prove it, thanks DJ for hearing my prayers, well now I have to park my "delorean", ha ha ha.
DJ some advance on quadrature encoders or pulse counter? I hope not anticipate this upset you with my time machine