Advance Perimeter Receiver

roland

Active member
Hallo,

viele haben ja damit zu kämpfen, das die Signalstärke in der Mitte des Rasens zu gering ist. Die Umstellung der Raindancer Firmware auf ein 128Bit Signal hat schon eine gute Verbesserung gebracht. Eine weitere Massnahme ist,
den Sender umzubauen, dass dieser mehr als 1A zum senden verwendet. Doch dann gibt es zwei Faktoren zu berücksichtigen:

1) Es wird ziemlich viel Leistung im Sender verbraucht.
2) An engen Stellen oder auch direkt am Perimeter wird das Signal so stark, dass der Empfänger übersteuert und innen dann ggf. als außen erkannt wird.

Daher habe ich einen neuen Empfänger entwickelt der folgende Merkmale besitzt:

a) Es werden bis zu 4 Spulen unterstützt, wobei zwei Spulen gleichzeitig ausgewerte werden (z.B. zwei vorder Spulen). Der Empfänger kann dann bei Bedarf auf das andere Spulenpaar umgeschaltet werden.
Wenn nur eine Spule benötigt wird, müssen nur die Komponenten für eine Spule aufgelötet werden.
b) Das Sendersignal wird ca. 5ms lang und alle 46ms gesendet. Dazwischen ist der Ausgang des Senders deaktiviert. Damit belegt das Signal 11% der Sendeperiode.
c) AGC (Automatic Gain Control) Der Empfänger kann die Verstärkung runterregeln, wenn das empfangene Signal zu stark wird.
d) Die Empfangspulen werden mir RG174 Kabel an den Sender angeschlossen: Kabellänge maximal ca. 40cm.

Leider hat dies alles seinen Preis:
Die Samplingrate wurde auf 153kHz (bisher 38kHz) hochgesetzt.
Die Sendefrequenz wurde verdoppelt T=52us (bisher 104uS).
Es werden um die 80kByte Speicher benötigt um die ganzen Datenmengen zu verarbeiten.
Die Berechnung von 2 Spulen darf nicht länger als 53ms dauern. (Aktuell wird zur Ermittlung eines Signals 9x eine 2048 FFT ausgeführt und 9x eine 2048 IFFT)
Das ist aktuell mit dem DUE so nicht umzusetzen. Weiterhin ist dere aktuelle Empfänger nicht mehr geeignet.

Daher war es notwendig alles neu zu entwickeln.
Ich verwende nun ein STM32 NUCLEO 446RE Entwicklungsboard.
Der Empfänger wurde neu entwickelt. Alle Verstärker befinden sich nun auf einer Platine.

Das aktuelle PCB1.3 kann über I2C oder/und über die bisherigen Perimeteranschlüsse angeschlossen werden.

Im aktuellen Office Betrieb laufen die Tests bisher sehr gut. Nun muss ich das in der Praxis testen.
Da mein aktueller Robbi mäht, muss ich mir nun erstmal einen zweiten Testroboter aufbauen um auch die Raindancer Software abzuändern.

Anbei mal die ersten Bilder:

Platinen und Testumgebung:
IMG_1851.JPG

IMG_1852.JPG

IMG_1854.JPG


Signal am ADC des Nucleo Boards. Bei dem blauen Signal wurde die Spule an einem 5m langen RG174 Kabel angeschlossen. Dies ist zu lang. Bei dem gelben Signal wurde die Spule an einem 42cm langen RG174 Kabel angeschlossen. Dies ist OK.
EmpfangssignalRG174.png


Sendeperiode:
SendePeriode.png


Signal am Perimeterreceivereingang des PCB1.3. Es gibt 3 Bereiche 0V = Signal ungültig. ca. 1.5V Außerhalb Perimeter. 3V Innerhalb Perimeter. Das Signal ist als Rechteck ausgebildet, so kann festgestellt werden, wann der Empfänger neue Daten hat (bei jedem Flankenwechsel ist eine neue Berechnung fertig). Weiterhin kann so festgestellt werden, ob der Empfänger noch arbeitet.
SignalAmOriginalPerimeterAnschluss.png


Matched Filter Output:
MatchedFilterOutput.png


Signal Noise Ratio zur Auswertung
SignalNoiseRatio.png


Amplituden Spekturm. Damit nicht um die 20 Bauteile für einen Antialiasing Filter zusätzlich eingelötet werden müssen, wurde als erster Operationsverstärker ein ICL 7621 verwendet. Der kostet 1,90€ und es wird für jede verwendete Spule einer benötigt. Dieser Dämpft die Frequenzen über 77khz um die 30dB. Ist zwar nicht so effektive wie ein Antialiasing Filter, hat aber den Vorteil, dass Bauteile eingespart werden konnten.
AmplitudenSpectrumt.png
 
