Inzwischen steht die Version 1 der Software und der Sensor funzt:
http://www.youtube.com/watch?v=AAdm9u9GZCo
Ausgabe aktuell über RS-232 / LEDs
Sigo
Ich möchte hier eine Projekt-Idee für einen 180°-IR-Radar Sensor bzw. Stoßstange vorstellen.
Bild hier
Grundprinzip:
Fächerförmig angeordnete IR-Dioden leuchten nacheinander (moduliert) und die Reflektionen werden von TSOP7000 IR-Empfängerchips (vergleichbar TSOP17xx, nur ca. 12x schneller) aufgenommen.
Je nachdem welche Diode leuchtet, kann man auf den Winkel zum Hindernis schließen..
Soweit nichts Besonderes, so wurde es schon zig mal auf Basis von TSOP-17xx und o.ä. realisiert.
Problem dabei:
Der integrierte AGC (automatic gain control) Amplifier, regelt den Empfänger immer unterschiedlich auf, sodass man weder die Entfernung (eigentlich Reflektionsverhalten) noch den Winkel wirklich brauchbar messen kann, da es keine Intensitätsinfo gibt. Durch die hohe Empfindlichkeit des Empfängers reagiert dieser eigentlich immer auch auf Reflexe. Auch sind die TSOP17xx nicht gerade die schnellsten.
Diser Entwurf:
1. Der AGC wird ausgetrickst, indem er regelmäßig von einer gesonderten IR-Diode mit einstellbarem Pegel (PWM und Trimmer) angeblitzt wird, sodass der recht träge reagierende AGC sich auf einem einstellbaren Level einpegelt. So kann man die Empfindlichkeit einstellen.
Zusätzlich lässt sich ebenfalls mittels PWM der Strom durch die Sendedioden einstellen.
2. Der TSOP-7000 arbeitet mit einer Trägerfrequenz von 455kHZ, und kann damit bis zu 20kBit/s übertragen. Es muss also alles recht fix gehn.
Die Pulspakete der Trägerfrequenz werden deshalb in Assembler erzeugt, in einem Puls-Pausenverhältnis von 4:28. Hierzu wird ein ATtiny2313 mit 14,56MHz getaktetet, das ist genau 32x 455kHz und gleichzeitig eine gute Frequenz, um die üblichen UART-Frequenzen zu erzeugen.
3. Um nun den Empfang des reflektieren Signals möglichst einfach zu gestalten, habe ich mir überlegt, ich versende UART-Objekte, welche dann vom TSOP über den UART des ATtiny2313 aufgenommen werden. So habe ich mit dem asynchronen Empfang nichts zu tun und kann mir dann nach dem Senden in Ruhe das Ergebnis als Byte abholen..
Da ich nicht weiß, ob überhaupt irgendwas reflektiert wird, muss das Startbit immer kommen. Das besorgen die Dioden LED9 und LED17.
Diese bewirken dabei auch (und vor allem), dass der AGC immer einen gewissen Level hält. Letzteres ist der Hauptzweck, denn das Startbit könnte man ja auch einfacher erzeugen.
Ein UART-Objekt sieht demnach so aus:
Startbit: LED9/LED17
Bit0: LED1
Bit1: LED2
Bit2: LED3
Bit3: LED4
Bit4: LED9/LED17 (ein Bit war übrig, warum also nicht nochmal)
Bit5: LED5
Bit6: LED6
Bit7: LED7
1. Stopbit: keine LED sendet
ggf. 2. Stopbit: keine LED sendet
LED9/17 leuchten auch als Bit 4, um den AGC noch stabiler zu halten.
Die LEDs sind so ausgewählt, dass sich ein Fächer aus 13 Bereichen ergibt:
LED7
LED7+LED6
LED6
LED6+LED5
LED5
etc..
Durch die einstellbare Empfindlichkeit des AGC und der Sendeleistung sollte es weiterhin möglich sein, verschiedene Messungen mit unterschiedlichen Sendeleistungen durchzuführen und so Reflektionen und andere Fehler auszublenden, sowie eine grobe Entfernungsinfo (nicht wirklich Entfernung) zu erhalten.
Da der Sensor sehr schnell arbeitet (ein Scan wird ca. 300-400µs dauern),
kann man mit mehreren Scans unterschiedlicher Empfindlichkeit eine Tiefenauflösung sowie vor allem eine Ausblendung von Reflexen errreichen und gleichzeitig sehr schnell auf Hindernisse reagieren.
(Hoffentlich).
Eine echte Entfernungsmessung im groben Raster wäre mit 2 dieser Sensoren möglich; aus den Winkelinformationen.
Die Info kann (so ich es denn programmiert kriege) über RS-232 oder I²C ausgeben werden, sowie grob über die roten LEDs angezeigt werden.
Die Hardware ist bereits fertig.
Mit der Software fange ich gerade an.
Bild hier
Bild hier
Bin für alle Anregungen und vor allem eigene Erfahrungen dankbar.
Sigo
Inzwischen steht die Version 1 der Software und der Sensor funzt:
http://www.youtube.com/watch?v=AAdm9u9GZCo
Ausgabe aktuell über RS-232 / LEDs
Sigo
Idee ist seeehr alt.
und IR-basierende bumper sind nicht genug "empfindlich" (manche oberflaechen "sieht" IR-bumper nicht).
aber als "low-cost" sind die IR-bump's unschlagbar
Ja, das Grundprinzip ist älter, klar.
Und bei vielen Materialien im Haushalt funktioniert es ja und zwar berührungslos.
Für den Fall, dass es nicht funktioniert, setze ich wahrscheinlich den Ultraschallschlauch ein, oder die Druckmessung, welches ja auch schon seeehr alt ist..
Sigo
Also mir gefällt es.
Ich glaube auch, dass die Variationen des Spielens mit dem AGC damit noch nicht erschöpft sein können.
Manfred
Danke Manfred,Zitat von Manf
richtig, das ist auch der kleine Unterschied zu bestehenden Schaltungen; und natürlich die Geschwindigkeit, sowie auch die Stromaufnahme, sobald der Idle-Mode implementiert ist
Eine Frage noch zum I2C:
Gibt es für Bascom I2C-Slaveroutinen, ohne dass man die zusätzliche Library kaufen muss?
Und falls man sie kaufen muss, spielt diese auch mit der BASCOM-Freeware-Version?
Sigo
Ich habe jetzt die Sende-LEDs und die umliegende Platine mit schwarzer Acrylfarbe nach hinten lichtdicht gemacht.
Bei einem eingestellten Sendestrom von ca. 100mA komme ich jetzt
nach vorne auf ca. 1m Reichweite auf div. haushaltsüblichen Oberflächen (ohne Glas und Metall).
Zur Seite misst das IR-Radar dabei ca. 0,8m max. zu jeder Seite.
Die abgedeckte Fläche insgesamt ist grob ein Rechteck von ca. 1,6m x 1m.
Die minimal einstellbare Schaltschwelle beträgt bei dieser Bestückung ca. nur 3-4cm auf weißes Papier bzw. ca. 12x4cm. Alles dazwischen lässt sich per PWM in ca. 50 Stufen einstellen.
Die erzielten Ergebnisse übertreffen bereits jetzt meine Erwartungen.
Sigo
TIP: Die LEDs kann man mit schwarzem schrumpfschlauch "abschirmen"... und von hinten - mit bastelknete stopfen.
Wie sieht es denn bei der hohen Auflösung mit der Winkelverteilung aus?Zitat von sigo
Die mittelere LED hat ja "Stabilisierungs-Kondensatoren" (nach jeder Seite einen).
Hast Du alle LEDs optimal eingestellt?, nachjustiert? gibt es optimale Winkel?
Manfred
Hallo Manfred,
Die Kondensatoren gehören zu den TSOP7000 auf der Rückseite.
hehe - Stabilisierung der LED...
Die LEDs sind nun auf beiden Seiten weitgehend gleich.
Die Winkel sind so justiert, dass sich tatsächlich 13 Bereiche ergeben.
Evtl. mach ich noch eine Winkelmessung.
Aber wichtiger ist, dass es diese Bereiche alle gibt, und dass der Übergang immer überlappend geschieht. Das ist der Fall.
LED3 und LED 5 sind naturgemäß am empfindlichsten, da diese auf +/-42° ausgerichtet sind und damit fast auf der Achse des TSOP (45°) senden.
Daher auch die Einbuchtung in der Mitte, wo die TSOP nur aus 45° mit 50% der Empfindlichkeit empfangen.
Ich könnte auf einfache Weise die beiden LEDs etwas abschwächen. Dazu braucht es nur je 1 Shunt. Das geht allerdings nur für einen Arbeitspunkt.
Aber mit Shunt und DIode(n) in Reihe ginge auch das zu kompensieren.
LEDs 1 und 7 stehen deshalb mit ihren Keulen links und rechts raus, weil diese LEDs mit einem engeren Winkel und somit stärker senden.
Wenn man das Foto der Schaltung genau betrachtet, stellt man fest, dass es 2 verschiedene LEDs mit unterschiedlichen Brennweiten sind. (auf dem Foto, waren noch die LEDs vertauscht (enge innen, weite außen), da hatte ich mich vertan.
Das habe ich bewusst so gemacht. LEDs 2 und 6 reichen schon an +/- 82° heran. Sind dann aber schwächer, wegen der abnehmenden Empfindlichkeit des TSOP. Durch die starken Keulen der äußeren LEDs bekomme bei +/-90° die größte Breite des Messbereiches.
Aktuell stelle ich mir die Frage, ob ich die mittlere LED stärker machen soll (oder LED3 und LED5 schwächer), sodass ich mich an einen Halbkreis oder Rechteck annähere. Oder aber die Kerbe in der Mitte sogar bewusst lasse.
Mit einem 3. TSOP, der nach vorne schaut, kann man die Lücke ebenfalls schließen und sich der halbrunden Form annähern. Es wird nur der TSOP benötigt, da alle TSOP über open Collektor verbunden sind.
So könnte das Fahrzeug an einen Reflektor heranfahren und auf den Punkt regeln, an dem LED4 an ist, LED 3 und 5 aber nicht. Das ist ein enger Bereich.
Die Winkel habe ich vorher anhand der Diagramme der LEDs so ausgerechnet, dass sich etwa gleiche Segmente und Überlappungsbereiche ergeben. Die Winkel stehen im Schaltplan.
Das kommt auch ziemlich gut so hin, wie errechnet.
Übrigens lässt sich die Platine alternativ auch für 90° Messbereich mit entsprechend stärker gebündelten LEDs bestücken, die alternativen Bohrungen sind vorgesehen. Dann hat jeder Teilstrich gerade mal 6,6°. In diesem Fall reicht ein TSOP7000, der dann nach vorne schaut. Es gibt 3 Bestückungspositionen.
Jetzt muss ich noch ein wenig programmieren, hoffentlich reicht der Speicher des Controllers für die Möglichkeiten aus. Evtl. hätte ich doch einen Controller mit mehr Flash nehmen sollen.
Sigo
Lesezeichen