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