Forum: Mikrocontroller und Digitale Elektronik Gleichung lösen


von Andre (Gast)


Lesenswert?

Guten Tag!

Ich habe eine Schaltung bzw einen Sensor entwickelt. Die Kennlinie des
Sensors ist leider nicht linear und deswegen möchte ich sie nun
linearisieren. Die Kennlinie habe ich nun aufgenommen und mit Hilfe von
Excel habe ich mir ein Polynom aproximieren lassen. Jetzt möchte ich
dieses Polynom mit einem µC lösen.
Zur Verfügung habe ich ein Entwicklungsboard von Atmel. Ich habe ein
Spannungssignal 0-5V (von meinem Sensor)welches ich A/D-Wandeln muß,
danach soll der µC diesen Wert in meine Polynomgleichung einsetzen und
anschließend den Ausgabewert wieder D/A-Wandeln und mir ein 0-5V Signal
liefern, welches dann linearisiert ist.
Da Ich so gut wie keine Ahnung von µC habe und auch nur berenzte
Kenntnisse in Sachen C programmierung währe ich für jede Hilfe Dankbar.
Desweiteren brauche ich eine Schnelle Lösung die auch was kosten darf.
Wie gesagt die eigentlich Aufgabe ist einen analogen Wert in ein
Polynom einzusetzen und wieder einen analogen Wert auszugeben.

Mit freundlichen Grüßen

André

von Μαtthias W. (matthias) Benutzerseite


Lesenswert?

Hi

und wo genau ist dein Problem? Wenn das nicht schnell sein muß nimmst
du dein Polynom f(x)=y, stellst es nach dem Hornerschema um und
schreibst es, unter Verwendung des float-Datentyps, so in dein
C-Programm.

Matthias

von Christoph Kessler (Gast)


Lesenswert?

Eine Knickkennlinie wäre vielleicht einfacher als eine
Polynomapproximation. Oder eine Tabelle anlegen, in der nur
nachgeschaut und evtl. linear interpoliert wird.

von ope (Gast)


Lesenswert?

evtl. hilft Dir NR auf http://www.library.cornell.edu/nr/cbookcpdf.html
wenn es um den reinen Algorithmus geht (so wie ich die Frage verstanden
habe).

Viele Grüße
Olaf

von Andre (Gast)


Lesenswert?

Danke für die schnellen Antworten.

Mein Problem liegt erst mal darin welchen µC sollte ich verwenden?
Brauche ich einen D/A-Wandler? Oder einen A/D-Wandler? Wenn ja welchen
Typ würdet ihr mir vorschlagen. Wie gesagt ich habe keine Ahnung von
der programmierung eines µC. Werde morgen oder übermorgen mein Board
und die ganze Software in Betrieb nehmen. Mein Polynom sieht
folgendermaßen aus: y = x + x² + x³ vor den x-en stehen noch komma
Zahlen. Meinen x-Wert bekomme ich Analog vom Sensor und möchte dann
meinen y-Wert auch wieder Analog ausgeben. Da ich wie gesagt wenig
Ahnung habe währe mir eine Antwort mit möglichst vielen Erklärungen und
Schritten was ich beachten sollte besondern lieb.

Gruß André

von peter dannegger (Gast)


Lesenswert?

Ehe Du über die Realisierung nachdenkst, mußt Du erstmal die benötigte
Genauigkeit ermitteln.

Also welche minimale Schrittweite brauchst Du am Ausgang und welche am
Eingang.

Erst dann kann man loslegen.

Und bitte keine Mondzahlen, sonderen reale Anforderungen.


Peter

von m@u (Gast)


Lesenswert?

Wenn ich das richtig verstehe willst du bloss einen Wert einlesen, y
nach genannter Formel berechnen und Analog wieder ausgeben. Dazu
brauchst du einen uC mit AD-Wandler und einen DA-Wandler. Je nach dem
was du unter "schneller Lösung" verstehst (meinst du, dass das Gerät
schnell sein muss, oder willst du möglichst schnell zum Ziel kommen?)
gestalten sich die Ansprüche an den uC ein wenig unterschiedlich.
Desweiteren ist die Genauigkeit des Ausgabewertes und vor allem das,
was du mit dem Ausgabewert anfangen willst entscheidend. Wenn du z. B.
eine hohe Ausgangsleistung benötigst (wozu auch immer) brauchst du auch
noch einen Ausgangsverstärker, der dein Signal verstärkt.

Die Gleichung hast du ja zum Glück schon auf ein Polynom aufgelöst,
somit ist es überhaupt kein Problem die eigentliche Berechnung
anzustellen.

Grundsätzlich ist die Problemstellung nicht allzu komplex. Du kommst
wahrscheinlich schon mit einem ATMega8 zu deinem Ziel (der hat einen
10-Bit AD-Wandler). Mit 8MHz wirst du wohl auch schnell genug sein, das
kommt ein wenig auf die gewünschte Reaktionszeit draufan.

von crazy horse (Gast)


Lesenswert?

Rechenzeitmässig am schnellsten: Tabelle (von Excel berechnen lassen).
Zu jedem A/D-Wert den gewünschten Wert speichern. Ist allerdings auch
von der Programmspeichergrösse die schlechteste Lösung.

von The Daz (Gast)


Lesenswert?

Wenn ich mal davon ausgehen kann, dass dein Sensor nicht genauer als
0,5% ist, dann reicht eine 8-bit AD-Wandlung locker aus. Die von Peter
genannte Map wuerde dann 256 Byte gross sein und das ganze koennte
locker von einem ATTiny12 abgefackelt werden.

von The Daz (Gast)


Lesenswert?

aeh, ich meinte ATTiny25, der hat nen internen AD-Wandler.

von Christoph Kessler (Gast)


Lesenswert?

AD-Wandler mit Parallelausgang, auf die Adresseingänge eines Eprom oder
Flash, Datenausgänge auf parallelen DA-Wandler, fertig, alles ohne
Mikrocontroller. Die Glitches noch etwas bedämpfen mit einem Tiefpass.

von Christoph Kessler (Gast)


Lesenswert?

oder höher aufgelöst, mit fast demselben Aufwand: nur die Abweichung von
der Geradengleichung ins Eprom, und als Korrektur mit OP zur Gerade
addieren

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.