Formule potmeterbereik

Weet er iemand een algemene formule om het volledige bereik van een potentiometer te gebruiken waar de software een max en een min aan een dc motor kan geven maar de potentiometer altijd volledig kan gebruiken..
Een berekenwijze in stappen is ook goed.

Op de tekening zie je links het volledige bereik van 0 tot 5v.
In de software staat het max op bv. 4V(80%) en het min op 1V(20%)

Ik zou dus het potentiometer (10bit adc) bereik verdelen met software over de resterende 3V(60%)

De meesten zullen zeggen plaats 2 extra pot's maar aangezien deze elkaar beinvloeden bij afregelen zou ik dat liever laten uitrekenen met de controller zodat het altijd juist is, ook als je uitersten tijdens de werking aanpast.

Edit de max en min waarden worden in eeprom opgeslagen.

LDmicro user.

Zoiets?

c code:

int procent = map(potmeterwaarde, 0, 1023, 20, 80);

Waarbij 20 de minwaarde is, en 80 de maxwaarde.

[Bericht gewijzigd door BVZ op zondag 27 maart 2016 19:29:36 (47%)

Niet in software, maar hoe je eraan komt met een berekening.

LDmicro user.

Achterliggende formule van de map funktie:

c code:

long map(long x, long in_min, long in_max, long out_min, long out_max)
{
  return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min;
}

Dat zou het idd moeten doen.
Mijn wiskunde is wat aan het verdwijnen want ik rekende de laatste out-min bij de deler maar nu heb ik het weer vast (hoelang? ;) )
Bedankt.

LDmicro user.
Lambiek

Special Member

Of heel simpel dit:

code:


Dim WAARDE As Byte

WAARDE = ADIn 0

WAARDE = (WAARDE + 11) / 1.064

Hier wordt de minimum waarde 10 en de maximum waarde 250
minimum = 11 / 1.064 = [10] maximum 255 + 11 = 266 / 1.064 = [250]
Het deelgetal bereken je zo: 255 + 11 = 266 / 250 = 1.064

Dit is wel bij 8 bits natuurlijk. :)

Als je haar maar goed zit, GROETEN LAMBIEK.

Nu gebruik ik (Ain*(max-min)/1023)+min uitgedrukt in 10bit integerwaarde en kan ik de max en min getallen uit eeprom lezen en invoeren wanneer ik wil.

Bedankt voor de input maar ik ben gered.

LDmicro user.