Ich hatte meinen Mower nun umgebaut auf das neue Board und an den Motortreiber des Perimetersenders eine extra Spannungsversorgung angeschlossen, so dass ich nun bis 3A Strom über die Schleife schicken kann.
Meine Schleife hat einen Widerstand von 4,92Ohm.
Mit dem Standard Sender habe ich mit 1A und 3Ohm Zusatzwiderstand in Reihe zum Perimeter ca. 8W benötigt.
Mit dem neuen Sender konnte ich den 3Ohm Widerstand entfernen. Den Strom habe ich auf 2,44A eingestellt. Damit verbrauche ich nun aktuell 3.5W, da das Signal nicht die ganze Zeit gesendet wird.

Der Mower hat das Signal erkannt. Doch leider hat aufgrund der Motorstörungen die AGC das Signal extrem gedämpft. Trotz der starken Dämpfung und den Störungen, wurde das Signal immer noch erkennt.
Es hat sich im nachhinein rausgestellt, dass die PWM bis ca. 84khz Störungen reinstreut. Das ist bei dem alten Empfänger nicht so in das Gewicht gefallen wie bei meinem aktuellen. Daher ist die aktuelle Entwicklung wie ich es mir vorgestellt habe nicht geeignet bzw. hat gegenüber dem alten Empfänger keine Vorteile mehr. Also habe ich erstmal alles zurückgebaut bis ich eine andere Lösung habe.

Ich habe mich entschlossen mit dem alten Empfänger zu testen. Auch mit diesem wird das Signal erkannt. doch hier kommt das Problem der Übersteuerung wieder zum Vorschein.
Nach weiteren Untersuchungen habe ich aber dafür eine Lösung gefunden. Wenn der LM386 übersteuert, wird die linke Nebenkeule größer, je mehr er übersteuert. Irgendwann ist die linke Nebenkeule größer als der eigentliche Matched Filter Peak und da diese das entgegengesetzte Vorzeichen hat, wird innen mit außen verwechselt. Das Matched Filter Signal ist prinzipiell nun in der Mitte gespiegelt. Glücklicher Weise ist immer nur die linke Nebenkeule betroffen, so ist das Softwaretechnisch relative einfach abzufangen.
Voraussetzung ist aber, dass ein Spannungsteiler hinter den Receiver geschaltet wird, der das Signal auf 3.3V herunterteilt.
Der Aufbau des Nucleo Shield wird wird damit relative einfach. Das kann man auch so noch zusammenlöten.

Hier mal ein Bild:

MatchedFilterOriginalReceiverbersteuert.png

Attachment: https://forum.ardumower.de/data/med.../MatchedFilterOriginalReceiverbersteuert.png/
 
Zuletzt bearbeitet von einem Moderator:
Hier noch zwei weitere Bilder.
Hier ist das empfangene Signals zu sehen mit PWM Störung. Blau LM386 Empfänger, gelb mein Empfänger. Ich müsste bei meinem Empfänger noch einen Lowpass Filter einbauen, um die Störungen zu verringern.
EmpfangenesSignalMitPWM.png


Übersteuerung des LM386 Empfängers (blau). Das Problem hier ist, dass das Senden einer 11 nun tatsächlich als 11 angezeigt wird anstatt als 10 wie ohne Übersteuerung.
SignalUebersteuert.png

Attachment: https://forum.ardumower.de/data/media/kunena/attachments/2936/SignalUebersteuert.png/
 
Zuletzt bearbeitet von einem Moderator:
hi there
great work on the new signal receiver

btw. the gps method when the signal is lost is not good enough to bypass the inside location ?
 
Hi.
It"s Always difficult to reduce the motor noise but the actual receiver can work with option in the code.

On big area i have sometime issue when the mower is in the middle :
The mag change from positive to negative and generate a transition and the mower generate a bad wire detection.

To solve this i use the Smag value with a slow filter (to avoid small value when mower is exactly on the wire)
By this way,in the middle of the area when the Smag is < 200 for example and the mag value change from positive to negative the wire detection is skip.
When the mower is near the wire the Smag is Always >1500
The minimum Smag is find in the middle of area and add to the setting perimeter.
By.
 
Yes, I realised this in the Raindancer firmware. There one can configure a GPS polygon where the mower is inside.
The reason for the advanced perimeter receiver is also to recognize more than one signal, have also back coils and to lower the energy consumption
of the sender. Using a smag I don't like because if the sender gets a problem while the mower is near the perimeter, the mower could drive outside the area.
The Raindancer firmware stops mowing, if the perimeter signal is missing for 2 seconds.

At the moment I paused further development of the Advanced Receiver, because I don't need it in my garden and I want to change the Behavior Tree or the Raindancer Firmware.
 
Oben