Hei mausi_mick,

Zitat von
mausi_mick
... bekomm aber zumindest die Messwerte der beiden
Sensoren zurück ... eine unterschidliche Steigung ... Vielleicht ... eine / zwei Tabellen verwenden ...
Du kennst hoffentlich die unerfreuliche Eigenschaft des GP2D120? Die habe ich hier beschrieben und danach einiges verbessert - nun läuft er bei mir einigermassen gut. Habe einen 100nF KerKo und einen 220µF Elko, beide direkt hinter der originalen Platine des GP2D.., an den Steckerkontakten des Sensors angelötet.
Ich habe mit dem GP2D.. eine Messreihe gemacht, in Excel ausgewertet und die Regressionsform grob bestimmt. Die Trendlinie ist leider im Diagramm nur sehr schlecht - dünn gepunktet - zu erkennen. Dazu eine einfache Modellrechnung aufgestellt, mit der die Kurvenform weitgehend nachempfunden wird. Ist ein bisschen Popelarbeit - aber wohl einfacher als Sterlingsilber bearbeiten.
......Bild hier
Dabei komme ich auf folgenden Code (bei meinem Exemplar):
Code:
/* ============================================================================== */
/*### ADCwert für GP2D120 auf ADC3/PC3/Pin26 des ATMega168 z.B. auf m168D-Platine
================================================================================ */
int GPDist (void) // Auswerten des aktuellen Messwertes mit dem Sharp
{
uint16_t GPDmm = 0, gpdtmp = 0; // Messwert Distanz in mm, temporärer Wert
cli(); // Datenübernahme Interruptgefährdet - 2 Byte
gpdtmp = adc3_dat; // Übernimm Daten
sei(); // Gefahr vorbei
GPDmm = 25600 / gpdtmp;
if (GPDmm > 999)
GPDmm = 999;
if (GPDmm < 0 )
GPDmm = 0;
return GPDmm;
}
// === Ende Abholen des ADC-Wertes und Ausgabe ===================================
/* ============================================================================== */
das läuft prächtig so (etwa Sekundentakt, ich hab zwischendurch die Hand unter den GP2D.. gehalten):
Code:
Pm168D/20 MHz m168D_10x61 08juli08 1706
Messen ca. Sekundentakt, 120 => 0
ir12-4 75 127 127 Isvs1 27 most12 1 ADCmm 87
ir12-4 77 127 127 Isvs1 27 most12 1 ADCmm 87
ir12-4 76 127 127 Isvs1 27 most12 1 ADCmm 86
ir12-4 71 127 127 Isvs1 27 most12 1 ADCmm 87
ir12-4 69 127 127 Isvs1 27 most12 1 ADCmm 86
ir12-4 77 127 127 Isvs1 29 most12 1 ADCmm 87
ir12-4 80 127 127 Isvs1 29 most12 1 ADCmm 86
ir12-4 76 127 127 Isvs1 29 most12 1 ADCmm 87
ir12-4 78 127 127 Isvs1 29 most12 1 ADCmm 87
ir12-4 73 127 127 Isvs1 29 most12 1 ADCmm 87
ir12-4 80 127 127 Isvs1 29 most12 1 ADCmm 55
ir12-4 67 127 127 Isvs1 31 most12 1 ADCmm 50
ir12-4 75 127 127 Isvs1 31 most12 1 ADCmm 48
ir12-4 82 127 127 Isvs1 31 most12 1 ADCmm 51
ir12-4 74 127 127 Isvs1 31 most12 1 ADCmm 87
ir12-4 71 127 127 Isvs1 31 most12 1 ADCmm 87
ir12-4 75 127 127 Isvs1 31 most12 1 ADCmm 87
ir12-4 84 127 127 Isvs1 33 most12 1 ADCmm 87
Achtung, je nach Stabilität Deiner AVcc (für den ADC) und Vcc für den GP2D.. kann das Ergebnis doch unagenehm deutlich schwanken. Von Tabellen halte ich nicht viel. Ich mache das mit einem mega168/20MHz.
Lesezeichen