Hallo
ich wollte für mein Atmegareferat ein kleines Board mit Sensoren aufbauen. doch wie kann ich den Analogwert des GP2D12 so umrechnen, dass ich eine Angabe in cm bekomme?
Hallo
ich wollte für mein Atmegareferat ein kleines Board mit Sensoren aufbauen. doch wie kann ich den Analogwert des GP2D12 so umrechnen, dass ich eine Angabe in cm bekomme?
Du machts ne Messreihe oder liest die Werte aus dem Datenblatt ab. Dann hast du zwei Möglichkeiten:
a) Du bastelst dir (zb mit Excel) eine Potenz-) Funktionsgleichung, die die Messkurve möglichst gut wiedergibt, und verwendest diese Gleichung zur Umrechnung.
b) Du legst dir eine Tabelle an, die in 1cm-Schritten die dazugehörigen Messwerte enthält, und vergleichst den gemessenen Wert mit der Tabelle. Die Tabelle könnte man mit der Funktion aus a) erzeugen. Alternativ kann man auch weniger Messpunkte abspeichern und linear interpolieren.
Lösung a) ist umkomlizierter umzusetzen (mit zehn Messungen bekommt nman schon ne sehr gute Näherung), der AVR braucht allerdings viel länger zum Umrechnen. Wenn sonst nichts zeitkritisches zu tun ist, sollte es aber kein Problem sein (sofern du in ner Hochsprache schreibst, in ASM wird ziemlich haarig..)
Lösung b) lässt sich auch in ASM gut umsetzen, in Hochsprache ist es aber etwas mehr Arbeit. Dafür ist diese Lösung vergleichsweise schnell.
ich wollte es in Bascom programmieren. das mit der potenz hört sich gut an. muss nur noch herausfinden wie das funktioniert.
Du schafft dir ne Möglichkeit, die Rohdaten vom ADC anzuzeigen (LCD, RS232 etc.). Dann misst du einige Entfernung aus und trägst die Werte in ne Tabelle ein. Davon lässt du dann ein xy-Diagramm erstellen und eine angenäherte Funktionsgleichung (in Excel "Trendlinie" vom Typ "Potenziell") errechnen und deren Gleichung ausgeben.
Mit dieser Gleichung kann dann Bascom die Messwerte umrechnen....
hallo uwegw.
ich habe "leider" nur openoffice, kann aber die excel datei öffnen. nur sehe ich da keine gleichung (unter gleichung verstehe ich z.b. y=2x^2 oder sowas). wird bei mir die gleichung einfach nur nicht angezeigt oder was ist da los?
mfg
(-_-)
Klingt ja so als würdest Du erwarten, dass Dich die exakte Funktion zu jedem Plot gleich anspringt. Im Gegensatz zu Excel scheint Calc in der Tat keinen eingebauten Fitting-Algorithmus für nichtlineare Probleme zu haben. Die Methode der kleinsten Quadrate (verwendet Excel IMHO auch) kannst Du zu Fuss machen,Anleitung unter http://sourceforge.net/project/showf...kage_id=104423
Oder Du installierst Dir ein entsprechendes Plugin von http://oooconv.free.fr/fitoo/fitoo_en.html
Ausprobiert habe ich es allerdings nicht, da ich für sowas immer Matlab benutzt habe - polyfit() und gut.
Wie erstellt man eigentlich eine solche Gleichung?
Wie gehe ich da vor. Ich weis das ich einen Sensor habe der die und die Werte liefert, ic hweis was für Variablen ich habe und ich weis was ich möchte
Wie erstelle ich da nun die Funktion(en)?
Würde mich mal interessieren
man könnte doch auch eine Näherung der Funktion implementieren
wäre glaub ich das einfachste:
mit der Formel:
D = A/(X-B)
wobei:
D ist die Entfernung
X ist der Ausgabewert des Sensors
A ist die Steigung der Kurve A/X
B ist der Offset der Kurve
dann musst du nur noch 2 werte messen um A und B zu erhalten
siehe:
https://www.roboternetz.de/wissen/in...rarten_gibt_es
unter sharp GP2d150
@blackdevil:
1. Möglichkeit: Du weisst aufgrund der physikalischen Eigenschaften Deines Sensors, wie sich die Grössen zueinander verhalten, kannst zB über die Materialzusammensetzung usw eines NTC sagen, dass es sich um ein Polynom zweiten Grades handelt und bestimmst dann die Koeffizienten; beim Sharp weiss man halt irgendwoher - einfachster Weise durch angucken der Kurve - dass es etwas logarithmisches sein muss.
2. Möglichkeit: Approximation. Du weisst nicht so recht, was für eine Funktion es ist und es ist Dir auch irgendwie egal, oder die Funktion ist so kompliziert, dass Dein Controller mit der Berechnung überfordert wäre. Dann kannst Du mit verschiedenen mathematischen Methoden ein Polynom suchen, das Deine Funktion im interessierenden Bereich möglichst genau wiedergibt. Bei der logarithmischen Entfernungsfunktion des Sharp funktioniert das sch*e, bei einem PT-Temperatursensor sehr gut (<<0,1% Fehler von -50 bis 200 Grad C mit einem Polynom 2. Grades soweit ich weiss, hatte ich neulich gerade mal durchgekaspert, weil ich meinem uC die Fallunterscheidung und Berechnung mit bis zu 4 Graden nicht zumuten wollte und ausserdem gleich eine Abbildung meines ADC-Zahlenraumes auf Temperatur wollte, gut konditioniert sollte die Gleichung noch dazu sein)
Es ist viel einfacher als das ganze in Excel einzugeben oder sowas. Nimm diese Funktion:
x in cm
y ist der digitale Wert
x = e^(ln(y/390/-0,866)
Die Funktion hab ich anhand der Potenzfunktion der Sharp in einigen Nächten abgeleitet. War kein Spass, dafür funktioniert sie perfekt. (Natürlich nur ab 8cm, ist ja die Minimalreichweite)
VG Phönix
Glauben heißt nicht Wissen.
Lesezeichen