Archiv verlassen und diese Seite im Standarddesign anzeigen : Schnelle 180° IR-Stoßstange mit Winkel und grober Entfernung
Ich möchte hier eine Projekt-Idee für einen 180°-IR-Radar Sensor bzw. Stoßstange vorstellen.
http://www.silbergold.de/fotos/IR-Radar/IR-Radar_180_sheet.jpg
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.
http://www.silbergold.de/fotos/IR-Radar/IR-Radar_180%b0.jpg
http://www.silbergold.de/fotos/IR-Radar/IR-Radar_vorn.jpg]
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
nestandart
05.11.2007, 00:20
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
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, :)
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
nestandart
07.11.2007, 17:24
TIP: Die LEDs kann man mit schwarzem schrumpfschlauch "abschirmen"... und von hinten - mit bastelknete stopfen.
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.
Wie sieht es denn bei der hohen Auflösung mit der Winkelverteilung aus?
Die mittelere LED hat ja "Stabilisierungs-Kondensatoren" (nach jeder Seite einen). O:)
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
Manfred,
ich habe mich heute ein wenig dem AGC gewidnet.
Problem:
Der erwartete Effekt bliebt (fast) völlig aus, da der AGC immer auf heruntergeregelter Verstärkung arbeitet. Dabei ist es fast egal, ob die LED etwas stärker leuchtet oder nicht.
Wenn ich allerdings die LED so weit herunter regel, das sie soeben noch minimal das Startbit erzeugt, erhöht sich die Reichweite erheblich. Was ja zu erwarten war. Jetzt kann z.B. schon bei kleiner Sendeleistung der übrigen LEDs eine sehr hohe Reichweite erzielt werden (10-20x höher als bei abgeregeltem AGC).
Dabei tritt nun ein Problem auf:
Sobald nun ein Echo empfangen wird, ist diese in der Regel (viel) stärker als das Triggersignal von LED9.
Das führt dazu, dass der AGC dann runterregelt und damit das schwache Startbit nicht mehr erkannt wird. Dann wird z.B. das Nutzsignal als Startbit interpretiert und falsche Winkel gemessen.
...
Ich muss also nun die Schaltung oder Software dahingehen ändern, dass das Startbit direkt per Hardware (oder Software) ohne IR-Strecke gegeben wird. Dadurch kommt der Trigger immer. Das Problem der Abregelung lässt sich so aber nicht lösen.
Die Versuche haber aber jetzt schon gezeigt, dass die Methode Abregelung des AGC sich voll bewährt und der TSOP so 1. eine stabile definierte Empfindlichkeitsschwelle hat, wenn sie leider auch so nicht variabel ist. Das Pulsieren des AGC war bei vielen Schaltungen, über die im Web und auch hier berichtet wurde, ein Problem, das sich so umschiffen lässt.
Evtl. werde ich noch eine andere Software schreiben, bei der die Bits einzeln angesprochen und ausgewertet werden, also ohne UART. Ist aber aufwändiger - jedenfalls für mich.
Sigo
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.
Das funktioniert wie jetzt berichtet vor allem bei gleicher Leistung von Startbit und weiterem Bit solange das Startbit etwa mindestens so stark ist wie das weitere Bit.
Wie ist das dann bei einer ersten Messung in unbekannter Umgebung?
Man geht mit dem Startbit von voller Leistung schrittweise abwärts und prüft ab welchem Pegel die weiteren Bits auch ein Echo bringen?
Du machst es erst einmal beim Einlesen möglichst einfach indem Du zeichenweise einliest und davon ausgehst, dass das Startbit durchkommt.
Nun muss man aber wohl die Bits im Zeitbezug analysieren oder man braucht eine neue Idee für die Auswertung von ganzen Zeichen.
Hast Du schon eine Idee wie es Zeichenweise gehen kann? (Die Flexibilität bei der bitweisen Analyse wird sicher noch ein paar Möglichkeiten eröffnen.)
Manfred
Hast Du schon eine Idee wie es Zeichenweise gehen kann? (Die Flexibilität bei der bitweisen Analyse wird sicher noch ein paar Möglichkeiten eröffnen.)
Manfred
Ja, mein aktueller Favorit ist:
Die Verzögerung des TSOP nutzen und mir das Bit einfach in Assembler ansehen, wenn ich aufhöre zu senden. Die Verzögerung beträgt minimal 5µs oder so, die Rise-Time 1,2µs. Das reicht, um ein Bit zu lesen.
OK, das ist ja nicht so schwer. Mal sehn was rauskommt.
Sigo
Hallo
Könnte man den Empfänger nicht einfach mit einem einfachen IR-Empfänger machen der einfach nur das Hochfrequente Signal vom AVR durchlässt. (wegen Falschlicht)
Vielleicht diesen Empfänger dann zum Abschwächen machen.?
l.G. Roberto
Der TSOP nimmt einem ja ne Menge Arbeit ab.
Er bietet eine hohe Verstärkung und die Demodulation ja gleich an.
Ich verstehe deine Frage nicht ganz.
Warum einen diskreten IR-Verstärker aufbauen, und das alles selber machen?
Sigo
Fortschritte:
Inzwischen habe ich noch einige Änderungen gemacht und eine 2. Platine bestückt. Diese habe ich mit der alternativen Bestückung für 90° Fächer bei einem TSOP7000 bestückt, was Segmente von ca. 6,7° erlaubt.
Diese Platine habe ich minimal bestückt mit nur 2 Transistoren statt 11.
Aber irgendwas funzt hier noch nicht. Morgen mal suchen.
Sigo
Hallo Sigo
Er bietet eine hohe Verstärkung und die Demodulation ja gleich an.
Ich verstehe deine Frage nicht ganz.
War nur so eine Idee wegen dem AGC
Vielleicht gibt es andere Empfänger mit einstellbarem AGC ?
l.G. Roberto
Diese Platine habe ich minimal bestückt mit nur 2 Transistoren statt 11.
Sind dann die LED Ströme kleiner, reichen die Ströme der Controllerausgänge dafür?
Manfred
Hallo Manfred,
ich habe aktuelle ein kleines Problem mit der neuen Hardware. (Suche noch nach dem Fehler) aber prinzipiell funktioniert es schon und zwar ziemlich gut, bei Spitzenströmen bis ca. 40mA.
Da alle Ports abwechselnd betrieben werden und auch nur sehr sehr kurz (ca. 23 x 220ns innerhalb von 500µs. Und das nur alle ca. 2-10ms....
Ist die Belastung kein Thema.
+/- 1,5m und mehr sind so nicht drin, aber 30-40cm Radius wohl schon, da ich hier ja auch 10° LEDs verwende, statt 25°.
Ich muss jetzt erstmal den Fehler suchen, dann mache ich ein Diagramm. Da der 90°-Sensor mit nur 1 TSOP arbeitet, wird die Charakteristik hier in etwa der des TSOP entsprechen. Also eine 90°-Keule.
Sigo
OK, der Fehler ist raus, ein kleiner Schluss zwischen 2 Leiterbahnen, der mir beim Durchmessen entgegangen war.
Die 90°-Platine kommt auf ca. 60cm@ 0° bzw. ca. 40cm @*/-45° bei weißem A4 Blatt.
Meine Hand wird ca. auf 40cm @0° erkannt bzw, ca. 25cm @45°
Ein Pelikian Stabilo Filzer auf ca. 20cm nach vorn und ca. 15cm@45°.
Der ATtiny liefert dabei ca. 20mA peak pro Portpin. Also durchaus im Rahmen seiner Spezifikation. Man könnte das sicher noch weiter ausreizen.
Die Platine ist so ausgeführt, dass man wahlweise 90° oder 180° mit jeweils 7 IR-LEDs bestücken kann.
MIr fehlen leider 2 IR-LEDs daher habe ich noch kein Video gemacht. Die 2 fehlenden LEDs habe ich aktuell noch durch LD274 ersetzt, die aber bei weitem nicht die Performance haben, da sie für diese Anwendung zu langsam sind.
Sigo
oberallgeier
14.05.2008, 12:40
Hallo sigo,
heute bitte ne Frage an Dich.
Aus Deinem ersten Posting:
... Der TSOP-7000 arbeitet mit einer Trägerfrequenz von 455kHZ ... Es muss also alles recht fix gehn... Trägerfrequenz ... Puls-Pausenverhältnis von 4:28.
Nun spiele ich manchmal ein bisschen mit der Kombination SFH5110/SFH415 und versuche die Entfernung durch unterschiedlich langes Pulsen (chirpen?) in den bursts zu messen. Das hatte u.a. schon waste und Sternthaler vorgemacht. Weil das iterative Bestimmen der Entfernung mit dieser Ausrüstung doch etwas zeitaufwendig ist - der 5110 will rund 36 kHz, hatte ich mal kurz überlegt dafür (D)eine TSOP-Technik zu nehmen. In der Dokumentation vom TSOP7000 steht aber, dass der nach einem burst aus - schlag mich nicht - 10 bis 20 Pulsen, gern eine etwa ebensolange Pause will. Geht das wirklich NUR mit der Pause? Denn damit wäre natürlich der Geschwindigkeitsgewinn nur noch halb so groß oder sogar weniger.
Danke schon mal für die Anwort.
Hallo Joe,
ich betreibe den TSOP mit 38,4Kbit/s.
Das geht sicher. Das sind also dann Bitzeiten von ca. 25µs. Oder ca. 11 bzw. 12 Impulsen.
Natürlich kann man mehrere Bits hintereinander senden. Die max. Dauer von "1, also moduliert" darf jedoch nicht länger als 500µs betragen. Dann muss eine Pause her.
Ich mach momentan Sommerpause und bastel nicht weiter. Ich habe mir bisher 2stk. 180-Module gebastelt, und ein 90°-Modul. Die 180er werden als nächstes an den Ring-O montiert und dann am Fahrzeug getestet. Im Handversuch bin ich sehr zufrieden. Habe noch 2 PWM-Ausgänge programmiert, einer gibt die Entfernung aus, der andere den Winkel.
LG sigo
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.