mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Gleichung lösen


Autor: Andre (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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é

Autor: Μαtthias W. (matthias) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Christoph Kessler (Gast)
Datum:

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

Autor: ope (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Andre (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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é

Autor: peter dannegger (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: m@u (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: crazy horse (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: The Daz (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: The Daz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
aeh, ich meinte ATTiny25, der hat nen internen AD-Wandler.

Autor: Christoph Kessler (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Christoph Kessler (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

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.