INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
10 Bit zu 8 Bit Umwandlung exponentiell (Poti)
20.02.2020, 19:17
Beitrag #1
10 Bit zu 8 Bit Umwandlung exponentiell (Poti)
Guten Abend,

in einem Projekt lese ich über einen analogen Eingang ein Poti aus, dabei erhalte ich Werte zwischen 0 bis 1023 (10Bit). Mit der Funktion map() werden die Werte auf eine 8Bit Auflösung umgewandelt (0-255). In der map()-Funktion erfolgt dies linear.
In dem Projekt würde ich allerdings gerne eine Art exponentielle Umwandlung erzeugen, sodass im ersten Bereich des Potis eine geringe Änderung erfolgt und diese im Endbereich größer ist.
Bisher hatte ich keinen Erfolg bei der Umsetzung, gibt es dafür bereits eine Funktion oder hat jemand eine Lösungsidee?

Viele Grüße
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
20.02.2020, 19:31 (Dieser Beitrag wurde zuletzt bearbeitet: 20.02.2020 22:18 von Tommy56.)
Beitrag #2
RE: 10 Bit zu 8 Bit Umwandlung exponentiell (Poti)
Also entweder Du baust die Kurve aus Geradenstücken auf und interpolierst zwischen den Stützpunkten oder Du versuchst in einer Tabellenkalkulation Dir aus solchen Punkten eine Formel generieren zu lassen.

Da es unendlich viele exponentielle Funktionen gibt, bleibt Dir da wohl nur der Weg über Näherungen.

Andere Variante Du versuchst es mit einem logarithmischen Potentiometerwelches Du evtl. andersrum anschließt (austesten).

Gruß Tommy

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
20.02.2020, 22:16
Beitrag #3
RE: 10 Bit zu 8 Bit Umwandlung exponentiell (Poti)
Moin,

wenn es am Anfang wenig und später mehr ansteigen soll, tut's vielleicht auch einfach eine quadratische Funktion, in der Du die Umrechnung auf 8bit direkt mit erledigst, z.B.

Code:
Poti8bit = int (analogRead(PotiPin) * analogRead(PotiPin) / 4104);

Grüße Jan


Angehängte Datei(en) Thumbnail(s)
   
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
21.02.2020, 00:46
Beitrag #4
RE: 10 Bit zu 8 Bit Umwandlung exponentiell (Poti)
Ja, wo gehobelt wird, ........ Big Grin
Da gehts dann eben erst mit Ausgabe "1" los, wenn der Analog ausgelesene Wert schon "65" ist. Aber ich hatte sogar mit meinem Versuch ein noch schlechteres Ergebnis. Confused Bei mir geht die Ausgabe "1" erst bei Analogwert "80" los Sad Ansonsten sind beide Ergebnisse ganz gut im unteren Bereich langsammeres Steigen, und im oberen Bereich holen beide langsam das normale map Ergebnis auf. bei 255 kommen dann alle drei gemeinsam an Big Grin

Habs auf nem 4 zeiligen LCD Display untereinander ausgeben. So konnte ich schön beobachten, wie sich alle drei im Vergleich verhalten.

Servus
Franz

https://www.youtube.com/watch?v=Fnzn85oWM_Q
Hier was zum Thema Deutsche Politik Angry
Und hier zum Thema richtige Politik Big Grin
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
22.02.2020, 22:03
Beitrag #5
RE: 10 Bit zu 8 Bit Umwandlung exponentiell (Poti)
(21.02.2020 00:46)Franz54 schrieb:  Ja, wo gehobelt wird, ........ Big Grin
Da gehts dann eben erst mit Ausgabe "1" los, wenn der Analog ausgelesene Wert schon "65" ist. Aber ich hatte sogar mit meinem Versuch ein noch schlechteres Ergebnis. Confused Bei mir geht die Ausgabe "1" erst bei Analogwert "80" los Sad Ansonsten sind beide Ergebnisse ganz gut im unteren Bereich langsammeres Steigen, und im oberen Bereich holen beide langsam das normale map Ergebnis auf. bei 255 kommen dann alle drei gemeinsam an Big Grin

Habs auf nem 4 zeiligen LCD Display untereinander ausgeben. So konnte ich schön beobachten, wie sich alle drei im Vergleich verhalten.

