Berechnung von positiver logarithmische Kurve

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Moin!

    Heute brauche ich ein paar Tipps.
    Ich suche eine Berechnungsgrundlage nach der ich eine positive logarithmische Kurve berechnen kann.
    Sie sollte dann ungefähr so aussehen wie bei einem log. Poti.

    Feste Größen:
    - Drehgeber mit 24 Schritte pro Umdrehung. Ich möchte davon aber nur 18 Schritte nutzen. Sprich 270 Grad. Halt wie bei einem Poti auch
    - zu steuerndes Element ist ein lineares Digitalpotentiometer mit 129 Schritten. Ja, ich weiß, es gibt diese Dinger auch logarithmisch.

    Bisher habe ich es so gelöst.
    Von 0-10 in Einerschritten, dann geht es in 10ner Schritten bis zum Ende weiter.

    Ziel soll sein: Entweder eine Tabelle in der errechnete Werte stehen. Oder eine programmierte Berechnung.

    Falls ich mich, mal wieder, unklar ausgedrückt habe, fragen...

    Gruss Bernd

    /Edit
    Das einzig gute an root's Fragerei ist, das man seine Fragestellung noch mal in Frage stellt ;_)

    Ich möchte eine Formel haben, die aus dem linearen Verlauf des Potentiometers ein logarithmische macht.

    Ich hoffe ich habe nun alle Klarheiten beseitigt ;_)

    Ich habe KEINE Ahnung und davon GANZ VIEL!!
    Bei einer Lösung freue ich mich über ein ":thumbup:"
    Vielleicht trifft man sich in der RPi-Plauderecke.
    Linux ist zum Lernen da, je mehr man lernt um so besser versteht man es.

    Einmal editiert, zuletzt von Bernd666 (24. Mai 2017 um 01:45)

  • Hi dg8br.


    - zu steuerndes Element ist ein lineares Digitalpotentiometer mit 129 Schritten. Ja, ich weiß, es gibt diese Dinger auch logarithmisch.

    ...ähmmm was nu... linear oder log.

    -Was und welche Werte bekommst vom Poti ???
    -Wenns linear ist ist ne Tabelle unnötig weil trivial.
    -Wenns log ist, Tabelle oder mit OP's linearisieren... wenns denn so genau sein soll und man sich rantraut.

    gruß root

  • Moin root,
    nee, das digitales Poti ist ein lineares. Das Poti ist ein 10K Stereo. Ein Einzelschritt, laut Datenblatt, 78Ohm.
    Linear ist trivial, man muss nur lange genug am Drehgeber kurbeln bis volle Lautstärke.

    Gruss Bernd

    Ich habe KEINE Ahnung und davon GANZ VIEL!!
    Bei einer Lösung freue ich mich über ein ":thumbup:"
    Vielleicht trifft man sich in der RPi-Plauderecke.
    Linux ist zum Lernen da, je mehr man lernt um so besser versteht man es.


  • nee, das digitales Poti ist ein lineares. Das Poti ist ein 10K Stereo. Ein Einzelschritt, laut Datenblatt, 78Ohm.
    Linear ist trivial, man muss nur lange genug am Drehgeber kurbeln bis volle Lautstärke.

    Ok.
    simples Spindelpoti, und wo ist nun das Problem ? :)

    Einmal editiert, zuletzt von root (24. Mai 2017 um 01:42)

  • Du hast einen Drehgeber?
    Du hast ein lineares Digitalpoti I2C?

    wo ist das Problem, wenn du die ersten Schritte 0-10 in lineare Werte umsetzt und die Schritte 10-18 in höhere Befehle zum Digitalpoti?

    Die Werte kannst du auch berechnen und in einer Tabelle 0-18 ablegen.

    lasst die PIs & ESPs am Leben !
    Energiesparen:
    Das Gehirn kann in Standby gehen. Abschalten spart aber noch mehr Energie, was immer mehr nutzen. Dieter Nuhr
    (ich kann leider nicht schneller fahren, vor mir fährt ein GTi)

  • Moin!

    Danke für eure Unterstützung und Arbeit!

    Tell: Ich hätte gerne gewusst, wie bist du auf diese beiden Zahlen gekommen?

    [font="monospace"]1.3099 und [font="monospace"]1.330921179[/font][/font]

    [font="monospace"][font="monospace"]Der Aufruf

    Code
    pow(Zahl1,Zahl2)

    potenziert ja die Zahlen, aber es muss ja irgendwo der Logarithmus herkommen.[/font][/font]

    [font="monospace"][font="monospace"]Gruss Bernd[/font][/font]

    Ich habe KEINE Ahnung und davon GANZ VIEL!!
    Bei einer Lösung freue ich mich über ein ":thumbup:"
    Vielleicht trifft man sich in der RPi-Plauderecke.
    Linux ist zum Lernen da, je mehr man lernt um so besser versteht man es.

    Einmal editiert, zuletzt von Bernd666 (25. Mai 2017 um 00:49)

  • > Der Aufruf pow(Zahl1,Zahl2) potenziert ja die Zahlen, aber es muss ja irgendwo der Logarithmus herkommen.
    Ja, das ist eine exponentielle Funktion, aber meines Wissens funktionieren sogenannt logarithmische Potentiometer so.

    Den Logarithmus hast Du im Kopf: unser Lautstaerke-Empfinden ist nicht linear sondern logarithmisch. Eine Verdopplung des Schalldrucks nehmen wir nicht als doppelt so laut wahr.

    > Ich hätte gerne gewusst, wie bist du auf diese beiden Zahlen gekommen?

    Code
    >>> print( math.exp(math.log(129)/17) )
    1.3309211785050463
  • Hallo DG8BR,

    im Prinzip gibt es unendlich viele Exponentialfunktionen der Art f(x)=a^x (mit a>1), die Dein Problem lösen. Ich ging vom natürlichen Logarithmus aus, bei dem a=e (also die Eulerzahl). Normiert man den Funktionswert (z.B. auf 128), so führt das zu einer Stauchung (oder Streckung) der Ordinate. In meinem Fall sieht man recht deutlich, daß erst f(13) annähernd 1 ergibt. Du verschenkst also 12 der 18 Schritte an Auflösung. Sonach ist Tells Wahl von a=129^(1/17) eine wesentlich günstigere Wahl, bei der auch gleich noch die Normierung entfällt, da f(17)=a^17-1 = 128. Eine allgemeingültige normierte Darstellung findest Du in der anhängigen Exceltabelle. Jeder Wert von a>1 liefert Dir eine auf f(17)=128 normierte Exponentialfunktion.

    Somit kannst Du ein wenig gemäß Deinem Hörempfinden mit a rumspielen (im gelben Feld eingeben) und verschiedene Krümmungen ausprobieren. Die Funktionswerte sind hellgrün hinterlegt. Bei einem Wert von a=1,219 erhältst Du bereits beim Wechsel von f(0) auf f(1) 1 Digit Sprung im Funktionswert (d.h. verschenkst kein Bit Auflösung). Das könnte zumindest "auflösungstechnisch" ein Optimum Deines Problems darstellen. Ob das mit dem Hörempfinden gut zusammenpaßt - das mußt Du mal sehen. Ähm oder besser hören ;)

    Schöne Grüße

    schnasseldag
    Logarithmische_Staffelung2.xls

  • Moin!
    Ich danke euch beiden, Tell und Schnasseldag, für eure Arbeit und Erklärungen.

    Mein Verstärker wird schon mit der neuen Steuerung betrieben. Leider konnte ich noch nicht alle Lautstärkestufen testen. Meine Frau hat Urlaub ;)

    Aber ich werde es berichten.

    Gruss Bernd

    Ich habe KEINE Ahnung und davon GANZ VIEL!!
    Bei einer Lösung freue ich mich über ein ":thumbup:"
    Vielleicht trifft man sich in der RPi-Plauderecke.
    Linux ist zum Lernen da, je mehr man lernt um so besser versteht man es.

  • Moin!
    Um das Ganze nun, wie versprochen, zum Ende zubringen.

    Ich habe mir Werte nach den Formel-Anregungen von Tell errechnet. Die 0,xx Werte entfernt und die Zahlen in eine Tabelle gebracht. Ich komme nun auf 18 Schritte und es hört sich auch einigermaßen für meine Ohren an.

    Danke noch mal an Schnasseldag und Tell!!!

    Gruss Bernd

    Ich habe KEINE Ahnung und davon GANZ VIEL!!
    Bei einer Lösung freue ich mich über ein ":thumbup:"
    Vielleicht trifft man sich in der RPi-Plauderecke.
    Linux ist zum Lernen da, je mehr man lernt um so besser versteht man es.

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!