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é
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
Eine Knickkennlinie wäre vielleicht einfacher als eine Polynomapproximation. Oder eine Tabelle anlegen, in der nur nachgeschaut und evtl. linear interpoliert wird.
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
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é
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
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.
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.
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.
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.