Servus
Franz
Welchen Ansatz hattest Du denn verwendet?
Wobei 65 bzw 80 bei nem linearen Poti und 10bit Auflösung ca. 6,3% bzw 7,8% Drehwinkel bedeuten, was ich für den geforderten Fall gar nicht schlimm finde.
Und wenn es doch eher anfangen soll, kann man ja noch einen Offset in die Formel einbauen und dann entsprechend den Faktor anpassen, damit man im 8bit-Range bleibt.

Grüße Jan

P.S.: gibt es hier im Forum eigentlich irgendwo einen Vorstellungsbereich? Ich find es fast schon unhöflich von mir, dass ich mich hier nicht vorgestellt habe Wink
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
22.02.2020, 22:24 (Dieser Beitrag wurde zuletzt bearbeitet: 22.02.2020 22:30 von Franz54.)
Beitrag #6
RE: 10 Bit zu 8 Bit Umwandlung exponentiell (Poti)
Ich habe gemacht was mir da gerade in den Sinn gekommen ist.
Den Analogwert "a0" teilen durch 50
Dann den "a0" muliplizieren mit dem Ergebnis
Dann dieses zweite Ergebnis teilen durch 80

Also z.B. ausgelesener Analogwert = 300
300/50=6
300*6=1800
1800/80=22
Ausgabe 22

Franz

https://www.youtube.com/watch?v=Fnzn85oWM_Q
Hier was zum Thema Deutsche Politik Angry
Und hier zum Thema richtige Politik Big Grin
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
22.02.2020, 22:46 (Dieser Beitrag wurde zuletzt bearbeitet: 22.02.2020 22:49 von nbk83.)
Beitrag #7
RE: 10 Bit zu 8 Bit Umwandlung exponentiell (Poti)
Das ist mathematisch das gleiche mit dem Unterschied, dass Du den Faktor 4000 (50*80) und nicht 4104 gewählt hast. Damit geht allerdings der Ausgabewert bis 261 oder 262 (wird bei der int-Umwandlung eigentlich gerundet oder abgeschnitten? hab grad keine Lust zu googlen Wink )

@Tommy65: Was ist programmiertechnisch für den Arduino/ESP etc.eigentlich günstiger: mathematische Berechnung im Programm oder hinterlegte Wertetabelle?

Ist denn dem TO eigentlich schon geholfen...?

Grüße Jan
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
22.02.2020, 22:52 (Dieser Beitrag wurde zuletzt bearbeitet: 22.02.2020 22:55 von Franz54.)
Beitrag #8
RE: 10 Bit zu 8 Bit Umwandlung exponentiell (Poti)
Da wird abgeschnitten.
Der TO war seit seiner Fragestellung nicht wieder da.

https://www.youtube.com/watch?v=Fnzn85oWM_Q
Hier was zum Thema Deutsche Politik Angry
Und hier zum Thema richtige Politik Big Grin
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  DC Motor Poti Drehzahl begrenzen Tyson123 6 866 09.01.2020 13:01
Letzter Beitrag: Tyson123
  Umwandlung eines Strings in ein time_t-Objekt jalu4601 1 541 02.01.2020 10:56
Letzter Beitrag: RolandF
  Motorgeschwindigkeit (Stepper) per Poti metal-shot 1 1.364 10.01.2019 21:14
Letzter Beitrag: Tommy56
  Starkes Rauschen auf dem Poti & Dimensionierung RC Glied Flap 33 6.941 08.03.2018 02:11
Letzter Beitrag: Flap
  Poti Differenz Berechnung Kitt 9 3.757 09.12.2016 15:55
Letzter Beitrag: Tommy56
  Umwandlung von buffer in long Wampo 13 4.045 19.12.2015 10:53
Letzter Beitrag: Wampo
  Umwandlung von Array in String Wampo 2 2.789 09.12.2015 21:58
Letzter Beitrag: Wampo
  Stepper mit Arduino und Poti Hannes1984 3 4.079 01.08.2015 16:34
Letzter Beitrag: Scherheinz
  Stepperposition mittels Poti LittleAngus 3 3.245 19.12.2014 17:07
Letzter Beitrag: ardu_arne
  Umwandlung von Koordinaten Matthias Wehrli 5 3.960 22.11.2014 17:32
Letzter Beitrag: itAxel

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste