Go Down

Topic: Small potentiometer range to give full 0-5V? (Read 2471 times) previous topic - next topic

MaxHeadroom

Hi All
Here's the problem:
I want to control a potentiometer with a foot pedal. Pot is read by Uno analog input. If I connect the potentiometer direct to the foot pedal axis, I will get a a range of about 40 degrees movement on the pot. This is actually 20 degrees forward and 20 degrees backwards with center off (for forward and backward speed control).
I know there are commercial products out there such as actuators and foot pedals as well as means to extent the range of the pot mechanically, but this is a hobby project and I want to keep cost low and mechanically simple.

40 degrees on a standard 270 degree pot translates to a value of about 152 in the ADC register. This is too small for me, I would like to use as near to full range of the register as I need presision (well 70-80% will still be good).

My other idea is to electronically amplify this with opamps but I must have been sleeping when we studied opamps in class all those years ago. I can not come up with a circuit.

So, anybody got any ideas? With opamps, I want to input say 2.5V-3.5V and want to circuit to output about 0-5V which I then use as analog input. Upper and lower limit must be adjustable.
What would you call a opamp circuit like that (since just about all opamp circuits got names :) )

Thanks

Grumpy_Mike

Why not use a reduced referance voltage to get the full swing from your reduced angle of movement.

MaxHeadroom

Thought about that, but that would mean that I have to start from the one end of the pot which is near mechanical stop. I need to allow room for adjustment, electrically and mechanically.
But I won't rule this idea out completely.

Grumpy_Mike

Ok, how about using a rotory shaft encoder and just counting pulses.

MaxHeadroom

Cost. Plus I would need 6 digital pins (3 per pedal for A,B and Z signals), which I don't have.

silverxxx

For an opamp you would need an inverting circuit where you replace the virtual ground at the (+) input with a reference (pot) to remove the offset.  The gain should be 5 but you could make it adjustable, too. Some other factors to consider are the power supply, most op amps do not like 5V single supply power, so you need probably one of those fancy cmos ones. Then there is the output swing, that depends on your choice of power supply and op amp. You want to make sure it can swing to zero and it can reach 5V.

Another option would be to use a higher power supply for the potentiometer and use some diodes (or a zener diode) to remove the offset. The higher supply would act as an amplifier. But that could break the arduino if it gets in the analog pin, so this also presents problems.

Grumpy_Mike


Cost. Plus I would need 6 digital pins (3 per pedal for A,B and Z signals), which I don't have.

Any other vital information you are withholding?

arduinohabib

Why don't you use the "map" function? analogRead the footpedal when you aren't stepping on it, write it down, the analogRead it when you press it all the way down, then
Code: [Select]

val=analogRead(A0);
val=map(val, reading_when_not pressed, reading_when_pressed_all_the_way_down, 0, 1023);
What is man's best friend? The breadboard!

Nick Gammon

That won't increase the accuracy of the reading.
Please post technical questions on the forum, not by personal message. Thanks!

More info:
http://www.gammon.com.au/electronics

arduinohabib

What is man's best friend? The breadboard!

Grumpy_Mike


MaxHeadroom

Thanks guys for the replies sofar.

@Grumpy_Mike: Not sure what other vital information I'm with holding :) I just don't have spare pins and want to stick to using the analog input. Another consideration is that encoders needs to be reset every time to find reference and the absolute one might be low cost, bust still expensive in time spend building and setting it up.

@silverxxx: You right about wanting to swing to close to the supply rails and use a low supply voltage. I remember something that the output becomes too erratic?

hmmm :) I've been looking for  a solution for this for a while now. Looks like I then have to either get an actuator made for this, or go the mechanical way of increasing the travel of the pot.
Another idea I'm working on is using a slider pot, it has a shorter travel.

Nick Gammon

Your original figures give you quite a bit of precision (1 in 152). Is that not enough?
Please post technical questions on the forum, not by personal message. Thanks!

More info:
http://www.gammon.com.au/electronics

MaxHeadroom

#13
Jan 29, 2013, 11:19 am Last Edit: Jan 29, 2013, 11:33 am by MaxHeadroom Reason: 1

Your original figures give you quite a bit of precision (1 in 152). Is that not enough?

Consider that this is a forward backward control with center off, so in fact I have then only 0-76 each way.
Then, I set some dead band around the center, reducing it even more.
I also have a quick calibrate function for the maximum ends where I store the center point and maximums in EEPROM, this must be within the range.
There must also be some leeway for the center point calibration.

It is getting a bit skinny now :)

Only then do I
Code: [Select]
int speed = map(potValue, centre+deadBand, maxTravel, minSpeed, maxSpeed)  for forward speed and Speed is within 0-255 for the PWM

fungus

No, I don't answer questions sent in private messages (but I do accept thank-you notes...)

Go Up