Abstandsmessung ähnlich wie IR-Schnittstelle des asuro
Hinweis vom 01. Oktober 2008: eine abschließene Zusammenfassung gibt es hier.
Titel am 22März08 editiert: "Probleme bei" wurde gestrichen, denn die Probleme sind ja eigentlich gelöst.
--------------------------------------------------------------------------------------
Hallo alle,
über Unklarheiten bei der IR-Schnittstelle zur Hinderniserkennung bzw. zur Abstandsmessung habe ich hier bereits kurz berichtet. Nun habe ich weitere Probleme damit. Was mache ich falsch?
Über die Schwierigkeiten des SFH5110 sich für "ein" oder "aus" zu entscheiden habe ich im genannten posting bereits berichtet. Ich kann aber auch die Ergebnisse zur Entfernungsmessungen nur schwer nachzvollziehen.
Hintergrund: ich will diese asuro-Abstandsmessung als irDME (IR-Entfernungsmesser) einsetzen - preislich ist es ja unschlagbar. Deshalb habe ich eine kleine Einheit aufgebaut, die genauso bestückt ist, wie die entsprechenden Schaltkreise beim asuro (Ausnahme: der 490R für Vcc-5110 ist hier nur 330 - die Drähte im Bild sind für einen Spindeltrimmer, mit dem ich die 415 trimmen konnte - alle hier genannten Messungen wurden mit 220R gemacht). Dass der Testaufbau auf einem m168/20MHz läuft, sollte meiner Meinung nix ausmachen ! ?
..........................Bild hier
Erstmal habe ich festgestellt, dass ich wesentlich besser Abstände messen kann bei 38 kHz im Vergleich zu 36 kHz. (Wieweit die RS232 dabei besser ginge, habe ich noch nicht untersucht).
Um die Entscheidung auf "ein" oder "aus" auf etwas bessere Beine zu stellen, habe ich eine Art primitiver Statistik eingeführt:
Code:
for(uint16_t k=0; k<=1000; k=k+1)
{
for(uint16_t m=0; m<=2000; m=m+1) //
{ //
tmp = PINB; //
if (!(tmp & 0x08)) // Aktionen für gelöschtes Bit
if (istaus > 0)
istaus = istaus--; // heisst: Counter runterzählen
else // .. wenn Bit nicht gelöscht, dann ist es gesetzt
{
inix = istaus; // Dummyaktion
}
else // wenns nicht gelöscht ist, ist es gesetzt :)
if (istaus < 1000)
istaus = istaus++; // also Counter raufzählen bis 1 000
else
{
inix = istaus; // DD doofer Dummy, nix machen
}
// ##### danach vergleiche was größer ist:
// ##### wenn über xxx , Port einschalten, wenn unter xxx Port ausschalten
if (istaus < 10)
{ // hier die Anweisungen, wenn das Bit gelöscht ist
PORTC &= ~(1<<PC0); // lösche PC0
}
else // .. wenn Bit nicht gelöscht, dann ist es gesetzt
if (istaus > 990)
PORTC |= (1<<PC0); // Setze PC0
else
{
}
{
}
}
// waitms(1); //
}
Damit erreiche ich eine Hysterese von etwa 10 .. 20 % bezogen auf den Schaltabstand. Im Vergleich dazu beträgt die Hysterese ohne diese einfache Rechnerei rund 50 % des Schaltabstandes.
Schaltabstände über 40 cm konnte ich praktisch nicht messen. Ich bewerte die "Entfernung" erstmal mit dem von mir gesetzten Rampenwert der PWM und nenne das "AktRampe". Bei 36 kHz geht der 5110 auf low bereits bei einem Rampenwert von 17 (ich schalte mit dem Signal des 5110 eine "Kopier"-Led, um eine schnelle optische Kontrolle zu erhalten). Bei 38 kHz tritt ohne Statistik ein sichtbares Flattern (sichtbar an der LED, am Oskar schon früher) bei Rampenwert 20 auf, deutliches Flackern der Kontroll-LED bei 30, LED ist fast aus bei 50 und nicht mehr feststellbar bei 60. Dann ist am Oskar noch hin und wieder was zu sehen.
Mit "Statistik" 10/990 - siehe Code oben - bekomme ich:
Code:
AktRampe Schaltabstand ca. cm
5/263 5
10 11
15 17
20 17
30 40
36 low
Lasse ich die 415 frei nach vorne in den Raum strahlen - sie ist natürlich abgeschirmt mit einer Schlauchblende - bekomme ich folgende Terminalmitschrift:
.......................Bild hier
Dabei ist mittendrin mal eine Bedämpfung des Messstrahls mit der Hand zu erkennen an dem Absinken der Statistikwerte "stt" unter 1000. Gegen Ende der Aufzeichung strahlt die SFH415 aber wieder unbedämpft und man sieht den aktuellen Statistikwert. Deutlich ist zu sehen, dass bei einer Ansteuerung mit "Rampe" 40 der 5110 praktisch auf low ist. Der maximale "Rampenwert", d.h. der Wert im ICR1 beträgt 263 - daher insgesamt eben maximal 264 Werte.
Fragen:
Habe ich Fehler gemacht? Wenn ja, welche?
Wieso messe ich nur maximale Entfernungen bis etwas 30 cm einigermassen vertrauenswürdig?
Wurde ähnliches Flattern am 5110 schon von euch beobachtet - aber bei mir machen es alle Aufbauten - auch der asuro.
Wieso funzt die Abstandsmessung am asuro so gut? Oder: wieso ist meine Messeinheit so anders?
Hat jemand auch schon mit Frequenzen "neben" der Nennfrequenz des SFH5110 experimentiert? Mit welchem Ergebnis?
Ok, etwas komplex, vielleicht findet jemand die Würmer? Danke im Voraus,