Zum Inhalt springen

suche ein Code-Beispiel auf C++  von D->A Wandler


ankon

Empfohlene Beiträge

Hallo,

ich suche ein Code-Beispiel auf C++  von D->A Wandler   für einen abstrakten Mikrokontroller (egal welcher, egal welche Pinbelegung).

Ich wollte zuerst mit Programm-Logik kennenlernen: am Eingangspin kommen hexadezimale Zahlen und es sollte in eine analoge Spannung umgewandelt werden.

Meine Frage wäre: kennt Ihr solche Code-Muster? Oder Links im Internet auf solche?

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Wie soll das funktionieren? C++ ist eine Programmiersprache, wie mit digitalen Werten arbeitet. Sowas wie Analog kennt die Sprache nicht. Die Digital-Analog-Wandlung passiert im Bereich der Elektrotechnik. Dafür gibt es spezielle Bauteile, die die digitalen Stufen mit speziellen Filter wieder glättet. Dies ist aber nur ein Näherungswert, da der echte Wert mit der Quantisierung der Analog-Digital-Umwandlung verloren gegangen ist.

https://de.wikipedia.org/wiki/Digital-Analog-Umsetzer#Funktion

Link zu diesem Kommentar
Auf anderen Seiten teilen

Danke. Ich stelle es so vor, dass z.B. ein Sensor (Temperatur- oder Entfernungsmess- Sensor o.a.) an Input-Pin vom Mikrokontroller die hex-Werte liefert.

Ein Mikrokontroller leisst das ein und wandelt in analogen Wert 0 - 5V um... und liefert das an seinen analogen Output.

Nach ungefähr solche C++ logik suche ich Beispiele.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Wie gesagt, das lässt sich nicht programmieren. Wie soll das auch gehen? In der Informatik arbeitet man mit digitalen Signalen. Digitale Signale haben Stufen. Ein analoges Signal ist stufenlos. Ein D/A-Wandler tastet das Signal ab, indem man z.B. 8 Bits nimmt und sie mit Widerständen so schaltet, dass jeder Bit für die Verringerung des Gesamtwiderstandes beiträgt. Wenn also alle 8 Bits geschaltet sind, ist auch der Widerstand am geringsten und somit die Spannung am höchsten. Dennoch wird das Signal weiterhin stufen haben, die dann mit Hilfe von Filtern geglättet werden können. Der ESP32 besitzt z.B. zwei 8-Bit-D/A-Wandler.

Der Arduino hingegen macht es anders. Hier verwendet man eine Pulsweitenmodulation. Das Signal ist weiterhin ein digitales Signal (Rechteckspannung), das oszilliert bzw. pulsiert. Das Signal wechselt also in einem bestimmten Takt immer von 0 auf 1 und umgekehrt. Hier nutzt man also die Trägheit der Bauelemente aus, die man damit steuern kann (z.B. LEDs oder Motoren). Je stärker es pulsiert, desto heller leuchtet die LED/rotiert der Motor, ohne dabei die Spannung zu ändern.

Wenn du einfach sowas mit einem fiktiven D/A-Wandler simulieren möchtest, dann mache doch einfach eine Interpolation bzw. ein Dreisatz. Du hast z.B. Werte von 0 bis 255 und eine Ausgangsspannung von 5V. Der Wert 123 wäre 2,41V, da 5V / 255 * 123 = 2,41V und genau das versucht ein D/A-Wandler hinzubekommen aber wie gesagt, die Werte sind weiterhin stufig, da 124 2,43V wäre. Wir haben also eine Stufe von 0,02V und um diese Stufe wegzubekommen, verwendet man Filter, die für einen stufenlosen Anstieg sorgen.

Weil man einen D/A-Wandler nicht programmieren kann, lassen sich auch z.B. Soundchips aus der 8-Bit-Ära eben nicht zu 100% emulieren, da sie integrierte Oszillatoren, Filter und A/D-Wandler haben, die für die Generierung des Analogen Signals zuständig sind. Man konnte den Charakter dieser Chips zwar ganz gut nachahmen aber eben nicht zu 100% akkurat.

Bearbeitet von Whiz-zarD
Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...