What resolution for a potentiometer?

Started by egasimus, September 20, 2011, 06:03:12 AM

Previous topic - Next topic

egasimus

Now, I'd prefer 8 bits, as I also want to implement a lookup table in a microcontroller with very limited memory (something along the lines of 1K or 2K total - at least the program code is fairly simple, and I'll be writing it in ASM). But, as far as I remember, MIDI CCs are 7-bit, and have some problems with resolution.

It's all for an expression pedal-mounted pot, eventually controlling the rate of a modulation pedal. Just an idea for now, but might get around to building it in the near future.

potul

Some midi CC have MSB and LSB...., so you can have up to 14 bits resolution, I think.

egasimus


SISKO

Is it 14 bits of resolution really worth it?
Gosh! I even though it was >8 bits..  Time to go to the breadboard i think. 
--Is there any body out there??--

armstrom

I'm not quite sure what you're asking, but keep in mind every bit you add doubles your number of discrete values. So while the 7 bits (128 possible values) used in Midi may not have enough resolution an 8 bit ADC reading a pot configured as a voltage divider will have 256 possible values. Most pots have a total rotation of around 300 degrees, so that means your micro controller can detect changes down to a resolution of ~1.17 degrees (or less if your pot has a dead zone at one or both ends.) Of course, it all depends on how the pot will be used, but for nearly all applications that resolution should be more than adequate.
-Matt

Rob Strand

#5
I think 7 bits is heaps.   If you have ever tried to set a 20V power supply to 0.1V using a single pot it gets a bit painful (that's about 8 bits).  I wouldn't call that adjustment resolution practical.   I usually consider something like 1 in 20 or 40 a practical hand adjustment resolution for a pot; so maybe 5 bits.

oh:  One thing you don't want is the setting to bobble between bits due to noise, that can modulate the audio- add some low-pass filtering to values.
Send:     . .- .-. - .... / - --- / --. --- .-. -
According to the water analogy of electricity, transistor leakage is caused by holes.

slacker

Even a simple PIC will do 10 bits ADC if you want it, I'd say 8 bit is probably enough though if you're using it to control an LFO. If your LFO had a cycle length of 30 seconds, which is about the most you get in stompboxes then you'd have about 100ms steps. With your lookup table you could taper this so the most important range had a great resolution if you wanted with the expense of resolution elsewhere.

ElectricDruid

I've come up against various issues dealing with this problem myself;

1) The resolution you can *actually get* out of a pot. For a 30mm knob, you've got 94mm of circumference. If you've got a 300 degree pot, you can only use 30/36th of that = 79mm. That means for 8 bit resolution, you're talking about adjustments of less than a 1/3rd of a mm. You can't really adjust that finely.
2) ADC noise, and the limits that makes on resolution. You might be able to read 10 or 12 bits, but you might well get values that move by +/-20 in either direction. I've had to use running averages to help reduce noise.
3) Table resolution doesn't have to be the same as the ADC resolution. You can always use just the top bits of the ADC result to do a lookup into your table. If you want more accuracy without using up more memory, you can use the low bits of the ADC result to interpolate between that lookup value and the next one. This is a (typical) trade-off of computing time against memory requirement.
4) High resolution in tables doesn't guarantee no zipper noise. If there are fast changes in the table, there'll still be big jumps, and that means you'll hear them. I've had this problem with tables that convert from a linear value (a CV say) to a exponential value (Frequency for example). Making things smooth is partly about keeping ranges sensible to ensure there are no massive jumps between table values.
5) The speed of the ADC readings is a consideration. 14-bit MIDI pitch bend values can still sound steppy as hell if they only come in every 200mS. The important thing is not the *resolution* per se, but the *jump* from one value to the next. Obviously if the ADC readings are much quicker, the jump gets smaller for a given rate of change.

Hope this helps with your deliberations!
Tom