www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik mathematische Beschreibung positiv Logarithmisches Poti


Autor: Dirk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich versuche gerade ein positiv logarithmisches Poti durch eine Funktion 
zu beschreiben... irgendwie scheitere ich aber gerad an den 
Kleinigkeiten..

(normierte Betrachtung x=1 heißt "voll aufgedreht", y=1 heißt max. 
Widertsand)

Bisher bin ich bei

R_plog(x)=10^(x-1) gelandet, dann habe ich aber das Problem das die 
Kurve gegen 0,1 strebt und nicht gg. 0

Wenn ich 0,1 abziehe ist bei R_plog(1) natürlich nur noch 0,9 und nicht 
1 so wie ich es gern hätte.

Wie würde die richtie Beschreibung aussehen bei der mein potiwiderstand 
von 0 bis 1 durchgefahren wird?

Autor: Alexander (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du möchtest also die Kennlinie des Logarithmus von x=1 bis x=10 in den 
Ursprung verschieben und auf 1/9 eindampfen.

Wie wärs mit
R=log(x*9+1)

Autor: Michael (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Öhm, euch ist schon klar, dass es in logaritmischen Skalen keine 0 gibt?

Autor: Dirk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
natürlich ist klar das es beim Logarithmus keine null gibt, aber 
angenommen ein Poti geht von R_min=~0Ohm bis R_max=10k dann kommt da 
schon eine 0 drin vor...

siehe:
http://www.elektronik-kompendium.de/sites/bau/1011211.htm

Dein Vorschlag Alex ist übrigens negativ logarithmisch, aber trotzdem 
danke ;)

Im Moment mache ich es so:
R_plog(x)=(10^(x-1)-0,1)*1/0,9

Aber darf ich das? Dadurch mach ich den Logarithmus ja wieder ein 
bisschen linear oder nicht? Oder ist das halt so und lässt sich nicht 
vermeiden?

Autor: Michael (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Und da sieht man das Problem. Geht das Poti nun von ~0 oder genau 0 Ohm 
los? Das ist in der Mathematik ein präziser Unterschied. Was spricht 
also gegen deine mathematische Beschreibung das Poti bei, z.B., 1µOhm 
los gehen zu lassen?

Autor: Michel Schneider (msnider)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich glaube dir Funktion lautet:

f(x) = (1+(1/9)) *(1-10^-x)

Autor: Michel Schneider (msnider)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo ,

ich bins nochmal. Die erste ging noch im Kopf.

Aber die Umkehrfunktion x <--> y (variablentausch)

war im Kopf doch zuviel, wenngleich es mehrere Optionen gibt!

1. ziemlich genau

f(x) = 1.48*(e^x)^2-1.37*x^3-0.413*x^2+0.235*x-1.48

2. noch genauer

f(x) = 4.802*x^5-10.17*x^4+8.146*x^3-2.4614*x^2+0.687*x

für alle x definiert im x=0 -> Wendepunkt

3. noch noch genauer [NEWTON]

f(x) = 
0,363*x+0,9211*x^2-6.6278*x^3+29.387*x^4-69.436*x^5+92*x^6-64*x^7+ 
18.411*x^8

Ich denke das dürft Dir reichen!

ciao

Autor: Alexander Schmidt (esko) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
So sieht die Realität aus:
http://sound.westhost.com/pots.htm#taper

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn sie schon eine Weile in Benutzung sind, dann werden sie wohl
am besten durch rand(x) beschrieben. ;-)

Autor: Michel Schneider (msnider)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo jetzt bin ich's nochmal

Die super genauen noch als Nachtrag!

______________________

 f(x) = 0,390546 * x + 0,175757 * x^2 - 0,158234 * x^3 + 0,15787 * x^5
   + 0,281374 * tan(x^3) - 0,00267 * tan(x^5)
______________________


f(0) = 0           Sollwerte
f(0,228524) = 0,099994 -> 0.1
f(0,410047) = 0,200013 -> 0.2
f(0,554236) = 0,299992 -> 0.3
f(0,668770) = 0,399989 -> 0.4
f(0,759747) = 0,500008 -> 0.5
f(0,832013) = 0,600015 -> 0.6
f(0,889415) = 0,699991 -> 0.7
f(0,935012) = 0,799982 -> 0.8
f(0,971231) = 0,90002  -> 0.9
f(1) = 0,999994


______________________

 f(x) = 0,391606 * x + 0,168071 * x^2 - 0,153566 * x^3 + 0,157358 * x^5
   + 0,291438 * tan(x^3) - 0,018549 * tan(x^5) + 0,007404 * tan(x^7)
______________________


f(0) = 0      Sollwerte
f(0,228524) = 0,100001 -> 0.1
f(0,410047) = 0,199997 -> 0.2
f(0,554236) = 0,300005 -> 0.3
f(0,668770) = 0,399998 -> 0.4
f(0,759747) = 0,499997 -> 0.5
f(0,832013) = 0,600004 -> 0.6
f(0,889415) = 0,700001 -> 0.7
f(0,935012) = 0,799996 -> 0.8
f(0,971231) = 0,900002 -> 0.9
f(1) = 1

Jeder zusätzliche Tangensterm mit ungeraden Exponenten (n*2+1) für
n1=1...n2=2 u.s.w. erhöht die Genauigkeit um eine Dekade. Natürlich
müssen die Koeffizienten jedesmal angepaßt werden. Mathematik ist wie
eine Sucht, findest Du nicht?

Nun sollte es genau genug sein. Sonst geh zur NASA!

Autor: Dirk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vielen Dank Michel für deine ausführlichen Berechnungen :)
So genau brauchte ich es dann doch nicht :D

Für mich ist Mathematik ein Werkzeug das ich benutze, allerdings bin ich 
kein Werkzeugbauer ;)

Danke auch an Alex, comercial log sieht interessant aus..

Viele Grüße

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.