<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
		<id>https://wiki.ardumower.de/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Deejay</id>
		<title>www.wiki.ardumower.de - Benutzerbeiträge [de]</title>
		<link rel="self" type="application/atom+xml" href="https://wiki.ardumower.de/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Deejay"/>
		<link rel="alternate" type="text/html" href="https://wiki.ardumower.de/index.php?title=Spezial:Beitr%C3%A4ge/Deejay"/>
		<updated>2026-10-10T00:34:23Z</updated>
		<subtitle>Benutzerbeiträge</subtitle>
		<generator>MediaWiki 1.24.1</generator>

	<entry>
		<id>https://wiki.ardumower.de/index.php?title=Fehlerbehebung&amp;diff=2811</id>
		<title>Fehlerbehebung</title>
		<link rel="alternate" type="text/html" href="https://wiki.ardumower.de/index.php?title=Fehlerbehebung&amp;diff=2811"/>
				<updated>2015-11-04T18:50:14Z</updated>
		
		<summary type="html">&lt;p&gt;Deejay: /* Serieller Monitor auf Android-App ausgeben */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
=Fehlersuche=&lt;br /&gt;
&lt;br /&gt;
==Fehlercodes==&lt;br /&gt;
Wenn dein Ardumower periodisch piepst (4 Töne - Pause), ist er in einem Fehler-Status. Um den genauen Fehler zu finden, kann man die serielle Konsole oder die APP ('pfodApp-&amp;gt;Error Counters') benutzen. mögliche Lösungsvorschläge für jeden Fehler werden nachfolgend gegeben. Detaillierte Angaben zu deinen Robotereinstellungen, siehe [http://wiki.ardumower.de/index.php?title=Ardumower_LP#Einstellungen Einstellungen].&lt;br /&gt;
&lt;br /&gt;
  ERR_MOTOR_LEFT          Fehler  linker Getriebemotor&lt;br /&gt;
                          * Überprüfe Motortreiber und linken Getriebemotor&lt;br /&gt;
                          * MC33926: stelle sicher, dass der SLEW Jumper nicht gesteckt ist&lt;br /&gt;
                          * beim Fahren: veringere 'Motor-Max-PWM' und 'Tracking-P' um EMF zu veringern&lt;br /&gt;
  ERR_MOTOR_RIGHT         Fehler rechter GetriebemotorRight gear motor error&lt;br /&gt;
                          * Überprüfe Motortreiber und rechten Getriebemotor&lt;br /&gt;
                          * MC33926: stelle sicher, dass der SLEW Jumper nicht gesteckt ist&lt;br /&gt;
                          * beim Fahren: veringere 'Motor-Max-PWM' und 'Tracking-P' um EMF zu veringern&lt;br /&gt;
  ERR_MOTOR_MOW           Mähmotor Fehler &lt;br /&gt;
                          * Überprüfe Motortreiber und Mähmotor&lt;br /&gt;
                          * MC33926: stelle sicher, dass der SLEW Jumper nicht gesteckt ist&lt;br /&gt;
                          * Veringere Motor-Max-Power, damit Überstrom früher erkannt wird&lt;br /&gt;
  ERR_MOW_SENSE           Mähmotor Überstrom&lt;br /&gt;
                          * Überprüfe Mähmotor-Treiber und Mähmotor&lt;br /&gt;
                          * Vergrößere Motor-Max-Power, damit Überstrom später erkannt wird&lt;br /&gt;
  ERR_IMU_COMM            IMU Kommunikationsfehler&lt;br /&gt;
                          * Überprüfe die Verbindung zum IMU-Modul&lt;br /&gt;
  ERR_IMU_CALIB           IMU Abgleich-Fehler&lt;br /&gt;
                          * Start [http://wiki.ardumower.de/index.php?title=Inertialsensor_-_IMU#Abgleich_.28letzte_Version.29 'IMU Abgleich'] (entweder über die Konsole oder über pfodApp-&amp;gt;Settings-&amp;gt;IMU)                     &lt;br /&gt;
  ERR_IMU_TILT            IMU Neigungsfehler&lt;br /&gt;
                          * Überprüfe IMU-Modul und Ausrichtung des Roboters&lt;br /&gt;
  ERR_RTC_COMM            RTC Kommunikationsfehler&lt;br /&gt;
                          * Überprüfe die Verbindung zum RTC-Modul, RTC-Batterie usw.&lt;br /&gt;
  ERR_RTC_DATA            RTC-Daten sind fehlerhaft&lt;br /&gt;
                          * stelle und speichere Datum und Zeit&lt;br /&gt;
  ERR_PERIMETER_TIMEOUT   Perimeter-Signal, Zeitüberschreitung &lt;br /&gt;
                          * Überprüfe Perimeter-Sender, Schleife usw.&lt;br /&gt;
                          * Überprüfe die Polarität der Perimeterspule&lt;br /&gt;
                          * veringere 'Perimeter-smag', damit die Auszeit größer wird&lt;br /&gt;
                          * Erhöhe 'Perimeter-timeout-seconds', damit die Auszeit größer wird&lt;br /&gt;
                          * Überprüfe, ob das [http://wiki.ardumower.de/index.php?title=Perimeter-Schleife#Signal_und_Rauschmessungen Signal-Rausch-Verhältnis] größer 1 ist.&lt;br /&gt;
  ERR_TRACKING            Perimeter-Folge-Fehler &lt;br /&gt;
                          * Überprüfe Perimeter-Sender, Schleife usw.&lt;br /&gt;
                          * Erhöhe 'Perimeter-tracking-timeout', damit die Auszeit größer wird&lt;br /&gt;
  ERR_ODOMETRY_LEFT       Odometrie-Fehler linker Motor &lt;br /&gt;
                          * Überprüfe das linke Odometrie-Kabel&lt;br /&gt;
                          * Überprüfe die Drehrichtung des linken Motors &lt;br /&gt;
  ERR_ODOMETRY_RIGHT      Odometrie-Fehler rechter Motor &lt;br /&gt;
                          * Überprüfe das rechte Odometie-Kabel&lt;br /&gt;
                          * Überprüfe die Drehrichtung des rechten Motors&lt;br /&gt;
  ERR_BATTERY             Akku-Fehler &lt;br /&gt;
                          * Überprüfe Akku-Verbindung&lt;br /&gt;
  ERR_CHARGER             Ladefehler &lt;br /&gt;
                          * Überprüfe Verbindung zum Ladegerät &lt;br /&gt;
  ERR_GPS_COMM            GPS Kommunikationsfehler &lt;br /&gt;
                          * Überprüfe GPS-Kabel&lt;br /&gt;
  ERR_GPS_DATA            GPS Datenfehler &lt;br /&gt;
                          * Überprüfe GPS-Antenne und -Kabel&lt;br /&gt;
  ERR_ADC_CALIB           ADC Abgleich-Fehler&lt;br /&gt;
                          * Starte 'ADC calibration' (entweder über Konsole oder pfodApp-&amp;gt;ADC calibration)&lt;br /&gt;
  ERR_EEPROM_DATA         EEPROM Datenfehler &lt;br /&gt;
                          * Speichere Benutzer-Einstellungen (entweder über Konsole oder pfodApp-&amp;gt;Settings-Save)&lt;br /&gt;
&lt;br /&gt;
== Serieller Monitor auf Android-App ausgeben ==&lt;br /&gt;
Für den mobilen Einsatz kann man den seriellen Monitor per USB auch auf einem Android-Smartphone oder Android-Tablett ausgeben. &lt;br /&gt;
&lt;br /&gt;
* Android-App &amp;quot;Simple Serial Monitor&amp;quot; von Bernard Bekker aus dem Playstore herunterladen&lt;br /&gt;
* Smartphone oder Tablett mit der OTG-Funktion (Bereitstellung eines USB-Host)&lt;br /&gt;
* passendes OTG-Kabel&lt;br /&gt;
* USB-Kabel&lt;br /&gt;
&lt;br /&gt;
Die USB-Schnittstelle des Arduino Mega mit dem USB-Stecker des OTG-Kabels verbinden und dann die Android-App &amp;quot;Simple Serial Monitor&amp;quot; aufrufen. Die Übertragungsgeschwindigkeit einstellen und den Button &amp;quot;Start&amp;quot; drücken.&lt;br /&gt;
&lt;br /&gt;
Damit steht ein vollwertiger serieller Monitor analog zur Arduino-IDE zur Verfügung. Es werden alle Systemmeldungen ausgegeben. Über die Kommandozeile können die üblichen Befehle aufgerufen werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: SeriellerMonitor per OTG.jpg | Serieller Monitor&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Deaktiviere alle Pins, die nicht angeschlossen sind==&lt;br /&gt;
Stelle sicher, dass alle Pins und Eigenschaften die nicht angeschlossen sind (nicht verwendet werden), in der Roboter-Konfiguration deaktiviert sind. &lt;br /&gt;
&lt;br /&gt;
Beispiel: Wenn du die Odometrie-Pins nicht beschaltet hast, muss Odometrie in der Roboter-Konfiguration deaktiviert werden. (mower.cpp):&lt;br /&gt;
&lt;br /&gt;
 odometryUse       = 0;       // use odometry?&lt;br /&gt;
&lt;br /&gt;
== Probebetrieb ohne Mähmotor-Treiber ==&lt;br /&gt;
&lt;br /&gt;
Sofern man den Ardumower im Probebetrieb ohne Mähmotor-Treiber testen möchte, so ist der PIN &amp;quot;pinMotorMowFault&amp;quot; auf High zu setzen. Damit verschwindet die Fehlermeldung &amp;quot;Error: Motor mow fault&amp;quot; und der Mover kann getestet werden.&lt;br /&gt;
&lt;br /&gt;
==Drehen die Motoren richtig?==&lt;br /&gt;
Führe einen Motortestlauf aus. Gehe in die serielle Konsole (Arduino IDE: STRG+SHIFT+M, 19200 Baud) drücke 'd' und ENTER um ins Menü zu gelangen. Dann drücke '1' und ENTER. Es startet der Motortest.&lt;br /&gt;
&lt;br /&gt;
==Unerwartete Sensorauslösung==&lt;br /&gt;
Wenn dein Roboter etwas Unerwartetes tut, kann es an einem Sensor liegen, der fehlerhaft auslöst. Überprüfe das über die serielle Konsole:&lt;br /&gt;
&lt;br /&gt;
Starte die serielle Konsole (Arduino IDE: CTRL+SHIFT+M, 19200 Baud), und schalte den Roboter ein. Jedes Mal, wenn ein Sensor auslöst, wird der Zähler dieses Sensors erhöht. Siehe Beschreibung der Sensoren weiter unten.&lt;br /&gt;
Wenn sich also der Roboter nicht so verhält, wie er soll, dann schau dir die Sensor-Zähler an und stelle fest, welcher Zähler hochzählt, um das Problem zu lokalisieren.&lt;br /&gt;
&lt;br /&gt;
==Einige Sensoren lösen nicht aus?==&lt;br /&gt;
...&lt;br /&gt;
==Keine Verbindung über Bluetooth==&lt;br /&gt;
&lt;br /&gt;
* Stelle sicher, dass die Baudrate des BT-Modules richtig eingestellt ist (verwende die Ardumower Konsole) - Aktiviere den      Programmier-Modus des BT-Modules und stelle die Baudrate ein [[Bluetooth und App|Bluetooth &amp;amp; App]].&lt;br /&gt;
* Stelle sicher, das das BT-Modul mit dem Handy &amp;quot;gepaart&amp;quot; ist&lt;br /&gt;
* Überprüfe, dass der Arduino Mega nicht über USB mit Strom versorgt wird.&lt;br /&gt;
&lt;br /&gt;
=Konsolen-Ausgabe=&lt;br /&gt;
&lt;br /&gt;
Beim Start des Roboters wird über die serielle Konsole beispielsweise folgendes ausgegeben:&lt;br /&gt;
  START &lt;br /&gt;
  Ardumower rXXXX&lt;br /&gt;
  press...&lt;br /&gt;
    d zum Menü&lt;br /&gt;
    v um Konsolenausgabe zu ändern (Sensor-Zähler, Werte, Perimeter usw.)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 t     0 l177 v0 FORW spd   33   33    0 sen    0    0    0 bum    0    0 dro    0    0 son   0 yaw   0 pit   0 rol   0 bat 20.8 chg 21.7  0.0 imu  0 adc  0 Ardumower&lt;br /&gt;
 t     1 l177 v0 FORW spd   33   33    0 sen    0    0    0 bum    0    0 dro    0    0 son   0 yaw   0 pit   0 rol   0 bat 20.8 chg 21.7  0.0 imu  0 adc  0 Ardumower&lt;br /&gt;
 t     3 l177 v0 FORW spd   33   33    0 sen    0    0    0 bum    0    0 dro    0    0 son   0 yaw   0 pit   0 rol   0 bat 20.8 chg 21.7  0.0 imu  0 adc  0 Ardumower&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Wenn ein Sensor auslöst, wird sein Zähler erhöht. &lt;br /&gt;
Beispiel (Mähmotor-Überstromsensor löst aus):&lt;br /&gt;
&lt;br /&gt;
 t     4 l177 v0 FORW spd   33   33    0 sen    0    0    0 bum    0    0 dro    0    0 son   0 yaw   0 pit   0 rol   0 bat 20.8 chg 21.7  0.0 imu  0 adc  0 Ardumower&lt;br /&gt;
 t     5 l177 v0 REV  spd  -26  -26    0 sen    0    0    1 bum    0    0 dro    0    0 son   0 yaw   0 pit   0 rol   0 bat 20.8 chg 21.7  0.0 imu  0 adc  1 Ardumower&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Hier ist eine  Beschreibung jeder Spalte:&lt;br /&gt;
&lt;br /&gt;
 t - Zeit des akt. Maschinenzustands (ms)&lt;br /&gt;
 l - Programmschleifen-Durchläufe/sek &lt;br /&gt;
 v - Anzeige-Modus des ausgewählten Sensors (0 = Zähler / 1 = Sensorwerte ​​/ 2 = Sensorwerte​​) &lt;br /&gt;
 - aktueller Status (FORW, REV, ROLL usw.) &lt;br /&gt;
 - Nachhause-Fahrt? (1/0) &lt;br /&gt;
 spd - Steuerung / Drehzahl der Motoren: links (PWM), rechts (PWM), Mähmotor (speed) &lt;br /&gt;
 sen - Motor-Überstromzähler:  links, rechts, Mähmotor &lt;br /&gt;
 bum - Bumperzähler: links, rechts &lt;br /&gt;
 son - Ultraschall- Distanz-Unterschreitung: Zähler &lt;br /&gt;
 pit, roll - inclination (berechnet mit Beschleunigungssensor) &lt;br /&gt;
 yaw - Kompass-Kurs&lt;br /&gt;
 bat - Akkuspannung&lt;br /&gt;
 chg - Ladespannung&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''---Befehle---&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
 'd': Testmenü, Abgleich IMU, Bluetooth&lt;br /&gt;
 'v': Anzeigemodus(zeigt Werte oder Zähler&lt;br /&gt;
 'h': Fahr zur Ladestation&lt;br /&gt;
 'p': Schleifenfahrt&lt;br /&gt;
 'l': simuliert linken Bumper&lt;br /&gt;
 'r': simuliert rechten Bumper&lt;br /&gt;
 's': simuliert Rasensensor&lt;br /&gt;
 'm': schaltet Mähmotor&lt;br /&gt;
 'c': simuliert Laden&lt;br /&gt;
 '+': drehen 90 Grad&lt;br /&gt;
 '-': drehen 90 Grad &lt;br /&gt;
 '3': aktiviert Fernsteuerung&lt;br /&gt;
 '0': Aus&lt;br /&gt;
 '1': Automode, Mähmotor an&lt;br /&gt;
&lt;br /&gt;
=Wie melde ich einen Programmfehler/eine neue Eigenschaft/neuen Programmcode=&lt;br /&gt;
Klicke auf [https://github.com/Ardumower/ardumower/issues/new?title=Error+XYZ+%2F+Fehler+XYZ&amp;amp;body=Please+always+fill-in+below%2FBitte+unbedingt+ausf%C3%BCllen%21%0D%0A%0D%0A--English--%0D%0AYour+battery+voltage+%2812v%2C+24v%29%3A+24v%0D%0AYour+gear+motor+%28Ardumower%2C+other%29%3A+Ardumower+motor%0D%0AYour+Ardumower+software+version+%28pfodApp-%3EInfo%29%3A+890%0D%0AYour+Arduino+%28Mega+or+Due%29%3A+Mega+2560%0D%0AYour+PCB+version+%28printed+on+PCB%29%3A+0.5%0D%0AYour+PCB+mounted+parts+configuration+%28default+or+custom+and+how%29%3A+default%0D%0AOdometry+sensor+%28yes%2Fno%29%3F+yes%0D%0AArdumower+chassis+%28yes%2Fno%29%3F+yes%0D%0AExact+error+description%3A+...+%0D%0A%0D%0A--Deutsch--%0D%0ADeine+Akku-Spannung+%2812v%2C+24v%29%3A+24v%0D%0ADein+Antriebsmotor+%28Ardumower%2C+anderer%29%3A+Ardumower+Motor%0D%0ADeine+Ardumower-Software+Version%3A+%28pfodApp-%3EInfo%29%3A+890%0D%0ADeine+PCB-Version+%28siehe+Aufdruck%29%3A+0.5%0D%0ADein+Arduino+%28Mega+oder+Due%29%3A+Mega+2560%0D%0ADeine+PCB+Bauteilbest%C3%BCckung+%28Standard+oder+abweichend+und+wie%29%3A+Standard%0D%0AOdometrie+sensor+%28ja%2Fnein%29%3F+ja%0D%0AArdumower+Chassis+%28ja%2Fnein%29%3F+ja%0D%0AGenaue+Fehlerbeschreibung%3A+...%0D%0A  'this link'] und erzeuge ein neues Thema - bitte teile uns folgendes mit:&lt;br /&gt;
&lt;br /&gt;
    Deine Plattform (Arduino Mega 2560, Arduino Due)&lt;br /&gt;
    Deine Arduino IDE-Version (der letzte Programmcode erfordert 1.6.3)&lt;br /&gt;
    Dein genaues Betriebssystem (Windows 8, Linux usw.)&lt;br /&gt;
    Deine Ardumower-Programmversion  (eine Liste der Veröffentlichungen siehst du hier https://github.com/Ardumower/ardumower/releases)&lt;br /&gt;
    Jede andere Info, die brauchbar sein kann...&lt;br /&gt;
&lt;br /&gt;
=Weitere Links=&lt;br /&gt;
#[[Ardumower LP|Diagnostic]]&lt;/div&gt;</summary>
		<author><name>Deejay</name></author>	</entry>

	<entry>
		<id>https://wiki.ardumower.de/index.php?title=Fehlerbehebung&amp;diff=2810</id>
		<title>Fehlerbehebung</title>
		<link rel="alternate" type="text/html" href="https://wiki.ardumower.de/index.php?title=Fehlerbehebung&amp;diff=2810"/>
				<updated>2015-11-04T18:49:43Z</updated>
		
		<summary type="html">&lt;p&gt;Deejay: /* Serieller Monitor auf Android-App ausgeben */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
=Fehlersuche=&lt;br /&gt;
&lt;br /&gt;
==Fehlercodes==&lt;br /&gt;
Wenn dein Ardumower periodisch piepst (4 Töne - Pause), ist er in einem Fehler-Status. Um den genauen Fehler zu finden, kann man die serielle Konsole oder die APP ('pfodApp-&amp;gt;Error Counters') benutzen. mögliche Lösungsvorschläge für jeden Fehler werden nachfolgend gegeben. Detaillierte Angaben zu deinen Robotereinstellungen, siehe [http://wiki.ardumower.de/index.php?title=Ardumower_LP#Einstellungen Einstellungen].&lt;br /&gt;
&lt;br /&gt;
  ERR_MOTOR_LEFT          Fehler  linker Getriebemotor&lt;br /&gt;
                          * Überprüfe Motortreiber und linken Getriebemotor&lt;br /&gt;
                          * MC33926: stelle sicher, dass der SLEW Jumper nicht gesteckt ist&lt;br /&gt;
                          * beim Fahren: veringere 'Motor-Max-PWM' und 'Tracking-P' um EMF zu veringern&lt;br /&gt;
  ERR_MOTOR_RIGHT         Fehler rechter GetriebemotorRight gear motor error&lt;br /&gt;
                          * Überprüfe Motortreiber und rechten Getriebemotor&lt;br /&gt;
                          * MC33926: stelle sicher, dass der SLEW Jumper nicht gesteckt ist&lt;br /&gt;
                          * beim Fahren: veringere 'Motor-Max-PWM' und 'Tracking-P' um EMF zu veringern&lt;br /&gt;
  ERR_MOTOR_MOW           Mähmotor Fehler &lt;br /&gt;
                          * Überprüfe Motortreiber und Mähmotor&lt;br /&gt;
                          * MC33926: stelle sicher, dass der SLEW Jumper nicht gesteckt ist&lt;br /&gt;
                          * Veringere Motor-Max-Power, damit Überstrom früher erkannt wird&lt;br /&gt;
  ERR_MOW_SENSE           Mähmotor Überstrom&lt;br /&gt;
                          * Überprüfe Mähmotor-Treiber und Mähmotor&lt;br /&gt;
                          * Vergrößere Motor-Max-Power, damit Überstrom später erkannt wird&lt;br /&gt;
  ERR_IMU_COMM            IMU Kommunikationsfehler&lt;br /&gt;
                          * Überprüfe die Verbindung zum IMU-Modul&lt;br /&gt;
  ERR_IMU_CALIB           IMU Abgleich-Fehler&lt;br /&gt;
                          * Start [http://wiki.ardumower.de/index.php?title=Inertialsensor_-_IMU#Abgleich_.28letzte_Version.29 'IMU Abgleich'] (entweder über die Konsole oder über pfodApp-&amp;gt;Settings-&amp;gt;IMU)                     &lt;br /&gt;
  ERR_IMU_TILT            IMU Neigungsfehler&lt;br /&gt;
                          * Überprüfe IMU-Modul und Ausrichtung des Roboters&lt;br /&gt;
  ERR_RTC_COMM            RTC Kommunikationsfehler&lt;br /&gt;
                          * Überprüfe die Verbindung zum RTC-Modul, RTC-Batterie usw.&lt;br /&gt;
  ERR_RTC_DATA            RTC-Daten sind fehlerhaft&lt;br /&gt;
                          * stelle und speichere Datum und Zeit&lt;br /&gt;
  ERR_PERIMETER_TIMEOUT   Perimeter-Signal, Zeitüberschreitung &lt;br /&gt;
                          * Überprüfe Perimeter-Sender, Schleife usw.&lt;br /&gt;
                          * Überprüfe die Polarität der Perimeterspule&lt;br /&gt;
                          * veringere 'Perimeter-smag', damit die Auszeit größer wird&lt;br /&gt;
                          * Erhöhe 'Perimeter-timeout-seconds', damit die Auszeit größer wird&lt;br /&gt;
                          * Überprüfe, ob das [http://wiki.ardumower.de/index.php?title=Perimeter-Schleife#Signal_und_Rauschmessungen Signal-Rausch-Verhältnis] größer 1 ist.&lt;br /&gt;
  ERR_TRACKING            Perimeter-Folge-Fehler &lt;br /&gt;
                          * Überprüfe Perimeter-Sender, Schleife usw.&lt;br /&gt;
                          * Erhöhe 'Perimeter-tracking-timeout', damit die Auszeit größer wird&lt;br /&gt;
  ERR_ODOMETRY_LEFT       Odometrie-Fehler linker Motor &lt;br /&gt;
                          * Überprüfe das linke Odometrie-Kabel&lt;br /&gt;
                          * Überprüfe die Drehrichtung des linken Motors &lt;br /&gt;
  ERR_ODOMETRY_RIGHT      Odometrie-Fehler rechter Motor &lt;br /&gt;
                          * Überprüfe das rechte Odometie-Kabel&lt;br /&gt;
                          * Überprüfe die Drehrichtung des rechten Motors&lt;br /&gt;
  ERR_BATTERY             Akku-Fehler &lt;br /&gt;
                          * Überprüfe Akku-Verbindung&lt;br /&gt;
  ERR_CHARGER             Ladefehler &lt;br /&gt;
                          * Überprüfe Verbindung zum Ladegerät &lt;br /&gt;
  ERR_GPS_COMM            GPS Kommunikationsfehler &lt;br /&gt;
                          * Überprüfe GPS-Kabel&lt;br /&gt;
  ERR_GPS_DATA            GPS Datenfehler &lt;br /&gt;
                          * Überprüfe GPS-Antenne und -Kabel&lt;br /&gt;
  ERR_ADC_CALIB           ADC Abgleich-Fehler&lt;br /&gt;
                          * Starte 'ADC calibration' (entweder über Konsole oder pfodApp-&amp;gt;ADC calibration)&lt;br /&gt;
  ERR_EEPROM_DATA         EEPROM Datenfehler &lt;br /&gt;
                          * Speichere Benutzer-Einstellungen (entweder über Konsole oder pfodApp-&amp;gt;Settings-Save)&lt;br /&gt;
&lt;br /&gt;
== Serieller Monitor auf Android-App ausgeben ==&lt;br /&gt;
Für den mobilen Einsatz kann man den seriellen Monitor auch auf einem Android-Smartphone oder Android-Tablett ausgeben. &lt;br /&gt;
&lt;br /&gt;
* Android-App &amp;quot;Simple Serial Monitor&amp;quot; von Bernard Bekker aus dem Playstore herunterladen&lt;br /&gt;
* Smartphone oder Tablett mit der OTG-Funktion (Bereitstellung eines USB-Host)&lt;br /&gt;
* passendes OTG-Kabel&lt;br /&gt;
* USB-Kabel&lt;br /&gt;
&lt;br /&gt;
Die USB-Schnittstelle des Arduino Mega mit dem USB-Stecker des OTG-Kabels verbinden und dann die Android-App &amp;quot;Simple Serial Monitor&amp;quot; aufrufen. Die Übertragungsgeschwindigkeit einstellen und den Button &amp;quot;Start&amp;quot; drücken.&lt;br /&gt;
&lt;br /&gt;
Damit steht ein vollwertiger serieller Monitor analog zur Arduino-IDE zur Verfügung. Es werden alle Systemmeldungen ausgegeben. Über die Kommandozeile können die üblichen Befehle aufgerufen werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: SeriellerMonitor per OTG.jpg | Serieller Monitor&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Deaktiviere alle Pins, die nicht angeschlossen sind==&lt;br /&gt;
Stelle sicher, dass alle Pins und Eigenschaften die nicht angeschlossen sind (nicht verwendet werden), in der Roboter-Konfiguration deaktiviert sind. &lt;br /&gt;
&lt;br /&gt;
Beispiel: Wenn du die Odometrie-Pins nicht beschaltet hast, muss Odometrie in der Roboter-Konfiguration deaktiviert werden. (mower.cpp):&lt;br /&gt;
&lt;br /&gt;
 odometryUse       = 0;       // use odometry?&lt;br /&gt;
&lt;br /&gt;
== Probebetrieb ohne Mähmotor-Treiber ==&lt;br /&gt;
&lt;br /&gt;
Sofern man den Ardumower im Probebetrieb ohne Mähmotor-Treiber testen möchte, so ist der PIN &amp;quot;pinMotorMowFault&amp;quot; auf High zu setzen. Damit verschwindet die Fehlermeldung &amp;quot;Error: Motor mow fault&amp;quot; und der Mover kann getestet werden.&lt;br /&gt;
&lt;br /&gt;
==Drehen die Motoren richtig?==&lt;br /&gt;
Führe einen Motortestlauf aus. Gehe in die serielle Konsole (Arduino IDE: STRG+SHIFT+M, 19200 Baud) drücke 'd' und ENTER um ins Menü zu gelangen. Dann drücke '1' und ENTER. Es startet der Motortest.&lt;br /&gt;
&lt;br /&gt;
==Unerwartete Sensorauslösung==&lt;br /&gt;
Wenn dein Roboter etwas Unerwartetes tut, kann es an einem Sensor liegen, der fehlerhaft auslöst. Überprüfe das über die serielle Konsole:&lt;br /&gt;
&lt;br /&gt;
Starte die serielle Konsole (Arduino IDE: CTRL+SHIFT+M, 19200 Baud), und schalte den Roboter ein. Jedes Mal, wenn ein Sensor auslöst, wird der Zähler dieses Sensors erhöht. Siehe Beschreibung der Sensoren weiter unten.&lt;br /&gt;
Wenn sich also der Roboter nicht so verhält, wie er soll, dann schau dir die Sensor-Zähler an und stelle fest, welcher Zähler hochzählt, um das Problem zu lokalisieren.&lt;br /&gt;
&lt;br /&gt;
==Einige Sensoren lösen nicht aus?==&lt;br /&gt;
...&lt;br /&gt;
==Keine Verbindung über Bluetooth==&lt;br /&gt;
&lt;br /&gt;
* Stelle sicher, dass die Baudrate des BT-Modules richtig eingestellt ist (verwende die Ardumower Konsole) - Aktiviere den      Programmier-Modus des BT-Modules und stelle die Baudrate ein [[Bluetooth und App|Bluetooth &amp;amp; App]].&lt;br /&gt;
* Stelle sicher, das das BT-Modul mit dem Handy &amp;quot;gepaart&amp;quot; ist&lt;br /&gt;
* Überprüfe, dass der Arduino Mega nicht über USB mit Strom versorgt wird.&lt;br /&gt;
&lt;br /&gt;
=Konsolen-Ausgabe=&lt;br /&gt;
&lt;br /&gt;
Beim Start des Roboters wird über die serielle Konsole beispielsweise folgendes ausgegeben:&lt;br /&gt;
  START &lt;br /&gt;
  Ardumower rXXXX&lt;br /&gt;
  press...&lt;br /&gt;
    d zum Menü&lt;br /&gt;
    v um Konsolenausgabe zu ändern (Sensor-Zähler, Werte, Perimeter usw.)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 t     0 l177 v0 FORW spd   33   33    0 sen    0    0    0 bum    0    0 dro    0    0 son   0 yaw   0 pit   0 rol   0 bat 20.8 chg 21.7  0.0 imu  0 adc  0 Ardumower&lt;br /&gt;
 t     1 l177 v0 FORW spd   33   33    0 sen    0    0    0 bum    0    0 dro    0    0 son   0 yaw   0 pit   0 rol   0 bat 20.8 chg 21.7  0.0 imu  0 adc  0 Ardumower&lt;br /&gt;
 t     3 l177 v0 FORW spd   33   33    0 sen    0    0    0 bum    0    0 dro    0    0 son   0 yaw   0 pit   0 rol   0 bat 20.8 chg 21.7  0.0 imu  0 adc  0 Ardumower&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Wenn ein Sensor auslöst, wird sein Zähler erhöht. &lt;br /&gt;
Beispiel (Mähmotor-Überstromsensor löst aus):&lt;br /&gt;
&lt;br /&gt;
 t     4 l177 v0 FORW spd   33   33    0 sen    0    0    0 bum    0    0 dro    0    0 son   0 yaw   0 pit   0 rol   0 bat 20.8 chg 21.7  0.0 imu  0 adc  0 Ardumower&lt;br /&gt;
 t     5 l177 v0 REV  spd  -26  -26    0 sen    0    0    1 bum    0    0 dro    0    0 son   0 yaw   0 pit   0 rol   0 bat 20.8 chg 21.7  0.0 imu  0 adc  1 Ardumower&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Hier ist eine  Beschreibung jeder Spalte:&lt;br /&gt;
&lt;br /&gt;
 t - Zeit des akt. Maschinenzustands (ms)&lt;br /&gt;
 l - Programmschleifen-Durchläufe/sek &lt;br /&gt;
 v - Anzeige-Modus des ausgewählten Sensors (0 = Zähler / 1 = Sensorwerte ​​/ 2 = Sensorwerte​​) &lt;br /&gt;
 - aktueller Status (FORW, REV, ROLL usw.) &lt;br /&gt;
 - Nachhause-Fahrt? (1/0) &lt;br /&gt;
 spd - Steuerung / Drehzahl der Motoren: links (PWM), rechts (PWM), Mähmotor (speed) &lt;br /&gt;
 sen - Motor-Überstromzähler:  links, rechts, Mähmotor &lt;br /&gt;
 bum - Bumperzähler: links, rechts &lt;br /&gt;
 son - Ultraschall- Distanz-Unterschreitung: Zähler &lt;br /&gt;
 pit, roll - inclination (berechnet mit Beschleunigungssensor) &lt;br /&gt;
 yaw - Kompass-Kurs&lt;br /&gt;
 bat - Akkuspannung&lt;br /&gt;
 chg - Ladespannung&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''---Befehle---&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
 'd': Testmenü, Abgleich IMU, Bluetooth&lt;br /&gt;
 'v': Anzeigemodus(zeigt Werte oder Zähler&lt;br /&gt;
 'h': Fahr zur Ladestation&lt;br /&gt;
 'p': Schleifenfahrt&lt;br /&gt;
 'l': simuliert linken Bumper&lt;br /&gt;
 'r': simuliert rechten Bumper&lt;br /&gt;
 's': simuliert Rasensensor&lt;br /&gt;
 'm': schaltet Mähmotor&lt;br /&gt;
 'c': simuliert Laden&lt;br /&gt;
 '+': drehen 90 Grad&lt;br /&gt;
 '-': drehen 90 Grad &lt;br /&gt;
 '3': aktiviert Fernsteuerung&lt;br /&gt;
 '0': Aus&lt;br /&gt;
 '1': Automode, Mähmotor an&lt;br /&gt;
&lt;br /&gt;
=Wie melde ich einen Programmfehler/eine neue Eigenschaft/neuen Programmcode=&lt;br /&gt;
Klicke auf [https://github.com/Ardumower/ardumower/issues/new?title=Error+XYZ+%2F+Fehler+XYZ&amp;amp;body=Please+always+fill-in+below%2FBitte+unbedingt+ausf%C3%BCllen%21%0D%0A%0D%0A--English--%0D%0AYour+battery+voltage+%2812v%2C+24v%29%3A+24v%0D%0AYour+gear+motor+%28Ardumower%2C+other%29%3A+Ardumower+motor%0D%0AYour+Ardumower+software+version+%28pfodApp-%3EInfo%29%3A+890%0D%0AYour+Arduino+%28Mega+or+Due%29%3A+Mega+2560%0D%0AYour+PCB+version+%28printed+on+PCB%29%3A+0.5%0D%0AYour+PCB+mounted+parts+configuration+%28default+or+custom+and+how%29%3A+default%0D%0AOdometry+sensor+%28yes%2Fno%29%3F+yes%0D%0AArdumower+chassis+%28yes%2Fno%29%3F+yes%0D%0AExact+error+description%3A+...+%0D%0A%0D%0A--Deutsch--%0D%0ADeine+Akku-Spannung+%2812v%2C+24v%29%3A+24v%0D%0ADein+Antriebsmotor+%28Ardumower%2C+anderer%29%3A+Ardumower+Motor%0D%0ADeine+Ardumower-Software+Version%3A+%28pfodApp-%3EInfo%29%3A+890%0D%0ADeine+PCB-Version+%28siehe+Aufdruck%29%3A+0.5%0D%0ADein+Arduino+%28Mega+oder+Due%29%3A+Mega+2560%0D%0ADeine+PCB+Bauteilbest%C3%BCckung+%28Standard+oder+abweichend+und+wie%29%3A+Standard%0D%0AOdometrie+sensor+%28ja%2Fnein%29%3F+ja%0D%0AArdumower+Chassis+%28ja%2Fnein%29%3F+ja%0D%0AGenaue+Fehlerbeschreibung%3A+...%0D%0A  'this link'] und erzeuge ein neues Thema - bitte teile uns folgendes mit:&lt;br /&gt;
&lt;br /&gt;
    Deine Plattform (Arduino Mega 2560, Arduino Due)&lt;br /&gt;
    Deine Arduino IDE-Version (der letzte Programmcode erfordert 1.6.3)&lt;br /&gt;
    Dein genaues Betriebssystem (Windows 8, Linux usw.)&lt;br /&gt;
    Deine Ardumower-Programmversion  (eine Liste der Veröffentlichungen siehst du hier https://github.com/Ardumower/ardumower/releases)&lt;br /&gt;
    Jede andere Info, die brauchbar sein kann...&lt;br /&gt;
&lt;br /&gt;
=Weitere Links=&lt;br /&gt;
#[[Ardumower LP|Diagnostic]]&lt;/div&gt;</summary>
		<author><name>Deejay</name></author>	</entry>

	<entry>
		<id>https://wiki.ardumower.de/index.php?title=Fehlerbehebung&amp;diff=2809</id>
		<title>Fehlerbehebung</title>
		<link rel="alternate" type="text/html" href="https://wiki.ardumower.de/index.php?title=Fehlerbehebung&amp;diff=2809"/>
				<updated>2015-11-04T18:48:59Z</updated>
		
		<summary type="html">&lt;p&gt;Deejay: /* Serieller Monitor auf Android-App ausgeben */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
=Fehlersuche=&lt;br /&gt;
&lt;br /&gt;
==Fehlercodes==&lt;br /&gt;
Wenn dein Ardumower periodisch piepst (4 Töne - Pause), ist er in einem Fehler-Status. Um den genauen Fehler zu finden, kann man die serielle Konsole oder die APP ('pfodApp-&amp;gt;Error Counters') benutzen. mögliche Lösungsvorschläge für jeden Fehler werden nachfolgend gegeben. Detaillierte Angaben zu deinen Robotereinstellungen, siehe [http://wiki.ardumower.de/index.php?title=Ardumower_LP#Einstellungen Einstellungen].&lt;br /&gt;
&lt;br /&gt;
  ERR_MOTOR_LEFT          Fehler  linker Getriebemotor&lt;br /&gt;
                          * Überprüfe Motortreiber und linken Getriebemotor&lt;br /&gt;
                          * MC33926: stelle sicher, dass der SLEW Jumper nicht gesteckt ist&lt;br /&gt;
                          * beim Fahren: veringere 'Motor-Max-PWM' und 'Tracking-P' um EMF zu veringern&lt;br /&gt;
  ERR_MOTOR_RIGHT         Fehler rechter GetriebemotorRight gear motor error&lt;br /&gt;
                          * Überprüfe Motortreiber und rechten Getriebemotor&lt;br /&gt;
                          * MC33926: stelle sicher, dass der SLEW Jumper nicht gesteckt ist&lt;br /&gt;
                          * beim Fahren: veringere 'Motor-Max-PWM' und 'Tracking-P' um EMF zu veringern&lt;br /&gt;
  ERR_MOTOR_MOW           Mähmotor Fehler &lt;br /&gt;
                          * Überprüfe Motortreiber und Mähmotor&lt;br /&gt;
                          * MC33926: stelle sicher, dass der SLEW Jumper nicht gesteckt ist&lt;br /&gt;
                          * Veringere Motor-Max-Power, damit Überstrom früher erkannt wird&lt;br /&gt;
  ERR_MOW_SENSE           Mähmotor Überstrom&lt;br /&gt;
                          * Überprüfe Mähmotor-Treiber und Mähmotor&lt;br /&gt;
                          * Vergrößere Motor-Max-Power, damit Überstrom später erkannt wird&lt;br /&gt;
  ERR_IMU_COMM            IMU Kommunikationsfehler&lt;br /&gt;
                          * Überprüfe die Verbindung zum IMU-Modul&lt;br /&gt;
  ERR_IMU_CALIB           IMU Abgleich-Fehler&lt;br /&gt;
                          * Start [http://wiki.ardumower.de/index.php?title=Inertialsensor_-_IMU#Abgleich_.28letzte_Version.29 'IMU Abgleich'] (entweder über die Konsole oder über pfodApp-&amp;gt;Settings-&amp;gt;IMU)                     &lt;br /&gt;
  ERR_IMU_TILT            IMU Neigungsfehler&lt;br /&gt;
                          * Überprüfe IMU-Modul und Ausrichtung des Roboters&lt;br /&gt;
  ERR_RTC_COMM            RTC Kommunikationsfehler&lt;br /&gt;
                          * Überprüfe die Verbindung zum RTC-Modul, RTC-Batterie usw.&lt;br /&gt;
  ERR_RTC_DATA            RTC-Daten sind fehlerhaft&lt;br /&gt;
                          * stelle und speichere Datum und Zeit&lt;br /&gt;
  ERR_PERIMETER_TIMEOUT   Perimeter-Signal, Zeitüberschreitung &lt;br /&gt;
                          * Überprüfe Perimeter-Sender, Schleife usw.&lt;br /&gt;
                          * Überprüfe die Polarität der Perimeterspule&lt;br /&gt;
                          * veringere 'Perimeter-smag', damit die Auszeit größer wird&lt;br /&gt;
                          * Erhöhe 'Perimeter-timeout-seconds', damit die Auszeit größer wird&lt;br /&gt;
                          * Überprüfe, ob das [http://wiki.ardumower.de/index.php?title=Perimeter-Schleife#Signal_und_Rauschmessungen Signal-Rausch-Verhältnis] größer 1 ist.&lt;br /&gt;
  ERR_TRACKING            Perimeter-Folge-Fehler &lt;br /&gt;
                          * Überprüfe Perimeter-Sender, Schleife usw.&lt;br /&gt;
                          * Erhöhe 'Perimeter-tracking-timeout', damit die Auszeit größer wird&lt;br /&gt;
  ERR_ODOMETRY_LEFT       Odometrie-Fehler linker Motor &lt;br /&gt;
                          * Überprüfe das linke Odometrie-Kabel&lt;br /&gt;
                          * Überprüfe die Drehrichtung des linken Motors &lt;br /&gt;
  ERR_ODOMETRY_RIGHT      Odometrie-Fehler rechter Motor &lt;br /&gt;
                          * Überprüfe das rechte Odometie-Kabel&lt;br /&gt;
                          * Überprüfe die Drehrichtung des rechten Motors&lt;br /&gt;
  ERR_BATTERY             Akku-Fehler &lt;br /&gt;
                          * Überprüfe Akku-Verbindung&lt;br /&gt;
  ERR_CHARGER             Ladefehler &lt;br /&gt;
                          * Überprüfe Verbindung zum Ladegerät &lt;br /&gt;
  ERR_GPS_COMM            GPS Kommunikationsfehler &lt;br /&gt;
                          * Überprüfe GPS-Kabel&lt;br /&gt;
  ERR_GPS_DATA            GPS Datenfehler &lt;br /&gt;
                          * Überprüfe GPS-Antenne und -Kabel&lt;br /&gt;
  ERR_ADC_CALIB           ADC Abgleich-Fehler&lt;br /&gt;
                          * Starte 'ADC calibration' (entweder über Konsole oder pfodApp-&amp;gt;ADC calibration)&lt;br /&gt;
  ERR_EEPROM_DATA         EEPROM Datenfehler &lt;br /&gt;
                          * Speichere Benutzer-Einstellungen (entweder über Konsole oder pfodApp-&amp;gt;Settings-Save)&lt;br /&gt;
&lt;br /&gt;
== Serieller Monitor auf Android-App ausgeben ==&lt;br /&gt;
Für den mobilen Einsatz kann man den seriellen Monitor auch auf einem Android-Smartphone oder Android-Tablett ausgeben. &lt;br /&gt;
&lt;br /&gt;
* Android-App &amp;quot;Simple Serial Monitor&amp;quot; von Bernard Bekker aus dem Playstore herunterladen&lt;br /&gt;
* Smartphone oder Tablett mit der OTG-Funktion (Bereitstellung eines USB-Host)&lt;br /&gt;
* passendes OTG-Kabel&lt;br /&gt;
* USB-Kabel&lt;br /&gt;
&lt;br /&gt;
Die USB-Schnittstelle des Arduino Mega mit dem USB-Stecker des OTG-Kabels verbinden und dann die Android-App &amp;quot;Simple Serial Monitor&amp;quot; aufrufen. Die Übertragungsgeschwindigkeit einstellen und den Button &amp;quot;Start&amp;quot; drücken.&lt;br /&gt;
&lt;br /&gt;
Damit steht ein vollwertiger serieller Monitor analog zur Arduino-IDE zur Verfügung. Es werden alle Systemmeldungen ausgegeben. Übder die Kommandozeile können die üblichen Befehle aufgerufen werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: SeriellerMonitor per OTG.jpg | Serieller Monitor&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Deaktiviere alle Pins, die nicht angeschlossen sind==&lt;br /&gt;
Stelle sicher, dass alle Pins und Eigenschaften die nicht angeschlossen sind (nicht verwendet werden), in der Roboter-Konfiguration deaktiviert sind. &lt;br /&gt;
&lt;br /&gt;
Beispiel: Wenn du die Odometrie-Pins nicht beschaltet hast, muss Odometrie in der Roboter-Konfiguration deaktiviert werden. (mower.cpp):&lt;br /&gt;
&lt;br /&gt;
 odometryUse       = 0;       // use odometry?&lt;br /&gt;
&lt;br /&gt;
== Probebetrieb ohne Mähmotor-Treiber ==&lt;br /&gt;
&lt;br /&gt;
Sofern man den Ardumower im Probebetrieb ohne Mähmotor-Treiber testen möchte, so ist der PIN &amp;quot;pinMotorMowFault&amp;quot; auf High zu setzen. Damit verschwindet die Fehlermeldung &amp;quot;Error: Motor mow fault&amp;quot; und der Mover kann getestet werden.&lt;br /&gt;
&lt;br /&gt;
==Drehen die Motoren richtig?==&lt;br /&gt;
Führe einen Motortestlauf aus. Gehe in die serielle Konsole (Arduino IDE: STRG+SHIFT+M, 19200 Baud) drücke 'd' und ENTER um ins Menü zu gelangen. Dann drücke '1' und ENTER. Es startet der Motortest.&lt;br /&gt;
&lt;br /&gt;
==Unerwartete Sensorauslösung==&lt;br /&gt;
Wenn dein Roboter etwas Unerwartetes tut, kann es an einem Sensor liegen, der fehlerhaft auslöst. Überprüfe das über die serielle Konsole:&lt;br /&gt;
&lt;br /&gt;
Starte die serielle Konsole (Arduino IDE: CTRL+SHIFT+M, 19200 Baud), und schalte den Roboter ein. Jedes Mal, wenn ein Sensor auslöst, wird der Zähler dieses Sensors erhöht. Siehe Beschreibung der Sensoren weiter unten.&lt;br /&gt;
Wenn sich also der Roboter nicht so verhält, wie er soll, dann schau dir die Sensor-Zähler an und stelle fest, welcher Zähler hochzählt, um das Problem zu lokalisieren.&lt;br /&gt;
&lt;br /&gt;
==Einige Sensoren lösen nicht aus?==&lt;br /&gt;
...&lt;br /&gt;
==Keine Verbindung über Bluetooth==&lt;br /&gt;
&lt;br /&gt;
* Stelle sicher, dass die Baudrate des BT-Modules richtig eingestellt ist (verwende die Ardumower Konsole) - Aktiviere den      Programmier-Modus des BT-Modules und stelle die Baudrate ein [[Bluetooth und App|Bluetooth &amp;amp; App]].&lt;br /&gt;
* Stelle sicher, das das BT-Modul mit dem Handy &amp;quot;gepaart&amp;quot; ist&lt;br /&gt;
* Überprüfe, dass der Arduino Mega nicht über USB mit Strom versorgt wird.&lt;br /&gt;
&lt;br /&gt;
=Konsolen-Ausgabe=&lt;br /&gt;
&lt;br /&gt;
Beim Start des Roboters wird über die serielle Konsole beispielsweise folgendes ausgegeben:&lt;br /&gt;
  START &lt;br /&gt;
  Ardumower rXXXX&lt;br /&gt;
  press...&lt;br /&gt;
    d zum Menü&lt;br /&gt;
    v um Konsolenausgabe zu ändern (Sensor-Zähler, Werte, Perimeter usw.)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 t     0 l177 v0 FORW spd   33   33    0 sen    0    0    0 bum    0    0 dro    0    0 son   0 yaw   0 pit   0 rol   0 bat 20.8 chg 21.7  0.0 imu  0 adc  0 Ardumower&lt;br /&gt;
 t     1 l177 v0 FORW spd   33   33    0 sen    0    0    0 bum    0    0 dro    0    0 son   0 yaw   0 pit   0 rol   0 bat 20.8 chg 21.7  0.0 imu  0 adc  0 Ardumower&lt;br /&gt;
 t     3 l177 v0 FORW spd   33   33    0 sen    0    0    0 bum    0    0 dro    0    0 son   0 yaw   0 pit   0 rol   0 bat 20.8 chg 21.7  0.0 imu  0 adc  0 Ardumower&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Wenn ein Sensor auslöst, wird sein Zähler erhöht. &lt;br /&gt;
Beispiel (Mähmotor-Überstromsensor löst aus):&lt;br /&gt;
&lt;br /&gt;
 t     4 l177 v0 FORW spd   33   33    0 sen    0    0    0 bum    0    0 dro    0    0 son   0 yaw   0 pit   0 rol   0 bat 20.8 chg 21.7  0.0 imu  0 adc  0 Ardumower&lt;br /&gt;
 t     5 l177 v0 REV  spd  -26  -26    0 sen    0    0    1 bum    0    0 dro    0    0 son   0 yaw   0 pit   0 rol   0 bat 20.8 chg 21.7  0.0 imu  0 adc  1 Ardumower&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Hier ist eine  Beschreibung jeder Spalte:&lt;br /&gt;
&lt;br /&gt;
 t - Zeit des akt. Maschinenzustands (ms)&lt;br /&gt;
 l - Programmschleifen-Durchläufe/sek &lt;br /&gt;
 v - Anzeige-Modus des ausgewählten Sensors (0 = Zähler / 1 = Sensorwerte ​​/ 2 = Sensorwerte​​) &lt;br /&gt;
 - aktueller Status (FORW, REV, ROLL usw.) &lt;br /&gt;
 - Nachhause-Fahrt? (1/0) &lt;br /&gt;
 spd - Steuerung / Drehzahl der Motoren: links (PWM), rechts (PWM), Mähmotor (speed) &lt;br /&gt;
 sen - Motor-Überstromzähler:  links, rechts, Mähmotor &lt;br /&gt;
 bum - Bumperzähler: links, rechts &lt;br /&gt;
 son - Ultraschall- Distanz-Unterschreitung: Zähler &lt;br /&gt;
 pit, roll - inclination (berechnet mit Beschleunigungssensor) &lt;br /&gt;
 yaw - Kompass-Kurs&lt;br /&gt;
 bat - Akkuspannung&lt;br /&gt;
 chg - Ladespannung&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''---Befehle---&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
 'd': Testmenü, Abgleich IMU, Bluetooth&lt;br /&gt;
 'v': Anzeigemodus(zeigt Werte oder Zähler&lt;br /&gt;
 'h': Fahr zur Ladestation&lt;br /&gt;
 'p': Schleifenfahrt&lt;br /&gt;
 'l': simuliert linken Bumper&lt;br /&gt;
 'r': simuliert rechten Bumper&lt;br /&gt;
 's': simuliert Rasensensor&lt;br /&gt;
 'm': schaltet Mähmotor&lt;br /&gt;
 'c': simuliert Laden&lt;br /&gt;
 '+': drehen 90 Grad&lt;br /&gt;
 '-': drehen 90 Grad &lt;br /&gt;
 '3': aktiviert Fernsteuerung&lt;br /&gt;
 '0': Aus&lt;br /&gt;
 '1': Automode, Mähmotor an&lt;br /&gt;
&lt;br /&gt;
=Wie melde ich einen Programmfehler/eine neue Eigenschaft/neuen Programmcode=&lt;br /&gt;
Klicke auf [https://github.com/Ardumower/ardumower/issues/new?title=Error+XYZ+%2F+Fehler+XYZ&amp;amp;body=Please+always+fill-in+below%2FBitte+unbedingt+ausf%C3%BCllen%21%0D%0A%0D%0A--English--%0D%0AYour+battery+voltage+%2812v%2C+24v%29%3A+24v%0D%0AYour+gear+motor+%28Ardumower%2C+other%29%3A+Ardumower+motor%0D%0AYour+Ardumower+software+version+%28pfodApp-%3EInfo%29%3A+890%0D%0AYour+Arduino+%28Mega+or+Due%29%3A+Mega+2560%0D%0AYour+PCB+version+%28printed+on+PCB%29%3A+0.5%0D%0AYour+PCB+mounted+parts+configuration+%28default+or+custom+and+how%29%3A+default%0D%0AOdometry+sensor+%28yes%2Fno%29%3F+yes%0D%0AArdumower+chassis+%28yes%2Fno%29%3F+yes%0D%0AExact+error+description%3A+...+%0D%0A%0D%0A--Deutsch--%0D%0ADeine+Akku-Spannung+%2812v%2C+24v%29%3A+24v%0D%0ADein+Antriebsmotor+%28Ardumower%2C+anderer%29%3A+Ardumower+Motor%0D%0ADeine+Ardumower-Software+Version%3A+%28pfodApp-%3EInfo%29%3A+890%0D%0ADeine+PCB-Version+%28siehe+Aufdruck%29%3A+0.5%0D%0ADein+Arduino+%28Mega+oder+Due%29%3A+Mega+2560%0D%0ADeine+PCB+Bauteilbest%C3%BCckung+%28Standard+oder+abweichend+und+wie%29%3A+Standard%0D%0AOdometrie+sensor+%28ja%2Fnein%29%3F+ja%0D%0AArdumower+Chassis+%28ja%2Fnein%29%3F+ja%0D%0AGenaue+Fehlerbeschreibung%3A+...%0D%0A  'this link'] und erzeuge ein neues Thema - bitte teile uns folgendes mit:&lt;br /&gt;
&lt;br /&gt;
    Deine Plattform (Arduino Mega 2560, Arduino Due)&lt;br /&gt;
    Deine Arduino IDE-Version (der letzte Programmcode erfordert 1.6.3)&lt;br /&gt;
    Dein genaues Betriebssystem (Windows 8, Linux usw.)&lt;br /&gt;
    Deine Ardumower-Programmversion  (eine Liste der Veröffentlichungen siehst du hier https://github.com/Ardumower/ardumower/releases)&lt;br /&gt;
    Jede andere Info, die brauchbar sein kann...&lt;br /&gt;
&lt;br /&gt;
=Weitere Links=&lt;br /&gt;
#[[Ardumower LP|Diagnostic]]&lt;/div&gt;</summary>
		<author><name>Deejay</name></author>	</entry>

	<entry>
		<id>https://wiki.ardumower.de/index.php?title=Fehlerbehebung&amp;diff=2808</id>
		<title>Fehlerbehebung</title>
		<link rel="alternate" type="text/html" href="https://wiki.ardumower.de/index.php?title=Fehlerbehebung&amp;diff=2808"/>
				<updated>2015-11-04T18:48:46Z</updated>
		
		<summary type="html">&lt;p&gt;Deejay: /* Deaktiviere alle Pins, die nicht angeschlossen sind */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
=Fehlersuche=&lt;br /&gt;
&lt;br /&gt;
==Fehlercodes==&lt;br /&gt;
Wenn dein Ardumower periodisch piepst (4 Töne - Pause), ist er in einem Fehler-Status. Um den genauen Fehler zu finden, kann man die serielle Konsole oder die APP ('pfodApp-&amp;gt;Error Counters') benutzen. mögliche Lösungsvorschläge für jeden Fehler werden nachfolgend gegeben. Detaillierte Angaben zu deinen Robotereinstellungen, siehe [http://wiki.ardumower.de/index.php?title=Ardumower_LP#Einstellungen Einstellungen].&lt;br /&gt;
&lt;br /&gt;
  ERR_MOTOR_LEFT          Fehler  linker Getriebemotor&lt;br /&gt;
                          * Überprüfe Motortreiber und linken Getriebemotor&lt;br /&gt;
                          * MC33926: stelle sicher, dass der SLEW Jumper nicht gesteckt ist&lt;br /&gt;
                          * beim Fahren: veringere 'Motor-Max-PWM' und 'Tracking-P' um EMF zu veringern&lt;br /&gt;
  ERR_MOTOR_RIGHT         Fehler rechter GetriebemotorRight gear motor error&lt;br /&gt;
                          * Überprüfe Motortreiber und rechten Getriebemotor&lt;br /&gt;
                          * MC33926: stelle sicher, dass der SLEW Jumper nicht gesteckt ist&lt;br /&gt;
                          * beim Fahren: veringere 'Motor-Max-PWM' und 'Tracking-P' um EMF zu veringern&lt;br /&gt;
  ERR_MOTOR_MOW           Mähmotor Fehler &lt;br /&gt;
                          * Überprüfe Motortreiber und Mähmotor&lt;br /&gt;
                          * MC33926: stelle sicher, dass der SLEW Jumper nicht gesteckt ist&lt;br /&gt;
                          * Veringere Motor-Max-Power, damit Überstrom früher erkannt wird&lt;br /&gt;
  ERR_MOW_SENSE           Mähmotor Überstrom&lt;br /&gt;
                          * Überprüfe Mähmotor-Treiber und Mähmotor&lt;br /&gt;
                          * Vergrößere Motor-Max-Power, damit Überstrom später erkannt wird&lt;br /&gt;
  ERR_IMU_COMM            IMU Kommunikationsfehler&lt;br /&gt;
                          * Überprüfe die Verbindung zum IMU-Modul&lt;br /&gt;
  ERR_IMU_CALIB           IMU Abgleich-Fehler&lt;br /&gt;
                          * Start [http://wiki.ardumower.de/index.php?title=Inertialsensor_-_IMU#Abgleich_.28letzte_Version.29 'IMU Abgleich'] (entweder über die Konsole oder über pfodApp-&amp;gt;Settings-&amp;gt;IMU)                     &lt;br /&gt;
  ERR_IMU_TILT            IMU Neigungsfehler&lt;br /&gt;
                          * Überprüfe IMU-Modul und Ausrichtung des Roboters&lt;br /&gt;
  ERR_RTC_COMM            RTC Kommunikationsfehler&lt;br /&gt;
                          * Überprüfe die Verbindung zum RTC-Modul, RTC-Batterie usw.&lt;br /&gt;
  ERR_RTC_DATA            RTC-Daten sind fehlerhaft&lt;br /&gt;
                          * stelle und speichere Datum und Zeit&lt;br /&gt;
  ERR_PERIMETER_TIMEOUT   Perimeter-Signal, Zeitüberschreitung &lt;br /&gt;
                          * Überprüfe Perimeter-Sender, Schleife usw.&lt;br /&gt;
                          * Überprüfe die Polarität der Perimeterspule&lt;br /&gt;
                          * veringere 'Perimeter-smag', damit die Auszeit größer wird&lt;br /&gt;
                          * Erhöhe 'Perimeter-timeout-seconds', damit die Auszeit größer wird&lt;br /&gt;
                          * Überprüfe, ob das [http://wiki.ardumower.de/index.php?title=Perimeter-Schleife#Signal_und_Rauschmessungen Signal-Rausch-Verhältnis] größer 1 ist.&lt;br /&gt;
  ERR_TRACKING            Perimeter-Folge-Fehler &lt;br /&gt;
                          * Überprüfe Perimeter-Sender, Schleife usw.&lt;br /&gt;
                          * Erhöhe 'Perimeter-tracking-timeout', damit die Auszeit größer wird&lt;br /&gt;
  ERR_ODOMETRY_LEFT       Odometrie-Fehler linker Motor &lt;br /&gt;
                          * Überprüfe das linke Odometrie-Kabel&lt;br /&gt;
                          * Überprüfe die Drehrichtung des linken Motors &lt;br /&gt;
  ERR_ODOMETRY_RIGHT      Odometrie-Fehler rechter Motor &lt;br /&gt;
                          * Überprüfe das rechte Odometie-Kabel&lt;br /&gt;
                          * Überprüfe die Drehrichtung des rechten Motors&lt;br /&gt;
  ERR_BATTERY             Akku-Fehler &lt;br /&gt;
                          * Überprüfe Akku-Verbindung&lt;br /&gt;
  ERR_CHARGER             Ladefehler &lt;br /&gt;
                          * Überprüfe Verbindung zum Ladegerät &lt;br /&gt;
  ERR_GPS_COMM            GPS Kommunikationsfehler &lt;br /&gt;
                          * Überprüfe GPS-Kabel&lt;br /&gt;
  ERR_GPS_DATA            GPS Datenfehler &lt;br /&gt;
                          * Überprüfe GPS-Antenne und -Kabel&lt;br /&gt;
  ERR_ADC_CALIB           ADC Abgleich-Fehler&lt;br /&gt;
                          * Starte 'ADC calibration' (entweder über Konsole oder pfodApp-&amp;gt;ADC calibration)&lt;br /&gt;
  ERR_EEPROM_DATA         EEPROM Datenfehler &lt;br /&gt;
                          * Speichere Benutzer-Einstellungen (entweder über Konsole oder pfodApp-&amp;gt;Settings-Save)&lt;br /&gt;
&lt;br /&gt;
== Serieller Monitor auf Android-App ausgeben ==&lt;br /&gt;
Für den mobilen Einsatz kann man den seriellen Monitor auch auf einem Android-Smartphone oder Android-Tablett ausgeben. &lt;br /&gt;
&lt;br /&gt;
* Android-App &amp;quot;Simple Serial Monitor&amp;quot; von Bernard Bekker aus dem Playstore herunterladen&lt;br /&gt;
* Smartphone oder Tablett mit der OTG-Funktion (Bereitstellung eines USB-Host)&lt;br /&gt;
* passendes OTG-Kabel&lt;br /&gt;
* USB-Kabel&lt;br /&gt;
&lt;br /&gt;
Die USB-Schnittstelle des Arduino Mega mit dem USB-Stecker des OTG-Kabels verbinden und dann die Android-App &amp;quot;Simple Serial Monitor&amp;quot; aufrufen. Die Übertragungsgeschwindigkeit einstellen und den Button &amp;quot;Start&amp;quot; drücken.&lt;br /&gt;
&lt;br /&gt;
Damit steht ein vollwertiger serieller Monitor analog zur Arduino-IDE zur Verfügung. Es werden alle Systemmeldungen ausgegeben. Übder die Kommandozeile können die üblichen Befehle aufgerufen werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: SeriellerMonitor per OTG.jpg | Serieller Monitor&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Deaktiviere alle Pins, die nicht angeschlossen sind==&lt;br /&gt;
Stelle sicher, dass alle Pins und Eigenschaften die nicht angeschlossen sind (nicht verwendet werden), in der Roboter-Konfiguration deaktiviert sind. &lt;br /&gt;
&lt;br /&gt;
Beispiel: Wenn du die Odometrie-Pins nicht beschaltet hast, muss Odometrie in der Roboter-Konfiguration deaktiviert werden. (mower.cpp):&lt;br /&gt;
&lt;br /&gt;
 odometryUse       = 0;       // use odometry?&lt;br /&gt;
&lt;br /&gt;
== Probebetrieb ohne Mähmotor-Treiber ==&lt;br /&gt;
&lt;br /&gt;
Sofern man den Ardumower im Probebetrieb ohne Mähmotor-Treiber testen möchte, so ist der PIN &amp;quot;pinMotorMowFault&amp;quot; auf High zu setzen. Damit verschwindet die Fehlermeldung &amp;quot;Error: Motor mow fault&amp;quot; und der Mover kann getestet werden.&lt;br /&gt;
&lt;br /&gt;
==Drehen die Motoren richtig?==&lt;br /&gt;
Führe einen Motortestlauf aus. Gehe in die serielle Konsole (Arduino IDE: STRG+SHIFT+M, 19200 Baud) drücke 'd' und ENTER um ins Menü zu gelangen. Dann drücke '1' und ENTER. Es startet der Motortest.&lt;br /&gt;
&lt;br /&gt;
==Unerwartete Sensorauslösung==&lt;br /&gt;
Wenn dein Roboter etwas Unerwartetes tut, kann es an einem Sensor liegen, der fehlerhaft auslöst. Überprüfe das über die serielle Konsole:&lt;br /&gt;
&lt;br /&gt;
Starte die serielle Konsole (Arduino IDE: CTRL+SHIFT+M, 19200 Baud), und schalte den Roboter ein. Jedes Mal, wenn ein Sensor auslöst, wird der Zähler dieses Sensors erhöht. Siehe Beschreibung der Sensoren weiter unten.&lt;br /&gt;
Wenn sich also der Roboter nicht so verhält, wie er soll, dann schau dir die Sensor-Zähler an und stelle fest, welcher Zähler hochzählt, um das Problem zu lokalisieren.&lt;br /&gt;
&lt;br /&gt;
==Einige Sensoren lösen nicht aus?==&lt;br /&gt;
...&lt;br /&gt;
==Keine Verbindung über Bluetooth==&lt;br /&gt;
&lt;br /&gt;
* Stelle sicher, dass die Baudrate des BT-Modules richtig eingestellt ist (verwende die Ardumower Konsole) - Aktiviere den      Programmier-Modus des BT-Modules und stelle die Baudrate ein [[Bluetooth und App|Bluetooth &amp;amp; App]].&lt;br /&gt;
* Stelle sicher, das das BT-Modul mit dem Handy &amp;quot;gepaart&amp;quot; ist&lt;br /&gt;
* Überprüfe, dass der Arduino Mega nicht über USB mit Strom versorgt wird.&lt;br /&gt;
&lt;br /&gt;
=Konsolen-Ausgabe=&lt;br /&gt;
&lt;br /&gt;
Beim Start des Roboters wird über die serielle Konsole beispielsweise folgendes ausgegeben:&lt;br /&gt;
  START &lt;br /&gt;
  Ardumower rXXXX&lt;br /&gt;
  press...&lt;br /&gt;
    d zum Menü&lt;br /&gt;
    v um Konsolenausgabe zu ändern (Sensor-Zähler, Werte, Perimeter usw.)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 t     0 l177 v0 FORW spd   33   33    0 sen    0    0    0 bum    0    0 dro    0    0 son   0 yaw   0 pit   0 rol   0 bat 20.8 chg 21.7  0.0 imu  0 adc  0 Ardumower&lt;br /&gt;
 t     1 l177 v0 FORW spd   33   33    0 sen    0    0    0 bum    0    0 dro    0    0 son   0 yaw   0 pit   0 rol   0 bat 20.8 chg 21.7  0.0 imu  0 adc  0 Ardumower&lt;br /&gt;
 t     3 l177 v0 FORW spd   33   33    0 sen    0    0    0 bum    0    0 dro    0    0 son   0 yaw   0 pit   0 rol   0 bat 20.8 chg 21.7  0.0 imu  0 adc  0 Ardumower&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Wenn ein Sensor auslöst, wird sein Zähler erhöht. &lt;br /&gt;
Beispiel (Mähmotor-Überstromsensor löst aus):&lt;br /&gt;
&lt;br /&gt;
 t     4 l177 v0 FORW spd   33   33    0 sen    0    0    0 bum    0    0 dro    0    0 son   0 yaw   0 pit   0 rol   0 bat 20.8 chg 21.7  0.0 imu  0 adc  0 Ardumower&lt;br /&gt;
 t     5 l177 v0 REV  spd  -26  -26    0 sen    0    0    1 bum    0    0 dro    0    0 son   0 yaw   0 pit   0 rol   0 bat 20.8 chg 21.7  0.0 imu  0 adc  1 Ardumower&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Hier ist eine  Beschreibung jeder Spalte:&lt;br /&gt;
&lt;br /&gt;
 t - Zeit des akt. Maschinenzustands (ms)&lt;br /&gt;
 l - Programmschleifen-Durchläufe/sek &lt;br /&gt;
 v - Anzeige-Modus des ausgewählten Sensors (0 = Zähler / 1 = Sensorwerte ​​/ 2 = Sensorwerte​​) &lt;br /&gt;
 - aktueller Status (FORW, REV, ROLL usw.) &lt;br /&gt;
 - Nachhause-Fahrt? (1/0) &lt;br /&gt;
 spd - Steuerung / Drehzahl der Motoren: links (PWM), rechts (PWM), Mähmotor (speed) &lt;br /&gt;
 sen - Motor-Überstromzähler:  links, rechts, Mähmotor &lt;br /&gt;
 bum - Bumperzähler: links, rechts &lt;br /&gt;
 son - Ultraschall- Distanz-Unterschreitung: Zähler &lt;br /&gt;
 pit, roll - inclination (berechnet mit Beschleunigungssensor) &lt;br /&gt;
 yaw - Kompass-Kurs&lt;br /&gt;
 bat - Akkuspannung&lt;br /&gt;
 chg - Ladespannung&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''---Befehle---&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
 'd': Testmenü, Abgleich IMU, Bluetooth&lt;br /&gt;
 'v': Anzeigemodus(zeigt Werte oder Zähler&lt;br /&gt;
 'h': Fahr zur Ladestation&lt;br /&gt;
 'p': Schleifenfahrt&lt;br /&gt;
 'l': simuliert linken Bumper&lt;br /&gt;
 'r': simuliert rechten Bumper&lt;br /&gt;
 's': simuliert Rasensensor&lt;br /&gt;
 'm': schaltet Mähmotor&lt;br /&gt;
 'c': simuliert Laden&lt;br /&gt;
 '+': drehen 90 Grad&lt;br /&gt;
 '-': drehen 90 Grad &lt;br /&gt;
 '3': aktiviert Fernsteuerung&lt;br /&gt;
 '0': Aus&lt;br /&gt;
 '1': Automode, Mähmotor an&lt;br /&gt;
&lt;br /&gt;
=Wie melde ich einen Programmfehler/eine neue Eigenschaft/neuen Programmcode=&lt;br /&gt;
Klicke auf [https://github.com/Ardumower/ardumower/issues/new?title=Error+XYZ+%2F+Fehler+XYZ&amp;amp;body=Please+always+fill-in+below%2FBitte+unbedingt+ausf%C3%BCllen%21%0D%0A%0D%0A--English--%0D%0AYour+battery+voltage+%2812v%2C+24v%29%3A+24v%0D%0AYour+gear+motor+%28Ardumower%2C+other%29%3A+Ardumower+motor%0D%0AYour+Ardumower+software+version+%28pfodApp-%3EInfo%29%3A+890%0D%0AYour+Arduino+%28Mega+or+Due%29%3A+Mega+2560%0D%0AYour+PCB+version+%28printed+on+PCB%29%3A+0.5%0D%0AYour+PCB+mounted+parts+configuration+%28default+or+custom+and+how%29%3A+default%0D%0AOdometry+sensor+%28yes%2Fno%29%3F+yes%0D%0AArdumower+chassis+%28yes%2Fno%29%3F+yes%0D%0AExact+error+description%3A+...+%0D%0A%0D%0A--Deutsch--%0D%0ADeine+Akku-Spannung+%2812v%2C+24v%29%3A+24v%0D%0ADein+Antriebsmotor+%28Ardumower%2C+anderer%29%3A+Ardumower+Motor%0D%0ADeine+Ardumower-Software+Version%3A+%28pfodApp-%3EInfo%29%3A+890%0D%0ADeine+PCB-Version+%28siehe+Aufdruck%29%3A+0.5%0D%0ADein+Arduino+%28Mega+oder+Due%29%3A+Mega+2560%0D%0ADeine+PCB+Bauteilbest%C3%BCckung+%28Standard+oder+abweichend+und+wie%29%3A+Standard%0D%0AOdometrie+sensor+%28ja%2Fnein%29%3F+ja%0D%0AArdumower+Chassis+%28ja%2Fnein%29%3F+ja%0D%0AGenaue+Fehlerbeschreibung%3A+...%0D%0A  'this link'] und erzeuge ein neues Thema - bitte teile uns folgendes mit:&lt;br /&gt;
&lt;br /&gt;
    Deine Plattform (Arduino Mega 2560, Arduino Due)&lt;br /&gt;
    Deine Arduino IDE-Version (der letzte Programmcode erfordert 1.6.3)&lt;br /&gt;
    Dein genaues Betriebssystem (Windows 8, Linux usw.)&lt;br /&gt;
    Deine Ardumower-Programmversion  (eine Liste der Veröffentlichungen siehst du hier https://github.com/Ardumower/ardumower/releases)&lt;br /&gt;
    Jede andere Info, die brauchbar sein kann...&lt;br /&gt;
&lt;br /&gt;
=Weitere Links=&lt;br /&gt;
#[[Ardumower LP|Diagnostic]]&lt;/div&gt;</summary>
		<author><name>Deejay</name></author>	</entry>

	<entry>
		<id>https://wiki.ardumower.de/index.php?title=Fehlerbehebung&amp;diff=2807</id>
		<title>Fehlerbehebung</title>
		<link rel="alternate" type="text/html" href="https://wiki.ardumower.de/index.php?title=Fehlerbehebung&amp;diff=2807"/>
				<updated>2015-11-04T18:46:57Z</updated>
		
		<summary type="html">&lt;p&gt;Deejay: /* Srieller Monitor per OTG auf Android-App ausgeben */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
=Fehlersuche=&lt;br /&gt;
&lt;br /&gt;
==Fehlercodes==&lt;br /&gt;
Wenn dein Ardumower periodisch piepst (4 Töne - Pause), ist er in einem Fehler-Status. Um den genauen Fehler zu finden, kann man die serielle Konsole oder die APP ('pfodApp-&amp;gt;Error Counters') benutzen. mögliche Lösungsvorschläge für jeden Fehler werden nachfolgend gegeben. Detaillierte Angaben zu deinen Robotereinstellungen, siehe [http://wiki.ardumower.de/index.php?title=Ardumower_LP#Einstellungen Einstellungen].&lt;br /&gt;
&lt;br /&gt;
  ERR_MOTOR_LEFT          Fehler  linker Getriebemotor&lt;br /&gt;
                          * Überprüfe Motortreiber und linken Getriebemotor&lt;br /&gt;
                          * MC33926: stelle sicher, dass der SLEW Jumper nicht gesteckt ist&lt;br /&gt;
                          * beim Fahren: veringere 'Motor-Max-PWM' und 'Tracking-P' um EMF zu veringern&lt;br /&gt;
  ERR_MOTOR_RIGHT         Fehler rechter GetriebemotorRight gear motor error&lt;br /&gt;
                          * Überprüfe Motortreiber und rechten Getriebemotor&lt;br /&gt;
                          * MC33926: stelle sicher, dass der SLEW Jumper nicht gesteckt ist&lt;br /&gt;
                          * beim Fahren: veringere 'Motor-Max-PWM' und 'Tracking-P' um EMF zu veringern&lt;br /&gt;
  ERR_MOTOR_MOW           Mähmotor Fehler &lt;br /&gt;
                          * Überprüfe Motortreiber und Mähmotor&lt;br /&gt;
                          * MC33926: stelle sicher, dass der SLEW Jumper nicht gesteckt ist&lt;br /&gt;
                          * Veringere Motor-Max-Power, damit Überstrom früher erkannt wird&lt;br /&gt;
  ERR_MOW_SENSE           Mähmotor Überstrom&lt;br /&gt;
                          * Überprüfe Mähmotor-Treiber und Mähmotor&lt;br /&gt;
                          * Vergrößere Motor-Max-Power, damit Überstrom später erkannt wird&lt;br /&gt;
  ERR_IMU_COMM            IMU Kommunikationsfehler&lt;br /&gt;
                          * Überprüfe die Verbindung zum IMU-Modul&lt;br /&gt;
  ERR_IMU_CALIB           IMU Abgleich-Fehler&lt;br /&gt;
                          * Start [http://wiki.ardumower.de/index.php?title=Inertialsensor_-_IMU#Abgleich_.28letzte_Version.29 'IMU Abgleich'] (entweder über die Konsole oder über pfodApp-&amp;gt;Settings-&amp;gt;IMU)                     &lt;br /&gt;
  ERR_IMU_TILT            IMU Neigungsfehler&lt;br /&gt;
                          * Überprüfe IMU-Modul und Ausrichtung des Roboters&lt;br /&gt;
  ERR_RTC_COMM            RTC Kommunikationsfehler&lt;br /&gt;
                          * Überprüfe die Verbindung zum RTC-Modul, RTC-Batterie usw.&lt;br /&gt;
  ERR_RTC_DATA            RTC-Daten sind fehlerhaft&lt;br /&gt;
                          * stelle und speichere Datum und Zeit&lt;br /&gt;
  ERR_PERIMETER_TIMEOUT   Perimeter-Signal, Zeitüberschreitung &lt;br /&gt;
                          * Überprüfe Perimeter-Sender, Schleife usw.&lt;br /&gt;
                          * Überprüfe die Polarität der Perimeterspule&lt;br /&gt;
                          * veringere 'Perimeter-smag', damit die Auszeit größer wird&lt;br /&gt;
                          * Erhöhe 'Perimeter-timeout-seconds', damit die Auszeit größer wird&lt;br /&gt;
                          * Überprüfe, ob das [http://wiki.ardumower.de/index.php?title=Perimeter-Schleife#Signal_und_Rauschmessungen Signal-Rausch-Verhältnis] größer 1 ist.&lt;br /&gt;
  ERR_TRACKING            Perimeter-Folge-Fehler &lt;br /&gt;
                          * Überprüfe Perimeter-Sender, Schleife usw.&lt;br /&gt;
                          * Erhöhe 'Perimeter-tracking-timeout', damit die Auszeit größer wird&lt;br /&gt;
  ERR_ODOMETRY_LEFT       Odometrie-Fehler linker Motor &lt;br /&gt;
                          * Überprüfe das linke Odometrie-Kabel&lt;br /&gt;
                          * Überprüfe die Drehrichtung des linken Motors &lt;br /&gt;
  ERR_ODOMETRY_RIGHT      Odometrie-Fehler rechter Motor &lt;br /&gt;
                          * Überprüfe das rechte Odometie-Kabel&lt;br /&gt;
                          * Überprüfe die Drehrichtung des rechten Motors&lt;br /&gt;
  ERR_BATTERY             Akku-Fehler &lt;br /&gt;
                          * Überprüfe Akku-Verbindung&lt;br /&gt;
  ERR_CHARGER             Ladefehler &lt;br /&gt;
                          * Überprüfe Verbindung zum Ladegerät &lt;br /&gt;
  ERR_GPS_COMM            GPS Kommunikationsfehler &lt;br /&gt;
                          * Überprüfe GPS-Kabel&lt;br /&gt;
  ERR_GPS_DATA            GPS Datenfehler &lt;br /&gt;
                          * Überprüfe GPS-Antenne und -Kabel&lt;br /&gt;
  ERR_ADC_CALIB           ADC Abgleich-Fehler&lt;br /&gt;
                          * Starte 'ADC calibration' (entweder über Konsole oder pfodApp-&amp;gt;ADC calibration)&lt;br /&gt;
  ERR_EEPROM_DATA         EEPROM Datenfehler &lt;br /&gt;
                          * Speichere Benutzer-Einstellungen (entweder über Konsole oder pfodApp-&amp;gt;Settings-Save)&lt;br /&gt;
&lt;br /&gt;
== Serieller Monitor auf Android-App ausgeben ==&lt;br /&gt;
Für den mobilen Einsatz kann man den seriellen Monitor auch auf einem Android-Smartphone oder Android-Tablett ausgeben. &lt;br /&gt;
&lt;br /&gt;
* Android-App &amp;quot;Simple Serial Monitor&amp;quot; von Bernard Bekker aus dem Playstore herunterladen&lt;br /&gt;
* Smartphone oder Tablett mit der OTG-Funktion (Bereitstellung eines USB-Host)&lt;br /&gt;
* passendes OTG-Kabel&lt;br /&gt;
* USB-Kabel&lt;br /&gt;
&lt;br /&gt;
Die USB-Schnittstelle des Arduino Mega mit dem USB-Stecker des OTG-Kabels verbinden und dann die Android-App &amp;quot;Simple Serial Monitor&amp;quot; aufrufen. Die Übertragungsgeschwindigkeit einstellen und den Button &amp;quot;Start&amp;quot; drücken.&lt;br /&gt;
&lt;br /&gt;
Damit steht ein vollwertiger serieller Monitor analog zur Arduino-IDE zur Verfügung. Es werden alle Systemmeldungen ausgegeben. Übder die Kommandozeile können die üblichen Befehle aufgerufen werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: SeriellerMonitor per OTG.jpg | Serieller Monitor&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Deaktiviere alle Pins, die nicht angeschlossen sind==&lt;br /&gt;
Stelle sicher, dass alle Pins und Eigenschaften die nicht angeschlossen sind (nicht verwendet werden), in der Roboter-Konfiguration deaktiviert sind. &lt;br /&gt;
&lt;br /&gt;
Beispiel: Wenn du die Odometrie-Pins nicht beschaltet hast, muss Odometrie in der Roboter-Konfiguration deaktiviert werden. (mower.cpp):&lt;br /&gt;
&lt;br /&gt;
 odometryUse       = 0;       // use odometry?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: SeriellerMonitor per OTG.jpg | Serieller Monitor&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Probebetrieb ohne Mähmotor-Treiber ==&lt;br /&gt;
&lt;br /&gt;
Sofern man den Ardumower im Probebetrieb ohne Mähmotor-Treiber testen möchte, so ist der PIN &amp;quot;pinMotorMowFault&amp;quot; auf High zu setzen. Damit verschwindet die Fehlermeldung &amp;quot;Error: Motor mow fault&amp;quot; und der Mover kann getestet werden.&lt;br /&gt;
&lt;br /&gt;
==Drehen die Motoren richtig?==&lt;br /&gt;
Führe einen Motortestlauf aus. Gehe in die serielle Konsole (Arduino IDE: STRG+SHIFT+M, 19200 Baud) drücke 'd' und ENTER um ins Menü zu gelangen. Dann drücke '1' und ENTER. Es startet der Motortest.&lt;br /&gt;
&lt;br /&gt;
==Unerwartete Sensorauslösung==&lt;br /&gt;
Wenn dein Roboter etwas Unerwartetes tut, kann es an einem Sensor liegen, der fehlerhaft auslöst. Überprüfe das über die serielle Konsole:&lt;br /&gt;
&lt;br /&gt;
Starte die serielle Konsole (Arduino IDE: CTRL+SHIFT+M, 19200 Baud), und schalte den Roboter ein. Jedes Mal, wenn ein Sensor auslöst, wird der Zähler dieses Sensors erhöht. Siehe Beschreibung der Sensoren weiter unten.&lt;br /&gt;
Wenn sich also der Roboter nicht so verhält, wie er soll, dann schau dir die Sensor-Zähler an und stelle fest, welcher Zähler hochzählt, um das Problem zu lokalisieren.&lt;br /&gt;
&lt;br /&gt;
==Einige Sensoren lösen nicht aus?==&lt;br /&gt;
...&lt;br /&gt;
==Keine Verbindung über Bluetooth==&lt;br /&gt;
&lt;br /&gt;
* Stelle sicher, dass die Baudrate des BT-Modules richtig eingestellt ist (verwende die Ardumower Konsole) - Aktiviere den      Programmier-Modus des BT-Modules und stelle die Baudrate ein [[Bluetooth und App|Bluetooth &amp;amp; App]].&lt;br /&gt;
* Stelle sicher, das das BT-Modul mit dem Handy &amp;quot;gepaart&amp;quot; ist&lt;br /&gt;
* Überprüfe, dass der Arduino Mega nicht über USB mit Strom versorgt wird.&lt;br /&gt;
&lt;br /&gt;
=Konsolen-Ausgabe=&lt;br /&gt;
&lt;br /&gt;
Beim Start des Roboters wird über die serielle Konsole beispielsweise folgendes ausgegeben:&lt;br /&gt;
  START &lt;br /&gt;
  Ardumower rXXXX&lt;br /&gt;
  press...&lt;br /&gt;
    d zum Menü&lt;br /&gt;
    v um Konsolenausgabe zu ändern (Sensor-Zähler, Werte, Perimeter usw.)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 t     0 l177 v0 FORW spd   33   33    0 sen    0    0    0 bum    0    0 dro    0    0 son   0 yaw   0 pit   0 rol   0 bat 20.8 chg 21.7  0.0 imu  0 adc  0 Ardumower&lt;br /&gt;
 t     1 l177 v0 FORW spd   33   33    0 sen    0    0    0 bum    0    0 dro    0    0 son   0 yaw   0 pit   0 rol   0 bat 20.8 chg 21.7  0.0 imu  0 adc  0 Ardumower&lt;br /&gt;
 t     3 l177 v0 FORW spd   33   33    0 sen    0    0    0 bum    0    0 dro    0    0 son   0 yaw   0 pit   0 rol   0 bat 20.8 chg 21.7  0.0 imu  0 adc  0 Ardumower&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Wenn ein Sensor auslöst, wird sein Zähler erhöht. &lt;br /&gt;
Beispiel (Mähmotor-Überstromsensor löst aus):&lt;br /&gt;
&lt;br /&gt;
 t     4 l177 v0 FORW spd   33   33    0 sen    0    0    0 bum    0    0 dro    0    0 son   0 yaw   0 pit   0 rol   0 bat 20.8 chg 21.7  0.0 imu  0 adc  0 Ardumower&lt;br /&gt;
 t     5 l177 v0 REV  spd  -26  -26    0 sen    0    0    1 bum    0    0 dro    0    0 son   0 yaw   0 pit   0 rol   0 bat 20.8 chg 21.7  0.0 imu  0 adc  1 Ardumower&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Hier ist eine  Beschreibung jeder Spalte:&lt;br /&gt;
&lt;br /&gt;
 t - Zeit des akt. Maschinenzustands (ms)&lt;br /&gt;
 l - Programmschleifen-Durchläufe/sek &lt;br /&gt;
 v - Anzeige-Modus des ausgewählten Sensors (0 = Zähler / 1 = Sensorwerte ​​/ 2 = Sensorwerte​​) &lt;br /&gt;
 - aktueller Status (FORW, REV, ROLL usw.) &lt;br /&gt;
 - Nachhause-Fahrt? (1/0) &lt;br /&gt;
 spd - Steuerung / Drehzahl der Motoren: links (PWM), rechts (PWM), Mähmotor (speed) &lt;br /&gt;
 sen - Motor-Überstromzähler:  links, rechts, Mähmotor &lt;br /&gt;
 bum - Bumperzähler: links, rechts &lt;br /&gt;
 son - Ultraschall- Distanz-Unterschreitung: Zähler &lt;br /&gt;
 pit, roll - inclination (berechnet mit Beschleunigungssensor) &lt;br /&gt;
 yaw - Kompass-Kurs&lt;br /&gt;
 bat - Akkuspannung&lt;br /&gt;
 chg - Ladespannung&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''---Befehle---&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
 'd': Testmenü, Abgleich IMU, Bluetooth&lt;br /&gt;
 'v': Anzeigemodus(zeigt Werte oder Zähler&lt;br /&gt;
 'h': Fahr zur Ladestation&lt;br /&gt;
 'p': Schleifenfahrt&lt;br /&gt;
 'l': simuliert linken Bumper&lt;br /&gt;
 'r': simuliert rechten Bumper&lt;br /&gt;
 's': simuliert Rasensensor&lt;br /&gt;
 'm': schaltet Mähmotor&lt;br /&gt;
 'c': simuliert Laden&lt;br /&gt;
 '+': drehen 90 Grad&lt;br /&gt;
 '-': drehen 90 Grad &lt;br /&gt;
 '3': aktiviert Fernsteuerung&lt;br /&gt;
 '0': Aus&lt;br /&gt;
 '1': Automode, Mähmotor an&lt;br /&gt;
&lt;br /&gt;
=Wie melde ich einen Programmfehler/eine neue Eigenschaft/neuen Programmcode=&lt;br /&gt;
Klicke auf [https://github.com/Ardumower/ardumower/issues/new?title=Error+XYZ+%2F+Fehler+XYZ&amp;amp;body=Please+always+fill-in+below%2FBitte+unbedingt+ausf%C3%BCllen%21%0D%0A%0D%0A--English--%0D%0AYour+battery+voltage+%2812v%2C+24v%29%3A+24v%0D%0AYour+gear+motor+%28Ardumower%2C+other%29%3A+Ardumower+motor%0D%0AYour+Ardumower+software+version+%28pfodApp-%3EInfo%29%3A+890%0D%0AYour+Arduino+%28Mega+or+Due%29%3A+Mega+2560%0D%0AYour+PCB+version+%28printed+on+PCB%29%3A+0.5%0D%0AYour+PCB+mounted+parts+configuration+%28default+or+custom+and+how%29%3A+default%0D%0AOdometry+sensor+%28yes%2Fno%29%3F+yes%0D%0AArdumower+chassis+%28yes%2Fno%29%3F+yes%0D%0AExact+error+description%3A+...+%0D%0A%0D%0A--Deutsch--%0D%0ADeine+Akku-Spannung+%2812v%2C+24v%29%3A+24v%0D%0ADein+Antriebsmotor+%28Ardumower%2C+anderer%29%3A+Ardumower+Motor%0D%0ADeine+Ardumower-Software+Version%3A+%28pfodApp-%3EInfo%29%3A+890%0D%0ADeine+PCB-Version+%28siehe+Aufdruck%29%3A+0.5%0D%0ADein+Arduino+%28Mega+oder+Due%29%3A+Mega+2560%0D%0ADeine+PCB+Bauteilbest%C3%BCckung+%28Standard+oder+abweichend+und+wie%29%3A+Standard%0D%0AOdometrie+sensor+%28ja%2Fnein%29%3F+ja%0D%0AArdumower+Chassis+%28ja%2Fnein%29%3F+ja%0D%0AGenaue+Fehlerbeschreibung%3A+...%0D%0A  'this link'] und erzeuge ein neues Thema - bitte teile uns folgendes mit:&lt;br /&gt;
&lt;br /&gt;
    Deine Plattform (Arduino Mega 2560, Arduino Due)&lt;br /&gt;
    Deine Arduino IDE-Version (der letzte Programmcode erfordert 1.6.3)&lt;br /&gt;
    Dein genaues Betriebssystem (Windows 8, Linux usw.)&lt;br /&gt;
    Deine Ardumower-Programmversion  (eine Liste der Veröffentlichungen siehst du hier https://github.com/Ardumower/ardumower/releases)&lt;br /&gt;
    Jede andere Info, die brauchbar sein kann...&lt;br /&gt;
&lt;br /&gt;
=Weitere Links=&lt;br /&gt;
#[[Ardumower LP|Diagnostic]]&lt;/div&gt;</summary>
		<author><name>Deejay</name></author>	</entry>

	<entry>
		<id>https://wiki.ardumower.de/index.php?title=Datei:SeriellerMonitor_per_OTG.jpg&amp;diff=2806</id>
		<title>Datei:SeriellerMonitor per OTG.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.ardumower.de/index.php?title=Datei:SeriellerMonitor_per_OTG.jpg&amp;diff=2806"/>
				<updated>2015-11-04T18:29:38Z</updated>
		
		<summary type="html">&lt;p&gt;Deejay: Serieller Schniitstelle auf Android-Smartphone ausgeben&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Serieller Schniitstelle auf Android-Smartphone ausgeben&lt;/div&gt;</summary>
		<author><name>Deejay</name></author>	</entry>

	<entry>
		<id>https://wiki.ardumower.de/index.php?title=Perimeter-Schleife&amp;diff=2780</id>
		<title>Perimeter-Schleife</title>
		<link rel="alternate" type="text/html" href="https://wiki.ardumower.de/index.php?title=Perimeter-Schleife&amp;diff=2780"/>
				<updated>2015-10-01T16:54:31Z</updated>
		
		<summary type="html">&lt;p&gt;Deejay: /* Empfänger */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Zusammenfassung=&lt;br /&gt;
Eine Begrenzungsschleife (oder Perimeterdraht) ist eine Art 'elektronischer Zaun': er veranlaßt den ArduMower zum Stoppen / Umkehren sobald die Grenze erreicht ist. Nicht in jeder Umgebung ist eine Begrenzungsschleife notwendig - Rasensensoren könnten eine Alternative sein.&lt;br /&gt;
&lt;br /&gt;
Das Prinzip: durch den im Garten verlegten Schleifendraht wird ein Signal gesendet, das der Ardumower ausgewertet. Gebraucht werden ein Sender zur Erzeugung und Übergabe des Signals an die Schleife und ein Empfänger zur Signalauswertung im ArduMower.&lt;br /&gt;
&lt;br /&gt;
Und so wird das Signal empfangen: eine (oder zwei) Empfangsspulen liefern ein Signal, dessen Stärke je nach Abstand zwischen Schleifendraht und Empfangsspule(n) variiert. Interessanterweise wechselt das Signal in dem Moment seine Polarität, wo der ArduMower (genauer: die Empfänger-Spule) den Schleifendraht überfährt. Es gibt zwei prinzipielle Möglichkeiten, den Begrenzungsdraht zu orten. Wir haben beide Methoden implementiert (Perimeter V1 und V2) wie nachfolgend beschrieben.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Ardumower_perimeter.jpg | Perimeterdraht&lt;br /&gt;
File: Ardumower_perimeter_components.jpg | Komponenten&lt;br /&gt;
File: Perimeter_signal_strength.jpg | Signalstärke&lt;br /&gt;
File: Perimeter_gradient.png | Verlauf der Signalstärke&lt;br /&gt;
File: Ardumower_perimeter_magneticfield.png | Perimeter-Magnetfeld&lt;br /&gt;
File: Perimeter_excluding_objects.png | Objekte ausschließen&lt;br /&gt;
File: Perimeter_divide.png | Flächen aufteilen&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://hyperphysics.phy-astr.gsu.edu/hbase/magnetic/magcur.html Magnetfeld Berechnungstool]&lt;br /&gt;
&lt;br /&gt;
Videos:&lt;br /&gt;
[http://youtu.be/r4ZMgasMkH0 Magnetfeld Demovideo]&lt;br /&gt;
&lt;br /&gt;
=Begrenzungsschleife V2 (erforderlich für aktuellen ArduMower Code)=&lt;br /&gt;
&lt;br /&gt;
[[Image:Yt-brand-standard-logo-95x40.png|thumb|180px|https://www.youtube.com/watch?v=NIer_kITelc&amp;amp;feature=youtu.be]]&lt;br /&gt;
&lt;br /&gt;
Dies ist die neue Version von Sender und Empfänger für die Begrenzungsschleife (erhältlich über den [https://www.marotronics.de/index.php?k=7 shop] [[File: shopping.png|link=https://www.marotronics.de/index.php?k=7]]).&lt;br /&gt;
&lt;br /&gt;
Beim Überfahren des Schleifendrahtes passiert nun etwas Interessantes: die Polarität der Signalspannung wechselt von negativ auf positiv bzw. umgekehrt - je nachdem, ob man von innen oder außen kommt. Dadurch werden sowohl das Überfahren selbst als auch der Status (Aufenthalt innerhalb oder außerhalb der Schleife) eindeutig erkennbar. Wie bei der V1 nutzen wir zur Signalverstärkung wieder den Motortreiber für das Ausgangssignal und einen Operationsverstärker für das Eingangssignal von der Empfangsspule. Der Sender übergibt eine digitale Signalfolge (auch als 'pseudo-noise' bezeichnet) an die Schleife, die vom Empfänger über einen software-basierten digitalen [http://en.wikipedia.org/wiki/Matched_filter Matched-Filter] ausgewertet wird. Der Filter liefert als Ergebnis einen Peak: positiv - ArduMower innerhalb oder negativ - ArduMower außerhalb der Begrenzungsschleife.&lt;br /&gt;
&lt;br /&gt;
Prinzipablauf:&lt;br /&gt;
  Senderseite&lt;br /&gt;
# Erzeugen des Ausgangssignals durch den Arduino Nano&lt;br /&gt;
# Verstärkung des Ausgangssignals durch den Motortreiber (MC33926), Schleifendrahtenden anstatt eines Motors an den Ausgang anschließen&lt;br /&gt;
&lt;br /&gt;
  ArduMower&lt;br /&gt;
# Eingangssignal per Empfangsspule aufnehmen&lt;br /&gt;
# Eingangssignal per Operationsverstärker (z.B. LM386) verstärken&lt;br /&gt;
# ADC sampling durch Arduino Mega&lt;br /&gt;
# Signalfilterung and Analyse durch ein digitales Filter (software-basierter Matched-Filter-Algorithmus)&lt;br /&gt;
# Auswertung des matched filter Ergebnisses (zur Feststellung des Aufenthaltbereiches inner- / außerhalb der Schleife, Schleifenabfahren usw.)&lt;br /&gt;
&lt;br /&gt;
Folgende Bilder erklären den Wechsel der Signalpolarität innerhalb und außerhalb der Schleife. Sie zeigen auch die Richtung der magnetischen Flusslinien, die vom Begrenzungsdraht ausgehen und wie sie die Spule innerhalb und außerhalb der Begrenzungsschleife treffen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Ardumower_perimeter2.jpg| Innen/außen-Erkennung über den Polaritätswechsel&lt;br /&gt;
File: Fluxdirections.png| Flussrichtungen&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Signal ==&lt;br /&gt;
Der Schlüssel zu einem guten Empfang des Perimetersignals überall auf dem Rasen ist die Optimierung des Signal-Rausch-Abstandes (SNR=signal/noise ratio). Um das SNR zu maximieren, gibt es zwei Ansätze:&lt;br /&gt;
# Signalstärke hochfahren (elektr. Leistung) oder&lt;br /&gt;
# Erhöhung der Signallänge&lt;br /&gt;
&lt;br /&gt;
Wir nutzen eine Kombination beider Ansätze: der Sender wiederholt ständig einen digitalen Code ('pseudonoise4_pw') mit 9615 Hz :&lt;br /&gt;
&lt;br /&gt;
 1,1,-1,-1,1,-1,1,-1,-1,1,-1,1,1,-1,-1,1,-1,-1,1,-1,-1,1,1,-1&lt;br /&gt;
&lt;br /&gt;
'1' bedeutet einen positiven Signalimpuls, '-1' einen negativen. Der kürzeste erzeugte Signalwechsel ist '-1,1', das entspräche dem höchsten Ton (wenn man es hörbar darstellen würde) von 4808 Hz. Das andere Extrem wäre der längste erzeugte Signalwechsel mit '1,1,-1,-1', bei einer Frequenz von 2404 Hz.&lt;br /&gt;
&lt;br /&gt;
Die Spule erkennt nur diese Signalwechsel des Sendersignals. So - also ohne den Kondensator in Serienschaltung zur Spule - zeigt sich das (differentielle) Empfangssignal wie folgt:&lt;br /&gt;
&lt;br /&gt;
 1,0,-1, 0,1,-1,1,-1, 0,1,-1,1,0,-1, 0,1,-1, 0,1,-1, 0,1,0,-1&lt;br /&gt;
&lt;br /&gt;
Verwendet man jedoch den Kondensator in Reihe zur Spule, sind gesendetes und empfangenes (nicht-differentielles) Signal vom Prinzipverlauf wieder identisch.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Perimeter_signal_steps.png | Perimetersignal an Sender und Empfangsspule&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Arduino ADC wertet das Empfangssignal mit einer Abtastrate von 9615 Hz aus.&lt;br /&gt;
&lt;br /&gt;
== Filter ==&lt;br /&gt;
Die gewählte Signalform weist eine spezielle Charakteristik auf: &lt;br /&gt;
&lt;br /&gt;
Weil es wie ein Zufallssignal aussieht, stimmt es nicht in Teilen mit sich selbst überein, sondern erst als komplette Sequenz ([http://en.wikipedia.org/wiki/Matched_filter Übereinstimmung]). Aufgrund dieser Charakteristik können die Startpunkte der Signalsequenz durch ein [http://en.wikipedia.org/wiki/Matched_filter matched filter] ('Korrelation' mit dem gesuchten Signalmuster) ermittelt werden: sie erscheinen als Nadelimpuls im Filterergebnis - und zwar auch bei einem stark verrauschten Signal (z.B. durch Störimpulse von Motoren etc.). &lt;br /&gt;
Die Polarität der Spitze (positiv oder negativ) gibt an, ob sich die Spule inner- oder außerhalb der Begrenzungsschleife befindet.&lt;br /&gt;
&lt;br /&gt;
Du kannst sehen, wie das funktioniert: für ein tiefergehendes Verständnis des Perimetersignals und des Filters schau Dir folgende Simulation (in englisch) an: &lt;br /&gt;
[http://www.grauonline.de/alexwww/ardumower/filter/filter.html Matched filter simulation]&lt;br /&gt;
&lt;br /&gt;
# Wähle eine Perimetersignalform: setze den Schieberegler (rechts oben 'example signals') auf ''pseudonoise4_pw'' (Wert 23).&lt;br /&gt;
# Hebe den Wert des Störsignal ein wenig an: setze den Schieberegler ('noise') auf den Wert 2.&lt;br /&gt;
# Der Plot 'Matched filter' (links unten) zeigt, dass das wiederholte Signal 3 mal entdeckt wurde.&lt;br /&gt;
# Nun simuliere die Bewegung der Spule aus der Perimeterschleife nach außen:  Klicke auf 'Invert' und setze damit die Verstärkung auf '-1'. Der Filter liefert 3 negative Spitzen.&lt;br /&gt;
&lt;br /&gt;
Mehr dazu unter: [https://www.youtube.com/watch?v=NIer_kITelc Video über matched filter]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
  File: Matched_filter_principle.png| Matched Filter&lt;br /&gt;
  File: Perimeter_signal_good_bad.png|Beispiele für gutes / schlechtes Signal &lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Sender ==&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Schleifensender_Ardumower_V2.JPG | Sender Schaltplan&lt;br /&gt;
File: Ardumower_sender_pcb.jpg| Ardumower Sender PCB&lt;br /&gt;
File: Perimeter2_sender_open.jpg| Sendersignal (6.5V, ohne Perimeterschleife)&lt;br /&gt;
File: Perimeter2_sender_closed.jpg| Sendersignal (6.5V, 120m Perimeterschleife 7 Ohm)&lt;br /&gt;
File: Sender_v2_signal_sender_5v_4ohm.png| Sendersignal (6.5V, 4 Ohm Widerstand + 2m Perimeterschleife)&lt;br /&gt;
File: perimeter_wiring_motor_driver.png | Varianten der Motortreiberschaltung&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wir benutzen einen Arduino Nano zur Erzeugung und einen Mototreiber als Ausgangsverstärker des Signals. Der Motortreiber wird mit 3,2 kHz betrieben (2 Impulsbreiten 4808 und 2404 Hz). Bei ausreichend langen Schleifendrähten benötigt der Generator typischerweise 10W (6.5V, 1.7A). Unser Motortreiber verfügt über eine integrierte Strombegrenzung und eine Übertemperaturabschaltung (z.B. MC33926). Die Schleifenlänge kann im Bereich 20 - 450m betragen und muss mindestens 5 Ohm Widerstand aufweisen.&lt;br /&gt;
&lt;br /&gt;
Sender Pin-Belegung:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;background-color: lightgrey; border: solid thin grey;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 motor driver M1OUT1     o---------- perimeter loop (20-450 meters, &amp;gt; 5 Ohm) --+&lt;br /&gt;
                                                                               |&lt;br /&gt;
 motor driver M1OUT2     o---------- perimeter loop ---------------------------+&lt;br /&gt;
 motor driver Vin        o-- 6.5V&lt;br /&gt;
 motor driver M1IN1      o-- Arduino Nano pinIN1&lt;br /&gt;
 motor driver M1IN2      o-- Arduino Nano pinIN2&lt;br /&gt;
 motor driver M1PWM_nD2  o-- Arduino Nano pinPWM&lt;br /&gt;
 motor driver M1nSF      o-- Arduino Nano pinFault&lt;br /&gt;
 motor driver M1FB       o-- Arduino Nano pinFeedback&lt;br /&gt;
 motor driver EN         o-- Arduino Nano pinEnable&lt;br /&gt;
 motor driver VDD        o-- Arduino +5V&lt;br /&gt;
 motor driver M1D1       o-- GND (via Jumper)&lt;br /&gt;
 motor driver SLEW       o-- VDD (via Jumper)&lt;br /&gt;
 &lt;br /&gt;
               |---------o-- GND&lt;br /&gt;
 Potentiometer 100k -----o-- Arduino Nano pinPot&lt;br /&gt;
               |---------o-- Arduino +5V&lt;br /&gt;
 &lt;br /&gt;
 ACS712-05 OUT ------o-- Arduino Nano pinChargeCurrent    &lt;br /&gt;
 ACS712-05 A   ------o-- charging pin (+)&lt;br /&gt;
 ACS712-05 B   ------o-- battery charger +24V&lt;br /&gt;
 battery charger GND-o-- charging pin (-)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Beispiel für den Senderaufbau mit einer Lochrasterplatine:  [http://www.braunschweiger.org/content/download/SenderR212.pdf] &lt;br /&gt;
[http://www.braunschweiger.org/content/images/SenderR212_Front.jpg] [http://www.braunschweiger.org/content/images/SenderR212_Back.jpg]'''&lt;br /&gt;
&lt;br /&gt;
=== Sender Perimeterschleife und Rasengröße ===&lt;br /&gt;
Bei einer Betriebsspannung von 6.5V sollte die Perimeterschleife nicht über 450 m lang sein. (Für den 'Wohnzimmertest' tut es auch ein 100 Ohm Widerstand in Reihe mit 5m Schaltdraht.) &lt;br /&gt;
&lt;br /&gt;
Setzen wir mal eine kreisrunde Rasenfläche voraus erhalten wir für 450m Schleifenlänge (= Kreisumfang) einen Radius von 70m:&lt;br /&gt;
 radius = Schleifenlänge / (2*PI) = 450m / (2*PI) = 70 meter&lt;br /&gt;
&lt;br /&gt;
Wäre die Signalqualität nicht durch den Radius begrenzt, entspräche der eingegrenzte Rasen einer Fläche von 15000m2:&lt;br /&gt;
 Fläche = PI * (radius*radius) = PI * (70m * 70m) = 15000 m2&lt;br /&gt;
&lt;br /&gt;
Da jedoch der maximale Radius für ausreichende Signalqualität bei ca. 18m liegt, ergibt sich die maximale Rasenfläche (Annahme immer noch: Kreisfläche!) zu 1000m2: Fläche = PI * (radius*radius) = PI * (18m * 18m) = 1000 m2&lt;br /&gt;
&lt;br /&gt;
=== Einstellung der Senderstromstärke ===&lt;br /&gt;
Zur Einstellung der Sendeleistung (Spannung*Strom) gibt es verschiedene Möglichkeiten:&lt;br /&gt;
&lt;br /&gt;
*Spannung am DC/DC-Wandler: die Versorgungsspannung des Motortreibers kann über das Poti des Wandlers zwischen 6.5 bis 12V eingestellt werden. Das ist der empfohlene Weg. Beachte: der MC33926 Motortreibermotor benötigt eine Mindestspannung (Vin) von 5V. Bei zu geringer Spannung regelt der Motortreiber sporadisch ab und die Arduino-LED zur Anzeige von Unterspannung fängt an zu blinken.&lt;br /&gt;
&lt;br /&gt;
*Normale Amplitude: statt die Perimeterschleife zwischen +Vin und -Vin (doppelte Amplitude ist Standardwert) umzuschalten, kann der Motortreiber auch nur zwischen +Vin und GND (einfache Amplitude). So zieht die Schleife weniger Strom. Zur Einstellung der einfachen Amplitude muß die entsprechende Codezeile in 'sender.ino' auskommentiert werden:&lt;br /&gt;
&lt;br /&gt;
  // #define USE_DOUBLE_AMPLTIUDE    1   &lt;br /&gt;
&lt;br /&gt;
*Hochlastwiderstand: Bei einem Schleifenwiderstand kleiner 5 Ohm kann der Strom nicht weiter reduziert werden, indem man die Spannung runterdreht: unterhalb von ca. 6V arbeitet der Arduino nicht mehr richtig. Dann hilft nur noch ein zur Schleife in Reihe geschalteter Hochlastwiderstand (R: z.B. 5 Ohm, 10W). &lt;br /&gt;
&lt;br /&gt;
 @6V (Vin): 5 ohm Hochlastwiderstand =&amp;gt; I=U/R=6V/5Ohm=1.2A   (P=U*I=6V*1.2A=7.2W)&lt;br /&gt;
&lt;br /&gt;
Daher also die mindestens 10W Belastbarkeit des Widerstandes! In diesem Falle auch die 'einfache Amplitude' im Sendercode aktivieren (doppelte Amplitude nicht benutzen!).&lt;br /&gt;
&lt;br /&gt;
=== Senderstromüberwachung (in Entwicklung) ===&lt;br /&gt;
Idee: das Poti VR1 wird durch ein digitales Poti (z.B. MCP4151-5K) ersetzt. So kann die Vin des Motortreibers (und damit auch der Strom) über den Arduino eingestellt werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Lm2596_circuit.jpg | LM2596 Modulschaltplan&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
MCP4151-5K version:&lt;br /&gt;
&lt;br /&gt;
 Vout = 1.23V*(1+VR1/R1)&lt;br /&gt;
&lt;br /&gt;
 Using VR1=5K...&lt;br /&gt;
 Vstart (on reset):  Vout=1.23V*(1+2.5K/0.33K)=10v&lt;br /&gt;
 Vmax:  Vout=1.23V*(1+5K/0.33K)=19v&lt;br /&gt;
&lt;br /&gt;
=== Automatische Schleifensignalabschaltung ===&lt;br /&gt;
Während sich der ArduMower in der Ladestation aufhält, wird das Schleifensignal nicht benötigt und wir können Energie sparen. Zum Erkennen des Ladestatus wird im &amp;quot;Sender_V2&amp;quot; ein Stromsensor (INA169) zwischen Ladegerät und Ladeanschlüsse geschaltet.&lt;br /&gt;
&lt;br /&gt;
Zum aktivieren dieser Funktion ist &amp;quot;#define USE_CHG_CURRENT&amp;quot; auf 1 zu setzen&lt;br /&gt;
&lt;br /&gt;
    #define USE_CHG_CURRENT       1     // use charging current sensor for robot detection? (set to '0' if not connected!)&lt;br /&gt;
&lt;br /&gt;
Desweiteren muss der Stromsensor am analogen Eingang A2 kalibriert werden:&lt;br /&gt;
&lt;br /&gt;
* Der Mover befindet sich nicht in der Ladestation/ Ladestrom = 0 Ampere&lt;br /&gt;
* Den seriellen Monitor aufrufen&lt;br /&gt;
* In der Befehlszeile 1 eingeben und Button &amp;quot;Senden&amp;quot; drücken&lt;br /&gt;
* Mit diesem Befehl wird die Spannung am analogen Eingang A2 gemessen und im EEPROM als Referenzwert &amp;quot;chargeADCZero&amp;quot; gespeichert&lt;br /&gt;
* Am Monitor erscheint folgender Text:&lt;br /&gt;
&lt;br /&gt;
    received key=1&lt;br /&gt;
    calibrateChargeCurrentSensor (note: robot must be outside charging station!)&lt;br /&gt;
    calibration done&lt;br /&gt;
    chargeADCZero=755&lt;br /&gt;
&lt;br /&gt;
Die Kalibrierung ist damit erfolgt. Bei den weiteren Messungen wird im seriellen Monitor unter &amp;quot;chgCurrentADC&amp;quot; der Wandlerwert des analogen Eingangs A2 angezeigt:&lt;br /&gt;
&lt;br /&gt;
    time=4	chgCurrent=0.000	chgCurrentADC=755.55	 isCharging=0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Wir simmulieren einen Ladevorgang durch Belastung der Ladebuchse durch einen 22 Ohm Widerstand. Es fließt ein Ladestrom von ca. 0,8 Ampere. Damit ändert sich der &amp;quot;chgCurrentADC&amp;quot; auf 712.63. &amp;quot;chgCurrent&amp;quot; zeigt den Ladestrom in Ampere&lt;br /&gt;
&lt;br /&gt;
    time=8      chgCurrent= 0.801       chgCurrent  ADC=712.63	  isCharging=1	&lt;br /&gt;
&lt;br /&gt;
Das Flag &amp;quot;ischarging&amp;quot; wird auf &amp;quot;1&amp;quot; gesetzt und die Perimeterschleife wird für die Dauer der Ladung abgeschaltet.&lt;br /&gt;
&lt;br /&gt;
Dies funktioniert neben dem im Sender_V2 verbauten Stromsensor &amp;quot;INA169&amp;quot; auch mit einem Stromsensor ACS 712-5. Bei Verwendung der ACS 712-5 muss jedoch die Berechnung des Ladestromes &amp;quot;chgCurrent&amp;quot; angepasst werden.&lt;br /&gt;
&lt;br /&gt;
    chargeCurrent = ((double)(((int)v)  - ((int)chargeADCZero)))* 0.048875855327468 / 2.5&lt;br /&gt;
   &lt;br /&gt;
Da der ACS 712 nicht so präzise ist, CHG_Current_MIN auf 0,1 Ampere setzen:&lt;br /&gt;
    #define CHG_CURRENT_MIN   0.1&lt;br /&gt;
&lt;br /&gt;
=== Sendersoftware ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;NOTE&amp;lt;/b&amp;gt;: Wenn Du Dich nie zuvor mit Arduino beschäftigt hast, lies zuerst unsere Einführung &amp;lt;b&amp;gt;[http://wiki.ardumower.de/index.php?title=Arduino_first_steps 'erste Schritte mit dem Arduino']&amp;lt;/b&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[File:warning.png]] Wichtig: Vergewissere Dich, dass die Pin-Konfiguration des Arduino im benutzten Code (sender.ino) mit Deinem Senderaufbau übereinstimmt!&lt;br /&gt;
&lt;br /&gt;
Im Code (sender.ino) die passende Option für die automatische Schleifenabschaltung (bei Verwendung des oben beschriebenen Stromsensors Option 1) wählen:&lt;br /&gt;
&lt;br /&gt;
* Define if you have connected a charging current sensor for automatic sender standby:   #define USE_CHG_CURRENT 1   (or 0)&lt;br /&gt;
&lt;br /&gt;
=== Sender Zustandsanzeige ===&lt;br /&gt;
Die LED auf dem Arduino Nano signalisiert den Senderstatus:&lt;br /&gt;
* An: Perimeterschleife ist angeschlossen und arbeitet&lt;br /&gt;
* Aus: Perimeterschleife ist geöffnet (oder durch Defekt unterbrochen) und arbeitet nicht&lt;br /&gt;
* Blinkt: der ArduMower wird geladen und die Perimeterschleife ist zur Energieeinsparung durch die Software deaktiviert&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File:Perimeter_sender_console.png | Ausgabe 'sender.ino' über serielle Konsole&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bei der Platine &amp;quot;Sender V2&amp;quot; ist dieses Signal am Ausgang &amp;quot;D13&amp;quot; verfügbar und auf die LED &amp;quot;Mover_in_Ladestation&amp;quot; geschaltet.&lt;br /&gt;
&lt;br /&gt;
=== Sendertest per PC-Soundkarte ===&lt;br /&gt;
Du kannst den Sender mit Deine Soundkarte und einer Spule testen:&lt;br /&gt;
&lt;br /&gt;
# Verbinde eine Spule (100 mH) mit dem Mikrofon-/Line-Eingang (max 1V) Deiner Soundkarte &lt;br /&gt;
# Starte das [http://www.grauonline.de/alexwww/ardumower/oscilloscope/oscilloscope.html Web-Oszilloskop], und wähle Filter 'Matched', Frequenz '9615' Hz, Visualization Math 'MinMax'&lt;br /&gt;
# Das Ausgangssignal sollte den Abstand zur Perimeterschleife wiederspiegeln - die Polarität (negativ/positiv) zeigt den Aufenthaltsbereich (innerhalb/außerhalb) der Schleife.&lt;br /&gt;
&lt;br /&gt;
Versuche in beiden Fällen (innen/außen), die Spule so dicht wie möglich an der Schleife zu positionieren, um ein auswertbares Signal zu empfangen (zur Erinnerung: wir arbeiten hier ohne die Signalverstärkung durch den Operationsverstärker, da der Soundkarteneingang nur mit max 1V beaufschlagt werden darf).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File:Ardumower_web_oscilloscope_time_signal_received.jpg | Effektivwert des empfangenen Zeit-Signals (Filter Off, Time scale: x5)&lt;br /&gt;
File:Ardumower_web_oscilloscope_time_signal.jpg | Ideales Zeitsignal erzeugt vom Sender (Filter Off, Time scale: x5)&lt;br /&gt;
File:Ardumower_web_oscilloscope.jpg  | Matched Filter Signal (Frequency: 9615 Hz, Math: MinMax)&lt;br /&gt;
File:Perimeter_signal_good_bad.png | Beispiel für gutes / schlechtes Signal&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://www.youtube.com/watch?v=vg5Xg0__66A Video zur Erklärung aller Schritte]&lt;br /&gt;
&lt;br /&gt;
== Empfänger ==&lt;br /&gt;
&lt;br /&gt;
Zum Signalempfang verwenden wir eine Spule (100 mH or 150 mH, nur für die älteren Softwareversionen wird ein Kondensator 4.7nF mit der Spule in Reihe geschaltet) in aufrechter Position, in der Mitte am vorderen Rand des ArduMower. Sie ist zur Verstärkung des empfangenen Signals mit dem Eigang eines LM386 Operationsverstärkers verbunden. Auf dem LM386 Modul wird der Kondensator C3 überbrückt, damit der Verstärker ein Signal zwischen 0..5V statt im Standardbereich -5V..+5V) liefert. Der Ausgang des LM386 sollte mit dem Arduino Analog-Pin ('pinPerimeterLeft') verbunden werden. Der Analog-Pin 'pinPerimeterRight' wird bei Verwendung des Senders V2 nicht benötigt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt; &lt;br /&gt;
 File: Perimeter_v2_receiver_circuit.png | Empfängerschaltkreis und überbrückter Kondensator C3&lt;br /&gt;
 File: Ardumower_chassis_components.png | Position der Perimeterspule&lt;br /&gt;
 File: Ardumower_coil_position.jpg | Eine zentrierte, aufrecht montierte Spule &lt;br /&gt;
 File: Ardumower_lm386_circuit.png | LM386 Modul Schaltplan&lt;br /&gt;
 File: Tire_coil_distance.jpg | Abstand Spule-Rad: Einfluß auf den Wendekreis (Kurvenwinkel)&lt;br /&gt;
 File: Coil_motor_layout.png | Zwei Spulen (experimentell), Abstand Spule-Spule Hinterradantrieb 12.5cm, Frontantrieb 19cm&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Empfängerschaltplan (Kondensator wird bei Sender V2 nicht benötigt):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;background-color: lightgrey; border: solid thin grey;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
                                      LM386 IN  o------- capacitor 4.7nF ----------- coil 100 mH  (or 150 mH)&lt;br /&gt;
 Arduino pinPerimeterLeft   o------o  LM386 OUT&lt;br /&gt;
                                      LM386 GND o----------------------------------- coil&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Achtung''': Die Spule muss direkt an den Verstärkermodul angeschlossen werden. So wird die Störfestigkeit des schwachen Spulensignals gegenüber Einflüssen anderer Komponenten (Motore, DC-DC-Wandler) verbessert. &lt;br /&gt;
&lt;br /&gt;
'''Differentielles Signal''': Die aktuelle Software erfordert das Weglassen des Kondensators 4.7nF in Reihe mit der Spule. &lt;br /&gt;
&lt;br /&gt;
'''Nicht-differentielles Signal''': Mithilfe des Kondensators (4.7 nF) wird das Sendersignal wieder rekonstruiert (s. Abschnitt Signal), der Empfängeschaltkreis ist ein Schwingkreis (C und L und Perimeterschleife fungiert als Antenne) und alle Parameter (C, L, Schleifendrahtlänge) müssen übereinstimmen. Weil dies die Abstimmung schwierig macht, empfehlen wir das nicht-differentielle Signal nicht!&lt;br /&gt;
&lt;br /&gt;
=== Abstand Spule/Verstärker zu Motoren ===&lt;br /&gt;
Achte auf die Einhaltung aller Mindestabstände zwischen den folgenden Komponenten:&lt;br /&gt;
 * Spule zu Radmotor: &amp;gt; 15cm&lt;br /&gt;
 * Spule zu Mähmotor: &amp;gt; 10cm &lt;br /&gt;
 * Spule zu DC-DC Wandler: &amp;gt; 10cm&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
 File: Dcdc_noise.jpg | Achtung: Halte Spule/Vorverstärker von den DC-DC-Wandlern und Motoren fern!!!&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Signalmessungen ===&lt;br /&gt;
Sender / Spule / LM386 Verstärker Ausgangssignale sollten etwa so aussehen: (witere Details über das Signal s. Abschnitt Signal)&lt;br /&gt;
&amp;lt;gallery&amp;gt; &lt;br /&gt;
 File: Perimeter_signal_steps.png | Perimetersignal an Sender, Empfangsspule und LM386 (Theorie)&lt;br /&gt;
 File: coil_signal_without_capacitor.png | differentielles Signal / Spulensignal ohne Kondensator (5V sender, 5 Ohm Schleife - blau: Perimeter, gelb: Spule, grau: LM386 Verstärkerausgang)&lt;br /&gt;
 File: Lm_output_dc_noise.jpg | LM386 Ausgang mit DC Störungen (differentielles Signal / Spule ohne Kondensator)&lt;br /&gt;
 File: Perimeter2_receiver_coil.jpg | LM386 Ausgang (nicht-differentielles Signal / Spule mit Kondensator, 12V Sender, 120m Schleife)&lt;br /&gt;
 File: coil_signal_with_capacitor.png | nicht-differentielles Signal / Spulensignalmit Kondensator (5V Sender, 5 Ohm Schleife - grau: Perimeter, gelb: Spule, blau: LM386 Verstärkerausgang)&lt;br /&gt;
 File: Lm_output_motor_noise.jpg | LM386 Ausgang mit Störungen durch Motoren (differentielles Signal / Spule ohne Kondensator)&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Signal und Rauschmessungen ===&lt;br /&gt;
Einige Spulenmessungen ohne Verstärker aber mit Störungen (Motoren, DC/DC-Wandler etc.): &lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
 File: Coil_60k_parallel.jpg | Spule und 60 kOhm Parallelwiderstand ohne Störungen (Spulenhintergrund-rauschen Vpp=7 mV)&lt;br /&gt;
 File: Coil_dc_converter_noise.jpg | Spule und 60 kOhm Parallelwiderstand mit Störungen durch DC/DC-Wandler (DC/DC-Rauschen Vpp=18 mV)&lt;br /&gt;
 File: Coil_motor_noise.jpg | Spule und 60 kOhm Parallelwiderstand mit Störungen durch Motoren&lt;br /&gt;
 File: Perimeter2_receiver_coil_pwm.jpg | Spulensignal mit seriellem 4.7nF Kondensator, PWM-Perimetersignal (nicht empfohlen) ohne Störungen&lt;br /&gt;
 File: Fft_signal.png | FFT Signal&lt;br /&gt;
 File: Fft_motors.png | FFT Motor-Störungen&lt;br /&gt;
 File: Fft_dcdc.png | FFT DC/DC-Störungen&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ADC-Kalibrierung am Empfänger ===&lt;br /&gt;
[[File:warning.png]] Die ADC-Kalibrierung (bei ausgeschaltetem Sender!) sorgt für eine korrekte Erkennung der Nulllinie (Stille), sodass das empfangene Signal später symmetrisch zur Nulllinie angezeigt wird.&lt;br /&gt;
# Der Perimetersender und die Motoren des ArduMower müssen während der Kalibrierung ausgeschaltet sein!&lt;br /&gt;
# Wenn eine Störung durch einen anderen Sender nicht zu vermeiden ist, muß während der Kalibrierung die Spule entfernt und der Eingang es LM386 mit GND verbunden werden.&lt;br /&gt;
# Führe die ADC-Kalibrierung einmal aus (&amp;quot;pfodApp-&amp;gt;ADC Calibration&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Nach der korrekt durchgeführten Kalibrierung sollte das Signal per pfodApp Plot ('sig') bei ausgeschaltetem Perimetersender ungefähr als Null angezeigt werden. Nach Einschalten des Perimetersenders sollte das Signal etwa diesselbe positive wie negative Maximalamplitude ('Symmetie zur Nulllinie') aufweisen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
 File: perimeter_v2_sig_symmetric.jpg | symmetrisches Signal bei eingeschaltetem Sender (nach ADC-Kalibrierung)&lt;br /&gt;
 File: perimeter_v2_sender_off.jpg | Nullsignal bei ausgeschaltetem Sender (nach ADC-Kalibrierung)&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Problemanalyse und Fehlerbehebung am Empfänger ===&lt;br /&gt;
&lt;br /&gt;
Empfangenes Signal, Filterergebnis und Signalqualität können per Android Handy über die pfodApp-&amp;gt;Plot-&amp;gt;Perimeter angezeigt werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
 File: Perimeter_snr.png | Signal-Rausch-Verhältnis (SNR)&lt;br /&gt;
 File: Perimeter_signal_38khz.png | Signal, Filterergebnis, LP Filterergebnis, innen/außen, Ereigniszähler, Signal ein/aus, Signalqualität&lt;br /&gt;
 File: Perimeter_plot_moving_from_inside_to_outside.png | Fahren von innen nach außen&lt;br /&gt;
 File: Perimeter_v2_plot.png&lt;br /&gt;
 File: Perimeter_v2_plot_new.png&lt;br /&gt;
 File: Ardumower_perimeter2_test.jpg&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Beschreibung der im Plot angezeigten Signalverläufe:&lt;br /&gt;
 sig:  Spulensignal (Sequenz der Rohimpulse nach ADC) als kurzer Snapshot (32 samples), Update alle 20 Sekunden &lt;br /&gt;
       (also 20 Sekundenwarten bis zum nächsten Snapshot)&lt;br /&gt;
 mag:  Filterergebnis: innen (negativ) oder außen (positiv), magnitude: Abstand zur Perimeterschleife / magnetische Signalstärke (RSSI)&lt;br /&gt;
       - wird benutzt zum &amp;lt;b&amp;gt;Perimeter verfolgen&amp;lt;/b&amp;gt;&lt;br /&gt;
 smag: Filterergebnis, low-pass-gefiltert, ohne Vorzeichen (geglätteter mag-Verlauf) - verwendet zur Erkennung des &amp;lt;b&amp;gt;'Sender-aus' Zustandes&amp;lt;/b&amp;gt;&lt;br /&gt;
       Der Grenzwert kann über die pfodApp gesetzt werden (Settings-&amp;gt;Perimeter-&amp;gt;Timed-out if below smag)&lt;br /&gt;
 in:   binäres Ergebnis des low-pass Filters: innerhalb (1) oder außerhalb (0) der Perimeterschleife - wird benutzt zur &amp;lt;b&amp;gt;Erkennung des Perimetergrenzverlaufs&amp;lt;/b&amp;gt;&lt;br /&gt;
       Ist der ArduMower eine bestimmte Zeit außerhalb der Schleife, geht er in den Fehlerstatus. Diese Zeit kann per pfodApp&lt;br /&gt;
       (Settings-&amp;gt;Perimeter-&amp;gt;Timeout (s) if not inside) eingestellt werden&lt;br /&gt;
 cnt:  Anzahl der Wechsel von innen nach außen (counter, Zähler)&lt;br /&gt;
 on:   Perimetersender ist aktiv (1) oder inaktiv (0), basiert auf der Auswertung des smag Ergebnisses&lt;br /&gt;
 qty:  &amp;lt;b&amp;gt;Signalqualität&amp;lt;/b&amp;gt; (Aussage über die Verläßlichkeit der Erkennung 'innerhalb / außerhalb' aus dem Filterergebnis)&lt;br /&gt;
       Verhältnis aus Vergleich mit Mustersignal zu Vergleich mit inversem Mustersignal              &lt;br /&gt;
       1.0 bedeutet schlechte Qualität, Du solltest Werte von 1.5 oder höher)&lt;br /&gt;
&lt;br /&gt;
Im Plot soll der 'mag'-Verlauf frei von Spitzen sein: innerhalb der Schleife sollte das Signal eine negative Kurve, außerhalb eine positive Kurve beschreiben. Weist die Kurve Spitzen auf, versuche folgende Maßnahmen zur Fehlerbeseitigung bzw. Optimierung:&lt;br /&gt;
&lt;br /&gt;
* Benutze immer einen ausreichend langen und korrekt abgerollten Schleifendraht (20m oder länger). Benutze niemals einen zu kurzen (Mindestwiderstand 5 Ohm!) oder gar aufgerollten Draht. &lt;br /&gt;
* Für den 'Wohnzimmertest' sollte ein 100 Ohm Widerstand in Reihe mit 5m Draht bei 6V seine Aufgabe erfüllen.&lt;br /&gt;
* Verbinde die Empfangsspule mit 'pinPerimeterLeft' auf dem PCB (am falschen Pin könnte das Signal 'etwas schwach' reinkommen)&lt;br /&gt;
* Die Spulenpolung kann per pfodApp eingestellt werden (wird 'außen' angezeigt, wenn der Ardumower sich innrhalb der Schleife befindet?). Denselben Effekt hat das Umklemmen der Schleifenenden am Senderausgang.&lt;br /&gt;
* Sollte das Signal schwach erscheinen, überprüfen, ob am Spulenverstärker das Poti &amp;quot;voll aufgedreht&amp;quot; ist! Hilfreich ist die gleichzeitige Anzeige des Signal per pfodApp (Plot --&amp;gt; Perimeter).&lt;br /&gt;
* Die Kabelverbindung zwischen Spule und LM386-Vorverstärker muss möglichst kurz sein - am Besten die Spule direkt am Verstärker anschließen!&lt;br /&gt;
* Halte den Abstand zwische Spule und Motoren sowie DC/DC-Wandlern möglichst groß (30cm oder mehr!)&lt;br /&gt;
* Nutze die magnetische Abschirmwirkung (z.B. Deines Akkus) zwischen Spule und Störquellen.&lt;br /&gt;
* Einstellen der Senderspannung: bei längeren Perimeterschleifen (&amp;gt;80m) die Spannung höher wählen (Potentiometer DC/DC-Wandler), bei kürzeren Schleifen (&amp;gt;25m) eher niedriger (anstreben einer Sendeleistung = Spannung * Strom von ca 10W)&lt;br /&gt;
* Versuche bei laufenden Motoren die Spule leicht zu einer Seite zu neigen um die Signalqualität 'qty' zu erhöhen.&lt;br /&gt;
&lt;br /&gt;
== Messungen ==&lt;br /&gt;
&lt;br /&gt;
Zum Vergleich Beispielwerte, gemessen an verschiedenen, im Gelände getesteten Kombinationen von Sender-/Empfänger-/Schleifenparametern:&lt;br /&gt;
&lt;br /&gt;
1) 120m (0.7mm^2), R=4 Ohm, 6.5V, Spule Vpp 20mV&lt;br /&gt;
 Störsignalpegel (max): smag=192&lt;br /&gt;
 Signal (min): smag=254&lt;br /&gt;
 SNR=Signal/Störsignal=254/192=1.3&lt;br /&gt;
&lt;br /&gt;
2) 30m (0.7mm^2), R=1.0 Ohm (+4 Ohm series R), 6.5V, Spule Vpp 120 mV&lt;br /&gt;
 Störsignalpegel (max): smag=192&lt;br /&gt;
 Signal (min): smag=896&lt;br /&gt;
 SNR=Signal/Störsignal=896/192=4.6&lt;br /&gt;
&lt;br /&gt;
=== Videos ===&lt;br /&gt;
#[http://www.youtube.com/watch?v=FL6K98B2Zsk&amp;amp;feature=player_detailpage#t=265 Perimeter2 Demo]&lt;br /&gt;
#[https://www.youtube.com/watch?v=QCA6Dm3rs3M Test 120m Perimeterschleife]&lt;br /&gt;
#[https://www.youtube.com/watch?v=NIer_kITelc Theorie zu Perimeterschleife und Matched Filter (in deutsch)]&lt;br /&gt;
#[https://www.youtube.com/watch?v=VxJN2xb55dU&amp;amp;feature=youtu.be Sender-PCB]&lt;br /&gt;
&lt;br /&gt;
= Verfolgung der Begrenzungsschleife =&lt;br /&gt;
&lt;br /&gt;
Das Abfahren der Schleife wird über einen softwareseitig realisierten digitalen PID-Regler gesteuert. Die Regler-Parameter (P,I,D) können über ein Android-Handy per pfodApp eingestellt werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Ardumower_perimeter_pid.jpg&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mehr Informationen über PID-Regler sind hier zu finden: &lt;br /&gt;
[http://www.ardumower.de/index.php/de/forum/anleitungen-hilfe/121-pid-regelung-fuer-drehzahl-drehung-etc-richtig-einstellen Forum].&lt;br /&gt;
&lt;br /&gt;
= Sensor Signalfusion =&lt;br /&gt;
Das Magnetfeld der Perimeterschleife könnte man als Input für eine [http://wiki.ardumower.de/index.php?title=Sensor_fusion zur Positionsbestimmung des ArduMower nutzen].&lt;br /&gt;
&lt;br /&gt;
= Weiterführende Links =&lt;br /&gt;
#[http://www.ardumower.de/index.php/en/forum/schleifensensoren-generator/83-ir-bake-generator-empfaenger-diy Ein anderer Navigationsansatz sind Infrarot-Baken]&lt;br /&gt;
#[http://grauonline.de/wordpress/?page_id=364 Mehr Details zum 'matched filter']&lt;br /&gt;
#[http://www.grauonline.de/alexwww/ardumower/oscilloscope/oscilloscope.html Soundkarten-Oszilloskop inklusive 'matched filter']&lt;br /&gt;
&lt;br /&gt;
= Perimeter V1 (für alten Code V0.9.3, nicht mehr empfohlen) =&lt;br /&gt;
&lt;br /&gt;
Dies war die erste Version unseres Perimetersenders und Empfängers. Sie wies einige Nachteile auf (Orientierungsfehler, Keine 'Sender-aus'-Erkennung, keine Möglichkeit zur Feststellung des Aufenthaltsbereiches inner-/außerhalb der Schleife), so dass der Einsatz nicht weiter empfohlen wird. Benutze die Nachfolgeversion V2, wie oben beschrieben.&lt;br /&gt;
&lt;br /&gt;
== Sender ==&lt;br /&gt;
Du kannst den Sender eines kommerziellen Rasenmäroboters nutzen (der hier gezeigte Sender ist kompatibel mit Tianchen oder Rotenbach Mährobotern), oder Du baust Dir selber einen:&lt;br /&gt;
&lt;br /&gt;
Ein Arduino (z.B. Nano) generiert ein Rechtecksignal, welches die Polarität eines Motortreibers (L298N) mit 7.8 Khz schaltet. Dadurch wechselt das Ausgangssignal zwischen Vcc und GND. Ein Schwingkreis verstärkt die Signalspitzen (Resonanzfrequenz ist dieselbe wie die Schaltfrequenz - 7.8 Khz). So reicht es aus, den Motortreiber mit 5V (statt 12V) zu betreiben. Die Spannungsquelle muß etwa 2W (400mA bei 5V) leisten. &lt;br /&gt;
Ein Teil des Signals wird durch den Arduino (ADC) durch eine Diode und einen Spannungsteiler erfaßt. So kann festgestellt werden, ob die Perimeterschleife angeschlossen ist. Durch den Schleifendraht fließt ein Strom von ca. 150mA (Drahtquerschnitt 2-3 mm^2, Länge max 500 m)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Arduino_perimeter_sender.png ‎&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Weil man vielleicht nicht immer die genau passende Empfängespule zur Hand hat, hier ein paar mögliche Kombinationen (Spule / Kondensator), die die Resonanzfrequenz von 7.8 Khz aufweisen:&lt;br /&gt;
*Kombination 1: Spule: 160µH, Kondensator: 3,3µF/50V  (getestet)&lt;br /&gt;
*Kombination 2: Spule 33mH, Kondensator: 12nF (nicht getestet)&lt;br /&gt;
&lt;br /&gt;
==== Stromversorgung ====&lt;br /&gt;
Zur Erzeugung der 5V Spannung wird ein step-down-Wandler (z.B. Module mit LM2596) eingesetzt. Vor dem Einsatz in der Schaltung muß der Wandler auf 5V einjustiert werden. &lt;br /&gt;
&lt;br /&gt;
'''Warnung''' : Lege niemals mehr als 5V auf die Arduino 5V Pins oder Du zerstörst ihn. Deswegen: vorher die Spannung einstellen und kontrollieren!&lt;br /&gt;
&lt;br /&gt;
==== Funktionstest ====&lt;br /&gt;
1. Nach dem Code-Hochladen und Anschliessen der Begrenzungsschleife sollte die Arduino LED an sein. Nun entferne den Schleifendraht und die LED sollte ausgehen.&lt;br /&gt;
&lt;br /&gt;
2. Sollte das nicht so sein, kontrolliere mit einem Voltmeter zum Einen die Spannung zwischen Pin 9 des Arduino und dann die am Motortreiberausgang (OUT_1) jeweils gegen GND - beide sollten eine Gleichspannung  2.5 Volt führen.&lt;br /&gt;
&lt;br /&gt;
3. Hast Du ein Oszilloskop? Dann schließe statt der Begrenzungsschleife das Oszilloskop an den Sender an. Das gemessene Signal sollte folgendermaßen aussehen:&lt;br /&gt;
&lt;br /&gt;
Das Ausgangssignal zeigt eine höhere Ampltude (hohe Spitzenwerte) als das Eingangssignal:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Perimetersignal.jpg|Signal am Senderausgang &lt;br /&gt;
File: Ardumower_perimeter_sender_schematics.png|Grundprinzip des Schwingkreises&lt;br /&gt;
File: Arduino_perimeter_sender_photo.jpg&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Für einen einfachen Empfangstest kannst Du die Empfangsspule direkt ans Oszilloskop anschließen. Das gemessene Signal sollte etwa so  aussehen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Coilsignal.jpg|Signal an der Empfangsspule&lt;br /&gt;
File: Fft.jpg|Signal im Frequenzspektrum, überlagert durch Motorstörungen&lt;br /&gt;
File: Ardumower_perimeter_spectrum_plot.jpg| Anzeige des Frequenzspektrums über pfodApp&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Empfänger ==&lt;br /&gt;
Der Empfänger nutzt zwei Spulen, die rechts und links vorn im ArduMower montiert sind. Die Signalstärke der linken und rechten Spule werden ausgewertet, um sie vergleichen zu können.&lt;br /&gt;
&lt;br /&gt;
Prinzip:&lt;br /&gt;
# Verstärkung der alternierenden Signale per OPAMP&lt;br /&gt;
# Optional: Bandpass-Filterung zum Ausblenden der Störungen durch Motore etc.&lt;br /&gt;
# Ermittlung der Signalstärke von linker und rechter Spule&lt;br /&gt;
&lt;br /&gt;
Vorteil dieser Version: analoge Auswertungfunktioniert hervorragend.&lt;br /&gt;
Nachteil: Du kannst nicht feststellen, ob Du Dich gerade innerhalb oder außerhalb der Begrenzungsschleife aufhälst, wenn Du nicht jede Überfahrt des Begrenzungsdrahtes mitprotokollierst. Es ist auch nicht möglich festzustellen, ob Du die Begrenzungsschleife im oder gegen den Uhrzeigersinn abfährst.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Arduino_perimeter_receiver.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Eine Spule empfängt das Signal des Senders. Ein Schwingkreis (LC: SPule und Kondensator)verstärkt das empfangene Signal bei einer Resonanzfrequenz von 7.8 kHz. Das Signal wird weiter verstärkt durch eien LM386-Verstärker (hier: Arduino Soundsensor mit Spule statt Mikrofon). Ein Bandpassfilter (digitaler Filter, FFT - Fast Fourier Transformation) läuft auf dem Arduino und filtert die gewünschte Frequenz (7.8 Khz) und erzeugt ein PWM-Signal (Pulsbreite proportional zur Signalstärke). Über einen Tiefpassfilter wird das PWM-Signal in eine Gleichspamnnung gewandelt.&lt;br /&gt;
Beachte: Die Verdrahtung zwischen ist vereinfacht dargestellt - Details der Verdrahtung s. Schaltplan.&lt;br /&gt;
&lt;br /&gt;
Wir haben folgende Kombinationen von Spulen und Verstärkern getestet:&lt;br /&gt;
&lt;br /&gt;
'Arduino Soundsensor'&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Soundsensor.jpg| Signalverstärkung über LM386 - Arduino Soundsensor mit Spule statt Mikrofon&lt;br /&gt;
File: YwRobot_Sensor.jpg |Arduino Soundsensor mit LM386&lt;br /&gt;
File: YwRobot_circuit.png |Arduino Soundsensor Modulschaltplan&lt;br /&gt;
File: Coil_85mh.jpg|85 mH Spule&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
LM386 Verstärker&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Lm386_amplifier.jpg| LM386 Versärker (200-fach)&lt;br /&gt;
File: Lm386_modified.jpg| modifizierter LM386-Verstärker&lt;br /&gt;
File: Ardumower_lm386_circuit.png | LM386 Modulschaltplan&lt;br /&gt;
File: Coil_small.jpg| 104 mH Spule&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wichtig: Bei Verwendung dieses Verstärkers muß der Kondensator C3 überbrückt werden (erzeugt das für den Arduino erforderliche VCC/2 offset). Dies Spule schließt man an &amp;quot;IN&amp;quot; und &amp;quot;GND&amp;quot; an.&lt;br /&gt;
&lt;br /&gt;
'''Beachte''': die Spule unbedingt direkt am Verstärkermodul befestigen. Dies minimiert die Störeinflüsse durch andere Komponenten wie z.B. Motoren auf das schwache Spulensignal.&lt;br /&gt;
=== Funktionstest ===&lt;br /&gt;
# Stelle eine korrekte Funktion des Schleifensenders sicher (wie bereits weiter oben beschrieben).&lt;br /&gt;
# Drehe das Potentiometer des Arduino Soundsensors auf Maximum (gegen den Uhrzegersinn).&lt;br /&gt;
# Lade das Programm auf den Arduino und bewege eine Spule in Richtung des Begrenzungsdrahtes: die LED des Arduino sollte zu blinken beginnen. Halte nun beide Spulen im gleichen Abstand über den Begrenzungsdraht: die LED sollte nun permanent leuchten.&lt;br /&gt;
# Wenn das so nicht funktioniert, öffne die serielle Konsole und  prüfe die Signalwerte.&lt;br /&gt;
&lt;br /&gt;
=== Spulenauswahl ===&lt;br /&gt;
mathematische Näherungsberechnung einer Spule:&lt;br /&gt;
&lt;br /&gt;
 L = 1nH x n² x ((D² / mm² ) / (l / mm))&lt;br /&gt;
 l = Spulenlänge&lt;br /&gt;
 D = Spulendurchmesser&lt;br /&gt;
&lt;br /&gt;
Beispiel: eine Induktion von 85 mH, Durchmesser 10 mm, Länge 40 mm erfordert ca. 5830 Windungen.&lt;br /&gt;
&lt;br /&gt;
Diese Induktivität von 85 mH und ein Kondensator von 4.7 nF führen zu einer Resonanzfrequenz von 7963 Hz.&lt;br /&gt;
&lt;br /&gt;
 f0 = 1 / (2 * PI * sqrt(L * C)) = 1 / (2 * PI * sqrt(0.085 H * 0.0000000047 F)) =  7963 Hz&lt;br /&gt;
&lt;br /&gt;
Weil man vielleicht nicht immer die genau passende Empfängerspule zur Hand hat, hier ein paar mögliche Kombinationen (Spule / Kondensator), die die Resonanzfrequenz von 7.8 Khz aufweisen:&lt;br /&gt;
 Kombination 1: Spule: 85mH, Kondensator: 4.7nF  (getestet)&lt;br /&gt;
 Kombination 2: Spule: 104mH, Kondensator: 4nF (getestet)&lt;br /&gt;
&lt;br /&gt;
=== Anordnung der Spulen ===&lt;br /&gt;
die Spulen sind am Boden des ArduMower so angeordnet, dass sie einen Winkel von 90 Grad einschließen, d.h. jede ist um 45 Grad aus der Längsachse gedreht.&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Ardumower_spulen.jpg| Anordnung der Spulen&lt;br /&gt;
File: L50_coils.jpg | Beispiel (Ambrogio L50)&lt;br /&gt;
File: L50_parcours.jpg | Testparcours&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Messung der Signalstärke ===&lt;br /&gt;
Zum Vergleich von Messungen wurde die Signalstärke bei verschiedenen Schleifenabständen bestimmt. Die Signalsärke (soll heißen: der berechnete ADC-Wert) kann in der Android pfodApp angezeigt werden. Der Abstand (cm) ist der berechnete Wert zwischen Perimeterschleife und Spule (eingebaut im ArduMower).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Perimeter_plot.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Schleifenverlegung ===&lt;br /&gt;
&lt;br /&gt;
Wichtig bei der Schleifenverlegung ist die Vermeidung von scharfen Ecken: Rundungen sind angesagt! Fährt der Ardumower exakt über eine scharfe Ecke, kann er unter Umständen die Schleife nicht mehr orten, da Spule und Schleife fluchten / parallel stehen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Schleifen_blind.jpg  | Nicht empfohlen: ArduMower kann keine scharfen Ecken orten!&lt;br /&gt;
File: Ardumower_coil_signal.png| Wie ändert sich das Sinal, wenn die Spule gedreht wird??&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Videos ===&lt;br /&gt;
#[http://www.youtube.com/watch?v=FGaUSg-uUxk Perimeter Stoptest]&lt;br /&gt;
#[http://www.youtube.com/watch?v=8R8QaffNlJw Perimeter Verfolgungstest]&lt;br /&gt;
#[http://www.youtube.com/watch?v=CftrnetFVYc&amp;amp;feature=youtu.be Test zum Finden und Verfolgen mit L50]&lt;br /&gt;
#[http://www.youtube.com/watch?feature=player_embedded&amp;amp;v=fjuQViS2rHM Test zum Finden und Verfolgen mit Rotenbach]&lt;/div&gt;</summary>
		<author><name>Deejay</name></author>	</entry>

	<entry>
		<id>https://wiki.ardumower.de/index.php?title=Perimeter-Schleife&amp;diff=2778</id>
		<title>Perimeter-Schleife</title>
		<link rel="alternate" type="text/html" href="https://wiki.ardumower.de/index.php?title=Perimeter-Schleife&amp;diff=2778"/>
				<updated>2015-09-25T14:19:33Z</updated>
		
		<summary type="html">&lt;p&gt;Deejay: /* Automatische Schleifensignalabschaltung */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Zusammenfassung=&lt;br /&gt;
Eine Begrenzungsschleife (oder Perimeterdraht) ist eine Art 'elektronischer Zaun': er veranlaßt den ArduMower zum Stoppen / Umkehren sobald die Grenze erreicht ist. Nicht in jeder Umgebung ist eine Begrenzungsschleife notwendig - Rasensensoren könnten eine Alternative sein.&lt;br /&gt;
&lt;br /&gt;
Das Prinzip: durch den im Garten verlegten Schleifendraht wird ein Signal gesendet, das der Ardumower ausgewertet. Gebraucht werden ein Sender zur Erzeugung und Übergabe des Signals an die Schleife und ein Empfänger zur Signalauswertung im ArduMower.&lt;br /&gt;
&lt;br /&gt;
Und so wird das Signal empfangen: eine (oder zwei) Empfangsspulen liefern ein Signal, dessen Stärke je nach Abstand zwischen Schleifendraht und Empfangsspule(n) variiert. Interessanterweise wechselt das Signal in dem Moment seine Polarität, wo der ArduMower (genauer: die Empfänger-Spule) den Schleifendraht überfährt. Es gibt zwei prinzipielle Möglichkeiten, den Begrenzungsdraht zu orten. Wir haben beide Methoden implementiert (Perimeter V1 und V2) wie nachfolgend beschrieben.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Ardumower_perimeter.jpg | Perimeterdraht&lt;br /&gt;
File: Ardumower_perimeter_components.jpg | Komponenten&lt;br /&gt;
File: Perimeter_signal_strength.jpg | Signalstärke&lt;br /&gt;
File: Perimeter_gradient.png | Verlauf der Signalstärke&lt;br /&gt;
File: Ardumower_perimeter_magneticfield.png | Perimeter-Magnetfeld&lt;br /&gt;
File: Perimeter_excluding_objects.png | Objekte ausschließen&lt;br /&gt;
File: Perimeter_divide.png | Flächen aufteilen&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://hyperphysics.phy-astr.gsu.edu/hbase/magnetic/magcur.html Magnetfeld Berechnungstool]&lt;br /&gt;
&lt;br /&gt;
Videos:&lt;br /&gt;
[http://youtu.be/r4ZMgasMkH0 Magnetfeld Demovideo]&lt;br /&gt;
&lt;br /&gt;
=Begrenzungsschleife V2 (erforderlich für aktuellen ArduMower Code)=&lt;br /&gt;
&lt;br /&gt;
[[Image:Yt-brand-standard-logo-95x40.png|thumb|180px|https://www.youtube.com/watch?v=NIer_kITelc&amp;amp;feature=youtu.be]]&lt;br /&gt;
&lt;br /&gt;
Dies ist die neue Version von Sender und Empfänger für die Begrenzungsschleife (erhältlich über den [https://www.marotronics.de/index.php?k=7 shop] [[File: shopping.png|link=https://www.marotronics.de/index.php?k=7]]).&lt;br /&gt;
&lt;br /&gt;
Beim Überfahren des Schleifendrahtes passiert nun etwas Interessantes: die Polarität der Signalspannung wechselt von negativ auf positiv bzw. umgekehrt - je nachdem, ob man von innen oder außen kommt. Dadurch werden sowohl das Überfahren selbst als auch der Status (Aufenthalt innerhalb oder außerhalb der Schleife) eindeutig erkennbar. Wie bei der V1 nutzen wir zur Signalverstärkung wieder den Motortreiber für das Ausgangssignal und einen Operationsverstärker für das Eingangssignal von der Empfangsspule. Der Sender übergibt eine digitale Signalfolge (auch als 'pseudo-noise' bezeichnet) an die Schleife, die vom Empfänger über einen software-basierten digitalen [http://en.wikipedia.org/wiki/Matched_filter Matched-Filter] ausgewertet wird. Der Filter liefert als Ergebnis einen Peak: positiv - ArduMower innerhalb oder negativ - ArduMower außerhalb der Begrenzungsschleife.&lt;br /&gt;
&lt;br /&gt;
Prinzipablauf:&lt;br /&gt;
  Senderseite&lt;br /&gt;
# Erzeugen des Ausgangssignals durch den Arduino Nano&lt;br /&gt;
# Verstärkung des Ausgangssignals durch den Motortreiber (MC33926), Schleifendrahtenden anstatt eines Motors an den Ausgang anschließen&lt;br /&gt;
&lt;br /&gt;
  ArduMower&lt;br /&gt;
# Eingangssignal per Empfangsspule aufnehmen&lt;br /&gt;
# Eingangssignal per Operationsverstärker (z.B. LM386) verstärken&lt;br /&gt;
# ADC sampling durch Arduino Mega&lt;br /&gt;
# Signalfilterung and Analyse durch ein digitales Filter (software-basierter Matched-Filter-Algorithmus)&lt;br /&gt;
# Auswertung des matched filter Ergebnisses (zur Feststellung des Aufenthaltbereiches inner- / außerhalb der Schleife, Schleifenabfahren usw.)&lt;br /&gt;
&lt;br /&gt;
Folgende Bilder erklären den Wechsel der Signalpolarität innerhalb und außerhalb der Schleife. Sie zeigen auch die Richtung der magnetischen Flusslinien, die vom Begrenzungsdraht ausgehen und wie sie die Spule innerhalb und außerhalb der Begrenzungsschleife treffen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Ardumower_perimeter2.jpg| Innen/außen-Erkennung über den Polaritätswechsel&lt;br /&gt;
File: Fluxdirections.png| Flussrichtungen&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Signal ==&lt;br /&gt;
Der Schlüssel zu einem guten Empfang des Perimetersignals überall auf dem Rasen ist die Optimierung des Signal-Rausch-Abstandes (SNR=signal/noise ratio). Um das SNR zu maximieren, gibt es zwei Ansätze:&lt;br /&gt;
# Signalstärke hochfahren (elektr. Leistung) oder&lt;br /&gt;
# Erhöhung der Signallänge&lt;br /&gt;
&lt;br /&gt;
Wir nutzen eine Kombination beider Ansätze: der Sender wiederholt ständig einen digitalen Code ('pseudonoise4_pw') mit 9615 Hz :&lt;br /&gt;
&lt;br /&gt;
 1,1,-1,-1,1,-1,1,-1,-1,1,-1,1,1,-1,-1,1,-1,-1,1,-1,-1,1,1,-1&lt;br /&gt;
&lt;br /&gt;
'1' bedeutet einen positiven Signalimpuls, '-1' einen negativen. Der kürzeste erzeugte Signalwechsel ist '-1,1', das entspräche dem höchsten Ton (wenn man es hörbar darstellen würde) von 4808 Hz. Das andere Extrem wäre der längste erzeugte Signalwechsel mit '1,1,-1,-1', bei einer Frequenz von 2404 Hz.&lt;br /&gt;
&lt;br /&gt;
Die Spule erkennt nur diese Signalwechsel des Sendersignals. So - also ohne den Kondensator in Serienschaltung zur Spule - zeigt sich das (differentielle) Empfangssignal wie folgt:&lt;br /&gt;
&lt;br /&gt;
 1,0,-1, 0,1,-1,1,-1, 0,1,-1,1,0,-1, 0,1,-1, 0,1,-1, 0,1,0,-1&lt;br /&gt;
&lt;br /&gt;
Verwendet man jedoch den Kondensator in Reihe zur Spule, sind gesendetes und empfangenes (nicht-differentielles) Signal vom Prinzipverlauf wieder identisch.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Perimeter_signal_steps.png | Perimetersignal an Sender und Empfangsspule&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Arduino ADC wertet das Empfangssignal mit einer Abtastrate von 9615 Hz aus.&lt;br /&gt;
&lt;br /&gt;
== Filter ==&lt;br /&gt;
Die gewählte Signalform weist eine spezielle Charakteristik auf: &lt;br /&gt;
&lt;br /&gt;
Weil es wie ein Zufallssignal aussieht, stimmt es nicht in Teilen mit sich selbst überein, sondern erst als komplette Sequenz ([http://en.wikipedia.org/wiki/Matched_filter Übereinstimmung]). Aufgrund dieser Charakteristik können die Startpunkte der Signalsequenz durch ein [http://en.wikipedia.org/wiki/Matched_filter matched filter] ('Korrelation' mit dem gesuchten Signalmuster) ermittelt werden: sie erscheinen als Nadelimpuls im Filterergebnis - und zwar auch bei einem stark verrauschten Signal (z.B. durch Störimpulse von Motoren etc.). &lt;br /&gt;
Die Polarität der Spitze (positiv oder negativ) gibt an, ob sich die Spule inner- oder außerhalb der Begrenzungsschleife befindet.&lt;br /&gt;
&lt;br /&gt;
Du kannst sehen, wie das funktioniert: für ein tiefergehendes Verständnis des Perimetersignals und des Filters schau Dir folgende Simulation (in englisch) an: &lt;br /&gt;
[http://www.grauonline.de/alexwww/ardumower/filter/filter.html Matched filter simulation]&lt;br /&gt;
&lt;br /&gt;
# Wähle eine Perimetersignalform: setze den Schieberegler (rechts oben 'example signals') auf ''pseudonoise4_pw'' (Wert 23).&lt;br /&gt;
# Hebe den Wert des Störsignal ein wenig an: setze den Schieberegler ('noise') auf den Wert 2.&lt;br /&gt;
# Der Plot 'Matched filter' (links unten) zeigt, dass das wiederholte Signal 3 mal entdeckt wurde.&lt;br /&gt;
# Nun simuliere die Bewegung der Spule aus der Perimeterschleife nach außen:  Klicke auf 'Invert' und setze damit die Verstärkung auf '-1'. Der Filter liefert 3 negative Spitzen.&lt;br /&gt;
&lt;br /&gt;
Mehr dazu unter: [https://www.youtube.com/watch?v=NIer_kITelc Video über matched filter]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
  File: Matched_filter_principle.png| Matched Filter&lt;br /&gt;
  File: Perimeter_signal_good_bad.png|Beispiele für gutes / schlechtes Signal &lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Sender ==&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Schleifensender_Ardumower_V2.JPG | Sender Schaltplan&lt;br /&gt;
File: Ardumower_sender_pcb.jpg| Ardumower Sender PCB&lt;br /&gt;
File: Perimeter2_sender_open.jpg| Sendersignal (6.5V, ohne Perimeterschleife)&lt;br /&gt;
File: Perimeter2_sender_closed.jpg| Sendersignal (6.5V, 120m Perimeterschleife 7 Ohm)&lt;br /&gt;
File: Sender_v2_signal_sender_5v_4ohm.png| Sendersignal (6.5V, 4 Ohm Widerstand + 2m Perimeterschleife)&lt;br /&gt;
File: perimeter_wiring_motor_driver.png | Varianten der Motortreiberschaltung&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wir benutzen einen Arduino Nano zur Erzeugung und einen Mototreiber als Ausgangsverstärker des Signals. Der Motortreiber wird mit 3,2 kHz betrieben (2 Impulsbreiten 4808 und 2404 Hz). Bei ausreichend langen Schleifendrähten benötigt der Generator typischerweise 10W (6.5V, 1.7A). Unser Motortreiber verfügt über eine integrierte Strombegrenzung und eine Übertemperaturabschaltung (z.B. MC33926). Die Schleifenlänge kann im Bereich 20 - 450m betragen und muss mindestens 5 Ohm Widerstand aufweisen.&lt;br /&gt;
&lt;br /&gt;
Sender Pin-Belegung:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;background-color: lightgrey; border: solid thin grey;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 motor driver M1OUT1     o---------- perimeter loop (20-450 meters, &amp;gt; 5 Ohm) --+&lt;br /&gt;
                                                                               |&lt;br /&gt;
 motor driver M1OUT2     o---------- perimeter loop ---------------------------+&lt;br /&gt;
 motor driver Vin        o-- 6.5V&lt;br /&gt;
 motor driver M1IN1      o-- Arduino Nano pinIN1&lt;br /&gt;
 motor driver M1IN2      o-- Arduino Nano pinIN2&lt;br /&gt;
 motor driver M1PWM_nD2  o-- Arduino Nano pinPWM&lt;br /&gt;
 motor driver M1nSF      o-- Arduino Nano pinFault&lt;br /&gt;
 motor driver M1FB       o-- Arduino Nano pinFeedback&lt;br /&gt;
 motor driver EN         o-- Arduino Nano pinEnable&lt;br /&gt;
 motor driver VDD        o-- Arduino +5V&lt;br /&gt;
 motor driver M1D1       o-- GND (via Jumper)&lt;br /&gt;
 motor driver SLEW       o-- VDD (via Jumper)&lt;br /&gt;
 &lt;br /&gt;
               |---------o-- GND&lt;br /&gt;
 Potentiometer 100k -----o-- Arduino Nano pinPot&lt;br /&gt;
               |---------o-- Arduino +5V&lt;br /&gt;
 &lt;br /&gt;
 ACS712-05 OUT ------o-- Arduino Nano pinChargeCurrent    &lt;br /&gt;
 ACS712-05 A   ------o-- charging pin (+)&lt;br /&gt;
 ACS712-05 B   ------o-- battery charger +24V&lt;br /&gt;
 battery charger GND-o-- charging pin (-)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Beispiel für den Senderaufbau mit einer Lochrasterplatine:  [http://www.braunschweiger.org/content/download/SenderR212.pdf] &lt;br /&gt;
[http://www.braunschweiger.org/content/images/SenderR212_Front.jpg] [http://www.braunschweiger.org/content/images/SenderR212_Back.jpg]'''&lt;br /&gt;
&lt;br /&gt;
=== Sender Perimeterschleife und Rasengröße ===&lt;br /&gt;
Bei einer Betriebsspannung von 6.5V sollte die Perimeterschleife nicht über 450 m lang sein. (Für den 'Wohnzimmertest' tut es auch ein 100 Ohm Widerstand in Reihe mit 5m Schaltdraht.) &lt;br /&gt;
&lt;br /&gt;
Setzen wir mal eine kreisrunde Rasenfläche voraus erhalten wir für 450m Schleifenlänge (= Kreisumfang) einen Radius von 70m:&lt;br /&gt;
 radius = Schleifenlänge / (2*PI) = 450m / (2*PI) = 70 meter&lt;br /&gt;
&lt;br /&gt;
Wäre die Signalqualität nicht durch den Radius begrenzt, entspräche der eingegrenzte Rasen einer Fläche von 15000m2:&lt;br /&gt;
 Fläche = PI * (radius*radius) = PI * (70m * 70m) = 15000 m2&lt;br /&gt;
&lt;br /&gt;
Da jedoch der maximale Radius für ausreichende Signalqualität bei ca. 18m liegt, ergibt sich die maximale Rasenfläche (Annahme immer noch: Kreisfläche!) zu 1000m2: Fläche = PI * (radius*radius) = PI * (18m * 18m) = 1000 m2&lt;br /&gt;
&lt;br /&gt;
=== Einstellung der Senderstromstärke ===&lt;br /&gt;
Zur Einstellung der Sendeleistung (Spannung*Strom) gibt es verschiedene Möglichkeiten:&lt;br /&gt;
&lt;br /&gt;
*Spannung am DC/DC-Wandler: die Versorgungsspannung des Motortreibers kann über das Poti des Wandlers zwischen 6.5 bis 12V eingestellt werden. Das ist der empfohlene Weg. Beachte: der MC33926 Motortreibermotor benötigt eine Mindestspannung (Vin) von 5V. Bei zu geringer Spannung regelt der Motortreiber sporadisch ab und die Arduino-LED zur Anzeige von Unterspannung fängt an zu blinken.&lt;br /&gt;
&lt;br /&gt;
*Normale Amplitude: statt die Perimeterschleife zwischen +Vin und -Vin (doppelte Amplitude ist Standardwert) umzuschalten, kann der Motortreiber auch nur zwischen +Vin und GND (einfache Amplitude). So zieht die Schleife weniger Strom. Zur Einstellung der einfachen Amplitude muß die entsprechende Codezeile in 'sender.ino' auskommentiert werden:&lt;br /&gt;
&lt;br /&gt;
  // #define USE_DOUBLE_AMPLTIUDE    1   &lt;br /&gt;
&lt;br /&gt;
*Hochlastwiderstand: Bei einem Schleifenwiderstand kleiner 5 Ohm kann der Strom nicht weiter reduziert werden, indem man die Spannung runterdreht: unterhalb von ca. 6V arbeitet der Arduino nicht mehr richtig. Dann hilft nur noch ein zur Schleife in Reihe geschalteter Hochlastwiderstand (R: z.B. 5 Ohm, 10W). &lt;br /&gt;
&lt;br /&gt;
 @6V (Vin): 5 ohm Hochlastwiderstand =&amp;gt; I=U/R=6V/5Ohm=1.2A   (P=U*I=6V*1.2A=7.2W)&lt;br /&gt;
&lt;br /&gt;
Daher also die mindestens 10W Belastbarkeit des Widerstandes! In diesem Falle auch die 'einfache Amplitude' im Sendercode aktivieren (doppelte Amplitude nicht benutzen!).&lt;br /&gt;
&lt;br /&gt;
=== Senderstromüberwachung (in Entwicklung) ===&lt;br /&gt;
Idee: das Poti VR1 wird durch ein digitales Poti (z.B. MCP4151-5K) ersetzt. So kann die Vin des Motortreibers (und damit auch der Strom) über den Arduino eingestellt werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Lm2596_circuit.jpg | LM2596 Modulschaltplan&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
MCP4151-5K version:&lt;br /&gt;
&lt;br /&gt;
 Vout = 1.23V*(1+VR1/R1)&lt;br /&gt;
&lt;br /&gt;
 Using VR1=5K...&lt;br /&gt;
 Vstart (on reset):  Vout=1.23V*(1+2.5K/0.33K)=10v&lt;br /&gt;
 Vmax:  Vout=1.23V*(1+5K/0.33K)=19v&lt;br /&gt;
&lt;br /&gt;
=== Automatische Schleifensignalabschaltung ===&lt;br /&gt;
Während sich der ArduMower in der Ladestation aufhält, wird das Schleifensignal nicht benötigt und wir können Energie sparen. Zum Erkennen des Ladestatus wird im &amp;quot;Sender_V2&amp;quot; ein Stromsensor (INA169) zwischen Ladegerät und Ladeanschlüsse geschaltet.&lt;br /&gt;
&lt;br /&gt;
Zum aktivieren dieser Funktion ist &amp;quot;#define USE_CHG_CURRENT&amp;quot; auf 1 zu setzen&lt;br /&gt;
&lt;br /&gt;
    #define USE_CHG_CURRENT       1     // use charging current sensor for robot detection? (set to '0' if not connected!)&lt;br /&gt;
&lt;br /&gt;
Desweiteren muss der Stromsensor am analogen Eingang A2 kalibriert werden:&lt;br /&gt;
&lt;br /&gt;
* Der Mover befindet sich nicht in der Ladestation/ Ladestrom = 0 Ampere&lt;br /&gt;
* Den seriellen Monitor aufrufen&lt;br /&gt;
* In der Befehlszeile 1 eingeben und Button &amp;quot;Senden&amp;quot; drücken&lt;br /&gt;
* Mit diesem Befehl wird die Spannung am analogen Eingang A2 gemessen und im EEPROM als Referenzwert &amp;quot;chargeADCZero&amp;quot; gespeichert&lt;br /&gt;
* Am Monitor erscheint folgender Text:&lt;br /&gt;
&lt;br /&gt;
    received key=1&lt;br /&gt;
    calibrateChargeCurrentSensor (note: robot must be outside charging station!)&lt;br /&gt;
    calibration done&lt;br /&gt;
    chargeADCZero=755&lt;br /&gt;
&lt;br /&gt;
Die Kalibrierung ist damit erfolgt. Bei den weiteren Messungen wird im seriellen Monitor unter &amp;quot;chgCurrentADC&amp;quot; der Wandlerwert des analogen Eingangs A2 angezeigt:&lt;br /&gt;
&lt;br /&gt;
    time=4	chgCurrent=0.000	chgCurrentADC=755.55	 isCharging=0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Wir simmulieren einen Ladevorgang durch Belastung der Ladebuchse durch einen 22 Ohm Widerstand. Es fließt ein Ladestrom von ca. 0,8 Ampere. Damit ändert sich der &amp;quot;chgCurrentADC&amp;quot; auf 712.63. &amp;quot;chgCurrent&amp;quot; zeigt den Ladestrom in Ampere&lt;br /&gt;
&lt;br /&gt;
    time=8      chgCurrent= 0.801       chgCurrent  ADC=712.63	  isCharging=1	&lt;br /&gt;
&lt;br /&gt;
Das Flag &amp;quot;ischarging&amp;quot; wird auf &amp;quot;1&amp;quot; gesetzt und die Perimeterschleife wird für die Dauer der Ladung abgeschaltet.&lt;br /&gt;
&lt;br /&gt;
Dies funktioniert neben dem im Sender_V2 verbauten Stromsensor &amp;quot;INA169&amp;quot; auch mit einem Stromsensor ACS 712-5. Bei Verwendung der ACS 712-5 muss jedoch die Berechnung des Ladestromes &amp;quot;chgCurrent&amp;quot; angepasst werden.&lt;br /&gt;
&lt;br /&gt;
    chargeCurrent = ((double)(((int)v)  - ((int)chargeADCZero)))* 0.048875855327468 / 2.5&lt;br /&gt;
   &lt;br /&gt;
Da der ACS 712 nicht so präzise ist, CHG_Current_MIN auf 0,1 Ampere setzen:&lt;br /&gt;
    #define CHG_CURRENT_MIN   0.1&lt;br /&gt;
&lt;br /&gt;
=== Sendersoftware ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;NOTE&amp;lt;/b&amp;gt;: Wenn Du Dich nie zuvor mit Arduino beschäftigt hast, lies zuerst unsere Einführung &amp;lt;b&amp;gt;[http://wiki.ardumower.de/index.php?title=Arduino_first_steps 'erste Schritte mit dem Arduino']&amp;lt;/b&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[File:warning.png]] Wichtig: Vergewissere Dich, dass die Pin-Konfiguration des Arduino im benutzten Code (sender.ino) mit Deinem Senderaufbau übereinstimmt!&lt;br /&gt;
&lt;br /&gt;
Im Code (sender.ino) die passende Option für die automatische Schleifenabschaltung (bei Verwendung des oben beschriebenen Stromsensors Option 1) wählen:&lt;br /&gt;
&lt;br /&gt;
* Define if you have connected a charging current sensor for automatic sender standby:   #define USE_CHG_CURRENT 1   (or 0)&lt;br /&gt;
&lt;br /&gt;
=== Sender Zustandsanzeige ===&lt;br /&gt;
Die LED auf dem Arduino Nano signalisiert den Senderstatus:&lt;br /&gt;
* An: Perimeterschleife ist angeschlossen und arbeitet&lt;br /&gt;
* Aus: Perimeterschleife ist geöffnet (oder durch Defekt unterbrochen) und arbeitet nicht&lt;br /&gt;
* Blinkt: der ArduMower wird geladen und die Perimeterschleife ist zur Energieeinsparung durch die Software deaktiviert&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File:Perimeter_sender_console.png | Ausgabe 'sender.ino' über serielle Konsole&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bei der Platine &amp;quot;Sender V2&amp;quot; ist dieses Signal am Ausgang &amp;quot;D13&amp;quot; verfügbar und auf die LED &amp;quot;Mover_in_Ladestation&amp;quot; geschaltet.&lt;br /&gt;
&lt;br /&gt;
=== Sendertest per PC-Soundkarte ===&lt;br /&gt;
Du kannst den Sender mit Deine Soundkarte und einer Spule testen:&lt;br /&gt;
&lt;br /&gt;
# Verbinde eine Spule (100 mH) mit dem Mikrofon-/Line-Eingang (max 1V) Deiner Soundkarte &lt;br /&gt;
# Starte das [http://www.grauonline.de/alexwww/ardumower/oscilloscope/oscilloscope.html Web-Oszilloskop], und wähle Filter 'Matched', Frequenz '9615' Hz, Visualization Math 'MinMax'&lt;br /&gt;
# Das Ausgangssignal sollte den Abstand zur Perimeterschleife wiederspiegeln - die Polarität (negativ/positiv) zeigt den Aufenthaltsbereich (innerhalb/außerhalb) der Schleife.&lt;br /&gt;
&lt;br /&gt;
Versuche in beiden Fällen (innen/außen), die Spule so dicht wie möglich an der Schleife zu positionieren, um ein auswertbares Signal zu empfangen (zur Erinnerung: wir arbeiten hier ohne die Signalverstärkung durch den Operationsverstärker, da der Soundkarteneingang nur mit max 1V beaufschlagt werden darf).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File:Ardumower_web_oscilloscope_time_signal_received.jpg | Effektivwert des empfangenen Zeit-Signals (Filter Off, Time scale: x5)&lt;br /&gt;
File:Ardumower_web_oscilloscope_time_signal.jpg | Ideales Zeitsignal erzeugt vom Sender (Filter Off, Time scale: x5)&lt;br /&gt;
File:Ardumower_web_oscilloscope.jpg  | Matched Filter Signal (Frequency: 9615 Hz, Math: MinMax)&lt;br /&gt;
File:Perimeter_signal_good_bad.png | Beispiel für gutes / schlechtes Signal&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://www.youtube.com/watch?v=vg5Xg0__66A Video zur Erklärung aller Schritte]&lt;br /&gt;
&lt;br /&gt;
== Empfänger ==&lt;br /&gt;
&lt;br /&gt;
Zum Signalempfang verwenden wir eine Spule (100 mH or 150 mH, nur für die älteren Softwareversionen wird ein Kondensator 4.7nF mit der Spule in Reihe geschaltet) in aufrechter Position, in der Mitte am vorderen Rand des ArduMower. Sie ist zur Verstärkung des empfangenen Signals mit dem Eigang eines LM386 Operationsverstärkers verbunden. Auf dem LM386 Modul wird der Kondensator C3 überbrückt, damit der Verstärker ein Signal zwischen 0..5V statt im Standardbereich -5V..+5V) liefert. Der Ausgang des LM386 sollte mit dem Arduino Analog-Pin ('pinPerimeterLeft') verbunden werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt; &lt;br /&gt;
 File: Perimeter_v2_receiver_circuit.png | Empfängerschaltkreis und überbrückter Kondensator C3&lt;br /&gt;
 File: Ardumower_chassis_components.png | Position der Perimeterspule&lt;br /&gt;
 File: Ardumower_coil_position.jpg | Eine zentrierte, aufrecht montierte Spule &lt;br /&gt;
 File: Ardumower_lm386_circuit.png | LM386 Modul Schaltplan&lt;br /&gt;
 File: Tire_coil_distance.jpg | Abstand Spule-Rad: Einfluß auf den Wendekreis (Kurvenwinkel)&lt;br /&gt;
 File: Coil_motor_layout.png | Zwei Spulen (experimentell), Abstand Spule-Spule Hinterradantrieb 12.5cm, Frontantrieb 19cm&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Empfängerschaltplan:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;background-color: lightgrey; border: solid thin grey;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
                                      LM386 IN  o------- capacitor 4.7nF ----------- coil 100 mH  (or 150 mH)&lt;br /&gt;
 Arduino pinPerimeterLeft   o------o  LM386 OUT&lt;br /&gt;
                                      LM386 GND o----------------------------------- coil&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Achtung''': Die Spule muss direkt an den Verstärkermodul angeschlossen werden. So wird die Störfestigkeit des schwachen Spulensignals gegenüber Einflüssen anderer Komponenten (Motore, DC-DC-Wandler) verbessert. &lt;br /&gt;
&lt;br /&gt;
'''Differentielles Signal''': Die aktuelle Software erfordert das Weglassen des Kondensators 4.7nF in Reihe mit der Spule. &lt;br /&gt;
&lt;br /&gt;
'''Nicht-differentielles Signal''': Mithilfe des Kondensators (4.7 nF) wird das Sendersignal wieder rekonstruiert (s. Abschnitt Signal), der Empfängeschaltkreis ist ein Schwingkreis (C und L und Perimeterschleife fungiert als Antenne) und alle Parameter (C, L, Schleifendrahtlänge) müssen übereinstimmen. Weil dies die Abstimmung schwierig macht, empfehlen wir das nicht-differentielle Signal nicht!&lt;br /&gt;
&lt;br /&gt;
=== Abstand Spule/Verstärker zu Motoren ===&lt;br /&gt;
Achte auf die Einhaltung aller Mindestabstände zwischen den folgenden Komponenten:&lt;br /&gt;
 * Spule zu Radmotor: &amp;gt; 15cm&lt;br /&gt;
 * Spule zu Mähmotor: &amp;gt; 10cm &lt;br /&gt;
 * Spule zu DC-DC Wandler: &amp;gt; 10cm&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
 File: Dcdc_noise.jpg | Achtung: Halte Spule/Vorverstärker von den DC-DC-Wandlern und Motoren fern!!!&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Signalmessungen ===&lt;br /&gt;
Sender / Spule / LM386 Verstärker Ausgangssignale sollten etwa so aussehen: (witere Details über das Signal s. Abschnitt Signal)&lt;br /&gt;
&amp;lt;gallery&amp;gt; &lt;br /&gt;
 File: Perimeter_signal_steps.png | Perimetersignal an Sender, Empfangsspule und LM386 (Theorie)&lt;br /&gt;
 File: coil_signal_without_capacitor.png | differentielles Signal / Spulensignal ohne Kondensator (5V sender, 5 Ohm Schleife - blau: Perimeter, gelb: Spule, grau: LM386 Verstärkerausgang)&lt;br /&gt;
 File: Lm_output_dc_noise.jpg | LM386 Ausgang mit DC Störungen (differentielles Signal / Spule ohne Kondensator)&lt;br /&gt;
 File: Perimeter2_receiver_coil.jpg | LM386 Ausgang (nicht-differentielles Signal / Spule mit Kondensator, 12V Sender, 120m Schleife)&lt;br /&gt;
 File: coil_signal_with_capacitor.png | nicht-differentielles Signal / Spulensignalmit Kondensator (5V Sender, 5 Ohm Schleife - grau: Perimeter, gelb: Spule, blau: LM386 Verstärkerausgang)&lt;br /&gt;
 File: Lm_output_motor_noise.jpg | LM386 Ausgang mit Störungen durch Motoren (differentielles Signal / Spule ohne Kondensator)&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Signal und Rauschmessungen ===&lt;br /&gt;
Einige Spulenmessungen ohne Verstärker aber mit Störungen (Motoren, DC/DC-Wandler etc.): &lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
 File: Coil_60k_parallel.jpg | Spule und 60 kOhm Parallelwiderstand ohne Störungen (Spulenhintergrund-rauschen Vpp=7 mV)&lt;br /&gt;
 File: Coil_dc_converter_noise.jpg | Spule und 60 kOhm Parallelwiderstand mit Störungen durch DC/DC-Wandler (DC/DC-Rauschen Vpp=18 mV)&lt;br /&gt;
 File: Coil_motor_noise.jpg | Spule und 60 kOhm Parallelwiderstand mit Störungen durch Motoren&lt;br /&gt;
 File: Perimeter2_receiver_coil_pwm.jpg | Spulensignal mit seriellem 4.7nF Kondensator, PWM-Perimetersignal (nicht empfohlen) ohne Störungen&lt;br /&gt;
 File: Fft_signal.png | FFT Signal&lt;br /&gt;
 File: Fft_motors.png | FFT Motor-Störungen&lt;br /&gt;
 File: Fft_dcdc.png | FFT DC/DC-Störungen&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ADC-Kalibrierung am Empfänger ===&lt;br /&gt;
[[File:warning.png]] Die ADC-Kalibrierung (bei ausgeschaltetem Sender!) sorgt für eine korrekte Erkennung der Nulllinie (Stille), sodass das empfangene Signal später symmetrisch zur Nulllinie angezeigt wird.&lt;br /&gt;
# Der Perimetersender und die Motoren des ArduMower müssen während der Kalibrierung ausgeschaltet sein!&lt;br /&gt;
# Wenn eine Störung durch einen anderen Sender nicht zu vermeiden ist, muß während der Kalibrierung die Spule entfernt und der Eingang es LM386 mit GND verbunden werden.&lt;br /&gt;
# Führe die ADC-Kalibrierung einmal aus (&amp;quot;pfodApp-&amp;gt;ADC Calibration&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Nach der korrekt durchgeführten Kalibrierung sollte das Signal per pfodApp Plot ('sig') bei ausgeschaltetem Perimetersender ungefähr als Null angezeigt werden. Nach Einschalten des Perimetersenders sollte das Signal etwa diesselbe positive wie negative Maximalamplitude ('Symmetie zur Nulllinie') aufweisen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
 File: perimeter_v2_sig_symmetric.jpg | symmetrisches Signal bei eingeschaltetem Sender (nach ADC-Kalibrierung)&lt;br /&gt;
 File: perimeter_v2_sender_off.jpg | Nullsignal bei ausgeschaltetem Sender (nach ADC-Kalibrierung)&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Problemanalyse und Fehlerbehebung am Empfänger ===&lt;br /&gt;
&lt;br /&gt;
Empfangenes Signal, Filterergebnis und Signalqualität können per Android Handy über die pfodApp-&amp;gt;Plot-&amp;gt;Perimeter angezeigt werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
 File: Perimeter_snr.png | Signal-Rausch-Verhältnis (SNR)&lt;br /&gt;
 File: Perimeter_signal_38khz.png | Signal, Filterergebnis, LP Filterergebnis, innen/außen, Ereigniszähler, Signal ein/aus, Signalqualität&lt;br /&gt;
 File: Perimeter_plot_moving_from_inside_to_outside.png | Fahren von innen nach außen&lt;br /&gt;
 File: Perimeter_v2_plot.png&lt;br /&gt;
 File: Perimeter_v2_plot_new.png&lt;br /&gt;
 File: Ardumower_perimeter2_test.jpg&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Beschreibung der im Plot angezeigten Signalverläufe:&lt;br /&gt;
 sig:  Spulensignal (Sequenz der Rohimpulse nach ADC) als kurzer Snapshot (32 samples), Update alle 20 Sekunden &lt;br /&gt;
       (also 20 Sekundenwarten bis zum nächsten Snapshot)&lt;br /&gt;
 mag:  Filterergebnis: innen (negativ) oder außen (positiv), magnitude: Abstand zur Perimeterschleife / magnetische Signalstärke (RSSI)&lt;br /&gt;
       - wird benutzt zum &amp;lt;b&amp;gt;Perimeter verfolgen&amp;lt;/b&amp;gt;&lt;br /&gt;
 smag: Filterergebnis, low-pass-gefiltert, ohne Vorzeichen (geglätteter mag-Verlauf) - verwendet zur Erkennung des &amp;lt;b&amp;gt;'Sender-aus' Zustandes&amp;lt;/b&amp;gt;&lt;br /&gt;
       Der Grenzwert kann über die pfodApp gesetzt werden (Settings-&amp;gt;Perimeter-&amp;gt;Timed-out if below smag)&lt;br /&gt;
 in:   binäres Ergebnis des low-pass Filters: innerhalb (1) oder außerhalb (0) der Perimeterschleife - wird benutzt zur &amp;lt;b&amp;gt;Erkennung des Perimetergrenzverlaufs&amp;lt;/b&amp;gt;&lt;br /&gt;
       Ist der ArduMower eine bestimmte Zeit außerhalb der Schleife, geht er in den Fehlerstatus. Diese Zeit kann per pfodApp&lt;br /&gt;
       (Settings-&amp;gt;Perimeter-&amp;gt;Timeout (s) if not inside) eingestellt werden&lt;br /&gt;
 cnt:  Anzahl der Wechsel von innen nach außen (counter, Zähler)&lt;br /&gt;
 on:   Perimetersender ist aktiv (1) oder inaktiv (0), basiert auf der Auswertung des smag Ergebnisses&lt;br /&gt;
 qty:  &amp;lt;b&amp;gt;Signalqualität&amp;lt;/b&amp;gt; (Aussage über die Verläßlichkeit der Erkennung 'innerhalb / außerhalb' aus dem Filterergebnis)&lt;br /&gt;
       Verhältnis aus Vergleich mit Mustersignal zu Vergleich mit inversem Mustersignal              &lt;br /&gt;
       1.0 bedeutet schlechte Qualität, Du solltest Werte von 1.5 oder höher)&lt;br /&gt;
&lt;br /&gt;
Im Plot soll der 'mag'-Verlauf frei von Spitzen sein: innerhalb der Schleife sollte das Signal eine negative Kurve, außerhalb eine positive Kurve beschreiben. Weist die Kurve Spitzen auf, versuche folgende Maßnahmen zur Fehlerbeseitigung bzw. Optimierung:&lt;br /&gt;
&lt;br /&gt;
* Benutze immer einen ausreichend langen und korrekt abgerollten Schleifendraht (20m oder länger). Benutze niemals einen zu kurzen (Mindestwiderstand 5 Ohm!) oder gar aufgerollten Draht. &lt;br /&gt;
* Für den 'Wohnzimmertest' sollte ein 100 Ohm Widerstand in Reihe mit 5m Draht bei 6V seine Aufgabe erfüllen.&lt;br /&gt;
* Verbinde die Empfangsspule mit 'pinPerimeterLeft' auf dem PCB (am falschen Pin könnte das Signal 'etwas schwach' reinkommen)&lt;br /&gt;
* Die Spulenpolung kann per pfodApp eingestellt werden (wird 'außen' angezeigt, wenn der Ardumower sich innrhalb der Schleife befindet?). Denselben Effekt hat das Umklemmen der Schleifenenden am Senderausgang.&lt;br /&gt;
* Sollte das Signal schwach erscheinen, überprüfen, ob am Spulenverstärker das Poti &amp;quot;voll aufgedreht&amp;quot; ist! Hilfreich ist die gleichzeitige Anzeige des Signal per pfodApp (Plot --&amp;gt; Perimeter).&lt;br /&gt;
* Die Kabelverbindung zwischen Spule und LM386-Vorverstärker muss möglichst kurz sein - am Besten die Spule direkt am Verstärker anschließen!&lt;br /&gt;
* Halte den Abstand zwische Spule und Motoren sowie DC/DC-Wandlern möglichst groß (30cm oder mehr!)&lt;br /&gt;
* Nutze die magnetische Abschirmwirkung (z.B. Deines Akkus) zwischen Spule und Störquellen.&lt;br /&gt;
* Einstellen der Senderspannung: bei längeren Perimeterschleifen (&amp;gt;80m) die Spannung höher wählen (Potentiometer DC/DC-Wandler), bei kürzeren Schleifen (&amp;gt;25m) eher niedriger (anstreben einer Sendeleistung = Spannung * Strom von ca 10W)&lt;br /&gt;
* Versuche bei laufenden Motoren die Spule leicht zu einer Seite zu neigen um die Signalqualität 'qty' zu erhöhen.&lt;br /&gt;
&lt;br /&gt;
== Messungen ==&lt;br /&gt;
&lt;br /&gt;
Zum Vergleich Beispielwerte, gemessen an verschiedenen, im Gelände getesteten Kombinationen von Sender-/Empfänger-/Schleifenparametern:&lt;br /&gt;
&lt;br /&gt;
1) 120m (0.7mm^2), R=4 Ohm, 6.5V, Spule Vpp 20mV&lt;br /&gt;
 Störsignalpegel (max): smag=192&lt;br /&gt;
 Signal (min): smag=254&lt;br /&gt;
 SNR=Signal/Störsignal=254/192=1.3&lt;br /&gt;
&lt;br /&gt;
2) 30m (0.7mm^2), R=1.0 Ohm (+4 Ohm series R), 6.5V, Spule Vpp 120 mV&lt;br /&gt;
 Störsignalpegel (max): smag=192&lt;br /&gt;
 Signal (min): smag=896&lt;br /&gt;
 SNR=Signal/Störsignal=896/192=4.6&lt;br /&gt;
&lt;br /&gt;
=== Videos ===&lt;br /&gt;
#[http://www.youtube.com/watch?v=FL6K98B2Zsk&amp;amp;feature=player_detailpage#t=265 Perimeter2 Demo]&lt;br /&gt;
#[https://www.youtube.com/watch?v=QCA6Dm3rs3M Test 120m Perimeterschleife]&lt;br /&gt;
#[https://www.youtube.com/watch?v=NIer_kITelc Theorie zu Perimeterschleife und Matched Filter (in deutsch)]&lt;br /&gt;
#[https://www.youtube.com/watch?v=VxJN2xb55dU&amp;amp;feature=youtu.be Sender-PCB]&lt;br /&gt;
&lt;br /&gt;
= Verfolgung der Begrenzungsschleife =&lt;br /&gt;
&lt;br /&gt;
Das Abfahren der Schleife wird über einen softwareseitig realisierten digitalen PID-Regler gesteuert. Die Regler-Parameter (P,I,D) können über ein Android-Handy per pfodApp eingestellt werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Ardumower_perimeter_pid.jpg&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mehr Informationen über PID-Regler sind hier zu finden: &lt;br /&gt;
[http://www.ardumower.de/index.php/de/forum/anleitungen-hilfe/121-pid-regelung-fuer-drehzahl-drehung-etc-richtig-einstellen Forum].&lt;br /&gt;
&lt;br /&gt;
= Sensor Signalfusion =&lt;br /&gt;
Das Magnetfeld der Perimeterschleife könnte man als Input für eine [http://wiki.ardumower.de/index.php?title=Sensor_fusion zur Positionsbestimmung des ArduMower nutzen].&lt;br /&gt;
&lt;br /&gt;
= Weiterführende Links =&lt;br /&gt;
#[http://www.ardumower.de/index.php/en/forum/schleifensensoren-generator/83-ir-bake-generator-empfaenger-diy Ein anderer Navigationsansatz sind Infrarot-Baken]&lt;br /&gt;
#[http://grauonline.de/wordpress/?page_id=364 Mehr Details zum 'matched filter']&lt;br /&gt;
#[http://www.grauonline.de/alexwww/ardumower/oscilloscope/oscilloscope.html Soundkarten-Oszilloskop inklusive 'matched filter']&lt;br /&gt;
&lt;br /&gt;
= Perimeter V1 (für alten Code V0.9.3, nicht mehr empfohlen) =&lt;br /&gt;
&lt;br /&gt;
Dies war die erste Version unseres Perimetersenders und Empfängers. Sie wies einige Nachteile auf (Orientierungsfehler, Keine 'Sender-aus'-Erkennung, keine Möglichkeit zur Feststellung des Aufenthaltsbereiches inner-/außerhalb der Schleife), so dass der Einsatz nicht weiter empfohlen wird. Benutze die Nachfolgeversion V2, wie oben beschrieben.&lt;br /&gt;
&lt;br /&gt;
== Sender ==&lt;br /&gt;
Du kannst den Sender eines kommerziellen Rasenmäroboters nutzen (der hier gezeigte Sender ist kompatibel mit Tianchen oder Rotenbach Mährobotern), oder Du baust Dir selber einen:&lt;br /&gt;
&lt;br /&gt;
Ein Arduino (z.B. Nano) generiert ein Rechtecksignal, welches die Polarität eines Motortreibers (L298N) mit 7.8 Khz schaltet. Dadurch wechselt das Ausgangssignal zwischen Vcc und GND. Ein Schwingkreis verstärkt die Signalspitzen (Resonanzfrequenz ist dieselbe wie die Schaltfrequenz - 7.8 Khz). So reicht es aus, den Motortreiber mit 5V (statt 12V) zu betreiben. Die Spannungsquelle muß etwa 2W (400mA bei 5V) leisten. &lt;br /&gt;
Ein Teil des Signals wird durch den Arduino (ADC) durch eine Diode und einen Spannungsteiler erfaßt. So kann festgestellt werden, ob die Perimeterschleife angeschlossen ist. Durch den Schleifendraht fließt ein Strom von ca. 150mA (Drahtquerschnitt 2-3 mm^2, Länge max 500 m)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Arduino_perimeter_sender.png ‎&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Weil man vielleicht nicht immer die genau passende Empfängespule zur Hand hat, hier ein paar mögliche Kombinationen (Spule / Kondensator), die die Resonanzfrequenz von 7.8 Khz aufweisen:&lt;br /&gt;
*Kombination 1: Spule: 160µH, Kondensator: 3,3µF/50V  (getestet)&lt;br /&gt;
*Kombination 2: Spule 33mH, Kondensator: 12nF (nicht getestet)&lt;br /&gt;
&lt;br /&gt;
==== Stromversorgung ====&lt;br /&gt;
Zur Erzeugung der 5V Spannung wird ein step-down-Wandler (z.B. Module mit LM2596) eingesetzt. Vor dem Einsatz in der Schaltung muß der Wandler auf 5V einjustiert werden. &lt;br /&gt;
&lt;br /&gt;
'''Warnung''' : Lege niemals mehr als 5V auf die Arduino 5V Pins oder Du zerstörst ihn. Deswegen: vorher die Spannung einstellen und kontrollieren!&lt;br /&gt;
&lt;br /&gt;
==== Funktionstest ====&lt;br /&gt;
1. Nach dem Code-Hochladen und Anschliessen der Begrenzungsschleife sollte die Arduino LED an sein. Nun entferne den Schleifendraht und die LED sollte ausgehen.&lt;br /&gt;
&lt;br /&gt;
2. Sollte das nicht so sein, kontrolliere mit einem Voltmeter zum Einen die Spannung zwischen Pin 9 des Arduino und dann die am Motortreiberausgang (OUT_1) jeweils gegen GND - beide sollten eine Gleichspannung  2.5 Volt führen.&lt;br /&gt;
&lt;br /&gt;
3. Hast Du ein Oszilloskop? Dann schließe statt der Begrenzungsschleife das Oszilloskop an den Sender an. Das gemessene Signal sollte folgendermaßen aussehen:&lt;br /&gt;
&lt;br /&gt;
Das Ausgangssignal zeigt eine höhere Ampltude (hohe Spitzenwerte) als das Eingangssignal:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Perimetersignal.jpg|Signal am Senderausgang &lt;br /&gt;
File: Ardumower_perimeter_sender_schematics.png|Grundprinzip des Schwingkreises&lt;br /&gt;
File: Arduino_perimeter_sender_photo.jpg&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Für einen einfachen Empfangstest kannst Du die Empfangsspule direkt ans Oszilloskop anschließen. Das gemessene Signal sollte etwa so  aussehen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Coilsignal.jpg|Signal an der Empfangsspule&lt;br /&gt;
File: Fft.jpg|Signal im Frequenzspektrum, überlagert durch Motorstörungen&lt;br /&gt;
File: Ardumower_perimeter_spectrum_plot.jpg| Anzeige des Frequenzspektrums über pfodApp&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Empfänger ==&lt;br /&gt;
Der Empfänger nutzt zwei Spulen, die rechts und links vorn im ArduMower montiert sind. Die Signalstärke der linken und rechten Spule werden ausgewertet, um sie vergleichen zu können.&lt;br /&gt;
&lt;br /&gt;
Prinzip:&lt;br /&gt;
# Verstärkung der alternierenden Signale per OPAMP&lt;br /&gt;
# Optional: Bandpass-Filterung zum Ausblenden der Störungen durch Motore etc.&lt;br /&gt;
# Ermittlung der Signalstärke von linker und rechter Spule&lt;br /&gt;
&lt;br /&gt;
Vorteil dieser Version: analoge Auswertungfunktioniert hervorragend.&lt;br /&gt;
Nachteil: Du kannst nicht feststellen, ob Du Dich gerade innerhalb oder außerhalb der Begrenzungsschleife aufhälst, wenn Du nicht jede Überfahrt des Begrenzungsdrahtes mitprotokollierst. Es ist auch nicht möglich festzustellen, ob Du die Begrenzungsschleife im oder gegen den Uhrzeigersinn abfährst.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Arduino_perimeter_receiver.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Eine Spule empfängt das Signal des Senders. Ein Schwingkreis (LC: SPule und Kondensator)verstärkt das empfangene Signal bei einer Resonanzfrequenz von 7.8 kHz. Das Signal wird weiter verstärkt durch eien LM386-Verstärker (hier: Arduino Soundsensor mit Spule statt Mikrofon). Ein Bandpassfilter (digitaler Filter, FFT - Fast Fourier Transformation) läuft auf dem Arduino und filtert die gewünschte Frequenz (7.8 Khz) und erzeugt ein PWM-Signal (Pulsbreite proportional zur Signalstärke). Über einen Tiefpassfilter wird das PWM-Signal in eine Gleichspamnnung gewandelt.&lt;br /&gt;
Beachte: Die Verdrahtung zwischen ist vereinfacht dargestellt - Details der Verdrahtung s. Schaltplan.&lt;br /&gt;
&lt;br /&gt;
Wir haben folgende Kombinationen von Spulen und Verstärkern getestet:&lt;br /&gt;
&lt;br /&gt;
'Arduino Soundsensor'&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Soundsensor.jpg| Signalverstärkung über LM386 - Arduino Soundsensor mit Spule statt Mikrofon&lt;br /&gt;
File: YwRobot_Sensor.jpg |Arduino Soundsensor mit LM386&lt;br /&gt;
File: YwRobot_circuit.png |Arduino Soundsensor Modulschaltplan&lt;br /&gt;
File: Coil_85mh.jpg|85 mH Spule&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
LM386 Verstärker&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Lm386_amplifier.jpg| LM386 Versärker (200-fach)&lt;br /&gt;
File: Lm386_modified.jpg| modifizierter LM386-Verstärker&lt;br /&gt;
File: Ardumower_lm386_circuit.png | LM386 Modulschaltplan&lt;br /&gt;
File: Coil_small.jpg| 104 mH Spule&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wichtig: Bei Verwendung dieses Verstärkers muß der Kondensator C3 überbrückt werden (erzeugt das für den Arduino erforderliche VCC/2 offset). Dies Spule schließt man an &amp;quot;IN&amp;quot; und &amp;quot;GND&amp;quot; an.&lt;br /&gt;
&lt;br /&gt;
'''Beachte''': die Spule unbedingt direkt am Verstärkermodul befestigen. Dies minimiert die Störeinflüsse durch andere Komponenten wie z.B. Motoren auf das schwache Spulensignal.&lt;br /&gt;
=== Funktionstest ===&lt;br /&gt;
# Stelle eine korrekte Funktion des Schleifensenders sicher (wie bereits weiter oben beschrieben).&lt;br /&gt;
# Drehe das Potentiometer des Arduino Soundsensors auf Maximum (gegen den Uhrzegersinn).&lt;br /&gt;
# Lade das Programm auf den Arduino und bewege eine Spule in Richtung des Begrenzungsdrahtes: die LED des Arduino sollte zu blinken beginnen. Halte nun beide Spulen im gleichen Abstand über den Begrenzungsdraht: die LED sollte nun permanent leuchten.&lt;br /&gt;
# Wenn das so nicht funktioniert, öffne die serielle Konsole und  prüfe die Signalwerte.&lt;br /&gt;
&lt;br /&gt;
=== Spulenauswahl ===&lt;br /&gt;
mathematische Näherungsberechnung einer Spule:&lt;br /&gt;
&lt;br /&gt;
 L = 1nH x n² x ((D² / mm² ) / (l / mm))&lt;br /&gt;
 l = Spulenlänge&lt;br /&gt;
 D = Spulendurchmesser&lt;br /&gt;
&lt;br /&gt;
Beispiel: eine Induktion von 85 mH, Durchmesser 10 mm, Länge 40 mm erfordert ca. 5830 Windungen.&lt;br /&gt;
&lt;br /&gt;
Diese Induktivität von 85 mH und ein Kondensator von 4.7 nF führen zu einer Resonanzfrequenz von 7963 Hz.&lt;br /&gt;
&lt;br /&gt;
 f0 = 1 / (2 * PI * sqrt(L * C)) = 1 / (2 * PI * sqrt(0.085 H * 0.0000000047 F)) =  7963 Hz&lt;br /&gt;
&lt;br /&gt;
Weil man vielleicht nicht immer die genau passende Empfängerspule zur Hand hat, hier ein paar mögliche Kombinationen (Spule / Kondensator), die die Resonanzfrequenz von 7.8 Khz aufweisen:&lt;br /&gt;
 Kombination 1: Spule: 85mH, Kondensator: 4.7nF  (getestet)&lt;br /&gt;
 Kombination 2: Spule: 104mH, Kondensator: 4nF (getestet)&lt;br /&gt;
&lt;br /&gt;
=== Anordnung der Spulen ===&lt;br /&gt;
die Spulen sind am Boden des ArduMower so angeordnet, dass sie einen Winkel von 90 Grad einschließen, d.h. jede ist um 45 Grad aus der Längsachse gedreht.&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Ardumower_spulen.jpg| Anordnung der Spulen&lt;br /&gt;
File: L50_coils.jpg | Beispiel (Ambrogio L50)&lt;br /&gt;
File: L50_parcours.jpg | Testparcours&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Messung der Signalstärke ===&lt;br /&gt;
Zum Vergleich von Messungen wurde die Signalstärke bei verschiedenen Schleifenabständen bestimmt. Die Signalsärke (soll heißen: der berechnete ADC-Wert) kann in der Android pfodApp angezeigt werden. Der Abstand (cm) ist der berechnete Wert zwischen Perimeterschleife und Spule (eingebaut im ArduMower).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Perimeter_plot.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Schleifenverlegung ===&lt;br /&gt;
&lt;br /&gt;
Wichtig bei der Schleifenverlegung ist die Vermeidung von scharfen Ecken: Rundungen sind angesagt! Fährt der Ardumower exakt über eine scharfe Ecke, kann er unter Umständen die Schleife nicht mehr orten, da Spule und Schleife fluchten / parallel stehen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Schleifen_blind.jpg  | Nicht empfohlen: ArduMower kann keine scharfen Ecken orten!&lt;br /&gt;
File: Ardumower_coil_signal.png| Wie ändert sich das Sinal, wenn die Spule gedreht wird??&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Videos ===&lt;br /&gt;
#[http://www.youtube.com/watch?v=FGaUSg-uUxk Perimeter Stoptest]&lt;br /&gt;
#[http://www.youtube.com/watch?v=8R8QaffNlJw Perimeter Verfolgungstest]&lt;br /&gt;
#[http://www.youtube.com/watch?v=CftrnetFVYc&amp;amp;feature=youtu.be Test zum Finden und Verfolgen mit L50]&lt;br /&gt;
#[http://www.youtube.com/watch?feature=player_embedded&amp;amp;v=fjuQViS2rHM Test zum Finden und Verfolgen mit Rotenbach]&lt;/div&gt;</summary>
		<author><name>Deejay</name></author>	</entry>

	<entry>
		<id>https://wiki.ardumower.de/index.php?title=Perimeter-Schleife&amp;diff=2777</id>
		<title>Perimeter-Schleife</title>
		<link rel="alternate" type="text/html" href="https://wiki.ardumower.de/index.php?title=Perimeter-Schleife&amp;diff=2777"/>
				<updated>2015-09-25T14:18:30Z</updated>
		
		<summary type="html">&lt;p&gt;Deejay: /* Automatische Schleifensignalabschaltung */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Zusammenfassung=&lt;br /&gt;
Eine Begrenzungsschleife (oder Perimeterdraht) ist eine Art 'elektronischer Zaun': er veranlaßt den ArduMower zum Stoppen / Umkehren sobald die Grenze erreicht ist. Nicht in jeder Umgebung ist eine Begrenzungsschleife notwendig - Rasensensoren könnten eine Alternative sein.&lt;br /&gt;
&lt;br /&gt;
Das Prinzip: durch den im Garten verlegten Schleifendraht wird ein Signal gesendet, das der Ardumower ausgewertet. Gebraucht werden ein Sender zur Erzeugung und Übergabe des Signals an die Schleife und ein Empfänger zur Signalauswertung im ArduMower.&lt;br /&gt;
&lt;br /&gt;
Und so wird das Signal empfangen: eine (oder zwei) Empfangsspulen liefern ein Signal, dessen Stärke je nach Abstand zwischen Schleifendraht und Empfangsspule(n) variiert. Interessanterweise wechselt das Signal in dem Moment seine Polarität, wo der ArduMower (genauer: die Empfänger-Spule) den Schleifendraht überfährt. Es gibt zwei prinzipielle Möglichkeiten, den Begrenzungsdraht zu orten. Wir haben beide Methoden implementiert (Perimeter V1 und V2) wie nachfolgend beschrieben.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Ardumower_perimeter.jpg | Perimeterdraht&lt;br /&gt;
File: Ardumower_perimeter_components.jpg | Komponenten&lt;br /&gt;
File: Perimeter_signal_strength.jpg | Signalstärke&lt;br /&gt;
File: Perimeter_gradient.png | Verlauf der Signalstärke&lt;br /&gt;
File: Ardumower_perimeter_magneticfield.png | Perimeter-Magnetfeld&lt;br /&gt;
File: Perimeter_excluding_objects.png | Objekte ausschließen&lt;br /&gt;
File: Perimeter_divide.png | Flächen aufteilen&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://hyperphysics.phy-astr.gsu.edu/hbase/magnetic/magcur.html Magnetfeld Berechnungstool]&lt;br /&gt;
&lt;br /&gt;
Videos:&lt;br /&gt;
[http://youtu.be/r4ZMgasMkH0 Magnetfeld Demovideo]&lt;br /&gt;
&lt;br /&gt;
=Begrenzungsschleife V2 (erforderlich für aktuellen ArduMower Code)=&lt;br /&gt;
&lt;br /&gt;
[[Image:Yt-brand-standard-logo-95x40.png|thumb|180px|https://www.youtube.com/watch?v=NIer_kITelc&amp;amp;feature=youtu.be]]&lt;br /&gt;
&lt;br /&gt;
Dies ist die neue Version von Sender und Empfänger für die Begrenzungsschleife (erhältlich über den [https://www.marotronics.de/index.php?k=7 shop] [[File: shopping.png|link=https://www.marotronics.de/index.php?k=7]]).&lt;br /&gt;
&lt;br /&gt;
Beim Überfahren des Schleifendrahtes passiert nun etwas Interessantes: die Polarität der Signalspannung wechselt von negativ auf positiv bzw. umgekehrt - je nachdem, ob man von innen oder außen kommt. Dadurch werden sowohl das Überfahren selbst als auch der Status (Aufenthalt innerhalb oder außerhalb der Schleife) eindeutig erkennbar. Wie bei der V1 nutzen wir zur Signalverstärkung wieder den Motortreiber für das Ausgangssignal und einen Operationsverstärker für das Eingangssignal von der Empfangsspule. Der Sender übergibt eine digitale Signalfolge (auch als 'pseudo-noise' bezeichnet) an die Schleife, die vom Empfänger über einen software-basierten digitalen [http://en.wikipedia.org/wiki/Matched_filter Matched-Filter] ausgewertet wird. Der Filter liefert als Ergebnis einen Peak: positiv - ArduMower innerhalb oder negativ - ArduMower außerhalb der Begrenzungsschleife.&lt;br /&gt;
&lt;br /&gt;
Prinzipablauf:&lt;br /&gt;
  Senderseite&lt;br /&gt;
# Erzeugen des Ausgangssignals durch den Arduino Nano&lt;br /&gt;
# Verstärkung des Ausgangssignals durch den Motortreiber (MC33926), Schleifendrahtenden anstatt eines Motors an den Ausgang anschließen&lt;br /&gt;
&lt;br /&gt;
  ArduMower&lt;br /&gt;
# Eingangssignal per Empfangsspule aufnehmen&lt;br /&gt;
# Eingangssignal per Operationsverstärker (z.B. LM386) verstärken&lt;br /&gt;
# ADC sampling durch Arduino Mega&lt;br /&gt;
# Signalfilterung and Analyse durch ein digitales Filter (software-basierter Matched-Filter-Algorithmus)&lt;br /&gt;
# Auswertung des matched filter Ergebnisses (zur Feststellung des Aufenthaltbereiches inner- / außerhalb der Schleife, Schleifenabfahren usw.)&lt;br /&gt;
&lt;br /&gt;
Folgende Bilder erklären den Wechsel der Signalpolarität innerhalb und außerhalb der Schleife. Sie zeigen auch die Richtung der magnetischen Flusslinien, die vom Begrenzungsdraht ausgehen und wie sie die Spule innerhalb und außerhalb der Begrenzungsschleife treffen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Ardumower_perimeter2.jpg| Innen/außen-Erkennung über den Polaritätswechsel&lt;br /&gt;
File: Fluxdirections.png| Flussrichtungen&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Signal ==&lt;br /&gt;
Der Schlüssel zu einem guten Empfang des Perimetersignals überall auf dem Rasen ist die Optimierung des Signal-Rausch-Abstandes (SNR=signal/noise ratio). Um das SNR zu maximieren, gibt es zwei Ansätze:&lt;br /&gt;
# Signalstärke hochfahren (elektr. Leistung) oder&lt;br /&gt;
# Erhöhung der Signallänge&lt;br /&gt;
&lt;br /&gt;
Wir nutzen eine Kombination beider Ansätze: der Sender wiederholt ständig einen digitalen Code ('pseudonoise4_pw') mit 9615 Hz :&lt;br /&gt;
&lt;br /&gt;
 1,1,-1,-1,1,-1,1,-1,-1,1,-1,1,1,-1,-1,1,-1,-1,1,-1,-1,1,1,-1&lt;br /&gt;
&lt;br /&gt;
'1' bedeutet einen positiven Signalimpuls, '-1' einen negativen. Der kürzeste erzeugte Signalwechsel ist '-1,1', das entspräche dem höchsten Ton (wenn man es hörbar darstellen würde) von 4808 Hz. Das andere Extrem wäre der längste erzeugte Signalwechsel mit '1,1,-1,-1', bei einer Frequenz von 2404 Hz.&lt;br /&gt;
&lt;br /&gt;
Die Spule erkennt nur diese Signalwechsel des Sendersignals. So - also ohne den Kondensator in Serienschaltung zur Spule - zeigt sich das (differentielle) Empfangssignal wie folgt:&lt;br /&gt;
&lt;br /&gt;
 1,0,-1, 0,1,-1,1,-1, 0,1,-1,1,0,-1, 0,1,-1, 0,1,-1, 0,1,0,-1&lt;br /&gt;
&lt;br /&gt;
Verwendet man jedoch den Kondensator in Reihe zur Spule, sind gesendetes und empfangenes (nicht-differentielles) Signal vom Prinzipverlauf wieder identisch.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Perimeter_signal_steps.png | Perimetersignal an Sender und Empfangsspule&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Arduino ADC wertet das Empfangssignal mit einer Abtastrate von 9615 Hz aus.&lt;br /&gt;
&lt;br /&gt;
== Filter ==&lt;br /&gt;
Die gewählte Signalform weist eine spezielle Charakteristik auf: &lt;br /&gt;
&lt;br /&gt;
Weil es wie ein Zufallssignal aussieht, stimmt es nicht in Teilen mit sich selbst überein, sondern erst als komplette Sequenz ([http://en.wikipedia.org/wiki/Matched_filter Übereinstimmung]). Aufgrund dieser Charakteristik können die Startpunkte der Signalsequenz durch ein [http://en.wikipedia.org/wiki/Matched_filter matched filter] ('Korrelation' mit dem gesuchten Signalmuster) ermittelt werden: sie erscheinen als Nadelimpuls im Filterergebnis - und zwar auch bei einem stark verrauschten Signal (z.B. durch Störimpulse von Motoren etc.). &lt;br /&gt;
Die Polarität der Spitze (positiv oder negativ) gibt an, ob sich die Spule inner- oder außerhalb der Begrenzungsschleife befindet.&lt;br /&gt;
&lt;br /&gt;
Du kannst sehen, wie das funktioniert: für ein tiefergehendes Verständnis des Perimetersignals und des Filters schau Dir folgende Simulation (in englisch) an: &lt;br /&gt;
[http://www.grauonline.de/alexwww/ardumower/filter/filter.html Matched filter simulation]&lt;br /&gt;
&lt;br /&gt;
# Wähle eine Perimetersignalform: setze den Schieberegler (rechts oben 'example signals') auf ''pseudonoise4_pw'' (Wert 23).&lt;br /&gt;
# Hebe den Wert des Störsignal ein wenig an: setze den Schieberegler ('noise') auf den Wert 2.&lt;br /&gt;
# Der Plot 'Matched filter' (links unten) zeigt, dass das wiederholte Signal 3 mal entdeckt wurde.&lt;br /&gt;
# Nun simuliere die Bewegung der Spule aus der Perimeterschleife nach außen:  Klicke auf 'Invert' und setze damit die Verstärkung auf '-1'. Der Filter liefert 3 negative Spitzen.&lt;br /&gt;
&lt;br /&gt;
Mehr dazu unter: [https://www.youtube.com/watch?v=NIer_kITelc Video über matched filter]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
  File: Matched_filter_principle.png| Matched Filter&lt;br /&gt;
  File: Perimeter_signal_good_bad.png|Beispiele für gutes / schlechtes Signal &lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Sender ==&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Schleifensender_Ardumower_V2.JPG | Sender Schaltplan&lt;br /&gt;
File: Ardumower_sender_pcb.jpg| Ardumower Sender PCB&lt;br /&gt;
File: Perimeter2_sender_open.jpg| Sendersignal (6.5V, ohne Perimeterschleife)&lt;br /&gt;
File: Perimeter2_sender_closed.jpg| Sendersignal (6.5V, 120m Perimeterschleife 7 Ohm)&lt;br /&gt;
File: Sender_v2_signal_sender_5v_4ohm.png| Sendersignal (6.5V, 4 Ohm Widerstand + 2m Perimeterschleife)&lt;br /&gt;
File: perimeter_wiring_motor_driver.png | Varianten der Motortreiberschaltung&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wir benutzen einen Arduino Nano zur Erzeugung und einen Mototreiber als Ausgangsverstärker des Signals. Der Motortreiber wird mit 3,2 kHz betrieben (2 Impulsbreiten 4808 und 2404 Hz). Bei ausreichend langen Schleifendrähten benötigt der Generator typischerweise 10W (6.5V, 1.7A). Unser Motortreiber verfügt über eine integrierte Strombegrenzung und eine Übertemperaturabschaltung (z.B. MC33926). Die Schleifenlänge kann im Bereich 20 - 450m betragen und muss mindestens 5 Ohm Widerstand aufweisen.&lt;br /&gt;
&lt;br /&gt;
Sender Pin-Belegung:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;background-color: lightgrey; border: solid thin grey;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 motor driver M1OUT1     o---------- perimeter loop (20-450 meters, &amp;gt; 5 Ohm) --+&lt;br /&gt;
                                                                               |&lt;br /&gt;
 motor driver M1OUT2     o---------- perimeter loop ---------------------------+&lt;br /&gt;
 motor driver Vin        o-- 6.5V&lt;br /&gt;
 motor driver M1IN1      o-- Arduino Nano pinIN1&lt;br /&gt;
 motor driver M1IN2      o-- Arduino Nano pinIN2&lt;br /&gt;
 motor driver M1PWM_nD2  o-- Arduino Nano pinPWM&lt;br /&gt;
 motor driver M1nSF      o-- Arduino Nano pinFault&lt;br /&gt;
 motor driver M1FB       o-- Arduino Nano pinFeedback&lt;br /&gt;
 motor driver EN         o-- Arduino Nano pinEnable&lt;br /&gt;
 motor driver VDD        o-- Arduino +5V&lt;br /&gt;
 motor driver M1D1       o-- GND (via Jumper)&lt;br /&gt;
 motor driver SLEW       o-- VDD (via Jumper)&lt;br /&gt;
 &lt;br /&gt;
               |---------o-- GND&lt;br /&gt;
 Potentiometer 100k -----o-- Arduino Nano pinPot&lt;br /&gt;
               |---------o-- Arduino +5V&lt;br /&gt;
 &lt;br /&gt;
 ACS712-05 OUT ------o-- Arduino Nano pinChargeCurrent    &lt;br /&gt;
 ACS712-05 A   ------o-- charging pin (+)&lt;br /&gt;
 ACS712-05 B   ------o-- battery charger +24V&lt;br /&gt;
 battery charger GND-o-- charging pin (-)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Beispiel für den Senderaufbau mit einer Lochrasterplatine:  [http://www.braunschweiger.org/content/download/SenderR212.pdf] &lt;br /&gt;
[http://www.braunschweiger.org/content/images/SenderR212_Front.jpg] [http://www.braunschweiger.org/content/images/SenderR212_Back.jpg]'''&lt;br /&gt;
&lt;br /&gt;
=== Sender Perimeterschleife und Rasengröße ===&lt;br /&gt;
Bei einer Betriebsspannung von 6.5V sollte die Perimeterschleife nicht über 450 m lang sein. (Für den 'Wohnzimmertest' tut es auch ein 100 Ohm Widerstand in Reihe mit 5m Schaltdraht.) &lt;br /&gt;
&lt;br /&gt;
Setzen wir mal eine kreisrunde Rasenfläche voraus erhalten wir für 450m Schleifenlänge (= Kreisumfang) einen Radius von 70m:&lt;br /&gt;
 radius = Schleifenlänge / (2*PI) = 450m / (2*PI) = 70 meter&lt;br /&gt;
&lt;br /&gt;
Wäre die Signalqualität nicht durch den Radius begrenzt, entspräche der eingegrenzte Rasen einer Fläche von 15000m2:&lt;br /&gt;
 Fläche = PI * (radius*radius) = PI * (70m * 70m) = 15000 m2&lt;br /&gt;
&lt;br /&gt;
Da jedoch der maximale Radius für ausreichende Signalqualität bei ca. 18m liegt, ergibt sich die maximale Rasenfläche (Annahme immer noch: Kreisfläche!) zu 1000m2: Fläche = PI * (radius*radius) = PI * (18m * 18m) = 1000 m2&lt;br /&gt;
&lt;br /&gt;
=== Einstellung der Senderstromstärke ===&lt;br /&gt;
Zur Einstellung der Sendeleistung (Spannung*Strom) gibt es verschiedene Möglichkeiten:&lt;br /&gt;
&lt;br /&gt;
*Spannung am DC/DC-Wandler: die Versorgungsspannung des Motortreibers kann über das Poti des Wandlers zwischen 6.5 bis 12V eingestellt werden. Das ist der empfohlene Weg. Beachte: der MC33926 Motortreibermotor benötigt eine Mindestspannung (Vin) von 5V. Bei zu geringer Spannung regelt der Motortreiber sporadisch ab und die Arduino-LED zur Anzeige von Unterspannung fängt an zu blinken.&lt;br /&gt;
&lt;br /&gt;
*Normale Amplitude: statt die Perimeterschleife zwischen +Vin und -Vin (doppelte Amplitude ist Standardwert) umzuschalten, kann der Motortreiber auch nur zwischen +Vin und GND (einfache Amplitude). So zieht die Schleife weniger Strom. Zur Einstellung der einfachen Amplitude muß die entsprechende Codezeile in 'sender.ino' auskommentiert werden:&lt;br /&gt;
&lt;br /&gt;
  // #define USE_DOUBLE_AMPLTIUDE    1   &lt;br /&gt;
&lt;br /&gt;
*Hochlastwiderstand: Bei einem Schleifenwiderstand kleiner 5 Ohm kann der Strom nicht weiter reduziert werden, indem man die Spannung runterdreht: unterhalb von ca. 6V arbeitet der Arduino nicht mehr richtig. Dann hilft nur noch ein zur Schleife in Reihe geschalteter Hochlastwiderstand (R: z.B. 5 Ohm, 10W). &lt;br /&gt;
&lt;br /&gt;
 @6V (Vin): 5 ohm Hochlastwiderstand =&amp;gt; I=U/R=6V/5Ohm=1.2A   (P=U*I=6V*1.2A=7.2W)&lt;br /&gt;
&lt;br /&gt;
Daher also die mindestens 10W Belastbarkeit des Widerstandes! In diesem Falle auch die 'einfache Amplitude' im Sendercode aktivieren (doppelte Amplitude nicht benutzen!).&lt;br /&gt;
&lt;br /&gt;
=== Senderstromüberwachung (in Entwicklung) ===&lt;br /&gt;
Idee: das Poti VR1 wird durch ein digitales Poti (z.B. MCP4151-5K) ersetzt. So kann die Vin des Motortreibers (und damit auch der Strom) über den Arduino eingestellt werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Lm2596_circuit.jpg | LM2596 Modulschaltplan&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
MCP4151-5K version:&lt;br /&gt;
&lt;br /&gt;
 Vout = 1.23V*(1+VR1/R1)&lt;br /&gt;
&lt;br /&gt;
 Using VR1=5K...&lt;br /&gt;
 Vstart (on reset):  Vout=1.23V*(1+2.5K/0.33K)=10v&lt;br /&gt;
 Vmax:  Vout=1.23V*(1+5K/0.33K)=19v&lt;br /&gt;
&lt;br /&gt;
=== Automatische Schleifensignalabschaltung ===&lt;br /&gt;
Während sich der ArduMower in der Ladestation aufhält, wird das Schleifensignal nicht benötigt und wir können Energie sparen. Zum Erkennen des Ladestatus wird im &amp;quot;Sender_V2&amp;quot; ein Stromsensor (INA169) zwischen Ladegerät und Ladeanschlüsse geschaltet.&lt;br /&gt;
&lt;br /&gt;
Zum aktivieren dieser Funktion ist &amp;quot;#define USE_CHG_CURRENT&amp;quot; auf 1 zu setzen&lt;br /&gt;
&lt;br /&gt;
    #define USE_CHG_CURRENT       1     // use charging current sensor for robot detection? (set to '0' if not connected!)&lt;br /&gt;
&lt;br /&gt;
Desweiteren muss der Stromsensor am analogen Eingang A2 kalibriert werden:&lt;br /&gt;
&lt;br /&gt;
* Der Mover befindet sich nicht in der Ladestation/ Ladestrom = 0 Ampere&lt;br /&gt;
* Den seriellen Monitor aufrufen&lt;br /&gt;
* In der Befehlszeile 1 eingeben und Button &amp;quot;Senden&amp;quot; drücken&lt;br /&gt;
* Mit diesem Befehl wird die Spannung am analogen Eingang A2 gemessen und im EEPROM als Referenzwert &amp;quot;chargeADCZero&amp;quot; gespeichert&lt;br /&gt;
* Am Monitor erscheint folgender Text:&lt;br /&gt;
&lt;br /&gt;
    received key=1&lt;br /&gt;
    calibrateChargeCurrentSensor (note: robot must be outside charging station!)&lt;br /&gt;
    calibration done&lt;br /&gt;
    chargeADCZero=755&lt;br /&gt;
&lt;br /&gt;
Die Kalibrierung ist damit erfolgt. Bei den weiteren Messungen wird im seriellen Monitor unter &amp;quot;chgCurrentADC&amp;quot; der Wandlerwert des analogen Eingangs A2 angezeigt:&lt;br /&gt;
&lt;br /&gt;
    time=4	chgCurrent=0.000	chgCurrentADC=755.55	 isCharging=0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Wir simmulieren einen Ladevorgang durch Belastung der Ladebuchse durch einen 22 Ohm Widerstand. Es fließt ein Ladestrom von ca. 0,8 Ampere. Damit ändert sich der &amp;quot;chgCurrentADC&amp;quot; auf 712.63. &amp;quot;chgCurrent&amp;quot; zeigt den Ladestrom in Ampere&lt;br /&gt;
&lt;br /&gt;
    time=8      chgCurrent= 0.801       chgCurrent  ADC=712.63	  isCharging=1	&lt;br /&gt;
&lt;br /&gt;
Das Flag &amp;quot;ischarging&amp;quot; wird auf &amp;quot;1&amp;quot; gesetzt und die Perimeterschleife wird für die Dauer der Ladung abgeschaltet.&lt;br /&gt;
&lt;br /&gt;
Dies funktioniert neben dem im Sender_V2 verbauten Stromsensor &amp;quot;INA169&amp;quot; auch mit einem Stromsensor ACS 712-5. Bei Verwendung der ACS muss jedoch die Berechnung des Ladestromes &amp;quot;chgCurrent&amp;quot; angepasst werden.&lt;br /&gt;
&lt;br /&gt;
    chargeCurrent = ((double)(((int)v)  - ((int)chargeADCZero)))* 0.048875855327468 / 2.5&lt;br /&gt;
   &lt;br /&gt;
Da der ACS 712 nicht so präzise ist, CHG_Current_MIN auf 0,1 Ampere setzen:&lt;br /&gt;
    #define CHG_CURRENT_MIN   0.1&lt;br /&gt;
&lt;br /&gt;
=== Sendersoftware ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;NOTE&amp;lt;/b&amp;gt;: Wenn Du Dich nie zuvor mit Arduino beschäftigt hast, lies zuerst unsere Einführung &amp;lt;b&amp;gt;[http://wiki.ardumower.de/index.php?title=Arduino_first_steps 'erste Schritte mit dem Arduino']&amp;lt;/b&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[File:warning.png]] Wichtig: Vergewissere Dich, dass die Pin-Konfiguration des Arduino im benutzten Code (sender.ino) mit Deinem Senderaufbau übereinstimmt!&lt;br /&gt;
&lt;br /&gt;
Im Code (sender.ino) die passende Option für die automatische Schleifenabschaltung (bei Verwendung des oben beschriebenen Stromsensors Option 1) wählen:&lt;br /&gt;
&lt;br /&gt;
* Define if you have connected a charging current sensor for automatic sender standby:   #define USE_CHG_CURRENT 1   (or 0)&lt;br /&gt;
&lt;br /&gt;
=== Sender Zustandsanzeige ===&lt;br /&gt;
Die LED auf dem Arduino Nano signalisiert den Senderstatus:&lt;br /&gt;
* An: Perimeterschleife ist angeschlossen und arbeitet&lt;br /&gt;
* Aus: Perimeterschleife ist geöffnet (oder durch Defekt unterbrochen) und arbeitet nicht&lt;br /&gt;
* Blinkt: der ArduMower wird geladen und die Perimeterschleife ist zur Energieeinsparung durch die Software deaktiviert&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File:Perimeter_sender_console.png | Ausgabe 'sender.ino' über serielle Konsole&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bei der Platine &amp;quot;Sender V2&amp;quot; ist dieses Signal am Ausgang &amp;quot;D13&amp;quot; verfügbar und auf die LED &amp;quot;Mover_in_Ladestation&amp;quot; geschaltet.&lt;br /&gt;
&lt;br /&gt;
=== Sendertest per PC-Soundkarte ===&lt;br /&gt;
Du kannst den Sender mit Deine Soundkarte und einer Spule testen:&lt;br /&gt;
&lt;br /&gt;
# Verbinde eine Spule (100 mH) mit dem Mikrofon-/Line-Eingang (max 1V) Deiner Soundkarte &lt;br /&gt;
# Starte das [http://www.grauonline.de/alexwww/ardumower/oscilloscope/oscilloscope.html Web-Oszilloskop], und wähle Filter 'Matched', Frequenz '9615' Hz, Visualization Math 'MinMax'&lt;br /&gt;
# Das Ausgangssignal sollte den Abstand zur Perimeterschleife wiederspiegeln - die Polarität (negativ/positiv) zeigt den Aufenthaltsbereich (innerhalb/außerhalb) der Schleife.&lt;br /&gt;
&lt;br /&gt;
Versuche in beiden Fällen (innen/außen), die Spule so dicht wie möglich an der Schleife zu positionieren, um ein auswertbares Signal zu empfangen (zur Erinnerung: wir arbeiten hier ohne die Signalverstärkung durch den Operationsverstärker, da der Soundkarteneingang nur mit max 1V beaufschlagt werden darf).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File:Ardumower_web_oscilloscope_time_signal_received.jpg | Effektivwert des empfangenen Zeit-Signals (Filter Off, Time scale: x5)&lt;br /&gt;
File:Ardumower_web_oscilloscope_time_signal.jpg | Ideales Zeitsignal erzeugt vom Sender (Filter Off, Time scale: x5)&lt;br /&gt;
File:Ardumower_web_oscilloscope.jpg  | Matched Filter Signal (Frequency: 9615 Hz, Math: MinMax)&lt;br /&gt;
File:Perimeter_signal_good_bad.png | Beispiel für gutes / schlechtes Signal&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://www.youtube.com/watch?v=vg5Xg0__66A Video zur Erklärung aller Schritte]&lt;br /&gt;
&lt;br /&gt;
== Empfänger ==&lt;br /&gt;
&lt;br /&gt;
Zum Signalempfang verwenden wir eine Spule (100 mH or 150 mH, nur für die älteren Softwareversionen wird ein Kondensator 4.7nF mit der Spule in Reihe geschaltet) in aufrechter Position, in der Mitte am vorderen Rand des ArduMower. Sie ist zur Verstärkung des empfangenen Signals mit dem Eigang eines LM386 Operationsverstärkers verbunden. Auf dem LM386 Modul wird der Kondensator C3 überbrückt, damit der Verstärker ein Signal zwischen 0..5V statt im Standardbereich -5V..+5V) liefert. Der Ausgang des LM386 sollte mit dem Arduino Analog-Pin ('pinPerimeterLeft') verbunden werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt; &lt;br /&gt;
 File: Perimeter_v2_receiver_circuit.png | Empfängerschaltkreis und überbrückter Kondensator C3&lt;br /&gt;
 File: Ardumower_chassis_components.png | Position der Perimeterspule&lt;br /&gt;
 File: Ardumower_coil_position.jpg | Eine zentrierte, aufrecht montierte Spule &lt;br /&gt;
 File: Ardumower_lm386_circuit.png | LM386 Modul Schaltplan&lt;br /&gt;
 File: Tire_coil_distance.jpg | Abstand Spule-Rad: Einfluß auf den Wendekreis (Kurvenwinkel)&lt;br /&gt;
 File: Coil_motor_layout.png | Zwei Spulen (experimentell), Abstand Spule-Spule Hinterradantrieb 12.5cm, Frontantrieb 19cm&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Empfängerschaltplan:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;background-color: lightgrey; border: solid thin grey;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
                                      LM386 IN  o------- capacitor 4.7nF ----------- coil 100 mH  (or 150 mH)&lt;br /&gt;
 Arduino pinPerimeterLeft   o------o  LM386 OUT&lt;br /&gt;
                                      LM386 GND o----------------------------------- coil&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Achtung''': Die Spule muss direkt an den Verstärkermodul angeschlossen werden. So wird die Störfestigkeit des schwachen Spulensignals gegenüber Einflüssen anderer Komponenten (Motore, DC-DC-Wandler) verbessert. &lt;br /&gt;
&lt;br /&gt;
'''Differentielles Signal''': Die aktuelle Software erfordert das Weglassen des Kondensators 4.7nF in Reihe mit der Spule. &lt;br /&gt;
&lt;br /&gt;
'''Nicht-differentielles Signal''': Mithilfe des Kondensators (4.7 nF) wird das Sendersignal wieder rekonstruiert (s. Abschnitt Signal), der Empfängeschaltkreis ist ein Schwingkreis (C und L und Perimeterschleife fungiert als Antenne) und alle Parameter (C, L, Schleifendrahtlänge) müssen übereinstimmen. Weil dies die Abstimmung schwierig macht, empfehlen wir das nicht-differentielle Signal nicht!&lt;br /&gt;
&lt;br /&gt;
=== Abstand Spule/Verstärker zu Motoren ===&lt;br /&gt;
Achte auf die Einhaltung aller Mindestabstände zwischen den folgenden Komponenten:&lt;br /&gt;
 * Spule zu Radmotor: &amp;gt; 15cm&lt;br /&gt;
 * Spule zu Mähmotor: &amp;gt; 10cm &lt;br /&gt;
 * Spule zu DC-DC Wandler: &amp;gt; 10cm&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
 File: Dcdc_noise.jpg | Achtung: Halte Spule/Vorverstärker von den DC-DC-Wandlern und Motoren fern!!!&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Signalmessungen ===&lt;br /&gt;
Sender / Spule / LM386 Verstärker Ausgangssignale sollten etwa so aussehen: (witere Details über das Signal s. Abschnitt Signal)&lt;br /&gt;
&amp;lt;gallery&amp;gt; &lt;br /&gt;
 File: Perimeter_signal_steps.png | Perimetersignal an Sender, Empfangsspule und LM386 (Theorie)&lt;br /&gt;
 File: coil_signal_without_capacitor.png | differentielles Signal / Spulensignal ohne Kondensator (5V sender, 5 Ohm Schleife - blau: Perimeter, gelb: Spule, grau: LM386 Verstärkerausgang)&lt;br /&gt;
 File: Lm_output_dc_noise.jpg | LM386 Ausgang mit DC Störungen (differentielles Signal / Spule ohne Kondensator)&lt;br /&gt;
 File: Perimeter2_receiver_coil.jpg | LM386 Ausgang (nicht-differentielles Signal / Spule mit Kondensator, 12V Sender, 120m Schleife)&lt;br /&gt;
 File: coil_signal_with_capacitor.png | nicht-differentielles Signal / Spulensignalmit Kondensator (5V Sender, 5 Ohm Schleife - grau: Perimeter, gelb: Spule, blau: LM386 Verstärkerausgang)&lt;br /&gt;
 File: Lm_output_motor_noise.jpg | LM386 Ausgang mit Störungen durch Motoren (differentielles Signal / Spule ohne Kondensator)&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Signal und Rauschmessungen ===&lt;br /&gt;
Einige Spulenmessungen ohne Verstärker aber mit Störungen (Motoren, DC/DC-Wandler etc.): &lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
 File: Coil_60k_parallel.jpg | Spule und 60 kOhm Parallelwiderstand ohne Störungen (Spulenhintergrund-rauschen Vpp=7 mV)&lt;br /&gt;
 File: Coil_dc_converter_noise.jpg | Spule und 60 kOhm Parallelwiderstand mit Störungen durch DC/DC-Wandler (DC/DC-Rauschen Vpp=18 mV)&lt;br /&gt;
 File: Coil_motor_noise.jpg | Spule und 60 kOhm Parallelwiderstand mit Störungen durch Motoren&lt;br /&gt;
 File: Perimeter2_receiver_coil_pwm.jpg | Spulensignal mit seriellem 4.7nF Kondensator, PWM-Perimetersignal (nicht empfohlen) ohne Störungen&lt;br /&gt;
 File: Fft_signal.png | FFT Signal&lt;br /&gt;
 File: Fft_motors.png | FFT Motor-Störungen&lt;br /&gt;
 File: Fft_dcdc.png | FFT DC/DC-Störungen&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ADC-Kalibrierung am Empfänger ===&lt;br /&gt;
[[File:warning.png]] Die ADC-Kalibrierung (bei ausgeschaltetem Sender!) sorgt für eine korrekte Erkennung der Nulllinie (Stille), sodass das empfangene Signal später symmetrisch zur Nulllinie angezeigt wird.&lt;br /&gt;
# Der Perimetersender und die Motoren des ArduMower müssen während der Kalibrierung ausgeschaltet sein!&lt;br /&gt;
# Wenn eine Störung durch einen anderen Sender nicht zu vermeiden ist, muß während der Kalibrierung die Spule entfernt und der Eingang es LM386 mit GND verbunden werden.&lt;br /&gt;
# Führe die ADC-Kalibrierung einmal aus (&amp;quot;pfodApp-&amp;gt;ADC Calibration&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Nach der korrekt durchgeführten Kalibrierung sollte das Signal per pfodApp Plot ('sig') bei ausgeschaltetem Perimetersender ungefähr als Null angezeigt werden. Nach Einschalten des Perimetersenders sollte das Signal etwa diesselbe positive wie negative Maximalamplitude ('Symmetie zur Nulllinie') aufweisen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
 File: perimeter_v2_sig_symmetric.jpg | symmetrisches Signal bei eingeschaltetem Sender (nach ADC-Kalibrierung)&lt;br /&gt;
 File: perimeter_v2_sender_off.jpg | Nullsignal bei ausgeschaltetem Sender (nach ADC-Kalibrierung)&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Problemanalyse und Fehlerbehebung am Empfänger ===&lt;br /&gt;
&lt;br /&gt;
Empfangenes Signal, Filterergebnis und Signalqualität können per Android Handy über die pfodApp-&amp;gt;Plot-&amp;gt;Perimeter angezeigt werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
 File: Perimeter_snr.png | Signal-Rausch-Verhältnis (SNR)&lt;br /&gt;
 File: Perimeter_signal_38khz.png | Signal, Filterergebnis, LP Filterergebnis, innen/außen, Ereigniszähler, Signal ein/aus, Signalqualität&lt;br /&gt;
 File: Perimeter_plot_moving_from_inside_to_outside.png | Fahren von innen nach außen&lt;br /&gt;
 File: Perimeter_v2_plot.png&lt;br /&gt;
 File: Perimeter_v2_plot_new.png&lt;br /&gt;
 File: Ardumower_perimeter2_test.jpg&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Beschreibung der im Plot angezeigten Signalverläufe:&lt;br /&gt;
 sig:  Spulensignal (Sequenz der Rohimpulse nach ADC) als kurzer Snapshot (32 samples), Update alle 20 Sekunden &lt;br /&gt;
       (also 20 Sekundenwarten bis zum nächsten Snapshot)&lt;br /&gt;
 mag:  Filterergebnis: innen (negativ) oder außen (positiv), magnitude: Abstand zur Perimeterschleife / magnetische Signalstärke (RSSI)&lt;br /&gt;
       - wird benutzt zum &amp;lt;b&amp;gt;Perimeter verfolgen&amp;lt;/b&amp;gt;&lt;br /&gt;
 smag: Filterergebnis, low-pass-gefiltert, ohne Vorzeichen (geglätteter mag-Verlauf) - verwendet zur Erkennung des &amp;lt;b&amp;gt;'Sender-aus' Zustandes&amp;lt;/b&amp;gt;&lt;br /&gt;
       Der Grenzwert kann über die pfodApp gesetzt werden (Settings-&amp;gt;Perimeter-&amp;gt;Timed-out if below smag)&lt;br /&gt;
 in:   binäres Ergebnis des low-pass Filters: innerhalb (1) oder außerhalb (0) der Perimeterschleife - wird benutzt zur &amp;lt;b&amp;gt;Erkennung des Perimetergrenzverlaufs&amp;lt;/b&amp;gt;&lt;br /&gt;
       Ist der ArduMower eine bestimmte Zeit außerhalb der Schleife, geht er in den Fehlerstatus. Diese Zeit kann per pfodApp&lt;br /&gt;
       (Settings-&amp;gt;Perimeter-&amp;gt;Timeout (s) if not inside) eingestellt werden&lt;br /&gt;
 cnt:  Anzahl der Wechsel von innen nach außen (counter, Zähler)&lt;br /&gt;
 on:   Perimetersender ist aktiv (1) oder inaktiv (0), basiert auf der Auswertung des smag Ergebnisses&lt;br /&gt;
 qty:  &amp;lt;b&amp;gt;Signalqualität&amp;lt;/b&amp;gt; (Aussage über die Verläßlichkeit der Erkennung 'innerhalb / außerhalb' aus dem Filterergebnis)&lt;br /&gt;
       Verhältnis aus Vergleich mit Mustersignal zu Vergleich mit inversem Mustersignal              &lt;br /&gt;
       1.0 bedeutet schlechte Qualität, Du solltest Werte von 1.5 oder höher)&lt;br /&gt;
&lt;br /&gt;
Im Plot soll der 'mag'-Verlauf frei von Spitzen sein: innerhalb der Schleife sollte das Signal eine negative Kurve, außerhalb eine positive Kurve beschreiben. Weist die Kurve Spitzen auf, versuche folgende Maßnahmen zur Fehlerbeseitigung bzw. Optimierung:&lt;br /&gt;
&lt;br /&gt;
* Benutze immer einen ausreichend langen und korrekt abgerollten Schleifendraht (20m oder länger). Benutze niemals einen zu kurzen (Mindestwiderstand 5 Ohm!) oder gar aufgerollten Draht. &lt;br /&gt;
* Für den 'Wohnzimmertest' sollte ein 100 Ohm Widerstand in Reihe mit 5m Draht bei 6V seine Aufgabe erfüllen.&lt;br /&gt;
* Verbinde die Empfangsspule mit 'pinPerimeterLeft' auf dem PCB (am falschen Pin könnte das Signal 'etwas schwach' reinkommen)&lt;br /&gt;
* Die Spulenpolung kann per pfodApp eingestellt werden (wird 'außen' angezeigt, wenn der Ardumower sich innrhalb der Schleife befindet?). Denselben Effekt hat das Umklemmen der Schleifenenden am Senderausgang.&lt;br /&gt;
* Sollte das Signal schwach erscheinen, überprüfen, ob am Spulenverstärker das Poti &amp;quot;voll aufgedreht&amp;quot; ist! Hilfreich ist die gleichzeitige Anzeige des Signal per pfodApp (Plot --&amp;gt; Perimeter).&lt;br /&gt;
* Die Kabelverbindung zwischen Spule und LM386-Vorverstärker muss möglichst kurz sein - am Besten die Spule direkt am Verstärker anschließen!&lt;br /&gt;
* Halte den Abstand zwische Spule und Motoren sowie DC/DC-Wandlern möglichst groß (30cm oder mehr!)&lt;br /&gt;
* Nutze die magnetische Abschirmwirkung (z.B. Deines Akkus) zwischen Spule und Störquellen.&lt;br /&gt;
* Einstellen der Senderspannung: bei längeren Perimeterschleifen (&amp;gt;80m) die Spannung höher wählen (Potentiometer DC/DC-Wandler), bei kürzeren Schleifen (&amp;gt;25m) eher niedriger (anstreben einer Sendeleistung = Spannung * Strom von ca 10W)&lt;br /&gt;
* Versuche bei laufenden Motoren die Spule leicht zu einer Seite zu neigen um die Signalqualität 'qty' zu erhöhen.&lt;br /&gt;
&lt;br /&gt;
== Messungen ==&lt;br /&gt;
&lt;br /&gt;
Zum Vergleich Beispielwerte, gemessen an verschiedenen, im Gelände getesteten Kombinationen von Sender-/Empfänger-/Schleifenparametern:&lt;br /&gt;
&lt;br /&gt;
1) 120m (0.7mm^2), R=4 Ohm, 6.5V, Spule Vpp 20mV&lt;br /&gt;
 Störsignalpegel (max): smag=192&lt;br /&gt;
 Signal (min): smag=254&lt;br /&gt;
 SNR=Signal/Störsignal=254/192=1.3&lt;br /&gt;
&lt;br /&gt;
2) 30m (0.7mm^2), R=1.0 Ohm (+4 Ohm series R), 6.5V, Spule Vpp 120 mV&lt;br /&gt;
 Störsignalpegel (max): smag=192&lt;br /&gt;
 Signal (min): smag=896&lt;br /&gt;
 SNR=Signal/Störsignal=896/192=4.6&lt;br /&gt;
&lt;br /&gt;
=== Videos ===&lt;br /&gt;
#[http://www.youtube.com/watch?v=FL6K98B2Zsk&amp;amp;feature=player_detailpage#t=265 Perimeter2 Demo]&lt;br /&gt;
#[https://www.youtube.com/watch?v=QCA6Dm3rs3M Test 120m Perimeterschleife]&lt;br /&gt;
#[https://www.youtube.com/watch?v=NIer_kITelc Theorie zu Perimeterschleife und Matched Filter (in deutsch)]&lt;br /&gt;
#[https://www.youtube.com/watch?v=VxJN2xb55dU&amp;amp;feature=youtu.be Sender-PCB]&lt;br /&gt;
&lt;br /&gt;
= Verfolgung der Begrenzungsschleife =&lt;br /&gt;
&lt;br /&gt;
Das Abfahren der Schleife wird über einen softwareseitig realisierten digitalen PID-Regler gesteuert. Die Regler-Parameter (P,I,D) können über ein Android-Handy per pfodApp eingestellt werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Ardumower_perimeter_pid.jpg&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mehr Informationen über PID-Regler sind hier zu finden: &lt;br /&gt;
[http://www.ardumower.de/index.php/de/forum/anleitungen-hilfe/121-pid-regelung-fuer-drehzahl-drehung-etc-richtig-einstellen Forum].&lt;br /&gt;
&lt;br /&gt;
= Sensor Signalfusion =&lt;br /&gt;
Das Magnetfeld der Perimeterschleife könnte man als Input für eine [http://wiki.ardumower.de/index.php?title=Sensor_fusion zur Positionsbestimmung des ArduMower nutzen].&lt;br /&gt;
&lt;br /&gt;
= Weiterführende Links =&lt;br /&gt;
#[http://www.ardumower.de/index.php/en/forum/schleifensensoren-generator/83-ir-bake-generator-empfaenger-diy Ein anderer Navigationsansatz sind Infrarot-Baken]&lt;br /&gt;
#[http://grauonline.de/wordpress/?page_id=364 Mehr Details zum 'matched filter']&lt;br /&gt;
#[http://www.grauonline.de/alexwww/ardumower/oscilloscope/oscilloscope.html Soundkarten-Oszilloskop inklusive 'matched filter']&lt;br /&gt;
&lt;br /&gt;
= Perimeter V1 (für alten Code V0.9.3, nicht mehr empfohlen) =&lt;br /&gt;
&lt;br /&gt;
Dies war die erste Version unseres Perimetersenders und Empfängers. Sie wies einige Nachteile auf (Orientierungsfehler, Keine 'Sender-aus'-Erkennung, keine Möglichkeit zur Feststellung des Aufenthaltsbereiches inner-/außerhalb der Schleife), so dass der Einsatz nicht weiter empfohlen wird. Benutze die Nachfolgeversion V2, wie oben beschrieben.&lt;br /&gt;
&lt;br /&gt;
== Sender ==&lt;br /&gt;
Du kannst den Sender eines kommerziellen Rasenmäroboters nutzen (der hier gezeigte Sender ist kompatibel mit Tianchen oder Rotenbach Mährobotern), oder Du baust Dir selber einen:&lt;br /&gt;
&lt;br /&gt;
Ein Arduino (z.B. Nano) generiert ein Rechtecksignal, welches die Polarität eines Motortreibers (L298N) mit 7.8 Khz schaltet. Dadurch wechselt das Ausgangssignal zwischen Vcc und GND. Ein Schwingkreis verstärkt die Signalspitzen (Resonanzfrequenz ist dieselbe wie die Schaltfrequenz - 7.8 Khz). So reicht es aus, den Motortreiber mit 5V (statt 12V) zu betreiben. Die Spannungsquelle muß etwa 2W (400mA bei 5V) leisten. &lt;br /&gt;
Ein Teil des Signals wird durch den Arduino (ADC) durch eine Diode und einen Spannungsteiler erfaßt. So kann festgestellt werden, ob die Perimeterschleife angeschlossen ist. Durch den Schleifendraht fließt ein Strom von ca. 150mA (Drahtquerschnitt 2-3 mm^2, Länge max 500 m)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Arduino_perimeter_sender.png ‎&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Weil man vielleicht nicht immer die genau passende Empfängespule zur Hand hat, hier ein paar mögliche Kombinationen (Spule / Kondensator), die die Resonanzfrequenz von 7.8 Khz aufweisen:&lt;br /&gt;
*Kombination 1: Spule: 160µH, Kondensator: 3,3µF/50V  (getestet)&lt;br /&gt;
*Kombination 2: Spule 33mH, Kondensator: 12nF (nicht getestet)&lt;br /&gt;
&lt;br /&gt;
==== Stromversorgung ====&lt;br /&gt;
Zur Erzeugung der 5V Spannung wird ein step-down-Wandler (z.B. Module mit LM2596) eingesetzt. Vor dem Einsatz in der Schaltung muß der Wandler auf 5V einjustiert werden. &lt;br /&gt;
&lt;br /&gt;
'''Warnung''' : Lege niemals mehr als 5V auf die Arduino 5V Pins oder Du zerstörst ihn. Deswegen: vorher die Spannung einstellen und kontrollieren!&lt;br /&gt;
&lt;br /&gt;
==== Funktionstest ====&lt;br /&gt;
1. Nach dem Code-Hochladen und Anschliessen der Begrenzungsschleife sollte die Arduino LED an sein. Nun entferne den Schleifendraht und die LED sollte ausgehen.&lt;br /&gt;
&lt;br /&gt;
2. Sollte das nicht so sein, kontrolliere mit einem Voltmeter zum Einen die Spannung zwischen Pin 9 des Arduino und dann die am Motortreiberausgang (OUT_1) jeweils gegen GND - beide sollten eine Gleichspannung  2.5 Volt führen.&lt;br /&gt;
&lt;br /&gt;
3. Hast Du ein Oszilloskop? Dann schließe statt der Begrenzungsschleife das Oszilloskop an den Sender an. Das gemessene Signal sollte folgendermaßen aussehen:&lt;br /&gt;
&lt;br /&gt;
Das Ausgangssignal zeigt eine höhere Ampltude (hohe Spitzenwerte) als das Eingangssignal:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Perimetersignal.jpg|Signal am Senderausgang &lt;br /&gt;
File: Ardumower_perimeter_sender_schematics.png|Grundprinzip des Schwingkreises&lt;br /&gt;
File: Arduino_perimeter_sender_photo.jpg&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Für einen einfachen Empfangstest kannst Du die Empfangsspule direkt ans Oszilloskop anschließen. Das gemessene Signal sollte etwa so  aussehen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Coilsignal.jpg|Signal an der Empfangsspule&lt;br /&gt;
File: Fft.jpg|Signal im Frequenzspektrum, überlagert durch Motorstörungen&lt;br /&gt;
File: Ardumower_perimeter_spectrum_plot.jpg| Anzeige des Frequenzspektrums über pfodApp&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Empfänger ==&lt;br /&gt;
Der Empfänger nutzt zwei Spulen, die rechts und links vorn im ArduMower montiert sind. Die Signalstärke der linken und rechten Spule werden ausgewertet, um sie vergleichen zu können.&lt;br /&gt;
&lt;br /&gt;
Prinzip:&lt;br /&gt;
# Verstärkung der alternierenden Signale per OPAMP&lt;br /&gt;
# Optional: Bandpass-Filterung zum Ausblenden der Störungen durch Motore etc.&lt;br /&gt;
# Ermittlung der Signalstärke von linker und rechter Spule&lt;br /&gt;
&lt;br /&gt;
Vorteil dieser Version: analoge Auswertungfunktioniert hervorragend.&lt;br /&gt;
Nachteil: Du kannst nicht feststellen, ob Du Dich gerade innerhalb oder außerhalb der Begrenzungsschleife aufhälst, wenn Du nicht jede Überfahrt des Begrenzungsdrahtes mitprotokollierst. Es ist auch nicht möglich festzustellen, ob Du die Begrenzungsschleife im oder gegen den Uhrzeigersinn abfährst.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Arduino_perimeter_receiver.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Eine Spule empfängt das Signal des Senders. Ein Schwingkreis (LC: SPule und Kondensator)verstärkt das empfangene Signal bei einer Resonanzfrequenz von 7.8 kHz. Das Signal wird weiter verstärkt durch eien LM386-Verstärker (hier: Arduino Soundsensor mit Spule statt Mikrofon). Ein Bandpassfilter (digitaler Filter, FFT - Fast Fourier Transformation) läuft auf dem Arduino und filtert die gewünschte Frequenz (7.8 Khz) und erzeugt ein PWM-Signal (Pulsbreite proportional zur Signalstärke). Über einen Tiefpassfilter wird das PWM-Signal in eine Gleichspamnnung gewandelt.&lt;br /&gt;
Beachte: Die Verdrahtung zwischen ist vereinfacht dargestellt - Details der Verdrahtung s. Schaltplan.&lt;br /&gt;
&lt;br /&gt;
Wir haben folgende Kombinationen von Spulen und Verstärkern getestet:&lt;br /&gt;
&lt;br /&gt;
'Arduino Soundsensor'&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Soundsensor.jpg| Signalverstärkung über LM386 - Arduino Soundsensor mit Spule statt Mikrofon&lt;br /&gt;
File: YwRobot_Sensor.jpg |Arduino Soundsensor mit LM386&lt;br /&gt;
File: YwRobot_circuit.png |Arduino Soundsensor Modulschaltplan&lt;br /&gt;
File: Coil_85mh.jpg|85 mH Spule&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
LM386 Verstärker&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Lm386_amplifier.jpg| LM386 Versärker (200-fach)&lt;br /&gt;
File: Lm386_modified.jpg| modifizierter LM386-Verstärker&lt;br /&gt;
File: Ardumower_lm386_circuit.png | LM386 Modulschaltplan&lt;br /&gt;
File: Coil_small.jpg| 104 mH Spule&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wichtig: Bei Verwendung dieses Verstärkers muß der Kondensator C3 überbrückt werden (erzeugt das für den Arduino erforderliche VCC/2 offset). Dies Spule schließt man an &amp;quot;IN&amp;quot; und &amp;quot;GND&amp;quot; an.&lt;br /&gt;
&lt;br /&gt;
'''Beachte''': die Spule unbedingt direkt am Verstärkermodul befestigen. Dies minimiert die Störeinflüsse durch andere Komponenten wie z.B. Motoren auf das schwache Spulensignal.&lt;br /&gt;
=== Funktionstest ===&lt;br /&gt;
# Stelle eine korrekte Funktion des Schleifensenders sicher (wie bereits weiter oben beschrieben).&lt;br /&gt;
# Drehe das Potentiometer des Arduino Soundsensors auf Maximum (gegen den Uhrzegersinn).&lt;br /&gt;
# Lade das Programm auf den Arduino und bewege eine Spule in Richtung des Begrenzungsdrahtes: die LED des Arduino sollte zu blinken beginnen. Halte nun beide Spulen im gleichen Abstand über den Begrenzungsdraht: die LED sollte nun permanent leuchten.&lt;br /&gt;
# Wenn das so nicht funktioniert, öffne die serielle Konsole und  prüfe die Signalwerte.&lt;br /&gt;
&lt;br /&gt;
=== Spulenauswahl ===&lt;br /&gt;
mathematische Näherungsberechnung einer Spule:&lt;br /&gt;
&lt;br /&gt;
 L = 1nH x n² x ((D² / mm² ) / (l / mm))&lt;br /&gt;
 l = Spulenlänge&lt;br /&gt;
 D = Spulendurchmesser&lt;br /&gt;
&lt;br /&gt;
Beispiel: eine Induktion von 85 mH, Durchmesser 10 mm, Länge 40 mm erfordert ca. 5830 Windungen.&lt;br /&gt;
&lt;br /&gt;
Diese Induktivität von 85 mH und ein Kondensator von 4.7 nF führen zu einer Resonanzfrequenz von 7963 Hz.&lt;br /&gt;
&lt;br /&gt;
 f0 = 1 / (2 * PI * sqrt(L * C)) = 1 / (2 * PI * sqrt(0.085 H * 0.0000000047 F)) =  7963 Hz&lt;br /&gt;
&lt;br /&gt;
Weil man vielleicht nicht immer die genau passende Empfängerspule zur Hand hat, hier ein paar mögliche Kombinationen (Spule / Kondensator), die die Resonanzfrequenz von 7.8 Khz aufweisen:&lt;br /&gt;
 Kombination 1: Spule: 85mH, Kondensator: 4.7nF  (getestet)&lt;br /&gt;
 Kombination 2: Spule: 104mH, Kondensator: 4nF (getestet)&lt;br /&gt;
&lt;br /&gt;
=== Anordnung der Spulen ===&lt;br /&gt;
die Spulen sind am Boden des ArduMower so angeordnet, dass sie einen Winkel von 90 Grad einschließen, d.h. jede ist um 45 Grad aus der Längsachse gedreht.&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Ardumower_spulen.jpg| Anordnung der Spulen&lt;br /&gt;
File: L50_coils.jpg | Beispiel (Ambrogio L50)&lt;br /&gt;
File: L50_parcours.jpg | Testparcours&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Messung der Signalstärke ===&lt;br /&gt;
Zum Vergleich von Messungen wurde die Signalstärke bei verschiedenen Schleifenabständen bestimmt. Die Signalsärke (soll heißen: der berechnete ADC-Wert) kann in der Android pfodApp angezeigt werden. Der Abstand (cm) ist der berechnete Wert zwischen Perimeterschleife und Spule (eingebaut im ArduMower).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Perimeter_plot.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Schleifenverlegung ===&lt;br /&gt;
&lt;br /&gt;
Wichtig bei der Schleifenverlegung ist die Vermeidung von scharfen Ecken: Rundungen sind angesagt! Fährt der Ardumower exakt über eine scharfe Ecke, kann er unter Umständen die Schleife nicht mehr orten, da Spule und Schleife fluchten / parallel stehen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Schleifen_blind.jpg  | Nicht empfohlen: ArduMower kann keine scharfen Ecken orten!&lt;br /&gt;
File: Ardumower_coil_signal.png| Wie ändert sich das Sinal, wenn die Spule gedreht wird??&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Videos ===&lt;br /&gt;
#[http://www.youtube.com/watch?v=FGaUSg-uUxk Perimeter Stoptest]&lt;br /&gt;
#[http://www.youtube.com/watch?v=8R8QaffNlJw Perimeter Verfolgungstest]&lt;br /&gt;
#[http://www.youtube.com/watch?v=CftrnetFVYc&amp;amp;feature=youtu.be Test zum Finden und Verfolgen mit L50]&lt;br /&gt;
#[http://www.youtube.com/watch?feature=player_embedded&amp;amp;v=fjuQViS2rHM Test zum Finden und Verfolgen mit Rotenbach]&lt;/div&gt;</summary>
		<author><name>Deejay</name></author>	</entry>

	<entry>
		<id>https://wiki.ardumower.de/index.php?title=Fehlerbehebung&amp;diff=2774</id>
		<title>Fehlerbehebung</title>
		<link rel="alternate" type="text/html" href="https://wiki.ardumower.de/index.php?title=Fehlerbehebung&amp;diff=2774"/>
				<updated>2015-09-16T17:26:29Z</updated>
		
		<summary type="html">&lt;p&gt;Deejay: /* Fehlercodes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
=Fehlersuche=&lt;br /&gt;
&lt;br /&gt;
==Fehlercodes==&lt;br /&gt;
Wenn dein Ardumower periodisch piepst (4 Töne - Pause), ist er in einem Fehler-Status. Um den genauen Fehler zu finden, kann man die serielle Konsole oder die APP ('pfodApp-&amp;gt;Error Counters') benutzen. mögliche Lösungsvorschläge für jeden Fehler werden nachfolgend gegeben. Detaillierte Angaben zu deinen Robotereinstellungen, siehe [http://wiki.ardumower.de/index.php?title=Ardumower_LP#Einstellungen Einstellungen].&lt;br /&gt;
&lt;br /&gt;
  ERR_MOTOR_LEFT          Fehler  linker Getriebemotor&lt;br /&gt;
                          * Überprüfe Motortreiber und linken Getriebemotor&lt;br /&gt;
                          * MC33926: stelle sicher, dass der SLEW Jumper nicht gesteckt ist&lt;br /&gt;
                          * beim Fahren: veringere 'Motor-Max-PWM' und 'Tracking-P' um EMF zu veringern&lt;br /&gt;
  ERR_MOTOR_RIGHT         Fehler rechter GetriebemotorRight gear motor error&lt;br /&gt;
                          * Überprüfe Motortreiber und rechten Getriebemotor&lt;br /&gt;
                          * MC33926: stelle sicher, dass der SLEW Jumper nicht gesteckt ist&lt;br /&gt;
                          * beim Fahren: veringere 'Motor-Max-PWM' und 'Tracking-P' um EMF zu veringern&lt;br /&gt;
  ERR_MOTOR_MOW           Mähmotor Fehler &lt;br /&gt;
                          * Überprüfe Motortreiber und Mähmotor&lt;br /&gt;
                          * MC33926: stelle sicher, dass der SLEW Jumper nicht gesteckt ist&lt;br /&gt;
                          * Veringere Motor-Max-Power, damit Überstrom früher erkannt wird&lt;br /&gt;
  ERR_MOW_SENSE           Mähmotor Überstrom&lt;br /&gt;
                          * Überprüfe Mähmotor-Treiber und Mähmotor&lt;br /&gt;
                          * Vergrößere Motor-Max-Power, damit Überstrom später erkannt wird&lt;br /&gt;
  ERR_IMU_COMM            IMU Kommunikationsfehler&lt;br /&gt;
                          * Überprüfe die Verbindung zum IMU-Modul&lt;br /&gt;
  ERR_IMU_CALIB           IMU Abgleich-Fehler&lt;br /&gt;
                          * Start [http://wiki.ardumower.de/index.php?title=Inertialsensor_-_IMU#Abgleich_.28letzte_Version.29 'IMU Abgleich'] (entweder über die Konsole oder über pfodApp-&amp;gt;Settings-&amp;gt;IMU)                     &lt;br /&gt;
  ERR_IMU_TILT            IMU Neigungsfehler&lt;br /&gt;
                          * Überprüfe IMU-Modul und Ausrichtung des Roboters&lt;br /&gt;
  ERR_RTC_COMM            RTC Kommunikationsfehler&lt;br /&gt;
                          * Überprüfe die Verbindung zum RTC-Modul, RTC-Batterie usw.&lt;br /&gt;
  ERR_RTC_DATA            RTC-Daten sind fehlerhaft&lt;br /&gt;
                          * stelle und speichere Datum und Zeit&lt;br /&gt;
  ERR_PERIMETER_TIMEOUT   Perimeter-Signal, Zeitüberschreitung &lt;br /&gt;
                          * Überprüfe Perimeter-Sender, Schleife usw.&lt;br /&gt;
                          * Überprüfe die Polarität der Perimeterspule&lt;br /&gt;
                          * veringere 'Perimeter-smag', damit die Auszeit größer wird&lt;br /&gt;
                          * Erhöhe 'Perimeter-timeout-seconds', damit die Auszeit größer wird&lt;br /&gt;
                          * Überprüfe, ob das [http://wiki.ardumower.de/index.php?title=Perimeter-Schleife#Signal_und_Rauschmessungen Signal-Rausch-Verhältnis] größer 1 ist.&lt;br /&gt;
  ERR_TRACKING            Perimeter-Folge-Fehler &lt;br /&gt;
                          * Überprüfe Perimeter-Sender, Schleife usw.&lt;br /&gt;
                          * Erhöhe 'Perimeter-tracking-timeout', damit die Auszeit größer wird&lt;br /&gt;
  ERR_ODOMETRY_LEFT       Odometrie-Fehler linker Motor &lt;br /&gt;
                          * Überprüfe das linke Odometrie-Kabel&lt;br /&gt;
                          * Überprüfe die Drehrichtung des linken Motors &lt;br /&gt;
  ERR_ODOMETRY_RIGHT      Odometrie-Fehler rechter Motor &lt;br /&gt;
                          * Überprüfe das rechte Odometie-Kabel&lt;br /&gt;
                          * Überprüfe die Drehrichtung des rechten Motors&lt;br /&gt;
  ERR_BATTERY             Akku-Fehler &lt;br /&gt;
                          * Überprüfe Akku-Verbindung&lt;br /&gt;
  ERR_CHARGER             Ladefehler &lt;br /&gt;
                          * Überprüfe Verbindung zum Ladegerät &lt;br /&gt;
  ERR_GPS_COMM            GPS Kommunikationsfehler &lt;br /&gt;
                          * Überprüfe GPS-Kabel&lt;br /&gt;
  ERR_GPS_DATA            GPS Datenfehler &lt;br /&gt;
                          * Überprüfe GPS-Antenne und -Kabel&lt;br /&gt;
  ERR_ADC_CALIB           ADC Abgleich-Fehler&lt;br /&gt;
                          * Starte 'ADC calibration' (entweder über Konsole oder pfodApp-&amp;gt;ADC calibration)&lt;br /&gt;
  ERR_EEPROM_DATA         EEPROM Datenfehler &lt;br /&gt;
                          * Speichere Benutzer-Einstellungen (entweder über Konsole oder pfodApp-&amp;gt;Settings-Save)&lt;br /&gt;
&lt;br /&gt;
==Deaktiviere alle Pins, die nicht angeschlossen sind==&lt;br /&gt;
Stelle sicher, dass alle Pins und Eigenschaften die nicht angeschlossen sind (nicht verwendet werden), in der Roboter-Konfiguration deaktiviert sind. &lt;br /&gt;
&lt;br /&gt;
Beispiel: Wenn du die Odometrie-Pins nicht beschaltet hast, muss Odometrie in der Roboter-Konfiguration deaktiviert werden. (mower.cpp):&lt;br /&gt;
&lt;br /&gt;
 odometryUse       = 0;       // use odometry?&lt;br /&gt;
&lt;br /&gt;
== Probebetrieb ohne Mähmotor-Treiber ==&lt;br /&gt;
&lt;br /&gt;
Sofern man den Ardumower im Probebetrieb ohne Mähmotor-Treiber testen möchte, so ist der PIN &amp;quot;pinMotorMowFault&amp;quot; auf High zu setzen. Damit verschwindet die Fehlermeldung &amp;quot;Error: Motor mow fault&amp;quot; und der Mover kann getestet werden.&lt;br /&gt;
&lt;br /&gt;
==Drehen die Motoren richtig?==&lt;br /&gt;
Führe einen Motortestlauf aus. Gehe in die serielle Konsole (Arduino IDE: STRG+SHIFT+M, 19200 Baud) drücke 'd' und ENTER um ins Menü zu gelangen. Dann drücke '1' und ENTER. Es startet der Motortest.&lt;br /&gt;
&lt;br /&gt;
==Unerwartete Sensorauslösung==&lt;br /&gt;
Wenn dein Roboter etwas Unerwartetes tut, kann es an einem Sensor liegen, der fehlerhaft auslöst. Überprüfe das über die serielle Konsole:&lt;br /&gt;
&lt;br /&gt;
Starte die serielle Konsole (Arduino IDE: CTRL+SHIFT+M, 19200 Baud), und schalte den Roboter ein. Jedes Mal, wenn ein Sensor auslöst, wird der Zähler dieses Sensors erhöht. Siehe Beschreibung der Sensoren weiter unten.&lt;br /&gt;
Wenn sich also der Roboter nicht so verhält, wie er soll, dann schau dir die Sensor-Zähler an und stelle fest, welcher Zähler hochzählt, um das Problem zu lokalisieren.&lt;br /&gt;
&lt;br /&gt;
==Einige Sensoren lösen nicht aus?==&lt;br /&gt;
...&lt;br /&gt;
==Keine Verbindung über Bluetooth==&lt;br /&gt;
&lt;br /&gt;
* Stelle sicher, dass die Baudrate des BT-Modules richtig eingestellt ist (verwende die Ardumower Konsole) - Aktiviere den      Programmier-Modus des BT-Modules und stelle die Baudrate ein [[Bluetooth und App|Bluetooth &amp;amp; App]].&lt;br /&gt;
* Stelle sicher, das das BT-Modul mit dem Handy &amp;quot;gepaart&amp;quot; ist&lt;br /&gt;
* Überprüfe, dass der Arduino Mega nicht über USB mit Strom versorgt wird.&lt;br /&gt;
&lt;br /&gt;
=Konsolen-Ausgabe=&lt;br /&gt;
&lt;br /&gt;
Beim Start des Roboters wird über die serielle Konsole beispielsweise folgendes ausgegeben:&lt;br /&gt;
  START &lt;br /&gt;
  Ardumower rXXXX&lt;br /&gt;
  press...&lt;br /&gt;
    d zum Menü&lt;br /&gt;
    v um Konsolenausgabe zu ändern (Sensor-Zähler, Werte, Perimeter usw.)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 t     0 l177 v0 FORW spd   33   33    0 sen    0    0    0 bum    0    0 dro    0    0 son   0 yaw   0 pit   0 rol   0 bat 20.8 chg 21.7  0.0 imu  0 adc  0 Ardumower&lt;br /&gt;
 t     1 l177 v0 FORW spd   33   33    0 sen    0    0    0 bum    0    0 dro    0    0 son   0 yaw   0 pit   0 rol   0 bat 20.8 chg 21.7  0.0 imu  0 adc  0 Ardumower&lt;br /&gt;
 t     3 l177 v0 FORW spd   33   33    0 sen    0    0    0 bum    0    0 dro    0    0 son   0 yaw   0 pit   0 rol   0 bat 20.8 chg 21.7  0.0 imu  0 adc  0 Ardumower&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Wenn ein Sensor auslöst, wird sein Zähler erhöht. &lt;br /&gt;
Beispiel (Mähmotor-Überstromsensor löst aus):&lt;br /&gt;
&lt;br /&gt;
 t     4 l177 v0 FORW spd   33   33    0 sen    0    0    0 bum    0    0 dro    0    0 son   0 yaw   0 pit   0 rol   0 bat 20.8 chg 21.7  0.0 imu  0 adc  0 Ardumower&lt;br /&gt;
 t     5 l177 v0 REV  spd  -26  -26    0 sen    0    0    1 bum    0    0 dro    0    0 son   0 yaw   0 pit   0 rol   0 bat 20.8 chg 21.7  0.0 imu  0 adc  1 Ardumower&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Hier ist eine  Beschreibung jeder Spalte:&lt;br /&gt;
&lt;br /&gt;
 t - Zeit des akt. Maschinenzustands (ms)&lt;br /&gt;
 l - Programmschleifen-Durchläufe/sek &lt;br /&gt;
 v - Anzeige-Modus des ausgewählten Sensors (0 = Zähler / 1 = Sensorwerte ​​/ 2 = Sensorwerte​​) &lt;br /&gt;
 - aktueller Status (FORW, REV, ROLL usw.) &lt;br /&gt;
 - Nachhause-Fahrt? (1/0) &lt;br /&gt;
 spd - Steuerung / Drehzahl der Motoren: links (PWM), rechts (PWM), Mähmotor (speed) &lt;br /&gt;
 sen - Motor-Überstromzähler:  links, rechts, Mähmotor &lt;br /&gt;
 bum - Bumperzähler: links, rechts &lt;br /&gt;
 son - Ultraschall- Distanz-Unterschreitung: Zähler &lt;br /&gt;
 pit, roll - inclination (berechnet mit Beschleunigungssensor) &lt;br /&gt;
 yaw - Kompass-Kurs&lt;br /&gt;
 bat - Akkuspannung&lt;br /&gt;
 chg - Ladespannung&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''---Befehle---&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
 'd': Testmenü, Abgleich IMU, Bluetooth&lt;br /&gt;
 'v': Anzeigemodus(zeigt Werte oder Zähler&lt;br /&gt;
 'h': Fahr zur Ladestation&lt;br /&gt;
 'p': Schleifenfahrt&lt;br /&gt;
 'l': simuliert linken Bumper&lt;br /&gt;
 'r': simuliert rechten Bumper&lt;br /&gt;
 's': simuliert Rasensensor&lt;br /&gt;
 'm': schaltet Mähmotor&lt;br /&gt;
 'c': simuliert Laden&lt;br /&gt;
 '+': drehen 90 Grad&lt;br /&gt;
 '-': drehen 90 Grad &lt;br /&gt;
 '3': aktiviert Fernsteuerung&lt;br /&gt;
 '0': Aus&lt;br /&gt;
 '1': Automode, Mähmotor an&lt;br /&gt;
&lt;br /&gt;
=Wie melde ich einen Programmfehler/eine neue Eigenschaft/neuen Programmcode=&lt;br /&gt;
Klicke auf [https://github.com/Ardumower/ardumower/issues/new?title=Error+XYZ+%2F+Fehler+XYZ&amp;amp;body=Please+always+fill-in+below%2FBitte+unbedingt+ausf%C3%BCllen%21%0D%0A%0D%0A--English--%0D%0AYour+battery+voltage+%2812v%2C+24v%29%3A+24v%0D%0AYour+gear+motor+%28Ardumower%2C+other%29%3A+Ardumower+motor%0D%0AYour+Ardumower+software+version+%28pfodApp-%3EInfo%29%3A+890%0D%0AYour+Arduino+%28Mega+or+Due%29%3A+Mega+2560%0D%0AYour+PCB+version+%28printed+on+PCB%29%3A+0.5%0D%0AYour+PCB+mounted+parts+configuration+%28default+or+custom+and+how%29%3A+default%0D%0AOdometry+sensor+%28yes%2Fno%29%3F+yes%0D%0AArdumower+chassis+%28yes%2Fno%29%3F+yes%0D%0AExact+error+description%3A+...+%0D%0A%0D%0A--Deutsch--%0D%0ADeine+Akku-Spannung+%2812v%2C+24v%29%3A+24v%0D%0ADein+Antriebsmotor+%28Ardumower%2C+anderer%29%3A+Ardumower+Motor%0D%0ADeine+Ardumower-Software+Version%3A+%28pfodApp-%3EInfo%29%3A+890%0D%0ADeine+PCB-Version+%28siehe+Aufdruck%29%3A+0.5%0D%0ADein+Arduino+%28Mega+oder+Due%29%3A+Mega+2560%0D%0ADeine+PCB+Bauteilbest%C3%BCckung+%28Standard+oder+abweichend+und+wie%29%3A+Standard%0D%0AOdometrie+sensor+%28ja%2Fnein%29%3F+ja%0D%0AArdumower+Chassis+%28ja%2Fnein%29%3F+ja%0D%0AGenaue+Fehlerbeschreibung%3A+...%0D%0A  'this link'] und erzeuge ein neues Thema - bitte teile uns folgendes mit:&lt;br /&gt;
&lt;br /&gt;
    Deine Plattform (Arduino Mega 2560, Arduino Due)&lt;br /&gt;
    Deine Arduino IDE-Version (der letzte Programmcode erfordert 1.6.3)&lt;br /&gt;
    Dein genaues Betriebssystem (Windows 8, Linux usw.)&lt;br /&gt;
    Deine Ardumower-Programmversion  (eine Liste der Veröffentlichungen siehst du hier https://github.com/Ardumower/ardumower/releases)&lt;br /&gt;
    Jede andere Info, die brauchbar sein kann...&lt;br /&gt;
&lt;br /&gt;
=Weitere Links=&lt;br /&gt;
#[[Ardumower LP|Diagnostic]]&lt;/div&gt;</summary>
		<author><name>Deejay</name></author>	</entry>

	<entry>
		<id>https://wiki.ardumower.de/index.php?title=Fehlerbehebung&amp;diff=2773</id>
		<title>Fehlerbehebung</title>
		<link rel="alternate" type="text/html" href="https://wiki.ardumower.de/index.php?title=Fehlerbehebung&amp;diff=2773"/>
				<updated>2015-09-16T17:26:09Z</updated>
		
		<summary type="html">&lt;p&gt;Deejay: /* Fehlercodes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
=Fehlersuche=&lt;br /&gt;
&lt;br /&gt;
==Fehlercodes==&lt;br /&gt;
Wenn dein Ardumower periodisch piepst (4 Töne - Pause )), ist er in einem Fehler-Status. Um den genauen Fehler zu finden, kann man die serielle Konsole oder die APP ('pfodApp-&amp;gt;Error Counters') benutzen. mögliche Lösungsvorschläge für jeden Fehler werden nachfolgend gegeben. Detaillierte Angaben zu deinen Robotereinstellungen, siehe [http://wiki.ardumower.de/index.php?title=Ardumower_LP#Einstellungen Einstellungen].&lt;br /&gt;
&lt;br /&gt;
  ERR_MOTOR_LEFT          Fehler  linker Getriebemotor&lt;br /&gt;
                          * Überprüfe Motortreiber und linken Getriebemotor&lt;br /&gt;
                          * MC33926: stelle sicher, dass der SLEW Jumper nicht gesteckt ist&lt;br /&gt;
                          * beim Fahren: veringere 'Motor-Max-PWM' und 'Tracking-P' um EMF zu veringern&lt;br /&gt;
  ERR_MOTOR_RIGHT         Fehler rechter GetriebemotorRight gear motor error&lt;br /&gt;
                          * Überprüfe Motortreiber und rechten Getriebemotor&lt;br /&gt;
                          * MC33926: stelle sicher, dass der SLEW Jumper nicht gesteckt ist&lt;br /&gt;
                          * beim Fahren: veringere 'Motor-Max-PWM' und 'Tracking-P' um EMF zu veringern&lt;br /&gt;
  ERR_MOTOR_MOW           Mähmotor Fehler &lt;br /&gt;
                          * Überprüfe Motortreiber und Mähmotor&lt;br /&gt;
                          * MC33926: stelle sicher, dass der SLEW Jumper nicht gesteckt ist&lt;br /&gt;
                          * Veringere Motor-Max-Power, damit Überstrom früher erkannt wird&lt;br /&gt;
  ERR_MOW_SENSE           Mähmotor Überstrom&lt;br /&gt;
                          * Überprüfe Mähmotor-Treiber und Mähmotor&lt;br /&gt;
                          * Vergrößere Motor-Max-Power, damit Überstrom später erkannt wird&lt;br /&gt;
  ERR_IMU_COMM            IMU Kommunikationsfehler&lt;br /&gt;
                          * Überprüfe die Verbindung zum IMU-Modul&lt;br /&gt;
  ERR_IMU_CALIB           IMU Abgleich-Fehler&lt;br /&gt;
                          * Start [http://wiki.ardumower.de/index.php?title=Inertialsensor_-_IMU#Abgleich_.28letzte_Version.29 'IMU Abgleich'] (entweder über die Konsole oder über pfodApp-&amp;gt;Settings-&amp;gt;IMU)                     &lt;br /&gt;
  ERR_IMU_TILT            IMU Neigungsfehler&lt;br /&gt;
                          * Überprüfe IMU-Modul und Ausrichtung des Roboters&lt;br /&gt;
  ERR_RTC_COMM            RTC Kommunikationsfehler&lt;br /&gt;
                          * Überprüfe die Verbindung zum RTC-Modul, RTC-Batterie usw.&lt;br /&gt;
  ERR_RTC_DATA            RTC-Daten sind fehlerhaft&lt;br /&gt;
                          * stelle und speichere Datum und Zeit&lt;br /&gt;
  ERR_PERIMETER_TIMEOUT   Perimeter-Signal, Zeitüberschreitung &lt;br /&gt;
                          * Überprüfe Perimeter-Sender, Schleife usw.&lt;br /&gt;
                          * Überprüfe die Polarität der Perimeterspule&lt;br /&gt;
                          * veringere 'Perimeter-smag', damit die Auszeit größer wird&lt;br /&gt;
                          * Erhöhe 'Perimeter-timeout-seconds', damit die Auszeit größer wird&lt;br /&gt;
                          * Überprüfe, ob das [http://wiki.ardumower.de/index.php?title=Perimeter-Schleife#Signal_und_Rauschmessungen Signal-Rausch-Verhältnis] größer 1 ist.&lt;br /&gt;
  ERR_TRACKING            Perimeter-Folge-Fehler &lt;br /&gt;
                          * Überprüfe Perimeter-Sender, Schleife usw.&lt;br /&gt;
                          * Erhöhe 'Perimeter-tracking-timeout', damit die Auszeit größer wird&lt;br /&gt;
  ERR_ODOMETRY_LEFT       Odometrie-Fehler linker Motor &lt;br /&gt;
                          * Überprüfe das linke Odometrie-Kabel&lt;br /&gt;
                          * Überprüfe die Drehrichtung des linken Motors &lt;br /&gt;
  ERR_ODOMETRY_RIGHT      Odometrie-Fehler rechter Motor &lt;br /&gt;
                          * Überprüfe das rechte Odometie-Kabel&lt;br /&gt;
                          * Überprüfe die Drehrichtung des rechten Motors&lt;br /&gt;
  ERR_BATTERY             Akku-Fehler &lt;br /&gt;
                          * Überprüfe Akku-Verbindung&lt;br /&gt;
  ERR_CHARGER             Ladefehler &lt;br /&gt;
                          * Überprüfe Verbindung zum Ladegerät &lt;br /&gt;
  ERR_GPS_COMM            GPS Kommunikationsfehler &lt;br /&gt;
                          * Überprüfe GPS-Kabel&lt;br /&gt;
  ERR_GPS_DATA            GPS Datenfehler &lt;br /&gt;
                          * Überprüfe GPS-Antenne und -Kabel&lt;br /&gt;
  ERR_ADC_CALIB           ADC Abgleich-Fehler&lt;br /&gt;
                          * Starte 'ADC calibration' (entweder über Konsole oder pfodApp-&amp;gt;ADC calibration)&lt;br /&gt;
  ERR_EEPROM_DATA         EEPROM Datenfehler &lt;br /&gt;
                          * Speichere Benutzer-Einstellungen (entweder über Konsole oder pfodApp-&amp;gt;Settings-Save)&lt;br /&gt;
&lt;br /&gt;
==Deaktiviere alle Pins, die nicht angeschlossen sind==&lt;br /&gt;
Stelle sicher, dass alle Pins und Eigenschaften die nicht angeschlossen sind (nicht verwendet werden), in der Roboter-Konfiguration deaktiviert sind. &lt;br /&gt;
&lt;br /&gt;
Beispiel: Wenn du die Odometrie-Pins nicht beschaltet hast, muss Odometrie in der Roboter-Konfiguration deaktiviert werden. (mower.cpp):&lt;br /&gt;
&lt;br /&gt;
 odometryUse       = 0;       // use odometry?&lt;br /&gt;
&lt;br /&gt;
== Probebetrieb ohne Mähmotor-Treiber ==&lt;br /&gt;
&lt;br /&gt;
Sofern man den Ardumower im Probebetrieb ohne Mähmotor-Treiber testen möchte, so ist der PIN &amp;quot;pinMotorMowFault&amp;quot; auf High zu setzen. Damit verschwindet die Fehlermeldung &amp;quot;Error: Motor mow fault&amp;quot; und der Mover kann getestet werden.&lt;br /&gt;
&lt;br /&gt;
==Drehen die Motoren richtig?==&lt;br /&gt;
Führe einen Motortestlauf aus. Gehe in die serielle Konsole (Arduino IDE: STRG+SHIFT+M, 19200 Baud) drücke 'd' und ENTER um ins Menü zu gelangen. Dann drücke '1' und ENTER. Es startet der Motortest.&lt;br /&gt;
&lt;br /&gt;
==Unerwartete Sensorauslösung==&lt;br /&gt;
Wenn dein Roboter etwas Unerwartetes tut, kann es an einem Sensor liegen, der fehlerhaft auslöst. Überprüfe das über die serielle Konsole:&lt;br /&gt;
&lt;br /&gt;
Starte die serielle Konsole (Arduino IDE: CTRL+SHIFT+M, 19200 Baud), und schalte den Roboter ein. Jedes Mal, wenn ein Sensor auslöst, wird der Zähler dieses Sensors erhöht. Siehe Beschreibung der Sensoren weiter unten.&lt;br /&gt;
Wenn sich also der Roboter nicht so verhält, wie er soll, dann schau dir die Sensor-Zähler an und stelle fest, welcher Zähler hochzählt, um das Problem zu lokalisieren.&lt;br /&gt;
&lt;br /&gt;
==Einige Sensoren lösen nicht aus?==&lt;br /&gt;
...&lt;br /&gt;
==Keine Verbindung über Bluetooth==&lt;br /&gt;
&lt;br /&gt;
* Stelle sicher, dass die Baudrate des BT-Modules richtig eingestellt ist (verwende die Ardumower Konsole) - Aktiviere den      Programmier-Modus des BT-Modules und stelle die Baudrate ein [[Bluetooth und App|Bluetooth &amp;amp; App]].&lt;br /&gt;
* Stelle sicher, das das BT-Modul mit dem Handy &amp;quot;gepaart&amp;quot; ist&lt;br /&gt;
* Überprüfe, dass der Arduino Mega nicht über USB mit Strom versorgt wird.&lt;br /&gt;
&lt;br /&gt;
=Konsolen-Ausgabe=&lt;br /&gt;
&lt;br /&gt;
Beim Start des Roboters wird über die serielle Konsole beispielsweise folgendes ausgegeben:&lt;br /&gt;
  START &lt;br /&gt;
  Ardumower rXXXX&lt;br /&gt;
  press...&lt;br /&gt;
    d zum Menü&lt;br /&gt;
    v um Konsolenausgabe zu ändern (Sensor-Zähler, Werte, Perimeter usw.)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 t     0 l177 v0 FORW spd   33   33    0 sen    0    0    0 bum    0    0 dro    0    0 son   0 yaw   0 pit   0 rol   0 bat 20.8 chg 21.7  0.0 imu  0 adc  0 Ardumower&lt;br /&gt;
 t     1 l177 v0 FORW spd   33   33    0 sen    0    0    0 bum    0    0 dro    0    0 son   0 yaw   0 pit   0 rol   0 bat 20.8 chg 21.7  0.0 imu  0 adc  0 Ardumower&lt;br /&gt;
 t     3 l177 v0 FORW spd   33   33    0 sen    0    0    0 bum    0    0 dro    0    0 son   0 yaw   0 pit   0 rol   0 bat 20.8 chg 21.7  0.0 imu  0 adc  0 Ardumower&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Wenn ein Sensor auslöst, wird sein Zähler erhöht. &lt;br /&gt;
Beispiel (Mähmotor-Überstromsensor löst aus):&lt;br /&gt;
&lt;br /&gt;
 t     4 l177 v0 FORW spd   33   33    0 sen    0    0    0 bum    0    0 dro    0    0 son   0 yaw   0 pit   0 rol   0 bat 20.8 chg 21.7  0.0 imu  0 adc  0 Ardumower&lt;br /&gt;
 t     5 l177 v0 REV  spd  -26  -26    0 sen    0    0    1 bum    0    0 dro    0    0 son   0 yaw   0 pit   0 rol   0 bat 20.8 chg 21.7  0.0 imu  0 adc  1 Ardumower&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Hier ist eine  Beschreibung jeder Spalte:&lt;br /&gt;
&lt;br /&gt;
 t - Zeit des akt. Maschinenzustands (ms)&lt;br /&gt;
 l - Programmschleifen-Durchläufe/sek &lt;br /&gt;
 v - Anzeige-Modus des ausgewählten Sensors (0 = Zähler / 1 = Sensorwerte ​​/ 2 = Sensorwerte​​) &lt;br /&gt;
 - aktueller Status (FORW, REV, ROLL usw.) &lt;br /&gt;
 - Nachhause-Fahrt? (1/0) &lt;br /&gt;
 spd - Steuerung / Drehzahl der Motoren: links (PWM), rechts (PWM), Mähmotor (speed) &lt;br /&gt;
 sen - Motor-Überstromzähler:  links, rechts, Mähmotor &lt;br /&gt;
 bum - Bumperzähler: links, rechts &lt;br /&gt;
 son - Ultraschall- Distanz-Unterschreitung: Zähler &lt;br /&gt;
 pit, roll - inclination (berechnet mit Beschleunigungssensor) &lt;br /&gt;
 yaw - Kompass-Kurs&lt;br /&gt;
 bat - Akkuspannung&lt;br /&gt;
 chg - Ladespannung&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''---Befehle---&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
 'd': Testmenü, Abgleich IMU, Bluetooth&lt;br /&gt;
 'v': Anzeigemodus(zeigt Werte oder Zähler&lt;br /&gt;
 'h': Fahr zur Ladestation&lt;br /&gt;
 'p': Schleifenfahrt&lt;br /&gt;
 'l': simuliert linken Bumper&lt;br /&gt;
 'r': simuliert rechten Bumper&lt;br /&gt;
 's': simuliert Rasensensor&lt;br /&gt;
 'm': schaltet Mähmotor&lt;br /&gt;
 'c': simuliert Laden&lt;br /&gt;
 '+': drehen 90 Grad&lt;br /&gt;
 '-': drehen 90 Grad &lt;br /&gt;
 '3': aktiviert Fernsteuerung&lt;br /&gt;
 '0': Aus&lt;br /&gt;
 '1': Automode, Mähmotor an&lt;br /&gt;
&lt;br /&gt;
=Wie melde ich einen Programmfehler/eine neue Eigenschaft/neuen Programmcode=&lt;br /&gt;
Klicke auf [https://github.com/Ardumower/ardumower/issues/new?title=Error+XYZ+%2F+Fehler+XYZ&amp;amp;body=Please+always+fill-in+below%2FBitte+unbedingt+ausf%C3%BCllen%21%0D%0A%0D%0A--English--%0D%0AYour+battery+voltage+%2812v%2C+24v%29%3A+24v%0D%0AYour+gear+motor+%28Ardumower%2C+other%29%3A+Ardumower+motor%0D%0AYour+Ardumower+software+version+%28pfodApp-%3EInfo%29%3A+890%0D%0AYour+Arduino+%28Mega+or+Due%29%3A+Mega+2560%0D%0AYour+PCB+version+%28printed+on+PCB%29%3A+0.5%0D%0AYour+PCB+mounted+parts+configuration+%28default+or+custom+and+how%29%3A+default%0D%0AOdometry+sensor+%28yes%2Fno%29%3F+yes%0D%0AArdumower+chassis+%28yes%2Fno%29%3F+yes%0D%0AExact+error+description%3A+...+%0D%0A%0D%0A--Deutsch--%0D%0ADeine+Akku-Spannung+%2812v%2C+24v%29%3A+24v%0D%0ADein+Antriebsmotor+%28Ardumower%2C+anderer%29%3A+Ardumower+Motor%0D%0ADeine+Ardumower-Software+Version%3A+%28pfodApp-%3EInfo%29%3A+890%0D%0ADeine+PCB-Version+%28siehe+Aufdruck%29%3A+0.5%0D%0ADein+Arduino+%28Mega+oder+Due%29%3A+Mega+2560%0D%0ADeine+PCB+Bauteilbest%C3%BCckung+%28Standard+oder+abweichend+und+wie%29%3A+Standard%0D%0AOdometrie+sensor+%28ja%2Fnein%29%3F+ja%0D%0AArdumower+Chassis+%28ja%2Fnein%29%3F+ja%0D%0AGenaue+Fehlerbeschreibung%3A+...%0D%0A  'this link'] und erzeuge ein neues Thema - bitte teile uns folgendes mit:&lt;br /&gt;
&lt;br /&gt;
    Deine Plattform (Arduino Mega 2560, Arduino Due)&lt;br /&gt;
    Deine Arduino IDE-Version (der letzte Programmcode erfordert 1.6.3)&lt;br /&gt;
    Dein genaues Betriebssystem (Windows 8, Linux usw.)&lt;br /&gt;
    Deine Ardumower-Programmversion  (eine Liste der Veröffentlichungen siehst du hier https://github.com/Ardumower/ardumower/releases)&lt;br /&gt;
    Jede andere Info, die brauchbar sein kann...&lt;br /&gt;
&lt;br /&gt;
=Weitere Links=&lt;br /&gt;
#[[Ardumower LP|Diagnostic]]&lt;/div&gt;</summary>
		<author><name>Deejay</name></author>	</entry>

	<entry>
		<id>https://wiki.ardumower.de/index.php?title=Fehlerbehebung&amp;diff=2772</id>
		<title>Fehlerbehebung</title>
		<link rel="alternate" type="text/html" href="https://wiki.ardumower.de/index.php?title=Fehlerbehebung&amp;diff=2772"/>
				<updated>2015-09-16T17:21:10Z</updated>
		
		<summary type="html">&lt;p&gt;Deejay: /* Probebetrieb ohne Mähmotor-Treiber */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
=Fehlersuche=&lt;br /&gt;
&lt;br /&gt;
==Fehlercodes==&lt;br /&gt;
wenn dein Ardumower periodisch piepst, ist er in einem Fehler-Status. Um den genauen Fehler zu finden, kann man die serielle Konsole oder die APP ('pfodApp-&amp;gt;Error Counters') benutzen. mögliche Lösungsvorschläge für jeden Fehler werden nachfolgend gegeben. Detaillierte Angaben zu deinen Robotereinstellungen, siehe [http://wiki.ardumower.de/index.php?title=Ardumower_LP#Einstellungen Einstellungen].&lt;br /&gt;
&lt;br /&gt;
  ERR_MOTOR_LEFT          Fehler  linker Getriebemotor&lt;br /&gt;
                          * Überprüfe Motortreiber und linken Getriebemotor&lt;br /&gt;
                          * MC33926: stelle sicher, dass der SLEW Jumper nicht gesteckt ist&lt;br /&gt;
                          * beim Fahren: veringere 'Motor-Max-PWM' und 'Tracking-P' um EMF zu veringern&lt;br /&gt;
  ERR_MOTOR_RIGHT         Fehler rechter GetriebemotorRight gear motor error&lt;br /&gt;
                          * Überprüfe Motortreiber und rechten Getriebemotor&lt;br /&gt;
                          * MC33926: stelle sicher, dass der SLEW Jumper nicht gesteckt ist&lt;br /&gt;
                          * beim Fahren: veringere 'Motor-Max-PWM' und 'Tracking-P' um EMF zu veringern&lt;br /&gt;
  ERR_MOTOR_MOW           Mähmotor Fehler &lt;br /&gt;
                          * Überprüfe Motortreiber und Mähmotor&lt;br /&gt;
                          * MC33926: stelle sicher, dass der SLEW Jumper nicht gesteckt ist&lt;br /&gt;
                          * Veringere Motor-Max-Power, damit Überstrom früher erkannt wird&lt;br /&gt;
  ERR_MOW_SENSE           Mähmotor Überstrom&lt;br /&gt;
                          * Überprüfe Mähmotor-Treiber und Mähmotor&lt;br /&gt;
                          * Vergrößere Motor-Max-Power, damit Überstrom später erkannt wird&lt;br /&gt;
  ERR_IMU_COMM            IMU Kommunikationsfehler&lt;br /&gt;
                          * Überprüfe die Verbindung zum IMU-Modul&lt;br /&gt;
  ERR_IMU_CALIB           IMU Abgleich-Fehler&lt;br /&gt;
                          * Start [http://wiki.ardumower.de/index.php?title=Inertialsensor_-_IMU#Abgleich_.28letzte_Version.29 'IMU Abgleich'] (entweder über die Konsole oder über pfodApp-&amp;gt;Settings-&amp;gt;IMU)                     &lt;br /&gt;
  ERR_IMU_TILT            IMU Neigungsfehler&lt;br /&gt;
                          * Überprüfe IMU-Modul und Ausrichtung des Roboters&lt;br /&gt;
  ERR_RTC_COMM            RTC Kommunikationsfehler&lt;br /&gt;
                          * Überprüfe die Verbindung zum RTC-Modul, RTC-Batterie usw.&lt;br /&gt;
  ERR_RTC_DATA            RTC-Daten sind fehlerhaft&lt;br /&gt;
                          * stelle und speichere Datum und Zeit&lt;br /&gt;
  ERR_PERIMETER_TIMEOUT   Perimeter-Signal, Zeitüberschreitung &lt;br /&gt;
                          * Überprüfe Perimeter-Sender, Schleife usw.&lt;br /&gt;
                          * Überprüfe die Polarität der Perimeterspule&lt;br /&gt;
                          * veringere 'Perimeter-smag', damit die Auszeit größer wird&lt;br /&gt;
                          * Erhöhe 'Perimeter-timeout-seconds', damit die Auszeit größer wird&lt;br /&gt;
                          * Überprüfe, ob das [http://wiki.ardumower.de/index.php?title=Perimeter-Schleife#Signal_und_Rauschmessungen Signal-Rausch-Verhältnis] größer 1 ist.&lt;br /&gt;
  ERR_TRACKING            Perimeter-Folge-Fehler &lt;br /&gt;
                          * Überprüfe Perimeter-Sender, Schleife usw.&lt;br /&gt;
                          * Erhöhe 'Perimeter-tracking-timeout', damit die Auszeit größer wird&lt;br /&gt;
  ERR_ODOMETRY_LEFT       Odometrie-Fehler linker Motor &lt;br /&gt;
                          * Überprüfe das linke Odometrie-Kabel&lt;br /&gt;
                          * Überprüfe die Drehrichtung des linken Motors &lt;br /&gt;
  ERR_ODOMETRY_RIGHT      Odometrie-Fehler rechter Motor &lt;br /&gt;
                          * Überprüfe das rechte Odometie-Kabel&lt;br /&gt;
                          * Überprüfe die Drehrichtung des rechten Motors&lt;br /&gt;
  ERR_BATTERY             Akku-Fehler &lt;br /&gt;
                          * Überprüfe Akku-Verbindung&lt;br /&gt;
  ERR_CHARGER             Ladefehler &lt;br /&gt;
                          * Überprüfe Verbindung zum Ladegerät &lt;br /&gt;
  ERR_GPS_COMM            GPS Kommunikationsfehler &lt;br /&gt;
                          * Überprüfe GPS-Kabel&lt;br /&gt;
  ERR_GPS_DATA            GPS Datenfehler &lt;br /&gt;
                          * Überprüfe GPS-Antenne und -Kabel&lt;br /&gt;
  ERR_ADC_CALIB           ADC Abgleich-Fehler&lt;br /&gt;
                          * Starte 'ADC calibration' (entweder über Konsole oder pfodApp-&amp;gt;ADC calibration)&lt;br /&gt;
  ERR_EEPROM_DATA         EEPROM Datenfehler &lt;br /&gt;
                          * Speichere Benutzer-Einstellungen (entweder über Konsole oder pfodApp-&amp;gt;Settings-Save)&lt;br /&gt;
&lt;br /&gt;
==Deaktiviere alle Pins, die nicht angeschlossen sind==&lt;br /&gt;
Stelle sicher, dass alle Pins und Eigenschaften die nicht angeschlossen sind (nicht verwendet werden), in der Roboter-Konfiguration deaktiviert sind. &lt;br /&gt;
&lt;br /&gt;
Beispiel: Wenn du die Odometrie-Pins nicht beschaltet hast, muss Odometrie in der Roboter-Konfiguration deaktiviert werden. (mower.cpp):&lt;br /&gt;
&lt;br /&gt;
 odometryUse       = 0;       // use odometry?&lt;br /&gt;
&lt;br /&gt;
== Probebetrieb ohne Mähmotor-Treiber ==&lt;br /&gt;
&lt;br /&gt;
Sofern man den Ardumower im Probebetrieb ohne Mähmotor-Treiber testen möchte, so ist der PIN &amp;quot;pinMotorMowFault&amp;quot; auf High zu setzen. Damit verschwindet die Fehlermeldung &amp;quot;Error: Motor mow fault&amp;quot; und der Mover kann getestet werden.&lt;br /&gt;
&lt;br /&gt;
==Drehen die Motoren richtig?==&lt;br /&gt;
Führe einen Motortestlauf aus. Gehe in die serielle Konsole (Arduino IDE: STRG+SHIFT+M, 19200 Baud) drücke 'd' und ENTER um ins Menü zu gelangen. Dann drücke '1' und ENTER. Es startet der Motortest.&lt;br /&gt;
&lt;br /&gt;
==Unerwartete Sensorauslösung==&lt;br /&gt;
Wenn dein Roboter etwas Unerwartetes tut, kann es an einem Sensor liegen, der fehlerhaft auslöst. Überprüfe das über die serielle Konsole:&lt;br /&gt;
&lt;br /&gt;
Starte die serielle Konsole (Arduino IDE: CTRL+SHIFT+M, 19200 Baud), und schalte den Roboter ein. Jedes Mal, wenn ein Sensor auslöst, wird der Zähler dieses Sensors erhöht. Siehe Beschreibung der Sensoren weiter unten.&lt;br /&gt;
Wenn sich also der Roboter nicht so verhält, wie er soll, dann schau dir die Sensor-Zähler an und stelle fest, welcher Zähler hochzählt, um das Problem zu lokalisieren.&lt;br /&gt;
&lt;br /&gt;
==Einige Sensoren lösen nicht aus?==&lt;br /&gt;
...&lt;br /&gt;
==Keine Verbindung über Bluetooth==&lt;br /&gt;
&lt;br /&gt;
* Stelle sicher, dass die Baudrate des BT-Modules richtig eingestellt ist (verwende die Ardumower Konsole) - Aktiviere den      Programmier-Modus des BT-Modules und stelle die Baudrate ein [[Bluetooth und App|Bluetooth &amp;amp; App]].&lt;br /&gt;
* Stelle sicher, das das BT-Modul mit dem Handy &amp;quot;gepaart&amp;quot; ist&lt;br /&gt;
* Überprüfe, dass der Arduino Mega nicht über USB mit Strom versorgt wird.&lt;br /&gt;
&lt;br /&gt;
=Konsolen-Ausgabe=&lt;br /&gt;
&lt;br /&gt;
Beim Start des Roboters wird über die serielle Konsole beispielsweise folgendes ausgegeben:&lt;br /&gt;
  START &lt;br /&gt;
  Ardumower rXXXX&lt;br /&gt;
  press...&lt;br /&gt;
    d zum Menü&lt;br /&gt;
    v um Konsolenausgabe zu ändern (Sensor-Zähler, Werte, Perimeter usw.)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 t     0 l177 v0 FORW spd   33   33    0 sen    0    0    0 bum    0    0 dro    0    0 son   0 yaw   0 pit   0 rol   0 bat 20.8 chg 21.7  0.0 imu  0 adc  0 Ardumower&lt;br /&gt;
 t     1 l177 v0 FORW spd   33   33    0 sen    0    0    0 bum    0    0 dro    0    0 son   0 yaw   0 pit   0 rol   0 bat 20.8 chg 21.7  0.0 imu  0 adc  0 Ardumower&lt;br /&gt;
 t     3 l177 v0 FORW spd   33   33    0 sen    0    0    0 bum    0    0 dro    0    0 son   0 yaw   0 pit   0 rol   0 bat 20.8 chg 21.7  0.0 imu  0 adc  0 Ardumower&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Wenn ein Sensor auslöst, wird sein Zähler erhöht. &lt;br /&gt;
Beispiel (Mähmotor-Überstromsensor löst aus):&lt;br /&gt;
&lt;br /&gt;
 t     4 l177 v0 FORW spd   33   33    0 sen    0    0    0 bum    0    0 dro    0    0 son   0 yaw   0 pit   0 rol   0 bat 20.8 chg 21.7  0.0 imu  0 adc  0 Ardumower&lt;br /&gt;
 t     5 l177 v0 REV  spd  -26  -26    0 sen    0    0    1 bum    0    0 dro    0    0 son   0 yaw   0 pit   0 rol   0 bat 20.8 chg 21.7  0.0 imu  0 adc  1 Ardumower&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Hier ist eine  Beschreibung jeder Spalte:&lt;br /&gt;
&lt;br /&gt;
 t - Zeit des akt. Maschinenzustands (ms)&lt;br /&gt;
 l - Programmschleifen-Durchläufe/sek &lt;br /&gt;
 v - Anzeige-Modus des ausgewählten Sensors (0 = Zähler / 1 = Sensorwerte ​​/ 2 = Sensorwerte​​) &lt;br /&gt;
 - aktueller Status (FORW, REV, ROLL usw.) &lt;br /&gt;
 - Nachhause-Fahrt? (1/0) &lt;br /&gt;
 spd - Steuerung / Drehzahl der Motoren: links (PWM), rechts (PWM), Mähmotor (speed) &lt;br /&gt;
 sen - Motor-Überstromzähler:  links, rechts, Mähmotor &lt;br /&gt;
 bum - Bumperzähler: links, rechts &lt;br /&gt;
 son - Ultraschall- Distanz-Unterschreitung: Zähler &lt;br /&gt;
 pit, roll - inclination (berechnet mit Beschleunigungssensor) &lt;br /&gt;
 yaw - Kompass-Kurs&lt;br /&gt;
 bat - Akkuspannung&lt;br /&gt;
 chg - Ladespannung&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''---Befehle---&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
 'd': Testmenü, Abgleich IMU, Bluetooth&lt;br /&gt;
 'v': Anzeigemodus(zeigt Werte oder Zähler&lt;br /&gt;
 'h': Fahr zur Ladestation&lt;br /&gt;
 'p': Schleifenfahrt&lt;br /&gt;
 'l': simuliert linken Bumper&lt;br /&gt;
 'r': simuliert rechten Bumper&lt;br /&gt;
 's': simuliert Rasensensor&lt;br /&gt;
 'm': schaltet Mähmotor&lt;br /&gt;
 'c': simuliert Laden&lt;br /&gt;
 '+': drehen 90 Grad&lt;br /&gt;
 '-': drehen 90 Grad &lt;br /&gt;
 '3': aktiviert Fernsteuerung&lt;br /&gt;
 '0': Aus&lt;br /&gt;
 '1': Automode, Mähmotor an&lt;br /&gt;
&lt;br /&gt;
=Wie melde ich einen Programmfehler/eine neue Eigenschaft/neuen Programmcode=&lt;br /&gt;
Klicke auf [https://github.com/Ardumower/ardumower/issues/new?title=Error+XYZ+%2F+Fehler+XYZ&amp;amp;body=Please+always+fill-in+below%2FBitte+unbedingt+ausf%C3%BCllen%21%0D%0A%0D%0A--English--%0D%0AYour+battery+voltage+%2812v%2C+24v%29%3A+24v%0D%0AYour+gear+motor+%28Ardumower%2C+other%29%3A+Ardumower+motor%0D%0AYour+Ardumower+software+version+%28pfodApp-%3EInfo%29%3A+890%0D%0AYour+Arduino+%28Mega+or+Due%29%3A+Mega+2560%0D%0AYour+PCB+version+%28printed+on+PCB%29%3A+0.5%0D%0AYour+PCB+mounted+parts+configuration+%28default+or+custom+and+how%29%3A+default%0D%0AOdometry+sensor+%28yes%2Fno%29%3F+yes%0D%0AArdumower+chassis+%28yes%2Fno%29%3F+yes%0D%0AExact+error+description%3A+...+%0D%0A%0D%0A--Deutsch--%0D%0ADeine+Akku-Spannung+%2812v%2C+24v%29%3A+24v%0D%0ADein+Antriebsmotor+%28Ardumower%2C+anderer%29%3A+Ardumower+Motor%0D%0ADeine+Ardumower-Software+Version%3A+%28pfodApp-%3EInfo%29%3A+890%0D%0ADeine+PCB-Version+%28siehe+Aufdruck%29%3A+0.5%0D%0ADein+Arduino+%28Mega+oder+Due%29%3A+Mega+2560%0D%0ADeine+PCB+Bauteilbest%C3%BCckung+%28Standard+oder+abweichend+und+wie%29%3A+Standard%0D%0AOdometrie+sensor+%28ja%2Fnein%29%3F+ja%0D%0AArdumower+Chassis+%28ja%2Fnein%29%3F+ja%0D%0AGenaue+Fehlerbeschreibung%3A+...%0D%0A  'this link'] und erzeuge ein neues Thema - bitte teile uns folgendes mit:&lt;br /&gt;
&lt;br /&gt;
    Deine Plattform (Arduino Mega 2560, Arduino Due)&lt;br /&gt;
    Deine Arduino IDE-Version (der letzte Programmcode erfordert 1.6.3)&lt;br /&gt;
    Dein genaues Betriebssystem (Windows 8, Linux usw.)&lt;br /&gt;
    Deine Ardumower-Programmversion  (eine Liste der Veröffentlichungen siehst du hier https://github.com/Ardumower/ardumower/releases)&lt;br /&gt;
    Jede andere Info, die brauchbar sein kann...&lt;br /&gt;
&lt;br /&gt;
=Weitere Links=&lt;br /&gt;
#[[Ardumower LP|Diagnostic]]&lt;/div&gt;</summary>
		<author><name>Deejay</name></author>	</entry>

	<entry>
		<id>https://wiki.ardumower.de/index.php?title=Fehlerbehebung&amp;diff=2771</id>
		<title>Fehlerbehebung</title>
		<link rel="alternate" type="text/html" href="https://wiki.ardumower.de/index.php?title=Fehlerbehebung&amp;diff=2771"/>
				<updated>2015-09-16T17:19:46Z</updated>
		
		<summary type="html">&lt;p&gt;Deejay: /* Deaktiviere alle Pins, die nicht angeschlossen sind */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
=Fehlersuche=&lt;br /&gt;
&lt;br /&gt;
==Fehlercodes==&lt;br /&gt;
wenn dein Ardumower periodisch piepst, ist er in einem Fehler-Status. Um den genauen Fehler zu finden, kann man die serielle Konsole oder die APP ('pfodApp-&amp;gt;Error Counters') benutzen. mögliche Lösungsvorschläge für jeden Fehler werden nachfolgend gegeben. Detaillierte Angaben zu deinen Robotereinstellungen, siehe [http://wiki.ardumower.de/index.php?title=Ardumower_LP#Einstellungen Einstellungen].&lt;br /&gt;
&lt;br /&gt;
  ERR_MOTOR_LEFT          Fehler  linker Getriebemotor&lt;br /&gt;
                          * Überprüfe Motortreiber und linken Getriebemotor&lt;br /&gt;
                          * MC33926: stelle sicher, dass der SLEW Jumper nicht gesteckt ist&lt;br /&gt;
                          * beim Fahren: veringere 'Motor-Max-PWM' und 'Tracking-P' um EMF zu veringern&lt;br /&gt;
  ERR_MOTOR_RIGHT         Fehler rechter GetriebemotorRight gear motor error&lt;br /&gt;
                          * Überprüfe Motortreiber und rechten Getriebemotor&lt;br /&gt;
                          * MC33926: stelle sicher, dass der SLEW Jumper nicht gesteckt ist&lt;br /&gt;
                          * beim Fahren: veringere 'Motor-Max-PWM' und 'Tracking-P' um EMF zu veringern&lt;br /&gt;
  ERR_MOTOR_MOW           Mähmotor Fehler &lt;br /&gt;
                          * Überprüfe Motortreiber und Mähmotor&lt;br /&gt;
                          * MC33926: stelle sicher, dass der SLEW Jumper nicht gesteckt ist&lt;br /&gt;
                          * Veringere Motor-Max-Power, damit Überstrom früher erkannt wird&lt;br /&gt;
  ERR_MOW_SENSE           Mähmotor Überstrom&lt;br /&gt;
                          * Überprüfe Mähmotor-Treiber und Mähmotor&lt;br /&gt;
                          * Vergrößere Motor-Max-Power, damit Überstrom später erkannt wird&lt;br /&gt;
  ERR_IMU_COMM            IMU Kommunikationsfehler&lt;br /&gt;
                          * Überprüfe die Verbindung zum IMU-Modul&lt;br /&gt;
  ERR_IMU_CALIB           IMU Abgleich-Fehler&lt;br /&gt;
                          * Start [http://wiki.ardumower.de/index.php?title=Inertialsensor_-_IMU#Abgleich_.28letzte_Version.29 'IMU Abgleich'] (entweder über die Konsole oder über pfodApp-&amp;gt;Settings-&amp;gt;IMU)                     &lt;br /&gt;
  ERR_IMU_TILT            IMU Neigungsfehler&lt;br /&gt;
                          * Überprüfe IMU-Modul und Ausrichtung des Roboters&lt;br /&gt;
  ERR_RTC_COMM            RTC Kommunikationsfehler&lt;br /&gt;
                          * Überprüfe die Verbindung zum RTC-Modul, RTC-Batterie usw.&lt;br /&gt;
  ERR_RTC_DATA            RTC-Daten sind fehlerhaft&lt;br /&gt;
                          * stelle und speichere Datum und Zeit&lt;br /&gt;
  ERR_PERIMETER_TIMEOUT   Perimeter-Signal, Zeitüberschreitung &lt;br /&gt;
                          * Überprüfe Perimeter-Sender, Schleife usw.&lt;br /&gt;
                          * Überprüfe die Polarität der Perimeterspule&lt;br /&gt;
                          * veringere 'Perimeter-smag', damit die Auszeit größer wird&lt;br /&gt;
                          * Erhöhe 'Perimeter-timeout-seconds', damit die Auszeit größer wird&lt;br /&gt;
                          * Überprüfe, ob das [http://wiki.ardumower.de/index.php?title=Perimeter-Schleife#Signal_und_Rauschmessungen Signal-Rausch-Verhältnis] größer 1 ist.&lt;br /&gt;
  ERR_TRACKING            Perimeter-Folge-Fehler &lt;br /&gt;
                          * Überprüfe Perimeter-Sender, Schleife usw.&lt;br /&gt;
                          * Erhöhe 'Perimeter-tracking-timeout', damit die Auszeit größer wird&lt;br /&gt;
  ERR_ODOMETRY_LEFT       Odometrie-Fehler linker Motor &lt;br /&gt;
                          * Überprüfe das linke Odometrie-Kabel&lt;br /&gt;
                          * Überprüfe die Drehrichtung des linken Motors &lt;br /&gt;
  ERR_ODOMETRY_RIGHT      Odometrie-Fehler rechter Motor &lt;br /&gt;
                          * Überprüfe das rechte Odometie-Kabel&lt;br /&gt;
                          * Überprüfe die Drehrichtung des rechten Motors&lt;br /&gt;
  ERR_BATTERY             Akku-Fehler &lt;br /&gt;
                          * Überprüfe Akku-Verbindung&lt;br /&gt;
  ERR_CHARGER             Ladefehler &lt;br /&gt;
                          * Überprüfe Verbindung zum Ladegerät &lt;br /&gt;
  ERR_GPS_COMM            GPS Kommunikationsfehler &lt;br /&gt;
                          * Überprüfe GPS-Kabel&lt;br /&gt;
  ERR_GPS_DATA            GPS Datenfehler &lt;br /&gt;
                          * Überprüfe GPS-Antenne und -Kabel&lt;br /&gt;
  ERR_ADC_CALIB           ADC Abgleich-Fehler&lt;br /&gt;
                          * Starte 'ADC calibration' (entweder über Konsole oder pfodApp-&amp;gt;ADC calibration)&lt;br /&gt;
  ERR_EEPROM_DATA         EEPROM Datenfehler &lt;br /&gt;
                          * Speichere Benutzer-Einstellungen (entweder über Konsole oder pfodApp-&amp;gt;Settings-Save)&lt;br /&gt;
&lt;br /&gt;
==Deaktiviere alle Pins, die nicht angeschlossen sind==&lt;br /&gt;
Stelle sicher, dass alle Pins und Eigenschaften die nicht angeschlossen sind (nicht verwendet werden), in der Roboter-Konfiguration deaktiviert sind. &lt;br /&gt;
&lt;br /&gt;
Beispiel: Wenn du die Odometrie-Pins nicht beschaltet hast, muss Odometrie in der Roboter-Konfiguration deaktiviert werden. (mower.cpp):&lt;br /&gt;
&lt;br /&gt;
 odometryUse       = 0;       // use odometry?&lt;br /&gt;
&lt;br /&gt;
== Probebetrieb ohne Mähmotor-Treiber ==&lt;br /&gt;
&lt;br /&gt;
Sofern man den Ardumower im Probebetrieb ohne Mähmotor-Treiber testen möchte, so ist der PIN &amp;quot;PinMotorMowFault&amp;quot; auf High zu setzen. Damit verschwindet die Fehlermeldung &amp;quot;Motor mow fault&amp;quot; und der Mover kann getestet werden.&lt;br /&gt;
&lt;br /&gt;
==Drehen die Motoren richtig?==&lt;br /&gt;
Führe einen Motortestlauf aus. Gehe in die serielle Konsole (Arduino IDE: STRG+SHIFT+M, 19200 Baud) drücke 'd' und ENTER um ins Menü zu gelangen. Dann drücke '1' und ENTER. Es startet der Motortest.&lt;br /&gt;
&lt;br /&gt;
==Unerwartete Sensorauslösung==&lt;br /&gt;
Wenn dein Roboter etwas Unerwartetes tut, kann es an einem Sensor liegen, der fehlerhaft auslöst. Überprüfe das über die serielle Konsole:&lt;br /&gt;
&lt;br /&gt;
Starte die serielle Konsole (Arduino IDE: CTRL+SHIFT+M, 19200 Baud), und schalte den Roboter ein. Jedes Mal, wenn ein Sensor auslöst, wird der Zähler dieses Sensors erhöht. Siehe Beschreibung der Sensoren weiter unten.&lt;br /&gt;
Wenn sich also der Roboter nicht so verhält, wie er soll, dann schau dir die Sensor-Zähler an und stelle fest, welcher Zähler hochzählt, um das Problem zu lokalisieren.&lt;br /&gt;
&lt;br /&gt;
==Einige Sensoren lösen nicht aus?==&lt;br /&gt;
...&lt;br /&gt;
==Keine Verbindung über Bluetooth==&lt;br /&gt;
&lt;br /&gt;
* Stelle sicher, dass die Baudrate des BT-Modules richtig eingestellt ist (verwende die Ardumower Konsole) - Aktiviere den      Programmier-Modus des BT-Modules und stelle die Baudrate ein [[Bluetooth und App|Bluetooth &amp;amp; App]].&lt;br /&gt;
* Stelle sicher, das das BT-Modul mit dem Handy &amp;quot;gepaart&amp;quot; ist&lt;br /&gt;
* Überprüfe, dass der Arduino Mega nicht über USB mit Strom versorgt wird.&lt;br /&gt;
&lt;br /&gt;
=Konsolen-Ausgabe=&lt;br /&gt;
&lt;br /&gt;
Beim Start des Roboters wird über die serielle Konsole beispielsweise folgendes ausgegeben:&lt;br /&gt;
  START &lt;br /&gt;
  Ardumower rXXXX&lt;br /&gt;
  press...&lt;br /&gt;
    d zum Menü&lt;br /&gt;
    v um Konsolenausgabe zu ändern (Sensor-Zähler, Werte, Perimeter usw.)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 t     0 l177 v0 FORW spd   33   33    0 sen    0    0    0 bum    0    0 dro    0    0 son   0 yaw   0 pit   0 rol   0 bat 20.8 chg 21.7  0.0 imu  0 adc  0 Ardumower&lt;br /&gt;
 t     1 l177 v0 FORW spd   33   33    0 sen    0    0    0 bum    0    0 dro    0    0 son   0 yaw   0 pit   0 rol   0 bat 20.8 chg 21.7  0.0 imu  0 adc  0 Ardumower&lt;br /&gt;
 t     3 l177 v0 FORW spd   33   33    0 sen    0    0    0 bum    0    0 dro    0    0 son   0 yaw   0 pit   0 rol   0 bat 20.8 chg 21.7  0.0 imu  0 adc  0 Ardumower&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Wenn ein Sensor auslöst, wird sein Zähler erhöht. &lt;br /&gt;
Beispiel (Mähmotor-Überstromsensor löst aus):&lt;br /&gt;
&lt;br /&gt;
 t     4 l177 v0 FORW spd   33   33    0 sen    0    0    0 bum    0    0 dro    0    0 son   0 yaw   0 pit   0 rol   0 bat 20.8 chg 21.7  0.0 imu  0 adc  0 Ardumower&lt;br /&gt;
 t     5 l177 v0 REV  spd  -26  -26    0 sen    0    0    1 bum    0    0 dro    0    0 son   0 yaw   0 pit   0 rol   0 bat 20.8 chg 21.7  0.0 imu  0 adc  1 Ardumower&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Hier ist eine  Beschreibung jeder Spalte:&lt;br /&gt;
&lt;br /&gt;
 t - Zeit des akt. Maschinenzustands (ms)&lt;br /&gt;
 l - Programmschleifen-Durchläufe/sek &lt;br /&gt;
 v - Anzeige-Modus des ausgewählten Sensors (0 = Zähler / 1 = Sensorwerte ​​/ 2 = Sensorwerte​​) &lt;br /&gt;
 - aktueller Status (FORW, REV, ROLL usw.) &lt;br /&gt;
 - Nachhause-Fahrt? (1/0) &lt;br /&gt;
 spd - Steuerung / Drehzahl der Motoren: links (PWM), rechts (PWM), Mähmotor (speed) &lt;br /&gt;
 sen - Motor-Überstromzähler:  links, rechts, Mähmotor &lt;br /&gt;
 bum - Bumperzähler: links, rechts &lt;br /&gt;
 son - Ultraschall- Distanz-Unterschreitung: Zähler &lt;br /&gt;
 pit, roll - inclination (berechnet mit Beschleunigungssensor) &lt;br /&gt;
 yaw - Kompass-Kurs&lt;br /&gt;
 bat - Akkuspannung&lt;br /&gt;
 chg - Ladespannung&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''---Befehle---&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
 'd': Testmenü, Abgleich IMU, Bluetooth&lt;br /&gt;
 'v': Anzeigemodus(zeigt Werte oder Zähler&lt;br /&gt;
 'h': Fahr zur Ladestation&lt;br /&gt;
 'p': Schleifenfahrt&lt;br /&gt;
 'l': simuliert linken Bumper&lt;br /&gt;
 'r': simuliert rechten Bumper&lt;br /&gt;
 's': simuliert Rasensensor&lt;br /&gt;
 'm': schaltet Mähmotor&lt;br /&gt;
 'c': simuliert Laden&lt;br /&gt;
 '+': drehen 90 Grad&lt;br /&gt;
 '-': drehen 90 Grad &lt;br /&gt;
 '3': aktiviert Fernsteuerung&lt;br /&gt;
 '0': Aus&lt;br /&gt;
 '1': Automode, Mähmotor an&lt;br /&gt;
&lt;br /&gt;
=Wie melde ich einen Programmfehler/eine neue Eigenschaft/neuen Programmcode=&lt;br /&gt;
Klicke auf [https://github.com/Ardumower/ardumower/issues/new?title=Error+XYZ+%2F+Fehler+XYZ&amp;amp;body=Please+always+fill-in+below%2FBitte+unbedingt+ausf%C3%BCllen%21%0D%0A%0D%0A--English--%0D%0AYour+battery+voltage+%2812v%2C+24v%29%3A+24v%0D%0AYour+gear+motor+%28Ardumower%2C+other%29%3A+Ardumower+motor%0D%0AYour+Ardumower+software+version+%28pfodApp-%3EInfo%29%3A+890%0D%0AYour+Arduino+%28Mega+or+Due%29%3A+Mega+2560%0D%0AYour+PCB+version+%28printed+on+PCB%29%3A+0.5%0D%0AYour+PCB+mounted+parts+configuration+%28default+or+custom+and+how%29%3A+default%0D%0AOdometry+sensor+%28yes%2Fno%29%3F+yes%0D%0AArdumower+chassis+%28yes%2Fno%29%3F+yes%0D%0AExact+error+description%3A+...+%0D%0A%0D%0A--Deutsch--%0D%0ADeine+Akku-Spannung+%2812v%2C+24v%29%3A+24v%0D%0ADein+Antriebsmotor+%28Ardumower%2C+anderer%29%3A+Ardumower+Motor%0D%0ADeine+Ardumower-Software+Version%3A+%28pfodApp-%3EInfo%29%3A+890%0D%0ADeine+PCB-Version+%28siehe+Aufdruck%29%3A+0.5%0D%0ADein+Arduino+%28Mega+oder+Due%29%3A+Mega+2560%0D%0ADeine+PCB+Bauteilbest%C3%BCckung+%28Standard+oder+abweichend+und+wie%29%3A+Standard%0D%0AOdometrie+sensor+%28ja%2Fnein%29%3F+ja%0D%0AArdumower+Chassis+%28ja%2Fnein%29%3F+ja%0D%0AGenaue+Fehlerbeschreibung%3A+...%0D%0A  'this link'] und erzeuge ein neues Thema - bitte teile uns folgendes mit:&lt;br /&gt;
&lt;br /&gt;
    Deine Plattform (Arduino Mega 2560, Arduino Due)&lt;br /&gt;
    Deine Arduino IDE-Version (der letzte Programmcode erfordert 1.6.3)&lt;br /&gt;
    Dein genaues Betriebssystem (Windows 8, Linux usw.)&lt;br /&gt;
    Deine Ardumower-Programmversion  (eine Liste der Veröffentlichungen siehst du hier https://github.com/Ardumower/ardumower/releases)&lt;br /&gt;
    Jede andere Info, die brauchbar sein kann...&lt;br /&gt;
&lt;br /&gt;
=Weitere Links=&lt;br /&gt;
#[[Ardumower LP|Diagnostic]]&lt;/div&gt;</summary>
		<author><name>Deejay</name></author>	</entry>

	<entry>
		<id>https://wiki.ardumower.de/index.php?title=Ardumower_LP&amp;diff=2770</id>
		<title>Ardumower LP</title>
		<link rel="alternate" type="text/html" href="https://wiki.ardumower.de/index.php?title=Ardumower_LP&amp;diff=2770"/>
				<updated>2015-09-16T16:28:53Z</updated>
		
		<summary type="html">&lt;p&gt;Deejay: /* I2C Bus / Fehlertöne */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Zusammenfassung=&lt;br /&gt;
Diese Seite beschreibt,wie die Ardumower Hauptleiterplatte aufgebaut wird, wie das Programm auf den Arduino aufgespielt wird, und wie man den Mähroboter konfiguriert.&lt;br /&gt;
&lt;br /&gt;
Kernstück der Steuerung ist ein fertiges Microcontroller-Modul (Arduino Mega 2560 verwendet 54 I/O pins). &lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Ardumower_overview.png | Komponenten Überblick&lt;br /&gt;
File: Ardumower_chassis_components.png | Chassis Komponenten&lt;br /&gt;
File: Arduinomega.jpg | Das Hirn des Ardumowers : Der Arduino Mega 2560 Mikrocontroller&lt;br /&gt;
File: Ardumower_parts.jpg| Im Shop verfügbare Module&lt;br /&gt;
File: Ardumower_pcb_photo.jpg | Die Ardumower LP verbindet alle Module (verfügbar im Shop)&lt;br /&gt;
File: Ardumower_chassis_pcb1.jpg | Chassis und LP im Innern&lt;br /&gt;
File: Ardumower_chassis_pcb2.jpg | Leiterplatte montiert&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Benötigte Module=&lt;br /&gt;
&lt;br /&gt;
Alle Module und Teile können über den [https://www.marotronics.de/ shop] bezogen werden .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Was wird für den Aufbau eines Ardumowers alles benötigt.&lt;br /&gt;
&lt;br /&gt;
*[https://www.marotronics.de/Ardumower-Board-12-Prototyp-mit-Chassis-und-Motoren Das Ardumower Chassis inklusive Motoren und Hauptplatine]&lt;br /&gt;
&lt;br /&gt;
*Wichtige Module dazu wählen:&lt;br /&gt;
**Zubehör Set (Widerstände, Stiftleisten etc.)&lt;br /&gt;
**2 x Protector Board &lt;br /&gt;
**1 x Mega Board 2560 R3&lt;br /&gt;
**1 x INA169 Strom Sensor Board&lt;br /&gt;
**2 x Dual Treiber MC33926&lt;br /&gt;
**3 x DC-DC LM2596 Step-Down Regler&lt;br /&gt;
**1 x Wireless Bluetooth Modul HC-05&lt;br /&gt;
**1 x Real Time Clock I2C DS1307&lt;br /&gt;
**1 x 24 VoltLadegerät für den Ardumower Akku&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*Optionale Module:&lt;br /&gt;
**Zubehör Set Ladeschaltung (Blei Akkus) &lt;br /&gt;
**WIFI Wlan Modul ESP8266 ESP01 &lt;br /&gt;
**Ultraschallsensoren HC-SR04 (bis zu 3 Stück werden unterstützt)&lt;br /&gt;
**Regensensor &lt;br /&gt;
**GPS Modul GY-GPS6MV2 &lt;br /&gt;
**GYRO-80&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*1 x [http://www.asn-shop.de/Ardumower-Power-Pack-259V-45Ah Ardumower Power Pack]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*1 x [https://www.marotronics.de/3-Messer-3-Schrauben-passend-zB-fuer-AutomowerZ-von-HusqvarnaZ 3 Messer + 3 Schrauben passend z.B. für Automower® von Husqvarna®]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*1 x [https://www.marotronics.de/Perimeter-Sender-Board-Prototyp-mit-Platinen-Zubehoer Perimeter Sender Board (Prototyp) mit Platinen Zubehör]&lt;br /&gt;
*Wichtige Module dazu wählen:&lt;br /&gt;
**1x Dual MC33926 Motor Driver Carrier &lt;br /&gt;
**1x INA169 Analog DC Current Sensor Breakout - 60V 2,5A / 5A Marotronics &lt;br /&gt;
**1 x DC-DC Spannungsregler LM2596 Step-Down Regler einstellbar&lt;br /&gt;
**1 x Nano V3.0 ATmega328-AU Arduino kompatibel Mikrocontroller Board &lt;br /&gt;
&lt;br /&gt;
*Optionale Module:&lt;br /&gt;
**Gehäuse inklusive 5 passender Schrauben für das PCB &lt;br /&gt;
**Anschlussklemmen max.3 (2xSchleife, 1xLadeanschluss) &lt;br /&gt;
**Einbaubuchse für Gehäuse 2,5 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*Weiteres Zubehör je nach Bedarf:&lt;br /&gt;
&lt;br /&gt;
**[https://www.marotronics.de/25-Rasennaegel-Heringe-fuer-Rasenroboter-zB-Robomow-STAFFELPREISE Rasennägel/Heringe]&lt;br /&gt;
**[https://www.marotronics.de/100-m-Kabel-Einzelader-1-x1-mm-H05V-K-schwarz Kabel für die Schleife]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*Eine Ladestation ist in der Entwicklung und folgt demnächst.&lt;br /&gt;
&lt;br /&gt;
=Hauptleiterplatte=&lt;br /&gt;
Die Leiterplatte wurde mit folgenden Parametern entwickelt:&lt;br /&gt;
&lt;br /&gt;
* LP Abmessungen 241x114mm &lt;br /&gt;
* Alle Module (Motortreiber, Bluetooth, usw.) können auf die Leiterplatte gelötet (oder gesteckt) werden (Modules sind im Ardumower-Shop verfügbar)&lt;br /&gt;
* Verwendet den Arduino Mega 2560&lt;br /&gt;
* Optional: kann der Arduino Due mittels zusätzlicher LP-Adapter verwendet werden&lt;br /&gt;
* Optional: integrierter Ladestromkreis (Strombegrenzung)&lt;br /&gt;
* alle Verbindungen, einschliesslich +5V und GND, sind über Steckverbinder realisiert&lt;br /&gt;
* Max. Strombelastung der Leiterbahnen (für Motoren): 8A&lt;br /&gt;
&lt;br /&gt;
=Leiterplattenversionen=&lt;br /&gt;
Roboterplatine v0.5 (1. Prototyp)&lt;br /&gt;
* [https://github.com/Ardumower/ardumower/tree/master/pcb/megashield_svn_0.5/Platinenbilder Fotos]&lt;br /&gt;
* [https://github.com/Ardumower/ardumower/raw/master/pcb/megashield_svn_0.5/ardumower%20mega%20shield%20svn.pdf Schaltbilder]&lt;br /&gt;
&lt;br /&gt;
Roboterplatine v1.2  (geringe Layoutänderungen)&lt;br /&gt;
* [https://github.com/Ardumower/ardumower/raw/master/pcb/megashield_svn_1.2_geschlossen/ardumower%20mega%20shield%20svn.pdf Schaltpläne]&lt;br /&gt;
* [https://github.com/Ardumower/ardumower/tree/master/pcb/megashield_svn_1.2_geschlossen/Platinenbilder Photos]&lt;br /&gt;
* [https://github.com/Ardumower/ardumower/raw/master/pcb/megashield_svn_1.2_geschlossen/Dokumentation/WorkaRound20150527.pdf WorkaRound20150527]&lt;br /&gt;
* [https://github.com/Ardumower/ardumower/raw/master/pcb/megashield_svn_1.2_geschlossen/Dokumentation/WorkaRound20150530.pdf WorkaRound20150530]&lt;br /&gt;
* [https://github.com/Ardumower/ardumower/raw/master/pcb/megashield_svn_1.2_geschlossen/Dokumentation/Motor-EntstoerungREV20150531.pdf Motor-decrease noise REV20150531],  [http://www.ardumower.de/media/kunena/attachments/1725/Motor-EntstoerungREV20150531.pdf (englische Kommentare)]&lt;br /&gt;
&lt;br /&gt;
Roboterplatine PCB v1.3 (in Entwicklung)&lt;br /&gt;
* vereinfachtes Design (Due Adapter werden extern sein)&lt;br /&gt;
* Motorschutzschaltung&lt;br /&gt;
* Batterie-Abschaltung, Sicherheitsschalter&lt;br /&gt;
* setzt 'Referenzdesign' und erfordert die Module: 3x DC/DC, RTC, IMU&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Bemerkung:''' Das Schaltbild und die Platinen-Zeichnungen wurden mit KiCad entwickelt. Sie können hier heruntergeladen  [https://github.com/Ardumower/ardumower/archive/master.zip github] und damit bearbeitet werden [http://kicad.nosoftware.cz/windows/KiCad_testing-2014.10.19-BZR5203_Win_full_version.exe KiCAD software].&lt;br /&gt;
&lt;br /&gt;
=Leiterplatten Jumper=&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Feature used&lt;br /&gt;
! YES&lt;br /&gt;
! NO&lt;br /&gt;
! Comment&lt;br /&gt;
|-&lt;br /&gt;
| integrierter Laderegler mit einstellbarem &lt;br /&gt;
&lt;br /&gt;
Spannungsregler (LM350T) mit Potentiometer&lt;br /&gt;
&lt;br /&gt;
für einstellbare Ladespannung &lt;br /&gt;
(empfohlen: Nein) &lt;br /&gt;
| D7: DIODE&lt;br /&gt;
&lt;br /&gt;
D3: DIODE&lt;br /&gt;
&lt;br /&gt;
C1, C4, U4, RV1: verwendet&lt;br /&gt;
|D7: brücken&lt;br /&gt;
&lt;br /&gt;
D3: brücken&lt;br /&gt;
&lt;br /&gt;
C1, C4, U4, RV1: nicht verwendet&lt;br /&gt;
| Bei externem Ladegerät nicht verwenden&lt;br /&gt;
|-&lt;br /&gt;
| externe Stromversorgung währen des Ladens (empfohlen: Nein)&lt;br /&gt;
| JP6: geschlossen&lt;br /&gt;
&lt;br /&gt;
JP7: offen&lt;br /&gt;
&lt;br /&gt;
D4: DIODE&lt;br /&gt;
&lt;br /&gt;
C5: nicht verwendet&lt;br /&gt;
| JP6: offen&lt;br /&gt;
&lt;br /&gt;
JP7: geschlossen&lt;br /&gt;
&lt;br /&gt;
D4: brücken&lt;br /&gt;
&lt;br /&gt;
C5: verwendet&lt;br /&gt;
| um Platine von aussen mit Strom zu versorgen (trennt Akku von Platine) während des Ladens&lt;br /&gt;
|-&lt;br /&gt;
| von Arduino gesteuertes Laderelais (empfohlen: ja)&lt;br /&gt;
| JP4: geschlossen&lt;br /&gt;
&lt;br /&gt;
JP5: offen&lt;br /&gt;
| JP4: offen&lt;br /&gt;
&lt;br /&gt;
JP5: geschlossen&lt;br /&gt;
| verwendet für vom Arduino gesteuertem Laderelais (keine automatische Ladung)&lt;br /&gt;
|-&lt;br /&gt;
| Arduino Due (3.3V I/O)&lt;br /&gt;
| LP0, ..., LP15: offen&lt;br /&gt;
| LP0, ..., LP15: geschlossen&lt;br /&gt;
| Nicht verwenden  bei Arduino Mega&lt;br /&gt;
|-&lt;br /&gt;
| Bluetooth VCC=3.3V&lt;br /&gt;
| JP8: offen&lt;br /&gt;
&lt;br /&gt;
JP9: geschlossen&lt;br /&gt;
| JP8: geschlossen&lt;br /&gt;
&lt;br /&gt;
JP9: offen&lt;br /&gt;
| viele neuere Module laufen mit 3.3V&lt;br /&gt;
|-&lt;br /&gt;
| Bluetooth Programmier-Modus&lt;br /&gt;
| JP2: geschlossen &lt;br /&gt;
| JP2: offen&lt;br /&gt;
| verwendet für Programmierung der BAUD-Rate usw.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Leiterplatten-Module=&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Module&lt;br /&gt;
! Feature&lt;br /&gt;
! Pinout&lt;br /&gt;
! Optional&lt;br /&gt;
! Comment&lt;br /&gt;
|-&lt;br /&gt;
| U1&lt;br /&gt;
| DC/DC Wandler (10V)&lt;br /&gt;
| GND, Vout, Vin, GND&lt;br /&gt;
| Nein&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| U2&lt;br /&gt;
| Bluetooth (HC-05)&lt;br /&gt;
| VCC, GND, TXD, RXD, Key, LED&lt;br /&gt;
| Ja&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| U3&lt;br /&gt;
| Stromsensor (Ladestrom)&lt;br /&gt;
| VCC, GND, OUT, IP+, IP-5&lt;br /&gt;
| Ja&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| U4&lt;br /&gt;
| Laderegler (LM350T)&lt;br /&gt;
| AJD, OUT, IN&lt;br /&gt;
| Ja&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| U5&lt;br /&gt;
| Stromsensor (währen des Ladens)&lt;br /&gt;
| VCC, GND, OUT, IP+, IP-5&lt;br /&gt;
| Ja&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| U6&lt;br /&gt;
| DC/DC Wandler (3.3V)&lt;br /&gt;
| GND, Vout, Vin, GND&lt;br /&gt;
| Nein&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| U7&lt;br /&gt;
| DC/DC Wandler (5V)&lt;br /&gt;
| GND, Vout, Vin, GND&lt;br /&gt;
| Nein&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| U8&lt;br /&gt;
| Echtzeituhr (DS1307)&lt;br /&gt;
| Batt, GND, VCC, SDA, SCL, DS, SQ&lt;br /&gt;
| Ja&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| U9&lt;br /&gt;
| WLAN (ESP8266)&lt;br /&gt;
| TX, CH_PD, Reset, VCC, GND, GP_IO2, GP_IO0, RX&lt;br /&gt;
| Ja&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| U10&lt;br /&gt;
| Pegelwandler 5V-&amp;gt;3V (Arduino Due)&lt;br /&gt;
| &lt;br /&gt;
| Ja&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| U11&lt;br /&gt;
| WLAN(ESP8266)&lt;br /&gt;
| TX, CH_PD, Reset, VCC, GND, GP_IO2, GP_IO0, RX&lt;br /&gt;
| Ja&lt;br /&gt;
| alternative Montageposition&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Leiterplatten Steckverbinder=&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Connector&lt;br /&gt;
! Feature&lt;br /&gt;
! Pinout&lt;br /&gt;
! Optional&lt;br /&gt;
! Comment&lt;br /&gt;
|-&lt;br /&gt;
| P1&lt;br /&gt;
| Sonar mitte (HC SR-04)&lt;br /&gt;
| 5V, GND, Trigger, Echo&lt;br /&gt;
| ja&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| P2&lt;br /&gt;
| Sonar rechts (HC SR-04)&lt;br /&gt;
| 5V, GND, Trigger, Echo&lt;br /&gt;
| ja&lt;br /&gt;
|-&lt;br /&gt;
| P3&lt;br /&gt;
| Sonar links (HC SR-04)&lt;br /&gt;
| 5V, GND, Trigger, Echo&lt;br /&gt;
| ja&lt;br /&gt;
|-&lt;br /&gt;
| P4&lt;br /&gt;
| reserviert&lt;br /&gt;
| &lt;br /&gt;
| ja&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| P5&lt;br /&gt;
| IMU (gyro,acceleration,compass) (GY-80)&lt;br /&gt;
| &lt;br /&gt;
| ja&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| P6&lt;br /&gt;
| Rasensensor&lt;br /&gt;
| &lt;br /&gt;
| ja&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| P7&lt;br /&gt;
| Status LEDs&lt;br /&gt;
| &lt;br /&gt;
| ja&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| P8&lt;br /&gt;
| Odometrie rechts&lt;br /&gt;
| &lt;br /&gt;
| ja&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| P9&lt;br /&gt;
| Odometrie links&lt;br /&gt;
| &lt;br /&gt;
| ja&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| P10&lt;br /&gt;
| GPS (GY-NEO6MV2)&lt;br /&gt;
| &lt;br /&gt;
| ja&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| P11&lt;br /&gt;
| Bumper&lt;br /&gt;
| GND, GND, rechts, links&lt;br /&gt;
| ja&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| P12&lt;br /&gt;
| Perimeter-Empfänger (mitte oder links)&lt;br /&gt;
| 5V, GND, perimeter&lt;br /&gt;
| ja&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| P13&lt;br /&gt;
| R/C Fernsteuerung&lt;br /&gt;
| 5V, GND, mow, steer, speed, switch&lt;br /&gt;
| ja&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| P14&lt;br /&gt;
| Messpunkte&lt;br /&gt;
| 5V, GND, (abhängig von JP15: 3.3V, 5V or Arduino 3.3V)&lt;br /&gt;
| ja&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| P15&lt;br /&gt;
| Antriebsmotor links&lt;br /&gt;
| M1OUT1, M1OUT2&lt;br /&gt;
| Nein&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| P16&lt;br /&gt;
| Optionaler Motortreiber-Eingang&lt;br /&gt;
|&lt;br /&gt;
| ja&lt;br /&gt;
| nicht verbinden&lt;br /&gt;
|-&lt;br /&gt;
| P17&lt;br /&gt;
| Optionaler Motortreiber-Eingang&lt;br /&gt;
|&lt;br /&gt;
| ja&lt;br /&gt;
| nicht verbinden&lt;br /&gt;
|-&lt;br /&gt;
| P18&lt;br /&gt;
| Antriebsmotor rechts&lt;br /&gt;
| M2OUT1, M2OUT2&lt;br /&gt;
| Nein&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| P19&lt;br /&gt;
| Neigungssensor&lt;br /&gt;
| 5V, GND, tilt&lt;br /&gt;
| ja&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| P20&lt;br /&gt;
| Taster (Start/Stop)&lt;br /&gt;
| &lt;br /&gt;
| Nein&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| P21&lt;br /&gt;
| Absturzsensor rechts&lt;br /&gt;
| &lt;br /&gt;
| ja&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| P22&lt;br /&gt;
| reserviert&lt;br /&gt;
| &lt;br /&gt;
| ja&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| P23&lt;br /&gt;
| reserviert&lt;br /&gt;
| &lt;br /&gt;
| ja&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| P24&lt;br /&gt;
| reserviert&lt;br /&gt;
| &lt;br /&gt;
| ja&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| P25&lt;br /&gt;
| reserviert&lt;br /&gt;
| &lt;br /&gt;
| ja&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| P26&lt;br /&gt;
| reserviert&lt;br /&gt;
| &lt;br /&gt;
| ja&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| P27&lt;br /&gt;
| reserviert&lt;br /&gt;
| &lt;br /&gt;
| ja&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| P28&lt;br /&gt;
| reserviert&lt;br /&gt;
| &lt;br /&gt;
| ja&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| P29&lt;br /&gt;
| reserviert&lt;br /&gt;
| &lt;br /&gt;
| ja&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| P30&lt;br /&gt;
| Perimeter-Empfänger rechts&lt;br /&gt;
| &lt;br /&gt;
| ja&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| P31&lt;br /&gt;
| Absturzsensor links&lt;br /&gt;
| &lt;br /&gt;
| ja&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| P32&lt;br /&gt;
| GND&lt;br /&gt;
| &lt;br /&gt;
| ja&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| P33&lt;br /&gt;
| 5V&lt;br /&gt;
| &lt;br /&gt;
| ja&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| P34&lt;br /&gt;
| 3.3V&lt;br /&gt;
| &lt;br /&gt;
| ja&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| P35&lt;br /&gt;
| Mähmotor Drehzahl&lt;br /&gt;
| &lt;br /&gt;
| ja&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| P36&lt;br /&gt;
| reserviert&lt;br /&gt;
| &lt;br /&gt;
| ja&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| P37&lt;br /&gt;
| Mähmotor&lt;br /&gt;
| &lt;br /&gt;
| Nein&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| P38&lt;br /&gt;
| reserviert&lt;br /&gt;
| &lt;br /&gt;
| ja&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| P39&lt;br /&gt;
| reserviert&lt;br /&gt;
| &lt;br /&gt;
| ja&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| P40&lt;br /&gt;
| User switches&lt;br /&gt;
| &lt;br /&gt;
| ja&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| P41&lt;br /&gt;
| Regensensor&lt;br /&gt;
| &lt;br /&gt;
| ja&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| P42&lt;br /&gt;
| Ladeanschluss&lt;br /&gt;
| &lt;br /&gt;
| ja&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| P43&lt;br /&gt;
| Akku (24V)&lt;br /&gt;
| &lt;br /&gt;
| Nein&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| P44&lt;br /&gt;
| WLAN Modul (ESP8266)&lt;br /&gt;
| &lt;br /&gt;
| ja&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| P45&lt;br /&gt;
| reserviert&lt;br /&gt;
| &lt;br /&gt;
| ja&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| P46&lt;br /&gt;
| reserviert&lt;br /&gt;
| &lt;br /&gt;
| ja&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Stromversorgung=&lt;br /&gt;
Bitte lies auch den Abschnitt 'Spannungen' unter [[Motor driver]] für mehr Informationen über die Motorspannung&lt;br /&gt;
&lt;br /&gt;
Empfehlenswert ist die Verwendung von Step down Spannungswandlern  (d.h. Module verwenden LM2596) um die 5V Spannung für den Arduino und alle zusätzlichen Module zu erzeugen. vor der Verbindung mit der Schaltung (Jumper), stelle den Wandler auf 5V ein, dann erst den Jumper schliessen. &lt;br /&gt;
&lt;br /&gt;
[[File:warning.png]]Warnung : niemals mehr als 5V an die Arduino 5V pins anlegen, das würde den Arduino zerstören. Deshalb, immer die 5V messen bevor die Verbindung zum 5V Pin des Arduino erfolgt!&lt;br /&gt;
Alle Komponenten zusammen (wie im Schaltbild gezeigt) benötigen ca. 5W Leistung.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Dcdc_noise.jpg | NOTE: Perimeterspule/Verstärker von DC/DC-Wandlern fernhalten (Störstrahlung)!&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Programm downloaden und Arduino programmieren=&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;NOTE&amp;lt;/b&amp;gt;: Wenn du noch nie mit Arduino gearbeitet hast, lies unser &amp;lt;b&amp;gt;[http://wiki.ardumower.de/index.php?title=Arduino_first_steps 'Arduino first steps' introduction]&amp;lt;/b&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Du hast zwei Möglichkeiten: &lt;br /&gt;
* Download [https://github.com/Ardumower/ardumower/releases github code (empfohlen)]  oder&lt;br /&gt;
* Download [http://www.ardumower.de/index.php/de/downloads v0.9.3 code (alt, nicht empfohlen)]&lt;br /&gt;
&lt;br /&gt;
Zuletzt, downloade und starte [http://arduino.cc/en/Main/Software Arduino IDE] um das Programm auf dem Arduino zu speichern.&lt;br /&gt;
&lt;br /&gt;
'''Arduino Version''': Es ist wichtig, dass du die Version 1.6.3  oder höher der Arduino-Entwicklungssoftware benutzt und dass du das richtige Board auswählst (Mega 2560 or Due).&lt;br /&gt;
&lt;br /&gt;
[[File:warning.png]] Bemerkung: Vergewissere dich, dass die Pin-Belegung im Arduino-Code (config.h/mower.cpp) mit deinem aktuellen Schaltplan übereinstimmt.&lt;br /&gt;
&lt;br /&gt;
=Kalibrierung bei der ersten Inbetriebnahme=&lt;br /&gt;
==Antriebsmotoren==&lt;br /&gt;
[[File:warning.png]]Sicherheitshinweis: Aus Sicherheitsgründen sind die Mähmesser bei den ersten Tests [[nicht]] zu montieren!&lt;br /&gt;
&lt;br /&gt;
Zu Beginn solltest du überprüfen ob die Antriebsmotoren richtig gesteuert werden und sich in die richtige Richtung drehen.Die Software bietet einen Diagnose-Modus. Öffne die serielle Konsole in der Arduino IDE (Strg+Shift+M) und setze die BAUD-Rate auf 19200. Die Motor- und Sensorwerte sollten daraufhin ständig angezeigt werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;background-color: lightgrey; border: solid thin grey;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    20 OFF  spd    0    0    0 sen    0    0    0 bum    0    0 son...&lt;br /&gt;
    21 OFF  spd    0    0    0 sen    0    0    0 bum    0    0 son...&lt;br /&gt;
    22 OFF  spd    0    0    0 sen    0    0    0 bum    0    0 son...&lt;br /&gt;
    23 OFF  spd    0    0    0 sen    0    0    0 bum    0    0 son...&lt;br /&gt;
    24 OFF  spd    0    0    0 sen    0    0    0 bum    0    0 son...&lt;br /&gt;
    ...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Drücke nun die Taste 't' auf der Tastatur und bestätige mit 'Enter'. Es erscheint der Diagnose-Modus in dem du die Motoren testen kannst.&lt;br /&gt;
&lt;br /&gt;
==ADC Kalibrierung==&lt;br /&gt;
Starte die ADC-Kalibrierung einmal (entweder über die serielle Konsole oder über &amp;quot;pfodApp-&amp;gt;ADC Calibration&amp;quot;), damit das Empfangssignal symmetrisch zum Nullpunkt ist.&lt;br /&gt;
&lt;br /&gt;
=Diagnose/Fehlerbehebung=&lt;br /&gt;
Jedesmal, wenn ein Sensor anspricht, zählt ein korrespondierender Sensorzähler um 1 hoch. Die Zählerstände der Sensorzähler sowie die aktuellen Sensorwerte kann man in der seriellen Konsole ansehen. Die folgenden Werte werden in der seriellen Konsole angezeigt:&lt;br /&gt;
&lt;br /&gt;
# Zeit des state machine's Status (ms)&lt;br /&gt;
# Schleifendurchläufe pro sec&lt;br /&gt;
# gewählter Anzeige-Modus (0=Zählerstände/1=aktuelle Werte/2=aktuelle Werte)&lt;br /&gt;
# aktueller state machine Status (FORW, REV, ROLL usw.)&lt;br /&gt;
# Fährt in Ladestation? (1/0)&lt;br /&gt;
# &amp;quot;spd&amp;quot; - Ansteuerung/Drehzahl der Motoren: links (PWM), rechts (PWM), Mähmotor (RPM)&lt;br /&gt;
# &amp;quot;sen&amp;quot; - Überstromzähler der Motoren: links, rechts, Mähmotor &lt;br /&gt;
# &amp;quot;bum&amp;quot; - Bumper Zähler: links, rechts&lt;br /&gt;
# &amp;quot;son&amp;quot; - Ultraschall Abstandsschwelle unterschritten (Zähler) &lt;br /&gt;
# &amp;quot;pit/roll&amp;quot; - Neigung (berechnet von Beschleunigungssensor)&lt;br /&gt;
# &amp;quot;com&amp;quot; - Kompass Kurs&lt;br /&gt;
# &amp;quot;per&amp;quot; - Perimeterschleife erkannt: Zähler&lt;br /&gt;
# &amp;quot;bat&amp;quot; - Akku Spannung&lt;br /&gt;
# &amp;quot;chg&amp;quot; - Ladestrom&lt;br /&gt;
&lt;br /&gt;
Mittels der Taste 'v' kann zwischen Sensor-Zählerständen und den aktuellen Sensorwerten umgeschaltet werden.&lt;br /&gt;
&lt;br /&gt;
[[File:warning.png]] Zusätzlich kannst du mit Hilfe der Android-App  'pfodApp' die Sensorenausgaben über die Zeit grafisch darstellen (Zählerstände und aktuelle Werte). Das ermöglicht die drahtlose Überwachung deines Mähroboters zur Fehlersuche. Es ist sehr zu empfehlen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File:Ardumower_sensor_counter_plotting.jpg |Sensor-Zählerstände&lt;br /&gt;
File:Ardumower_plot_sensors.jpg |gemessene Sensorwerte&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Starten des Mähroboters=&lt;br /&gt;
&lt;br /&gt;
Um den Mähroboter zu starten wird ein Taster und ein Piezo-Summer benötigt:&lt;br /&gt;
&lt;br /&gt;
 pinButton —o Taster o— GND (button for ON/OFF)&lt;br /&gt;
&lt;br /&gt;
 pinBuzzer —o Buzzer o— GND (Piezo buzzer)&lt;br /&gt;
&lt;br /&gt;
Drücke nun den Taster, bis Du die Anzahl Pieptöne hörst, die dem Modus entspricht, den Du einstellen möchtest:&lt;br /&gt;
&lt;br /&gt;
Modus (Drücke Taster bis du x Töne hörst):&lt;br /&gt;
 1 Piep  : Normales mähen (verwendet, wenn verfügbar, Messermodulation)&lt;br /&gt;
 2 Pieps : Normales mähen (ohne Messermodulation)&lt;br /&gt;
 3 Pieps : Fahren mit Fernsteuerung (RC)&lt;br /&gt;
 4 Pieps : Fahren ohne mähen&lt;br /&gt;
 5 Pieps : Finde Perimeterschleife und folge ihr&lt;br /&gt;
&lt;br /&gt;
=Fehlerzähler / Fehlertöne=&lt;br /&gt;
Gibt es ein Kommunikationsproblem oder ein anderes ernstes Problem, zählt der entsprechende Fehlerzähler hoch. der Fehlerzähler kann über die  pfodApp eingesehen. Zusätzlich Piept der Roboter beim starten.&lt;br /&gt;
&lt;br /&gt;
Siehe Abschnitt [[Troubleshooting]] für Details zu allen Fehlern.&lt;br /&gt;
&lt;br /&gt;
==I2C Bus / Fehlertöne==&lt;br /&gt;
Verschiedene Komponenten (Arduino Nano, RTC, IMU, usw.) kommunizieren über den I2C Bus (SDA/SCL Leitung). diese Leitungen sollten sehr kurz sein (evt. verdrillt) und sie sollten weit weg von DC/DC Wandlern und Motortreibern sein. Wenn es ein Kommunikationsproblem gibt, wird der Fehlerzähler erhöht und der Roboter piepst beim Starten. Der Fehlerzähler kann über die pfodApp eingesehen werden.&lt;br /&gt;
&lt;br /&gt;
=Einstellungen=&lt;br /&gt;
Der Roboter verwendet Einstellungen die du für deinen Roboter und deine Umgebung anpassen kannst (über pfodApp oder direkt in der Software). Die Grundeinstellungen (factory settings) werden in der Konfigurationsdatei 'mower.cpp' gespeichert.&lt;br /&gt;
&lt;br /&gt;
Die Einstellungen können über ein Android-Handy verändert werden([http://wiki.ardumower.de/index.php?title=Bluetooth pfodApp]). &lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
  File:Cheat_sheet.png | Grundeinstellungen &lt;br /&gt;
  File:Speedcontrol.png | Motor-Einstellungen&lt;br /&gt;
  File:Ardumower_config_files.png | Konfigurationdatei Idee &lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wichtig: Wenn du eine neue Softwareversion auf deinen Arduino lädst, setze alle Einstellungen über die pfodApp auf die Grundeinstellungen zurück (Settings-&amp;gt;Factory reset). Das löscht alle vorhandenen Einstellungen. alte Einstellungen können zu Fehlfunktionen führen, wenn sich das interne Einstellungsformat geändert hat.&lt;br /&gt;
&lt;br /&gt;
=Weitere Links=&lt;/div&gt;</summary>
		<author><name>Deejay</name></author>	</entry>

	<entry>
		<id>https://wiki.ardumower.de/index.php?title=Ardumower_LP&amp;diff=2769</id>
		<title>Ardumower LP</title>
		<link rel="alternate" type="text/html" href="https://wiki.ardumower.de/index.php?title=Ardumower_LP&amp;diff=2769"/>
				<updated>2015-09-16T16:13:31Z</updated>
		
		<summary type="html">&lt;p&gt;Deejay: /* Diagnose/Fehlerbehebung */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Zusammenfassung=&lt;br /&gt;
Diese Seite beschreibt,wie die Ardumower Hauptleiterplatte aufgebaut wird, wie das Programm auf den Arduino aufgespielt wird, und wie man den Mähroboter konfiguriert.&lt;br /&gt;
&lt;br /&gt;
Kernstück der Steuerung ist ein fertiges Microcontroller-Modul (Arduino Mega 2560 verwendet 54 I/O pins). &lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Ardumower_overview.png | Komponenten Überblick&lt;br /&gt;
File: Ardumower_chassis_components.png | Chassis Komponenten&lt;br /&gt;
File: Arduinomega.jpg | Das Hirn des Ardumowers : Der Arduino Mega 2560 Mikrocontroller&lt;br /&gt;
File: Ardumower_parts.jpg| Im Shop verfügbare Module&lt;br /&gt;
File: Ardumower_pcb_photo.jpg | Die Ardumower LP verbindet alle Module (verfügbar im Shop)&lt;br /&gt;
File: Ardumower_chassis_pcb1.jpg | Chassis und LP im Innern&lt;br /&gt;
File: Ardumower_chassis_pcb2.jpg | Leiterplatte montiert&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Benötigte Module=&lt;br /&gt;
&lt;br /&gt;
Alle Module und Teile können über den [https://www.marotronics.de/ shop] bezogen werden .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Was wird für den Aufbau eines Ardumowers alles benötigt.&lt;br /&gt;
&lt;br /&gt;
*[https://www.marotronics.de/Ardumower-Board-12-Prototyp-mit-Chassis-und-Motoren Das Ardumower Chassis inklusive Motoren und Hauptplatine]&lt;br /&gt;
&lt;br /&gt;
*Wichtige Module dazu wählen:&lt;br /&gt;
**Zubehör Set (Widerstände, Stiftleisten etc.)&lt;br /&gt;
**2 x Protector Board &lt;br /&gt;
**1 x Mega Board 2560 R3&lt;br /&gt;
**1 x INA169 Strom Sensor Board&lt;br /&gt;
**2 x Dual Treiber MC33926&lt;br /&gt;
**3 x DC-DC LM2596 Step-Down Regler&lt;br /&gt;
**1 x Wireless Bluetooth Modul HC-05&lt;br /&gt;
**1 x Real Time Clock I2C DS1307&lt;br /&gt;
**1 x 24 VoltLadegerät für den Ardumower Akku&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*Optionale Module:&lt;br /&gt;
**Zubehör Set Ladeschaltung (Blei Akkus) &lt;br /&gt;
**WIFI Wlan Modul ESP8266 ESP01 &lt;br /&gt;
**Ultraschallsensoren HC-SR04 (bis zu 3 Stück werden unterstützt)&lt;br /&gt;
**Regensensor &lt;br /&gt;
**GPS Modul GY-GPS6MV2 &lt;br /&gt;
**GYRO-80&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*1 x [http://www.asn-shop.de/Ardumower-Power-Pack-259V-45Ah Ardumower Power Pack]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*1 x [https://www.marotronics.de/3-Messer-3-Schrauben-passend-zB-fuer-AutomowerZ-von-HusqvarnaZ 3 Messer + 3 Schrauben passend z.B. für Automower® von Husqvarna®]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*1 x [https://www.marotronics.de/Perimeter-Sender-Board-Prototyp-mit-Platinen-Zubehoer Perimeter Sender Board (Prototyp) mit Platinen Zubehör]&lt;br /&gt;
*Wichtige Module dazu wählen:&lt;br /&gt;
**1x Dual MC33926 Motor Driver Carrier &lt;br /&gt;
**1x INA169 Analog DC Current Sensor Breakout - 60V 2,5A / 5A Marotronics &lt;br /&gt;
**1 x DC-DC Spannungsregler LM2596 Step-Down Regler einstellbar&lt;br /&gt;
**1 x Nano V3.0 ATmega328-AU Arduino kompatibel Mikrocontroller Board &lt;br /&gt;
&lt;br /&gt;
*Optionale Module:&lt;br /&gt;
**Gehäuse inklusive 5 passender Schrauben für das PCB &lt;br /&gt;
**Anschlussklemmen max.3 (2xSchleife, 1xLadeanschluss) &lt;br /&gt;
**Einbaubuchse für Gehäuse 2,5 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*Weiteres Zubehör je nach Bedarf:&lt;br /&gt;
&lt;br /&gt;
**[https://www.marotronics.de/25-Rasennaegel-Heringe-fuer-Rasenroboter-zB-Robomow-STAFFELPREISE Rasennägel/Heringe]&lt;br /&gt;
**[https://www.marotronics.de/100-m-Kabel-Einzelader-1-x1-mm-H05V-K-schwarz Kabel für die Schleife]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*Eine Ladestation ist in der Entwicklung und folgt demnächst.&lt;br /&gt;
&lt;br /&gt;
=Hauptleiterplatte=&lt;br /&gt;
Die Leiterplatte wurde mit folgenden Parametern entwickelt:&lt;br /&gt;
&lt;br /&gt;
* LP Abmessungen 241x114mm &lt;br /&gt;
* Alle Module (Motortreiber, Bluetooth, usw.) können auf die Leiterplatte gelötet (oder gesteckt) werden (Modules sind im Ardumower-Shop verfügbar)&lt;br /&gt;
* Verwendet den Arduino Mega 2560&lt;br /&gt;
* Optional: kann der Arduino Due mittels zusätzlicher LP-Adapter verwendet werden&lt;br /&gt;
* Optional: integrierter Ladestromkreis (Strombegrenzung)&lt;br /&gt;
* alle Verbindungen, einschliesslich +5V und GND, sind über Steckverbinder realisiert&lt;br /&gt;
* Max. Strombelastung der Leiterbahnen (für Motoren): 8A&lt;br /&gt;
&lt;br /&gt;
=Leiterplattenversionen=&lt;br /&gt;
Roboterplatine v0.5 (1. Prototyp)&lt;br /&gt;
* [https://github.com/Ardumower/ardumower/tree/master/pcb/megashield_svn_0.5/Platinenbilder Fotos]&lt;br /&gt;
* [https://github.com/Ardumower/ardumower/raw/master/pcb/megashield_svn_0.5/ardumower%20mega%20shield%20svn.pdf Schaltbilder]&lt;br /&gt;
&lt;br /&gt;
Roboterplatine v1.2  (geringe Layoutänderungen)&lt;br /&gt;
* [https://github.com/Ardumower/ardumower/raw/master/pcb/megashield_svn_1.2_geschlossen/ardumower%20mega%20shield%20svn.pdf Schaltpläne]&lt;br /&gt;
* [https://github.com/Ardumower/ardumower/tree/master/pcb/megashield_svn_1.2_geschlossen/Platinenbilder Photos]&lt;br /&gt;
* [https://github.com/Ardumower/ardumower/raw/master/pcb/megashield_svn_1.2_geschlossen/Dokumentation/WorkaRound20150527.pdf WorkaRound20150527]&lt;br /&gt;
* [https://github.com/Ardumower/ardumower/raw/master/pcb/megashield_svn_1.2_geschlossen/Dokumentation/WorkaRound20150530.pdf WorkaRound20150530]&lt;br /&gt;
* [https://github.com/Ardumower/ardumower/raw/master/pcb/megashield_svn_1.2_geschlossen/Dokumentation/Motor-EntstoerungREV20150531.pdf Motor-decrease noise REV20150531],  [http://www.ardumower.de/media/kunena/attachments/1725/Motor-EntstoerungREV20150531.pdf (englische Kommentare)]&lt;br /&gt;
&lt;br /&gt;
Roboterplatine PCB v1.3 (in Entwicklung)&lt;br /&gt;
* vereinfachtes Design (Due Adapter werden extern sein)&lt;br /&gt;
* Motorschutzschaltung&lt;br /&gt;
* Batterie-Abschaltung, Sicherheitsschalter&lt;br /&gt;
* setzt 'Referenzdesign' und erfordert die Module: 3x DC/DC, RTC, IMU&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Bemerkung:''' Das Schaltbild und die Platinen-Zeichnungen wurden mit KiCad entwickelt. Sie können hier heruntergeladen  [https://github.com/Ardumower/ardumower/archive/master.zip github] und damit bearbeitet werden [http://kicad.nosoftware.cz/windows/KiCad_testing-2014.10.19-BZR5203_Win_full_version.exe KiCAD software].&lt;br /&gt;
&lt;br /&gt;
=Leiterplatten Jumper=&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Feature used&lt;br /&gt;
! YES&lt;br /&gt;
! NO&lt;br /&gt;
! Comment&lt;br /&gt;
|-&lt;br /&gt;
| integrierter Laderegler mit einstellbarem &lt;br /&gt;
&lt;br /&gt;
Spannungsregler (LM350T) mit Potentiometer&lt;br /&gt;
&lt;br /&gt;
für einstellbare Ladespannung &lt;br /&gt;
(empfohlen: Nein) &lt;br /&gt;
| D7: DIODE&lt;br /&gt;
&lt;br /&gt;
D3: DIODE&lt;br /&gt;
&lt;br /&gt;
C1, C4, U4, RV1: verwendet&lt;br /&gt;
|D7: brücken&lt;br /&gt;
&lt;br /&gt;
D3: brücken&lt;br /&gt;
&lt;br /&gt;
C1, C4, U4, RV1: nicht verwendet&lt;br /&gt;
| Bei externem Ladegerät nicht verwenden&lt;br /&gt;
|-&lt;br /&gt;
| externe Stromversorgung währen des Ladens (empfohlen: Nein)&lt;br /&gt;
| JP6: geschlossen&lt;br /&gt;
&lt;br /&gt;
JP7: offen&lt;br /&gt;
&lt;br /&gt;
D4: DIODE&lt;br /&gt;
&lt;br /&gt;
C5: nicht verwendet&lt;br /&gt;
| JP6: offen&lt;br /&gt;
&lt;br /&gt;
JP7: geschlossen&lt;br /&gt;
&lt;br /&gt;
D4: brücken&lt;br /&gt;
&lt;br /&gt;
C5: verwendet&lt;br /&gt;
| um Platine von aussen mit Strom zu versorgen (trennt Akku von Platine) während des Ladens&lt;br /&gt;
|-&lt;br /&gt;
| von Arduino gesteuertes Laderelais (empfohlen: ja)&lt;br /&gt;
| JP4: geschlossen&lt;br /&gt;
&lt;br /&gt;
JP5: offen&lt;br /&gt;
| JP4: offen&lt;br /&gt;
&lt;br /&gt;
JP5: geschlossen&lt;br /&gt;
| verwendet für vom Arduino gesteuertem Laderelais (keine automatische Ladung)&lt;br /&gt;
|-&lt;br /&gt;
| Arduino Due (3.3V I/O)&lt;br /&gt;
| LP0, ..., LP15: offen&lt;br /&gt;
| LP0, ..., LP15: geschlossen&lt;br /&gt;
| Nicht verwenden  bei Arduino Mega&lt;br /&gt;
|-&lt;br /&gt;
| Bluetooth VCC=3.3V&lt;br /&gt;
| JP8: offen&lt;br /&gt;
&lt;br /&gt;
JP9: geschlossen&lt;br /&gt;
| JP8: geschlossen&lt;br /&gt;
&lt;br /&gt;
JP9: offen&lt;br /&gt;
| viele neuere Module laufen mit 3.3V&lt;br /&gt;
|-&lt;br /&gt;
| Bluetooth Programmier-Modus&lt;br /&gt;
| JP2: geschlossen &lt;br /&gt;
| JP2: offen&lt;br /&gt;
| verwendet für Programmierung der BAUD-Rate usw.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Leiterplatten-Module=&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Module&lt;br /&gt;
! Feature&lt;br /&gt;
! Pinout&lt;br /&gt;
! Optional&lt;br /&gt;
! Comment&lt;br /&gt;
|-&lt;br /&gt;
| U1&lt;br /&gt;
| DC/DC Wandler (10V)&lt;br /&gt;
| GND, Vout, Vin, GND&lt;br /&gt;
| Nein&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| U2&lt;br /&gt;
| Bluetooth (HC-05)&lt;br /&gt;
| VCC, GND, TXD, RXD, Key, LED&lt;br /&gt;
| Ja&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| U3&lt;br /&gt;
| Stromsensor (Ladestrom)&lt;br /&gt;
| VCC, GND, OUT, IP+, IP-5&lt;br /&gt;
| Ja&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| U4&lt;br /&gt;
| Laderegler (LM350T)&lt;br /&gt;
| AJD, OUT, IN&lt;br /&gt;
| Ja&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| U5&lt;br /&gt;
| Stromsensor (währen des Ladens)&lt;br /&gt;
| VCC, GND, OUT, IP+, IP-5&lt;br /&gt;
| Ja&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| U6&lt;br /&gt;
| DC/DC Wandler (3.3V)&lt;br /&gt;
| GND, Vout, Vin, GND&lt;br /&gt;
| Nein&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| U7&lt;br /&gt;
| DC/DC Wandler (5V)&lt;br /&gt;
| GND, Vout, Vin, GND&lt;br /&gt;
| Nein&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| U8&lt;br /&gt;
| Echtzeituhr (DS1307)&lt;br /&gt;
| Batt, GND, VCC, SDA, SCL, DS, SQ&lt;br /&gt;
| Ja&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| U9&lt;br /&gt;
| WLAN (ESP8266)&lt;br /&gt;
| TX, CH_PD, Reset, VCC, GND, GP_IO2, GP_IO0, RX&lt;br /&gt;
| Ja&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| U10&lt;br /&gt;
| Pegelwandler 5V-&amp;gt;3V (Arduino Due)&lt;br /&gt;
| &lt;br /&gt;
| Ja&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| U11&lt;br /&gt;
| WLAN(ESP8266)&lt;br /&gt;
| TX, CH_PD, Reset, VCC, GND, GP_IO2, GP_IO0, RX&lt;br /&gt;
| Ja&lt;br /&gt;
| alternative Montageposition&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Leiterplatten Steckverbinder=&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Connector&lt;br /&gt;
! Feature&lt;br /&gt;
! Pinout&lt;br /&gt;
! Optional&lt;br /&gt;
! Comment&lt;br /&gt;
|-&lt;br /&gt;
| P1&lt;br /&gt;
| Sonar mitte (HC SR-04)&lt;br /&gt;
| 5V, GND, Trigger, Echo&lt;br /&gt;
| ja&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| P2&lt;br /&gt;
| Sonar rechts (HC SR-04)&lt;br /&gt;
| 5V, GND, Trigger, Echo&lt;br /&gt;
| ja&lt;br /&gt;
|-&lt;br /&gt;
| P3&lt;br /&gt;
| Sonar links (HC SR-04)&lt;br /&gt;
| 5V, GND, Trigger, Echo&lt;br /&gt;
| ja&lt;br /&gt;
|-&lt;br /&gt;
| P4&lt;br /&gt;
| reserviert&lt;br /&gt;
| &lt;br /&gt;
| ja&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| P5&lt;br /&gt;
| IMU (gyro,acceleration,compass) (GY-80)&lt;br /&gt;
| &lt;br /&gt;
| ja&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| P6&lt;br /&gt;
| Rasensensor&lt;br /&gt;
| &lt;br /&gt;
| ja&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| P7&lt;br /&gt;
| Status LEDs&lt;br /&gt;
| &lt;br /&gt;
| ja&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| P8&lt;br /&gt;
| Odometrie rechts&lt;br /&gt;
| &lt;br /&gt;
| ja&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| P9&lt;br /&gt;
| Odometrie links&lt;br /&gt;
| &lt;br /&gt;
| ja&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| P10&lt;br /&gt;
| GPS (GY-NEO6MV2)&lt;br /&gt;
| &lt;br /&gt;
| ja&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| P11&lt;br /&gt;
| Bumper&lt;br /&gt;
| GND, GND, rechts, links&lt;br /&gt;
| ja&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| P12&lt;br /&gt;
| Perimeter-Empfänger (mitte oder links)&lt;br /&gt;
| 5V, GND, perimeter&lt;br /&gt;
| ja&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| P13&lt;br /&gt;
| R/C Fernsteuerung&lt;br /&gt;
| 5V, GND, mow, steer, speed, switch&lt;br /&gt;
| ja&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| P14&lt;br /&gt;
| Messpunkte&lt;br /&gt;
| 5V, GND, (abhängig von JP15: 3.3V, 5V or Arduino 3.3V)&lt;br /&gt;
| ja&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| P15&lt;br /&gt;
| Antriebsmotor links&lt;br /&gt;
| M1OUT1, M1OUT2&lt;br /&gt;
| Nein&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| P16&lt;br /&gt;
| Optionaler Motortreiber-Eingang&lt;br /&gt;
|&lt;br /&gt;
| ja&lt;br /&gt;
| nicht verbinden&lt;br /&gt;
|-&lt;br /&gt;
| P17&lt;br /&gt;
| Optionaler Motortreiber-Eingang&lt;br /&gt;
|&lt;br /&gt;
| ja&lt;br /&gt;
| nicht verbinden&lt;br /&gt;
|-&lt;br /&gt;
| P18&lt;br /&gt;
| Antriebsmotor rechts&lt;br /&gt;
| M2OUT1, M2OUT2&lt;br /&gt;
| Nein&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| P19&lt;br /&gt;
| Neigungssensor&lt;br /&gt;
| 5V, GND, tilt&lt;br /&gt;
| ja&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| P20&lt;br /&gt;
| Taster (Start/Stop)&lt;br /&gt;
| &lt;br /&gt;
| Nein&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| P21&lt;br /&gt;
| Absturzsensor rechts&lt;br /&gt;
| &lt;br /&gt;
| ja&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| P22&lt;br /&gt;
| reserviert&lt;br /&gt;
| &lt;br /&gt;
| ja&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| P23&lt;br /&gt;
| reserviert&lt;br /&gt;
| &lt;br /&gt;
| ja&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| P24&lt;br /&gt;
| reserviert&lt;br /&gt;
| &lt;br /&gt;
| ja&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| P25&lt;br /&gt;
| reserviert&lt;br /&gt;
| &lt;br /&gt;
| ja&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| P26&lt;br /&gt;
| reserviert&lt;br /&gt;
| &lt;br /&gt;
| ja&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| P27&lt;br /&gt;
| reserviert&lt;br /&gt;
| &lt;br /&gt;
| ja&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| P28&lt;br /&gt;
| reserviert&lt;br /&gt;
| &lt;br /&gt;
| ja&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| P29&lt;br /&gt;
| reserviert&lt;br /&gt;
| &lt;br /&gt;
| ja&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| P30&lt;br /&gt;
| Perimeter-Empfänger rechts&lt;br /&gt;
| &lt;br /&gt;
| ja&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| P31&lt;br /&gt;
| Absturzsensor links&lt;br /&gt;
| &lt;br /&gt;
| ja&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| P32&lt;br /&gt;
| GND&lt;br /&gt;
| &lt;br /&gt;
| ja&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| P33&lt;br /&gt;
| 5V&lt;br /&gt;
| &lt;br /&gt;
| ja&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| P34&lt;br /&gt;
| 3.3V&lt;br /&gt;
| &lt;br /&gt;
| ja&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| P35&lt;br /&gt;
| Mähmotor Drehzahl&lt;br /&gt;
| &lt;br /&gt;
| ja&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| P36&lt;br /&gt;
| reserviert&lt;br /&gt;
| &lt;br /&gt;
| ja&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| P37&lt;br /&gt;
| Mähmotor&lt;br /&gt;
| &lt;br /&gt;
| Nein&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| P38&lt;br /&gt;
| reserviert&lt;br /&gt;
| &lt;br /&gt;
| ja&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| P39&lt;br /&gt;
| reserviert&lt;br /&gt;
| &lt;br /&gt;
| ja&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| P40&lt;br /&gt;
| User switches&lt;br /&gt;
| &lt;br /&gt;
| ja&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| P41&lt;br /&gt;
| Regensensor&lt;br /&gt;
| &lt;br /&gt;
| ja&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| P42&lt;br /&gt;
| Ladeanschluss&lt;br /&gt;
| &lt;br /&gt;
| ja&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| P43&lt;br /&gt;
| Akku (24V)&lt;br /&gt;
| &lt;br /&gt;
| Nein&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| P44&lt;br /&gt;
| WLAN Modul (ESP8266)&lt;br /&gt;
| &lt;br /&gt;
| ja&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| P45&lt;br /&gt;
| reserviert&lt;br /&gt;
| &lt;br /&gt;
| ja&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| P46&lt;br /&gt;
| reserviert&lt;br /&gt;
| &lt;br /&gt;
| ja&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Stromversorgung=&lt;br /&gt;
Bitte lies auch den Abschnitt 'Spannungen' unter [[Motor driver]] für mehr Informationen über die Motorspannung&lt;br /&gt;
&lt;br /&gt;
Empfehlenswert ist die Verwendung von Step down Spannungswandlern  (d.h. Module verwenden LM2596) um die 5V Spannung für den Arduino und alle zusätzlichen Module zu erzeugen. vor der Verbindung mit der Schaltung (Jumper), stelle den Wandler auf 5V ein, dann erst den Jumper schliessen. &lt;br /&gt;
&lt;br /&gt;
[[File:warning.png]]Warnung : niemals mehr als 5V an die Arduino 5V pins anlegen, das würde den Arduino zerstören. Deshalb, immer die 5V messen bevor die Verbindung zum 5V Pin des Arduino erfolgt!&lt;br /&gt;
Alle Komponenten zusammen (wie im Schaltbild gezeigt) benötigen ca. 5W Leistung.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Dcdc_noise.jpg | NOTE: Perimeterspule/Verstärker von DC/DC-Wandlern fernhalten (Störstrahlung)!&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Programm downloaden und Arduino programmieren=&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;NOTE&amp;lt;/b&amp;gt;: Wenn du noch nie mit Arduino gearbeitet hast, lies unser &amp;lt;b&amp;gt;[http://wiki.ardumower.de/index.php?title=Arduino_first_steps 'Arduino first steps' introduction]&amp;lt;/b&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Du hast zwei Möglichkeiten: &lt;br /&gt;
* Download [https://github.com/Ardumower/ardumower/releases github code (empfohlen)]  oder&lt;br /&gt;
* Download [http://www.ardumower.de/index.php/de/downloads v0.9.3 code (alt, nicht empfohlen)]&lt;br /&gt;
&lt;br /&gt;
Zuletzt, downloade und starte [http://arduino.cc/en/Main/Software Arduino IDE] um das Programm auf dem Arduino zu speichern.&lt;br /&gt;
&lt;br /&gt;
'''Arduino Version''': Es ist wichtig, dass du die Version 1.6.3  oder höher der Arduino-Entwicklungssoftware benutzt und dass du das richtige Board auswählst (Mega 2560 or Due).&lt;br /&gt;
&lt;br /&gt;
[[File:warning.png]] Bemerkung: Vergewissere dich, dass die Pin-Belegung im Arduino-Code (config.h/mower.cpp) mit deinem aktuellen Schaltplan übereinstimmt.&lt;br /&gt;
&lt;br /&gt;
=Kalibrierung bei der ersten Inbetriebnahme=&lt;br /&gt;
==Antriebsmotoren==&lt;br /&gt;
[[File:warning.png]]Sicherheitshinweis: Aus Sicherheitsgründen sind die Mähmesser bei den ersten Tests [[nicht]] zu montieren!&lt;br /&gt;
&lt;br /&gt;
Zu Beginn solltest du überprüfen ob die Antriebsmotoren richtig gesteuert werden und sich in die richtige Richtung drehen.Die Software bietet einen Diagnose-Modus. Öffne die serielle Konsole in der Arduino IDE (Strg+Shift+M) und setze die BAUD-Rate auf 19200. Die Motor- und Sensorwerte sollten daraufhin ständig angezeigt werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;background-color: lightgrey; border: solid thin grey;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    20 OFF  spd    0    0    0 sen    0    0    0 bum    0    0 son...&lt;br /&gt;
    21 OFF  spd    0    0    0 sen    0    0    0 bum    0    0 son...&lt;br /&gt;
    22 OFF  spd    0    0    0 sen    0    0    0 bum    0    0 son...&lt;br /&gt;
    23 OFF  spd    0    0    0 sen    0    0    0 bum    0    0 son...&lt;br /&gt;
    24 OFF  spd    0    0    0 sen    0    0    0 bum    0    0 son...&lt;br /&gt;
    ...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Drücke nun die Taste 't' auf der Tastatur und bestätige mit 'Enter'. Es erscheint der Diagnose-Modus in dem du die Motoren testen kannst.&lt;br /&gt;
&lt;br /&gt;
==ADC Kalibrierung==&lt;br /&gt;
Starte die ADC-Kalibrierung einmal (entweder über die serielle Konsole oder über &amp;quot;pfodApp-&amp;gt;ADC Calibration&amp;quot;), damit das Empfangssignal symmetrisch zum Nullpunkt ist.&lt;br /&gt;
&lt;br /&gt;
=Diagnose/Fehlerbehebung=&lt;br /&gt;
Jedesmal, wenn ein Sensor anspricht, zählt ein korrespondierender Sensorzähler um 1 hoch. Die Zählerstände der Sensorzähler sowie die aktuellen Sensorwerte kann man in der seriellen Konsole ansehen. Die folgenden Werte werden in der seriellen Konsole angezeigt:&lt;br /&gt;
&lt;br /&gt;
# Zeit des state machine's Status (ms)&lt;br /&gt;
# Schleifendurchläufe pro sec&lt;br /&gt;
# gewählter Anzeige-Modus (0=Zählerstände/1=aktuelle Werte/2=aktuelle Werte)&lt;br /&gt;
# aktueller state machine Status (FORW, REV, ROLL usw.)&lt;br /&gt;
# Fährt in Ladestation? (1/0)&lt;br /&gt;
# &amp;quot;spd&amp;quot; - Ansteuerung/Drehzahl der Motoren: links (PWM), rechts (PWM), Mähmotor (RPM)&lt;br /&gt;
# &amp;quot;sen&amp;quot; - Überstromzähler der Motoren: links, rechts, Mähmotor &lt;br /&gt;
# &amp;quot;bum&amp;quot; - Bumper Zähler: links, rechts&lt;br /&gt;
# &amp;quot;son&amp;quot; - Ultraschall Abstandsschwelle unterschritten (Zähler) &lt;br /&gt;
# &amp;quot;pit/roll&amp;quot; - Neigung (berechnet von Beschleunigungssensor)&lt;br /&gt;
# &amp;quot;com&amp;quot; - Kompass Kurs&lt;br /&gt;
# &amp;quot;per&amp;quot; - Perimeterschleife erkannt: Zähler&lt;br /&gt;
# &amp;quot;bat&amp;quot; - Akku Spannung&lt;br /&gt;
# &amp;quot;chg&amp;quot; - Ladestrom&lt;br /&gt;
&lt;br /&gt;
Mittels der Taste 'v' kann zwischen Sensor-Zählerständen und den aktuellen Sensorwerten umgeschaltet werden.&lt;br /&gt;
&lt;br /&gt;
[[File:warning.png]] Zusätzlich kannst du mit Hilfe der Android-App  'pfodApp' die Sensorenausgaben über die Zeit grafisch darstellen (Zählerstände und aktuelle Werte). Das ermöglicht die drahtlose Überwachung deines Mähroboters zur Fehlersuche. Es ist sehr zu empfehlen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File:Ardumower_sensor_counter_plotting.jpg |Sensor-Zählerstände&lt;br /&gt;
File:Ardumower_plot_sensors.jpg |gemessene Sensorwerte&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Starten des Mähroboters=&lt;br /&gt;
&lt;br /&gt;
Um den Mähroboter zu starten wird ein Taster und ein Piezo-Summer benötigt:&lt;br /&gt;
&lt;br /&gt;
 pinButton —o Taster o— GND (button for ON/OFF)&lt;br /&gt;
&lt;br /&gt;
 pinBuzzer —o Buzzer o— GND (Piezo buzzer)&lt;br /&gt;
&lt;br /&gt;
Drücke nun den Taster, bis Du die Anzahl Pieptöne hörst, die dem Modus entspricht, den Du einstellen möchtest:&lt;br /&gt;
&lt;br /&gt;
Modus (Drücke Taster bis du x Töne hörst):&lt;br /&gt;
 1 Piep  : Normales mähen (verwendet, wenn verfügbar, Messermodulation)&lt;br /&gt;
 2 Pieps : Normales mähen (ohne Messermodulation)&lt;br /&gt;
 3 Pieps : Fahren mit Fernsteuerung (RC)&lt;br /&gt;
 4 Pieps : Fahren ohne mähen&lt;br /&gt;
 5 Pieps : Finde Perimeterschleife und folge ihr&lt;br /&gt;
&lt;br /&gt;
=Fehlerzähler / Fehlertöne=&lt;br /&gt;
Gibt es ein Kommunikationsproblem oder ein anderes ernstes Problem, zählt der entsprechende Fehlerzähler hoch. der Fehlerzähler kann über die  pfodApp eingesehen. Zusätzlich Piept der Roboter beim starten.&lt;br /&gt;
&lt;br /&gt;
Siehe Abschnitt [[Troubleshooting]] für Details zu allen Fehlern.&lt;br /&gt;
&lt;br /&gt;
==I2C Bus / Fehlertöne==&lt;br /&gt;
Verschiedene Komponenten (Arduino Nano, RTC, IMU, usw.) kommunizieren über den I2C Bus (SDA/SCL Leitung). diese Leitungen sollten sehr kurz sein (evt. verdrillt) und sie sollten weit weg von DC/DC Wandlern und Motortreibern sein. Wenn es ein Kommunikationsproblem gibt, wird der Fehlerzähler erhöht und der Roboter piepst beim Starten. DerFehlerzähler kann über die pfodApp eingesehen werden.&lt;br /&gt;
&lt;br /&gt;
=Einstellungen=&lt;br /&gt;
Der Roboter verwendet Einstellungen die du für deinen Roboter und deine Umgebung anpassen kannst (über pfodApp oder direkt in der Software). Die Grundeinstellungen (factory settings) werden in der Konfigurationsdatei 'mower.cpp' gespeichert.&lt;br /&gt;
&lt;br /&gt;
Die Einstellungen können über ein Android-Handy verändert werden([http://wiki.ardumower.de/index.php?title=Bluetooth pfodApp]). &lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
  File:Cheat_sheet.png | Grundeinstellungen &lt;br /&gt;
  File:Speedcontrol.png | Motor-Einstellungen&lt;br /&gt;
  File:Ardumower_config_files.png | Konfigurationdatei Idee &lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wichtig: Wenn du eine neue Softwareversion auf deinen Arduino lädst, setze alle Einstellungen über die pfodApp auf die Grundeinstellungen zurück (Settings-&amp;gt;Factory reset). Das löscht alle vorhandenen Einstellungen. alte Einstellungen können zu Fehlfunktionen führen, wenn sich das interne Einstellungsformat geändert hat.&lt;br /&gt;
&lt;br /&gt;
=Weitere Links=&lt;/div&gt;</summary>
		<author><name>Deejay</name></author>	</entry>

	<entry>
		<id>https://wiki.ardumower.de/index.php?title=Ardumower_LP&amp;diff=2768</id>
		<title>Ardumower LP</title>
		<link rel="alternate" type="text/html" href="https://wiki.ardumower.de/index.php?title=Ardumower_LP&amp;diff=2768"/>
				<updated>2015-09-16T16:10:44Z</updated>
		
		<summary type="html">&lt;p&gt;Deejay: /* Zusammenfassung */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Zusammenfassung=&lt;br /&gt;
Diese Seite beschreibt,wie die Ardumower Hauptleiterplatte aufgebaut wird, wie das Programm auf den Arduino aufgespielt wird, und wie man den Mähroboter konfiguriert.&lt;br /&gt;
&lt;br /&gt;
Kernstück der Steuerung ist ein fertiges Microcontroller-Modul (Arduino Mega 2560 verwendet 54 I/O pins). &lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Ardumower_overview.png | Komponenten Überblick&lt;br /&gt;
File: Ardumower_chassis_components.png | Chassis Komponenten&lt;br /&gt;
File: Arduinomega.jpg | Das Hirn des Ardumowers : Der Arduino Mega 2560 Mikrocontroller&lt;br /&gt;
File: Ardumower_parts.jpg| Im Shop verfügbare Module&lt;br /&gt;
File: Ardumower_pcb_photo.jpg | Die Ardumower LP verbindet alle Module (verfügbar im Shop)&lt;br /&gt;
File: Ardumower_chassis_pcb1.jpg | Chassis und LP im Innern&lt;br /&gt;
File: Ardumower_chassis_pcb2.jpg | Leiterplatte montiert&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Benötigte Module=&lt;br /&gt;
&lt;br /&gt;
Alle Module und Teile können über den [https://www.marotronics.de/ shop] bezogen werden .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Was wird für den Aufbau eines Ardumowers alles benötigt.&lt;br /&gt;
&lt;br /&gt;
*[https://www.marotronics.de/Ardumower-Board-12-Prototyp-mit-Chassis-und-Motoren Das Ardumower Chassis inklusive Motoren und Hauptplatine]&lt;br /&gt;
&lt;br /&gt;
*Wichtige Module dazu wählen:&lt;br /&gt;
**Zubehör Set (Widerstände, Stiftleisten etc.)&lt;br /&gt;
**2 x Protector Board &lt;br /&gt;
**1 x Mega Board 2560 R3&lt;br /&gt;
**1 x INA169 Strom Sensor Board&lt;br /&gt;
**2 x Dual Treiber MC33926&lt;br /&gt;
**3 x DC-DC LM2596 Step-Down Regler&lt;br /&gt;
**1 x Wireless Bluetooth Modul HC-05&lt;br /&gt;
**1 x Real Time Clock I2C DS1307&lt;br /&gt;
**1 x 24 VoltLadegerät für den Ardumower Akku&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*Optionale Module:&lt;br /&gt;
**Zubehör Set Ladeschaltung (Blei Akkus) &lt;br /&gt;
**WIFI Wlan Modul ESP8266 ESP01 &lt;br /&gt;
**Ultraschallsensoren HC-SR04 (bis zu 3 Stück werden unterstützt)&lt;br /&gt;
**Regensensor &lt;br /&gt;
**GPS Modul GY-GPS6MV2 &lt;br /&gt;
**GYRO-80&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*1 x [http://www.asn-shop.de/Ardumower-Power-Pack-259V-45Ah Ardumower Power Pack]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*1 x [https://www.marotronics.de/3-Messer-3-Schrauben-passend-zB-fuer-AutomowerZ-von-HusqvarnaZ 3 Messer + 3 Schrauben passend z.B. für Automower® von Husqvarna®]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*1 x [https://www.marotronics.de/Perimeter-Sender-Board-Prototyp-mit-Platinen-Zubehoer Perimeter Sender Board (Prototyp) mit Platinen Zubehör]&lt;br /&gt;
*Wichtige Module dazu wählen:&lt;br /&gt;
**1x Dual MC33926 Motor Driver Carrier &lt;br /&gt;
**1x INA169 Analog DC Current Sensor Breakout - 60V 2,5A / 5A Marotronics &lt;br /&gt;
**1 x DC-DC Spannungsregler LM2596 Step-Down Regler einstellbar&lt;br /&gt;
**1 x Nano V3.0 ATmega328-AU Arduino kompatibel Mikrocontroller Board &lt;br /&gt;
&lt;br /&gt;
*Optionale Module:&lt;br /&gt;
**Gehäuse inklusive 5 passender Schrauben für das PCB &lt;br /&gt;
**Anschlussklemmen max.3 (2xSchleife, 1xLadeanschluss) &lt;br /&gt;
**Einbaubuchse für Gehäuse 2,5 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*Weiteres Zubehör je nach Bedarf:&lt;br /&gt;
&lt;br /&gt;
**[https://www.marotronics.de/25-Rasennaegel-Heringe-fuer-Rasenroboter-zB-Robomow-STAFFELPREISE Rasennägel/Heringe]&lt;br /&gt;
**[https://www.marotronics.de/100-m-Kabel-Einzelader-1-x1-mm-H05V-K-schwarz Kabel für die Schleife]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*Eine Ladestation ist in der Entwicklung und folgt demnächst.&lt;br /&gt;
&lt;br /&gt;
=Hauptleiterplatte=&lt;br /&gt;
Die Leiterplatte wurde mit folgenden Parametern entwickelt:&lt;br /&gt;
&lt;br /&gt;
* LP Abmessungen 241x114mm &lt;br /&gt;
* Alle Module (Motortreiber, Bluetooth, usw.) können auf die Leiterplatte gelötet (oder gesteckt) werden (Modules sind im Ardumower-Shop verfügbar)&lt;br /&gt;
* Verwendet den Arduino Mega 2560&lt;br /&gt;
* Optional: kann der Arduino Due mittels zusätzlicher LP-Adapter verwendet werden&lt;br /&gt;
* Optional: integrierter Ladestromkreis (Strombegrenzung)&lt;br /&gt;
* alle Verbindungen, einschliesslich +5V und GND, sind über Steckverbinder realisiert&lt;br /&gt;
* Max. Strombelastung der Leiterbahnen (für Motoren): 8A&lt;br /&gt;
&lt;br /&gt;
=Leiterplattenversionen=&lt;br /&gt;
Roboterplatine v0.5 (1. Prototyp)&lt;br /&gt;
* [https://github.com/Ardumower/ardumower/tree/master/pcb/megashield_svn_0.5/Platinenbilder Fotos]&lt;br /&gt;
* [https://github.com/Ardumower/ardumower/raw/master/pcb/megashield_svn_0.5/ardumower%20mega%20shield%20svn.pdf Schaltbilder]&lt;br /&gt;
&lt;br /&gt;
Roboterplatine v1.2  (geringe Layoutänderungen)&lt;br /&gt;
* [https://github.com/Ardumower/ardumower/raw/master/pcb/megashield_svn_1.2_geschlossen/ardumower%20mega%20shield%20svn.pdf Schaltpläne]&lt;br /&gt;
* [https://github.com/Ardumower/ardumower/tree/master/pcb/megashield_svn_1.2_geschlossen/Platinenbilder Photos]&lt;br /&gt;
* [https://github.com/Ardumower/ardumower/raw/master/pcb/megashield_svn_1.2_geschlossen/Dokumentation/WorkaRound20150527.pdf WorkaRound20150527]&lt;br /&gt;
* [https://github.com/Ardumower/ardumower/raw/master/pcb/megashield_svn_1.2_geschlossen/Dokumentation/WorkaRound20150530.pdf WorkaRound20150530]&lt;br /&gt;
* [https://github.com/Ardumower/ardumower/raw/master/pcb/megashield_svn_1.2_geschlossen/Dokumentation/Motor-EntstoerungREV20150531.pdf Motor-decrease noise REV20150531],  [http://www.ardumower.de/media/kunena/attachments/1725/Motor-EntstoerungREV20150531.pdf (englische Kommentare)]&lt;br /&gt;
&lt;br /&gt;
Roboterplatine PCB v1.3 (in Entwicklung)&lt;br /&gt;
* vereinfachtes Design (Due Adapter werden extern sein)&lt;br /&gt;
* Motorschutzschaltung&lt;br /&gt;
* Batterie-Abschaltung, Sicherheitsschalter&lt;br /&gt;
* setzt 'Referenzdesign' und erfordert die Module: 3x DC/DC, RTC, IMU&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Bemerkung:''' Das Schaltbild und die Platinen-Zeichnungen wurden mit KiCad entwickelt. Sie können hier heruntergeladen  [https://github.com/Ardumower/ardumower/archive/master.zip github] und damit bearbeitet werden [http://kicad.nosoftware.cz/windows/KiCad_testing-2014.10.19-BZR5203_Win_full_version.exe KiCAD software].&lt;br /&gt;
&lt;br /&gt;
=Leiterplatten Jumper=&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Feature used&lt;br /&gt;
! YES&lt;br /&gt;
! NO&lt;br /&gt;
! Comment&lt;br /&gt;
|-&lt;br /&gt;
| integrierter Laderegler mit einstellbarem &lt;br /&gt;
&lt;br /&gt;
Spannungsregler (LM350T) mit Potentiometer&lt;br /&gt;
&lt;br /&gt;
für einstellbare Ladespannung &lt;br /&gt;
(empfohlen: Nein) &lt;br /&gt;
| D7: DIODE&lt;br /&gt;
&lt;br /&gt;
D3: DIODE&lt;br /&gt;
&lt;br /&gt;
C1, C4, U4, RV1: verwendet&lt;br /&gt;
|D7: brücken&lt;br /&gt;
&lt;br /&gt;
D3: brücken&lt;br /&gt;
&lt;br /&gt;
C1, C4, U4, RV1: nicht verwendet&lt;br /&gt;
| Bei externem Ladegerät nicht verwenden&lt;br /&gt;
|-&lt;br /&gt;
| externe Stromversorgung währen des Ladens (empfohlen: Nein)&lt;br /&gt;
| JP6: geschlossen&lt;br /&gt;
&lt;br /&gt;
JP7: offen&lt;br /&gt;
&lt;br /&gt;
D4: DIODE&lt;br /&gt;
&lt;br /&gt;
C5: nicht verwendet&lt;br /&gt;
| JP6: offen&lt;br /&gt;
&lt;br /&gt;
JP7: geschlossen&lt;br /&gt;
&lt;br /&gt;
D4: brücken&lt;br /&gt;
&lt;br /&gt;
C5: verwendet&lt;br /&gt;
| um Platine von aussen mit Strom zu versorgen (trennt Akku von Platine) während des Ladens&lt;br /&gt;
|-&lt;br /&gt;
| von Arduino gesteuertes Laderelais (empfohlen: ja)&lt;br /&gt;
| JP4: geschlossen&lt;br /&gt;
&lt;br /&gt;
JP5: offen&lt;br /&gt;
| JP4: offen&lt;br /&gt;
&lt;br /&gt;
JP5: geschlossen&lt;br /&gt;
| verwendet für vom Arduino gesteuertem Laderelais (keine automatische Ladung)&lt;br /&gt;
|-&lt;br /&gt;
| Arduino Due (3.3V I/O)&lt;br /&gt;
| LP0, ..., LP15: offen&lt;br /&gt;
| LP0, ..., LP15: geschlossen&lt;br /&gt;
| Nicht verwenden  bei Arduino Mega&lt;br /&gt;
|-&lt;br /&gt;
| Bluetooth VCC=3.3V&lt;br /&gt;
| JP8: offen&lt;br /&gt;
&lt;br /&gt;
JP9: geschlossen&lt;br /&gt;
| JP8: geschlossen&lt;br /&gt;
&lt;br /&gt;
JP9: offen&lt;br /&gt;
| viele neuere Module laufen mit 3.3V&lt;br /&gt;
|-&lt;br /&gt;
| Bluetooth Programmier-Modus&lt;br /&gt;
| JP2: geschlossen &lt;br /&gt;
| JP2: offen&lt;br /&gt;
| verwendet für Programmierung der BAUD-Rate usw.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Leiterplatten-Module=&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Module&lt;br /&gt;
! Feature&lt;br /&gt;
! Pinout&lt;br /&gt;
! Optional&lt;br /&gt;
! Comment&lt;br /&gt;
|-&lt;br /&gt;
| U1&lt;br /&gt;
| DC/DC Wandler (10V)&lt;br /&gt;
| GND, Vout, Vin, GND&lt;br /&gt;
| Nein&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| U2&lt;br /&gt;
| Bluetooth (HC-05)&lt;br /&gt;
| VCC, GND, TXD, RXD, Key, LED&lt;br /&gt;
| Ja&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| U3&lt;br /&gt;
| Stromsensor (Ladestrom)&lt;br /&gt;
| VCC, GND, OUT, IP+, IP-5&lt;br /&gt;
| Ja&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| U4&lt;br /&gt;
| Laderegler (LM350T)&lt;br /&gt;
| AJD, OUT, IN&lt;br /&gt;
| Ja&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| U5&lt;br /&gt;
| Stromsensor (währen des Ladens)&lt;br /&gt;
| VCC, GND, OUT, IP+, IP-5&lt;br /&gt;
| Ja&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| U6&lt;br /&gt;
| DC/DC Wandler (3.3V)&lt;br /&gt;
| GND, Vout, Vin, GND&lt;br /&gt;
| Nein&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| U7&lt;br /&gt;
| DC/DC Wandler (5V)&lt;br /&gt;
| GND, Vout, Vin, GND&lt;br /&gt;
| Nein&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| U8&lt;br /&gt;
| Echtzeituhr (DS1307)&lt;br /&gt;
| Batt, GND, VCC, SDA, SCL, DS, SQ&lt;br /&gt;
| Ja&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| U9&lt;br /&gt;
| WLAN (ESP8266)&lt;br /&gt;
| TX, CH_PD, Reset, VCC, GND, GP_IO2, GP_IO0, RX&lt;br /&gt;
| Ja&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| U10&lt;br /&gt;
| Pegelwandler 5V-&amp;gt;3V (Arduino Due)&lt;br /&gt;
| &lt;br /&gt;
| Ja&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| U11&lt;br /&gt;
| WLAN(ESP8266)&lt;br /&gt;
| TX, CH_PD, Reset, VCC, GND, GP_IO2, GP_IO0, RX&lt;br /&gt;
| Ja&lt;br /&gt;
| alternative Montageposition&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Leiterplatten Steckverbinder=&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Connector&lt;br /&gt;
! Feature&lt;br /&gt;
! Pinout&lt;br /&gt;
! Optional&lt;br /&gt;
! Comment&lt;br /&gt;
|-&lt;br /&gt;
| P1&lt;br /&gt;
| Sonar mitte (HC SR-04)&lt;br /&gt;
| 5V, GND, Trigger, Echo&lt;br /&gt;
| ja&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| P2&lt;br /&gt;
| Sonar rechts (HC SR-04)&lt;br /&gt;
| 5V, GND, Trigger, Echo&lt;br /&gt;
| ja&lt;br /&gt;
|-&lt;br /&gt;
| P3&lt;br /&gt;
| Sonar links (HC SR-04)&lt;br /&gt;
| 5V, GND, Trigger, Echo&lt;br /&gt;
| ja&lt;br /&gt;
|-&lt;br /&gt;
| P4&lt;br /&gt;
| reserviert&lt;br /&gt;
| &lt;br /&gt;
| ja&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| P5&lt;br /&gt;
| IMU (gyro,acceleration,compass) (GY-80)&lt;br /&gt;
| &lt;br /&gt;
| ja&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| P6&lt;br /&gt;
| Rasensensor&lt;br /&gt;
| &lt;br /&gt;
| ja&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| P7&lt;br /&gt;
| Status LEDs&lt;br /&gt;
| &lt;br /&gt;
| ja&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| P8&lt;br /&gt;
| Odometrie rechts&lt;br /&gt;
| &lt;br /&gt;
| ja&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| P9&lt;br /&gt;
| Odometrie links&lt;br /&gt;
| &lt;br /&gt;
| ja&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| P10&lt;br /&gt;
| GPS (GY-NEO6MV2)&lt;br /&gt;
| &lt;br /&gt;
| ja&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| P11&lt;br /&gt;
| Bumper&lt;br /&gt;
| GND, GND, rechts, links&lt;br /&gt;
| ja&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| P12&lt;br /&gt;
| Perimeter-Empfänger (mitte oder links)&lt;br /&gt;
| 5V, GND, perimeter&lt;br /&gt;
| ja&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| P13&lt;br /&gt;
| R/C Fernsteuerung&lt;br /&gt;
| 5V, GND, mow, steer, speed, switch&lt;br /&gt;
| ja&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| P14&lt;br /&gt;
| Messpunkte&lt;br /&gt;
| 5V, GND, (abhängig von JP15: 3.3V, 5V or Arduino 3.3V)&lt;br /&gt;
| ja&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| P15&lt;br /&gt;
| Antriebsmotor links&lt;br /&gt;
| M1OUT1, M1OUT2&lt;br /&gt;
| Nein&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| P16&lt;br /&gt;
| Optionaler Motortreiber-Eingang&lt;br /&gt;
|&lt;br /&gt;
| ja&lt;br /&gt;
| nicht verbinden&lt;br /&gt;
|-&lt;br /&gt;
| P17&lt;br /&gt;
| Optionaler Motortreiber-Eingang&lt;br /&gt;
|&lt;br /&gt;
| ja&lt;br /&gt;
| nicht verbinden&lt;br /&gt;
|-&lt;br /&gt;
| P18&lt;br /&gt;
| Antriebsmotor rechts&lt;br /&gt;
| M2OUT1, M2OUT2&lt;br /&gt;
| Nein&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| P19&lt;br /&gt;
| Neigungssensor&lt;br /&gt;
| 5V, GND, tilt&lt;br /&gt;
| ja&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| P20&lt;br /&gt;
| Taster (Start/Stop)&lt;br /&gt;
| &lt;br /&gt;
| Nein&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| P21&lt;br /&gt;
| Absturzsensor rechts&lt;br /&gt;
| &lt;br /&gt;
| ja&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| P22&lt;br /&gt;
| reserviert&lt;br /&gt;
| &lt;br /&gt;
| ja&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| P23&lt;br /&gt;
| reserviert&lt;br /&gt;
| &lt;br /&gt;
| ja&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| P24&lt;br /&gt;
| reserviert&lt;br /&gt;
| &lt;br /&gt;
| ja&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| P25&lt;br /&gt;
| reserviert&lt;br /&gt;
| &lt;br /&gt;
| ja&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| P26&lt;br /&gt;
| reserviert&lt;br /&gt;
| &lt;br /&gt;
| ja&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| P27&lt;br /&gt;
| reserviert&lt;br /&gt;
| &lt;br /&gt;
| ja&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| P28&lt;br /&gt;
| reserviert&lt;br /&gt;
| &lt;br /&gt;
| ja&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| P29&lt;br /&gt;
| reserviert&lt;br /&gt;
| &lt;br /&gt;
| ja&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| P30&lt;br /&gt;
| Perimeter-Empfänger rechts&lt;br /&gt;
| &lt;br /&gt;
| ja&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| P31&lt;br /&gt;
| Absturzsensor links&lt;br /&gt;
| &lt;br /&gt;
| ja&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| P32&lt;br /&gt;
| GND&lt;br /&gt;
| &lt;br /&gt;
| ja&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| P33&lt;br /&gt;
| 5V&lt;br /&gt;
| &lt;br /&gt;
| ja&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| P34&lt;br /&gt;
| 3.3V&lt;br /&gt;
| &lt;br /&gt;
| ja&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| P35&lt;br /&gt;
| Mähmotor Drehzahl&lt;br /&gt;
| &lt;br /&gt;
| ja&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| P36&lt;br /&gt;
| reserviert&lt;br /&gt;
| &lt;br /&gt;
| ja&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| P37&lt;br /&gt;
| Mähmotor&lt;br /&gt;
| &lt;br /&gt;
| Nein&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| P38&lt;br /&gt;
| reserviert&lt;br /&gt;
| &lt;br /&gt;
| ja&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| P39&lt;br /&gt;
| reserviert&lt;br /&gt;
| &lt;br /&gt;
| ja&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| P40&lt;br /&gt;
| User switches&lt;br /&gt;
| &lt;br /&gt;
| ja&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| P41&lt;br /&gt;
| Regensensor&lt;br /&gt;
| &lt;br /&gt;
| ja&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| P42&lt;br /&gt;
| Ladeanschluss&lt;br /&gt;
| &lt;br /&gt;
| ja&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| P43&lt;br /&gt;
| Akku (24V)&lt;br /&gt;
| &lt;br /&gt;
| Nein&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| P44&lt;br /&gt;
| WLAN Modul (ESP8266)&lt;br /&gt;
| &lt;br /&gt;
| ja&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| P45&lt;br /&gt;
| reserviert&lt;br /&gt;
| &lt;br /&gt;
| ja&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| P46&lt;br /&gt;
| reserviert&lt;br /&gt;
| &lt;br /&gt;
| ja&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Stromversorgung=&lt;br /&gt;
Bitte lies auch den Abschnitt 'Spannungen' unter [[Motor driver]] für mehr Informationen über die Motorspannung&lt;br /&gt;
&lt;br /&gt;
Empfehlenswert ist die Verwendung von Step down Spannungswandlern  (d.h. Module verwenden LM2596) um die 5V Spannung für den Arduino und alle zusätzlichen Module zu erzeugen. vor der Verbindung mit der Schaltung (Jumper), stelle den Wandler auf 5V ein, dann erst den Jumper schliessen. &lt;br /&gt;
&lt;br /&gt;
[[File:warning.png]]Warnung : niemals mehr als 5V an die Arduino 5V pins anlegen, das würde den Arduino zerstören. Deshalb, immer die 5V messen bevor die Verbindung zum 5V Pin des Arduino erfolgt!&lt;br /&gt;
Alle Komponenten zusammen (wie im Schaltbild gezeigt) benötigen ca. 5W Leistung.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Dcdc_noise.jpg | NOTE: Perimeterspule/Verstärker von DC/DC-Wandlern fernhalten (Störstrahlung)!&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Programm downloaden und Arduino programmieren=&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;NOTE&amp;lt;/b&amp;gt;: Wenn du noch nie mit Arduino gearbeitet hast, lies unser &amp;lt;b&amp;gt;[http://wiki.ardumower.de/index.php?title=Arduino_first_steps 'Arduino first steps' introduction]&amp;lt;/b&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Du hast zwei Möglichkeiten: &lt;br /&gt;
* Download [https://github.com/Ardumower/ardumower/releases github code (empfohlen)]  oder&lt;br /&gt;
* Download [http://www.ardumower.de/index.php/de/downloads v0.9.3 code (alt, nicht empfohlen)]&lt;br /&gt;
&lt;br /&gt;
Zuletzt, downloade und starte [http://arduino.cc/en/Main/Software Arduino IDE] um das Programm auf dem Arduino zu speichern.&lt;br /&gt;
&lt;br /&gt;
'''Arduino Version''': Es ist wichtig, dass du die Version 1.6.3  oder höher der Arduino-Entwicklungssoftware benutzt und dass du das richtige Board auswählst (Mega 2560 or Due).&lt;br /&gt;
&lt;br /&gt;
[[File:warning.png]] Bemerkung: Vergewissere dich, dass die Pin-Belegung im Arduino-Code (config.h/mower.cpp) mit deinem aktuellen Schaltplan übereinstimmt.&lt;br /&gt;
&lt;br /&gt;
=Kalibrierung bei der ersten Inbetriebnahme=&lt;br /&gt;
==Antriebsmotoren==&lt;br /&gt;
[[File:warning.png]]Sicherheitshinweis: Aus Sicherheitsgründen sind die Mähmesser bei den ersten Tests [[nicht]] zu montieren!&lt;br /&gt;
&lt;br /&gt;
Zu Beginn solltest du überprüfen ob die Antriebsmotoren richtig gesteuert werden und sich in die richtige Richtung drehen.Die Software bietet einen Diagnose-Modus. Öffne die serielle Konsole in der Arduino IDE (Strg+Shift+M) und setze die BAUD-Rate auf 19200. Die Motor- und Sensorwerte sollten daraufhin ständig angezeigt werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;background-color: lightgrey; border: solid thin grey;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    20 OFF  spd    0    0    0 sen    0    0    0 bum    0    0 son...&lt;br /&gt;
    21 OFF  spd    0    0    0 sen    0    0    0 bum    0    0 son...&lt;br /&gt;
    22 OFF  spd    0    0    0 sen    0    0    0 bum    0    0 son...&lt;br /&gt;
    23 OFF  spd    0    0    0 sen    0    0    0 bum    0    0 son...&lt;br /&gt;
    24 OFF  spd    0    0    0 sen    0    0    0 bum    0    0 son...&lt;br /&gt;
    ...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Drücke nun die Taste 't' auf der Tastatur und bestätige mit 'Enter'. Es erscheint der Diagnose-Modus in dem du die Motoren testen kannst.&lt;br /&gt;
&lt;br /&gt;
==ADC Kalibrierung==&lt;br /&gt;
Starte die ADC-Kalibrierung einmal (entweder über die serielle Konsole oder über &amp;quot;pfodApp-&amp;gt;ADC Calibration&amp;quot;), damit das Empfangssignal symmetrisch zum Nullpunkt ist.&lt;br /&gt;
&lt;br /&gt;
=Diagnose/Fehlerbehebung=&lt;br /&gt;
Jedesmal, wenn ein Sensor anspricht,zählt ein korrespondierender Sensorzähler um 1 hoch. Die Zählerstände der Sensorzähler sowie die aktuellen Sensorwerte kann man in der seriellen Konsole ansehen. Die folgenden Werte werden in der seriellen Konsole angezeigt:&lt;br /&gt;
&lt;br /&gt;
# Zeit des state machine's Status (ms)&lt;br /&gt;
# Schleifendurchläufe pro sec&lt;br /&gt;
# gewählter Anzeige-Modus (0=Zählerstände/1=aktuelle Werte/2=aktuelle Werte)&lt;br /&gt;
# aktueller state machine Status (FORW, REV, ROLL usw.)&lt;br /&gt;
# Fährt in Ladestation? (1/0)&lt;br /&gt;
# &amp;quot;spd&amp;quot; - Ansteuerung/Drehzahl der Motoren: links (PWM), rechts (PWM), Mähmotor (RPM)&lt;br /&gt;
# &amp;quot;sen&amp;quot; - Überstromzähler der Motoren: links, rechts, Mähmotor &lt;br /&gt;
# &amp;quot;bum&amp;quot; - Bumper Zähler: links, rechts&lt;br /&gt;
# &amp;quot;son&amp;quot; - Ultraschall Abstandsschwelle unterschritten (Zähler) &lt;br /&gt;
# &amp;quot;pit/roll&amp;quot; - Neigung (berechnet von Beschleunigungssensor)&lt;br /&gt;
# &amp;quot;com&amp;quot; - Kompass Kurs&lt;br /&gt;
# &amp;quot;per&amp;quot; - Perimeterschleife erkannt: Zähler&lt;br /&gt;
# &amp;quot;bat&amp;quot; - Akku Spannung&lt;br /&gt;
# &amp;quot;chg&amp;quot; - Ladestrom&lt;br /&gt;
&lt;br /&gt;
Mittels der Taste 'v' kann zwischen Sensor-Zählerständen und den aktuellen Sensorwerten umgeschaltet werden.&lt;br /&gt;
&lt;br /&gt;
[[File:warning.png]] Zusätzlich kannst du mit Hilfe der Android-App  'pfodApp' die Sensorenausgaben über die Zeit grafisch darstellen (Zählerstände und aktuelle Werte). Das ermöglicht die drahtlose Überwachung deines Mähroboters zur Fehlersuche. Es ist sehr zu empfehlen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File:Ardumower_sensor_counter_plotting.jpg |Sensor-Zählerstände&lt;br /&gt;
File:Ardumower_plot_sensors.jpg |gemessene Sensorwerte&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Starten des Mähroboters=&lt;br /&gt;
&lt;br /&gt;
Um den Mähroboter zu starten wird ein Taster und ein Piezo-Summer benötigt:&lt;br /&gt;
&lt;br /&gt;
 pinButton —o Taster o— GND (button for ON/OFF)&lt;br /&gt;
&lt;br /&gt;
 pinBuzzer —o Buzzer o— GND (Piezo buzzer)&lt;br /&gt;
&lt;br /&gt;
Drücke nun den Taster, bis Du die Anzahl Pieptöne hörst, die dem Modus entspricht, den Du einstellen möchtest:&lt;br /&gt;
&lt;br /&gt;
Modus (Drücke Taster bis du x Töne hörst):&lt;br /&gt;
 1 Piep  : Normales mähen (verwendet, wenn verfügbar, Messermodulation)&lt;br /&gt;
 2 Pieps : Normales mähen (ohne Messermodulation)&lt;br /&gt;
 3 Pieps : Fahren mit Fernsteuerung (RC)&lt;br /&gt;
 4 Pieps : Fahren ohne mähen&lt;br /&gt;
 5 Pieps : Finde Perimeterschleife und folge ihr&lt;br /&gt;
&lt;br /&gt;
=Fehlerzähler / Fehlertöne=&lt;br /&gt;
Gibt es ein Kommunikationsproblem oder ein anderes ernstes Problem, zählt der entsprechende Fehlerzähler hoch. der Fehlerzähler kann über die  pfodApp eingesehen. Zusätzlich Piept der Roboter beim starten.&lt;br /&gt;
&lt;br /&gt;
Siehe Abschnitt [[Troubleshooting]] für Details zu allen Fehlern.&lt;br /&gt;
&lt;br /&gt;
==I2C Bus / Fehlertöne==&lt;br /&gt;
Verschiedene Komponenten (Arduino Nano, RTC, IMU, usw.) kommunizieren über den I2C Bus (SDA/SCL Leitung). diese Leitungen sollten sehr kurz sein (evt. verdrillt) und sie sollten weit weg von DC/DC Wandlern und Motortreibern sein. Wenn es ein Kommunikationsproblem gibt, wird der Fehlerzähler erhöht und der Roboter piepst beim Starten. DerFehlerzähler kann über die pfodApp eingesehen werden.&lt;br /&gt;
&lt;br /&gt;
=Einstellungen=&lt;br /&gt;
Der Roboter verwendet Einstellungen die du für deinen Roboter und deine Umgebung anpassen kannst (über pfodApp oder direkt in der Software). Die Grundeinstellungen (factory settings) werden in der Konfigurationsdatei 'mower.cpp' gespeichert.&lt;br /&gt;
&lt;br /&gt;
Die Einstellungen können über ein Android-Handy verändert werden([http://wiki.ardumower.de/index.php?title=Bluetooth pfodApp]). &lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
  File:Cheat_sheet.png | Grundeinstellungen &lt;br /&gt;
  File:Speedcontrol.png | Motor-Einstellungen&lt;br /&gt;
  File:Ardumower_config_files.png | Konfigurationdatei Idee &lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wichtig: Wenn du eine neue Softwareversion auf deinen Arduino lädst, setze alle Einstellungen über die pfodApp auf die Grundeinstellungen zurück (Settings-&amp;gt;Factory reset). Das löscht alle vorhandenen Einstellungen. alte Einstellungen können zu Fehlfunktionen führen, wenn sich das interne Einstellungsformat geändert hat.&lt;br /&gt;
&lt;br /&gt;
=Weitere Links=&lt;/div&gt;</summary>
		<author><name>Deejay</name></author>	</entry>

	<entry>
		<id>https://wiki.ardumower.de/index.php?title=Bluetooth_und_App&amp;diff=2767</id>
		<title>Bluetooth und App</title>
		<link rel="alternate" type="text/html" href="https://wiki.ardumower.de/index.php?title=Bluetooth_und_App&amp;diff=2767"/>
				<updated>2015-09-16T16:09:35Z</updated>
		
		<summary type="html">&lt;p&gt;Deejay: /* Bluetooth HC-05 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Zusammenfassung=&lt;br /&gt;
Der Ardumower kann drahtlos überwacht und gesteuert werden:&lt;br /&gt;
* über Handy/Tablet (Android App)&lt;br /&gt;
* über USB Bluetooth Dongle (PC serial console)&lt;br /&gt;
&lt;br /&gt;
Auf den Handy/Tablet benötigst du folgende App [https://play.google.com/store/apps/details?id=au.com.forward.pfodApp 'pfodApp']. alternativ kannst du diese App benutzen [https://play.google.com/store/apps/details?id=de.grauonline.arduremote 'ArduRemote'].&lt;br /&gt;
&lt;br /&gt;
Das Handy-Menü enthält:&lt;br /&gt;
* Statusinformationen (Akku-Spannungg, Ladestrom usw.)&lt;br /&gt;
* Einstellungen (Timer usw.)&lt;br /&gt;
* Abgleich (Motor, IMU etc.)&lt;br /&gt;
* Fernsteuerung (Start/Stop, Ein/Aus Mähmotor, Messermodulation usw.)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Ardumower_live_monitoring_configuration_debugging.jpg | Live-Konfiguration, Überwachung und Fehlersuche&lt;br /&gt;
File: Pfodapp_menu.png | Android App Menü&lt;br /&gt;
File: Pfodapp.png | Android App (pfodApp)&lt;br /&gt;
File: Arduremote.png | Android App (ArduRemote)&lt;br /&gt;
File: Bluetooth dongle.jpg | PC-Kommunikation über Bluetooth USB Dongle&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Bluetooth Module=&lt;br /&gt;
Der Roboter benötigt ein Bluetooth-Modul das das Serial Port Profil (SPP) unterstützt. SPP verwendet das Bluetooth Service Discovery Protocol (SDP) und das RFCOMM protocol. Abhängig von der gefoderten Reichweite kann man unterschiedliche Bluetooth-Klassen verwenden:&lt;br /&gt;
&lt;br /&gt;
*Bluetooth class 2 (bis ca. 50m Reichweite), z.B. HC03/04/05/06&lt;br /&gt;
*Bluetooth class 1 (bis ca. 100m Reichweite), z.B. BTM220, erfordert eine Zusatzschaltung&lt;br /&gt;
&lt;br /&gt;
=Bluetooth HC-05=&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Bluetooth_module.jpg | HC-05 Modul&lt;br /&gt;
File: HC-05 schematics.jpg | HC-05 Schaltung&lt;br /&gt;
File: HC-05.gif | HC-05 mit Taster&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das Bluetooth-Modul wird mit 3,3V betrieben. Man benötigt deshalb einen Spannungsteiler an der RX-Leitung und einen PullUp-Widerstand an der TX-Leitung so, wie es in der Schaltung zu sehen ist.&lt;br /&gt;
&lt;br /&gt;
Zur Programmierung wird der Key-Pin des BT-Modules mit 3,3V vom Arduino verbunden und danach die Verbindung wieder getrennt.&lt;br /&gt;
&lt;br /&gt;
Besonderheiten: Je nach Lieferant wird das HC-05 Modul mit 5 Volt VCC betrieben; Aufschrift &amp;quot;Power 3.6-6V&amp;quot;(JP 8 anstelle von JP 9 setzen). Sofern sich am Pin &amp;quot;EN&amp;quot; ein Microtaster befindet (siehe Foto), so muss dieser während der Konfiguration gedrückt sein, da ansonsten das Modul nicht erkannt wird. Key-Pin muss wie beschrieben auf +3,3 Volt gesetzt sein (JP 2). Rx/Tx laufen auch hier mit 3,3 Volt.&lt;br /&gt;
&lt;br /&gt;
=Die Schritte im Einzelnen=&lt;br /&gt;
# Konfigurationsmodus: Das Bluetooth-Modul muss für die nächsten Schritte im Konfigurationsmodus sein:&lt;br /&gt;
## für HC05:           Nachdem das Modul an die Betriebsspannung angeschlossen wurde, verbinde den KEY-Pin mit 3,3V&lt;br /&gt;
## für HC06/linvor:    nicht paaren/verbinden (LED muss blinken)&lt;br /&gt;
## für FBT06/MBTV4:    Zuerst muss ein dünner Draht von Pin PIO11 nach VCC (PIN 12)das sind 3.3 Volt gelötet werden.&lt;br /&gt;
# Baudrate: Das Bluetooth-Modul und der Arduino Mega müssen die gleiche Baudrate (19200) verwenden - Die Baudrate des Bluetooth-Modules kann über die serielle Konsole des Ardumowers geändert werden. Verbinde das Ardumower Mega Board mit deinem PC (USB), gehe in die serielle Konsole in der Arduino IDE (Strg+M), und wähle dort Baudrate 19200, dann drücke Taste 'd' um ins Ardumower-Menü zu gelangen um hier die richtige Baudrate für das BT-Modul einzustellen.&lt;br /&gt;
# Neustart: Nachdem das BT-Modul erfolgreich konfiguriert wurde, muss die Verbindung des KEY-Pins zu 3,3V wieder getrennt werden (HC05). Danach startet man das Modul neu.&lt;br /&gt;
# Pairing: Das BT-Modul muss dem Handy oder Tablet (über Android/Einstellungen) bekanntgemacht werden. Diesen Vorgang nennt man Pairing. Wähle auf dem Android-Gerät das Symbol &amp;quot;Einstellungen&amp;quot; (über Android Menü). Nun wähle  &amp;quot;Drahtlos und Netzwerke/Bluetooth-&amp;gt;Bluetooth Einstellungen&amp;quot; und &amp;quot;Finde Gerät(Scannen)&amp;quot;. Wurde der Ardumower in der Liste der gefundenen Geräte angezeigt, wählt man ihn aus und sagt dann -verbinden-. Nach der Eingabe der Sicherheits-PIN (als Vorgabe &amp;quot;1234&amp;quot;), sollte das  Bluetooth-Modul des Arduino mit dem Handy gepaart sein (paired).&lt;br /&gt;
# pfodApp: Jetzt kann die APP pfodApp/ArduRemote gestartet werden und sich mit dem Ardumower verbinden.&lt;br /&gt;
# Nach erfolgreichem Verbinden leuchtet die Diode D8.&lt;br /&gt;
&lt;br /&gt;
=Kommunikation-Protokoll=&lt;br /&gt;
Das Kommunikation-Protokoll für die Verbindung zwischen Roboter und Androis-App (die 'pfodSpecification') ist hier definiert: http://www.forward.com.au/pfod/.&lt;br /&gt;
&lt;br /&gt;
Alle Menüs (Menüpunkte, Schieberegler, Taster) werden innerhalb der Robotersoftware definiert. Die App stellt die kreierten Menüs nur dar und sendet einen Befehl zurück, wenn ein Menüpunkt durch den Benutzer angeklickt wurde.&lt;br /&gt;
&lt;br /&gt;
Beispiel Kommunikation:&lt;br /&gt;
&lt;br /&gt;
 1. App verlangt das Hauptmenü: {.}&lt;br /&gt;
 2. Roboter sendet Hauptmenü zur App: {.title`1000|key1~text1|key2~text2|key3~text3}&lt;br /&gt;
    Die App stellt das Hauptmenü wie folgt dar:&lt;br /&gt;
&lt;br /&gt;
    title&lt;br /&gt;
    [text1]&lt;br /&gt;
    [text2]&lt;br /&gt;
    [text3]&lt;br /&gt;
&lt;br /&gt;
 3. Der Benutzer klickt den Menüpunkt 'text1' an, die App sendetden entsprechenden Befehl {key1} zurück&lt;br /&gt;
&lt;br /&gt;
Man kann die Kommunikation protokollieren und in einer Datei auf dem Handy/Tablet speichern (Ordner 'pfodAppRawData' or 'ArduRemote'). In ArduRemote, muss man noch die 'Android Menütaste' drücken und  'Enable logging' wählen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
  File: Android_menu_button.png | Android Menütaste&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Sensor-Protokollierung=&lt;br /&gt;
[http://wiki.ardumower.de/index.php?title=Sensor_fusion#Sensor_logging Siehe diesen Abschnitt]&lt;br /&gt;
&lt;br /&gt;
=Videos=&lt;br /&gt;
#[http://www.youtube.com/watch?v=StD_BxdYVkA menu demo v0.8.8]&lt;br /&gt;
#[http://www.youtube.com/watch?v=tOm5aNRvX0Q#t=83 menu demo live v0.8.8]&lt;br /&gt;
#[http://www.youtube.com/watch?v=3OjqAjOBvJA&amp;amp;feature=player_embedded#t=92 tutorial video]&lt;/div&gt;</summary>
		<author><name>Deejay</name></author>	</entry>

	<entry>
		<id>https://wiki.ardumower.de/index.php?title=Datei:HC-05.gif&amp;diff=2766</id>
		<title>Datei:HC-05.gif</title>
		<link rel="alternate" type="text/html" href="https://wiki.ardumower.de/index.php?title=Datei:HC-05.gif&amp;diff=2766"/>
				<updated>2015-09-16T16:05:53Z</updated>
		
		<summary type="html">&lt;p&gt;Deejay: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Deejay</name></author>	</entry>

	<entry>
		<id>https://wiki.ardumower.de/index.php?title=Bluetooth_und_App&amp;diff=2765</id>
		<title>Bluetooth und App</title>
		<link rel="alternate" type="text/html" href="https://wiki.ardumower.de/index.php?title=Bluetooth_und_App&amp;diff=2765"/>
				<updated>2015-09-15T17:22:10Z</updated>
		
		<summary type="html">&lt;p&gt;Deejay: /* Die Schritte im Einzelnen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Zusammenfassung=&lt;br /&gt;
Der Ardumower kann drahtlos überwacht und gesteuert werden:&lt;br /&gt;
* über Handy/Tablet (Android App)&lt;br /&gt;
* über USB Bluetooth Dongle (PC serial console)&lt;br /&gt;
&lt;br /&gt;
Auf den Handy/Tablet benötigst du folgende App [https://play.google.com/store/apps/details?id=au.com.forward.pfodApp 'pfodApp']. alternativ kannst du diese App benutzen [https://play.google.com/store/apps/details?id=de.grauonline.arduremote 'ArduRemote'].&lt;br /&gt;
&lt;br /&gt;
Das Handy-Menü enthält:&lt;br /&gt;
* Statusinformationen (Akku-Spannungg, Ladestrom usw.)&lt;br /&gt;
* Einstellungen (Timer usw.)&lt;br /&gt;
* Abgleich (Motor, IMU etc.)&lt;br /&gt;
* Fernsteuerung (Start/Stop, Ein/Aus Mähmotor, Messermodulation usw.)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Ardumower_live_monitoring_configuration_debugging.jpg | Live-Konfiguration, Überwachung und Fehlersuche&lt;br /&gt;
File: Pfodapp_menu.png | Android App Menü&lt;br /&gt;
File: Pfodapp.png | Android App (pfodApp)&lt;br /&gt;
File: Arduremote.png | Android App (ArduRemote)&lt;br /&gt;
File: Bluetooth dongle.jpg | PC-Kommunikation über Bluetooth USB Dongle&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Bluetooth Module=&lt;br /&gt;
Der Roboter benötigt ein Bluetooth-Modul das das Serial Port Profil (SPP) unterstützt. SPP verwendet das Bluetooth Service Discovery Protocol (SDP) und das RFCOMM protocol. Abhängig von der gefoderten Reichweite kann man unterschiedliche Bluetooth-Klassen verwenden:&lt;br /&gt;
&lt;br /&gt;
*Bluetooth class 2 (bis ca. 50m Reichweite), z.B. HC03/04/05/06&lt;br /&gt;
*Bluetooth class 1 (bis ca. 100m Reichweite), z.B. BTM220, erfordert eine Zusatzschaltung&lt;br /&gt;
&lt;br /&gt;
=Bluetooth HC-05=&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Bluetooth_module.jpg | HC-05 Modul&lt;br /&gt;
File: HC-05 schematics.jpg | HC-05 Schaltung&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das Bluetooth-Modul wird mit 3,3V betrieben. Man benötigt deshalb einen Spannungsteiler an der RX-Leitung und einen PullUp-Widerstand an der TX-Leitung so, wie es in der Schaltung zu sehen ist.&lt;br /&gt;
&lt;br /&gt;
Zur Programmierung wird der Key-Pin des BT-Modules mit 3,3V vom Arduino verbunden  und danach die Verbindung wieder getrennt.&lt;br /&gt;
&lt;br /&gt;
Besonderheiten: Je nach Lieferant wird das Modul mit 5 Volt VCC betrieben; Aufschrift &amp;quot;Power 3.6-6V&amp;quot;( JP 8 anstelle von JP 9 setzen). Sofern sich am Pin &amp;quot;EN&amp;quot; ein Microtaster befindet, so muss dieser während der Konfiguration gedrückt sein, da ansonsten das Modul nicht erkannt wird. Key-Pin muss wie beschrieben auf +3,3 Volt gesetzt sein (JP 2).&lt;br /&gt;
&lt;br /&gt;
=Die Schritte im Einzelnen=&lt;br /&gt;
# Konfigurationsmodus: Das Bluetooth-Modul muss für die nächsten Schritte im Konfigurationsmodus sein:&lt;br /&gt;
## für HC05:           Nachdem das Modul an die Betriebsspannung angeschlossen wurde, verbinde den KEY-Pin mit 3,3V&lt;br /&gt;
## für HC06/linvor:    nicht paaren/verbinden (LED muss blinken)&lt;br /&gt;
## für FBT06/MBTV4:    Zuerst muss ein dünner Draht von Pin PIO11 nach VCC (PIN 12)das sind 3.3 Volt gelötet werden.&lt;br /&gt;
# Baudrate: Das Bluetooth-Modul und der Arduino Mega müssen die gleiche Baudrate (19200) verwenden - Die Baudrate des Bluetooth-Modules kann über die serielle Konsole des Ardumowers geändert werden. Verbinde das Ardumower Mega Board mit deinem PC (USB), gehe in die serielle Konsole in der Arduino IDE (Strg+M), und wähle dort Baudrate 19200, dann drücke Taste 'd' um ins Ardumower-Menü zu gelangen um hier die richtige Baudrate für das BT-Modul einzustellen.&lt;br /&gt;
# Neustart: Nachdem das BT-Modul erfolgreich konfiguriert wurde, muss die Verbindung des KEY-Pins zu 3,3V wieder getrennt werden (HC05). Danach startet man das Modul neu.&lt;br /&gt;
# Pairing: Das BT-Modul muss dem Handy oder Tablet (über Android/Einstellungen) bekanntgemacht werden. Diesen Vorgang nennt man Pairing. Wähle auf dem Android-Gerät das Symbol &amp;quot;Einstellungen&amp;quot; (über Android Menü). Nun wähle  &amp;quot;Drahtlos und Netzwerke/Bluetooth-&amp;gt;Bluetooth Einstellungen&amp;quot; und &amp;quot;Finde Gerät(Scannen)&amp;quot;. Wurde der Ardumower in der Liste der gefundenen Geräte angezeigt, wählt man ihn aus und sagt dann -verbinden-. Nach der Eingabe der Sicherheits-PIN (als Vorgabe &amp;quot;1234&amp;quot;), sollte das  Bluetooth-Modul des Arduino mit dem Handy gepaart sein (paired).&lt;br /&gt;
# pfodApp: Jetzt kann die APP pfodApp/ArduRemote gestartet werden und sich mit dem Ardumower verbinden.&lt;br /&gt;
# Nach erfolgreichem Verbinden leuchtet die Diode D8.&lt;br /&gt;
&lt;br /&gt;
=Kommunikation-Protokoll=&lt;br /&gt;
Das Kommunikation-Protokoll für die Verbindung zwischen Roboter und Androis-App (die 'pfodSpecification') ist hier definiert: http://www.forward.com.au/pfod/.&lt;br /&gt;
&lt;br /&gt;
Alle Menüs (Menüpunkte, Schieberegler, Taster) werden innerhalb der Robotersoftware definiert. Die App stellt die kreierten Menüs nur dar und sendet einen Befehl zurück, wenn ein Menüpunkt durch den Benutzer angeklickt wurde.&lt;br /&gt;
&lt;br /&gt;
Beispiel Kommunikation:&lt;br /&gt;
&lt;br /&gt;
 1. App verlangt das Hauptmenü: {.}&lt;br /&gt;
 2. Roboter sendet Hauptmenü zur App: {.title`1000|key1~text1|key2~text2|key3~text3}&lt;br /&gt;
    Die App stellt das Hauptmenü wie folgt dar:&lt;br /&gt;
&lt;br /&gt;
    title&lt;br /&gt;
    [text1]&lt;br /&gt;
    [text2]&lt;br /&gt;
    [text3]&lt;br /&gt;
&lt;br /&gt;
 3. Der Benutzer klickt den Menüpunkt 'text1' an, die App sendetden entsprechenden Befehl {key1} zurück&lt;br /&gt;
&lt;br /&gt;
Man kann die Kommunikation protokollieren und in einer Datei auf dem Handy/Tablet speichern (Ordner 'pfodAppRawData' or 'ArduRemote'). In ArduRemote, muss man noch die 'Android Menütaste' drücken und  'Enable logging' wählen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
  File: Android_menu_button.png | Android Menütaste&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Sensor-Protokollierung=&lt;br /&gt;
[http://wiki.ardumower.de/index.php?title=Sensor_fusion#Sensor_logging Siehe diesen Abschnitt]&lt;br /&gt;
&lt;br /&gt;
=Videos=&lt;br /&gt;
#[http://www.youtube.com/watch?v=StD_BxdYVkA menu demo v0.8.8]&lt;br /&gt;
#[http://www.youtube.com/watch?v=tOm5aNRvX0Q#t=83 menu demo live v0.8.8]&lt;br /&gt;
#[http://www.youtube.com/watch?v=3OjqAjOBvJA&amp;amp;feature=player_embedded#t=92 tutorial video]&lt;/div&gt;</summary>
		<author><name>Deejay</name></author>	</entry>

	<entry>
		<id>https://wiki.ardumower.de/index.php?title=Bluetooth_und_App&amp;diff=2764</id>
		<title>Bluetooth und App</title>
		<link rel="alternate" type="text/html" href="https://wiki.ardumower.de/index.php?title=Bluetooth_und_App&amp;diff=2764"/>
				<updated>2015-09-15T17:17:24Z</updated>
		
		<summary type="html">&lt;p&gt;Deejay: /* Bluetooth HC-05 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Zusammenfassung=&lt;br /&gt;
Der Ardumower kann drahtlos überwacht und gesteuert werden:&lt;br /&gt;
* über Handy/Tablet (Android App)&lt;br /&gt;
* über USB Bluetooth Dongle (PC serial console)&lt;br /&gt;
&lt;br /&gt;
Auf den Handy/Tablet benötigst du folgende App [https://play.google.com/store/apps/details?id=au.com.forward.pfodApp 'pfodApp']. alternativ kannst du diese App benutzen [https://play.google.com/store/apps/details?id=de.grauonline.arduremote 'ArduRemote'].&lt;br /&gt;
&lt;br /&gt;
Das Handy-Menü enthält:&lt;br /&gt;
* Statusinformationen (Akku-Spannungg, Ladestrom usw.)&lt;br /&gt;
* Einstellungen (Timer usw.)&lt;br /&gt;
* Abgleich (Motor, IMU etc.)&lt;br /&gt;
* Fernsteuerung (Start/Stop, Ein/Aus Mähmotor, Messermodulation usw.)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Ardumower_live_monitoring_configuration_debugging.jpg | Live-Konfiguration, Überwachung und Fehlersuche&lt;br /&gt;
File: Pfodapp_menu.png | Android App Menü&lt;br /&gt;
File: Pfodapp.png | Android App (pfodApp)&lt;br /&gt;
File: Arduremote.png | Android App (ArduRemote)&lt;br /&gt;
File: Bluetooth dongle.jpg | PC-Kommunikation über Bluetooth USB Dongle&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Bluetooth Module=&lt;br /&gt;
Der Roboter benötigt ein Bluetooth-Modul das das Serial Port Profil (SPP) unterstützt. SPP verwendet das Bluetooth Service Discovery Protocol (SDP) und das RFCOMM protocol. Abhängig von der gefoderten Reichweite kann man unterschiedliche Bluetooth-Klassen verwenden:&lt;br /&gt;
&lt;br /&gt;
*Bluetooth class 2 (bis ca. 50m Reichweite), z.B. HC03/04/05/06&lt;br /&gt;
*Bluetooth class 1 (bis ca. 100m Reichweite), z.B. BTM220, erfordert eine Zusatzschaltung&lt;br /&gt;
&lt;br /&gt;
=Bluetooth HC-05=&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Bluetooth_module.jpg | HC-05 Modul&lt;br /&gt;
File: HC-05 schematics.jpg | HC-05 Schaltung&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das Bluetooth-Modul wird mit 3,3V betrieben. Man benötigt deshalb einen Spannungsteiler an der RX-Leitung und einen PullUp-Widerstand an der TX-Leitung so, wie es in der Schaltung zu sehen ist.&lt;br /&gt;
&lt;br /&gt;
Zur Programmierung wird der Key-Pin des BT-Modules mit 3,3V vom Arduino verbunden  und danach die Verbindung wieder getrennt.&lt;br /&gt;
&lt;br /&gt;
Besonderheiten: Je nach Lieferant wird das Modul mit 5 Volt VCC betrieben; Aufschrift &amp;quot;Power 3.6-6V&amp;quot;( JP 8 anstelle von JP 9 setzen). Sofern sich am Pin &amp;quot;EN&amp;quot; ein Microtaster befindet, so muss dieser während der Konfiguration gedrückt sein, da ansonsten das Modul nicht erkannt wird. Key-Pin muss wie beschrieben auf +3,3 Volt gesetzt sein (JP 2).&lt;br /&gt;
&lt;br /&gt;
=Die Schritte im Einzelnen=&lt;br /&gt;
# Konfigurationsmodus: Das Bluetooth-Modul muss für die nächsten Schritte im Konfigurationsmodus sein:&lt;br /&gt;
## für HC05:           Nachdem das Modul an die Betriebsspannung angeschlossen wurde, verbinde den KEY-Pin mit 3,3V&lt;br /&gt;
## für HC06/linvor:    nicht paaren/verbinden (LED muss blinken)&lt;br /&gt;
## für FBT06/MBTV4:    Zuerst muss ein dünner Draht von Pin PIO11 nach VCC (PIN 12)das sind 3.3 Volt gelötet werden.&lt;br /&gt;
# Baudrate: Das Bluetooth-Modul und der Arduino Mega müssen die gleiche Baudrate (19200) verwenden - Die Baudrate des Bluetooth-Modules kann über die serielle Konsole des Ardumowers geändert werden. Verbinde das Ardumower Mega Board mit deinem PC (USB), gehe in die serielle Konsole in der Arduino IDE (Strg+M), und wähle dort Baudrate 19200, dann drücke Taste 'd' um ins Ardumower-Menü zu gelangen um hier die richtige Baudrate für das BT-Modul einzustellen.&lt;br /&gt;
# Neustart: Nachdem das BT-Modul erfolgreich konfiguriert wurde, muss die Verbindung des KEY-Pins zu 3,3V wieder getrennt werden (HC05). Danach startet man das Modul neu.&lt;br /&gt;
# Pairing: Das BT-Modul muss dem Handy oder Tablet (über Android/Einstellungen) bekanntgemacht werden. Diesen Vorgang nennt man Pairing. Wähle auf dem Android-Gerät das Symbol &amp;quot;Einstellungen&amp;quot; (über Android Menü). Nun wähle  &amp;quot;Drahtlos und Netzwerke/Bluetooth-&amp;gt;Bluetooth Einstellungen&amp;quot; und &amp;quot;Finde Gerät(Scannen)&amp;quot;. Wurde der Ardumower in der Liste der gefundenen Geräte angezeigt, wählt man ihn aus und sagt dann -verbinden-. Nach der Eingabe der Sicherheits-PIN (als Vorgabe &amp;quot;1234&amp;quot;), sollte das  Bluetooth-Modul des Arduino mit dem Handy gepaart sein (paired).&lt;br /&gt;
# pfodApp: Jetzt kann die APP pfodApp/ArduRemote gestartet werden und sich mit dem Ardumower verbinden.&lt;br /&gt;
&lt;br /&gt;
=Kommunikation-Protokoll=&lt;br /&gt;
Das Kommunikation-Protokoll für die Verbindung zwischen Roboter und Androis-App (die 'pfodSpecification') ist hier definiert: http://www.forward.com.au/pfod/.&lt;br /&gt;
&lt;br /&gt;
Alle Menüs (Menüpunkte, Schieberegler, Taster) werden innerhalb der Robotersoftware definiert. Die App stellt die kreierten Menüs nur dar und sendet einen Befehl zurück, wenn ein Menüpunkt durch den Benutzer angeklickt wurde.&lt;br /&gt;
&lt;br /&gt;
Beispiel Kommunikation:&lt;br /&gt;
&lt;br /&gt;
 1. App verlangt das Hauptmenü: {.}&lt;br /&gt;
 2. Roboter sendet Hauptmenü zur App: {.title`1000|key1~text1|key2~text2|key3~text3}&lt;br /&gt;
    Die App stellt das Hauptmenü wie folgt dar:&lt;br /&gt;
&lt;br /&gt;
    title&lt;br /&gt;
    [text1]&lt;br /&gt;
    [text2]&lt;br /&gt;
    [text3]&lt;br /&gt;
&lt;br /&gt;
 3. Der Benutzer klickt den Menüpunkt 'text1' an, die App sendetden entsprechenden Befehl {key1} zurück&lt;br /&gt;
&lt;br /&gt;
Man kann die Kommunikation protokollieren und in einer Datei auf dem Handy/Tablet speichern (Ordner 'pfodAppRawData' or 'ArduRemote'). In ArduRemote, muss man noch die 'Android Menütaste' drücken und  'Enable logging' wählen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
  File: Android_menu_button.png | Android Menütaste&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Sensor-Protokollierung=&lt;br /&gt;
[http://wiki.ardumower.de/index.php?title=Sensor_fusion#Sensor_logging Siehe diesen Abschnitt]&lt;br /&gt;
&lt;br /&gt;
=Videos=&lt;br /&gt;
#[http://www.youtube.com/watch?v=StD_BxdYVkA menu demo v0.8.8]&lt;br /&gt;
#[http://www.youtube.com/watch?v=tOm5aNRvX0Q#t=83 menu demo live v0.8.8]&lt;br /&gt;
#[http://www.youtube.com/watch?v=3OjqAjOBvJA&amp;amp;feature=player_embedded#t=92 tutorial video]&lt;/div&gt;</summary>
		<author><name>Deejay</name></author>	</entry>

	<entry>
		<id>https://wiki.ardumower.de/index.php?title=Perimeter-Schleife&amp;diff=2735</id>
		<title>Perimeter-Schleife</title>
		<link rel="alternate" type="text/html" href="https://wiki.ardumower.de/index.php?title=Perimeter-Schleife&amp;diff=2735"/>
				<updated>2015-08-28T09:58:18Z</updated>
		
		<summary type="html">&lt;p&gt;Deejay: /* Sender Zustandsanzeige */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Zusammenfassung=&lt;br /&gt;
Eine Begrenzungsschleife (oder Perimeterdraht) ist eine Art 'elektronischer Zaun': er veranlaßt den ArduMower zum Stoppen / Umkehren sobald die Grenze erreicht ist. Nicht in jeder Umgebung ist eine Begrenzungsschleife notwendig - Rasensensoren könnten eine Alternative sein.&lt;br /&gt;
&lt;br /&gt;
Das Prinzip: durch den im Garten verlegten Schleifendraht wird ein Signal gesendet, das der Ardumower ausgewertet. Gebraucht werden ein Sender zur Erzeugung und Übergabe des Signals an die Schleife und ein Empfänger zur Signalauswertung im ArduMower.&lt;br /&gt;
&lt;br /&gt;
Und so wird das Signal empfangen: eine (oder zwei) Empfangsspulen liefern ein Signal, dessen Stärke je nach Abstand zwischen Schleifendraht und Empfangsspule(n) variiert. Interessanterweise wechselt das Signal in dem Moment seine Polarität, wo der ArduMower (genauer: die Empfänger-Spule) den Schleifendraht überfährt. Es gibt zwei prinzipielle Möglichkeiten, den Begrenzungsdraht zu orten. Wir haben beide Methoden implementiert (Perimeter V1 und V2) wie nachfolgend beschrieben.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Ardumower_perimeter.jpg | Perimeterdraht&lt;br /&gt;
File: Ardumower_perimeter_components.jpg | Komponenten&lt;br /&gt;
File: Perimeter_signal_strength.jpg | Signalstärke&lt;br /&gt;
File: Perimeter_gradient.png | Verlauf der Signalstärke&lt;br /&gt;
File: Ardumower_perimeter_magneticfield.png | Perimeter-Magnetfeld&lt;br /&gt;
File: Perimeter_excluding_objects.png | Objekte ausschließen&lt;br /&gt;
File: Perimeter_divide.png | Flächen aufteilen&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://hyperphysics.phy-astr.gsu.edu/hbase/magnetic/magcur.html Magnetfeld Berechnungstool]&lt;br /&gt;
&lt;br /&gt;
Videos:&lt;br /&gt;
[http://youtu.be/r4ZMgasMkH0 Magnetfeld Demovideo]&lt;br /&gt;
&lt;br /&gt;
=Begrenzungsschleife V2 (erforderlich für aktuellen ArduMower Code)=&lt;br /&gt;
&lt;br /&gt;
[[Image:Yt-brand-standard-logo-95x40.png|thumb|180px|https://www.youtube.com/watch?v=NIer_kITelc&amp;amp;feature=youtu.be]]&lt;br /&gt;
&lt;br /&gt;
Dies ist die neue Version von Sender und Empfänger für die Begrenzungsschleife (erhältlich über den [https://www.marotronics.de/index.php?k=7 shop] [[File: shopping.png|link=https://www.marotronics.de/index.php?k=7]]).&lt;br /&gt;
&lt;br /&gt;
Beim Überfahren des Schleifendrahtes passiert nun etwas Interessantes: die Polarität der Signalspannung wechselt von negativ auf positiv bzw. umgekehrt - je nachdem, ob man von innen oder außen kommt. Dadurch werden sowohl das Überfahren selbst als auch der Status (Aufenthalt innerhalb oder außerhalb der Schleife) eindeutig erkennbar. Wie bei der V1 nutzen wir zur Signalverstärkung wieder den Motortreiber für das Ausgangssignal und einen Operationsverstärker für das Eingangssignal von der Empfangsspule. Der Sender übergibt eine digitale Signalfolge (auch als 'pseudo-noise' bezeichnet) an die Schleife, die vom Empfänger über einen software-basierten digitalen [http://en.wikipedia.org/wiki/Matched_filter Matched-Filter] ausgewertet wird. Der Filter liefert als Ergebnis einen Peak: positiv - ArduMower innerhalb oder negativ - ArduMower außerhalb der Begrenzungsschleife.&lt;br /&gt;
&lt;br /&gt;
Prinzipablauf:&lt;br /&gt;
  Senderseite&lt;br /&gt;
# Erzeugen des Ausgangssignals durch den Arduino Nano&lt;br /&gt;
# Verstärkung des Ausgangssignals durch den Motortreiber (MC33926), Schleifendrahtenden anstatt eines Motors an den Ausgang anschließen&lt;br /&gt;
&lt;br /&gt;
  ArduMower&lt;br /&gt;
# Eingangssignal per Empfangsspule aufnehmen&lt;br /&gt;
# Eingangssignal per Operationsverstärker (z.B. LM386) verstärken&lt;br /&gt;
# ADC sampling durch Arduino Mega&lt;br /&gt;
# Signalfilterung and Analyse durch ein digitales Filter (software-basierter Matched-Filter-Algorithmus)&lt;br /&gt;
# Auswertung des matched filter Ergebnisses (zur Feststellung des Aufenthaltbereiches inner- / außerhalb der Schleife, Schleifenabfahren usw.)&lt;br /&gt;
&lt;br /&gt;
Folgende Bilder erklären den Wechsel der Signalpolarität innerhalb und außerhalb der Schleife. Sie zeigen auch die Richtung der magnetischen Flusslinien, die vom Begrenzungsdraht ausgehen und wie sie die Spule innerhalb und außerhalb der Begrenzungsschleife treffen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Ardumower_perimeter2.jpg| Innen/außen-Erkennung über den Polaritätswechsel&lt;br /&gt;
File: Fluxdirections.png| Flussrichtungen&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Signal ==&lt;br /&gt;
Der Schlüssel zu einem guten Empfang des Perimetersignals überall auf dem Rasen ist die Optimierung des Signal-Rausch-Abstandes (SNR=signal/noise ratio). Um das SNR zu maximieren, gibt es zwei Ansätze:&lt;br /&gt;
# Signalstärke hochfahren (elektr. Leistung) oder&lt;br /&gt;
# Erhöhung der Signallänge&lt;br /&gt;
&lt;br /&gt;
Wir nutzen eine Kombination beider Ansätze: der Sender wiederholt ständig einen digitalen Code ('pseudonoise4_pw') mit 9615 Hz :&lt;br /&gt;
&lt;br /&gt;
 1,1,-1,-1,1,-1,1,-1,-1,1,-1,1,1,-1,-1,1,-1,-1,1,-1,-1,1,1,-1&lt;br /&gt;
&lt;br /&gt;
'1' bedeutet einen positiven Signalimpuls, '-1' einen negativen. Der kürzeste erzeugte Signalwechsel ist '-1,1', das entspräche dem höchsten Ton (wenn man es hörbar darstellen würde) von 4808 Hz. Das andere Extrem wäre der längste erzeugte Signalwechsel mit '1,1,-1,-1', bei einer Frequenz von 2404 Hz.&lt;br /&gt;
&lt;br /&gt;
Die Spule erkennt nur diese Signalwechsel des Sendersignals. So - also ohne den Kondensator in Serienschaltung zur Spule - zeigt sich das (differentielle) Empfangssignal wie folgt:&lt;br /&gt;
&lt;br /&gt;
 1,0,-1, 0,1,-1,1,-1, 0,1,-1,1,0,-1, 0,1,-1, 0,1,-1, 0,1,0,-1&lt;br /&gt;
&lt;br /&gt;
Verwendet man jedoch den Kondensator in Reihe zur Spule, sind gesendetes und empfangenes (nicht-differentielles) Signal vom Prinzipverlauf wieder identisch.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Perimeter_signal_steps.png | Perimetersignal an Sender und Empfangsspule&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Arduino ADC wertet das Empfangssignal mit einer Abtastrate von 9615 Hz aus.&lt;br /&gt;
&lt;br /&gt;
== Filter ==&lt;br /&gt;
Die gewählte Signalform weist eine spezielle Charakteristik auf: &lt;br /&gt;
&lt;br /&gt;
Weil es wie ein Zufallssignal aussieht, stimmt es nicht in Teilen mit sich selbst überein, sondern erst als komplette Sequenz ([http://en.wikipedia.org/wiki/Matched_filter Übereinstimmung]). Aufgrund dieser Charakteristik können die Startpunkte der Signalsequenz durch ein [http://en.wikipedia.org/wiki/Matched_filter matched filter] ('Korrelation' mit dem gesuchten Signalmuster) ermittelt werden: sie erscheinen als Nadelimpuls im Filterergebnis - und zwar auch bei einem stark verrauschten Signal (z.B. durch Störimpulse von Motoren etc.). &lt;br /&gt;
Die Polarität der Spitze (positiv oder negativ) gibt an, ob sich die Spule inner- oder außerhalb der Begrenzungsschleife befindet.&lt;br /&gt;
&lt;br /&gt;
Du kannst sehen, wie das funktioniert: für ein tiefergehendes Verständnis des Perimetersignals und des Filters schau Dir folgende Simulation (in englisch) an: &lt;br /&gt;
[http://www.grauonline.de/alexwww/ardumower/filter/filter.html Matched filter simulation]&lt;br /&gt;
&lt;br /&gt;
# Wähle eine Perimetersignalform: setze den Schieberegler (rechts oben 'example signals') auf ''pseudonoise4_pw'' (Wert 23).&lt;br /&gt;
# Hebe den Wert des Störsignal ein wenig an: setze den Schieberegler ('noise') auf den Wert 2.&lt;br /&gt;
# Der Plot 'Matched filter' (links unten) zeigt, dass das wiederholte Signal 3 mal entdeckt wurde.&lt;br /&gt;
# Nun simuliere die Bewegung der Spule aus der Perimeterschleife nach außen:  Klicke auf 'Invert' und setze damit die Verstärkung auf '-1'. Der Filter liefert 3 negative Spitzen.&lt;br /&gt;
&lt;br /&gt;
Mehr dazu unter: [https://www.youtube.com/watch?v=NIer_kITelc Video über matched filter]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
  File: Matched_filter_principle.png| Matched Filter&lt;br /&gt;
  File: Perimeter_signal_good_bad.png|Beispiele für gutes / schlechtes Signal &lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Sender ==&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Schleifensender_Ardumower_V2.JPG | Sender Schaltplan&lt;br /&gt;
File: Ardumower_sender_pcb.jpg| Ardumower Sender PCB&lt;br /&gt;
File: Perimeter2_sender_open.jpg| Sendersignal (6.5V, ohne Perimeterschleife)&lt;br /&gt;
File: Perimeter2_sender_closed.jpg| Sendersignal (6.5V, 120m Perimeterschleife 7 Ohm)&lt;br /&gt;
File: Sender_v2_signal_sender_5v_4ohm.png| Sendersignal (6.5V, 4 Ohm Widerstand + 2m Perimeterschleife)&lt;br /&gt;
File: perimeter_wiring_motor_driver.png | Varianten der Motortreiberschaltung&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wir benutzen einen Arduino Nano zur Erzeugung und einen Mototreiber als Ausgangsverstärker des Signals. Der Motortreiber wird mit 3,2 kHz betrieben (2 Impulsbreiten 4808 und 2404 Hz). Bei ausreichend langen Schleifendrähten benötigt der Generator typischerweise 10W (6.5V, 1.7A). Unser Motortreiber verfügt über eine integrierte Strombegrenzung und eine Übertemperaturabschaltung (z.B. MC33926). Die Schleifenlänge kann im Bereich 20 - 450m betragen und muss mindestens 5 Ohm Widerstand aufweisen.&lt;br /&gt;
&lt;br /&gt;
Sender Pin-Belegung:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;background-color: lightgrey; border: solid thin grey;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 motor driver M1OUT1     o---------- perimeter loop (20-450 meters, &amp;gt; 5 Ohm) --+&lt;br /&gt;
                                                                               |&lt;br /&gt;
 motor driver M1OUT2     o---------- perimeter loop ---------------------------+&lt;br /&gt;
 motor driver Vin        o-- 6.5V&lt;br /&gt;
 motor driver M1IN1      o-- Arduino Nano pinIN1&lt;br /&gt;
 motor driver M1IN2      o-- Arduino Nano pinIN2&lt;br /&gt;
 motor driver M1PWM_nD2  o-- Arduino Nano pinPWM&lt;br /&gt;
 motor driver M1nSF      o-- Arduino Nano pinFault&lt;br /&gt;
 motor driver M1FB       o-- Arduino Nano pinFeedback&lt;br /&gt;
 motor driver EN         o-- Arduino Nano pinEnable&lt;br /&gt;
 motor driver VDD        o-- Arduino +5V&lt;br /&gt;
 motor driver M1D1       o-- GND (via Jumper)&lt;br /&gt;
 motor driver SLEW       o-- VDD (via Jumper)&lt;br /&gt;
 &lt;br /&gt;
               |---------o-- GND&lt;br /&gt;
 Potentiometer 100k -----o-- Arduino Nano pinPot&lt;br /&gt;
               |---------o-- Arduino +5V&lt;br /&gt;
 &lt;br /&gt;
 ACS712-05 OUT ------o-- Arduino Nano pinChargeCurrent    &lt;br /&gt;
 ACS712-05 A   ------o-- charging pin (+)&lt;br /&gt;
 ACS712-05 B   ------o-- battery charger +24V&lt;br /&gt;
 battery charger GND-o-- charging pin (-)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Beispiel für den Senderaufbau mit einer Lochrasterplatine:  [http://www.braunschweiger.org/content/download/SenderR212.pdf] &lt;br /&gt;
[http://www.braunschweiger.org/content/images/SenderR212_Front.jpg] [http://www.braunschweiger.org/content/images/SenderR212_Back.jpg]'''&lt;br /&gt;
&lt;br /&gt;
=== Sender Perimeterschleife und Rasengröße ===&lt;br /&gt;
Bei einer Betriebsspannung von 6.5V sollte die Perimeterschleife nicht über 450 m lang sein. (Für den 'Wohnzimmertest' tut es auch ein 100 Ohm Widerstand in Reihe mit 5m Schaltdraht.) &lt;br /&gt;
&lt;br /&gt;
Setzen wir mal eine kreisrunde Rasenfläche voraus erhalten wir für 450m Schleifenlänge (= Kreisumfang) einen Radius von 70m:&lt;br /&gt;
 radius = Schleifenlänge / (2*PI) = 450m / (2*PI) = 70 meter&lt;br /&gt;
&lt;br /&gt;
Wäre die Signalqualität nicht durch den Radius begrenzt, entspräche der eingegrenzte Rasen einer Fläche von 15000m2:&lt;br /&gt;
 Fläche = PI * (radius*radius) = PI * (70m * 70m) = 15000 m2&lt;br /&gt;
&lt;br /&gt;
Da jedoch der maximale Radius für ausreichende Signalqualität bei ca. 18m liegt, ergibt sich die maximale Rasenfläche (Annahme immer noch: Kreisfläche!) zu 1000m2: Fläche = PI * (radius*radius) = PI * (18m * 18m) = 1000 m2&lt;br /&gt;
&lt;br /&gt;
=== Einstellung der Senderstromstärke ===&lt;br /&gt;
Zur Einstellung der Sendeleistung (Spannung*Strom) gibt es verschiedene Möglichkeiten:&lt;br /&gt;
&lt;br /&gt;
*Spannung am DC/DC-Wandler: die Versorgungsspannung des Motortreibers kann über das Poti des Wandlers zwischen 6.5 bis 12V eingestellt werden. Das ist der empfohlene Weg. Beachte: der MC33926 Motortreibermotor benötigt eine Mindestspannung (Vin) von 5V. Bei zu geringer Spannung regelt der Motortreiber sporadisch ab und die Arduino-LED zur Anzeige von Unterspannung fängt an zu blinken.&lt;br /&gt;
&lt;br /&gt;
*Normale Amplitude: statt die Perimeterschleife zwischen +Vin und -Vin (doppelte Amplitude ist Standardwert) umzuschalten, kann der Motortreiber auch nur zwischen +Vin und GND (einfache Amplitude). So zieht die Schleife weniger Strom. Zur Einstellung der einfachen Amplitude muß die entsprechende Codezeile in 'sender.ino' auskommentiert werden:&lt;br /&gt;
&lt;br /&gt;
  // #define USE_DOUBLE_AMPLTIUDE    1   &lt;br /&gt;
&lt;br /&gt;
*Hochlastwiderstand: Bei einem Schleifenwiderstand kleiner 5 Ohm kann der Strom nicht weiter reduziert werden, indem man die Spannung runterdreht: unterhalb von ca. 6V arbeitet der Arduino nicht mehr richtig. Dann hilft nur noch ein zur Schleife in Reihe geschalteter Hochlastwiderstand (R: z.B. 5 Ohm, 10W). &lt;br /&gt;
&lt;br /&gt;
 @6V (Vin): 5 ohm Hochlastwiderstand =&amp;gt; I=U/R=6V/5Ohm=1.2A   (P=U*I=6V*1.2A=7.2W)&lt;br /&gt;
&lt;br /&gt;
Daher also die mindestens 10W Belastbarkeit des Widerstandes! In diesem Falle auch die 'einfache Amplitude' im Sendercode aktivieren (doppelte Amplitude nicht benutzen!).&lt;br /&gt;
&lt;br /&gt;
=== Senderstromüberwachung (in Entwicklung) ===&lt;br /&gt;
Idee: das Poti VR1 wird durch ein digitales Poti (z.B. MCP4151-5K) ersetzt. So kann die Vin des Motortreibers (und damit auch der Strom) über den Arduino eingestellt werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Lm2596_circuit.jpg | LM2596 Modulschaltplan&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
MCP4151-5K version:&lt;br /&gt;
&lt;br /&gt;
 Vout = 1.23V*(1+VR1/R1)&lt;br /&gt;
&lt;br /&gt;
 Using VR1=5K...&lt;br /&gt;
 Vstart (on reset):  Vout=1.23V*(1+2.5K/0.33K)=10v&lt;br /&gt;
 Vmax:  Vout=1.23V*(1+5K/0.33K)=19v&lt;br /&gt;
&lt;br /&gt;
=== Automatische Schleifensignalabschaltung ===&lt;br /&gt;
Während sich der ArduMower in der Ladestation aufhält, wird das Schleifensignal nicht benötigt und wir können Energie sparen. Zum Erkennen des Ladestatus wird im &amp;quot;Sender_V2&amp;quot; ein Stromsensor (INA169) zwischen Ladegerät und Ladeanschlüsse geschaltet.&lt;br /&gt;
&lt;br /&gt;
Zum aktivieren dieser Funktion ist &amp;quot;#define USE_CHG_CURRENT&amp;quot; auf 1 zu setzen&lt;br /&gt;
&lt;br /&gt;
    #define USE_CHG_CURRENT       1     // use charging current sensor for robot detection? (set to '0' if not connected!)&lt;br /&gt;
&lt;br /&gt;
Desweiteren muss der Stromsensor am analogen Eingang A2 kalibriert werden:&lt;br /&gt;
&lt;br /&gt;
* Der Mover befindet sich nicht in der Ladestation/ Ladestrom = 0 Ampere&lt;br /&gt;
* Den seriellen Monitor aufrufen&lt;br /&gt;
* In der Befehlszeile 1 eingeben und Button &amp;quot;Senden&amp;quot; drücken&lt;br /&gt;
* Mit diesem Befehl wird die Spannung am analogen Eingang A2 gemessen und im EEPROM als Referenzwert &amp;quot;chargeADCZero&amp;quot; gespeichert&lt;br /&gt;
* Am Monitor erscheint folgender Text:&lt;br /&gt;
&lt;br /&gt;
    received key=1&lt;br /&gt;
    calibrateChargeCurrentSensor (note: robot must be outside charging station!)&lt;br /&gt;
    calibration done&lt;br /&gt;
    chargeADCZero=755&lt;br /&gt;
&lt;br /&gt;
Die Kalibrierung ist damit erfolgt. Bei den weiteren Messungen wird im seriellen Monitor unter &amp;quot;chgCurrentADC&amp;quot; der Wandlerwert des analogen Eingangs A2 angezeigt:&lt;br /&gt;
&lt;br /&gt;
    time=4	chgCurrent=0.000	chgCurrentADC=755.55	 isCharging=0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Wir simmulieren einen Ladevorgang durch Belastung der Ladebuchse durch einen 22 Ohm Widerstand. Es fließt ein Ladestrom von ca. 0,8 Ampere. Damit ändert sich der &amp;quot;chgCurrentADC&amp;quot; auf 712.63. &amp;quot;chgCurrent&amp;quot; zeigt den Ladestrom in Ampere&lt;br /&gt;
&lt;br /&gt;
    time=8      chgCurrent= 0.801       chgCurrent  ADC=712.63	  isCharging=1	&lt;br /&gt;
&lt;br /&gt;
Das Flag &amp;quot;ischarging&amp;quot; wird auf &amp;quot;1&amp;quot; gesetzt und die Perimeterschleife wird für die Dauer der Ladung abgeschaltet.&lt;br /&gt;
&lt;br /&gt;
Dies funktioniert neben dem im Sender_V2 verbauten Stromsensor &amp;quot;INA169&amp;quot; auch mit einem Stromsensor ACS 712-5 oder ACS 712-20. Bei Verwendung der ACS muss jedoch die Berechnung des Ladestromes &amp;quot;chgCurrent&amp;quot; angepasst werden.&lt;br /&gt;
&lt;br /&gt;
=== Sendersoftware ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;NOTE&amp;lt;/b&amp;gt;: Wenn Du Dich nie zuvor mit Arduino beschäftigt hast, lies zuerst unsere Einführung &amp;lt;b&amp;gt;[http://wiki.ardumower.de/index.php?title=Arduino_first_steps 'erste Schritte mit dem Arduino']&amp;lt;/b&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[File:warning.png]] Wichtig: Vergewissere Dich, dass die Pin-Konfiguration des Arduino im benutzten Code (sender.ino) mit Deinem Senderaufbau übereinstimmt!&lt;br /&gt;
&lt;br /&gt;
Im Code (sender.ino) die passende Option für die automatische Schleifenabschaltung (bei Verwendung des oben beschriebenen Stromsensors Option 1) wählen:&lt;br /&gt;
&lt;br /&gt;
* Define if you have connected a charging current sensor for automatic sender standby:   #define USE_CHG_CURRENT 1   (or 0)&lt;br /&gt;
&lt;br /&gt;
=== Sender Zustandsanzeige ===&lt;br /&gt;
Die LED auf dem Arduino Nano signalisiert den Senderstatus:&lt;br /&gt;
* An: Perimeterschleife ist angeschlossen und arbeitet&lt;br /&gt;
* Aus: Perimeterschleife ist geöffnet (oder durch Defekt unterbrochen) und arbeitet nicht&lt;br /&gt;
* Blinkt: der ArduMower wird geladen und die Perimeterschleife ist zur Energieeinsparung durch die Software deaktiviert&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File:Perimeter_sender_console.png | Ausgabe 'sender.ino' über serielle Konsole&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bei der Platine &amp;quot;Sender V2&amp;quot; ist dieses Signal am Ausgang &amp;quot;D13&amp;quot; verfügbar und auf die LED &amp;quot;Mover_in_Ladestation&amp;quot; geschaltet.&lt;br /&gt;
&lt;br /&gt;
=== Sendertest per PC-Soundkarte ===&lt;br /&gt;
Du kannst den Sender mit Deine Soundkarte und einer Spule testen:&lt;br /&gt;
&lt;br /&gt;
# Verbinde eine Spule (100 mH) mit dem Mikrofon-/Line-Eingang (max 1V) Deiner Soundkarte &lt;br /&gt;
# Starte das [http://www.grauonline.de/alexwww/ardumower/oscilloscope/oscilloscope.html Web-Oszilloskop], und wähle Filter 'Matched', Frequenz '9615' Hz, Visualization Math 'MinMax'&lt;br /&gt;
# Das Ausgangssignal sollte den Abstand zur Perimeterschleife wiederspiegeln - die Polarität (negativ/positiv) zeigt den Aufenthaltsbereich (innerhalb/außerhalb) der Schleife.&lt;br /&gt;
&lt;br /&gt;
Versuche in beiden Fällen (innen/außen), die Spule so dicht wie möglich an der Schleife zu positionieren, um ein auswertbares Signal zu empfangen (zur Erinnerung: wir arbeiten hier ohne die Signalverstärkung durch den Operationsverstärker, da der Soundkarteneingang nur mit max 1V beaufschlagt werden darf).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File:Ardumower_web_oscilloscope_time_signal_received.jpg | Effektivwert des empfangenen Zeit-Signals (Filter Off, Time scale: x5)&lt;br /&gt;
File:Ardumower_web_oscilloscope_time_signal.jpg | Ideales Zeitsignal erzeugt vom Sender (Filter Off, Time scale: x5)&lt;br /&gt;
File:Ardumower_web_oscilloscope.jpg  | Matched Filter Signal (Frequency: 9615 Hz, Math: MinMax)&lt;br /&gt;
File:Perimeter_signal_good_bad.png | Beispiel für gutes / schlechtes Signal&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://www.youtube.com/watch?v=vg5Xg0__66A Video zur Erklärung aller Schritte]&lt;br /&gt;
&lt;br /&gt;
== Empfänger ==&lt;br /&gt;
&lt;br /&gt;
Zum Signalempfang verwenden wir eine Spule (100 mH or 150 mH, nur für die älteren Softwareversionen wird ein Kondensator 4.7nF mit der Spule in Reihe geschaltet) in aufrechter Position, in der Mitte am vorderen Rand des ArduMower. Sie ist zur Verstärkung des empfangenen Signals mit dem Eigang eines LM386 Operationsverstärkers verbunden. Auf dem LM386 Modul wird der Kondensator C3 überbrückt, damit der Verstärker ein Signal zwischen 0..5V statt im Standardbereich -5V..+5V) liefert. Der Ausgang des LM386 sollte mit dem Arduino Analog-Pin ('pinPerimeterLeft') verbunden werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt; &lt;br /&gt;
 File: Perimeter_v2_receiver_circuit.png | Empfängerschaltkreis und überbrückter Kondensator C3&lt;br /&gt;
 File: Ardumower_chassis_components.png | Position der Perimeterspule&lt;br /&gt;
 File: Ardumower_coil_position.jpg | Eine zentrierte, aufrecht montierte Spule &lt;br /&gt;
 File: Ardumower_lm386_circuit.png | LM386 Modul Schaltplan&lt;br /&gt;
 File: Tire_coil_distance.jpg | Abstand Spule-Rad: Einfluß auf den Wendekreis (Kurvenwinkel)&lt;br /&gt;
 File: Coil_motor_layout.png | Zwei Spulen (experimentell), Abstand Spule-Spule Hinterradantrieb 12.5cm, Frontantrieb 19cm&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Empfängerschaltplan:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;background-color: lightgrey; border: solid thin grey;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
                                      LM386 IN  o------- capacitor 4.7nF ----------- coil 100 mH  (or 150 mH)&lt;br /&gt;
 Arduino pinPerimeterLeft   o------o  LM386 OUT&lt;br /&gt;
                                      LM386 GND o----------------------------------- coil&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Achtung''': Die Spule muss direkt an den Verstärkermodul angeschlossen werden. So wird die Störfestigkeit des schwachen Spulensignals gegenüber Einflüssen anderer Komponenten (Motore, DC-DC-Wandler) verbessert. &lt;br /&gt;
&lt;br /&gt;
'''Differentielles Signal''': Die aktuelle Software erfordert das Weglassen des Kondensators 4.7nF in Reihe mit der Spule. &lt;br /&gt;
&lt;br /&gt;
'''Nicht-differentielles Signal''': Mithilfe des Kondensators (4.7 nF) wird das Sendersignal wieder rekonstruiert (s. Abschnitt Signal), der Empfängeschaltkreis ist ein Schwingkreis (C und L und Perimeterschleife fungiert als Antenne) und alle Parameter (C, L, Schleifendrahtlänge) müssen übereinstimmen. Weil dies die Abstimmung schwierig macht, empfehlen wir das nicht-differentielle Signal nicht!&lt;br /&gt;
&lt;br /&gt;
=== Abstand Spule/Verstärker zu Motoren ===&lt;br /&gt;
Achte auf die Einhaltung aller Mindestabstände zwischen den folgenden Komponenten:&lt;br /&gt;
 * Spule zu Radmotor: &amp;gt; 15cm&lt;br /&gt;
 * Spule zu Mähmotor: &amp;gt; 10cm &lt;br /&gt;
 * Spule zu DC-DC Wandler: &amp;gt; 10cm&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
 File: Dcdc_noise.jpg | Achtung: Halte Spule/Vorverstärker von den DC-DC-Wandlern und Motoren fern!!!&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Signalmessungen ===&lt;br /&gt;
Sender / Spule / LM386 Verstärker Ausgangssignale sollten etwa so aussehen: (witere Details über das Signal s. Abschnitt Signal)&lt;br /&gt;
&amp;lt;gallery&amp;gt; &lt;br /&gt;
 File: Perimeter_signal_steps.png | Perimetersignal an Sender, Empfangsspule und LM386 (Theorie)&lt;br /&gt;
 File: coil_signal_without_capacitor.png | differentielles Signal / Spulensignal ohne Kondensator (5V sender, 5 Ohm Schleife - blau: Perimeter, gelb: Spule, grau: LM386 Verstärkerausgang)&lt;br /&gt;
 File: Lm_output_dc_noise.jpg | LM386 Ausgang mit DC Störungen (differentielles Signal / Spule ohne Kondensator)&lt;br /&gt;
 File: Perimeter2_receiver_coil.jpg | LM386 Ausgang (nicht-differentielles Signal / Spule mit Kondensator, 12V Sender, 120m Schleife)&lt;br /&gt;
 File: coil_signal_with_capacitor.png | nicht-differentielles Signal / Spulensignalmit Kondensator (5V Sender, 5 Ohm Schleife - grau: Perimeter, gelb: Spule, blau: LM386 Verstärkerausgang)&lt;br /&gt;
 File: Lm_output_motor_noise.jpg | LM386 Ausgang mit Störungen durch Motoren (differentielles Signal / Spule ohne Kondensator)&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Signal und Rauschmessungen ===&lt;br /&gt;
Einige Spulenmessungen ohne Verstärker aber mit Störungen (Motoren, DC/DC-Wandler etc.): &lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
 File: Coil_60k_parallel.jpg | Spule und 60 kOhm Parallelwiderstand ohne Störungen (Spulenhintergrund-rauschen Vpp=7 mV)&lt;br /&gt;
 File: Coil_dc_converter_noise.jpg | Spule und 60 kOhm Parallelwiderstand mit Störungen durch DC/DC-Wandler (DC/DC-Rauschen Vpp=18 mV)&lt;br /&gt;
 File: Coil_motor_noise.jpg | Spule und 60 kOhm Parallelwiderstand mit Störungen durch Motoren&lt;br /&gt;
 File: Perimeter2_receiver_coil_pwm.jpg | Spulensignal mit seriellem 4.7nF Kondensator, PWM-Perimetersignal (nicht empfohlen) ohne Störungen&lt;br /&gt;
 File: Fft_signal.png | FFT Signal&lt;br /&gt;
 File: Fft_motors.png | FFT Motor-Störungen&lt;br /&gt;
 File: Fft_dcdc.png | FFT DC/DC-Störungen&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ADC-Kalibrierung am Empfänger ===&lt;br /&gt;
[[File:warning.png]] Die ADC-Kalibrierung (bei ausgeschaltetem Sender!) sorgt für eine korrekte Erkennung der Nulllinie (Stille), sodass das empfangene Signal später symmetrisch zur Nulllinie angezeigt wird.&lt;br /&gt;
# Der Perimetersender und die Motoren des ArduMower müssen während der Kalibrierung ausgeschaltet sein!&lt;br /&gt;
# Wenn eine Störung durch einen anderen Sender nicht zu vermeiden ist, muß während der Kalibrierung die Spule entfernt und der Eingang es LM386 mit GND verbunden werden.&lt;br /&gt;
# Führe die ADC-Kalibrierung einmal aus (&amp;quot;pfodApp-&amp;gt;ADC Calibration&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Nach der korrekt durchgeführten Kalibrierung sollte das Signal per pfodApp Plot ('sig') bei ausgeschaltetem Perimetersender ungefähr als Null angezeigt werden. Nach Einschalten des Perimetersenders sollte das Signal etwa diesselbe positive wie negative Maximalamplitude ('Symmetie zur Nulllinie') aufweisen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
 File: perimeter_v2_sig_symmetric.jpg | symmetrisches Signal bei eingeschaltetem Sender (nach ADC-Kalibrierung)&lt;br /&gt;
 File: perimeter_v2_sender_off.jpg | Nullsignal bei ausgeschaltetem Sender (nach ADC-Kalibrierung)&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Problemanalyse und Fehlerbehebung am Empfänger ===&lt;br /&gt;
&lt;br /&gt;
Empfangenes Signal, Filterergebnis und Signalqualität können per Android Handy über die pfodApp-&amp;gt;Plot-&amp;gt;Perimeter angezeigt werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
 File: Perimeter_snr.png | Signal-Rausch-Verhältnis (SNR)&lt;br /&gt;
 File: Perimeter_signal_38khz.png | Signal, Filterergebnis, LP Filterergebnis, innen/außen, Ereigniszähler, Signal ein/aus, Signalqualität&lt;br /&gt;
 File: Perimeter_plot_moving_from_inside_to_outside.png | Fahren von innen nach außen&lt;br /&gt;
 File: Perimeter_v2_plot.png&lt;br /&gt;
 File: Perimeter_v2_plot_new.png&lt;br /&gt;
 File: Ardumower_perimeter2_test.jpg&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Beschreibung der im Plot angezeigten Signalverläufe:&lt;br /&gt;
 sig:  Spulensignal (Sequenz der Rohimpulse nach ADC) als kurzer Snapshot (32 samples), Update alle 20 Sekunden &lt;br /&gt;
       (also 20 Sekundenwarten bis zum nächsten Snapshot)&lt;br /&gt;
 mag:  Filterergebnis: innen (negativ) oder außen (positiv), magnitude: Abstand zur Perimeterschleife / magnetische Signalstärke (RSSI)&lt;br /&gt;
       - wird benutzt zum &amp;lt;b&amp;gt;Perimeter verfolgen&amp;lt;/b&amp;gt;&lt;br /&gt;
 smag: Filterergebnis, low-pass-gefiltert, ohne Vorzeichen (geglätteter mag-Verlauf) - verwendet zur Erkennung des &amp;lt;b&amp;gt;'Sender-aus' Zustandes&amp;lt;/b&amp;gt;&lt;br /&gt;
       Der Grenzwert kann über die pfodApp gesetzt werden (Settings-&amp;gt;Perimeter-&amp;gt;Timed-out if below smag)&lt;br /&gt;
 in:   binäres Ergebnis des low-pass Filters: innerhalb (1) oder außerhalb (0) der Perimeterschleife - wird benutzt zur &amp;lt;b&amp;gt;Erkennung des Perimetergrenzverlaufs&amp;lt;/b&amp;gt;&lt;br /&gt;
       Ist der ArduMower eine bestimmte Zeit außerhalb der Schleife, geht er in den Fehlerstatus. Diese Zeit kann per pfodApp&lt;br /&gt;
       (Settings-&amp;gt;Perimeter-&amp;gt;Timeout (s) if not inside) eingestellt werden&lt;br /&gt;
 cnt:  Anzahl der Wechsel von innen nach außen (counter, Zähler)&lt;br /&gt;
 on:   Perimetersender ist aktiv (1) oder inaktiv (0), basiert auf der Auswertung des smag Ergebnisses&lt;br /&gt;
 qty:  &amp;lt;b&amp;gt;Signalqualität&amp;lt;/b&amp;gt; (Aussage über die Verläßlichkeit der Erkennung 'innerhalb / außerhalb' aus dem Filterergebnis)&lt;br /&gt;
       Verhältnis aus Vergleich mit Mustersignal zu Vergleich mit inversem Mustersignal              &lt;br /&gt;
       1.0 bedeutet schlechte Qualität, Du solltest Werte von 1.5 oder höher)&lt;br /&gt;
&lt;br /&gt;
Im Plot soll der 'mag'-Verlauf frei von Spitzen sein: innerhalb der Schleife sollte das Signal eine negative Kurve, außerhalb eine positive Kurve beschreiben. Weist die Kurve Spitzen auf, versuche folgende Maßnahmen zur Fehlerbeseitigung bzw. Optimierung:&lt;br /&gt;
&lt;br /&gt;
* Benutze immer einen ausreichend langen und korrekt abgerollten Schleifendraht (20m oder länger). Benutze niemals einen zu kurzen (Mindestwiderstand 5 Ohm!) oder gar aufgerollten Draht. &lt;br /&gt;
* Für den 'Wohnzimmertest' sollte ein 100 Ohm Widerstand in Reihe mit 5m Draht bei 6V seine Aufgabe erfüllen.&lt;br /&gt;
* Verbinde die Empfangsspule mit 'pinPerimeterLeft' auf dem PCB (am falschen Pin könnte das Signal 'etwas schwach' reinkommen)&lt;br /&gt;
* Die Spulenpolung kann per pfodApp eingestellt werden (wird 'außen' angezeigt, wenn der Ardumower sich innrhalb der Schleife befindet?). Denselben Effekt hat das Umklemmen der Schleifenenden am Senderausgang.&lt;br /&gt;
* Sollte das Signal schwach erscheinen, überprüfen, ob am Spulenverstärker das Poti &amp;quot;voll aufgedreht&amp;quot; ist! Hilfreich ist die gleichzeitige Anzeige des Signal per pfodApp (Plot --&amp;gt; Perimeter).&lt;br /&gt;
* Die Kabelverbindung zwischen Spule und LM386-Vorverstärker muss möglichst kurz sein - am Besten die Spule direkt am Verstärker anschließen!&lt;br /&gt;
* Halte den Abstand zwische Spule und Motoren sowie DC/DC-Wandlern möglichst groß (30cm oder mehr!)&lt;br /&gt;
* Nutze die magnetische Abschirmwirkung (z.B. Deines Akkus) zwischen Spule und Störquellen.&lt;br /&gt;
* Einstellen der Senderspannung: bei längeren Perimeterschleifen (&amp;gt;80m) die Spannung höher wählen (Potentiometer DC/DC-Wandler), bei kürzeren Schleifen (&amp;gt;25m) eher niedriger (anstreben einer Sendeleistung = Spannung * Strom von ca 10W)&lt;br /&gt;
* Versuche bei laufenden Motoren die Spule leicht zu einer Seite zu neigen um die Signalqualität 'qty' zu erhöhen.&lt;br /&gt;
&lt;br /&gt;
== Messungen ==&lt;br /&gt;
&lt;br /&gt;
Zum Vergleich Beispielwerte, gemessen an verschiedenen, im Gelände getesteten Kombinationen von Sender-/Empfänger-/Schleifenparametern:&lt;br /&gt;
&lt;br /&gt;
1) 120m (0.7mm^2), R=4 Ohm, 6.5V, Spule Vpp 20mV&lt;br /&gt;
 Störsignalpegel (max): smag=192&lt;br /&gt;
 Signal (min): smag=254&lt;br /&gt;
 SNR=Signal/Störsignal=254/192=1.3&lt;br /&gt;
&lt;br /&gt;
2) 30m (0.7mm^2), R=1.0 Ohm (+4 Ohm series R), 6.5V, Spule Vpp 120 mV&lt;br /&gt;
 Störsignalpegel (max): smag=192&lt;br /&gt;
 Signal (min): smag=896&lt;br /&gt;
 SNR=Signal/Störsignal=896/192=4.6&lt;br /&gt;
&lt;br /&gt;
=== Videos ===&lt;br /&gt;
#[http://www.youtube.com/watch?v=FL6K98B2Zsk&amp;amp;feature=player_detailpage#t=265 Perimeter2 Demo]&lt;br /&gt;
#[https://www.youtube.com/watch?v=QCA6Dm3rs3M Test 120m Perimeterschleife]&lt;br /&gt;
#[https://www.youtube.com/watch?v=NIer_kITelc Theorie zu Perimeterschleife und Matched Filter (in deutsch)]&lt;br /&gt;
#[https://www.youtube.com/watch?v=VxJN2xb55dU&amp;amp;feature=youtu.be Sender-PCB]&lt;br /&gt;
&lt;br /&gt;
= Verfolgung der Begrenzungsschleife =&lt;br /&gt;
&lt;br /&gt;
Das Abfahren der Schleife wird über einen softwareseitig realisierten digitalen PID-Regler gesteuert. Die Regler-Parameter (P,I,D) können über ein Android-Handy per pfodApp eingestellt werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Ardumower_perimeter_pid.jpg&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mehr Informationen über PID-Regler sind hier zu finden: &lt;br /&gt;
[http://www.ardumower.de/index.php/de/forum/anleitungen-hilfe/121-pid-regelung-fuer-drehzahl-drehung-etc-richtig-einstellen Forum].&lt;br /&gt;
&lt;br /&gt;
= Sensor Signalfusion =&lt;br /&gt;
Das Magnetfeld der Perimeterschleife könnte man als Input für eine [http://wiki.ardumower.de/index.php?title=Sensor_fusion zur Positionsbestimmung des ArduMower nutzen].&lt;br /&gt;
&lt;br /&gt;
= Weiterführende Links =&lt;br /&gt;
#[http://www.ardumower.de/index.php/en/forum/schleifensensoren-generator/83-ir-bake-generator-empfaenger-diy Ein anderer Navigationsansatz sind Infrarot-Baken]&lt;br /&gt;
#[http://grauonline.de/wordpress/?page_id=364 Mehr Details zum 'matched filter']&lt;br /&gt;
#[http://www.grauonline.de/alexwww/ardumower/oscilloscope/oscilloscope.html Soundkarten-Oszilloskop inklusive 'matched filter']&lt;br /&gt;
&lt;br /&gt;
= Perimeter V1 (für alten Code V0.9.3, nicht mehr empfohlen) =&lt;br /&gt;
&lt;br /&gt;
Dies war die erste Version unseres Perimetersenders und Empfängers. Sie wies einige Nachteile auf (Orientierungsfehler, Keine 'Sender-aus'-Erkennung, keine Möglichkeit zur Feststellung des Aufenthaltsbereiches inner-/außerhalb der Schleife), so dass der Einsatz nicht weiter empfohlen wird. Benutze die Nachfolgeversion V2, wie oben beschrieben.&lt;br /&gt;
&lt;br /&gt;
== Sender ==&lt;br /&gt;
Du kannst den Sender eines kommerziellen Rasenmäroboters nutzen (der hier gezeigte Sender ist kompatibel mit Tianchen oder Rotenbach Mährobotern), oder Du baust Dir selber einen:&lt;br /&gt;
&lt;br /&gt;
Ein Arduino (z.B. Nano) generiert ein Rechtecksignal, welches die Polarität eines Motortreibers (L298N) mit 7.8 Khz schaltet. Dadurch wechselt das Ausgangssignal zwischen Vcc und GND. Ein Schwingkreis verstärkt die Signalspitzen (Resonanzfrequenz ist dieselbe wie die Schaltfrequenz - 7.8 Khz). So reicht es aus, den Motortreiber mit 5V (statt 12V) zu betreiben. Die Spannungsquelle muß etwa 2W (400mA bei 5V) leisten. &lt;br /&gt;
Ein Teil des Signals wird durch den Arduino (ADC) durch eine Diode und einen Spannungsteiler erfaßt. So kann festgestellt werden, ob die Perimeterschleife angeschlossen ist. Durch den Schleifendraht fließt ein Strom von ca. 150mA (Drahtquerschnitt 2-3 mm^2, Länge max 500 m)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Arduino_perimeter_sender.png ‎&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Weil man vielleicht nicht immer die genau passende Empfängespule zur Hand hat, hier ein paar mögliche Kombinationen (Spule / Kondensator), die die Resonanzfrequenz von 7.8 Khz aufweisen:&lt;br /&gt;
*Kombination 1: Spule: 160µH, Kondensator: 3,3µF/50V  (getestet)&lt;br /&gt;
*Kombination 2: Spule 33mH, Kondensator: 12nF (nicht getestet)&lt;br /&gt;
&lt;br /&gt;
==== Stromversorgung ====&lt;br /&gt;
Zur Erzeugung der 5V Spannung wird ein step-down-Wandler (z.B. Module mit LM2596) eingesetzt. Vor dem Einsatz in der Schaltung muß der Wandler auf 5V einjustiert werden. &lt;br /&gt;
&lt;br /&gt;
'''Warnung''' : Lege niemals mehr als 5V auf die Arduino 5V Pins oder Du zerstörst ihn. Deswegen: vorher die Spannung einstellen und kontrollieren!&lt;br /&gt;
&lt;br /&gt;
==== Funktionstest ====&lt;br /&gt;
1. Nach dem Code-Hochladen und Anschliessen der Begrenzungsschleife sollte die Arduino LED an sein. Nun entferne den Schleifendraht und die LED sollte ausgehen.&lt;br /&gt;
&lt;br /&gt;
2. Sollte das nicht so sein, kontrolliere mit einem Voltmeter zum Einen die Spannung zwischen Pin 9 des Arduino und dann die am Motortreiberausgang (OUT_1) jeweils gegen GND - beide sollten eine Gleichspannung  2.5 Volt führen.&lt;br /&gt;
&lt;br /&gt;
3. Hast Du ein Oszilloskop? Dann schließe statt der Begrenzungsschleife das Oszilloskop an den Sender an. Das gemessene Signal sollte folgendermaßen aussehen:&lt;br /&gt;
&lt;br /&gt;
Das Ausgangssignal zeigt eine höhere Ampltude (hohe Spitzenwerte) als das Eingangssignal:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Perimetersignal.jpg|Signal am Senderausgang &lt;br /&gt;
File: Ardumower_perimeter_sender_schematics.png|Grundprinzip des Schwingkreises&lt;br /&gt;
File: Arduino_perimeter_sender_photo.jpg&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Für einen einfachen Empfangstest kannst Du die Empfangsspule direkt ans Oszilloskop anschließen. Das gemessene Signal sollte etwa so  aussehen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Coilsignal.jpg|Signal an der Empfangsspule&lt;br /&gt;
File: Fft.jpg|Signal im Frequenzspektrum, überlagert durch Motorstörungen&lt;br /&gt;
File: Ardumower_perimeter_spectrum_plot.jpg| Anzeige des Frequenzspektrums über pfodApp&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Empfänger ==&lt;br /&gt;
Der Empfänger nutzt zwei Spulen, die rechts und links vorn im ArduMower montiert sind. Die Signalstärke der linken und rechten Spule werden ausgewertet, um sie vergleichen zu können.&lt;br /&gt;
&lt;br /&gt;
Prinzip:&lt;br /&gt;
# Verstärkung der alternierenden Signale per OPAMP&lt;br /&gt;
# Optional: Bandpass-Filterung zum Ausblenden der Störungen durch Motore etc.&lt;br /&gt;
# Ermittlung der Signalstärke von linker und rechter Spule&lt;br /&gt;
&lt;br /&gt;
Vorteil dieser Version: analoge Auswertungfunktioniert hervorragend.&lt;br /&gt;
Nachteil: Du kannst nicht feststellen, ob Du Dich gerade innerhalb oder außerhalb der Begrenzungsschleife aufhälst, wenn Du nicht jede Überfahrt des Begrenzungsdrahtes mitprotokollierst. Es ist auch nicht möglich festzustellen, ob Du die Begrenzungsschleife im oder gegen den Uhrzeigersinn abfährst.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Arduino_perimeter_receiver.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Eine Spule empfängt das Signal des Senders. Ein Schwingkreis (LC: SPule und Kondensator)verstärkt das empfangene Signal bei einer Resonanzfrequenz von 7.8 kHz. Das Signal wird weiter verstärkt durch eien LM386-Verstärker (hier: Arduino Soundsensor mit Spule statt Mikrofon). Ein Bandpassfilter (digitaler Filter, FFT - Fast Fourier Transformation) läuft auf dem Arduino und filtert die gewünschte Frequenz (7.8 Khz) und erzeugt ein PWM-Signal (Pulsbreite proportional zur Signalstärke). Über einen Tiefpassfilter wird das PWM-Signal in eine Gleichspamnnung gewandelt.&lt;br /&gt;
Beachte: Die Verdrahtung zwischen ist vereinfacht dargestellt - Details der Verdrahtung s. Schaltplan.&lt;br /&gt;
&lt;br /&gt;
Wir haben folgende Kombinationen von Spulen und Verstärkern getestet:&lt;br /&gt;
&lt;br /&gt;
'Arduino Soundsensor'&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Soundsensor.jpg| Signalverstärkung über LM386 - Arduino Soundsensor mit Spule statt Mikrofon&lt;br /&gt;
File: YwRobot_Sensor.jpg |Arduino Soundsensor mit LM386&lt;br /&gt;
File: YwRobot_circuit.png |Arduino Soundsensor Modulschaltplan&lt;br /&gt;
File: Coil_85mh.jpg|85 mH Spule&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
LM386 Verstärker&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Lm386_amplifier.jpg| LM386 Versärker (200-fach)&lt;br /&gt;
File: Lm386_modified.jpg| modifizierter LM386-Verstärker&lt;br /&gt;
File: Ardumower_lm386_circuit.png | LM386 Modulschaltplan&lt;br /&gt;
File: Coil_small.jpg| 104 mH Spule&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wichtig: Bei Verwendung dieses Verstärkers muß der Kondensator C3 überbrückt werden (erzeugt das für den Arduino erforderliche VCC/2 offset). Dies Spule schließt man an &amp;quot;IN&amp;quot; und &amp;quot;GND&amp;quot; an.&lt;br /&gt;
&lt;br /&gt;
'''Beachte''': die Spule unbedingt direkt am Verstärkermodul befestigen. Dies minimiert die Störeinflüsse durch andere Komponenten wie z.B. Motoren auf das schwache Spulensignal.&lt;br /&gt;
=== Funktionstest ===&lt;br /&gt;
# Stelle eine korrekte Funktion des Schleifensenders sicher (wie bereits weiter oben beschrieben).&lt;br /&gt;
# Drehe das Potentiometer des Arduino Soundsensors auf Maximum (gegen den Uhrzegersinn).&lt;br /&gt;
# Lade das Programm auf den Arduino und bewege eine Spule in Richtung des Begrenzungsdrahtes: die LED des Arduino sollte zu blinken beginnen. Halte nun beide Spulen im gleichen Abstand über den Begrenzungsdraht: die LED sollte nun permanent leuchten.&lt;br /&gt;
# Wenn das so nicht funktioniert, öffne die serielle Konsole und  prüfe die Signalwerte.&lt;br /&gt;
&lt;br /&gt;
=== Spulenauswahl ===&lt;br /&gt;
mathematische Näherungsberechnung einer Spule:&lt;br /&gt;
&lt;br /&gt;
 L = 1nH x n² x ((D² / mm² ) / (l / mm))&lt;br /&gt;
 l = Spulenlänge&lt;br /&gt;
 D = Spulendurchmesser&lt;br /&gt;
&lt;br /&gt;
Beispiel: eine Induktion von 85 mH, Durchmesser 10 mm, Länge 40 mm erfordert ca. 5830 Windungen.&lt;br /&gt;
&lt;br /&gt;
Diese Induktivität von 85 mH und ein Kondensator von 4.7 nF führen zu einer Resonanzfrequenz von 7963 Hz.&lt;br /&gt;
&lt;br /&gt;
 f0 = 1 / (2 * PI * sqrt(L * C)) = 1 / (2 * PI * sqrt(0.085 H * 0.0000000047 F)) =  7963 Hz&lt;br /&gt;
&lt;br /&gt;
Weil man vielleicht nicht immer die genau passende Empfängerspule zur Hand hat, hier ein paar mögliche Kombinationen (Spule / Kondensator), die die Resonanzfrequenz von 7.8 Khz aufweisen:&lt;br /&gt;
 Kombination 1: Spule: 85mH, Kondensator: 4.7nF  (getestet)&lt;br /&gt;
 Kombination 2: Spule: 104mH, Kondensator: 4nF (getestet)&lt;br /&gt;
&lt;br /&gt;
=== Anordnung der Spulen ===&lt;br /&gt;
die Spulen sind am Boden des ArduMower so angeordnet, dass sie einen Winkel von 90 Grad einschließen, d.h. jede ist um 45 Grad aus der Längsachse gedreht.&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Ardumower_spulen.jpg| Anordnung der Spulen&lt;br /&gt;
File: L50_coils.jpg | Beispiel (Ambrogio L50)&lt;br /&gt;
File: L50_parcours.jpg | Testparcours&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Messung der Signalstärke ===&lt;br /&gt;
Zum Vergleich von Messungen wurde die Signalstärke bei verschiedenen Schleifenabständen bestimmt. Die Signalsärke (soll heißen: der berechnete ADC-Wert) kann in der Android pfodApp angezeigt werden. Der Abstand (cm) ist der berechnete Wert zwischen Perimeterschleife und Spule (eingebaut im ArduMower).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Perimeter_plot.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Schleifenverlegung ===&lt;br /&gt;
&lt;br /&gt;
Wichtig bei der Schleifenverlegung ist die Vermeidung von scharfen Ecken: Rundungen sind angesagt! Fährt der Ardumower exakt über eine scharfe Ecke, kann er unter Umständen die Schleife nicht mehr orten, da Spule und Schleife fluchten / parallel stehen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Schleifen_blind.jpg  | Nicht empfohlen: ArduMower kann keine scharfen Ecken orten!&lt;br /&gt;
File: Ardumower_coil_signal.png| Wie ändert sich das Sinal, wenn die Spule gedreht wird??&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Videos ===&lt;br /&gt;
#[http://www.youtube.com/watch?v=FGaUSg-uUxk Perimeter Stoptest]&lt;br /&gt;
#[http://www.youtube.com/watch?v=8R8QaffNlJw Perimeter Verfolgungstest]&lt;br /&gt;
#[http://www.youtube.com/watch?v=CftrnetFVYc&amp;amp;feature=youtu.be Test zum Finden und Verfolgen mit L50]&lt;br /&gt;
#[http://www.youtube.com/watch?feature=player_embedded&amp;amp;v=fjuQViS2rHM Test zum Finden und Verfolgen mit Rotenbach]&lt;/div&gt;</summary>
		<author><name>Deejay</name></author>	</entry>

	<entry>
		<id>https://wiki.ardumower.de/index.php?title=Perimeter-Schleife&amp;diff=2731</id>
		<title>Perimeter-Schleife</title>
		<link rel="alternate" type="text/html" href="https://wiki.ardumower.de/index.php?title=Perimeter-Schleife&amp;diff=2731"/>
				<updated>2015-08-28T07:36:29Z</updated>
		
		<summary type="html">&lt;p&gt;Deejay: /* Automatische Schleifensignalabschaltung */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Zusammenfassung=&lt;br /&gt;
Eine Begrenzungsschleife (oder Perimeterdraht) ist eine Art 'elektronischer Zaun': er veranlaßt den ArduMower zum Stoppen / Umkehren sobald die Grenze erreicht ist. Nicht in jeder Umgebung ist eine Begrenzungsschleife notwendig - Rasensensoren könnten eine Alternative sein.&lt;br /&gt;
&lt;br /&gt;
Das Prinzip: durch den im Garten verlegten Schleifendraht wird ein Signal gesendet, das der Ardumower ausgewertet. Gebraucht werden ein Sender zur Erzeugung und Übergabe des Signals an die Schleife und ein Empfänger zur Signalauswertung im ArduMower.&lt;br /&gt;
&lt;br /&gt;
Und so wird das Signal empfangen: eine (oder zwei) Empfangsspulen liefern ein Signal, dessen Stärke je nach Abstand zwischen Schleifendraht und Empfangsspule(n) variiert. Interessanterweise wechselt das Signal in dem Moment seine Polarität, wo der ArduMower (genauer: die Empfänger-Spule) den Schleifendraht überfährt. Es gibt zwei prinzipielle Möglichkeiten, den Begrenzungsdraht zu orten. Wir haben beide Methoden implementiert (Perimeter V1 und V2) wie nachfolgend beschrieben.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Ardumower_perimeter.jpg | Perimeterdraht&lt;br /&gt;
File: Ardumower_perimeter_components.jpg | Komponenten&lt;br /&gt;
File: Perimeter_signal_strength.jpg | Signalstärke&lt;br /&gt;
File: Perimeter_gradient.png | Verlauf der Signalstärke&lt;br /&gt;
File: Ardumower_perimeter_magneticfield.png | Perimeter-Magnetfeld&lt;br /&gt;
File: Perimeter_excluding_objects.png | Objekte ausschließen&lt;br /&gt;
File: Perimeter_divide.png | Flächen aufteilen&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://hyperphysics.phy-astr.gsu.edu/hbase/magnetic/magcur.html Magnetfeld Berechnungstool]&lt;br /&gt;
&lt;br /&gt;
Videos:&lt;br /&gt;
[http://youtu.be/r4ZMgasMkH0 Magnetfeld Demovideo]&lt;br /&gt;
&lt;br /&gt;
=Begrenzungsschleife V2 (erforderlich für aktuellen ArduMower Code)=&lt;br /&gt;
&lt;br /&gt;
[[Image:Yt-brand-standard-logo-95x40.png|thumb|180px|https://www.youtube.com/watch?v=NIer_kITelc&amp;amp;feature=youtu.be]]&lt;br /&gt;
&lt;br /&gt;
Dies ist die neue Version von Sender und Empfänger für die Begrenzungsschleife (erhältlich über den [https://www.marotronics.de/index.php?k=7 shop] [[File: shopping.png|link=https://www.marotronics.de/index.php?k=7]]).&lt;br /&gt;
&lt;br /&gt;
Beim Überfahren des Schleifendrahtes passiert nun etwas Interessantes: die Polarität der Signalspannung wechselt von negativ auf positiv bzw. umgekehrt - je nachdem, ob man von innen oder außen kommt. Dadurch werden sowohl das Überfahren selbst als auch der Status (Aufenthalt innerhalb oder außerhalb der Schleife) eindeutig erkennbar. Wie bei der V1 nutzen wir zur Signalverstärkung wieder den Motortreiber für das Ausgangssignal und einen Operationsverstärker für das Eingangssignal von der Empfangsspule. Der Sender übergibt eine digitale Signalfolge (auch als 'pseudo-noise' bezeichnet) an die Schleife, die vom Empfänger über einen software-basierten digitalen [http://en.wikipedia.org/wiki/Matched_filter Matched-Filter] ausgewertet wird. Der Filter liefert als Ergebnis einen Peak: positiv - ArduMower innerhalb oder negativ - ArduMower außerhalb der Begrenzungsschleife.&lt;br /&gt;
&lt;br /&gt;
Prinzipablauf:&lt;br /&gt;
  Senderseite&lt;br /&gt;
# Erzeugen des Ausgangssignals durch den Arduino Nano&lt;br /&gt;
# Verstärkung des Ausgangssignals durch den Motortreiber (MC33926), Schleifendrahtenden anstatt eines Motors an den Ausgang anschließen&lt;br /&gt;
&lt;br /&gt;
  ArduMower&lt;br /&gt;
# Eingangssignal per Empfangsspule aufnehmen&lt;br /&gt;
# Eingangssignal per Operationsverstärker (z.B. LM386) verstärken&lt;br /&gt;
# ADC sampling durch Arduino Mega&lt;br /&gt;
# Signalfilterung and Analyse durch ein digitales Filter (software-basierter Matched-Filter-Algorithmus)&lt;br /&gt;
# Auswertung des matched filter Ergebnisses (zur Feststellung des Aufenthaltbereiches inner- / außerhalb der Schleife, Schleifenabfahren usw.)&lt;br /&gt;
&lt;br /&gt;
Folgende Bilder erklären den Wechsel der Signalpolarität innerhalb und außerhalb der Schleife. Sie zeigen auch die Richtung der magnetischen Flusslinien, die vom Begrenzungsdraht ausgehen und wie sie die Spule innerhalb und außerhalb der Begrenzungsschleife treffen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Ardumower_perimeter2.jpg| Innen/außen-Erkennung über den Polaritätswechsel&lt;br /&gt;
File: Fluxdirections.png| Flussrichtungen&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Signal ==&lt;br /&gt;
Der Schlüssel zu einem guten Empfang des Perimetersignals überall auf dem Rasen ist die Optimierung des Signal-Rausch-Abstandes (SNR=signal/noise ratio). Um das SNR zu maximieren, gibt es zwei Ansätze:&lt;br /&gt;
# Signalstärke hochfahren (elektr. Leistung) oder&lt;br /&gt;
# Erhöhung der Signallänge&lt;br /&gt;
&lt;br /&gt;
Wir nutzen eine Kombination beider Ansätze: der Sender wiederholt ständig einen digitalen Code ('pseudonoise4_pw') mit 9615 Hz :&lt;br /&gt;
&lt;br /&gt;
 1,1,-1,-1,1,-1,1,-1,-1,1,-1,1,1,-1,-1,1,-1,-1,1,-1,-1,1,1,-1&lt;br /&gt;
&lt;br /&gt;
'1' bedeutet einen positiven Signalimpuls, '-1' einen negativen. Der kürzeste erzeugte Signalwechsel ist '-1,1', das entspräche dem höchsten Ton (wenn man es hörbar darstellen würde) von 4808 Hz. Das andere Extrem wäre der längste erzeugte Signalwechsel mit '1,1,-1,-1', bei einer Frequenz von 2404 Hz.&lt;br /&gt;
&lt;br /&gt;
Die Spule erkennt nur diese Signalwechsel des Sendersignals. So - also ohne den Kondensator in Serienschaltung zur Spule - zeigt sich das (differentielle) Empfangssignal wie folgt:&lt;br /&gt;
&lt;br /&gt;
 1,0,-1, 0,1,-1,1,-1, 0,1,-1,1,0,-1, 0,1,-1, 0,1,-1, 0,1,0,-1&lt;br /&gt;
&lt;br /&gt;
Verwendet man jedoch den Kondensator in Reihe zur Spule, sind gesendetes und empfangenes (nicht-differentielles) Signal vom Prinzipverlauf wieder identisch.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Perimeter_signal_steps.png | Perimetersignal an Sender und Empfangsspule&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Arduino ADC wertet das Empfangssignal mit einer Abtastrate von 9615 Hz aus.&lt;br /&gt;
&lt;br /&gt;
== Filter ==&lt;br /&gt;
Die gewählte Signalform weist eine spezielle Charakteristik auf: &lt;br /&gt;
&lt;br /&gt;
Weil es wie ein Zufallssignal aussieht, stimmt es nicht in Teilen mit sich selbst überein, sondern erst als komplette Sequenz ([http://en.wikipedia.org/wiki/Matched_filter Übereinstimmung]). Aufgrund dieser Charakteristik können die Startpunkte der Signalsequenz durch ein [http://en.wikipedia.org/wiki/Matched_filter matched filter] ('Korrelation' mit dem gesuchten Signalmuster) ermittelt werden: sie erscheinen als Nadelimpuls im Filterergebnis - und zwar auch bei einem stark verrauschten Signal (z.B. durch Störimpulse von Motoren etc.). &lt;br /&gt;
Die Polarität der Spitze (positiv oder negativ) gibt an, ob sich die Spule inner- oder außerhalb der Begrenzungsschleife befindet.&lt;br /&gt;
&lt;br /&gt;
Du kannst sehen, wie das funktioniert: für ein tiefergehendes Verständnis des Perimetersignals und des Filters schau Dir folgende Simulation (in englisch) an: &lt;br /&gt;
[http://www.grauonline.de/alexwww/ardumower/filter/filter.html Matched filter simulation]&lt;br /&gt;
&lt;br /&gt;
# Wähle eine Perimetersignalform: setze den Schieberegler (rechts oben 'example signals') auf ''pseudonoise4_pw'' (Wert 23).&lt;br /&gt;
# Hebe den Wert des Störsignal ein wenig an: setze den Schieberegler ('noise') auf den Wert 2.&lt;br /&gt;
# Der Plot 'Matched filter' (links unten) zeigt, dass das wiederholte Signal 3 mal entdeckt wurde.&lt;br /&gt;
# Nun simuliere die Bewegung der Spule aus der Perimeterschleife nach außen:  Klicke auf 'Invert' und setze damit die Verstärkung auf '-1'. Der Filter liefert 3 negative Spitzen.&lt;br /&gt;
&lt;br /&gt;
Mehr dazu unter: [https://www.youtube.com/watch?v=NIer_kITelc Video über matched filter]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
  File: Matched_filter_principle.png| Matched Filter&lt;br /&gt;
  File: Perimeter_signal_good_bad.png|Beispiele für gutes / schlechtes Signal &lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Sender ==&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Schleifensender_Ardumower_V2.JPG | Sender Schaltplan&lt;br /&gt;
File: Ardumower_sender_pcb.jpg| Ardumower Sender PCB&lt;br /&gt;
File: Perimeter2_sender_open.jpg| Sendersignal (6.5V, ohne Perimeterschleife)&lt;br /&gt;
File: Perimeter2_sender_closed.jpg| Sendersignal (6.5V, 120m Perimeterschleife 7 Ohm)&lt;br /&gt;
File: Sender_v2_signal_sender_5v_4ohm.png| Sendersignal (6.5V, 4 Ohm Widerstand + 2m Perimeterschleife)&lt;br /&gt;
File: perimeter_wiring_motor_driver.png | Varianten der Motortreiberschaltung&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wir benutzen einen Arduino Nano zur Erzeugung und einen Mototreiber als Ausgangsverstärker des Signals. Der Motortreiber wird mit 3,2 kHz betrieben (2 Impulsbreiten 4808 und 2404 Hz). Bei ausreichend langen Schleifendrähten benötigt der Generator typischerweise 10W (6.5V, 1.7A). Unser Motortreiber verfügt über eine integrierte Strombegrenzung und eine Übertemperaturabschaltung (z.B. MC33926). Die Schleifenlänge kann im Bereich 20 - 450m betragen und muss mindestens 5 Ohm Widerstand aufweisen.&lt;br /&gt;
&lt;br /&gt;
Sender Pin-Belegung:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;background-color: lightgrey; border: solid thin grey;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 motor driver M1OUT1     o---------- perimeter loop (20-450 meters, &amp;gt; 5 Ohm) --+&lt;br /&gt;
                                                                               |&lt;br /&gt;
 motor driver M1OUT2     o---------- perimeter loop ---------------------------+&lt;br /&gt;
 motor driver Vin        o-- 6.5V&lt;br /&gt;
 motor driver M1IN1      o-- Arduino Nano pinIN1&lt;br /&gt;
 motor driver M1IN2      o-- Arduino Nano pinIN2&lt;br /&gt;
 motor driver M1PWM_nD2  o-- Arduino Nano pinPWM&lt;br /&gt;
 motor driver M1nSF      o-- Arduino Nano pinFault&lt;br /&gt;
 motor driver M1FB       o-- Arduino Nano pinFeedback&lt;br /&gt;
 motor driver EN         o-- Arduino Nano pinEnable&lt;br /&gt;
 motor driver VDD        o-- Arduino +5V&lt;br /&gt;
 motor driver M1D1       o-- GND (via Jumper)&lt;br /&gt;
 motor driver SLEW       o-- VDD (via Jumper)&lt;br /&gt;
 &lt;br /&gt;
               |---------o-- GND&lt;br /&gt;
 Potentiometer 100k -----o-- Arduino Nano pinPot&lt;br /&gt;
               |---------o-- Arduino +5V&lt;br /&gt;
 &lt;br /&gt;
 ACS712-05 OUT ------o-- Arduino Nano pinChargeCurrent    &lt;br /&gt;
 ACS712-05 A   ------o-- charging pin (+)&lt;br /&gt;
 ACS712-05 B   ------o-- battery charger +24V&lt;br /&gt;
 battery charger GND-o-- charging pin (-)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Beispiel für den Senderaufbau mit einer Lochrasterplatine:  [http://www.braunschweiger.org/content/download/SenderR212.pdf] &lt;br /&gt;
[http://www.braunschweiger.org/content/images/SenderR212_Front.jpg] [http://www.braunschweiger.org/content/images/SenderR212_Back.jpg]'''&lt;br /&gt;
&lt;br /&gt;
=== Sender Perimeterschleife und Rasengröße ===&lt;br /&gt;
Bei einer Betriebsspannung von 6.5V sollte die Perimeterschleife nicht über 450 m lang sein. (Für den 'Wohnzimmertest' tut es auch ein 100 Ohm Widerstand in Reihe mit 5m Schaltdraht.) &lt;br /&gt;
&lt;br /&gt;
Setzen wir mal eine kreisrunde Rasenfläche voraus erhalten wir für 450m Schleifenlänge (= Kreisumfang) einen Radius von 70m:&lt;br /&gt;
 radius = Schleifenlänge / (2*PI) = 450m / (2*PI) = 70 meter&lt;br /&gt;
&lt;br /&gt;
Wäre die Signalqualität nicht durch den Radius begrenzt, entspräche der eingegrenzte Rasen einer Fläche von 15000m2:&lt;br /&gt;
 Fläche = PI * (radius*radius) = PI * (70m * 70m) = 15000 m2&lt;br /&gt;
&lt;br /&gt;
Da jedoch der maximale Radius für ausreichende Signalqualität bei ca. 18m liegt, ergibt sich die maximale Rasenfläche (Annahme immer noch: Kreisfläche!) zu 1000m2: Fläche = PI * (radius*radius) = PI * (18m * 18m) = 1000 m2&lt;br /&gt;
&lt;br /&gt;
=== Einstellung der Senderstromstärke ===&lt;br /&gt;
Zur Einstellung der Sendeleistung (Spannung*Strom) gibt es verschiedene Möglichkeiten:&lt;br /&gt;
&lt;br /&gt;
*Spannung am DC/DC-Wandler: die Versorgungsspannung des Motortreibers kann über das Poti des Wandlers zwischen 6.5 bis 12V eingestellt werden. Das ist der empfohlene Weg. Beachte: der MC33926 Motortreibermotor benötigt eine Mindestspannung (Vin) von 5V. Bei zu geringer Spannung regelt der Motortreiber sporadisch ab und die Arduino-LED zur Anzeige von Unterspannung fängt an zu blinken.&lt;br /&gt;
&lt;br /&gt;
*Normale Amplitude: statt die Perimeterschleife zwischen +Vin und -Vin (doppelte Amplitude ist Standardwert) umzuschalten, kann der Motortreiber auch nur zwischen +Vin und GND (einfache Amplitude). So zieht die Schleife weniger Strom. Zur Einstellung der einfachen Amplitude muß die entsprechende Codezeile in 'sender.ino' auskommentiert werden:&lt;br /&gt;
&lt;br /&gt;
  // #define USE_DOUBLE_AMPLTIUDE    1   &lt;br /&gt;
&lt;br /&gt;
*Hochlastwiderstand: Bei einem Schleifenwiderstand kleiner 5 Ohm kann der Strom nicht weiter reduziert werden, indem man die Spannung runterdreht: unterhalb von ca. 6V arbeitet der Arduino nicht mehr richtig. Dann hilft nur noch ein zur Schleife in Reihe geschalteter Hochlastwiderstand (R: z.B. 5 Ohm, 10W). &lt;br /&gt;
&lt;br /&gt;
 @6V (Vin): 5 ohm Hochlastwiderstand =&amp;gt; I=U/R=6V/5Ohm=1.2A   (P=U*I=6V*1.2A=7.2W)&lt;br /&gt;
&lt;br /&gt;
Daher also die mindestens 10W Belastbarkeit des Widerstandes! In diesem Falle auch die 'einfache Amplitude' im Sendercode aktivieren (doppelte Amplitude nicht benutzen!).&lt;br /&gt;
&lt;br /&gt;
=== Senderstromüberwachung (in Entwicklung) ===&lt;br /&gt;
Idee: das Poti VR1 wird durch ein digitales Poti (z.B. MCP4151-5K) ersetzt. So kann die Vin des Motortreibers (und damit auch der Strom) über den Arduino eingestellt werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Lm2596_circuit.jpg | LM2596 Modulschaltplan&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
MCP4151-5K version:&lt;br /&gt;
&lt;br /&gt;
 Vout = 1.23V*(1+VR1/R1)&lt;br /&gt;
&lt;br /&gt;
 Using VR1=5K...&lt;br /&gt;
 Vstart (on reset):  Vout=1.23V*(1+2.5K/0.33K)=10v&lt;br /&gt;
 Vmax:  Vout=1.23V*(1+5K/0.33K)=19v&lt;br /&gt;
&lt;br /&gt;
=== Automatische Schleifensignalabschaltung ===&lt;br /&gt;
Während sich der ArduMower in der Ladestation aufhält, wird das Schleifensignal nicht benötigt und wir können Energie sparen. Zum Erkennen des Ladestatus wird im &amp;quot;Sender_V2&amp;quot; ein Stromsensor (INA169) zwischen Ladegerät und Ladeanschlüsse geschaltet.&lt;br /&gt;
&lt;br /&gt;
Zum aktivieren dieser Funktion ist &amp;quot;#define USE_CHG_CURRENT&amp;quot; auf 1 zu setzen&lt;br /&gt;
&lt;br /&gt;
    #define USE_CHG_CURRENT       1     // use charging current sensor for robot detection? (set to '0' if not connected!)&lt;br /&gt;
&lt;br /&gt;
Desweiteren muss der Stromsensor am analogen Eingang A2 kalibriert werden:&lt;br /&gt;
&lt;br /&gt;
* Der Mover befindet sich nicht in der Ladestation/ Ladestrom = 0 Ampere&lt;br /&gt;
* Den seriellen Monitor aufrufen&lt;br /&gt;
* In der Befehlszeile 1 eingeben und Button &amp;quot;Senden&amp;quot; drücken&lt;br /&gt;
* Mit diesem Befehl wird die Spannung am analogen Eingang A2 gemessen und im EEPROM als Referenzwert &amp;quot;chargeADCZero&amp;quot; gespeichert&lt;br /&gt;
* Am Monitor erscheint folgender Text:&lt;br /&gt;
&lt;br /&gt;
    received key=1&lt;br /&gt;
    calibrateChargeCurrentSensor (note: robot must be outside charging station!)&lt;br /&gt;
    calibration done&lt;br /&gt;
    chargeADCZero=755&lt;br /&gt;
&lt;br /&gt;
Die Kalibrierung ist damit erfolgt. Bei den weiteren Messungen wird im seriellen Monitor unter &amp;quot;chgCurrentADC&amp;quot; der Wandlerwert des analogen Eingangs A2 angezeigt:&lt;br /&gt;
&lt;br /&gt;
    time=4	chgCurrent=0.000	chgCurrentADC=755.55	 isCharging=0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Wir simmulieren einen Ladevorgang durch Belastung der Ladebuchse durch einen 22 Ohm Widerstand. Es fließt ein Ladestrom von ca. 0,8 Ampere. Damit ändert sich der &amp;quot;chgCurrentADC&amp;quot; auf 712.63. &amp;quot;chgCurrent&amp;quot; zeigt den Ladestrom in Ampere&lt;br /&gt;
&lt;br /&gt;
    time=8      chgCurrent= 0.801       chgCurrent  ADC=712.63	  isCharging=1	&lt;br /&gt;
&lt;br /&gt;
Das Flag &amp;quot;ischarging&amp;quot; wird auf &amp;quot;1&amp;quot; gesetzt und die Perimeterschleife wird für die Dauer der Ladung abgeschaltet.&lt;br /&gt;
&lt;br /&gt;
Dies funktioniert neben dem im Sender_V2 verbauten Stromsensor &amp;quot;INA169&amp;quot; auch mit einem Stromsensor ACS 712-5 oder ACS 712-20. Bei Verwendung der ACS muss jedoch die Berechnung des Ladestromes &amp;quot;chgCurrent&amp;quot; angepasst werden.&lt;br /&gt;
&lt;br /&gt;
=== Sendersoftware ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;NOTE&amp;lt;/b&amp;gt;: Wenn Du Dich nie zuvor mit Arduino beschäftigt hast, lies zuerst unsere Einführung &amp;lt;b&amp;gt;[http://wiki.ardumower.de/index.php?title=Arduino_first_steps 'erste Schritte mit dem Arduino']&amp;lt;/b&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[File:warning.png]] Wichtig: Vergewissere Dich, dass die Pin-Konfiguration des Arduino im benutzten Code (sender.ino) mit Deinem Senderaufbau übereinstimmt!&lt;br /&gt;
&lt;br /&gt;
Im Code (sender.ino) die passende Option für die automatische Schleifenabschaltung (bei Verwendung des oben beschriebenen Stromsensors Option 1) wählen:&lt;br /&gt;
&lt;br /&gt;
* Define if you have connected a charging current sensor for automatic sender standby:   #define USE_CHG_CURRENT 1   (or 0)&lt;br /&gt;
&lt;br /&gt;
=== Sender Zustandsanzeige ===&lt;br /&gt;
Die LED auf dem Arduino Nano signalisiert den Senderstatus:&lt;br /&gt;
* An: Perimeterschleife ist angeschlossen und arbeitet&lt;br /&gt;
* Aus: Perimeterschleife ist geöffnet (oder durch Defekt unterbrochen) und arbeitet nicht&lt;br /&gt;
* Blinkt: der ArduMower wird geladen und die Perimeterschleife ist zur Energieeinsparung durch die Software deaktiviert&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File:Perimeter_sender_console.png | Ausgabe 'sender.ino' über serielle Konsole&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Sendertest per PC-Soundkarte ===&lt;br /&gt;
Du kannst den Sender mit Deine Soundkarte und einer Spule testen:&lt;br /&gt;
&lt;br /&gt;
# Verbinde eine Spule (100 mH) mit dem Mikrofon-/Line-Eingang (max 1V) Deiner Soundkarte &lt;br /&gt;
# Starte das [http://www.grauonline.de/alexwww/ardumower/oscilloscope/oscilloscope.html Web-Oszilloskop], und wähle Filter 'Matched', Frequenz '9615' Hz, Visualization Math 'MinMax'&lt;br /&gt;
# Das Ausgangssignal sollte den Abstand zur Perimeterschleife wiederspiegeln - die Polarität (negativ/positiv) zeigt den Aufenthaltsbereich (innerhalb/außerhalb) der Schleife.&lt;br /&gt;
&lt;br /&gt;
Versuche in beiden Fällen (innen/außen), die Spule so dicht wie möglich an der Schleife zu positionieren, um ein auswertbares Signal zu empfangen (zur Erinnerung: wir arbeiten hier ohne die Signalverstärkung durch den Operationsverstärker, da der Soundkarteneingang nur mit max 1V beaufschlagt werden darf).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File:Ardumower_web_oscilloscope_time_signal_received.jpg | Effektivwert des empfangenen Zeit-Signals (Filter Off, Time scale: x5)&lt;br /&gt;
File:Ardumower_web_oscilloscope_time_signal.jpg | Ideales Zeitsignal erzeugt vom Sender (Filter Off, Time scale: x5)&lt;br /&gt;
File:Ardumower_web_oscilloscope.jpg  | Matched Filter Signal (Frequency: 9615 Hz, Math: MinMax)&lt;br /&gt;
File:Perimeter_signal_good_bad.png | Beispiel für gutes / schlechtes Signal&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://www.youtube.com/watch?v=vg5Xg0__66A Video zur Erklärung aller Schritte]&lt;br /&gt;
&lt;br /&gt;
== Empfänger ==&lt;br /&gt;
&lt;br /&gt;
Zum Signalempfang verwenden wir eine Spule (100 mH or 150 mH, nur für die älteren Softwareversionen wird ein Kondensator 4.7nF mit der Spule in Reihe geschaltet) in aufrechter Position, in der Mitte am vorderen Rand des ArduMower. Sie ist zur Verstärkung des empfangenen Signals mit dem Eigang eines LM386 Operationsverstärkers verbunden. Auf dem LM386 Modul wird der Kondensator C3 überbrückt, damit der Verstärker ein Signal zwischen 0..5V statt im Standardbereich -5V..+5V) liefert. Der Ausgang des LM386 sollte mit dem Arduino Analog-Pin ('pinPerimeterLeft') verbunden werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt; &lt;br /&gt;
 File: Perimeter_v2_receiver_circuit.png | Empfängerschaltkreis und überbrückter Kondensator C3&lt;br /&gt;
 File: Ardumower_chassis_components.png | Position der Perimeterspule&lt;br /&gt;
 File: Ardumower_coil_position.jpg | Eine zentrierte, aufrecht montierte Spule &lt;br /&gt;
 File: Ardumower_lm386_circuit.png | LM386 Modul Schaltplan&lt;br /&gt;
 File: Tire_coil_distance.jpg | Abstand Spule-Rad: Einfluß auf den Wendekreis (Kurvenwinkel)&lt;br /&gt;
 File: Coil_motor_layout.png | Zwei Spulen (experimentell), Abstand Spule-Spule Hinterradantrieb 12.5cm, Frontantrieb 19cm&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Empfängerschaltplan:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;background-color: lightgrey; border: solid thin grey;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
                                      LM386 IN  o------- capacitor 4.7nF ----------- coil 100 mH  (or 150 mH)&lt;br /&gt;
 Arduino pinPerimeterLeft   o------o  LM386 OUT&lt;br /&gt;
                                      LM386 GND o----------------------------------- coil&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Achtung''': Die Spule muss direkt an den Verstärkermodul angeschlossen werden. So wird die Störfestigkeit des schwachen Spulensignals gegenüber Einflüssen anderer Komponenten (Motore, DC-DC-Wandler) verbessert. &lt;br /&gt;
&lt;br /&gt;
'''Differentielles Signal''': Die aktuelle Software erfordert das Weglassen des Kondensators 4.7nF in Reihe mit der Spule. &lt;br /&gt;
&lt;br /&gt;
'''Nicht-differentielles Signal''': Mithilfe des Kondensators (4.7 nF) wird das Sendersignal wieder rekonstruiert (s. Abschnitt Signal), der Empfängeschaltkreis ist ein Schwingkreis (C und L und Perimeterschleife fungiert als Antenne) und alle Parameter (C, L, Schleifendrahtlänge) müssen übereinstimmen. Weil dies die Abstimmung schwierig macht, empfehlen wir das nicht-differentielle Signal nicht!&lt;br /&gt;
&lt;br /&gt;
=== Abstand Spule/Verstärker zu Motoren ===&lt;br /&gt;
Achte auf die Einhaltung aller Mindestabstände zwischen den folgenden Komponenten:&lt;br /&gt;
 * Spule zu Radmotor: &amp;gt; 15cm&lt;br /&gt;
 * Spule zu Mähmotor: &amp;gt; 10cm &lt;br /&gt;
 * Spule zu DC-DC Wandler: &amp;gt; 10cm&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
 File: Dcdc_noise.jpg | Achtung: Halte Spule/Vorverstärker von den DC-DC-Wandlern und Motoren fern!!!&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Signalmessungen ===&lt;br /&gt;
Sender / Spule / LM386 Verstärker Ausgangssignale sollten etwa so aussehen: (witere Details über das Signal s. Abschnitt Signal)&lt;br /&gt;
&amp;lt;gallery&amp;gt; &lt;br /&gt;
 File: Perimeter_signal_steps.png | Perimetersignal an Sender, Empfangsspule und LM386 (Theorie)&lt;br /&gt;
 File: coil_signal_without_capacitor.png | differentielles Signal / Spulensignal ohne Kondensator (5V sender, 5 Ohm Schleife - blau: Perimeter, gelb: Spule, grau: LM386 Verstärkerausgang)&lt;br /&gt;
 File: Lm_output_dc_noise.jpg | LM386 Ausgang mit DC Störungen (differentielles Signal / Spule ohne Kondensator)&lt;br /&gt;
 File: Perimeter2_receiver_coil.jpg | LM386 Ausgang (nicht-differentielles Signal / Spule mit Kondensator, 12V Sender, 120m Schleife)&lt;br /&gt;
 File: coil_signal_with_capacitor.png | nicht-differentielles Signal / Spulensignalmit Kondensator (5V Sender, 5 Ohm Schleife - grau: Perimeter, gelb: Spule, blau: LM386 Verstärkerausgang)&lt;br /&gt;
 File: Lm_output_motor_noise.jpg | LM386 Ausgang mit Störungen durch Motoren (differentielles Signal / Spule ohne Kondensator)&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Signal und Rauschmessungen ===&lt;br /&gt;
Einige Spulenmessungen ohne Verstärker aber mit Störungen (Motoren, DC/DC-Wandler etc.): &lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
 File: Coil_60k_parallel.jpg | Spule und 60 kOhm Parallelwiderstand ohne Störungen (Spulenhintergrund-rauschen Vpp=7 mV)&lt;br /&gt;
 File: Coil_dc_converter_noise.jpg | Spule und 60 kOhm Parallelwiderstand mit Störungen durch DC/DC-Wandler (DC/DC-Rauschen Vpp=18 mV)&lt;br /&gt;
 File: Coil_motor_noise.jpg | Spule und 60 kOhm Parallelwiderstand mit Störungen durch Motoren&lt;br /&gt;
 File: Perimeter2_receiver_coil_pwm.jpg | Spulensignal mit seriellem 4.7nF Kondensator, PWM-Perimetersignal (nicht empfohlen) ohne Störungen&lt;br /&gt;
 File: Fft_signal.png | FFT Signal&lt;br /&gt;
 File: Fft_motors.png | FFT Motor-Störungen&lt;br /&gt;
 File: Fft_dcdc.png | FFT DC/DC-Störungen&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ADC-Kalibrierung am Empfänger ===&lt;br /&gt;
[[File:warning.png]] Die ADC-Kalibrierung (bei ausgeschaltetem Sender!) sorgt für eine korrekte Erkennung der Nulllinie (Stille), sodass das empfangene Signal später symmetrisch zur Nulllinie angezeigt wird.&lt;br /&gt;
# Der Perimetersender und die Motoren des ArduMower müssen während der Kalibrierung ausgeschaltet sein!&lt;br /&gt;
# Wenn eine Störung durch einen anderen Sender nicht zu vermeiden ist, muß während der Kalibrierung die Spule entfernt und der Eingang es LM386 mit GND verbunden werden.&lt;br /&gt;
# Führe die ADC-Kalibrierung einmal aus (&amp;quot;pfodApp-&amp;gt;ADC Calibration&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Nach der korrekt durchgeführten Kalibrierung sollte das Signal per pfodApp Plot ('sig') bei ausgeschaltetem Perimetersender ungefähr als Null angezeigt werden. Nach Einschalten des Perimetersenders sollte das Signal etwa diesselbe positive wie negative Maximalamplitude ('Symmetie zur Nulllinie') aufweisen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
 File: perimeter_v2_sig_symmetric.jpg | symmetrisches Signal bei eingeschaltetem Sender (nach ADC-Kalibrierung)&lt;br /&gt;
 File: perimeter_v2_sender_off.jpg | Nullsignal bei ausgeschaltetem Sender (nach ADC-Kalibrierung)&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Problemanalyse und Fehlerbehebung am Empfänger ===&lt;br /&gt;
&lt;br /&gt;
Empfangenes Signal, Filterergebnis und Signalqualität können per Android Handy über die pfodApp-&amp;gt;Plot-&amp;gt;Perimeter angezeigt werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
 File: Perimeter_snr.png | Signal-Rausch-Verhältnis (SNR)&lt;br /&gt;
 File: Perimeter_signal_38khz.png | Signal, Filterergebnis, LP Filterergebnis, innen/außen, Ereigniszähler, Signal ein/aus, Signalqualität&lt;br /&gt;
 File: Perimeter_plot_moving_from_inside_to_outside.png | Fahren von innen nach außen&lt;br /&gt;
 File: Perimeter_v2_plot.png&lt;br /&gt;
 File: Perimeter_v2_plot_new.png&lt;br /&gt;
 File: Ardumower_perimeter2_test.jpg&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Beschreibung der im Plot angezeigten Signalverläufe:&lt;br /&gt;
 sig:  Spulensignal (Sequenz der Rohimpulse nach ADC) als kurzer Snapshot (32 samples), Update alle 20 Sekunden &lt;br /&gt;
       (also 20 Sekundenwarten bis zum nächsten Snapshot)&lt;br /&gt;
 mag:  Filterergebnis: innen (negativ) oder außen (positiv), magnitude: Abstand zur Perimeterschleife / magnetische Signalstärke (RSSI)&lt;br /&gt;
       - wird benutzt zum &amp;lt;b&amp;gt;Perimeter verfolgen&amp;lt;/b&amp;gt;&lt;br /&gt;
 smag: Filterergebnis, low-pass-gefiltert, ohne Vorzeichen (geglätteter mag-Verlauf) - verwendet zur Erkennung des &amp;lt;b&amp;gt;'Sender-aus' Zustandes&amp;lt;/b&amp;gt;&lt;br /&gt;
       Der Grenzwert kann über die pfodApp gesetzt werden (Settings-&amp;gt;Perimeter-&amp;gt;Timed-out if below smag)&lt;br /&gt;
 in:   binäres Ergebnis des low-pass Filters: innerhalb (1) oder außerhalb (0) der Perimeterschleife - wird benutzt zur &amp;lt;b&amp;gt;Erkennung des Perimetergrenzverlaufs&amp;lt;/b&amp;gt;&lt;br /&gt;
       Ist der ArduMower eine bestimmte Zeit außerhalb der Schleife, geht er in den Fehlerstatus. Diese Zeit kann per pfodApp&lt;br /&gt;
       (Settings-&amp;gt;Perimeter-&amp;gt;Timeout (s) if not inside) eingestellt werden&lt;br /&gt;
 cnt:  Anzahl der Wechsel von innen nach außen (counter, Zähler)&lt;br /&gt;
 on:   Perimetersender ist aktiv (1) oder inaktiv (0), basiert auf der Auswertung des smag Ergebnisses&lt;br /&gt;
 qty:  &amp;lt;b&amp;gt;Signalqualität&amp;lt;/b&amp;gt; (Aussage über die Verläßlichkeit der Erkennung 'innerhalb / außerhalb' aus dem Filterergebnis)&lt;br /&gt;
       Verhältnis aus Vergleich mit Mustersignal zu Vergleich mit inversem Mustersignal              &lt;br /&gt;
       1.0 bedeutet schlechte Qualität, Du solltest Werte von 1.5 oder höher)&lt;br /&gt;
&lt;br /&gt;
Im Plot soll der 'mag'-Verlauf frei von Spitzen sein: innerhalb der Schleife sollte das Signal eine negative Kurve, außerhalb eine positive Kurve beschreiben. Weist die Kurve Spitzen auf, versuche folgende Maßnahmen zur Fehlerbeseitigung bzw. Optimierung:&lt;br /&gt;
&lt;br /&gt;
* Benutze immer einen ausreichend langen und korrekt abgerollten Schleifendraht (20m oder länger). Benutze niemals einen zu kurzen (Mindestwiderstand 5 Ohm!) oder gar aufgerollten Draht. &lt;br /&gt;
* Für den 'Wohnzimmertest' sollte ein 100 Ohm Widerstand in Reihe mit 5m Draht bei 6V seine Aufgabe erfüllen.&lt;br /&gt;
* Verbinde die Empfangsspule mit 'pinPerimeterLeft' auf dem PCB (am falschen Pin könnte das Signal 'etwas schwach' reinkommen)&lt;br /&gt;
* Die Spulenpolung kann per pfodApp eingestellt werden (wird 'außen' angezeigt, wenn der Ardumower sich innrhalb der Schleife befindet?). Denselben Effekt hat das Umklemmen der Schleifenenden am Senderausgang.&lt;br /&gt;
* Sollte das Signal schwach erscheinen, überprüfen, ob am Spulenverstärker das Poti &amp;quot;voll aufgedreht&amp;quot; ist! Hilfreich ist die gleichzeitige Anzeige des Signal per pfodApp (Plot --&amp;gt; Perimeter).&lt;br /&gt;
* Die Kabelverbindung zwischen Spule und LM386-Vorverstärker muss möglichst kurz sein - am Besten die Spule direkt am Verstärker anschließen!&lt;br /&gt;
* Halte den Abstand zwische Spule und Motoren sowie DC/DC-Wandlern möglichst groß (30cm oder mehr!)&lt;br /&gt;
* Nutze die magnetische Abschirmwirkung (z.B. Deines Akkus) zwischen Spule und Störquellen.&lt;br /&gt;
* Einstellen der Senderspannung: bei längeren Perimeterschleifen (&amp;gt;80m) die Spannung höher wählen (Potentiometer DC/DC-Wandler), bei kürzeren Schleifen (&amp;gt;25m) eher niedriger (anstreben einer Sendeleistung = Spannung * Strom von ca 10W)&lt;br /&gt;
* Versuche bei laufenden Motoren die Spule leicht zu einer Seite zu neigen um die Signalqualität 'qty' zu erhöhen.&lt;br /&gt;
&lt;br /&gt;
== Messungen ==&lt;br /&gt;
&lt;br /&gt;
Zum Vergleich Beispielwerte, gemessen an verschiedenen, im Gelände getesteten Kombinationen von Sender-/Empfänger-/Schleifenparametern:&lt;br /&gt;
&lt;br /&gt;
1) 120m (0.7mm^2), R=4 Ohm, 6.5V, Spule Vpp 20mV&lt;br /&gt;
 Störsignalpegel (max): smag=192&lt;br /&gt;
 Signal (min): smag=254&lt;br /&gt;
 SNR=Signal/Störsignal=254/192=1.3&lt;br /&gt;
&lt;br /&gt;
2) 30m (0.7mm^2), R=1.0 Ohm (+4 Ohm series R), 6.5V, Spule Vpp 120 mV&lt;br /&gt;
 Störsignalpegel (max): smag=192&lt;br /&gt;
 Signal (min): smag=896&lt;br /&gt;
 SNR=Signal/Störsignal=896/192=4.6&lt;br /&gt;
&lt;br /&gt;
=== Videos ===&lt;br /&gt;
#[http://www.youtube.com/watch?v=FL6K98B2Zsk&amp;amp;feature=player_detailpage#t=265 Perimeter2 Demo]&lt;br /&gt;
#[https://www.youtube.com/watch?v=QCA6Dm3rs3M Test 120m Perimeterschleife]&lt;br /&gt;
#[https://www.youtube.com/watch?v=NIer_kITelc Theorie zu Perimeterschleife und Matched Filter (in deutsch)]&lt;br /&gt;
#[https://www.youtube.com/watch?v=VxJN2xb55dU&amp;amp;feature=youtu.be Sender-PCB]&lt;br /&gt;
&lt;br /&gt;
= Verfolgung der Begrenzungsschleife =&lt;br /&gt;
&lt;br /&gt;
Das Abfahren der Schleife wird über einen softwareseitig realisierten digitalen PID-Regler gesteuert. Die Regler-Parameter (P,I,D) können über ein Android-Handy per pfodApp eingestellt werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Ardumower_perimeter_pid.jpg&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mehr Informationen über PID-Regler sind hier zu finden: &lt;br /&gt;
[http://www.ardumower.de/index.php/de/forum/anleitungen-hilfe/121-pid-regelung-fuer-drehzahl-drehung-etc-richtig-einstellen Forum].&lt;br /&gt;
&lt;br /&gt;
= Sensor Signalfusion =&lt;br /&gt;
Das Magnetfeld der Perimeterschleife könnte man als Input für eine [http://wiki.ardumower.de/index.php?title=Sensor_fusion zur Positionsbestimmung des ArduMower nutzen].&lt;br /&gt;
&lt;br /&gt;
= Weiterführende Links =&lt;br /&gt;
#[http://www.ardumower.de/index.php/en/forum/schleifensensoren-generator/83-ir-bake-generator-empfaenger-diy Ein anderer Navigationsansatz sind Infrarot-Baken]&lt;br /&gt;
#[http://grauonline.de/wordpress/?page_id=364 Mehr Details zum 'matched filter']&lt;br /&gt;
#[http://www.grauonline.de/alexwww/ardumower/oscilloscope/oscilloscope.html Soundkarten-Oszilloskop inklusive 'matched filter']&lt;br /&gt;
&lt;br /&gt;
= Perimeter V1 (für alten Code V0.9.3, nicht mehr empfohlen) =&lt;br /&gt;
&lt;br /&gt;
Dies war die erste Version unseres Perimetersenders und Empfängers. Sie wies einige Nachteile auf (Orientierungsfehler, Keine 'Sender-aus'-Erkennung, keine Möglichkeit zur Feststellung des Aufenthaltsbereiches inner-/außerhalb der Schleife), so dass der Einsatz nicht weiter empfohlen wird. Benutze die Nachfolgeversion V2, wie oben beschrieben.&lt;br /&gt;
&lt;br /&gt;
== Sender ==&lt;br /&gt;
Du kannst den Sender eines kommerziellen Rasenmäroboters nutzen (der hier gezeigte Sender ist kompatibel mit Tianchen oder Rotenbach Mährobotern), oder Du baust Dir selber einen:&lt;br /&gt;
&lt;br /&gt;
Ein Arduino (z.B. Nano) generiert ein Rechtecksignal, welches die Polarität eines Motortreibers (L298N) mit 7.8 Khz schaltet. Dadurch wechselt das Ausgangssignal zwischen Vcc und GND. Ein Schwingkreis verstärkt die Signalspitzen (Resonanzfrequenz ist dieselbe wie die Schaltfrequenz - 7.8 Khz). So reicht es aus, den Motortreiber mit 5V (statt 12V) zu betreiben. Die Spannungsquelle muß etwa 2W (400mA bei 5V) leisten. &lt;br /&gt;
Ein Teil des Signals wird durch den Arduino (ADC) durch eine Diode und einen Spannungsteiler erfaßt. So kann festgestellt werden, ob die Perimeterschleife angeschlossen ist. Durch den Schleifendraht fließt ein Strom von ca. 150mA (Drahtquerschnitt 2-3 mm^2, Länge max 500 m)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Arduino_perimeter_sender.png ‎&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Weil man vielleicht nicht immer die genau passende Empfängespule zur Hand hat, hier ein paar mögliche Kombinationen (Spule / Kondensator), die die Resonanzfrequenz von 7.8 Khz aufweisen:&lt;br /&gt;
*Kombination 1: Spule: 160µH, Kondensator: 3,3µF/50V  (getestet)&lt;br /&gt;
*Kombination 2: Spule 33mH, Kondensator: 12nF (nicht getestet)&lt;br /&gt;
&lt;br /&gt;
==== Stromversorgung ====&lt;br /&gt;
Zur Erzeugung der 5V Spannung wird ein step-down-Wandler (z.B. Module mit LM2596) eingesetzt. Vor dem Einsatz in der Schaltung muß der Wandler auf 5V einjustiert werden. &lt;br /&gt;
&lt;br /&gt;
'''Warnung''' : Lege niemals mehr als 5V auf die Arduino 5V Pins oder Du zerstörst ihn. Deswegen: vorher die Spannung einstellen und kontrollieren!&lt;br /&gt;
&lt;br /&gt;
==== Funktionstest ====&lt;br /&gt;
1. Nach dem Code-Hochladen und Anschliessen der Begrenzungsschleife sollte die Arduino LED an sein. Nun entferne den Schleifendraht und die LED sollte ausgehen.&lt;br /&gt;
&lt;br /&gt;
2. Sollte das nicht so sein, kontrolliere mit einem Voltmeter zum Einen die Spannung zwischen Pin 9 des Arduino und dann die am Motortreiberausgang (OUT_1) jeweils gegen GND - beide sollten eine Gleichspannung  2.5 Volt führen.&lt;br /&gt;
&lt;br /&gt;
3. Hast Du ein Oszilloskop? Dann schließe statt der Begrenzungsschleife das Oszilloskop an den Sender an. Das gemessene Signal sollte folgendermaßen aussehen:&lt;br /&gt;
&lt;br /&gt;
Das Ausgangssignal zeigt eine höhere Ampltude (hohe Spitzenwerte) als das Eingangssignal:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Perimetersignal.jpg|Signal am Senderausgang &lt;br /&gt;
File: Ardumower_perimeter_sender_schematics.png|Grundprinzip des Schwingkreises&lt;br /&gt;
File: Arduino_perimeter_sender_photo.jpg&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Für einen einfachen Empfangstest kannst Du die Empfangsspule direkt ans Oszilloskop anschließen. Das gemessene Signal sollte etwa so  aussehen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Coilsignal.jpg|Signal an der Empfangsspule&lt;br /&gt;
File: Fft.jpg|Signal im Frequenzspektrum, überlagert durch Motorstörungen&lt;br /&gt;
File: Ardumower_perimeter_spectrum_plot.jpg| Anzeige des Frequenzspektrums über pfodApp&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Empfänger ==&lt;br /&gt;
Der Empfänger nutzt zwei Spulen, die rechts und links vorn im ArduMower montiert sind. Die Signalstärke der linken und rechten Spule werden ausgewertet, um sie vergleichen zu können.&lt;br /&gt;
&lt;br /&gt;
Prinzip:&lt;br /&gt;
# Verstärkung der alternierenden Signale per OPAMP&lt;br /&gt;
# Optional: Bandpass-Filterung zum Ausblenden der Störungen durch Motore etc.&lt;br /&gt;
# Ermittlung der Signalstärke von linker und rechter Spule&lt;br /&gt;
&lt;br /&gt;
Vorteil dieser Version: analoge Auswertungfunktioniert hervorragend.&lt;br /&gt;
Nachteil: Du kannst nicht feststellen, ob Du Dich gerade innerhalb oder außerhalb der Begrenzungsschleife aufhälst, wenn Du nicht jede Überfahrt des Begrenzungsdrahtes mitprotokollierst. Es ist auch nicht möglich festzustellen, ob Du die Begrenzungsschleife im oder gegen den Uhrzeigersinn abfährst.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Arduino_perimeter_receiver.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Eine Spule empfängt das Signal des Senders. Ein Schwingkreis (LC: SPule und Kondensator)verstärkt das empfangene Signal bei einer Resonanzfrequenz von 7.8 kHz. Das Signal wird weiter verstärkt durch eien LM386-Verstärker (hier: Arduino Soundsensor mit Spule statt Mikrofon). Ein Bandpassfilter (digitaler Filter, FFT - Fast Fourier Transformation) läuft auf dem Arduino und filtert die gewünschte Frequenz (7.8 Khz) und erzeugt ein PWM-Signal (Pulsbreite proportional zur Signalstärke). Über einen Tiefpassfilter wird das PWM-Signal in eine Gleichspamnnung gewandelt.&lt;br /&gt;
Beachte: Die Verdrahtung zwischen ist vereinfacht dargestellt - Details der Verdrahtung s. Schaltplan.&lt;br /&gt;
&lt;br /&gt;
Wir haben folgende Kombinationen von Spulen und Verstärkern getestet:&lt;br /&gt;
&lt;br /&gt;
'Arduino Soundsensor'&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Soundsensor.jpg| Signalverstärkung über LM386 - Arduino Soundsensor mit Spule statt Mikrofon&lt;br /&gt;
File: YwRobot_Sensor.jpg |Arduino Soundsensor mit LM386&lt;br /&gt;
File: YwRobot_circuit.png |Arduino Soundsensor Modulschaltplan&lt;br /&gt;
File: Coil_85mh.jpg|85 mH Spule&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
LM386 Verstärker&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Lm386_amplifier.jpg| LM386 Versärker (200-fach)&lt;br /&gt;
File: Lm386_modified.jpg| modifizierter LM386-Verstärker&lt;br /&gt;
File: Ardumower_lm386_circuit.png | LM386 Modulschaltplan&lt;br /&gt;
File: Coil_small.jpg| 104 mH Spule&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wichtig: Bei Verwendung dieses Verstärkers muß der Kondensator C3 überbrückt werden (erzeugt das für den Arduino erforderliche VCC/2 offset). Dies Spule schließt man an &amp;quot;IN&amp;quot; und &amp;quot;GND&amp;quot; an.&lt;br /&gt;
&lt;br /&gt;
'''Beachte''': die Spule unbedingt direkt am Verstärkermodul befestigen. Dies minimiert die Störeinflüsse durch andere Komponenten wie z.B. Motoren auf das schwache Spulensignal.&lt;br /&gt;
=== Funktionstest ===&lt;br /&gt;
# Stelle eine korrekte Funktion des Schleifensenders sicher (wie bereits weiter oben beschrieben).&lt;br /&gt;
# Drehe das Potentiometer des Arduino Soundsensors auf Maximum (gegen den Uhrzegersinn).&lt;br /&gt;
# Lade das Programm auf den Arduino und bewege eine Spule in Richtung des Begrenzungsdrahtes: die LED des Arduino sollte zu blinken beginnen. Halte nun beide Spulen im gleichen Abstand über den Begrenzungsdraht: die LED sollte nun permanent leuchten.&lt;br /&gt;
# Wenn das so nicht funktioniert, öffne die serielle Konsole und  prüfe die Signalwerte.&lt;br /&gt;
&lt;br /&gt;
=== Spulenauswahl ===&lt;br /&gt;
mathematische Näherungsberechnung einer Spule:&lt;br /&gt;
&lt;br /&gt;
 L = 1nH x n² x ((D² / mm² ) / (l / mm))&lt;br /&gt;
 l = Spulenlänge&lt;br /&gt;
 D = Spulendurchmesser&lt;br /&gt;
&lt;br /&gt;
Beispiel: eine Induktion von 85 mH, Durchmesser 10 mm, Länge 40 mm erfordert ca. 5830 Windungen.&lt;br /&gt;
&lt;br /&gt;
Diese Induktivität von 85 mH und ein Kondensator von 4.7 nF führen zu einer Resonanzfrequenz von 7963 Hz.&lt;br /&gt;
&lt;br /&gt;
 f0 = 1 / (2 * PI * sqrt(L * C)) = 1 / (2 * PI * sqrt(0.085 H * 0.0000000047 F)) =  7963 Hz&lt;br /&gt;
&lt;br /&gt;
Weil man vielleicht nicht immer die genau passende Empfängerspule zur Hand hat, hier ein paar mögliche Kombinationen (Spule / Kondensator), die die Resonanzfrequenz von 7.8 Khz aufweisen:&lt;br /&gt;
 Kombination 1: Spule: 85mH, Kondensator: 4.7nF  (getestet)&lt;br /&gt;
 Kombination 2: Spule: 104mH, Kondensator: 4nF (getestet)&lt;br /&gt;
&lt;br /&gt;
=== Anordnung der Spulen ===&lt;br /&gt;
die Spulen sind am Boden des ArduMower so angeordnet, dass sie einen Winkel von 90 Grad einschließen, d.h. jede ist um 45 Grad aus der Längsachse gedreht.&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Ardumower_spulen.jpg| Anordnung der Spulen&lt;br /&gt;
File: L50_coils.jpg | Beispiel (Ambrogio L50)&lt;br /&gt;
File: L50_parcours.jpg | Testparcours&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Messung der Signalstärke ===&lt;br /&gt;
Zum Vergleich von Messungen wurde die Signalstärke bei verschiedenen Schleifenabständen bestimmt. Die Signalsärke (soll heißen: der berechnete ADC-Wert) kann in der Android pfodApp angezeigt werden. Der Abstand (cm) ist der berechnete Wert zwischen Perimeterschleife und Spule (eingebaut im ArduMower).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Perimeter_plot.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Schleifenverlegung ===&lt;br /&gt;
&lt;br /&gt;
Wichtig bei der Schleifenverlegung ist die Vermeidung von scharfen Ecken: Rundungen sind angesagt! Fährt der Ardumower exakt über eine scharfe Ecke, kann er unter Umständen die Schleife nicht mehr orten, da Spule und Schleife fluchten / parallel stehen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Schleifen_blind.jpg  | Nicht empfohlen: ArduMower kann keine scharfen Ecken orten!&lt;br /&gt;
File: Ardumower_coil_signal.png| Wie ändert sich das Sinal, wenn die Spule gedreht wird??&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Videos ===&lt;br /&gt;
#[http://www.youtube.com/watch?v=FGaUSg-uUxk Perimeter Stoptest]&lt;br /&gt;
#[http://www.youtube.com/watch?v=8R8QaffNlJw Perimeter Verfolgungstest]&lt;br /&gt;
#[http://www.youtube.com/watch?v=CftrnetFVYc&amp;amp;feature=youtu.be Test zum Finden und Verfolgen mit L50]&lt;br /&gt;
#[http://www.youtube.com/watch?feature=player_embedded&amp;amp;v=fjuQViS2rHM Test zum Finden und Verfolgen mit Rotenbach]&lt;/div&gt;</summary>
		<author><name>Deejay</name></author>	</entry>

	<entry>
		<id>https://wiki.ardumower.de/index.php?title=Perimeter-Schleife&amp;diff=2730</id>
		<title>Perimeter-Schleife</title>
		<link rel="alternate" type="text/html" href="https://wiki.ardumower.de/index.php?title=Perimeter-Schleife&amp;diff=2730"/>
				<updated>2015-08-28T07:13:50Z</updated>
		
		<summary type="html">&lt;p&gt;Deejay: /* Automatische Schleifensignalabschaltung */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Zusammenfassung=&lt;br /&gt;
Eine Begrenzungsschleife (oder Perimeterdraht) ist eine Art 'elektronischer Zaun': er veranlaßt den ArduMower zum Stoppen / Umkehren sobald die Grenze erreicht ist. Nicht in jeder Umgebung ist eine Begrenzungsschleife notwendig - Rasensensoren könnten eine Alternative sein.&lt;br /&gt;
&lt;br /&gt;
Das Prinzip: durch den im Garten verlegten Schleifendraht wird ein Signal gesendet, das der Ardumower ausgewertet. Gebraucht werden ein Sender zur Erzeugung und Übergabe des Signals an die Schleife und ein Empfänger zur Signalauswertung im ArduMower.&lt;br /&gt;
&lt;br /&gt;
Und so wird das Signal empfangen: eine (oder zwei) Empfangsspulen liefern ein Signal, dessen Stärke je nach Abstand zwischen Schleifendraht und Empfangsspule(n) variiert. Interessanterweise wechselt das Signal in dem Moment seine Polarität, wo der ArduMower (genauer: die Empfänger-Spule) den Schleifendraht überfährt. Es gibt zwei prinzipielle Möglichkeiten, den Begrenzungsdraht zu orten. Wir haben beide Methoden implementiert (Perimeter V1 und V2) wie nachfolgend beschrieben.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Ardumower_perimeter.jpg | Perimeterdraht&lt;br /&gt;
File: Ardumower_perimeter_components.jpg | Komponenten&lt;br /&gt;
File: Perimeter_signal_strength.jpg | Signalstärke&lt;br /&gt;
File: Perimeter_gradient.png | Verlauf der Signalstärke&lt;br /&gt;
File: Ardumower_perimeter_magneticfield.png | Perimeter-Magnetfeld&lt;br /&gt;
File: Perimeter_excluding_objects.png | Objekte ausschließen&lt;br /&gt;
File: Perimeter_divide.png | Flächen aufteilen&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://hyperphysics.phy-astr.gsu.edu/hbase/magnetic/magcur.html Magnetfeld Berechnungstool]&lt;br /&gt;
&lt;br /&gt;
Videos:&lt;br /&gt;
[http://youtu.be/r4ZMgasMkH0 Magnetfeld Demovideo]&lt;br /&gt;
&lt;br /&gt;
=Begrenzungsschleife V2 (erforderlich für aktuellen ArduMower Code)=&lt;br /&gt;
&lt;br /&gt;
[[Image:Yt-brand-standard-logo-95x40.png|thumb|180px|https://www.youtube.com/watch?v=NIer_kITelc&amp;amp;feature=youtu.be]]&lt;br /&gt;
&lt;br /&gt;
Dies ist die neue Version von Sender und Empfänger für die Begrenzungsschleife (erhältlich über den [https://www.marotronics.de/index.php?k=7 shop] [[File: shopping.png|link=https://www.marotronics.de/index.php?k=7]]).&lt;br /&gt;
&lt;br /&gt;
Beim Überfahren des Schleifendrahtes passiert nun etwas Interessantes: die Polarität der Signalspannung wechselt von negativ auf positiv bzw. umgekehrt - je nachdem, ob man von innen oder außen kommt. Dadurch werden sowohl das Überfahren selbst als auch der Status (Aufenthalt innerhalb oder außerhalb der Schleife) eindeutig erkennbar. Wie bei der V1 nutzen wir zur Signalverstärkung wieder den Motortreiber für das Ausgangssignal und einen Operationsverstärker für das Eingangssignal von der Empfangsspule. Der Sender übergibt eine digitale Signalfolge (auch als 'pseudo-noise' bezeichnet) an die Schleife, die vom Empfänger über einen software-basierten digitalen [http://en.wikipedia.org/wiki/Matched_filter Matched-Filter] ausgewertet wird. Der Filter liefert als Ergebnis einen Peak: positiv - ArduMower innerhalb oder negativ - ArduMower außerhalb der Begrenzungsschleife.&lt;br /&gt;
&lt;br /&gt;
Prinzipablauf:&lt;br /&gt;
  Senderseite&lt;br /&gt;
# Erzeugen des Ausgangssignals durch den Arduino Nano&lt;br /&gt;
# Verstärkung des Ausgangssignals durch den Motortreiber (MC33926), Schleifendrahtenden anstatt eines Motors an den Ausgang anschließen&lt;br /&gt;
&lt;br /&gt;
  ArduMower&lt;br /&gt;
# Eingangssignal per Empfangsspule aufnehmen&lt;br /&gt;
# Eingangssignal per Operationsverstärker (z.B. LM386) verstärken&lt;br /&gt;
# ADC sampling durch Arduino Mega&lt;br /&gt;
# Signalfilterung and Analyse durch ein digitales Filter (software-basierter Matched-Filter-Algorithmus)&lt;br /&gt;
# Auswertung des matched filter Ergebnisses (zur Feststellung des Aufenthaltbereiches inner- / außerhalb der Schleife, Schleifenabfahren usw.)&lt;br /&gt;
&lt;br /&gt;
Folgende Bilder erklären den Wechsel der Signalpolarität innerhalb und außerhalb der Schleife. Sie zeigen auch die Richtung der magnetischen Flusslinien, die vom Begrenzungsdraht ausgehen und wie sie die Spule innerhalb und außerhalb der Begrenzungsschleife treffen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Ardumower_perimeter2.jpg| Innen/außen-Erkennung über den Polaritätswechsel&lt;br /&gt;
File: Fluxdirections.png| Flussrichtungen&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Signal ==&lt;br /&gt;
Der Schlüssel zu einem guten Empfang des Perimetersignals überall auf dem Rasen ist die Optimierung des Signal-Rausch-Abstandes (SNR=signal/noise ratio). Um das SNR zu maximieren, gibt es zwei Ansätze:&lt;br /&gt;
# Signalstärke hochfahren (elektr. Leistung) oder&lt;br /&gt;
# Erhöhung der Signallänge&lt;br /&gt;
&lt;br /&gt;
Wir nutzen eine Kombination beider Ansätze: der Sender wiederholt ständig einen digitalen Code ('pseudonoise4_pw') mit 9615 Hz :&lt;br /&gt;
&lt;br /&gt;
 1,1,-1,-1,1,-1,1,-1,-1,1,-1,1,1,-1,-1,1,-1,-1,1,-1,-1,1,1,-1&lt;br /&gt;
&lt;br /&gt;
'1' bedeutet einen positiven Signalimpuls, '-1' einen negativen. Der kürzeste erzeugte Signalwechsel ist '-1,1', das entspräche dem höchsten Ton (wenn man es hörbar darstellen würde) von 4808 Hz. Das andere Extrem wäre der längste erzeugte Signalwechsel mit '1,1,-1,-1', bei einer Frequenz von 2404 Hz.&lt;br /&gt;
&lt;br /&gt;
Die Spule erkennt nur diese Signalwechsel des Sendersignals. So - also ohne den Kondensator in Serienschaltung zur Spule - zeigt sich das (differentielle) Empfangssignal wie folgt:&lt;br /&gt;
&lt;br /&gt;
 1,0,-1, 0,1,-1,1,-1, 0,1,-1,1,0,-1, 0,1,-1, 0,1,-1, 0,1,0,-1&lt;br /&gt;
&lt;br /&gt;
Verwendet man jedoch den Kondensator in Reihe zur Spule, sind gesendetes und empfangenes (nicht-differentielles) Signal vom Prinzipverlauf wieder identisch.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Perimeter_signal_steps.png | Perimetersignal an Sender und Empfangsspule&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Arduino ADC wertet das Empfangssignal mit einer Abtastrate von 9615 Hz aus.&lt;br /&gt;
&lt;br /&gt;
== Filter ==&lt;br /&gt;
Die gewählte Signalform weist eine spezielle Charakteristik auf: &lt;br /&gt;
&lt;br /&gt;
Weil es wie ein Zufallssignal aussieht, stimmt es nicht in Teilen mit sich selbst überein, sondern erst als komplette Sequenz ([http://en.wikipedia.org/wiki/Matched_filter Übereinstimmung]). Aufgrund dieser Charakteristik können die Startpunkte der Signalsequenz durch ein [http://en.wikipedia.org/wiki/Matched_filter matched filter] ('Korrelation' mit dem gesuchten Signalmuster) ermittelt werden: sie erscheinen als Nadelimpuls im Filterergebnis - und zwar auch bei einem stark verrauschten Signal (z.B. durch Störimpulse von Motoren etc.). &lt;br /&gt;
Die Polarität der Spitze (positiv oder negativ) gibt an, ob sich die Spule inner- oder außerhalb der Begrenzungsschleife befindet.&lt;br /&gt;
&lt;br /&gt;
Du kannst sehen, wie das funktioniert: für ein tiefergehendes Verständnis des Perimetersignals und des Filters schau Dir folgende Simulation (in englisch) an: &lt;br /&gt;
[http://www.grauonline.de/alexwww/ardumower/filter/filter.html Matched filter simulation]&lt;br /&gt;
&lt;br /&gt;
# Wähle eine Perimetersignalform: setze den Schieberegler (rechts oben 'example signals') auf ''pseudonoise4_pw'' (Wert 23).&lt;br /&gt;
# Hebe den Wert des Störsignal ein wenig an: setze den Schieberegler ('noise') auf den Wert 2.&lt;br /&gt;
# Der Plot 'Matched filter' (links unten) zeigt, dass das wiederholte Signal 3 mal entdeckt wurde.&lt;br /&gt;
# Nun simuliere die Bewegung der Spule aus der Perimeterschleife nach außen:  Klicke auf 'Invert' und setze damit die Verstärkung auf '-1'. Der Filter liefert 3 negative Spitzen.&lt;br /&gt;
&lt;br /&gt;
Mehr dazu unter: [https://www.youtube.com/watch?v=NIer_kITelc Video über matched filter]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
  File: Matched_filter_principle.png| Matched Filter&lt;br /&gt;
  File: Perimeter_signal_good_bad.png|Beispiele für gutes / schlechtes Signal &lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Sender ==&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Schleifensender_Ardumower_V2.JPG | Sender Schaltplan&lt;br /&gt;
File: Ardumower_sender_pcb.jpg| Ardumower Sender PCB&lt;br /&gt;
File: Perimeter2_sender_open.jpg| Sendersignal (6.5V, ohne Perimeterschleife)&lt;br /&gt;
File: Perimeter2_sender_closed.jpg| Sendersignal (6.5V, 120m Perimeterschleife 7 Ohm)&lt;br /&gt;
File: Sender_v2_signal_sender_5v_4ohm.png| Sendersignal (6.5V, 4 Ohm Widerstand + 2m Perimeterschleife)&lt;br /&gt;
File: perimeter_wiring_motor_driver.png | Varianten der Motortreiberschaltung&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wir benutzen einen Arduino Nano zur Erzeugung und einen Mototreiber als Ausgangsverstärker des Signals. Der Motortreiber wird mit 3,2 kHz betrieben (2 Impulsbreiten 4808 und 2404 Hz). Bei ausreichend langen Schleifendrähten benötigt der Generator typischerweise 10W (6.5V, 1.7A). Unser Motortreiber verfügt über eine integrierte Strombegrenzung und eine Übertemperaturabschaltung (z.B. MC33926). Die Schleifenlänge kann im Bereich 20 - 450m betragen und muss mindestens 5 Ohm Widerstand aufweisen.&lt;br /&gt;
&lt;br /&gt;
Sender Pin-Belegung:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;background-color: lightgrey; border: solid thin grey;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 motor driver M1OUT1     o---------- perimeter loop (20-450 meters, &amp;gt; 5 Ohm) --+&lt;br /&gt;
                                                                               |&lt;br /&gt;
 motor driver M1OUT2     o---------- perimeter loop ---------------------------+&lt;br /&gt;
 motor driver Vin        o-- 6.5V&lt;br /&gt;
 motor driver M1IN1      o-- Arduino Nano pinIN1&lt;br /&gt;
 motor driver M1IN2      o-- Arduino Nano pinIN2&lt;br /&gt;
 motor driver M1PWM_nD2  o-- Arduino Nano pinPWM&lt;br /&gt;
 motor driver M1nSF      o-- Arduino Nano pinFault&lt;br /&gt;
 motor driver M1FB       o-- Arduino Nano pinFeedback&lt;br /&gt;
 motor driver EN         o-- Arduino Nano pinEnable&lt;br /&gt;
 motor driver VDD        o-- Arduino +5V&lt;br /&gt;
 motor driver M1D1       o-- GND (via Jumper)&lt;br /&gt;
 motor driver SLEW       o-- VDD (via Jumper)&lt;br /&gt;
 &lt;br /&gt;
               |---------o-- GND&lt;br /&gt;
 Potentiometer 100k -----o-- Arduino Nano pinPot&lt;br /&gt;
               |---------o-- Arduino +5V&lt;br /&gt;
 &lt;br /&gt;
 ACS712-05 OUT ------o-- Arduino Nano pinChargeCurrent    &lt;br /&gt;
 ACS712-05 A   ------o-- charging pin (+)&lt;br /&gt;
 ACS712-05 B   ------o-- battery charger +24V&lt;br /&gt;
 battery charger GND-o-- charging pin (-)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Beispiel für den Senderaufbau mit einer Lochrasterplatine:  [http://www.braunschweiger.org/content/download/SenderR212.pdf] &lt;br /&gt;
[http://www.braunschweiger.org/content/images/SenderR212_Front.jpg] [http://www.braunschweiger.org/content/images/SenderR212_Back.jpg]'''&lt;br /&gt;
&lt;br /&gt;
=== Sender Perimeterschleife und Rasengröße ===&lt;br /&gt;
Bei einer Betriebsspannung von 6.5V sollte die Perimeterschleife nicht über 450 m lang sein. (Für den 'Wohnzimmertest' tut es auch ein 100 Ohm Widerstand in Reihe mit 5m Schaltdraht.) &lt;br /&gt;
&lt;br /&gt;
Setzen wir mal eine kreisrunde Rasenfläche voraus erhalten wir für 450m Schleifenlänge (= Kreisumfang) einen Radius von 70m:&lt;br /&gt;
 radius = Schleifenlänge / (2*PI) = 450m / (2*PI) = 70 meter&lt;br /&gt;
&lt;br /&gt;
Wäre die Signalqualität nicht durch den Radius begrenzt, entspräche der eingegrenzte Rasen einer Fläche von 15000m2:&lt;br /&gt;
 Fläche = PI * (radius*radius) = PI * (70m * 70m) = 15000 m2&lt;br /&gt;
&lt;br /&gt;
Da jedoch der maximale Radius für ausreichende Signalqualität bei ca. 18m liegt, ergibt sich die maximale Rasenfläche (Annahme immer noch: Kreisfläche!) zu 1000m2: Fläche = PI * (radius*radius) = PI * (18m * 18m) = 1000 m2&lt;br /&gt;
&lt;br /&gt;
=== Einstellung der Senderstromstärke ===&lt;br /&gt;
Zur Einstellung der Sendeleistung (Spannung*Strom) gibt es verschiedene Möglichkeiten:&lt;br /&gt;
&lt;br /&gt;
*Spannung am DC/DC-Wandler: die Versorgungsspannung des Motortreibers kann über das Poti des Wandlers zwischen 6.5 bis 12V eingestellt werden. Das ist der empfohlene Weg. Beachte: der MC33926 Motortreibermotor benötigt eine Mindestspannung (Vin) von 5V. Bei zu geringer Spannung regelt der Motortreiber sporadisch ab und die Arduino-LED zur Anzeige von Unterspannung fängt an zu blinken.&lt;br /&gt;
&lt;br /&gt;
*Normale Amplitude: statt die Perimeterschleife zwischen +Vin und -Vin (doppelte Amplitude ist Standardwert) umzuschalten, kann der Motortreiber auch nur zwischen +Vin und GND (einfache Amplitude). So zieht die Schleife weniger Strom. Zur Einstellung der einfachen Amplitude muß die entsprechende Codezeile in 'sender.ino' auskommentiert werden:&lt;br /&gt;
&lt;br /&gt;
  // #define USE_DOUBLE_AMPLTIUDE    1   &lt;br /&gt;
&lt;br /&gt;
*Hochlastwiderstand: Bei einem Schleifenwiderstand kleiner 5 Ohm kann der Strom nicht weiter reduziert werden, indem man die Spannung runterdreht: unterhalb von ca. 6V arbeitet der Arduino nicht mehr richtig. Dann hilft nur noch ein zur Schleife in Reihe geschalteter Hochlastwiderstand (R: z.B. 5 Ohm, 10W). &lt;br /&gt;
&lt;br /&gt;
 @6V (Vin): 5 ohm Hochlastwiderstand =&amp;gt; I=U/R=6V/5Ohm=1.2A   (P=U*I=6V*1.2A=7.2W)&lt;br /&gt;
&lt;br /&gt;
Daher also die mindestens 10W Belastbarkeit des Widerstandes! In diesem Falle auch die 'einfache Amplitude' im Sendercode aktivieren (doppelte Amplitude nicht benutzen!).&lt;br /&gt;
&lt;br /&gt;
=== Senderstromüberwachung (in Entwicklung) ===&lt;br /&gt;
Idee: das Poti VR1 wird durch ein digitales Poti (z.B. MCP4151-5K) ersetzt. So kann die Vin des Motortreibers (und damit auch der Strom) über den Arduino eingestellt werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Lm2596_circuit.jpg | LM2596 Modulschaltplan&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
MCP4151-5K version:&lt;br /&gt;
&lt;br /&gt;
 Vout = 1.23V*(1+VR1/R1)&lt;br /&gt;
&lt;br /&gt;
 Using VR1=5K...&lt;br /&gt;
 Vstart (on reset):  Vout=1.23V*(1+2.5K/0.33K)=10v&lt;br /&gt;
 Vmax:  Vout=1.23V*(1+5K/0.33K)=19v&lt;br /&gt;
&lt;br /&gt;
=== Automatische Schleifensignalabschaltung ===&lt;br /&gt;
Während sich der ArduMower in der Ladestation aufhält, wird das Schleifensignal nicht benötigt und wir können Energie sparen. Zum Erkennen des Ladestatus wird im &amp;quot;Sender_V2&amp;quot; ein Stromsensor (INA169) zwischen Ladegerät und Ladeanschlüsse geschaltet.&lt;br /&gt;
&lt;br /&gt;
Zum aktivieren dieser Funktion ist &amp;quot;#define USE_CHG_CURRENT&amp;quot; auf 1 zu setzen&lt;br /&gt;
&lt;br /&gt;
    #define USE_CHG_CURRENT       1     // use charging current sensor for robot detection? (set to '0' if not connected!)&lt;br /&gt;
&lt;br /&gt;
Desweiteren muss der Stromsensor am analogen Eingang A2 kalibriert werden:&lt;br /&gt;
&lt;br /&gt;
* Der Mover befindet sich nicht in der Ladestation/ Ladestrom = 0 Ampere&lt;br /&gt;
* Den seriellen Monitor aufrufen&lt;br /&gt;
* In der Befehlszeile 1 eingeben und Button &amp;quot;Senden&amp;quot; drücken&lt;br /&gt;
* Mit diesem Befehl wird die Spannung am analogen Eingang A2 gemessen und im EEPROM als Referenzwert &amp;quot;chargeADCZero&amp;quot; gespeichert&lt;br /&gt;
* Am Monitor erscheint folgender Text:&lt;br /&gt;
&lt;br /&gt;
    received key=1&lt;br /&gt;
    calibrateChargeCurrentSensor (note: robot must be outside charging station!)&lt;br /&gt;
    calibration done&lt;br /&gt;
    chargeADCZero=755&lt;br /&gt;
&lt;br /&gt;
Die Kalibrierung ist damit erfolgt. Bei den weiteren Messungen wird im seriellen Monitor unter &amp;quot;chgCurrentADC&amp;quot; der Wandlerwert des analogen Eingangs A2 angezeigt:&lt;br /&gt;
&lt;br /&gt;
    time=4	chgCurrent=0.000	chgCurrentADC=755.55	 isCharging=0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Wir simmulieren einen Ladevorgang durch Belastung der Ladebuchse durch einen 22 Ohm Widerstand. Es fließt ein Ladestrom von ca. 0,8 Ampere. Damit ändert sich der &amp;quot;chgCurrentADC&amp;quot; auf 712.63. &amp;quot;chgCurrent&amp;quot; zeigt den Ladestrom in Ampere&lt;br /&gt;
&lt;br /&gt;
    time=8      chgCurrent= 0.801       chgCurrent  ADC=712.63	  isCharging=1	&lt;br /&gt;
&lt;br /&gt;
Das Flag &amp;quot;ischarging&amp;quot; wird auf &amp;quot;1&amp;quot; gesetzt und die Perimeterschleife wird für die Dauer der Ladung abgeschaltet.&lt;br /&gt;
&lt;br /&gt;
Dies funktioniert neben dem im Sender_V2 verbauten Stromsensor &amp;quot;INA169&amp;quot; auch mit einem Stromsensor ACS 712-5 oder ACS 712-20. Bei Verwendung der ACS muss jedoch die Berechnung des Ladestromes &amp;quot;chgCurrent&amp;quot; angepasst werden.&lt;br /&gt;
&lt;br /&gt;
    chargeCurrent = ((double)(((int)v)  - ((int)chargeADCZero))) / 1023.0 * 1.1 * 20;  //  * 20 bei Verwendung ACS 712-5&lt;br /&gt;
&lt;br /&gt;
=== Sendersoftware ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;NOTE&amp;lt;/b&amp;gt;: Wenn Du Dich nie zuvor mit Arduino beschäftigt hast, lies zuerst unsere Einführung &amp;lt;b&amp;gt;[http://wiki.ardumower.de/index.php?title=Arduino_first_steps 'erste Schritte mit dem Arduino']&amp;lt;/b&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[File:warning.png]] Wichtig: Vergewissere Dich, dass die Pin-Konfiguration des Arduino im benutzten Code (sender.ino) mit Deinem Senderaufbau übereinstimmt!&lt;br /&gt;
&lt;br /&gt;
Im Code (sender.ino) die passende Option für die automatische Schleifenabschaltung (bei Verwendung des oben beschriebenen Stromsensors Option 1) wählen:&lt;br /&gt;
&lt;br /&gt;
* Define if you have connected a charging current sensor for automatic sender standby:   #define USE_CHG_CURRENT 1   (or 0)&lt;br /&gt;
&lt;br /&gt;
=== Sender Zustandsanzeige ===&lt;br /&gt;
Die LED auf dem Arduino Nano signalisiert den Senderstatus:&lt;br /&gt;
* An: Perimeterschleife ist angeschlossen und arbeitet&lt;br /&gt;
* Aus: Perimeterschleife ist geöffnet (oder durch Defekt unterbrochen) und arbeitet nicht&lt;br /&gt;
* Blinkt: der ArduMower wird geladen und die Perimeterschleife ist zur Energieeinsparung durch die Software deaktiviert&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File:Perimeter_sender_console.png | Ausgabe 'sender.ino' über serielle Konsole&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Sendertest per PC-Soundkarte ===&lt;br /&gt;
Du kannst den Sender mit Deine Soundkarte und einer Spule testen:&lt;br /&gt;
&lt;br /&gt;
# Verbinde eine Spule (100 mH) mit dem Mikrofon-/Line-Eingang (max 1V) Deiner Soundkarte &lt;br /&gt;
# Starte das [http://www.grauonline.de/alexwww/ardumower/oscilloscope/oscilloscope.html Web-Oszilloskop], und wähle Filter 'Matched', Frequenz '9615' Hz, Visualization Math 'MinMax'&lt;br /&gt;
# Das Ausgangssignal sollte den Abstand zur Perimeterschleife wiederspiegeln - die Polarität (negativ/positiv) zeigt den Aufenthaltsbereich (innerhalb/außerhalb) der Schleife.&lt;br /&gt;
&lt;br /&gt;
Versuche in beiden Fällen (innen/außen), die Spule so dicht wie möglich an der Schleife zu positionieren, um ein auswertbares Signal zu empfangen (zur Erinnerung: wir arbeiten hier ohne die Signalverstärkung durch den Operationsverstärker, da der Soundkarteneingang nur mit max 1V beaufschlagt werden darf).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File:Ardumower_web_oscilloscope_time_signal_received.jpg | Effektivwert des empfangenen Zeit-Signals (Filter Off, Time scale: x5)&lt;br /&gt;
File:Ardumower_web_oscilloscope_time_signal.jpg | Ideales Zeitsignal erzeugt vom Sender (Filter Off, Time scale: x5)&lt;br /&gt;
File:Ardumower_web_oscilloscope.jpg  | Matched Filter Signal (Frequency: 9615 Hz, Math: MinMax)&lt;br /&gt;
File:Perimeter_signal_good_bad.png | Beispiel für gutes / schlechtes Signal&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://www.youtube.com/watch?v=vg5Xg0__66A Video zur Erklärung aller Schritte]&lt;br /&gt;
&lt;br /&gt;
== Empfänger ==&lt;br /&gt;
&lt;br /&gt;
Zum Signalempfang verwenden wir eine Spule (100 mH or 150 mH, nur für die älteren Softwareversionen wird ein Kondensator 4.7nF mit der Spule in Reihe geschaltet) in aufrechter Position, in der Mitte am vorderen Rand des ArduMower. Sie ist zur Verstärkung des empfangenen Signals mit dem Eigang eines LM386 Operationsverstärkers verbunden. Auf dem LM386 Modul wird der Kondensator C3 überbrückt, damit der Verstärker ein Signal zwischen 0..5V statt im Standardbereich -5V..+5V) liefert. Der Ausgang des LM386 sollte mit dem Arduino Analog-Pin ('pinPerimeterLeft') verbunden werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt; &lt;br /&gt;
 File: Perimeter_v2_receiver_circuit.png | Empfängerschaltkreis und überbrückter Kondensator C3&lt;br /&gt;
 File: Ardumower_chassis_components.png | Position der Perimeterspule&lt;br /&gt;
 File: Ardumower_coil_position.jpg | Eine zentrierte, aufrecht montierte Spule &lt;br /&gt;
 File: Ardumower_lm386_circuit.png | LM386 Modul Schaltplan&lt;br /&gt;
 File: Tire_coil_distance.jpg | Abstand Spule-Rad: Einfluß auf den Wendekreis (Kurvenwinkel)&lt;br /&gt;
 File: Coil_motor_layout.png | Zwei Spulen (experimentell), Abstand Spule-Spule Hinterradantrieb 12.5cm, Frontantrieb 19cm&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Empfängerschaltplan:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;background-color: lightgrey; border: solid thin grey;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
                                      LM386 IN  o------- capacitor 4.7nF ----------- coil 100 mH  (or 150 mH)&lt;br /&gt;
 Arduino pinPerimeterLeft   o------o  LM386 OUT&lt;br /&gt;
                                      LM386 GND o----------------------------------- coil&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Achtung''': Die Spule muss direkt an den Verstärkermodul angeschlossen werden. So wird die Störfestigkeit des schwachen Spulensignals gegenüber Einflüssen anderer Komponenten (Motore, DC-DC-Wandler) verbessert. &lt;br /&gt;
&lt;br /&gt;
'''Differentielles Signal''': Die aktuelle Software erfordert das Weglassen des Kondensators 4.7nF in Reihe mit der Spule. &lt;br /&gt;
&lt;br /&gt;
'''Nicht-differentielles Signal''': Mithilfe des Kondensators (4.7 nF) wird das Sendersignal wieder rekonstruiert (s. Abschnitt Signal), der Empfängeschaltkreis ist ein Schwingkreis (C und L und Perimeterschleife fungiert als Antenne) und alle Parameter (C, L, Schleifendrahtlänge) müssen übereinstimmen. Weil dies die Abstimmung schwierig macht, empfehlen wir das nicht-differentielle Signal nicht!&lt;br /&gt;
&lt;br /&gt;
=== Abstand Spule/Verstärker zu Motoren ===&lt;br /&gt;
Achte auf die Einhaltung aller Mindestabstände zwischen den folgenden Komponenten:&lt;br /&gt;
 * Spule zu Radmotor: &amp;gt; 15cm&lt;br /&gt;
 * Spule zu Mähmotor: &amp;gt; 10cm &lt;br /&gt;
 * Spule zu DC-DC Wandler: &amp;gt; 10cm&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
 File: Dcdc_noise.jpg | Achtung: Halte Spule/Vorverstärker von den DC-DC-Wandlern und Motoren fern!!!&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Signalmessungen ===&lt;br /&gt;
Sender / Spule / LM386 Verstärker Ausgangssignale sollten etwa so aussehen: (witere Details über das Signal s. Abschnitt Signal)&lt;br /&gt;
&amp;lt;gallery&amp;gt; &lt;br /&gt;
 File: Perimeter_signal_steps.png | Perimetersignal an Sender, Empfangsspule und LM386 (Theorie)&lt;br /&gt;
 File: coil_signal_without_capacitor.png | differentielles Signal / Spulensignal ohne Kondensator (5V sender, 5 Ohm Schleife - blau: Perimeter, gelb: Spule, grau: LM386 Verstärkerausgang)&lt;br /&gt;
 File: Lm_output_dc_noise.jpg | LM386 Ausgang mit DC Störungen (differentielles Signal / Spule ohne Kondensator)&lt;br /&gt;
 File: Perimeter2_receiver_coil.jpg | LM386 Ausgang (nicht-differentielles Signal / Spule mit Kondensator, 12V Sender, 120m Schleife)&lt;br /&gt;
 File: coil_signal_with_capacitor.png | nicht-differentielles Signal / Spulensignalmit Kondensator (5V Sender, 5 Ohm Schleife - grau: Perimeter, gelb: Spule, blau: LM386 Verstärkerausgang)&lt;br /&gt;
 File: Lm_output_motor_noise.jpg | LM386 Ausgang mit Störungen durch Motoren (differentielles Signal / Spule ohne Kondensator)&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Signal und Rauschmessungen ===&lt;br /&gt;
Einige Spulenmessungen ohne Verstärker aber mit Störungen (Motoren, DC/DC-Wandler etc.): &lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
 File: Coil_60k_parallel.jpg | Spule und 60 kOhm Parallelwiderstand ohne Störungen (Spulenhintergrund-rauschen Vpp=7 mV)&lt;br /&gt;
 File: Coil_dc_converter_noise.jpg | Spule und 60 kOhm Parallelwiderstand mit Störungen durch DC/DC-Wandler (DC/DC-Rauschen Vpp=18 mV)&lt;br /&gt;
 File: Coil_motor_noise.jpg | Spule und 60 kOhm Parallelwiderstand mit Störungen durch Motoren&lt;br /&gt;
 File: Perimeter2_receiver_coil_pwm.jpg | Spulensignal mit seriellem 4.7nF Kondensator, PWM-Perimetersignal (nicht empfohlen) ohne Störungen&lt;br /&gt;
 File: Fft_signal.png | FFT Signal&lt;br /&gt;
 File: Fft_motors.png | FFT Motor-Störungen&lt;br /&gt;
 File: Fft_dcdc.png | FFT DC/DC-Störungen&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ADC-Kalibrierung am Empfänger ===&lt;br /&gt;
[[File:warning.png]] Die ADC-Kalibrierung (bei ausgeschaltetem Sender!) sorgt für eine korrekte Erkennung der Nulllinie (Stille), sodass das empfangene Signal später symmetrisch zur Nulllinie angezeigt wird.&lt;br /&gt;
# Der Perimetersender und die Motoren des ArduMower müssen während der Kalibrierung ausgeschaltet sein!&lt;br /&gt;
# Wenn eine Störung durch einen anderen Sender nicht zu vermeiden ist, muß während der Kalibrierung die Spule entfernt und der Eingang es LM386 mit GND verbunden werden.&lt;br /&gt;
# Führe die ADC-Kalibrierung einmal aus (&amp;quot;pfodApp-&amp;gt;ADC Calibration&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Nach der korrekt durchgeführten Kalibrierung sollte das Signal per pfodApp Plot ('sig') bei ausgeschaltetem Perimetersender ungefähr als Null angezeigt werden. Nach Einschalten des Perimetersenders sollte das Signal etwa diesselbe positive wie negative Maximalamplitude ('Symmetie zur Nulllinie') aufweisen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
 File: perimeter_v2_sig_symmetric.jpg | symmetrisches Signal bei eingeschaltetem Sender (nach ADC-Kalibrierung)&lt;br /&gt;
 File: perimeter_v2_sender_off.jpg | Nullsignal bei ausgeschaltetem Sender (nach ADC-Kalibrierung)&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Problemanalyse und Fehlerbehebung am Empfänger ===&lt;br /&gt;
&lt;br /&gt;
Empfangenes Signal, Filterergebnis und Signalqualität können per Android Handy über die pfodApp-&amp;gt;Plot-&amp;gt;Perimeter angezeigt werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
 File: Perimeter_snr.png | Signal-Rausch-Verhältnis (SNR)&lt;br /&gt;
 File: Perimeter_signal_38khz.png | Signal, Filterergebnis, LP Filterergebnis, innen/außen, Ereigniszähler, Signal ein/aus, Signalqualität&lt;br /&gt;
 File: Perimeter_plot_moving_from_inside_to_outside.png | Fahren von innen nach außen&lt;br /&gt;
 File: Perimeter_v2_plot.png&lt;br /&gt;
 File: Perimeter_v2_plot_new.png&lt;br /&gt;
 File: Ardumower_perimeter2_test.jpg&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Beschreibung der im Plot angezeigten Signalverläufe:&lt;br /&gt;
 sig:  Spulensignal (Sequenz der Rohimpulse nach ADC) als kurzer Snapshot (32 samples), Update alle 20 Sekunden &lt;br /&gt;
       (also 20 Sekundenwarten bis zum nächsten Snapshot)&lt;br /&gt;
 mag:  Filterergebnis: innen (negativ) oder außen (positiv), magnitude: Abstand zur Perimeterschleife / magnetische Signalstärke (RSSI)&lt;br /&gt;
       - wird benutzt zum &amp;lt;b&amp;gt;Perimeter verfolgen&amp;lt;/b&amp;gt;&lt;br /&gt;
 smag: Filterergebnis, low-pass-gefiltert, ohne Vorzeichen (geglätteter mag-Verlauf) - verwendet zur Erkennung des &amp;lt;b&amp;gt;'Sender-aus' Zustandes&amp;lt;/b&amp;gt;&lt;br /&gt;
       Der Grenzwert kann über die pfodApp gesetzt werden (Settings-&amp;gt;Perimeter-&amp;gt;Timed-out if below smag)&lt;br /&gt;
 in:   binäres Ergebnis des low-pass Filters: innerhalb (1) oder außerhalb (0) der Perimeterschleife - wird benutzt zur &amp;lt;b&amp;gt;Erkennung des Perimetergrenzverlaufs&amp;lt;/b&amp;gt;&lt;br /&gt;
       Ist der ArduMower eine bestimmte Zeit außerhalb der Schleife, geht er in den Fehlerstatus. Diese Zeit kann per pfodApp&lt;br /&gt;
       (Settings-&amp;gt;Perimeter-&amp;gt;Timeout (s) if not inside) eingestellt werden&lt;br /&gt;
 cnt:  Anzahl der Wechsel von innen nach außen (counter, Zähler)&lt;br /&gt;
 on:   Perimetersender ist aktiv (1) oder inaktiv (0), basiert auf der Auswertung des smag Ergebnisses&lt;br /&gt;
 qty:  &amp;lt;b&amp;gt;Signalqualität&amp;lt;/b&amp;gt; (Aussage über die Verläßlichkeit der Erkennung 'innerhalb / außerhalb' aus dem Filterergebnis)&lt;br /&gt;
       Verhältnis aus Vergleich mit Mustersignal zu Vergleich mit inversem Mustersignal              &lt;br /&gt;
       1.0 bedeutet schlechte Qualität, Du solltest Werte von 1.5 oder höher)&lt;br /&gt;
&lt;br /&gt;
Im Plot soll der 'mag'-Verlauf frei von Spitzen sein: innerhalb der Schleife sollte das Signal eine negative Kurve, außerhalb eine positive Kurve beschreiben. Weist die Kurve Spitzen auf, versuche folgende Maßnahmen zur Fehlerbeseitigung bzw. Optimierung:&lt;br /&gt;
&lt;br /&gt;
* Benutze immer einen ausreichend langen und korrekt abgerollten Schleifendraht (20m oder länger). Benutze niemals einen zu kurzen (Mindestwiderstand 5 Ohm!) oder gar aufgerollten Draht. &lt;br /&gt;
* Für den 'Wohnzimmertest' sollte ein 100 Ohm Widerstand in Reihe mit 5m Draht bei 6V seine Aufgabe erfüllen.&lt;br /&gt;
* Verbinde die Empfangsspule mit 'pinPerimeterLeft' auf dem PCB (am falschen Pin könnte das Signal 'etwas schwach' reinkommen)&lt;br /&gt;
* Die Spulenpolung kann per pfodApp eingestellt werden (wird 'außen' angezeigt, wenn der Ardumower sich innrhalb der Schleife befindet?). Denselben Effekt hat das Umklemmen der Schleifenenden am Senderausgang.&lt;br /&gt;
* Sollte das Signal schwach erscheinen, überprüfen, ob am Spulenverstärker das Poti &amp;quot;voll aufgedreht&amp;quot; ist! Hilfreich ist die gleichzeitige Anzeige des Signal per pfodApp (Plot --&amp;gt; Perimeter).&lt;br /&gt;
* Die Kabelverbindung zwischen Spule und LM386-Vorverstärker muss möglichst kurz sein - am Besten die Spule direkt am Verstärker anschließen!&lt;br /&gt;
* Halte den Abstand zwische Spule und Motoren sowie DC/DC-Wandlern möglichst groß (30cm oder mehr!)&lt;br /&gt;
* Nutze die magnetische Abschirmwirkung (z.B. Deines Akkus) zwischen Spule und Störquellen.&lt;br /&gt;
* Einstellen der Senderspannung: bei längeren Perimeterschleifen (&amp;gt;80m) die Spannung höher wählen (Potentiometer DC/DC-Wandler), bei kürzeren Schleifen (&amp;gt;25m) eher niedriger (anstreben einer Sendeleistung = Spannung * Strom von ca 10W)&lt;br /&gt;
* Versuche bei laufenden Motoren die Spule leicht zu einer Seite zu neigen um die Signalqualität 'qty' zu erhöhen.&lt;br /&gt;
&lt;br /&gt;
== Messungen ==&lt;br /&gt;
&lt;br /&gt;
Zum Vergleich Beispielwerte, gemessen an verschiedenen, im Gelände getesteten Kombinationen von Sender-/Empfänger-/Schleifenparametern:&lt;br /&gt;
&lt;br /&gt;
1) 120m (0.7mm^2), R=4 Ohm, 6.5V, Spule Vpp 20mV&lt;br /&gt;
 Störsignalpegel (max): smag=192&lt;br /&gt;
 Signal (min): smag=254&lt;br /&gt;
 SNR=Signal/Störsignal=254/192=1.3&lt;br /&gt;
&lt;br /&gt;
2) 30m (0.7mm^2), R=1.0 Ohm (+4 Ohm series R), 6.5V, Spule Vpp 120 mV&lt;br /&gt;
 Störsignalpegel (max): smag=192&lt;br /&gt;
 Signal (min): smag=896&lt;br /&gt;
 SNR=Signal/Störsignal=896/192=4.6&lt;br /&gt;
&lt;br /&gt;
=== Videos ===&lt;br /&gt;
#[http://www.youtube.com/watch?v=FL6K98B2Zsk&amp;amp;feature=player_detailpage#t=265 Perimeter2 Demo]&lt;br /&gt;
#[https://www.youtube.com/watch?v=QCA6Dm3rs3M Test 120m Perimeterschleife]&lt;br /&gt;
#[https://www.youtube.com/watch?v=NIer_kITelc Theorie zu Perimeterschleife und Matched Filter (in deutsch)]&lt;br /&gt;
#[https://www.youtube.com/watch?v=VxJN2xb55dU&amp;amp;feature=youtu.be Sender-PCB]&lt;br /&gt;
&lt;br /&gt;
= Verfolgung der Begrenzungsschleife =&lt;br /&gt;
&lt;br /&gt;
Das Abfahren der Schleife wird über einen softwareseitig realisierten digitalen PID-Regler gesteuert. Die Regler-Parameter (P,I,D) können über ein Android-Handy per pfodApp eingestellt werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Ardumower_perimeter_pid.jpg&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mehr Informationen über PID-Regler sind hier zu finden: &lt;br /&gt;
[http://www.ardumower.de/index.php/de/forum/anleitungen-hilfe/121-pid-regelung-fuer-drehzahl-drehung-etc-richtig-einstellen Forum].&lt;br /&gt;
&lt;br /&gt;
= Sensor Signalfusion =&lt;br /&gt;
Das Magnetfeld der Perimeterschleife könnte man als Input für eine [http://wiki.ardumower.de/index.php?title=Sensor_fusion zur Positionsbestimmung des ArduMower nutzen].&lt;br /&gt;
&lt;br /&gt;
= Weiterführende Links =&lt;br /&gt;
#[http://www.ardumower.de/index.php/en/forum/schleifensensoren-generator/83-ir-bake-generator-empfaenger-diy Ein anderer Navigationsansatz sind Infrarot-Baken]&lt;br /&gt;
#[http://grauonline.de/wordpress/?page_id=364 Mehr Details zum 'matched filter']&lt;br /&gt;
#[http://www.grauonline.de/alexwww/ardumower/oscilloscope/oscilloscope.html Soundkarten-Oszilloskop inklusive 'matched filter']&lt;br /&gt;
&lt;br /&gt;
= Perimeter V1 (für alten Code V0.9.3, nicht mehr empfohlen) =&lt;br /&gt;
&lt;br /&gt;
Dies war die erste Version unseres Perimetersenders und Empfängers. Sie wies einige Nachteile auf (Orientierungsfehler, Keine 'Sender-aus'-Erkennung, keine Möglichkeit zur Feststellung des Aufenthaltsbereiches inner-/außerhalb der Schleife), so dass der Einsatz nicht weiter empfohlen wird. Benutze die Nachfolgeversion V2, wie oben beschrieben.&lt;br /&gt;
&lt;br /&gt;
== Sender ==&lt;br /&gt;
Du kannst den Sender eines kommerziellen Rasenmäroboters nutzen (der hier gezeigte Sender ist kompatibel mit Tianchen oder Rotenbach Mährobotern), oder Du baust Dir selber einen:&lt;br /&gt;
&lt;br /&gt;
Ein Arduino (z.B. Nano) generiert ein Rechtecksignal, welches die Polarität eines Motortreibers (L298N) mit 7.8 Khz schaltet. Dadurch wechselt das Ausgangssignal zwischen Vcc und GND. Ein Schwingkreis verstärkt die Signalspitzen (Resonanzfrequenz ist dieselbe wie die Schaltfrequenz - 7.8 Khz). So reicht es aus, den Motortreiber mit 5V (statt 12V) zu betreiben. Die Spannungsquelle muß etwa 2W (400mA bei 5V) leisten. &lt;br /&gt;
Ein Teil des Signals wird durch den Arduino (ADC) durch eine Diode und einen Spannungsteiler erfaßt. So kann festgestellt werden, ob die Perimeterschleife angeschlossen ist. Durch den Schleifendraht fließt ein Strom von ca. 150mA (Drahtquerschnitt 2-3 mm^2, Länge max 500 m)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Arduino_perimeter_sender.png ‎&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Weil man vielleicht nicht immer die genau passende Empfängespule zur Hand hat, hier ein paar mögliche Kombinationen (Spule / Kondensator), die die Resonanzfrequenz von 7.8 Khz aufweisen:&lt;br /&gt;
*Kombination 1: Spule: 160µH, Kondensator: 3,3µF/50V  (getestet)&lt;br /&gt;
*Kombination 2: Spule 33mH, Kondensator: 12nF (nicht getestet)&lt;br /&gt;
&lt;br /&gt;
==== Stromversorgung ====&lt;br /&gt;
Zur Erzeugung der 5V Spannung wird ein step-down-Wandler (z.B. Module mit LM2596) eingesetzt. Vor dem Einsatz in der Schaltung muß der Wandler auf 5V einjustiert werden. &lt;br /&gt;
&lt;br /&gt;
'''Warnung''' : Lege niemals mehr als 5V auf die Arduino 5V Pins oder Du zerstörst ihn. Deswegen: vorher die Spannung einstellen und kontrollieren!&lt;br /&gt;
&lt;br /&gt;
==== Funktionstest ====&lt;br /&gt;
1. Nach dem Code-Hochladen und Anschliessen der Begrenzungsschleife sollte die Arduino LED an sein. Nun entferne den Schleifendraht und die LED sollte ausgehen.&lt;br /&gt;
&lt;br /&gt;
2. Sollte das nicht so sein, kontrolliere mit einem Voltmeter zum Einen die Spannung zwischen Pin 9 des Arduino und dann die am Motortreiberausgang (OUT_1) jeweils gegen GND - beide sollten eine Gleichspannung  2.5 Volt führen.&lt;br /&gt;
&lt;br /&gt;
3. Hast Du ein Oszilloskop? Dann schließe statt der Begrenzungsschleife das Oszilloskop an den Sender an. Das gemessene Signal sollte folgendermaßen aussehen:&lt;br /&gt;
&lt;br /&gt;
Das Ausgangssignal zeigt eine höhere Ampltude (hohe Spitzenwerte) als das Eingangssignal:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Perimetersignal.jpg|Signal am Senderausgang &lt;br /&gt;
File: Ardumower_perimeter_sender_schematics.png|Grundprinzip des Schwingkreises&lt;br /&gt;
File: Arduino_perimeter_sender_photo.jpg&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Für einen einfachen Empfangstest kannst Du die Empfangsspule direkt ans Oszilloskop anschließen. Das gemessene Signal sollte etwa so  aussehen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Coilsignal.jpg|Signal an der Empfangsspule&lt;br /&gt;
File: Fft.jpg|Signal im Frequenzspektrum, überlagert durch Motorstörungen&lt;br /&gt;
File: Ardumower_perimeter_spectrum_plot.jpg| Anzeige des Frequenzspektrums über pfodApp&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Empfänger ==&lt;br /&gt;
Der Empfänger nutzt zwei Spulen, die rechts und links vorn im ArduMower montiert sind. Die Signalstärke der linken und rechten Spule werden ausgewertet, um sie vergleichen zu können.&lt;br /&gt;
&lt;br /&gt;
Prinzip:&lt;br /&gt;
# Verstärkung der alternierenden Signale per OPAMP&lt;br /&gt;
# Optional: Bandpass-Filterung zum Ausblenden der Störungen durch Motore etc.&lt;br /&gt;
# Ermittlung der Signalstärke von linker und rechter Spule&lt;br /&gt;
&lt;br /&gt;
Vorteil dieser Version: analoge Auswertungfunktioniert hervorragend.&lt;br /&gt;
Nachteil: Du kannst nicht feststellen, ob Du Dich gerade innerhalb oder außerhalb der Begrenzungsschleife aufhälst, wenn Du nicht jede Überfahrt des Begrenzungsdrahtes mitprotokollierst. Es ist auch nicht möglich festzustellen, ob Du die Begrenzungsschleife im oder gegen den Uhrzeigersinn abfährst.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Arduino_perimeter_receiver.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Eine Spule empfängt das Signal des Senders. Ein Schwingkreis (LC: SPule und Kondensator)verstärkt das empfangene Signal bei einer Resonanzfrequenz von 7.8 kHz. Das Signal wird weiter verstärkt durch eien LM386-Verstärker (hier: Arduino Soundsensor mit Spule statt Mikrofon). Ein Bandpassfilter (digitaler Filter, FFT - Fast Fourier Transformation) läuft auf dem Arduino und filtert die gewünschte Frequenz (7.8 Khz) und erzeugt ein PWM-Signal (Pulsbreite proportional zur Signalstärke). Über einen Tiefpassfilter wird das PWM-Signal in eine Gleichspamnnung gewandelt.&lt;br /&gt;
Beachte: Die Verdrahtung zwischen ist vereinfacht dargestellt - Details der Verdrahtung s. Schaltplan.&lt;br /&gt;
&lt;br /&gt;
Wir haben folgende Kombinationen von Spulen und Verstärkern getestet:&lt;br /&gt;
&lt;br /&gt;
'Arduino Soundsensor'&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Soundsensor.jpg| Signalverstärkung über LM386 - Arduino Soundsensor mit Spule statt Mikrofon&lt;br /&gt;
File: YwRobot_Sensor.jpg |Arduino Soundsensor mit LM386&lt;br /&gt;
File: YwRobot_circuit.png |Arduino Soundsensor Modulschaltplan&lt;br /&gt;
File: Coil_85mh.jpg|85 mH Spule&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
LM386 Verstärker&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Lm386_amplifier.jpg| LM386 Versärker (200-fach)&lt;br /&gt;
File: Lm386_modified.jpg| modifizierter LM386-Verstärker&lt;br /&gt;
File: Ardumower_lm386_circuit.png | LM386 Modulschaltplan&lt;br /&gt;
File: Coil_small.jpg| 104 mH Spule&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wichtig: Bei Verwendung dieses Verstärkers muß der Kondensator C3 überbrückt werden (erzeugt das für den Arduino erforderliche VCC/2 offset). Dies Spule schließt man an &amp;quot;IN&amp;quot; und &amp;quot;GND&amp;quot; an.&lt;br /&gt;
&lt;br /&gt;
'''Beachte''': die Spule unbedingt direkt am Verstärkermodul befestigen. Dies minimiert die Störeinflüsse durch andere Komponenten wie z.B. Motoren auf das schwache Spulensignal.&lt;br /&gt;
=== Funktionstest ===&lt;br /&gt;
# Stelle eine korrekte Funktion des Schleifensenders sicher (wie bereits weiter oben beschrieben).&lt;br /&gt;
# Drehe das Potentiometer des Arduino Soundsensors auf Maximum (gegen den Uhrzegersinn).&lt;br /&gt;
# Lade das Programm auf den Arduino und bewege eine Spule in Richtung des Begrenzungsdrahtes: die LED des Arduino sollte zu blinken beginnen. Halte nun beide Spulen im gleichen Abstand über den Begrenzungsdraht: die LED sollte nun permanent leuchten.&lt;br /&gt;
# Wenn das so nicht funktioniert, öffne die serielle Konsole und  prüfe die Signalwerte.&lt;br /&gt;
&lt;br /&gt;
=== Spulenauswahl ===&lt;br /&gt;
mathematische Näherungsberechnung einer Spule:&lt;br /&gt;
&lt;br /&gt;
 L = 1nH x n² x ((D² / mm² ) / (l / mm))&lt;br /&gt;
 l = Spulenlänge&lt;br /&gt;
 D = Spulendurchmesser&lt;br /&gt;
&lt;br /&gt;
Beispiel: eine Induktion von 85 mH, Durchmesser 10 mm, Länge 40 mm erfordert ca. 5830 Windungen.&lt;br /&gt;
&lt;br /&gt;
Diese Induktivität von 85 mH und ein Kondensator von 4.7 nF führen zu einer Resonanzfrequenz von 7963 Hz.&lt;br /&gt;
&lt;br /&gt;
 f0 = 1 / (2 * PI * sqrt(L * C)) = 1 / (2 * PI * sqrt(0.085 H * 0.0000000047 F)) =  7963 Hz&lt;br /&gt;
&lt;br /&gt;
Weil man vielleicht nicht immer die genau passende Empfängerspule zur Hand hat, hier ein paar mögliche Kombinationen (Spule / Kondensator), die die Resonanzfrequenz von 7.8 Khz aufweisen:&lt;br /&gt;
 Kombination 1: Spule: 85mH, Kondensator: 4.7nF  (getestet)&lt;br /&gt;
 Kombination 2: Spule: 104mH, Kondensator: 4nF (getestet)&lt;br /&gt;
&lt;br /&gt;
=== Anordnung der Spulen ===&lt;br /&gt;
die Spulen sind am Boden des ArduMower so angeordnet, dass sie einen Winkel von 90 Grad einschließen, d.h. jede ist um 45 Grad aus der Längsachse gedreht.&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Ardumower_spulen.jpg| Anordnung der Spulen&lt;br /&gt;
File: L50_coils.jpg | Beispiel (Ambrogio L50)&lt;br /&gt;
File: L50_parcours.jpg | Testparcours&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Messung der Signalstärke ===&lt;br /&gt;
Zum Vergleich von Messungen wurde die Signalstärke bei verschiedenen Schleifenabständen bestimmt. Die Signalsärke (soll heißen: der berechnete ADC-Wert) kann in der Android pfodApp angezeigt werden. Der Abstand (cm) ist der berechnete Wert zwischen Perimeterschleife und Spule (eingebaut im ArduMower).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Perimeter_plot.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Schleifenverlegung ===&lt;br /&gt;
&lt;br /&gt;
Wichtig bei der Schleifenverlegung ist die Vermeidung von scharfen Ecken: Rundungen sind angesagt! Fährt der Ardumower exakt über eine scharfe Ecke, kann er unter Umständen die Schleife nicht mehr orten, da Spule und Schleife fluchten / parallel stehen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Schleifen_blind.jpg  | Nicht empfohlen: ArduMower kann keine scharfen Ecken orten!&lt;br /&gt;
File: Ardumower_coil_signal.png| Wie ändert sich das Sinal, wenn die Spule gedreht wird??&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Videos ===&lt;br /&gt;
#[http://www.youtube.com/watch?v=FGaUSg-uUxk Perimeter Stoptest]&lt;br /&gt;
#[http://www.youtube.com/watch?v=8R8QaffNlJw Perimeter Verfolgungstest]&lt;br /&gt;
#[http://www.youtube.com/watch?v=CftrnetFVYc&amp;amp;feature=youtu.be Test zum Finden und Verfolgen mit L50]&lt;br /&gt;
#[http://www.youtube.com/watch?feature=player_embedded&amp;amp;v=fjuQViS2rHM Test zum Finden und Verfolgen mit Rotenbach]&lt;/div&gt;</summary>
		<author><name>Deejay</name></author>	</entry>

	<entry>
		<id>https://wiki.ardumower.de/index.php?title=Perimeter-Schleife&amp;diff=2729</id>
		<title>Perimeter-Schleife</title>
		<link rel="alternate" type="text/html" href="https://wiki.ardumower.de/index.php?title=Perimeter-Schleife&amp;diff=2729"/>
				<updated>2015-08-28T07:13:16Z</updated>
		
		<summary type="html">&lt;p&gt;Deejay: /* Automatische Schleifensignalabschaltung */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Zusammenfassung=&lt;br /&gt;
Eine Begrenzungsschleife (oder Perimeterdraht) ist eine Art 'elektronischer Zaun': er veranlaßt den ArduMower zum Stoppen / Umkehren sobald die Grenze erreicht ist. Nicht in jeder Umgebung ist eine Begrenzungsschleife notwendig - Rasensensoren könnten eine Alternative sein.&lt;br /&gt;
&lt;br /&gt;
Das Prinzip: durch den im Garten verlegten Schleifendraht wird ein Signal gesendet, das der Ardumower ausgewertet. Gebraucht werden ein Sender zur Erzeugung und Übergabe des Signals an die Schleife und ein Empfänger zur Signalauswertung im ArduMower.&lt;br /&gt;
&lt;br /&gt;
Und so wird das Signal empfangen: eine (oder zwei) Empfangsspulen liefern ein Signal, dessen Stärke je nach Abstand zwischen Schleifendraht und Empfangsspule(n) variiert. Interessanterweise wechselt das Signal in dem Moment seine Polarität, wo der ArduMower (genauer: die Empfänger-Spule) den Schleifendraht überfährt. Es gibt zwei prinzipielle Möglichkeiten, den Begrenzungsdraht zu orten. Wir haben beide Methoden implementiert (Perimeter V1 und V2) wie nachfolgend beschrieben.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Ardumower_perimeter.jpg | Perimeterdraht&lt;br /&gt;
File: Ardumower_perimeter_components.jpg | Komponenten&lt;br /&gt;
File: Perimeter_signal_strength.jpg | Signalstärke&lt;br /&gt;
File: Perimeter_gradient.png | Verlauf der Signalstärke&lt;br /&gt;
File: Ardumower_perimeter_magneticfield.png | Perimeter-Magnetfeld&lt;br /&gt;
File: Perimeter_excluding_objects.png | Objekte ausschließen&lt;br /&gt;
File: Perimeter_divide.png | Flächen aufteilen&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://hyperphysics.phy-astr.gsu.edu/hbase/magnetic/magcur.html Magnetfeld Berechnungstool]&lt;br /&gt;
&lt;br /&gt;
Videos:&lt;br /&gt;
[http://youtu.be/r4ZMgasMkH0 Magnetfeld Demovideo]&lt;br /&gt;
&lt;br /&gt;
=Begrenzungsschleife V2 (erforderlich für aktuellen ArduMower Code)=&lt;br /&gt;
&lt;br /&gt;
[[Image:Yt-brand-standard-logo-95x40.png|thumb|180px|https://www.youtube.com/watch?v=NIer_kITelc&amp;amp;feature=youtu.be]]&lt;br /&gt;
&lt;br /&gt;
Dies ist die neue Version von Sender und Empfänger für die Begrenzungsschleife (erhältlich über den [https://www.marotronics.de/index.php?k=7 shop] [[File: shopping.png|link=https://www.marotronics.de/index.php?k=7]]).&lt;br /&gt;
&lt;br /&gt;
Beim Überfahren des Schleifendrahtes passiert nun etwas Interessantes: die Polarität der Signalspannung wechselt von negativ auf positiv bzw. umgekehrt - je nachdem, ob man von innen oder außen kommt. Dadurch werden sowohl das Überfahren selbst als auch der Status (Aufenthalt innerhalb oder außerhalb der Schleife) eindeutig erkennbar. Wie bei der V1 nutzen wir zur Signalverstärkung wieder den Motortreiber für das Ausgangssignal und einen Operationsverstärker für das Eingangssignal von der Empfangsspule. Der Sender übergibt eine digitale Signalfolge (auch als 'pseudo-noise' bezeichnet) an die Schleife, die vom Empfänger über einen software-basierten digitalen [http://en.wikipedia.org/wiki/Matched_filter Matched-Filter] ausgewertet wird. Der Filter liefert als Ergebnis einen Peak: positiv - ArduMower innerhalb oder negativ - ArduMower außerhalb der Begrenzungsschleife.&lt;br /&gt;
&lt;br /&gt;
Prinzipablauf:&lt;br /&gt;
  Senderseite&lt;br /&gt;
# Erzeugen des Ausgangssignals durch den Arduino Nano&lt;br /&gt;
# Verstärkung des Ausgangssignals durch den Motortreiber (MC33926), Schleifendrahtenden anstatt eines Motors an den Ausgang anschließen&lt;br /&gt;
&lt;br /&gt;
  ArduMower&lt;br /&gt;
# Eingangssignal per Empfangsspule aufnehmen&lt;br /&gt;
# Eingangssignal per Operationsverstärker (z.B. LM386) verstärken&lt;br /&gt;
# ADC sampling durch Arduino Mega&lt;br /&gt;
# Signalfilterung and Analyse durch ein digitales Filter (software-basierter Matched-Filter-Algorithmus)&lt;br /&gt;
# Auswertung des matched filter Ergebnisses (zur Feststellung des Aufenthaltbereiches inner- / außerhalb der Schleife, Schleifenabfahren usw.)&lt;br /&gt;
&lt;br /&gt;
Folgende Bilder erklären den Wechsel der Signalpolarität innerhalb und außerhalb der Schleife. Sie zeigen auch die Richtung der magnetischen Flusslinien, die vom Begrenzungsdraht ausgehen und wie sie die Spule innerhalb und außerhalb der Begrenzungsschleife treffen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Ardumower_perimeter2.jpg| Innen/außen-Erkennung über den Polaritätswechsel&lt;br /&gt;
File: Fluxdirections.png| Flussrichtungen&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Signal ==&lt;br /&gt;
Der Schlüssel zu einem guten Empfang des Perimetersignals überall auf dem Rasen ist die Optimierung des Signal-Rausch-Abstandes (SNR=signal/noise ratio). Um das SNR zu maximieren, gibt es zwei Ansätze:&lt;br /&gt;
# Signalstärke hochfahren (elektr. Leistung) oder&lt;br /&gt;
# Erhöhung der Signallänge&lt;br /&gt;
&lt;br /&gt;
Wir nutzen eine Kombination beider Ansätze: der Sender wiederholt ständig einen digitalen Code ('pseudonoise4_pw') mit 9615 Hz :&lt;br /&gt;
&lt;br /&gt;
 1,1,-1,-1,1,-1,1,-1,-1,1,-1,1,1,-1,-1,1,-1,-1,1,-1,-1,1,1,-1&lt;br /&gt;
&lt;br /&gt;
'1' bedeutet einen positiven Signalimpuls, '-1' einen negativen. Der kürzeste erzeugte Signalwechsel ist '-1,1', das entspräche dem höchsten Ton (wenn man es hörbar darstellen würde) von 4808 Hz. Das andere Extrem wäre der längste erzeugte Signalwechsel mit '1,1,-1,-1', bei einer Frequenz von 2404 Hz.&lt;br /&gt;
&lt;br /&gt;
Die Spule erkennt nur diese Signalwechsel des Sendersignals. So - also ohne den Kondensator in Serienschaltung zur Spule - zeigt sich das (differentielle) Empfangssignal wie folgt:&lt;br /&gt;
&lt;br /&gt;
 1,0,-1, 0,1,-1,1,-1, 0,1,-1,1,0,-1, 0,1,-1, 0,1,-1, 0,1,0,-1&lt;br /&gt;
&lt;br /&gt;
Verwendet man jedoch den Kondensator in Reihe zur Spule, sind gesendetes und empfangenes (nicht-differentielles) Signal vom Prinzipverlauf wieder identisch.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Perimeter_signal_steps.png | Perimetersignal an Sender und Empfangsspule&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Arduino ADC wertet das Empfangssignal mit einer Abtastrate von 9615 Hz aus.&lt;br /&gt;
&lt;br /&gt;
== Filter ==&lt;br /&gt;
Die gewählte Signalform weist eine spezielle Charakteristik auf: &lt;br /&gt;
&lt;br /&gt;
Weil es wie ein Zufallssignal aussieht, stimmt es nicht in Teilen mit sich selbst überein, sondern erst als komplette Sequenz ([http://en.wikipedia.org/wiki/Matched_filter Übereinstimmung]). Aufgrund dieser Charakteristik können die Startpunkte der Signalsequenz durch ein [http://en.wikipedia.org/wiki/Matched_filter matched filter] ('Korrelation' mit dem gesuchten Signalmuster) ermittelt werden: sie erscheinen als Nadelimpuls im Filterergebnis - und zwar auch bei einem stark verrauschten Signal (z.B. durch Störimpulse von Motoren etc.). &lt;br /&gt;
Die Polarität der Spitze (positiv oder negativ) gibt an, ob sich die Spule inner- oder außerhalb der Begrenzungsschleife befindet.&lt;br /&gt;
&lt;br /&gt;
Du kannst sehen, wie das funktioniert: für ein tiefergehendes Verständnis des Perimetersignals und des Filters schau Dir folgende Simulation (in englisch) an: &lt;br /&gt;
[http://www.grauonline.de/alexwww/ardumower/filter/filter.html Matched filter simulation]&lt;br /&gt;
&lt;br /&gt;
# Wähle eine Perimetersignalform: setze den Schieberegler (rechts oben 'example signals') auf ''pseudonoise4_pw'' (Wert 23).&lt;br /&gt;
# Hebe den Wert des Störsignal ein wenig an: setze den Schieberegler ('noise') auf den Wert 2.&lt;br /&gt;
# Der Plot 'Matched filter' (links unten) zeigt, dass das wiederholte Signal 3 mal entdeckt wurde.&lt;br /&gt;
# Nun simuliere die Bewegung der Spule aus der Perimeterschleife nach außen:  Klicke auf 'Invert' und setze damit die Verstärkung auf '-1'. Der Filter liefert 3 negative Spitzen.&lt;br /&gt;
&lt;br /&gt;
Mehr dazu unter: [https://www.youtube.com/watch?v=NIer_kITelc Video über matched filter]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
  File: Matched_filter_principle.png| Matched Filter&lt;br /&gt;
  File: Perimeter_signal_good_bad.png|Beispiele für gutes / schlechtes Signal &lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Sender ==&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Schleifensender_Ardumower_V2.JPG | Sender Schaltplan&lt;br /&gt;
File: Ardumower_sender_pcb.jpg| Ardumower Sender PCB&lt;br /&gt;
File: Perimeter2_sender_open.jpg| Sendersignal (6.5V, ohne Perimeterschleife)&lt;br /&gt;
File: Perimeter2_sender_closed.jpg| Sendersignal (6.5V, 120m Perimeterschleife 7 Ohm)&lt;br /&gt;
File: Sender_v2_signal_sender_5v_4ohm.png| Sendersignal (6.5V, 4 Ohm Widerstand + 2m Perimeterschleife)&lt;br /&gt;
File: perimeter_wiring_motor_driver.png | Varianten der Motortreiberschaltung&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wir benutzen einen Arduino Nano zur Erzeugung und einen Mototreiber als Ausgangsverstärker des Signals. Der Motortreiber wird mit 3,2 kHz betrieben (2 Impulsbreiten 4808 und 2404 Hz). Bei ausreichend langen Schleifendrähten benötigt der Generator typischerweise 10W (6.5V, 1.7A). Unser Motortreiber verfügt über eine integrierte Strombegrenzung und eine Übertemperaturabschaltung (z.B. MC33926). Die Schleifenlänge kann im Bereich 20 - 450m betragen und muss mindestens 5 Ohm Widerstand aufweisen.&lt;br /&gt;
&lt;br /&gt;
Sender Pin-Belegung:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;background-color: lightgrey; border: solid thin grey;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 motor driver M1OUT1     o---------- perimeter loop (20-450 meters, &amp;gt; 5 Ohm) --+&lt;br /&gt;
                                                                               |&lt;br /&gt;
 motor driver M1OUT2     o---------- perimeter loop ---------------------------+&lt;br /&gt;
 motor driver Vin        o-- 6.5V&lt;br /&gt;
 motor driver M1IN1      o-- Arduino Nano pinIN1&lt;br /&gt;
 motor driver M1IN2      o-- Arduino Nano pinIN2&lt;br /&gt;
 motor driver M1PWM_nD2  o-- Arduino Nano pinPWM&lt;br /&gt;
 motor driver M1nSF      o-- Arduino Nano pinFault&lt;br /&gt;
 motor driver M1FB       o-- Arduino Nano pinFeedback&lt;br /&gt;
 motor driver EN         o-- Arduino Nano pinEnable&lt;br /&gt;
 motor driver VDD        o-- Arduino +5V&lt;br /&gt;
 motor driver M1D1       o-- GND (via Jumper)&lt;br /&gt;
 motor driver SLEW       o-- VDD (via Jumper)&lt;br /&gt;
 &lt;br /&gt;
               |---------o-- GND&lt;br /&gt;
 Potentiometer 100k -----o-- Arduino Nano pinPot&lt;br /&gt;
               |---------o-- Arduino +5V&lt;br /&gt;
 &lt;br /&gt;
 ACS712-05 OUT ------o-- Arduino Nano pinChargeCurrent    &lt;br /&gt;
 ACS712-05 A   ------o-- charging pin (+)&lt;br /&gt;
 ACS712-05 B   ------o-- battery charger +24V&lt;br /&gt;
 battery charger GND-o-- charging pin (-)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Beispiel für den Senderaufbau mit einer Lochrasterplatine:  [http://www.braunschweiger.org/content/download/SenderR212.pdf] &lt;br /&gt;
[http://www.braunschweiger.org/content/images/SenderR212_Front.jpg] [http://www.braunschweiger.org/content/images/SenderR212_Back.jpg]'''&lt;br /&gt;
&lt;br /&gt;
=== Sender Perimeterschleife und Rasengröße ===&lt;br /&gt;
Bei einer Betriebsspannung von 6.5V sollte die Perimeterschleife nicht über 450 m lang sein. (Für den 'Wohnzimmertest' tut es auch ein 100 Ohm Widerstand in Reihe mit 5m Schaltdraht.) &lt;br /&gt;
&lt;br /&gt;
Setzen wir mal eine kreisrunde Rasenfläche voraus erhalten wir für 450m Schleifenlänge (= Kreisumfang) einen Radius von 70m:&lt;br /&gt;
 radius = Schleifenlänge / (2*PI) = 450m / (2*PI) = 70 meter&lt;br /&gt;
&lt;br /&gt;
Wäre die Signalqualität nicht durch den Radius begrenzt, entspräche der eingegrenzte Rasen einer Fläche von 15000m2:&lt;br /&gt;
 Fläche = PI * (radius*radius) = PI * (70m * 70m) = 15000 m2&lt;br /&gt;
&lt;br /&gt;
Da jedoch der maximale Radius für ausreichende Signalqualität bei ca. 18m liegt, ergibt sich die maximale Rasenfläche (Annahme immer noch: Kreisfläche!) zu 1000m2: Fläche = PI * (radius*radius) = PI * (18m * 18m) = 1000 m2&lt;br /&gt;
&lt;br /&gt;
=== Einstellung der Senderstromstärke ===&lt;br /&gt;
Zur Einstellung der Sendeleistung (Spannung*Strom) gibt es verschiedene Möglichkeiten:&lt;br /&gt;
&lt;br /&gt;
*Spannung am DC/DC-Wandler: die Versorgungsspannung des Motortreibers kann über das Poti des Wandlers zwischen 6.5 bis 12V eingestellt werden. Das ist der empfohlene Weg. Beachte: der MC33926 Motortreibermotor benötigt eine Mindestspannung (Vin) von 5V. Bei zu geringer Spannung regelt der Motortreiber sporadisch ab und die Arduino-LED zur Anzeige von Unterspannung fängt an zu blinken.&lt;br /&gt;
&lt;br /&gt;
*Normale Amplitude: statt die Perimeterschleife zwischen +Vin und -Vin (doppelte Amplitude ist Standardwert) umzuschalten, kann der Motortreiber auch nur zwischen +Vin und GND (einfache Amplitude). So zieht die Schleife weniger Strom. Zur Einstellung der einfachen Amplitude muß die entsprechende Codezeile in 'sender.ino' auskommentiert werden:&lt;br /&gt;
&lt;br /&gt;
  // #define USE_DOUBLE_AMPLTIUDE    1   &lt;br /&gt;
&lt;br /&gt;
*Hochlastwiderstand: Bei einem Schleifenwiderstand kleiner 5 Ohm kann der Strom nicht weiter reduziert werden, indem man die Spannung runterdreht: unterhalb von ca. 6V arbeitet der Arduino nicht mehr richtig. Dann hilft nur noch ein zur Schleife in Reihe geschalteter Hochlastwiderstand (R: z.B. 5 Ohm, 10W). &lt;br /&gt;
&lt;br /&gt;
 @6V (Vin): 5 ohm Hochlastwiderstand =&amp;gt; I=U/R=6V/5Ohm=1.2A   (P=U*I=6V*1.2A=7.2W)&lt;br /&gt;
&lt;br /&gt;
Daher also die mindestens 10W Belastbarkeit des Widerstandes! In diesem Falle auch die 'einfache Amplitude' im Sendercode aktivieren (doppelte Amplitude nicht benutzen!).&lt;br /&gt;
&lt;br /&gt;
=== Senderstromüberwachung (in Entwicklung) ===&lt;br /&gt;
Idee: das Poti VR1 wird durch ein digitales Poti (z.B. MCP4151-5K) ersetzt. So kann die Vin des Motortreibers (und damit auch der Strom) über den Arduino eingestellt werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Lm2596_circuit.jpg | LM2596 Modulschaltplan&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
MCP4151-5K version:&lt;br /&gt;
&lt;br /&gt;
 Vout = 1.23V*(1+VR1/R1)&lt;br /&gt;
&lt;br /&gt;
 Using VR1=5K...&lt;br /&gt;
 Vstart (on reset):  Vout=1.23V*(1+2.5K/0.33K)=10v&lt;br /&gt;
 Vmax:  Vout=1.23V*(1+5K/0.33K)=19v&lt;br /&gt;
&lt;br /&gt;
=== Automatische Schleifensignalabschaltung ===&lt;br /&gt;
Während sich der ArduMower in der Ladestation aufhält, wird das Schleifensignal nicht benötigt und wir können Energie sparen. Zum Erkennen des Ladestatus wird im &amp;quot;Sender_V2&amp;quot; ein Stromsensor (INA169) zwischen Ladegerät und Ladeanschlüsse geschaltet.&lt;br /&gt;
&lt;br /&gt;
Zum aktivieren dieser Funktion ist &amp;quot;#define USE_CHG_CURRENT&amp;quot; auf 1 zu setzen&lt;br /&gt;
&lt;br /&gt;
    #define USE_CHG_CURRENT       1     // use charging current sensor for robot detection? (set to '0' if not connected!)&lt;br /&gt;
&lt;br /&gt;
Desweiteren muss der Stromsensor am analogen Eingang A2 kalibriert werden:&lt;br /&gt;
&lt;br /&gt;
* Der Mover befindet sich nicht in der Ladestation/ Ladestrom = 0 Ampere&lt;br /&gt;
* Den seriellen Monitor aufrufen&lt;br /&gt;
* In der Befehlszeile 1 eingeben und Button &amp;quot;Senden&amp;quot; drücken&lt;br /&gt;
* Mit diesem Befehl wird die Spannung am analogen Eingang A2 gemessen und im EEPROM als Referenzwert &amp;quot;chargeADCZero&amp;quot; gespeichert&lt;br /&gt;
* Am Monitor erscheint folgender Text:&lt;br /&gt;
&lt;br /&gt;
    received key=1&lt;br /&gt;
    calibrateChargeCurrentSensor (note: robot must be outside charging station!)&lt;br /&gt;
    calibration done&lt;br /&gt;
    chargeADCZero=755&lt;br /&gt;
&lt;br /&gt;
Die Kalibrierung ist damit erfolgt. Bei den weiteren Messungen wird im seriellen Monitor unter &amp;quot;chgCurrentADC&amp;quot; der Wandlerwert des analogen Eingangs A2 angezeigt:&lt;br /&gt;
&lt;br /&gt;
    time=4	chgCurrent=0.000	chgCurrentADC=755.55	 isCharging=0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Wir simmulieren einen Ladevorgang durch Belastung der Ladebuchse durch einen 22 Ohm Widerstand. Es fließt ein Ladestrom von ca. 0,8 Ampere. Damit ändert sich der &amp;quot;chgCurrentADC&amp;quot; auf 712.63. &amp;quot;chgCurrent&amp;quot; zeigt den Ladestrom in Ampere&lt;br /&gt;
&lt;br /&gt;
    time=8      chgCurrent= 0.801       chgCurrent  ADC=712.63	  isCharging=1	&lt;br /&gt;
&lt;br /&gt;
Das Flag &amp;quot;ischarging&amp;quot; wird auf &amp;quot;1&amp;quot; gesetzt und die Perimeterschleife wird für die Dauer der Ladung abgeschaltet.&lt;br /&gt;
&lt;br /&gt;
Dies funktioniert neben dem im Sender_V2 verbauten Stromsensor &amp;quot;INA169&amp;quot; auch mit einem Stromsensor ACS 712-5 oder ACS 712-20. Bei Verwendung der ACS muss jedoch die Berechnung des Ladestromes &amp;quot;chgCurrent= 0.801&amp;quot; angepasst werden.&lt;br /&gt;
&lt;br /&gt;
    chargeCurrent = ((double)(((int)v)  - ((int)chargeADCZero))) / 1023.0 * 1.1 * 20;  //  * 20 bei Verwendung ACS 712-5&lt;br /&gt;
&lt;br /&gt;
=== Sendersoftware ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;NOTE&amp;lt;/b&amp;gt;: Wenn Du Dich nie zuvor mit Arduino beschäftigt hast, lies zuerst unsere Einführung &amp;lt;b&amp;gt;[http://wiki.ardumower.de/index.php?title=Arduino_first_steps 'erste Schritte mit dem Arduino']&amp;lt;/b&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[File:warning.png]] Wichtig: Vergewissere Dich, dass die Pin-Konfiguration des Arduino im benutzten Code (sender.ino) mit Deinem Senderaufbau übereinstimmt!&lt;br /&gt;
&lt;br /&gt;
Im Code (sender.ino) die passende Option für die automatische Schleifenabschaltung (bei Verwendung des oben beschriebenen Stromsensors Option 1) wählen:&lt;br /&gt;
&lt;br /&gt;
* Define if you have connected a charging current sensor for automatic sender standby:   #define USE_CHG_CURRENT 1   (or 0)&lt;br /&gt;
&lt;br /&gt;
=== Sender Zustandsanzeige ===&lt;br /&gt;
Die LED auf dem Arduino Nano signalisiert den Senderstatus:&lt;br /&gt;
* An: Perimeterschleife ist angeschlossen und arbeitet&lt;br /&gt;
* Aus: Perimeterschleife ist geöffnet (oder durch Defekt unterbrochen) und arbeitet nicht&lt;br /&gt;
* Blinkt: der ArduMower wird geladen und die Perimeterschleife ist zur Energieeinsparung durch die Software deaktiviert&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File:Perimeter_sender_console.png | Ausgabe 'sender.ino' über serielle Konsole&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Sendertest per PC-Soundkarte ===&lt;br /&gt;
Du kannst den Sender mit Deine Soundkarte und einer Spule testen:&lt;br /&gt;
&lt;br /&gt;
# Verbinde eine Spule (100 mH) mit dem Mikrofon-/Line-Eingang (max 1V) Deiner Soundkarte &lt;br /&gt;
# Starte das [http://www.grauonline.de/alexwww/ardumower/oscilloscope/oscilloscope.html Web-Oszilloskop], und wähle Filter 'Matched', Frequenz '9615' Hz, Visualization Math 'MinMax'&lt;br /&gt;
# Das Ausgangssignal sollte den Abstand zur Perimeterschleife wiederspiegeln - die Polarität (negativ/positiv) zeigt den Aufenthaltsbereich (innerhalb/außerhalb) der Schleife.&lt;br /&gt;
&lt;br /&gt;
Versuche in beiden Fällen (innen/außen), die Spule so dicht wie möglich an der Schleife zu positionieren, um ein auswertbares Signal zu empfangen (zur Erinnerung: wir arbeiten hier ohne die Signalverstärkung durch den Operationsverstärker, da der Soundkarteneingang nur mit max 1V beaufschlagt werden darf).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File:Ardumower_web_oscilloscope_time_signal_received.jpg | Effektivwert des empfangenen Zeit-Signals (Filter Off, Time scale: x5)&lt;br /&gt;
File:Ardumower_web_oscilloscope_time_signal.jpg | Ideales Zeitsignal erzeugt vom Sender (Filter Off, Time scale: x5)&lt;br /&gt;
File:Ardumower_web_oscilloscope.jpg  | Matched Filter Signal (Frequency: 9615 Hz, Math: MinMax)&lt;br /&gt;
File:Perimeter_signal_good_bad.png | Beispiel für gutes / schlechtes Signal&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://www.youtube.com/watch?v=vg5Xg0__66A Video zur Erklärung aller Schritte]&lt;br /&gt;
&lt;br /&gt;
== Empfänger ==&lt;br /&gt;
&lt;br /&gt;
Zum Signalempfang verwenden wir eine Spule (100 mH or 150 mH, nur für die älteren Softwareversionen wird ein Kondensator 4.7nF mit der Spule in Reihe geschaltet) in aufrechter Position, in der Mitte am vorderen Rand des ArduMower. Sie ist zur Verstärkung des empfangenen Signals mit dem Eigang eines LM386 Operationsverstärkers verbunden. Auf dem LM386 Modul wird der Kondensator C3 überbrückt, damit der Verstärker ein Signal zwischen 0..5V statt im Standardbereich -5V..+5V) liefert. Der Ausgang des LM386 sollte mit dem Arduino Analog-Pin ('pinPerimeterLeft') verbunden werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt; &lt;br /&gt;
 File: Perimeter_v2_receiver_circuit.png | Empfängerschaltkreis und überbrückter Kondensator C3&lt;br /&gt;
 File: Ardumower_chassis_components.png | Position der Perimeterspule&lt;br /&gt;
 File: Ardumower_coil_position.jpg | Eine zentrierte, aufrecht montierte Spule &lt;br /&gt;
 File: Ardumower_lm386_circuit.png | LM386 Modul Schaltplan&lt;br /&gt;
 File: Tire_coil_distance.jpg | Abstand Spule-Rad: Einfluß auf den Wendekreis (Kurvenwinkel)&lt;br /&gt;
 File: Coil_motor_layout.png | Zwei Spulen (experimentell), Abstand Spule-Spule Hinterradantrieb 12.5cm, Frontantrieb 19cm&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Empfängerschaltplan:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;background-color: lightgrey; border: solid thin grey;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
                                      LM386 IN  o------- capacitor 4.7nF ----------- coil 100 mH  (or 150 mH)&lt;br /&gt;
 Arduino pinPerimeterLeft   o------o  LM386 OUT&lt;br /&gt;
                                      LM386 GND o----------------------------------- coil&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Achtung''': Die Spule muss direkt an den Verstärkermodul angeschlossen werden. So wird die Störfestigkeit des schwachen Spulensignals gegenüber Einflüssen anderer Komponenten (Motore, DC-DC-Wandler) verbessert. &lt;br /&gt;
&lt;br /&gt;
'''Differentielles Signal''': Die aktuelle Software erfordert das Weglassen des Kondensators 4.7nF in Reihe mit der Spule. &lt;br /&gt;
&lt;br /&gt;
'''Nicht-differentielles Signal''': Mithilfe des Kondensators (4.7 nF) wird das Sendersignal wieder rekonstruiert (s. Abschnitt Signal), der Empfängeschaltkreis ist ein Schwingkreis (C und L und Perimeterschleife fungiert als Antenne) und alle Parameter (C, L, Schleifendrahtlänge) müssen übereinstimmen. Weil dies die Abstimmung schwierig macht, empfehlen wir das nicht-differentielle Signal nicht!&lt;br /&gt;
&lt;br /&gt;
=== Abstand Spule/Verstärker zu Motoren ===&lt;br /&gt;
Achte auf die Einhaltung aller Mindestabstände zwischen den folgenden Komponenten:&lt;br /&gt;
 * Spule zu Radmotor: &amp;gt; 15cm&lt;br /&gt;
 * Spule zu Mähmotor: &amp;gt; 10cm &lt;br /&gt;
 * Spule zu DC-DC Wandler: &amp;gt; 10cm&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
 File: Dcdc_noise.jpg | Achtung: Halte Spule/Vorverstärker von den DC-DC-Wandlern und Motoren fern!!!&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Signalmessungen ===&lt;br /&gt;
Sender / Spule / LM386 Verstärker Ausgangssignale sollten etwa so aussehen: (witere Details über das Signal s. Abschnitt Signal)&lt;br /&gt;
&amp;lt;gallery&amp;gt; &lt;br /&gt;
 File: Perimeter_signal_steps.png | Perimetersignal an Sender, Empfangsspule und LM386 (Theorie)&lt;br /&gt;
 File: coil_signal_without_capacitor.png | differentielles Signal / Spulensignal ohne Kondensator (5V sender, 5 Ohm Schleife - blau: Perimeter, gelb: Spule, grau: LM386 Verstärkerausgang)&lt;br /&gt;
 File: Lm_output_dc_noise.jpg | LM386 Ausgang mit DC Störungen (differentielles Signal / Spule ohne Kondensator)&lt;br /&gt;
 File: Perimeter2_receiver_coil.jpg | LM386 Ausgang (nicht-differentielles Signal / Spule mit Kondensator, 12V Sender, 120m Schleife)&lt;br /&gt;
 File: coil_signal_with_capacitor.png | nicht-differentielles Signal / Spulensignalmit Kondensator (5V Sender, 5 Ohm Schleife - grau: Perimeter, gelb: Spule, blau: LM386 Verstärkerausgang)&lt;br /&gt;
 File: Lm_output_motor_noise.jpg | LM386 Ausgang mit Störungen durch Motoren (differentielles Signal / Spule ohne Kondensator)&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Signal und Rauschmessungen ===&lt;br /&gt;
Einige Spulenmessungen ohne Verstärker aber mit Störungen (Motoren, DC/DC-Wandler etc.): &lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
 File: Coil_60k_parallel.jpg | Spule und 60 kOhm Parallelwiderstand ohne Störungen (Spulenhintergrund-rauschen Vpp=7 mV)&lt;br /&gt;
 File: Coil_dc_converter_noise.jpg | Spule und 60 kOhm Parallelwiderstand mit Störungen durch DC/DC-Wandler (DC/DC-Rauschen Vpp=18 mV)&lt;br /&gt;
 File: Coil_motor_noise.jpg | Spule und 60 kOhm Parallelwiderstand mit Störungen durch Motoren&lt;br /&gt;
 File: Perimeter2_receiver_coil_pwm.jpg | Spulensignal mit seriellem 4.7nF Kondensator, PWM-Perimetersignal (nicht empfohlen) ohne Störungen&lt;br /&gt;
 File: Fft_signal.png | FFT Signal&lt;br /&gt;
 File: Fft_motors.png | FFT Motor-Störungen&lt;br /&gt;
 File: Fft_dcdc.png | FFT DC/DC-Störungen&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ADC-Kalibrierung am Empfänger ===&lt;br /&gt;
[[File:warning.png]] Die ADC-Kalibrierung (bei ausgeschaltetem Sender!) sorgt für eine korrekte Erkennung der Nulllinie (Stille), sodass das empfangene Signal später symmetrisch zur Nulllinie angezeigt wird.&lt;br /&gt;
# Der Perimetersender und die Motoren des ArduMower müssen während der Kalibrierung ausgeschaltet sein!&lt;br /&gt;
# Wenn eine Störung durch einen anderen Sender nicht zu vermeiden ist, muß während der Kalibrierung die Spule entfernt und der Eingang es LM386 mit GND verbunden werden.&lt;br /&gt;
# Führe die ADC-Kalibrierung einmal aus (&amp;quot;pfodApp-&amp;gt;ADC Calibration&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Nach der korrekt durchgeführten Kalibrierung sollte das Signal per pfodApp Plot ('sig') bei ausgeschaltetem Perimetersender ungefähr als Null angezeigt werden. Nach Einschalten des Perimetersenders sollte das Signal etwa diesselbe positive wie negative Maximalamplitude ('Symmetie zur Nulllinie') aufweisen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
 File: perimeter_v2_sig_symmetric.jpg | symmetrisches Signal bei eingeschaltetem Sender (nach ADC-Kalibrierung)&lt;br /&gt;
 File: perimeter_v2_sender_off.jpg | Nullsignal bei ausgeschaltetem Sender (nach ADC-Kalibrierung)&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Problemanalyse und Fehlerbehebung am Empfänger ===&lt;br /&gt;
&lt;br /&gt;
Empfangenes Signal, Filterergebnis und Signalqualität können per Android Handy über die pfodApp-&amp;gt;Plot-&amp;gt;Perimeter angezeigt werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
 File: Perimeter_snr.png | Signal-Rausch-Verhältnis (SNR)&lt;br /&gt;
 File: Perimeter_signal_38khz.png | Signal, Filterergebnis, LP Filterergebnis, innen/außen, Ereigniszähler, Signal ein/aus, Signalqualität&lt;br /&gt;
 File: Perimeter_plot_moving_from_inside_to_outside.png | Fahren von innen nach außen&lt;br /&gt;
 File: Perimeter_v2_plot.png&lt;br /&gt;
 File: Perimeter_v2_plot_new.png&lt;br /&gt;
 File: Ardumower_perimeter2_test.jpg&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Beschreibung der im Plot angezeigten Signalverläufe:&lt;br /&gt;
 sig:  Spulensignal (Sequenz der Rohimpulse nach ADC) als kurzer Snapshot (32 samples), Update alle 20 Sekunden &lt;br /&gt;
       (also 20 Sekundenwarten bis zum nächsten Snapshot)&lt;br /&gt;
 mag:  Filterergebnis: innen (negativ) oder außen (positiv), magnitude: Abstand zur Perimeterschleife / magnetische Signalstärke (RSSI)&lt;br /&gt;
       - wird benutzt zum &amp;lt;b&amp;gt;Perimeter verfolgen&amp;lt;/b&amp;gt;&lt;br /&gt;
 smag: Filterergebnis, low-pass-gefiltert, ohne Vorzeichen (geglätteter mag-Verlauf) - verwendet zur Erkennung des &amp;lt;b&amp;gt;'Sender-aus' Zustandes&amp;lt;/b&amp;gt;&lt;br /&gt;
       Der Grenzwert kann über die pfodApp gesetzt werden (Settings-&amp;gt;Perimeter-&amp;gt;Timed-out if below smag)&lt;br /&gt;
 in:   binäres Ergebnis des low-pass Filters: innerhalb (1) oder außerhalb (0) der Perimeterschleife - wird benutzt zur &amp;lt;b&amp;gt;Erkennung des Perimetergrenzverlaufs&amp;lt;/b&amp;gt;&lt;br /&gt;
       Ist der ArduMower eine bestimmte Zeit außerhalb der Schleife, geht er in den Fehlerstatus. Diese Zeit kann per pfodApp&lt;br /&gt;
       (Settings-&amp;gt;Perimeter-&amp;gt;Timeout (s) if not inside) eingestellt werden&lt;br /&gt;
 cnt:  Anzahl der Wechsel von innen nach außen (counter, Zähler)&lt;br /&gt;
 on:   Perimetersender ist aktiv (1) oder inaktiv (0), basiert auf der Auswertung des smag Ergebnisses&lt;br /&gt;
 qty:  &amp;lt;b&amp;gt;Signalqualität&amp;lt;/b&amp;gt; (Aussage über die Verläßlichkeit der Erkennung 'innerhalb / außerhalb' aus dem Filterergebnis)&lt;br /&gt;
       Verhältnis aus Vergleich mit Mustersignal zu Vergleich mit inversem Mustersignal              &lt;br /&gt;
       1.0 bedeutet schlechte Qualität, Du solltest Werte von 1.5 oder höher)&lt;br /&gt;
&lt;br /&gt;
Im Plot soll der 'mag'-Verlauf frei von Spitzen sein: innerhalb der Schleife sollte das Signal eine negative Kurve, außerhalb eine positive Kurve beschreiben. Weist die Kurve Spitzen auf, versuche folgende Maßnahmen zur Fehlerbeseitigung bzw. Optimierung:&lt;br /&gt;
&lt;br /&gt;
* Benutze immer einen ausreichend langen und korrekt abgerollten Schleifendraht (20m oder länger). Benutze niemals einen zu kurzen (Mindestwiderstand 5 Ohm!) oder gar aufgerollten Draht. &lt;br /&gt;
* Für den 'Wohnzimmertest' sollte ein 100 Ohm Widerstand in Reihe mit 5m Draht bei 6V seine Aufgabe erfüllen.&lt;br /&gt;
* Verbinde die Empfangsspule mit 'pinPerimeterLeft' auf dem PCB (am falschen Pin könnte das Signal 'etwas schwach' reinkommen)&lt;br /&gt;
* Die Spulenpolung kann per pfodApp eingestellt werden (wird 'außen' angezeigt, wenn der Ardumower sich innrhalb der Schleife befindet?). Denselben Effekt hat das Umklemmen der Schleifenenden am Senderausgang.&lt;br /&gt;
* Sollte das Signal schwach erscheinen, überprüfen, ob am Spulenverstärker das Poti &amp;quot;voll aufgedreht&amp;quot; ist! Hilfreich ist die gleichzeitige Anzeige des Signal per pfodApp (Plot --&amp;gt; Perimeter).&lt;br /&gt;
* Die Kabelverbindung zwischen Spule und LM386-Vorverstärker muss möglichst kurz sein - am Besten die Spule direkt am Verstärker anschließen!&lt;br /&gt;
* Halte den Abstand zwische Spule und Motoren sowie DC/DC-Wandlern möglichst groß (30cm oder mehr!)&lt;br /&gt;
* Nutze die magnetische Abschirmwirkung (z.B. Deines Akkus) zwischen Spule und Störquellen.&lt;br /&gt;
* Einstellen der Senderspannung: bei längeren Perimeterschleifen (&amp;gt;80m) die Spannung höher wählen (Potentiometer DC/DC-Wandler), bei kürzeren Schleifen (&amp;gt;25m) eher niedriger (anstreben einer Sendeleistung = Spannung * Strom von ca 10W)&lt;br /&gt;
* Versuche bei laufenden Motoren die Spule leicht zu einer Seite zu neigen um die Signalqualität 'qty' zu erhöhen.&lt;br /&gt;
&lt;br /&gt;
== Messungen ==&lt;br /&gt;
&lt;br /&gt;
Zum Vergleich Beispielwerte, gemessen an verschiedenen, im Gelände getesteten Kombinationen von Sender-/Empfänger-/Schleifenparametern:&lt;br /&gt;
&lt;br /&gt;
1) 120m (0.7mm^2), R=4 Ohm, 6.5V, Spule Vpp 20mV&lt;br /&gt;
 Störsignalpegel (max): smag=192&lt;br /&gt;
 Signal (min): smag=254&lt;br /&gt;
 SNR=Signal/Störsignal=254/192=1.3&lt;br /&gt;
&lt;br /&gt;
2) 30m (0.7mm^2), R=1.0 Ohm (+4 Ohm series R), 6.5V, Spule Vpp 120 mV&lt;br /&gt;
 Störsignalpegel (max): smag=192&lt;br /&gt;
 Signal (min): smag=896&lt;br /&gt;
 SNR=Signal/Störsignal=896/192=4.6&lt;br /&gt;
&lt;br /&gt;
=== Videos ===&lt;br /&gt;
#[http://www.youtube.com/watch?v=FL6K98B2Zsk&amp;amp;feature=player_detailpage#t=265 Perimeter2 Demo]&lt;br /&gt;
#[https://www.youtube.com/watch?v=QCA6Dm3rs3M Test 120m Perimeterschleife]&lt;br /&gt;
#[https://www.youtube.com/watch?v=NIer_kITelc Theorie zu Perimeterschleife und Matched Filter (in deutsch)]&lt;br /&gt;
#[https://www.youtube.com/watch?v=VxJN2xb55dU&amp;amp;feature=youtu.be Sender-PCB]&lt;br /&gt;
&lt;br /&gt;
= Verfolgung der Begrenzungsschleife =&lt;br /&gt;
&lt;br /&gt;
Das Abfahren der Schleife wird über einen softwareseitig realisierten digitalen PID-Regler gesteuert. Die Regler-Parameter (P,I,D) können über ein Android-Handy per pfodApp eingestellt werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Ardumower_perimeter_pid.jpg&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mehr Informationen über PID-Regler sind hier zu finden: &lt;br /&gt;
[http://www.ardumower.de/index.php/de/forum/anleitungen-hilfe/121-pid-regelung-fuer-drehzahl-drehung-etc-richtig-einstellen Forum].&lt;br /&gt;
&lt;br /&gt;
= Sensor Signalfusion =&lt;br /&gt;
Das Magnetfeld der Perimeterschleife könnte man als Input für eine [http://wiki.ardumower.de/index.php?title=Sensor_fusion zur Positionsbestimmung des ArduMower nutzen].&lt;br /&gt;
&lt;br /&gt;
= Weiterführende Links =&lt;br /&gt;
#[http://www.ardumower.de/index.php/en/forum/schleifensensoren-generator/83-ir-bake-generator-empfaenger-diy Ein anderer Navigationsansatz sind Infrarot-Baken]&lt;br /&gt;
#[http://grauonline.de/wordpress/?page_id=364 Mehr Details zum 'matched filter']&lt;br /&gt;
#[http://www.grauonline.de/alexwww/ardumower/oscilloscope/oscilloscope.html Soundkarten-Oszilloskop inklusive 'matched filter']&lt;br /&gt;
&lt;br /&gt;
= Perimeter V1 (für alten Code V0.9.3, nicht mehr empfohlen) =&lt;br /&gt;
&lt;br /&gt;
Dies war die erste Version unseres Perimetersenders und Empfängers. Sie wies einige Nachteile auf (Orientierungsfehler, Keine 'Sender-aus'-Erkennung, keine Möglichkeit zur Feststellung des Aufenthaltsbereiches inner-/außerhalb der Schleife), so dass der Einsatz nicht weiter empfohlen wird. Benutze die Nachfolgeversion V2, wie oben beschrieben.&lt;br /&gt;
&lt;br /&gt;
== Sender ==&lt;br /&gt;
Du kannst den Sender eines kommerziellen Rasenmäroboters nutzen (der hier gezeigte Sender ist kompatibel mit Tianchen oder Rotenbach Mährobotern), oder Du baust Dir selber einen:&lt;br /&gt;
&lt;br /&gt;
Ein Arduino (z.B. Nano) generiert ein Rechtecksignal, welches die Polarität eines Motortreibers (L298N) mit 7.8 Khz schaltet. Dadurch wechselt das Ausgangssignal zwischen Vcc und GND. Ein Schwingkreis verstärkt die Signalspitzen (Resonanzfrequenz ist dieselbe wie die Schaltfrequenz - 7.8 Khz). So reicht es aus, den Motortreiber mit 5V (statt 12V) zu betreiben. Die Spannungsquelle muß etwa 2W (400mA bei 5V) leisten. &lt;br /&gt;
Ein Teil des Signals wird durch den Arduino (ADC) durch eine Diode und einen Spannungsteiler erfaßt. So kann festgestellt werden, ob die Perimeterschleife angeschlossen ist. Durch den Schleifendraht fließt ein Strom von ca. 150mA (Drahtquerschnitt 2-3 mm^2, Länge max 500 m)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Arduino_perimeter_sender.png ‎&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Weil man vielleicht nicht immer die genau passende Empfängespule zur Hand hat, hier ein paar mögliche Kombinationen (Spule / Kondensator), die die Resonanzfrequenz von 7.8 Khz aufweisen:&lt;br /&gt;
*Kombination 1: Spule: 160µH, Kondensator: 3,3µF/50V  (getestet)&lt;br /&gt;
*Kombination 2: Spule 33mH, Kondensator: 12nF (nicht getestet)&lt;br /&gt;
&lt;br /&gt;
==== Stromversorgung ====&lt;br /&gt;
Zur Erzeugung der 5V Spannung wird ein step-down-Wandler (z.B. Module mit LM2596) eingesetzt. Vor dem Einsatz in der Schaltung muß der Wandler auf 5V einjustiert werden. &lt;br /&gt;
&lt;br /&gt;
'''Warnung''' : Lege niemals mehr als 5V auf die Arduino 5V Pins oder Du zerstörst ihn. Deswegen: vorher die Spannung einstellen und kontrollieren!&lt;br /&gt;
&lt;br /&gt;
==== Funktionstest ====&lt;br /&gt;
1. Nach dem Code-Hochladen und Anschliessen der Begrenzungsschleife sollte die Arduino LED an sein. Nun entferne den Schleifendraht und die LED sollte ausgehen.&lt;br /&gt;
&lt;br /&gt;
2. Sollte das nicht so sein, kontrolliere mit einem Voltmeter zum Einen die Spannung zwischen Pin 9 des Arduino und dann die am Motortreiberausgang (OUT_1) jeweils gegen GND - beide sollten eine Gleichspannung  2.5 Volt führen.&lt;br /&gt;
&lt;br /&gt;
3. Hast Du ein Oszilloskop? Dann schließe statt der Begrenzungsschleife das Oszilloskop an den Sender an. Das gemessene Signal sollte folgendermaßen aussehen:&lt;br /&gt;
&lt;br /&gt;
Das Ausgangssignal zeigt eine höhere Ampltude (hohe Spitzenwerte) als das Eingangssignal:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Perimetersignal.jpg|Signal am Senderausgang &lt;br /&gt;
File: Ardumower_perimeter_sender_schematics.png|Grundprinzip des Schwingkreises&lt;br /&gt;
File: Arduino_perimeter_sender_photo.jpg&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Für einen einfachen Empfangstest kannst Du die Empfangsspule direkt ans Oszilloskop anschließen. Das gemessene Signal sollte etwa so  aussehen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Coilsignal.jpg|Signal an der Empfangsspule&lt;br /&gt;
File: Fft.jpg|Signal im Frequenzspektrum, überlagert durch Motorstörungen&lt;br /&gt;
File: Ardumower_perimeter_spectrum_plot.jpg| Anzeige des Frequenzspektrums über pfodApp&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Empfänger ==&lt;br /&gt;
Der Empfänger nutzt zwei Spulen, die rechts und links vorn im ArduMower montiert sind. Die Signalstärke der linken und rechten Spule werden ausgewertet, um sie vergleichen zu können.&lt;br /&gt;
&lt;br /&gt;
Prinzip:&lt;br /&gt;
# Verstärkung der alternierenden Signale per OPAMP&lt;br /&gt;
# Optional: Bandpass-Filterung zum Ausblenden der Störungen durch Motore etc.&lt;br /&gt;
# Ermittlung der Signalstärke von linker und rechter Spule&lt;br /&gt;
&lt;br /&gt;
Vorteil dieser Version: analoge Auswertungfunktioniert hervorragend.&lt;br /&gt;
Nachteil: Du kannst nicht feststellen, ob Du Dich gerade innerhalb oder außerhalb der Begrenzungsschleife aufhälst, wenn Du nicht jede Überfahrt des Begrenzungsdrahtes mitprotokollierst. Es ist auch nicht möglich festzustellen, ob Du die Begrenzungsschleife im oder gegen den Uhrzeigersinn abfährst.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Arduino_perimeter_receiver.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Eine Spule empfängt das Signal des Senders. Ein Schwingkreis (LC: SPule und Kondensator)verstärkt das empfangene Signal bei einer Resonanzfrequenz von 7.8 kHz. Das Signal wird weiter verstärkt durch eien LM386-Verstärker (hier: Arduino Soundsensor mit Spule statt Mikrofon). Ein Bandpassfilter (digitaler Filter, FFT - Fast Fourier Transformation) läuft auf dem Arduino und filtert die gewünschte Frequenz (7.8 Khz) und erzeugt ein PWM-Signal (Pulsbreite proportional zur Signalstärke). Über einen Tiefpassfilter wird das PWM-Signal in eine Gleichspamnnung gewandelt.&lt;br /&gt;
Beachte: Die Verdrahtung zwischen ist vereinfacht dargestellt - Details der Verdrahtung s. Schaltplan.&lt;br /&gt;
&lt;br /&gt;
Wir haben folgende Kombinationen von Spulen und Verstärkern getestet:&lt;br /&gt;
&lt;br /&gt;
'Arduino Soundsensor'&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Soundsensor.jpg| Signalverstärkung über LM386 - Arduino Soundsensor mit Spule statt Mikrofon&lt;br /&gt;
File: YwRobot_Sensor.jpg |Arduino Soundsensor mit LM386&lt;br /&gt;
File: YwRobot_circuit.png |Arduino Soundsensor Modulschaltplan&lt;br /&gt;
File: Coil_85mh.jpg|85 mH Spule&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
LM386 Verstärker&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Lm386_amplifier.jpg| LM386 Versärker (200-fach)&lt;br /&gt;
File: Lm386_modified.jpg| modifizierter LM386-Verstärker&lt;br /&gt;
File: Ardumower_lm386_circuit.png | LM386 Modulschaltplan&lt;br /&gt;
File: Coil_small.jpg| 104 mH Spule&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wichtig: Bei Verwendung dieses Verstärkers muß der Kondensator C3 überbrückt werden (erzeugt das für den Arduino erforderliche VCC/2 offset). Dies Spule schließt man an &amp;quot;IN&amp;quot; und &amp;quot;GND&amp;quot; an.&lt;br /&gt;
&lt;br /&gt;
'''Beachte''': die Spule unbedingt direkt am Verstärkermodul befestigen. Dies minimiert die Störeinflüsse durch andere Komponenten wie z.B. Motoren auf das schwache Spulensignal.&lt;br /&gt;
=== Funktionstest ===&lt;br /&gt;
# Stelle eine korrekte Funktion des Schleifensenders sicher (wie bereits weiter oben beschrieben).&lt;br /&gt;
# Drehe das Potentiometer des Arduino Soundsensors auf Maximum (gegen den Uhrzegersinn).&lt;br /&gt;
# Lade das Programm auf den Arduino und bewege eine Spule in Richtung des Begrenzungsdrahtes: die LED des Arduino sollte zu blinken beginnen. Halte nun beide Spulen im gleichen Abstand über den Begrenzungsdraht: die LED sollte nun permanent leuchten.&lt;br /&gt;
# Wenn das so nicht funktioniert, öffne die serielle Konsole und  prüfe die Signalwerte.&lt;br /&gt;
&lt;br /&gt;
=== Spulenauswahl ===&lt;br /&gt;
mathematische Näherungsberechnung einer Spule:&lt;br /&gt;
&lt;br /&gt;
 L = 1nH x n² x ((D² / mm² ) / (l / mm))&lt;br /&gt;
 l = Spulenlänge&lt;br /&gt;
 D = Spulendurchmesser&lt;br /&gt;
&lt;br /&gt;
Beispiel: eine Induktion von 85 mH, Durchmesser 10 mm, Länge 40 mm erfordert ca. 5830 Windungen.&lt;br /&gt;
&lt;br /&gt;
Diese Induktivität von 85 mH und ein Kondensator von 4.7 nF führen zu einer Resonanzfrequenz von 7963 Hz.&lt;br /&gt;
&lt;br /&gt;
 f0 = 1 / (2 * PI * sqrt(L * C)) = 1 / (2 * PI * sqrt(0.085 H * 0.0000000047 F)) =  7963 Hz&lt;br /&gt;
&lt;br /&gt;
Weil man vielleicht nicht immer die genau passende Empfängerspule zur Hand hat, hier ein paar mögliche Kombinationen (Spule / Kondensator), die die Resonanzfrequenz von 7.8 Khz aufweisen:&lt;br /&gt;
 Kombination 1: Spule: 85mH, Kondensator: 4.7nF  (getestet)&lt;br /&gt;
 Kombination 2: Spule: 104mH, Kondensator: 4nF (getestet)&lt;br /&gt;
&lt;br /&gt;
=== Anordnung der Spulen ===&lt;br /&gt;
die Spulen sind am Boden des ArduMower so angeordnet, dass sie einen Winkel von 90 Grad einschließen, d.h. jede ist um 45 Grad aus der Längsachse gedreht.&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Ardumower_spulen.jpg| Anordnung der Spulen&lt;br /&gt;
File: L50_coils.jpg | Beispiel (Ambrogio L50)&lt;br /&gt;
File: L50_parcours.jpg | Testparcours&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Messung der Signalstärke ===&lt;br /&gt;
Zum Vergleich von Messungen wurde die Signalstärke bei verschiedenen Schleifenabständen bestimmt. Die Signalsärke (soll heißen: der berechnete ADC-Wert) kann in der Android pfodApp angezeigt werden. Der Abstand (cm) ist der berechnete Wert zwischen Perimeterschleife und Spule (eingebaut im ArduMower).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Perimeter_plot.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Schleifenverlegung ===&lt;br /&gt;
&lt;br /&gt;
Wichtig bei der Schleifenverlegung ist die Vermeidung von scharfen Ecken: Rundungen sind angesagt! Fährt der Ardumower exakt über eine scharfe Ecke, kann er unter Umständen die Schleife nicht mehr orten, da Spule und Schleife fluchten / parallel stehen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Schleifen_blind.jpg  | Nicht empfohlen: ArduMower kann keine scharfen Ecken orten!&lt;br /&gt;
File: Ardumower_coil_signal.png| Wie ändert sich das Sinal, wenn die Spule gedreht wird??&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Videos ===&lt;br /&gt;
#[http://www.youtube.com/watch?v=FGaUSg-uUxk Perimeter Stoptest]&lt;br /&gt;
#[http://www.youtube.com/watch?v=8R8QaffNlJw Perimeter Verfolgungstest]&lt;br /&gt;
#[http://www.youtube.com/watch?v=CftrnetFVYc&amp;amp;feature=youtu.be Test zum Finden und Verfolgen mit L50]&lt;br /&gt;
#[http://www.youtube.com/watch?feature=player_embedded&amp;amp;v=fjuQViS2rHM Test zum Finden und Verfolgen mit Rotenbach]&lt;/div&gt;</summary>
		<author><name>Deejay</name></author>	</entry>

	<entry>
		<id>https://wiki.ardumower.de/index.php?title=Perimeter-Schleife&amp;diff=2728</id>
		<title>Perimeter-Schleife</title>
		<link rel="alternate" type="text/html" href="https://wiki.ardumower.de/index.php?title=Perimeter-Schleife&amp;diff=2728"/>
				<updated>2015-08-28T07:09:40Z</updated>
		
		<summary type="html">&lt;p&gt;Deejay: /* Automatische Schleifensignalabschaltung */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Zusammenfassung=&lt;br /&gt;
Eine Begrenzungsschleife (oder Perimeterdraht) ist eine Art 'elektronischer Zaun': er veranlaßt den ArduMower zum Stoppen / Umkehren sobald die Grenze erreicht ist. Nicht in jeder Umgebung ist eine Begrenzungsschleife notwendig - Rasensensoren könnten eine Alternative sein.&lt;br /&gt;
&lt;br /&gt;
Das Prinzip: durch den im Garten verlegten Schleifendraht wird ein Signal gesendet, das der Ardumower ausgewertet. Gebraucht werden ein Sender zur Erzeugung und Übergabe des Signals an die Schleife und ein Empfänger zur Signalauswertung im ArduMower.&lt;br /&gt;
&lt;br /&gt;
Und so wird das Signal empfangen: eine (oder zwei) Empfangsspulen liefern ein Signal, dessen Stärke je nach Abstand zwischen Schleifendraht und Empfangsspule(n) variiert. Interessanterweise wechselt das Signal in dem Moment seine Polarität, wo der ArduMower (genauer: die Empfänger-Spule) den Schleifendraht überfährt. Es gibt zwei prinzipielle Möglichkeiten, den Begrenzungsdraht zu orten. Wir haben beide Methoden implementiert (Perimeter V1 und V2) wie nachfolgend beschrieben.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Ardumower_perimeter.jpg | Perimeterdraht&lt;br /&gt;
File: Ardumower_perimeter_components.jpg | Komponenten&lt;br /&gt;
File: Perimeter_signal_strength.jpg | Signalstärke&lt;br /&gt;
File: Perimeter_gradient.png | Verlauf der Signalstärke&lt;br /&gt;
File: Ardumower_perimeter_magneticfield.png | Perimeter-Magnetfeld&lt;br /&gt;
File: Perimeter_excluding_objects.png | Objekte ausschließen&lt;br /&gt;
File: Perimeter_divide.png | Flächen aufteilen&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://hyperphysics.phy-astr.gsu.edu/hbase/magnetic/magcur.html Magnetfeld Berechnungstool]&lt;br /&gt;
&lt;br /&gt;
Videos:&lt;br /&gt;
[http://youtu.be/r4ZMgasMkH0 Magnetfeld Demovideo]&lt;br /&gt;
&lt;br /&gt;
=Begrenzungsschleife V2 (erforderlich für aktuellen ArduMower Code)=&lt;br /&gt;
&lt;br /&gt;
[[Image:Yt-brand-standard-logo-95x40.png|thumb|180px|https://www.youtube.com/watch?v=NIer_kITelc&amp;amp;feature=youtu.be]]&lt;br /&gt;
&lt;br /&gt;
Dies ist die neue Version von Sender und Empfänger für die Begrenzungsschleife (erhältlich über den [https://www.marotronics.de/index.php?k=7 shop] [[File: shopping.png|link=https://www.marotronics.de/index.php?k=7]]).&lt;br /&gt;
&lt;br /&gt;
Beim Überfahren des Schleifendrahtes passiert nun etwas Interessantes: die Polarität der Signalspannung wechselt von negativ auf positiv bzw. umgekehrt - je nachdem, ob man von innen oder außen kommt. Dadurch werden sowohl das Überfahren selbst als auch der Status (Aufenthalt innerhalb oder außerhalb der Schleife) eindeutig erkennbar. Wie bei der V1 nutzen wir zur Signalverstärkung wieder den Motortreiber für das Ausgangssignal und einen Operationsverstärker für das Eingangssignal von der Empfangsspule. Der Sender übergibt eine digitale Signalfolge (auch als 'pseudo-noise' bezeichnet) an die Schleife, die vom Empfänger über einen software-basierten digitalen [http://en.wikipedia.org/wiki/Matched_filter Matched-Filter] ausgewertet wird. Der Filter liefert als Ergebnis einen Peak: positiv - ArduMower innerhalb oder negativ - ArduMower außerhalb der Begrenzungsschleife.&lt;br /&gt;
&lt;br /&gt;
Prinzipablauf:&lt;br /&gt;
  Senderseite&lt;br /&gt;
# Erzeugen des Ausgangssignals durch den Arduino Nano&lt;br /&gt;
# Verstärkung des Ausgangssignals durch den Motortreiber (MC33926), Schleifendrahtenden anstatt eines Motors an den Ausgang anschließen&lt;br /&gt;
&lt;br /&gt;
  ArduMower&lt;br /&gt;
# Eingangssignal per Empfangsspule aufnehmen&lt;br /&gt;
# Eingangssignal per Operationsverstärker (z.B. LM386) verstärken&lt;br /&gt;
# ADC sampling durch Arduino Mega&lt;br /&gt;
# Signalfilterung and Analyse durch ein digitales Filter (software-basierter Matched-Filter-Algorithmus)&lt;br /&gt;
# Auswertung des matched filter Ergebnisses (zur Feststellung des Aufenthaltbereiches inner- / außerhalb der Schleife, Schleifenabfahren usw.)&lt;br /&gt;
&lt;br /&gt;
Folgende Bilder erklären den Wechsel der Signalpolarität innerhalb und außerhalb der Schleife. Sie zeigen auch die Richtung der magnetischen Flusslinien, die vom Begrenzungsdraht ausgehen und wie sie die Spule innerhalb und außerhalb der Begrenzungsschleife treffen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Ardumower_perimeter2.jpg| Innen/außen-Erkennung über den Polaritätswechsel&lt;br /&gt;
File: Fluxdirections.png| Flussrichtungen&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Signal ==&lt;br /&gt;
Der Schlüssel zu einem guten Empfang des Perimetersignals überall auf dem Rasen ist die Optimierung des Signal-Rausch-Abstandes (SNR=signal/noise ratio). Um das SNR zu maximieren, gibt es zwei Ansätze:&lt;br /&gt;
# Signalstärke hochfahren (elektr. Leistung) oder&lt;br /&gt;
# Erhöhung der Signallänge&lt;br /&gt;
&lt;br /&gt;
Wir nutzen eine Kombination beider Ansätze: der Sender wiederholt ständig einen digitalen Code ('pseudonoise4_pw') mit 9615 Hz :&lt;br /&gt;
&lt;br /&gt;
 1,1,-1,-1,1,-1,1,-1,-1,1,-1,1,1,-1,-1,1,-1,-1,1,-1,-1,1,1,-1&lt;br /&gt;
&lt;br /&gt;
'1' bedeutet einen positiven Signalimpuls, '-1' einen negativen. Der kürzeste erzeugte Signalwechsel ist '-1,1', das entspräche dem höchsten Ton (wenn man es hörbar darstellen würde) von 4808 Hz. Das andere Extrem wäre der längste erzeugte Signalwechsel mit '1,1,-1,-1', bei einer Frequenz von 2404 Hz.&lt;br /&gt;
&lt;br /&gt;
Die Spule erkennt nur diese Signalwechsel des Sendersignals. So - also ohne den Kondensator in Serienschaltung zur Spule - zeigt sich das (differentielle) Empfangssignal wie folgt:&lt;br /&gt;
&lt;br /&gt;
 1,0,-1, 0,1,-1,1,-1, 0,1,-1,1,0,-1, 0,1,-1, 0,1,-1, 0,1,0,-1&lt;br /&gt;
&lt;br /&gt;
Verwendet man jedoch den Kondensator in Reihe zur Spule, sind gesendetes und empfangenes (nicht-differentielles) Signal vom Prinzipverlauf wieder identisch.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Perimeter_signal_steps.png | Perimetersignal an Sender und Empfangsspule&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Arduino ADC wertet das Empfangssignal mit einer Abtastrate von 9615 Hz aus.&lt;br /&gt;
&lt;br /&gt;
== Filter ==&lt;br /&gt;
Die gewählte Signalform weist eine spezielle Charakteristik auf: &lt;br /&gt;
&lt;br /&gt;
Weil es wie ein Zufallssignal aussieht, stimmt es nicht in Teilen mit sich selbst überein, sondern erst als komplette Sequenz ([http://en.wikipedia.org/wiki/Matched_filter Übereinstimmung]). Aufgrund dieser Charakteristik können die Startpunkte der Signalsequenz durch ein [http://en.wikipedia.org/wiki/Matched_filter matched filter] ('Korrelation' mit dem gesuchten Signalmuster) ermittelt werden: sie erscheinen als Nadelimpuls im Filterergebnis - und zwar auch bei einem stark verrauschten Signal (z.B. durch Störimpulse von Motoren etc.). &lt;br /&gt;
Die Polarität der Spitze (positiv oder negativ) gibt an, ob sich die Spule inner- oder außerhalb der Begrenzungsschleife befindet.&lt;br /&gt;
&lt;br /&gt;
Du kannst sehen, wie das funktioniert: für ein tiefergehendes Verständnis des Perimetersignals und des Filters schau Dir folgende Simulation (in englisch) an: &lt;br /&gt;
[http://www.grauonline.de/alexwww/ardumower/filter/filter.html Matched filter simulation]&lt;br /&gt;
&lt;br /&gt;
# Wähle eine Perimetersignalform: setze den Schieberegler (rechts oben 'example signals') auf ''pseudonoise4_pw'' (Wert 23).&lt;br /&gt;
# Hebe den Wert des Störsignal ein wenig an: setze den Schieberegler ('noise') auf den Wert 2.&lt;br /&gt;
# Der Plot 'Matched filter' (links unten) zeigt, dass das wiederholte Signal 3 mal entdeckt wurde.&lt;br /&gt;
# Nun simuliere die Bewegung der Spule aus der Perimeterschleife nach außen:  Klicke auf 'Invert' und setze damit die Verstärkung auf '-1'. Der Filter liefert 3 negative Spitzen.&lt;br /&gt;
&lt;br /&gt;
Mehr dazu unter: [https://www.youtube.com/watch?v=NIer_kITelc Video über matched filter]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
  File: Matched_filter_principle.png| Matched Filter&lt;br /&gt;
  File: Perimeter_signal_good_bad.png|Beispiele für gutes / schlechtes Signal &lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Sender ==&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Schleifensender_Ardumower_V2.JPG | Sender Schaltplan&lt;br /&gt;
File: Ardumower_sender_pcb.jpg| Ardumower Sender PCB&lt;br /&gt;
File: Perimeter2_sender_open.jpg| Sendersignal (6.5V, ohne Perimeterschleife)&lt;br /&gt;
File: Perimeter2_sender_closed.jpg| Sendersignal (6.5V, 120m Perimeterschleife 7 Ohm)&lt;br /&gt;
File: Sender_v2_signal_sender_5v_4ohm.png| Sendersignal (6.5V, 4 Ohm Widerstand + 2m Perimeterschleife)&lt;br /&gt;
File: perimeter_wiring_motor_driver.png | Varianten der Motortreiberschaltung&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wir benutzen einen Arduino Nano zur Erzeugung und einen Mototreiber als Ausgangsverstärker des Signals. Der Motortreiber wird mit 3,2 kHz betrieben (2 Impulsbreiten 4808 und 2404 Hz). Bei ausreichend langen Schleifendrähten benötigt der Generator typischerweise 10W (6.5V, 1.7A). Unser Motortreiber verfügt über eine integrierte Strombegrenzung und eine Übertemperaturabschaltung (z.B. MC33926). Die Schleifenlänge kann im Bereich 20 - 450m betragen und muss mindestens 5 Ohm Widerstand aufweisen.&lt;br /&gt;
&lt;br /&gt;
Sender Pin-Belegung:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;background-color: lightgrey; border: solid thin grey;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 motor driver M1OUT1     o---------- perimeter loop (20-450 meters, &amp;gt; 5 Ohm) --+&lt;br /&gt;
                                                                               |&lt;br /&gt;
 motor driver M1OUT2     o---------- perimeter loop ---------------------------+&lt;br /&gt;
 motor driver Vin        o-- 6.5V&lt;br /&gt;
 motor driver M1IN1      o-- Arduino Nano pinIN1&lt;br /&gt;
 motor driver M1IN2      o-- Arduino Nano pinIN2&lt;br /&gt;
 motor driver M1PWM_nD2  o-- Arduino Nano pinPWM&lt;br /&gt;
 motor driver M1nSF      o-- Arduino Nano pinFault&lt;br /&gt;
 motor driver M1FB       o-- Arduino Nano pinFeedback&lt;br /&gt;
 motor driver EN         o-- Arduino Nano pinEnable&lt;br /&gt;
 motor driver VDD        o-- Arduino +5V&lt;br /&gt;
 motor driver M1D1       o-- GND (via Jumper)&lt;br /&gt;
 motor driver SLEW       o-- VDD (via Jumper)&lt;br /&gt;
 &lt;br /&gt;
               |---------o-- GND&lt;br /&gt;
 Potentiometer 100k -----o-- Arduino Nano pinPot&lt;br /&gt;
               |---------o-- Arduino +5V&lt;br /&gt;
 &lt;br /&gt;
 ACS712-05 OUT ------o-- Arduino Nano pinChargeCurrent    &lt;br /&gt;
 ACS712-05 A   ------o-- charging pin (+)&lt;br /&gt;
 ACS712-05 B   ------o-- battery charger +24V&lt;br /&gt;
 battery charger GND-o-- charging pin (-)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Beispiel für den Senderaufbau mit einer Lochrasterplatine:  [http://www.braunschweiger.org/content/download/SenderR212.pdf] &lt;br /&gt;
[http://www.braunschweiger.org/content/images/SenderR212_Front.jpg] [http://www.braunschweiger.org/content/images/SenderR212_Back.jpg]'''&lt;br /&gt;
&lt;br /&gt;
=== Sender Perimeterschleife und Rasengröße ===&lt;br /&gt;
Bei einer Betriebsspannung von 6.5V sollte die Perimeterschleife nicht über 450 m lang sein. (Für den 'Wohnzimmertest' tut es auch ein 100 Ohm Widerstand in Reihe mit 5m Schaltdraht.) &lt;br /&gt;
&lt;br /&gt;
Setzen wir mal eine kreisrunde Rasenfläche voraus erhalten wir für 450m Schleifenlänge (= Kreisumfang) einen Radius von 70m:&lt;br /&gt;
 radius = Schleifenlänge / (2*PI) = 450m / (2*PI) = 70 meter&lt;br /&gt;
&lt;br /&gt;
Wäre die Signalqualität nicht durch den Radius begrenzt, entspräche der eingegrenzte Rasen einer Fläche von 15000m2:&lt;br /&gt;
 Fläche = PI * (radius*radius) = PI * (70m * 70m) = 15000 m2&lt;br /&gt;
&lt;br /&gt;
Da jedoch der maximale Radius für ausreichende Signalqualität bei ca. 18m liegt, ergibt sich die maximale Rasenfläche (Annahme immer noch: Kreisfläche!) zu 1000m2: Fläche = PI * (radius*radius) = PI * (18m * 18m) = 1000 m2&lt;br /&gt;
&lt;br /&gt;
=== Einstellung der Senderstromstärke ===&lt;br /&gt;
Zur Einstellung der Sendeleistung (Spannung*Strom) gibt es verschiedene Möglichkeiten:&lt;br /&gt;
&lt;br /&gt;
*Spannung am DC/DC-Wandler: die Versorgungsspannung des Motortreibers kann über das Poti des Wandlers zwischen 6.5 bis 12V eingestellt werden. Das ist der empfohlene Weg. Beachte: der MC33926 Motortreibermotor benötigt eine Mindestspannung (Vin) von 5V. Bei zu geringer Spannung regelt der Motortreiber sporadisch ab und die Arduino-LED zur Anzeige von Unterspannung fängt an zu blinken.&lt;br /&gt;
&lt;br /&gt;
*Normale Amplitude: statt die Perimeterschleife zwischen +Vin und -Vin (doppelte Amplitude ist Standardwert) umzuschalten, kann der Motortreiber auch nur zwischen +Vin und GND (einfache Amplitude). So zieht die Schleife weniger Strom. Zur Einstellung der einfachen Amplitude muß die entsprechende Codezeile in 'sender.ino' auskommentiert werden:&lt;br /&gt;
&lt;br /&gt;
  // #define USE_DOUBLE_AMPLTIUDE    1   &lt;br /&gt;
&lt;br /&gt;
*Hochlastwiderstand: Bei einem Schleifenwiderstand kleiner 5 Ohm kann der Strom nicht weiter reduziert werden, indem man die Spannung runterdreht: unterhalb von ca. 6V arbeitet der Arduino nicht mehr richtig. Dann hilft nur noch ein zur Schleife in Reihe geschalteter Hochlastwiderstand (R: z.B. 5 Ohm, 10W). &lt;br /&gt;
&lt;br /&gt;
 @6V (Vin): 5 ohm Hochlastwiderstand =&amp;gt; I=U/R=6V/5Ohm=1.2A   (P=U*I=6V*1.2A=7.2W)&lt;br /&gt;
&lt;br /&gt;
Daher also die mindestens 10W Belastbarkeit des Widerstandes! In diesem Falle auch die 'einfache Amplitude' im Sendercode aktivieren (doppelte Amplitude nicht benutzen!).&lt;br /&gt;
&lt;br /&gt;
=== Senderstromüberwachung (in Entwicklung) ===&lt;br /&gt;
Idee: das Poti VR1 wird durch ein digitales Poti (z.B. MCP4151-5K) ersetzt. So kann die Vin des Motortreibers (und damit auch der Strom) über den Arduino eingestellt werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Lm2596_circuit.jpg | LM2596 Modulschaltplan&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
MCP4151-5K version:&lt;br /&gt;
&lt;br /&gt;
 Vout = 1.23V*(1+VR1/R1)&lt;br /&gt;
&lt;br /&gt;
 Using VR1=5K...&lt;br /&gt;
 Vstart (on reset):  Vout=1.23V*(1+2.5K/0.33K)=10v&lt;br /&gt;
 Vmax:  Vout=1.23V*(1+5K/0.33K)=19v&lt;br /&gt;
&lt;br /&gt;
=== Automatische Schleifensignalabschaltung ===&lt;br /&gt;
Während sich der ArduMower in der Ladestation aufhält, wird das Schleifensignal nicht benötigt und wir können Energie sparen. Zum Erkennen des Ladestatus wird im &amp;quot;Sender_V2&amp;quot; ein Stromsensor (INA169) zwischen Ladegerät und Ladeanschlüsse geschaltet.&lt;br /&gt;
&lt;br /&gt;
Zum aktivieren dieser Funktion ist &amp;quot;#define USE_CHG_CURRENT&amp;quot; auf 1 zu setzen&lt;br /&gt;
&lt;br /&gt;
    #define USE_CHG_CURRENT       1     // use charging current sensor for robot detection? (set to '0' if not connected!)&lt;br /&gt;
&lt;br /&gt;
Desweiteren muss der Stromsensor am analogen Eingang A2 kalibriert werden:&lt;br /&gt;
&lt;br /&gt;
* Der Mover befindet sich nicht in der Ladestation/ Ladestrom = 0 Ampere&lt;br /&gt;
* Den seriellen Monitor aufrufen&lt;br /&gt;
* In der Befehlszeile 1 eingeben und Button &amp;quot;Senden&amp;quot; drücken&lt;br /&gt;
* Mit diesem Befehl wird die Spannung am analogen Eingang A2 gemessen und im EEPROM als Referenzwert &amp;quot;chargeADCZero&amp;quot; gespeichert&lt;br /&gt;
* Am Monitor erscheint folgender Text:&lt;br /&gt;
&lt;br /&gt;
    received key=1&lt;br /&gt;
    calibrateChargeCurrentSensor (note: robot must be outside charging station!)&lt;br /&gt;
    calibration done&lt;br /&gt;
    chargeADCZero=755&lt;br /&gt;
&lt;br /&gt;
Die Kalibrierung ist damit erfolgt. Bei den weiteren Messungen wird im seriellen Monitor unter &amp;quot;chgCurrentADC&amp;quot; der Wandlerwert des analogen Eingangs A2 angezeigt:&lt;br /&gt;
&lt;br /&gt;
    time=4	chgCurrent=0.000	chgCurrentADC=755.55	 isCharging=0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Wir simmulieren einen Ladevorgang durch Belastung der Ladebuchse durch einen 22 Ohm Widerstand. Es fließt ein Ladestrom von ca. 0,8 Ampere. Damit ändert sich der &amp;quot;chgCurrentADC&amp;quot; auf 712.63. &amp;quot;chgCurrent&amp;quot; zeigt den Ladestrom in Ampere&lt;br /&gt;
&lt;br /&gt;
    time=8	 chgCurrent= 0.801 chgCurrent  ADC=712.63	isCharging=1	&lt;br /&gt;
&lt;br /&gt;
Das Flag &amp;quot;ischarging&amp;quot; wird auf &amp;quot;1&amp;quot; gesetzt und die Perimeterschleife wird für die Dauer der Ladung abgeschaltet.&lt;br /&gt;
&lt;br /&gt;
Dies funktioniert neben dem im Sender_V2 verbauten Stromsensor &amp;quot;INA169&amp;quot; auch mit einem Stromsensor ACS 712-5 oder ACS 712-20. Bei Verwendung der ACS muss jedoch die Berechnung des Ladestromes &amp;quot;chgCurrent= 0.801&amp;quot; angepasst werden.&lt;br /&gt;
&lt;br /&gt;
    chargeCurrent = ((double)(((int)v)  - ((int)chargeADCZero))) / 1023.0 * 1.1 * 20;  //  * 20 bei Verwendung ACS 712-5&lt;br /&gt;
&lt;br /&gt;
=== Sendersoftware ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;NOTE&amp;lt;/b&amp;gt;: Wenn Du Dich nie zuvor mit Arduino beschäftigt hast, lies zuerst unsere Einführung &amp;lt;b&amp;gt;[http://wiki.ardumower.de/index.php?title=Arduino_first_steps 'erste Schritte mit dem Arduino']&amp;lt;/b&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[File:warning.png]] Wichtig: Vergewissere Dich, dass die Pin-Konfiguration des Arduino im benutzten Code (sender.ino) mit Deinem Senderaufbau übereinstimmt!&lt;br /&gt;
&lt;br /&gt;
Im Code (sender.ino) die passende Option für die automatische Schleifenabschaltung (bei Verwendung des oben beschriebenen Stromsensors Option 1) wählen:&lt;br /&gt;
&lt;br /&gt;
* Define if you have connected a charging current sensor for automatic sender standby:   #define USE_CHG_CURRENT 1   (or 0)&lt;br /&gt;
&lt;br /&gt;
=== Sender Zustandsanzeige ===&lt;br /&gt;
Die LED auf dem Arduino Nano signalisiert den Senderstatus:&lt;br /&gt;
* An: Perimeterschleife ist angeschlossen und arbeitet&lt;br /&gt;
* Aus: Perimeterschleife ist geöffnet (oder durch Defekt unterbrochen) und arbeitet nicht&lt;br /&gt;
* Blinkt: der ArduMower wird geladen und die Perimeterschleife ist zur Energieeinsparung durch die Software deaktiviert&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File:Perimeter_sender_console.png | Ausgabe 'sender.ino' über serielle Konsole&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Sendertest per PC-Soundkarte ===&lt;br /&gt;
Du kannst den Sender mit Deine Soundkarte und einer Spule testen:&lt;br /&gt;
&lt;br /&gt;
# Verbinde eine Spule (100 mH) mit dem Mikrofon-/Line-Eingang (max 1V) Deiner Soundkarte &lt;br /&gt;
# Starte das [http://www.grauonline.de/alexwww/ardumower/oscilloscope/oscilloscope.html Web-Oszilloskop], und wähle Filter 'Matched', Frequenz '9615' Hz, Visualization Math 'MinMax'&lt;br /&gt;
# Das Ausgangssignal sollte den Abstand zur Perimeterschleife wiederspiegeln - die Polarität (negativ/positiv) zeigt den Aufenthaltsbereich (innerhalb/außerhalb) der Schleife.&lt;br /&gt;
&lt;br /&gt;
Versuche in beiden Fällen (innen/außen), die Spule so dicht wie möglich an der Schleife zu positionieren, um ein auswertbares Signal zu empfangen (zur Erinnerung: wir arbeiten hier ohne die Signalverstärkung durch den Operationsverstärker, da der Soundkarteneingang nur mit max 1V beaufschlagt werden darf).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File:Ardumower_web_oscilloscope_time_signal_received.jpg | Effektivwert des empfangenen Zeit-Signals (Filter Off, Time scale: x5)&lt;br /&gt;
File:Ardumower_web_oscilloscope_time_signal.jpg | Ideales Zeitsignal erzeugt vom Sender (Filter Off, Time scale: x5)&lt;br /&gt;
File:Ardumower_web_oscilloscope.jpg  | Matched Filter Signal (Frequency: 9615 Hz, Math: MinMax)&lt;br /&gt;
File:Perimeter_signal_good_bad.png | Beispiel für gutes / schlechtes Signal&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://www.youtube.com/watch?v=vg5Xg0__66A Video zur Erklärung aller Schritte]&lt;br /&gt;
&lt;br /&gt;
== Empfänger ==&lt;br /&gt;
&lt;br /&gt;
Zum Signalempfang verwenden wir eine Spule (100 mH or 150 mH, nur für die älteren Softwareversionen wird ein Kondensator 4.7nF mit der Spule in Reihe geschaltet) in aufrechter Position, in der Mitte am vorderen Rand des ArduMower. Sie ist zur Verstärkung des empfangenen Signals mit dem Eigang eines LM386 Operationsverstärkers verbunden. Auf dem LM386 Modul wird der Kondensator C3 überbrückt, damit der Verstärker ein Signal zwischen 0..5V statt im Standardbereich -5V..+5V) liefert. Der Ausgang des LM386 sollte mit dem Arduino Analog-Pin ('pinPerimeterLeft') verbunden werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt; &lt;br /&gt;
 File: Perimeter_v2_receiver_circuit.png | Empfängerschaltkreis und überbrückter Kondensator C3&lt;br /&gt;
 File: Ardumower_chassis_components.png | Position der Perimeterspule&lt;br /&gt;
 File: Ardumower_coil_position.jpg | Eine zentrierte, aufrecht montierte Spule &lt;br /&gt;
 File: Ardumower_lm386_circuit.png | LM386 Modul Schaltplan&lt;br /&gt;
 File: Tire_coil_distance.jpg | Abstand Spule-Rad: Einfluß auf den Wendekreis (Kurvenwinkel)&lt;br /&gt;
 File: Coil_motor_layout.png | Zwei Spulen (experimentell), Abstand Spule-Spule Hinterradantrieb 12.5cm, Frontantrieb 19cm&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Empfängerschaltplan:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;background-color: lightgrey; border: solid thin grey;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
                                      LM386 IN  o------- capacitor 4.7nF ----------- coil 100 mH  (or 150 mH)&lt;br /&gt;
 Arduino pinPerimeterLeft   o------o  LM386 OUT&lt;br /&gt;
                                      LM386 GND o----------------------------------- coil&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Achtung''': Die Spule muss direkt an den Verstärkermodul angeschlossen werden. So wird die Störfestigkeit des schwachen Spulensignals gegenüber Einflüssen anderer Komponenten (Motore, DC-DC-Wandler) verbessert. &lt;br /&gt;
&lt;br /&gt;
'''Differentielles Signal''': Die aktuelle Software erfordert das Weglassen des Kondensators 4.7nF in Reihe mit der Spule. &lt;br /&gt;
&lt;br /&gt;
'''Nicht-differentielles Signal''': Mithilfe des Kondensators (4.7 nF) wird das Sendersignal wieder rekonstruiert (s. Abschnitt Signal), der Empfängeschaltkreis ist ein Schwingkreis (C und L und Perimeterschleife fungiert als Antenne) und alle Parameter (C, L, Schleifendrahtlänge) müssen übereinstimmen. Weil dies die Abstimmung schwierig macht, empfehlen wir das nicht-differentielle Signal nicht!&lt;br /&gt;
&lt;br /&gt;
=== Abstand Spule/Verstärker zu Motoren ===&lt;br /&gt;
Achte auf die Einhaltung aller Mindestabstände zwischen den folgenden Komponenten:&lt;br /&gt;
 * Spule zu Radmotor: &amp;gt; 15cm&lt;br /&gt;
 * Spule zu Mähmotor: &amp;gt; 10cm &lt;br /&gt;
 * Spule zu DC-DC Wandler: &amp;gt; 10cm&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
 File: Dcdc_noise.jpg | Achtung: Halte Spule/Vorverstärker von den DC-DC-Wandlern und Motoren fern!!!&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Signalmessungen ===&lt;br /&gt;
Sender / Spule / LM386 Verstärker Ausgangssignale sollten etwa so aussehen: (witere Details über das Signal s. Abschnitt Signal)&lt;br /&gt;
&amp;lt;gallery&amp;gt; &lt;br /&gt;
 File: Perimeter_signal_steps.png | Perimetersignal an Sender, Empfangsspule und LM386 (Theorie)&lt;br /&gt;
 File: coil_signal_without_capacitor.png | differentielles Signal / Spulensignal ohne Kondensator (5V sender, 5 Ohm Schleife - blau: Perimeter, gelb: Spule, grau: LM386 Verstärkerausgang)&lt;br /&gt;
 File: Lm_output_dc_noise.jpg | LM386 Ausgang mit DC Störungen (differentielles Signal / Spule ohne Kondensator)&lt;br /&gt;
 File: Perimeter2_receiver_coil.jpg | LM386 Ausgang (nicht-differentielles Signal / Spule mit Kondensator, 12V Sender, 120m Schleife)&lt;br /&gt;
 File: coil_signal_with_capacitor.png | nicht-differentielles Signal / Spulensignalmit Kondensator (5V Sender, 5 Ohm Schleife - grau: Perimeter, gelb: Spule, blau: LM386 Verstärkerausgang)&lt;br /&gt;
 File: Lm_output_motor_noise.jpg | LM386 Ausgang mit Störungen durch Motoren (differentielles Signal / Spule ohne Kondensator)&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Signal und Rauschmessungen ===&lt;br /&gt;
Einige Spulenmessungen ohne Verstärker aber mit Störungen (Motoren, DC/DC-Wandler etc.): &lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
 File: Coil_60k_parallel.jpg | Spule und 60 kOhm Parallelwiderstand ohne Störungen (Spulenhintergrund-rauschen Vpp=7 mV)&lt;br /&gt;
 File: Coil_dc_converter_noise.jpg | Spule und 60 kOhm Parallelwiderstand mit Störungen durch DC/DC-Wandler (DC/DC-Rauschen Vpp=18 mV)&lt;br /&gt;
 File: Coil_motor_noise.jpg | Spule und 60 kOhm Parallelwiderstand mit Störungen durch Motoren&lt;br /&gt;
 File: Perimeter2_receiver_coil_pwm.jpg | Spulensignal mit seriellem 4.7nF Kondensator, PWM-Perimetersignal (nicht empfohlen) ohne Störungen&lt;br /&gt;
 File: Fft_signal.png | FFT Signal&lt;br /&gt;
 File: Fft_motors.png | FFT Motor-Störungen&lt;br /&gt;
 File: Fft_dcdc.png | FFT DC/DC-Störungen&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ADC-Kalibrierung am Empfänger ===&lt;br /&gt;
[[File:warning.png]] Die ADC-Kalibrierung (bei ausgeschaltetem Sender!) sorgt für eine korrekte Erkennung der Nulllinie (Stille), sodass das empfangene Signal später symmetrisch zur Nulllinie angezeigt wird.&lt;br /&gt;
# Der Perimetersender und die Motoren des ArduMower müssen während der Kalibrierung ausgeschaltet sein!&lt;br /&gt;
# Wenn eine Störung durch einen anderen Sender nicht zu vermeiden ist, muß während der Kalibrierung die Spule entfernt und der Eingang es LM386 mit GND verbunden werden.&lt;br /&gt;
# Führe die ADC-Kalibrierung einmal aus (&amp;quot;pfodApp-&amp;gt;ADC Calibration&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Nach der korrekt durchgeführten Kalibrierung sollte das Signal per pfodApp Plot ('sig') bei ausgeschaltetem Perimetersender ungefähr als Null angezeigt werden. Nach Einschalten des Perimetersenders sollte das Signal etwa diesselbe positive wie negative Maximalamplitude ('Symmetie zur Nulllinie') aufweisen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
 File: perimeter_v2_sig_symmetric.jpg | symmetrisches Signal bei eingeschaltetem Sender (nach ADC-Kalibrierung)&lt;br /&gt;
 File: perimeter_v2_sender_off.jpg | Nullsignal bei ausgeschaltetem Sender (nach ADC-Kalibrierung)&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Problemanalyse und Fehlerbehebung am Empfänger ===&lt;br /&gt;
&lt;br /&gt;
Empfangenes Signal, Filterergebnis und Signalqualität können per Android Handy über die pfodApp-&amp;gt;Plot-&amp;gt;Perimeter angezeigt werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
 File: Perimeter_snr.png | Signal-Rausch-Verhältnis (SNR)&lt;br /&gt;
 File: Perimeter_signal_38khz.png | Signal, Filterergebnis, LP Filterergebnis, innen/außen, Ereigniszähler, Signal ein/aus, Signalqualität&lt;br /&gt;
 File: Perimeter_plot_moving_from_inside_to_outside.png | Fahren von innen nach außen&lt;br /&gt;
 File: Perimeter_v2_plot.png&lt;br /&gt;
 File: Perimeter_v2_plot_new.png&lt;br /&gt;
 File: Ardumower_perimeter2_test.jpg&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Beschreibung der im Plot angezeigten Signalverläufe:&lt;br /&gt;
 sig:  Spulensignal (Sequenz der Rohimpulse nach ADC) als kurzer Snapshot (32 samples), Update alle 20 Sekunden &lt;br /&gt;
       (also 20 Sekundenwarten bis zum nächsten Snapshot)&lt;br /&gt;
 mag:  Filterergebnis: innen (negativ) oder außen (positiv), magnitude: Abstand zur Perimeterschleife / magnetische Signalstärke (RSSI)&lt;br /&gt;
       - wird benutzt zum &amp;lt;b&amp;gt;Perimeter verfolgen&amp;lt;/b&amp;gt;&lt;br /&gt;
 smag: Filterergebnis, low-pass-gefiltert, ohne Vorzeichen (geglätteter mag-Verlauf) - verwendet zur Erkennung des &amp;lt;b&amp;gt;'Sender-aus' Zustandes&amp;lt;/b&amp;gt;&lt;br /&gt;
       Der Grenzwert kann über die pfodApp gesetzt werden (Settings-&amp;gt;Perimeter-&amp;gt;Timed-out if below smag)&lt;br /&gt;
 in:   binäres Ergebnis des low-pass Filters: innerhalb (1) oder außerhalb (0) der Perimeterschleife - wird benutzt zur &amp;lt;b&amp;gt;Erkennung des Perimetergrenzverlaufs&amp;lt;/b&amp;gt;&lt;br /&gt;
       Ist der ArduMower eine bestimmte Zeit außerhalb der Schleife, geht er in den Fehlerstatus. Diese Zeit kann per pfodApp&lt;br /&gt;
       (Settings-&amp;gt;Perimeter-&amp;gt;Timeout (s) if not inside) eingestellt werden&lt;br /&gt;
 cnt:  Anzahl der Wechsel von innen nach außen (counter, Zähler)&lt;br /&gt;
 on:   Perimetersender ist aktiv (1) oder inaktiv (0), basiert auf der Auswertung des smag Ergebnisses&lt;br /&gt;
 qty:  &amp;lt;b&amp;gt;Signalqualität&amp;lt;/b&amp;gt; (Aussage über die Verläßlichkeit der Erkennung 'innerhalb / außerhalb' aus dem Filterergebnis)&lt;br /&gt;
       Verhältnis aus Vergleich mit Mustersignal zu Vergleich mit inversem Mustersignal              &lt;br /&gt;
       1.0 bedeutet schlechte Qualität, Du solltest Werte von 1.5 oder höher)&lt;br /&gt;
&lt;br /&gt;
Im Plot soll der 'mag'-Verlauf frei von Spitzen sein: innerhalb der Schleife sollte das Signal eine negative Kurve, außerhalb eine positive Kurve beschreiben. Weist die Kurve Spitzen auf, versuche folgende Maßnahmen zur Fehlerbeseitigung bzw. Optimierung:&lt;br /&gt;
&lt;br /&gt;
* Benutze immer einen ausreichend langen und korrekt abgerollten Schleifendraht (20m oder länger). Benutze niemals einen zu kurzen (Mindestwiderstand 5 Ohm!) oder gar aufgerollten Draht. &lt;br /&gt;
* Für den 'Wohnzimmertest' sollte ein 100 Ohm Widerstand in Reihe mit 5m Draht bei 6V seine Aufgabe erfüllen.&lt;br /&gt;
* Verbinde die Empfangsspule mit 'pinPerimeterLeft' auf dem PCB (am falschen Pin könnte das Signal 'etwas schwach' reinkommen)&lt;br /&gt;
* Die Spulenpolung kann per pfodApp eingestellt werden (wird 'außen' angezeigt, wenn der Ardumower sich innrhalb der Schleife befindet?). Denselben Effekt hat das Umklemmen der Schleifenenden am Senderausgang.&lt;br /&gt;
* Sollte das Signal schwach erscheinen, überprüfen, ob am Spulenverstärker das Poti &amp;quot;voll aufgedreht&amp;quot; ist! Hilfreich ist die gleichzeitige Anzeige des Signal per pfodApp (Plot --&amp;gt; Perimeter).&lt;br /&gt;
* Die Kabelverbindung zwischen Spule und LM386-Vorverstärker muss möglichst kurz sein - am Besten die Spule direkt am Verstärker anschließen!&lt;br /&gt;
* Halte den Abstand zwische Spule und Motoren sowie DC/DC-Wandlern möglichst groß (30cm oder mehr!)&lt;br /&gt;
* Nutze die magnetische Abschirmwirkung (z.B. Deines Akkus) zwischen Spule und Störquellen.&lt;br /&gt;
* Einstellen der Senderspannung: bei längeren Perimeterschleifen (&amp;gt;80m) die Spannung höher wählen (Potentiometer DC/DC-Wandler), bei kürzeren Schleifen (&amp;gt;25m) eher niedriger (anstreben einer Sendeleistung = Spannung * Strom von ca 10W)&lt;br /&gt;
* Versuche bei laufenden Motoren die Spule leicht zu einer Seite zu neigen um die Signalqualität 'qty' zu erhöhen.&lt;br /&gt;
&lt;br /&gt;
== Messungen ==&lt;br /&gt;
&lt;br /&gt;
Zum Vergleich Beispielwerte, gemessen an verschiedenen, im Gelände getesteten Kombinationen von Sender-/Empfänger-/Schleifenparametern:&lt;br /&gt;
&lt;br /&gt;
1) 120m (0.7mm^2), R=4 Ohm, 6.5V, Spule Vpp 20mV&lt;br /&gt;
 Störsignalpegel (max): smag=192&lt;br /&gt;
 Signal (min): smag=254&lt;br /&gt;
 SNR=Signal/Störsignal=254/192=1.3&lt;br /&gt;
&lt;br /&gt;
2) 30m (0.7mm^2), R=1.0 Ohm (+4 Ohm series R), 6.5V, Spule Vpp 120 mV&lt;br /&gt;
 Störsignalpegel (max): smag=192&lt;br /&gt;
 Signal (min): smag=896&lt;br /&gt;
 SNR=Signal/Störsignal=896/192=4.6&lt;br /&gt;
&lt;br /&gt;
=== Videos ===&lt;br /&gt;
#[http://www.youtube.com/watch?v=FL6K98B2Zsk&amp;amp;feature=player_detailpage#t=265 Perimeter2 Demo]&lt;br /&gt;
#[https://www.youtube.com/watch?v=QCA6Dm3rs3M Test 120m Perimeterschleife]&lt;br /&gt;
#[https://www.youtube.com/watch?v=NIer_kITelc Theorie zu Perimeterschleife und Matched Filter (in deutsch)]&lt;br /&gt;
#[https://www.youtube.com/watch?v=VxJN2xb55dU&amp;amp;feature=youtu.be Sender-PCB]&lt;br /&gt;
&lt;br /&gt;
= Verfolgung der Begrenzungsschleife =&lt;br /&gt;
&lt;br /&gt;
Das Abfahren der Schleife wird über einen softwareseitig realisierten digitalen PID-Regler gesteuert. Die Regler-Parameter (P,I,D) können über ein Android-Handy per pfodApp eingestellt werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Ardumower_perimeter_pid.jpg&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mehr Informationen über PID-Regler sind hier zu finden: &lt;br /&gt;
[http://www.ardumower.de/index.php/de/forum/anleitungen-hilfe/121-pid-regelung-fuer-drehzahl-drehung-etc-richtig-einstellen Forum].&lt;br /&gt;
&lt;br /&gt;
= Sensor Signalfusion =&lt;br /&gt;
Das Magnetfeld der Perimeterschleife könnte man als Input für eine [http://wiki.ardumower.de/index.php?title=Sensor_fusion zur Positionsbestimmung des ArduMower nutzen].&lt;br /&gt;
&lt;br /&gt;
= Weiterführende Links =&lt;br /&gt;
#[http://www.ardumower.de/index.php/en/forum/schleifensensoren-generator/83-ir-bake-generator-empfaenger-diy Ein anderer Navigationsansatz sind Infrarot-Baken]&lt;br /&gt;
#[http://grauonline.de/wordpress/?page_id=364 Mehr Details zum 'matched filter']&lt;br /&gt;
#[http://www.grauonline.de/alexwww/ardumower/oscilloscope/oscilloscope.html Soundkarten-Oszilloskop inklusive 'matched filter']&lt;br /&gt;
&lt;br /&gt;
= Perimeter V1 (für alten Code V0.9.3, nicht mehr empfohlen) =&lt;br /&gt;
&lt;br /&gt;
Dies war die erste Version unseres Perimetersenders und Empfängers. Sie wies einige Nachteile auf (Orientierungsfehler, Keine 'Sender-aus'-Erkennung, keine Möglichkeit zur Feststellung des Aufenthaltsbereiches inner-/außerhalb der Schleife), so dass der Einsatz nicht weiter empfohlen wird. Benutze die Nachfolgeversion V2, wie oben beschrieben.&lt;br /&gt;
&lt;br /&gt;
== Sender ==&lt;br /&gt;
Du kannst den Sender eines kommerziellen Rasenmäroboters nutzen (der hier gezeigte Sender ist kompatibel mit Tianchen oder Rotenbach Mährobotern), oder Du baust Dir selber einen:&lt;br /&gt;
&lt;br /&gt;
Ein Arduino (z.B. Nano) generiert ein Rechtecksignal, welches die Polarität eines Motortreibers (L298N) mit 7.8 Khz schaltet. Dadurch wechselt das Ausgangssignal zwischen Vcc und GND. Ein Schwingkreis verstärkt die Signalspitzen (Resonanzfrequenz ist dieselbe wie die Schaltfrequenz - 7.8 Khz). So reicht es aus, den Motortreiber mit 5V (statt 12V) zu betreiben. Die Spannungsquelle muß etwa 2W (400mA bei 5V) leisten. &lt;br /&gt;
Ein Teil des Signals wird durch den Arduino (ADC) durch eine Diode und einen Spannungsteiler erfaßt. So kann festgestellt werden, ob die Perimeterschleife angeschlossen ist. Durch den Schleifendraht fließt ein Strom von ca. 150mA (Drahtquerschnitt 2-3 mm^2, Länge max 500 m)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Arduino_perimeter_sender.png ‎&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Weil man vielleicht nicht immer die genau passende Empfängespule zur Hand hat, hier ein paar mögliche Kombinationen (Spule / Kondensator), die die Resonanzfrequenz von 7.8 Khz aufweisen:&lt;br /&gt;
*Kombination 1: Spule: 160µH, Kondensator: 3,3µF/50V  (getestet)&lt;br /&gt;
*Kombination 2: Spule 33mH, Kondensator: 12nF (nicht getestet)&lt;br /&gt;
&lt;br /&gt;
==== Stromversorgung ====&lt;br /&gt;
Zur Erzeugung der 5V Spannung wird ein step-down-Wandler (z.B. Module mit LM2596) eingesetzt. Vor dem Einsatz in der Schaltung muß der Wandler auf 5V einjustiert werden. &lt;br /&gt;
&lt;br /&gt;
'''Warnung''' : Lege niemals mehr als 5V auf die Arduino 5V Pins oder Du zerstörst ihn. Deswegen: vorher die Spannung einstellen und kontrollieren!&lt;br /&gt;
&lt;br /&gt;
==== Funktionstest ====&lt;br /&gt;
1. Nach dem Code-Hochladen und Anschliessen der Begrenzungsschleife sollte die Arduino LED an sein. Nun entferne den Schleifendraht und die LED sollte ausgehen.&lt;br /&gt;
&lt;br /&gt;
2. Sollte das nicht so sein, kontrolliere mit einem Voltmeter zum Einen die Spannung zwischen Pin 9 des Arduino und dann die am Motortreiberausgang (OUT_1) jeweils gegen GND - beide sollten eine Gleichspannung  2.5 Volt führen.&lt;br /&gt;
&lt;br /&gt;
3. Hast Du ein Oszilloskop? Dann schließe statt der Begrenzungsschleife das Oszilloskop an den Sender an. Das gemessene Signal sollte folgendermaßen aussehen:&lt;br /&gt;
&lt;br /&gt;
Das Ausgangssignal zeigt eine höhere Ampltude (hohe Spitzenwerte) als das Eingangssignal:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Perimetersignal.jpg|Signal am Senderausgang &lt;br /&gt;
File: Ardumower_perimeter_sender_schematics.png|Grundprinzip des Schwingkreises&lt;br /&gt;
File: Arduino_perimeter_sender_photo.jpg&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Für einen einfachen Empfangstest kannst Du die Empfangsspule direkt ans Oszilloskop anschließen. Das gemessene Signal sollte etwa so  aussehen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Coilsignal.jpg|Signal an der Empfangsspule&lt;br /&gt;
File: Fft.jpg|Signal im Frequenzspektrum, überlagert durch Motorstörungen&lt;br /&gt;
File: Ardumower_perimeter_spectrum_plot.jpg| Anzeige des Frequenzspektrums über pfodApp&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Empfänger ==&lt;br /&gt;
Der Empfänger nutzt zwei Spulen, die rechts und links vorn im ArduMower montiert sind. Die Signalstärke der linken und rechten Spule werden ausgewertet, um sie vergleichen zu können.&lt;br /&gt;
&lt;br /&gt;
Prinzip:&lt;br /&gt;
# Verstärkung der alternierenden Signale per OPAMP&lt;br /&gt;
# Optional: Bandpass-Filterung zum Ausblenden der Störungen durch Motore etc.&lt;br /&gt;
# Ermittlung der Signalstärke von linker und rechter Spule&lt;br /&gt;
&lt;br /&gt;
Vorteil dieser Version: analoge Auswertungfunktioniert hervorragend.&lt;br /&gt;
Nachteil: Du kannst nicht feststellen, ob Du Dich gerade innerhalb oder außerhalb der Begrenzungsschleife aufhälst, wenn Du nicht jede Überfahrt des Begrenzungsdrahtes mitprotokollierst. Es ist auch nicht möglich festzustellen, ob Du die Begrenzungsschleife im oder gegen den Uhrzeigersinn abfährst.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Arduino_perimeter_receiver.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Eine Spule empfängt das Signal des Senders. Ein Schwingkreis (LC: SPule und Kondensator)verstärkt das empfangene Signal bei einer Resonanzfrequenz von 7.8 kHz. Das Signal wird weiter verstärkt durch eien LM386-Verstärker (hier: Arduino Soundsensor mit Spule statt Mikrofon). Ein Bandpassfilter (digitaler Filter, FFT - Fast Fourier Transformation) läuft auf dem Arduino und filtert die gewünschte Frequenz (7.8 Khz) und erzeugt ein PWM-Signal (Pulsbreite proportional zur Signalstärke). Über einen Tiefpassfilter wird das PWM-Signal in eine Gleichspamnnung gewandelt.&lt;br /&gt;
Beachte: Die Verdrahtung zwischen ist vereinfacht dargestellt - Details der Verdrahtung s. Schaltplan.&lt;br /&gt;
&lt;br /&gt;
Wir haben folgende Kombinationen von Spulen und Verstärkern getestet:&lt;br /&gt;
&lt;br /&gt;
'Arduino Soundsensor'&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Soundsensor.jpg| Signalverstärkung über LM386 - Arduino Soundsensor mit Spule statt Mikrofon&lt;br /&gt;
File: YwRobot_Sensor.jpg |Arduino Soundsensor mit LM386&lt;br /&gt;
File: YwRobot_circuit.png |Arduino Soundsensor Modulschaltplan&lt;br /&gt;
File: Coil_85mh.jpg|85 mH Spule&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
LM386 Verstärker&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Lm386_amplifier.jpg| LM386 Versärker (200-fach)&lt;br /&gt;
File: Lm386_modified.jpg| modifizierter LM386-Verstärker&lt;br /&gt;
File: Ardumower_lm386_circuit.png | LM386 Modulschaltplan&lt;br /&gt;
File: Coil_small.jpg| 104 mH Spule&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wichtig: Bei Verwendung dieses Verstärkers muß der Kondensator C3 überbrückt werden (erzeugt das für den Arduino erforderliche VCC/2 offset). Dies Spule schließt man an &amp;quot;IN&amp;quot; und &amp;quot;GND&amp;quot; an.&lt;br /&gt;
&lt;br /&gt;
'''Beachte''': die Spule unbedingt direkt am Verstärkermodul befestigen. Dies minimiert die Störeinflüsse durch andere Komponenten wie z.B. Motoren auf das schwache Spulensignal.&lt;br /&gt;
=== Funktionstest ===&lt;br /&gt;
# Stelle eine korrekte Funktion des Schleifensenders sicher (wie bereits weiter oben beschrieben).&lt;br /&gt;
# Drehe das Potentiometer des Arduino Soundsensors auf Maximum (gegen den Uhrzegersinn).&lt;br /&gt;
# Lade das Programm auf den Arduino und bewege eine Spule in Richtung des Begrenzungsdrahtes: die LED des Arduino sollte zu blinken beginnen. Halte nun beide Spulen im gleichen Abstand über den Begrenzungsdraht: die LED sollte nun permanent leuchten.&lt;br /&gt;
# Wenn das so nicht funktioniert, öffne die serielle Konsole und  prüfe die Signalwerte.&lt;br /&gt;
&lt;br /&gt;
=== Spulenauswahl ===&lt;br /&gt;
mathematische Näherungsberechnung einer Spule:&lt;br /&gt;
&lt;br /&gt;
 L = 1nH x n² x ((D² / mm² ) / (l / mm))&lt;br /&gt;
 l = Spulenlänge&lt;br /&gt;
 D = Spulendurchmesser&lt;br /&gt;
&lt;br /&gt;
Beispiel: eine Induktion von 85 mH, Durchmesser 10 mm, Länge 40 mm erfordert ca. 5830 Windungen.&lt;br /&gt;
&lt;br /&gt;
Diese Induktivität von 85 mH und ein Kondensator von 4.7 nF führen zu einer Resonanzfrequenz von 7963 Hz.&lt;br /&gt;
&lt;br /&gt;
 f0 = 1 / (2 * PI * sqrt(L * C)) = 1 / (2 * PI * sqrt(0.085 H * 0.0000000047 F)) =  7963 Hz&lt;br /&gt;
&lt;br /&gt;
Weil man vielleicht nicht immer die genau passende Empfängerspule zur Hand hat, hier ein paar mögliche Kombinationen (Spule / Kondensator), die die Resonanzfrequenz von 7.8 Khz aufweisen:&lt;br /&gt;
 Kombination 1: Spule: 85mH, Kondensator: 4.7nF  (getestet)&lt;br /&gt;
 Kombination 2: Spule: 104mH, Kondensator: 4nF (getestet)&lt;br /&gt;
&lt;br /&gt;
=== Anordnung der Spulen ===&lt;br /&gt;
die Spulen sind am Boden des ArduMower so angeordnet, dass sie einen Winkel von 90 Grad einschließen, d.h. jede ist um 45 Grad aus der Längsachse gedreht.&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Ardumower_spulen.jpg| Anordnung der Spulen&lt;br /&gt;
File: L50_coils.jpg | Beispiel (Ambrogio L50)&lt;br /&gt;
File: L50_parcours.jpg | Testparcours&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Messung der Signalstärke ===&lt;br /&gt;
Zum Vergleich von Messungen wurde die Signalstärke bei verschiedenen Schleifenabständen bestimmt. Die Signalsärke (soll heißen: der berechnete ADC-Wert) kann in der Android pfodApp angezeigt werden. Der Abstand (cm) ist der berechnete Wert zwischen Perimeterschleife und Spule (eingebaut im ArduMower).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Perimeter_plot.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Schleifenverlegung ===&lt;br /&gt;
&lt;br /&gt;
Wichtig bei der Schleifenverlegung ist die Vermeidung von scharfen Ecken: Rundungen sind angesagt! Fährt der Ardumower exakt über eine scharfe Ecke, kann er unter Umständen die Schleife nicht mehr orten, da Spule und Schleife fluchten / parallel stehen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Schleifen_blind.jpg  | Nicht empfohlen: ArduMower kann keine scharfen Ecken orten!&lt;br /&gt;
File: Ardumower_coil_signal.png| Wie ändert sich das Sinal, wenn die Spule gedreht wird??&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Videos ===&lt;br /&gt;
#[http://www.youtube.com/watch?v=FGaUSg-uUxk Perimeter Stoptest]&lt;br /&gt;
#[http://www.youtube.com/watch?v=8R8QaffNlJw Perimeter Verfolgungstest]&lt;br /&gt;
#[http://www.youtube.com/watch?v=CftrnetFVYc&amp;amp;feature=youtu.be Test zum Finden und Verfolgen mit L50]&lt;br /&gt;
#[http://www.youtube.com/watch?feature=player_embedded&amp;amp;v=fjuQViS2rHM Test zum Finden und Verfolgen mit Rotenbach]&lt;/div&gt;</summary>
		<author><name>Deejay</name></author>	</entry>

	<entry>
		<id>https://wiki.ardumower.de/index.php?title=Perimeter-Schleife&amp;diff=2727</id>
		<title>Perimeter-Schleife</title>
		<link rel="alternate" type="text/html" href="https://wiki.ardumower.de/index.php?title=Perimeter-Schleife&amp;diff=2727"/>
				<updated>2015-08-27T17:09:53Z</updated>
		
		<summary type="html">&lt;p&gt;Deejay: /* Automatische Schleifensignalabschaltung */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Zusammenfassung=&lt;br /&gt;
Eine Begrenzungsschleife (oder Perimeterdraht) ist eine Art 'elektronischer Zaun': er veranlaßt den ArduMower zum Stoppen / Umkehren sobald die Grenze erreicht ist. Nicht in jeder Umgebung ist eine Begrenzungsschleife notwendig - Rasensensoren könnten eine Alternative sein.&lt;br /&gt;
&lt;br /&gt;
Das Prinzip: durch den im Garten verlegten Schleifendraht wird ein Signal gesendet, das der Ardumower ausgewertet. Gebraucht werden ein Sender zur Erzeugung und Übergabe des Signals an die Schleife und ein Empfänger zur Signalauswertung im ArduMower.&lt;br /&gt;
&lt;br /&gt;
Und so wird das Signal empfangen: eine (oder zwei) Empfangsspulen liefern ein Signal, dessen Stärke je nach Abstand zwischen Schleifendraht und Empfangsspule(n) variiert. Interessanterweise wechselt das Signal in dem Moment seine Polarität, wo der ArduMower (genauer: die Empfänger-Spule) den Schleifendraht überfährt. Es gibt zwei prinzipielle Möglichkeiten, den Begrenzungsdraht zu orten. Wir haben beide Methoden implementiert (Perimeter V1 und V2) wie nachfolgend beschrieben.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Ardumower_perimeter.jpg | Perimeterdraht&lt;br /&gt;
File: Ardumower_perimeter_components.jpg | Komponenten&lt;br /&gt;
File: Perimeter_signal_strength.jpg | Signalstärke&lt;br /&gt;
File: Perimeter_gradient.png | Verlauf der Signalstärke&lt;br /&gt;
File: Ardumower_perimeter_magneticfield.png | Perimeter-Magnetfeld&lt;br /&gt;
File: Perimeter_excluding_objects.png | Objekte ausschließen&lt;br /&gt;
File: Perimeter_divide.png | Flächen aufteilen&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://hyperphysics.phy-astr.gsu.edu/hbase/magnetic/magcur.html Magnetfeld Berechnungstool]&lt;br /&gt;
&lt;br /&gt;
Videos:&lt;br /&gt;
[http://youtu.be/r4ZMgasMkH0 Magnetfeld Demovideo]&lt;br /&gt;
&lt;br /&gt;
=Begrenzungsschleife V2 (erforderlich für aktuellen ArduMower Code)=&lt;br /&gt;
&lt;br /&gt;
[[Image:Yt-brand-standard-logo-95x40.png|thumb|180px|https://www.youtube.com/watch?v=NIer_kITelc&amp;amp;feature=youtu.be]]&lt;br /&gt;
&lt;br /&gt;
Dies ist die neue Version von Sender und Empfänger für die Begrenzungsschleife (erhältlich über den [https://www.marotronics.de/index.php?k=7 shop] [[File: shopping.png|link=https://www.marotronics.de/index.php?k=7]]).&lt;br /&gt;
&lt;br /&gt;
Beim Überfahren des Schleifendrahtes passiert nun etwas Interessantes: die Polarität der Signalspannung wechselt von negativ auf positiv bzw. umgekehrt - je nachdem, ob man von innen oder außen kommt. Dadurch werden sowohl das Überfahren selbst als auch der Status (Aufenthalt innerhalb oder außerhalb der Schleife) eindeutig erkennbar. Wie bei der V1 nutzen wir zur Signalverstärkung wieder den Motortreiber für das Ausgangssignal und einen Operationsverstärker für das Eingangssignal von der Empfangsspule. Der Sender übergibt eine digitale Signalfolge (auch als 'pseudo-noise' bezeichnet) an die Schleife, die vom Empfänger über einen software-basierten digitalen [http://en.wikipedia.org/wiki/Matched_filter Matched-Filter] ausgewertet wird. Der Filter liefert als Ergebnis einen Peak: positiv - ArduMower innerhalb oder negativ - ArduMower außerhalb der Begrenzungsschleife.&lt;br /&gt;
&lt;br /&gt;
Prinzipablauf:&lt;br /&gt;
  Senderseite&lt;br /&gt;
# Erzeugen des Ausgangssignals durch den Arduino Nano&lt;br /&gt;
# Verstärkung des Ausgangssignals durch den Motortreiber (MC33926), Schleifendrahtenden anstatt eines Motors an den Ausgang anschließen&lt;br /&gt;
&lt;br /&gt;
  ArduMower&lt;br /&gt;
# Eingangssignal per Empfangsspule aufnehmen&lt;br /&gt;
# Eingangssignal per Operationsverstärker (z.B. LM386) verstärken&lt;br /&gt;
# ADC sampling durch Arduino Mega&lt;br /&gt;
# Signalfilterung and Analyse durch ein digitales Filter (software-basierter Matched-Filter-Algorithmus)&lt;br /&gt;
# Auswertung des matched filter Ergebnisses (zur Feststellung des Aufenthaltbereiches inner- / außerhalb der Schleife, Schleifenabfahren usw.)&lt;br /&gt;
&lt;br /&gt;
Folgende Bilder erklären den Wechsel der Signalpolarität innerhalb und außerhalb der Schleife. Sie zeigen auch die Richtung der magnetischen Flusslinien, die vom Begrenzungsdraht ausgehen und wie sie die Spule innerhalb und außerhalb der Begrenzungsschleife treffen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Ardumower_perimeter2.jpg| Innen/außen-Erkennung über den Polaritätswechsel&lt;br /&gt;
File: Fluxdirections.png| Flussrichtungen&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Signal ==&lt;br /&gt;
Der Schlüssel zu einem guten Empfang des Perimetersignals überall auf dem Rasen ist die Optimierung des Signal-Rausch-Abstandes (SNR=signal/noise ratio). Um das SNR zu maximieren, gibt es zwei Ansätze:&lt;br /&gt;
# Signalstärke hochfahren (elektr. Leistung) oder&lt;br /&gt;
# Erhöhung der Signallänge&lt;br /&gt;
&lt;br /&gt;
Wir nutzen eine Kombination beider Ansätze: der Sender wiederholt ständig einen digitalen Code ('pseudonoise4_pw') mit 9615 Hz :&lt;br /&gt;
&lt;br /&gt;
 1,1,-1,-1,1,-1,1,-1,-1,1,-1,1,1,-1,-1,1,-1,-1,1,-1,-1,1,1,-1&lt;br /&gt;
&lt;br /&gt;
'1' bedeutet einen positiven Signalimpuls, '-1' einen negativen. Der kürzeste erzeugte Signalwechsel ist '-1,1', das entspräche dem höchsten Ton (wenn man es hörbar darstellen würde) von 4808 Hz. Das andere Extrem wäre der längste erzeugte Signalwechsel mit '1,1,-1,-1', bei einer Frequenz von 2404 Hz.&lt;br /&gt;
&lt;br /&gt;
Die Spule erkennt nur diese Signalwechsel des Sendersignals. So - also ohne den Kondensator in Serienschaltung zur Spule - zeigt sich das (differentielle) Empfangssignal wie folgt:&lt;br /&gt;
&lt;br /&gt;
 1,0,-1, 0,1,-1,1,-1, 0,1,-1,1,0,-1, 0,1,-1, 0,1,-1, 0,1,0,-1&lt;br /&gt;
&lt;br /&gt;
Verwendet man jedoch den Kondensator in Reihe zur Spule, sind gesendetes und empfangenes (nicht-differentielles) Signal vom Prinzipverlauf wieder identisch.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Perimeter_signal_steps.png | Perimetersignal an Sender und Empfangsspule&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Arduino ADC wertet das Empfangssignal mit einer Abtastrate von 9615 Hz aus.&lt;br /&gt;
&lt;br /&gt;
== Filter ==&lt;br /&gt;
Die gewählte Signalform weist eine spezielle Charakteristik auf: &lt;br /&gt;
&lt;br /&gt;
Weil es wie ein Zufallssignal aussieht, stimmt es nicht in Teilen mit sich selbst überein, sondern erst als komplette Sequenz ([http://en.wikipedia.org/wiki/Matched_filter Übereinstimmung]). Aufgrund dieser Charakteristik können die Startpunkte der Signalsequenz durch ein [http://en.wikipedia.org/wiki/Matched_filter matched filter] ('Korrelation' mit dem gesuchten Signalmuster) ermittelt werden: sie erscheinen als Nadelimpuls im Filterergebnis - und zwar auch bei einem stark verrauschten Signal (z.B. durch Störimpulse von Motoren etc.). &lt;br /&gt;
Die Polarität der Spitze (positiv oder negativ) gibt an, ob sich die Spule inner- oder außerhalb der Begrenzungsschleife befindet.&lt;br /&gt;
&lt;br /&gt;
Du kannst sehen, wie das funktioniert: für ein tiefergehendes Verständnis des Perimetersignals und des Filters schau Dir folgende Simulation (in englisch) an: &lt;br /&gt;
[http://www.grauonline.de/alexwww/ardumower/filter/filter.html Matched filter simulation]&lt;br /&gt;
&lt;br /&gt;
# Wähle eine Perimetersignalform: setze den Schieberegler (rechts oben 'example signals') auf ''pseudonoise4_pw'' (Wert 23).&lt;br /&gt;
# Hebe den Wert des Störsignal ein wenig an: setze den Schieberegler ('noise') auf den Wert 2.&lt;br /&gt;
# Der Plot 'Matched filter' (links unten) zeigt, dass das wiederholte Signal 3 mal entdeckt wurde.&lt;br /&gt;
# Nun simuliere die Bewegung der Spule aus der Perimeterschleife nach außen:  Klicke auf 'Invert' und setze damit die Verstärkung auf '-1'. Der Filter liefert 3 negative Spitzen.&lt;br /&gt;
&lt;br /&gt;
Mehr dazu unter: [https://www.youtube.com/watch?v=NIer_kITelc Video über matched filter]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
  File: Matched_filter_principle.png| Matched Filter&lt;br /&gt;
  File: Perimeter_signal_good_bad.png|Beispiele für gutes / schlechtes Signal &lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Sender ==&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Schleifensender_Ardumower_V2.JPG | Sender Schaltplan&lt;br /&gt;
File: Ardumower_sender_pcb.jpg| Ardumower Sender PCB&lt;br /&gt;
File: Perimeter2_sender_open.jpg| Sendersignal (6.5V, ohne Perimeterschleife)&lt;br /&gt;
File: Perimeter2_sender_closed.jpg| Sendersignal (6.5V, 120m Perimeterschleife 7 Ohm)&lt;br /&gt;
File: Sender_v2_signal_sender_5v_4ohm.png| Sendersignal (6.5V, 4 Ohm Widerstand + 2m Perimeterschleife)&lt;br /&gt;
File: perimeter_wiring_motor_driver.png | Varianten der Motortreiberschaltung&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wir benutzen einen Arduino Nano zur Erzeugung und einen Mototreiber als Ausgangsverstärker des Signals. Der Motortreiber wird mit 3,2 kHz betrieben (2 Impulsbreiten 4808 und 2404 Hz). Bei ausreichend langen Schleifendrähten benötigt der Generator typischerweise 10W (6.5V, 1.7A). Unser Motortreiber verfügt über eine integrierte Strombegrenzung und eine Übertemperaturabschaltung (z.B. MC33926). Die Schleifenlänge kann im Bereich 20 - 450m betragen und muss mindestens 5 Ohm Widerstand aufweisen.&lt;br /&gt;
&lt;br /&gt;
Sender Pin-Belegung:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;background-color: lightgrey; border: solid thin grey;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 motor driver M1OUT1     o---------- perimeter loop (20-450 meters, &amp;gt; 5 Ohm) --+&lt;br /&gt;
                                                                               |&lt;br /&gt;
 motor driver M1OUT2     o---------- perimeter loop ---------------------------+&lt;br /&gt;
 motor driver Vin        o-- 6.5V&lt;br /&gt;
 motor driver M1IN1      o-- Arduino Nano pinIN1&lt;br /&gt;
 motor driver M1IN2      o-- Arduino Nano pinIN2&lt;br /&gt;
 motor driver M1PWM_nD2  o-- Arduino Nano pinPWM&lt;br /&gt;
 motor driver M1nSF      o-- Arduino Nano pinFault&lt;br /&gt;
 motor driver M1FB       o-- Arduino Nano pinFeedback&lt;br /&gt;
 motor driver EN         o-- Arduino Nano pinEnable&lt;br /&gt;
 motor driver VDD        o-- Arduino +5V&lt;br /&gt;
 motor driver M1D1       o-- GND (via Jumper)&lt;br /&gt;
 motor driver SLEW       o-- VDD (via Jumper)&lt;br /&gt;
 &lt;br /&gt;
               |---------o-- GND&lt;br /&gt;
 Potentiometer 100k -----o-- Arduino Nano pinPot&lt;br /&gt;
               |---------o-- Arduino +5V&lt;br /&gt;
 &lt;br /&gt;
 ACS712-05 OUT ------o-- Arduino Nano pinChargeCurrent    &lt;br /&gt;
 ACS712-05 A   ------o-- charging pin (+)&lt;br /&gt;
 ACS712-05 B   ------o-- battery charger +24V&lt;br /&gt;
 battery charger GND-o-- charging pin (-)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Beispiel für den Senderaufbau mit einer Lochrasterplatine:  [http://www.braunschweiger.org/content/download/SenderR212.pdf] &lt;br /&gt;
[http://www.braunschweiger.org/content/images/SenderR212_Front.jpg] [http://www.braunschweiger.org/content/images/SenderR212_Back.jpg]'''&lt;br /&gt;
&lt;br /&gt;
=== Sender Perimeterschleife und Rasengröße ===&lt;br /&gt;
Bei einer Betriebsspannung von 6.5V sollte die Perimeterschleife nicht über 450 m lang sein. (Für den 'Wohnzimmertest' tut es auch ein 100 Ohm Widerstand in Reihe mit 5m Schaltdraht.) &lt;br /&gt;
&lt;br /&gt;
Setzen wir mal eine kreisrunde Rasenfläche voraus erhalten wir für 450m Schleifenlänge (= Kreisumfang) einen Radius von 70m:&lt;br /&gt;
 radius = Schleifenlänge / (2*PI) = 450m / (2*PI) = 70 meter&lt;br /&gt;
&lt;br /&gt;
Wäre die Signalqualität nicht durch den Radius begrenzt, entspräche der eingegrenzte Rasen einer Fläche von 15000m2:&lt;br /&gt;
 Fläche = PI * (radius*radius) = PI * (70m * 70m) = 15000 m2&lt;br /&gt;
&lt;br /&gt;
Da jedoch der maximale Radius für ausreichende Signalqualität bei ca. 18m liegt, ergibt sich die maximale Rasenfläche (Annahme immer noch: Kreisfläche!) zu 1000m2: Fläche = PI * (radius*radius) = PI * (18m * 18m) = 1000 m2&lt;br /&gt;
&lt;br /&gt;
=== Einstellung der Senderstromstärke ===&lt;br /&gt;
Zur Einstellung der Sendeleistung (Spannung*Strom) gibt es verschiedene Möglichkeiten:&lt;br /&gt;
&lt;br /&gt;
*Spannung am DC/DC-Wandler: die Versorgungsspannung des Motortreibers kann über das Poti des Wandlers zwischen 6.5 bis 12V eingestellt werden. Das ist der empfohlene Weg. Beachte: der MC33926 Motortreibermotor benötigt eine Mindestspannung (Vin) von 5V. Bei zu geringer Spannung regelt der Motortreiber sporadisch ab und die Arduino-LED zur Anzeige von Unterspannung fängt an zu blinken.&lt;br /&gt;
&lt;br /&gt;
*Normale Amplitude: statt die Perimeterschleife zwischen +Vin und -Vin (doppelte Amplitude ist Standardwert) umzuschalten, kann der Motortreiber auch nur zwischen +Vin und GND (einfache Amplitude). So zieht die Schleife weniger Strom. Zur Einstellung der einfachen Amplitude muß die entsprechende Codezeile in 'sender.ino' auskommentiert werden:&lt;br /&gt;
&lt;br /&gt;
  // #define USE_DOUBLE_AMPLTIUDE    1   &lt;br /&gt;
&lt;br /&gt;
*Hochlastwiderstand: Bei einem Schleifenwiderstand kleiner 5 Ohm kann der Strom nicht weiter reduziert werden, indem man die Spannung runterdreht: unterhalb von ca. 6V arbeitet der Arduino nicht mehr richtig. Dann hilft nur noch ein zur Schleife in Reihe geschalteter Hochlastwiderstand (R: z.B. 5 Ohm, 10W). &lt;br /&gt;
&lt;br /&gt;
 @6V (Vin): 5 ohm Hochlastwiderstand =&amp;gt; I=U/R=6V/5Ohm=1.2A   (P=U*I=6V*1.2A=7.2W)&lt;br /&gt;
&lt;br /&gt;
Daher also die mindestens 10W Belastbarkeit des Widerstandes! In diesem Falle auch die 'einfache Amplitude' im Sendercode aktivieren (doppelte Amplitude nicht benutzen!).&lt;br /&gt;
&lt;br /&gt;
=== Senderstromüberwachung (in Entwicklung) ===&lt;br /&gt;
Idee: das Poti VR1 wird durch ein digitales Poti (z.B. MCP4151-5K) ersetzt. So kann die Vin des Motortreibers (und damit auch der Strom) über den Arduino eingestellt werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Lm2596_circuit.jpg | LM2596 Modulschaltplan&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
MCP4151-5K version:&lt;br /&gt;
&lt;br /&gt;
 Vout = 1.23V*(1+VR1/R1)&lt;br /&gt;
&lt;br /&gt;
 Using VR1=5K...&lt;br /&gt;
 Vstart (on reset):  Vout=1.23V*(1+2.5K/0.33K)=10v&lt;br /&gt;
 Vmax:  Vout=1.23V*(1+5K/0.33K)=19v&lt;br /&gt;
&lt;br /&gt;
=== Automatische Schleifensignalabschaltung ===&lt;br /&gt;
Während sich der ArduMower in der Ladestation aufhält, wird das Schleifensignal nicht benötigt und wir können Energie sparen. Zum Erkennen des Ladestatus wird im &amp;quot;Sender_V2&amp;quot; ein Stromsensor (INA169) zwischen Ladegerät und Ladeanschlüsse geschaltet.&lt;br /&gt;
&lt;br /&gt;
Zum aktivieren dieser Funktion ist &amp;quot;#define USE_CHG_CURRENT&amp;quot; auf 1 zu setzen&lt;br /&gt;
&lt;br /&gt;
    #define USE_CHG_CURRENT       1     // use charging current sensor for robot detection? (set to '0' if not connected!)&lt;br /&gt;
&lt;br /&gt;
Desweiteren muss der Stromsensor am analogen Eingang A2 kalibriert werden:&lt;br /&gt;
&lt;br /&gt;
* Der Mover befindet sich nicht in der Ladestation/ Ladestrom = 0 Ampere&lt;br /&gt;
* Den seriellen Monitor aufrufen&lt;br /&gt;
* In der Befehlszeile 1 eingeben und Button &amp;quot;Senden&amp;quot; drücken&lt;br /&gt;
* Mit diesem Befehl wird die Spannung am analogen Eingang A2 gemessen und im EEPROM als Referenzwert &amp;quot;chargeADCZero&amp;quot; gespeichert&lt;br /&gt;
* Am Monitor erscheint folgender Text:&lt;br /&gt;
&lt;br /&gt;
    received key=1&lt;br /&gt;
    calibrateChargeCurrentSensor (note: robot must be outside charging station!)&lt;br /&gt;
    calibration done&lt;br /&gt;
    chargeADCZero=755&lt;br /&gt;
&lt;br /&gt;
Die Kalibrierung ist damit erfolgt. Bei den weiteren Messungen wird im seriellen Monitor unter &amp;quot;chgCurrentADC&amp;quot; der Wandlerwert des analogen Eingangs A2 angezeigt:&lt;br /&gt;
&lt;br /&gt;
    time=4	chgCurrent=0.000	chgCurrentADC=755.55	 isCharging=0&lt;br /&gt;
&lt;br /&gt;
Wir simmulieren einen Ladevorgang durch Belastung der Ladebuchse durch einen 22 Ohm Widerstand. Es fließt ein Ladestrom von ca. 0,8 Ampere. Damit ändert sich der &amp;quot;chgCurrentADC&amp;quot; auf 734.63&lt;br /&gt;
&lt;br /&gt;
    time=8	chgCurrent=-0.023	chgCurrentADC=734.63	isCharging=1	&lt;br /&gt;
&lt;br /&gt;
Das Flag &amp;quot;ischarging&amp;quot; wird auf &amp;quot;1&amp;quot; gesetzt und die Perimeterschleife wird für die Dauer der Ladung abgeschaltet.&lt;br /&gt;
&lt;br /&gt;
Dies funktioniert neben dem im Sender_V2 verbauten Stromsensor &amp;quot;INA169&amp;quot; auch mit einem Stromsensor ACS 712-5 oder ACS 712-20.&lt;br /&gt;
&lt;br /&gt;
=== Sendersoftware ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;NOTE&amp;lt;/b&amp;gt;: Wenn Du Dich nie zuvor mit Arduino beschäftigt hast, lies zuerst unsere Einführung &amp;lt;b&amp;gt;[http://wiki.ardumower.de/index.php?title=Arduino_first_steps 'erste Schritte mit dem Arduino']&amp;lt;/b&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[File:warning.png]] Wichtig: Vergewissere Dich, dass die Pin-Konfiguration des Arduino im benutzten Code (sender.ino) mit Deinem Senderaufbau übereinstimmt!&lt;br /&gt;
&lt;br /&gt;
Im Code (sender.ino) die passende Option für die automatische Schleifenabschaltung (bei Verwendung des oben beschriebenen Stromsensors Option 1) wählen:&lt;br /&gt;
&lt;br /&gt;
* Define if you have connected a charging current sensor for automatic sender standby:   #define USE_CHG_CURRENT 1   (or 0)&lt;br /&gt;
&lt;br /&gt;
=== Sender Zustandsanzeige ===&lt;br /&gt;
Die LED auf dem Arduino Nano signalisiert den Senderstatus:&lt;br /&gt;
* An: Perimeterschleife ist angeschlossen und arbeitet&lt;br /&gt;
* Aus: Perimeterschleife ist geöffnet (oder durch Defekt unterbrochen) und arbeitet nicht&lt;br /&gt;
* Blinkt: der ArduMower wird geladen und die Perimeterschleife ist zur Energieeinsparung durch die Software deaktiviert&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File:Perimeter_sender_console.png | Ausgabe 'sender.ino' über serielle Konsole&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Sendertest per PC-Soundkarte ===&lt;br /&gt;
Du kannst den Sender mit Deine Soundkarte und einer Spule testen:&lt;br /&gt;
&lt;br /&gt;
# Verbinde eine Spule (100 mH) mit dem Mikrofon-/Line-Eingang (max 1V) Deiner Soundkarte &lt;br /&gt;
# Starte das [http://www.grauonline.de/alexwww/ardumower/oscilloscope/oscilloscope.html Web-Oszilloskop], und wähle Filter 'Matched', Frequenz '9615' Hz, Visualization Math 'MinMax'&lt;br /&gt;
# Das Ausgangssignal sollte den Abstand zur Perimeterschleife wiederspiegeln - die Polarität (negativ/positiv) zeigt den Aufenthaltsbereich (innerhalb/außerhalb) der Schleife.&lt;br /&gt;
&lt;br /&gt;
Versuche in beiden Fällen (innen/außen), die Spule so dicht wie möglich an der Schleife zu positionieren, um ein auswertbares Signal zu empfangen (zur Erinnerung: wir arbeiten hier ohne die Signalverstärkung durch den Operationsverstärker, da der Soundkarteneingang nur mit max 1V beaufschlagt werden darf).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File:Ardumower_web_oscilloscope_time_signal_received.jpg | Effektivwert des empfangenen Zeit-Signals (Filter Off, Time scale: x5)&lt;br /&gt;
File:Ardumower_web_oscilloscope_time_signal.jpg | Ideales Zeitsignal erzeugt vom Sender (Filter Off, Time scale: x5)&lt;br /&gt;
File:Ardumower_web_oscilloscope.jpg  | Matched Filter Signal (Frequency: 9615 Hz, Math: MinMax)&lt;br /&gt;
File:Perimeter_signal_good_bad.png | Beispiel für gutes / schlechtes Signal&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://www.youtube.com/watch?v=vg5Xg0__66A Video zur Erklärung aller Schritte]&lt;br /&gt;
&lt;br /&gt;
== Empfänger ==&lt;br /&gt;
&lt;br /&gt;
Zum Signalempfang verwenden wir eine Spule (100 mH or 150 mH, nur für die älteren Softwareversionen wird ein Kondensator 4.7nF mit der Spule in Reihe geschaltet) in aufrechter Position, in der Mitte am vorderen Rand des ArduMower. Sie ist zur Verstärkung des empfangenen Signals mit dem Eigang eines LM386 Operationsverstärkers verbunden. Auf dem LM386 Modul wird der Kondensator C3 überbrückt, damit der Verstärker ein Signal zwischen 0..5V statt im Standardbereich -5V..+5V) liefert. Der Ausgang des LM386 sollte mit dem Arduino Analog-Pin ('pinPerimeterLeft') verbunden werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt; &lt;br /&gt;
 File: Perimeter_v2_receiver_circuit.png | Empfängerschaltkreis und überbrückter Kondensator C3&lt;br /&gt;
 File: Ardumower_chassis_components.png | Position der Perimeterspule&lt;br /&gt;
 File: Ardumower_coil_position.jpg | Eine zentrierte, aufrecht montierte Spule &lt;br /&gt;
 File: Ardumower_lm386_circuit.png | LM386 Modul Schaltplan&lt;br /&gt;
 File: Tire_coil_distance.jpg | Abstand Spule-Rad: Einfluß auf den Wendekreis (Kurvenwinkel)&lt;br /&gt;
 File: Coil_motor_layout.png | Zwei Spulen (experimentell), Abstand Spule-Spule Hinterradantrieb 12.5cm, Frontantrieb 19cm&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Empfängerschaltplan:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;background-color: lightgrey; border: solid thin grey;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
                                      LM386 IN  o------- capacitor 4.7nF ----------- coil 100 mH  (or 150 mH)&lt;br /&gt;
 Arduino pinPerimeterLeft   o------o  LM386 OUT&lt;br /&gt;
                                      LM386 GND o----------------------------------- coil&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Achtung''': Die Spule muss direkt an den Verstärkermodul angeschlossen werden. So wird die Störfestigkeit des schwachen Spulensignals gegenüber Einflüssen anderer Komponenten (Motore, DC-DC-Wandler) verbessert. &lt;br /&gt;
&lt;br /&gt;
'''Differentielles Signal''': Die aktuelle Software erfordert das Weglassen des Kondensators 4.7nF in Reihe mit der Spule. &lt;br /&gt;
&lt;br /&gt;
'''Nicht-differentielles Signal''': Mithilfe des Kondensators (4.7 nF) wird das Sendersignal wieder rekonstruiert (s. Abschnitt Signal), der Empfängeschaltkreis ist ein Schwingkreis (C und L und Perimeterschleife fungiert als Antenne) und alle Parameter (C, L, Schleifendrahtlänge) müssen übereinstimmen. Weil dies die Abstimmung schwierig macht, empfehlen wir das nicht-differentielle Signal nicht!&lt;br /&gt;
&lt;br /&gt;
=== Abstand Spule/Verstärker zu Motoren ===&lt;br /&gt;
Achte auf die Einhaltung aller Mindestabstände zwischen den folgenden Komponenten:&lt;br /&gt;
 * Spule zu Radmotor: &amp;gt; 15cm&lt;br /&gt;
 * Spule zu Mähmotor: &amp;gt; 10cm &lt;br /&gt;
 * Spule zu DC-DC Wandler: &amp;gt; 10cm&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
 File: Dcdc_noise.jpg | Achtung: Halte Spule/Vorverstärker von den DC-DC-Wandlern und Motoren fern!!!&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Signalmessungen ===&lt;br /&gt;
Sender / Spule / LM386 Verstärker Ausgangssignale sollten etwa so aussehen: (witere Details über das Signal s. Abschnitt Signal)&lt;br /&gt;
&amp;lt;gallery&amp;gt; &lt;br /&gt;
 File: Perimeter_signal_steps.png | Perimetersignal an Sender, Empfangsspule und LM386 (Theorie)&lt;br /&gt;
 File: coil_signal_without_capacitor.png | differentielles Signal / Spulensignal ohne Kondensator (5V sender, 5 Ohm Schleife - blau: Perimeter, gelb: Spule, grau: LM386 Verstärkerausgang)&lt;br /&gt;
 File: Lm_output_dc_noise.jpg | LM386 Ausgang mit DC Störungen (differentielles Signal / Spule ohne Kondensator)&lt;br /&gt;
 File: Perimeter2_receiver_coil.jpg | LM386 Ausgang (nicht-differentielles Signal / Spule mit Kondensator, 12V Sender, 120m Schleife)&lt;br /&gt;
 File: coil_signal_with_capacitor.png | nicht-differentielles Signal / Spulensignalmit Kondensator (5V Sender, 5 Ohm Schleife - grau: Perimeter, gelb: Spule, blau: LM386 Verstärkerausgang)&lt;br /&gt;
 File: Lm_output_motor_noise.jpg | LM386 Ausgang mit Störungen durch Motoren (differentielles Signal / Spule ohne Kondensator)&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Signal und Rauschmessungen ===&lt;br /&gt;
Einige Spulenmessungen ohne Verstärker aber mit Störungen (Motoren, DC/DC-Wandler etc.): &lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
 File: Coil_60k_parallel.jpg | Spule und 60 kOhm Parallelwiderstand ohne Störungen (Spulenhintergrund-rauschen Vpp=7 mV)&lt;br /&gt;
 File: Coil_dc_converter_noise.jpg | Spule und 60 kOhm Parallelwiderstand mit Störungen durch DC/DC-Wandler (DC/DC-Rauschen Vpp=18 mV)&lt;br /&gt;
 File: Coil_motor_noise.jpg | Spule und 60 kOhm Parallelwiderstand mit Störungen durch Motoren&lt;br /&gt;
 File: Perimeter2_receiver_coil_pwm.jpg | Spulensignal mit seriellem 4.7nF Kondensator, PWM-Perimetersignal (nicht empfohlen) ohne Störungen&lt;br /&gt;
 File: Fft_signal.png | FFT Signal&lt;br /&gt;
 File: Fft_motors.png | FFT Motor-Störungen&lt;br /&gt;
 File: Fft_dcdc.png | FFT DC/DC-Störungen&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ADC-Kalibrierung am Empfänger ===&lt;br /&gt;
[[File:warning.png]] Die ADC-Kalibrierung (bei ausgeschaltetem Sender!) sorgt für eine korrekte Erkennung der Nulllinie (Stille), sodass das empfangene Signal später symmetrisch zur Nulllinie angezeigt wird.&lt;br /&gt;
# Der Perimetersender und die Motoren des ArduMower müssen während der Kalibrierung ausgeschaltet sein!&lt;br /&gt;
# Wenn eine Störung durch einen anderen Sender nicht zu vermeiden ist, muß während der Kalibrierung die Spule entfernt und der Eingang es LM386 mit GND verbunden werden.&lt;br /&gt;
# Führe die ADC-Kalibrierung einmal aus (&amp;quot;pfodApp-&amp;gt;ADC Calibration&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Nach der korrekt durchgeführten Kalibrierung sollte das Signal per pfodApp Plot ('sig') bei ausgeschaltetem Perimetersender ungefähr als Null angezeigt werden. Nach Einschalten des Perimetersenders sollte das Signal etwa diesselbe positive wie negative Maximalamplitude ('Symmetie zur Nulllinie') aufweisen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
 File: perimeter_v2_sig_symmetric.jpg | symmetrisches Signal bei eingeschaltetem Sender (nach ADC-Kalibrierung)&lt;br /&gt;
 File: perimeter_v2_sender_off.jpg | Nullsignal bei ausgeschaltetem Sender (nach ADC-Kalibrierung)&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Problemanalyse und Fehlerbehebung am Empfänger ===&lt;br /&gt;
&lt;br /&gt;
Empfangenes Signal, Filterergebnis und Signalqualität können per Android Handy über die pfodApp-&amp;gt;Plot-&amp;gt;Perimeter angezeigt werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
 File: Perimeter_snr.png | Signal-Rausch-Verhältnis (SNR)&lt;br /&gt;
 File: Perimeter_signal_38khz.png | Signal, Filterergebnis, LP Filterergebnis, innen/außen, Ereigniszähler, Signal ein/aus, Signalqualität&lt;br /&gt;
 File: Perimeter_plot_moving_from_inside_to_outside.png | Fahren von innen nach außen&lt;br /&gt;
 File: Perimeter_v2_plot.png&lt;br /&gt;
 File: Perimeter_v2_plot_new.png&lt;br /&gt;
 File: Ardumower_perimeter2_test.jpg&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Beschreibung der im Plot angezeigten Signalverläufe:&lt;br /&gt;
 sig:  Spulensignal (Sequenz der Rohimpulse nach ADC) als kurzer Snapshot (32 samples), Update alle 20 Sekunden &lt;br /&gt;
       (also 20 Sekundenwarten bis zum nächsten Snapshot)&lt;br /&gt;
 mag:  Filterergebnis: innen (negativ) oder außen (positiv), magnitude: Abstand zur Perimeterschleife / magnetische Signalstärke (RSSI)&lt;br /&gt;
       - wird benutzt zum &amp;lt;b&amp;gt;Perimeter verfolgen&amp;lt;/b&amp;gt;&lt;br /&gt;
 smag: Filterergebnis, low-pass-gefiltert, ohne Vorzeichen (geglätteter mag-Verlauf) - verwendet zur Erkennung des &amp;lt;b&amp;gt;'Sender-aus' Zustandes&amp;lt;/b&amp;gt;&lt;br /&gt;
       Der Grenzwert kann über die pfodApp gesetzt werden (Settings-&amp;gt;Perimeter-&amp;gt;Timed-out if below smag)&lt;br /&gt;
 in:   binäres Ergebnis des low-pass Filters: innerhalb (1) oder außerhalb (0) der Perimeterschleife - wird benutzt zur &amp;lt;b&amp;gt;Erkennung des Perimetergrenzverlaufs&amp;lt;/b&amp;gt;&lt;br /&gt;
       Ist der ArduMower eine bestimmte Zeit außerhalb der Schleife, geht er in den Fehlerstatus. Diese Zeit kann per pfodApp&lt;br /&gt;
       (Settings-&amp;gt;Perimeter-&amp;gt;Timeout (s) if not inside) eingestellt werden&lt;br /&gt;
 cnt:  Anzahl der Wechsel von innen nach außen (counter, Zähler)&lt;br /&gt;
 on:   Perimetersender ist aktiv (1) oder inaktiv (0), basiert auf der Auswertung des smag Ergebnisses&lt;br /&gt;
 qty:  &amp;lt;b&amp;gt;Signalqualität&amp;lt;/b&amp;gt; (Aussage über die Verläßlichkeit der Erkennung 'innerhalb / außerhalb' aus dem Filterergebnis)&lt;br /&gt;
       Verhältnis aus Vergleich mit Mustersignal zu Vergleich mit inversem Mustersignal              &lt;br /&gt;
       1.0 bedeutet schlechte Qualität, Du solltest Werte von 1.5 oder höher)&lt;br /&gt;
&lt;br /&gt;
Im Plot soll der 'mag'-Verlauf frei von Spitzen sein: innerhalb der Schleife sollte das Signal eine negative Kurve, außerhalb eine positive Kurve beschreiben. Weist die Kurve Spitzen auf, versuche folgende Maßnahmen zur Fehlerbeseitigung bzw. Optimierung:&lt;br /&gt;
&lt;br /&gt;
* Benutze immer einen ausreichend langen und korrekt abgerollten Schleifendraht (20m oder länger). Benutze niemals einen zu kurzen (Mindestwiderstand 5 Ohm!) oder gar aufgerollten Draht. &lt;br /&gt;
* Für den 'Wohnzimmertest' sollte ein 100 Ohm Widerstand in Reihe mit 5m Draht bei 6V seine Aufgabe erfüllen.&lt;br /&gt;
* Verbinde die Empfangsspule mit 'pinPerimeterLeft' auf dem PCB (am falschen Pin könnte das Signal 'etwas schwach' reinkommen)&lt;br /&gt;
* Die Spulenpolung kann per pfodApp eingestellt werden (wird 'außen' angezeigt, wenn der Ardumower sich innrhalb der Schleife befindet?). Denselben Effekt hat das Umklemmen der Schleifenenden am Senderausgang.&lt;br /&gt;
* Sollte das Signal schwach erscheinen, überprüfen, ob am Spulenverstärker das Poti &amp;quot;voll aufgedreht&amp;quot; ist! Hilfreich ist die gleichzeitige Anzeige des Signal per pfodApp (Plot --&amp;gt; Perimeter).&lt;br /&gt;
* Die Kabelverbindung zwischen Spule und LM386-Vorverstärker muss möglichst kurz sein - am Besten die Spule direkt am Verstärker anschließen!&lt;br /&gt;
* Halte den Abstand zwische Spule und Motoren sowie DC/DC-Wandlern möglichst groß (30cm oder mehr!)&lt;br /&gt;
* Nutze die magnetische Abschirmwirkung (z.B. Deines Akkus) zwischen Spule und Störquellen.&lt;br /&gt;
* Einstellen der Senderspannung: bei längeren Perimeterschleifen (&amp;gt;80m) die Spannung höher wählen (Potentiometer DC/DC-Wandler), bei kürzeren Schleifen (&amp;gt;25m) eher niedriger (anstreben einer Sendeleistung = Spannung * Strom von ca 10W)&lt;br /&gt;
* Versuche bei laufenden Motoren die Spule leicht zu einer Seite zu neigen um die Signalqualität 'qty' zu erhöhen.&lt;br /&gt;
&lt;br /&gt;
== Messungen ==&lt;br /&gt;
&lt;br /&gt;
Zum Vergleich Beispielwerte, gemessen an verschiedenen, im Gelände getesteten Kombinationen von Sender-/Empfänger-/Schleifenparametern:&lt;br /&gt;
&lt;br /&gt;
1) 120m (0.7mm^2), R=4 Ohm, 6.5V, Spule Vpp 20mV&lt;br /&gt;
 Störsignalpegel (max): smag=192&lt;br /&gt;
 Signal (min): smag=254&lt;br /&gt;
 SNR=Signal/Störsignal=254/192=1.3&lt;br /&gt;
&lt;br /&gt;
2) 30m (0.7mm^2), R=1.0 Ohm (+4 Ohm series R), 6.5V, Spule Vpp 120 mV&lt;br /&gt;
 Störsignalpegel (max): smag=192&lt;br /&gt;
 Signal (min): smag=896&lt;br /&gt;
 SNR=Signal/Störsignal=896/192=4.6&lt;br /&gt;
&lt;br /&gt;
=== Videos ===&lt;br /&gt;
#[http://www.youtube.com/watch?v=FL6K98B2Zsk&amp;amp;feature=player_detailpage#t=265 Perimeter2 Demo]&lt;br /&gt;
#[https://www.youtube.com/watch?v=QCA6Dm3rs3M Test 120m Perimeterschleife]&lt;br /&gt;
#[https://www.youtube.com/watch?v=NIer_kITelc Theorie zu Perimeterschleife und Matched Filter (in deutsch)]&lt;br /&gt;
#[https://www.youtube.com/watch?v=VxJN2xb55dU&amp;amp;feature=youtu.be Sender-PCB]&lt;br /&gt;
&lt;br /&gt;
= Verfolgung der Begrenzungsschleife =&lt;br /&gt;
&lt;br /&gt;
Das Abfahren der Schleife wird über einen softwareseitig realisierten digitalen PID-Regler gesteuert. Die Regler-Parameter (P,I,D) können über ein Android-Handy per pfodApp eingestellt werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Ardumower_perimeter_pid.jpg&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mehr Informationen über PID-Regler sind hier zu finden: &lt;br /&gt;
[http://www.ardumower.de/index.php/de/forum/anleitungen-hilfe/121-pid-regelung-fuer-drehzahl-drehung-etc-richtig-einstellen Forum].&lt;br /&gt;
&lt;br /&gt;
= Sensor Signalfusion =&lt;br /&gt;
Das Magnetfeld der Perimeterschleife könnte man als Input für eine [http://wiki.ardumower.de/index.php?title=Sensor_fusion zur Positionsbestimmung des ArduMower nutzen].&lt;br /&gt;
&lt;br /&gt;
= Weiterführende Links =&lt;br /&gt;
#[http://www.ardumower.de/index.php/en/forum/schleifensensoren-generator/83-ir-bake-generator-empfaenger-diy Ein anderer Navigationsansatz sind Infrarot-Baken]&lt;br /&gt;
#[http://grauonline.de/wordpress/?page_id=364 Mehr Details zum 'matched filter']&lt;br /&gt;
#[http://www.grauonline.de/alexwww/ardumower/oscilloscope/oscilloscope.html Soundkarten-Oszilloskop inklusive 'matched filter']&lt;br /&gt;
&lt;br /&gt;
= Perimeter V1 (für alten Code V0.9.3, nicht mehr empfohlen) =&lt;br /&gt;
&lt;br /&gt;
Dies war die erste Version unseres Perimetersenders und Empfängers. Sie wies einige Nachteile auf (Orientierungsfehler, Keine 'Sender-aus'-Erkennung, keine Möglichkeit zur Feststellung des Aufenthaltsbereiches inner-/außerhalb der Schleife), so dass der Einsatz nicht weiter empfohlen wird. Benutze die Nachfolgeversion V2, wie oben beschrieben.&lt;br /&gt;
&lt;br /&gt;
== Sender ==&lt;br /&gt;
Du kannst den Sender eines kommerziellen Rasenmäroboters nutzen (der hier gezeigte Sender ist kompatibel mit Tianchen oder Rotenbach Mährobotern), oder Du baust Dir selber einen:&lt;br /&gt;
&lt;br /&gt;
Ein Arduino (z.B. Nano) generiert ein Rechtecksignal, welches die Polarität eines Motortreibers (L298N) mit 7.8 Khz schaltet. Dadurch wechselt das Ausgangssignal zwischen Vcc und GND. Ein Schwingkreis verstärkt die Signalspitzen (Resonanzfrequenz ist dieselbe wie die Schaltfrequenz - 7.8 Khz). So reicht es aus, den Motortreiber mit 5V (statt 12V) zu betreiben. Die Spannungsquelle muß etwa 2W (400mA bei 5V) leisten. &lt;br /&gt;
Ein Teil des Signals wird durch den Arduino (ADC) durch eine Diode und einen Spannungsteiler erfaßt. So kann festgestellt werden, ob die Perimeterschleife angeschlossen ist. Durch den Schleifendraht fließt ein Strom von ca. 150mA (Drahtquerschnitt 2-3 mm^2, Länge max 500 m)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Arduino_perimeter_sender.png ‎&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Weil man vielleicht nicht immer die genau passende Empfängespule zur Hand hat, hier ein paar mögliche Kombinationen (Spule / Kondensator), die die Resonanzfrequenz von 7.8 Khz aufweisen:&lt;br /&gt;
*Kombination 1: Spule: 160µH, Kondensator: 3,3µF/50V  (getestet)&lt;br /&gt;
*Kombination 2: Spule 33mH, Kondensator: 12nF (nicht getestet)&lt;br /&gt;
&lt;br /&gt;
==== Stromversorgung ====&lt;br /&gt;
Zur Erzeugung der 5V Spannung wird ein step-down-Wandler (z.B. Module mit LM2596) eingesetzt. Vor dem Einsatz in der Schaltung muß der Wandler auf 5V einjustiert werden. &lt;br /&gt;
&lt;br /&gt;
'''Warnung''' : Lege niemals mehr als 5V auf die Arduino 5V Pins oder Du zerstörst ihn. Deswegen: vorher die Spannung einstellen und kontrollieren!&lt;br /&gt;
&lt;br /&gt;
==== Funktionstest ====&lt;br /&gt;
1. Nach dem Code-Hochladen und Anschliessen der Begrenzungsschleife sollte die Arduino LED an sein. Nun entferne den Schleifendraht und die LED sollte ausgehen.&lt;br /&gt;
&lt;br /&gt;
2. Sollte das nicht so sein, kontrolliere mit einem Voltmeter zum Einen die Spannung zwischen Pin 9 des Arduino und dann die am Motortreiberausgang (OUT_1) jeweils gegen GND - beide sollten eine Gleichspannung  2.5 Volt führen.&lt;br /&gt;
&lt;br /&gt;
3. Hast Du ein Oszilloskop? Dann schließe statt der Begrenzungsschleife das Oszilloskop an den Sender an. Das gemessene Signal sollte folgendermaßen aussehen:&lt;br /&gt;
&lt;br /&gt;
Das Ausgangssignal zeigt eine höhere Ampltude (hohe Spitzenwerte) als das Eingangssignal:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Perimetersignal.jpg|Signal am Senderausgang &lt;br /&gt;
File: Ardumower_perimeter_sender_schematics.png|Grundprinzip des Schwingkreises&lt;br /&gt;
File: Arduino_perimeter_sender_photo.jpg&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Für einen einfachen Empfangstest kannst Du die Empfangsspule direkt ans Oszilloskop anschließen. Das gemessene Signal sollte etwa so  aussehen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Coilsignal.jpg|Signal an der Empfangsspule&lt;br /&gt;
File: Fft.jpg|Signal im Frequenzspektrum, überlagert durch Motorstörungen&lt;br /&gt;
File: Ardumower_perimeter_spectrum_plot.jpg| Anzeige des Frequenzspektrums über pfodApp&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Empfänger ==&lt;br /&gt;
Der Empfänger nutzt zwei Spulen, die rechts und links vorn im ArduMower montiert sind. Die Signalstärke der linken und rechten Spule werden ausgewertet, um sie vergleichen zu können.&lt;br /&gt;
&lt;br /&gt;
Prinzip:&lt;br /&gt;
# Verstärkung der alternierenden Signale per OPAMP&lt;br /&gt;
# Optional: Bandpass-Filterung zum Ausblenden der Störungen durch Motore etc.&lt;br /&gt;
# Ermittlung der Signalstärke von linker und rechter Spule&lt;br /&gt;
&lt;br /&gt;
Vorteil dieser Version: analoge Auswertungfunktioniert hervorragend.&lt;br /&gt;
Nachteil: Du kannst nicht feststellen, ob Du Dich gerade innerhalb oder außerhalb der Begrenzungsschleife aufhälst, wenn Du nicht jede Überfahrt des Begrenzungsdrahtes mitprotokollierst. Es ist auch nicht möglich festzustellen, ob Du die Begrenzungsschleife im oder gegen den Uhrzeigersinn abfährst.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Arduino_perimeter_receiver.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Eine Spule empfängt das Signal des Senders. Ein Schwingkreis (LC: SPule und Kondensator)verstärkt das empfangene Signal bei einer Resonanzfrequenz von 7.8 kHz. Das Signal wird weiter verstärkt durch eien LM386-Verstärker (hier: Arduino Soundsensor mit Spule statt Mikrofon). Ein Bandpassfilter (digitaler Filter, FFT - Fast Fourier Transformation) läuft auf dem Arduino und filtert die gewünschte Frequenz (7.8 Khz) und erzeugt ein PWM-Signal (Pulsbreite proportional zur Signalstärke). Über einen Tiefpassfilter wird das PWM-Signal in eine Gleichspamnnung gewandelt.&lt;br /&gt;
Beachte: Die Verdrahtung zwischen ist vereinfacht dargestellt - Details der Verdrahtung s. Schaltplan.&lt;br /&gt;
&lt;br /&gt;
Wir haben folgende Kombinationen von Spulen und Verstärkern getestet:&lt;br /&gt;
&lt;br /&gt;
'Arduino Soundsensor'&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Soundsensor.jpg| Signalverstärkung über LM386 - Arduino Soundsensor mit Spule statt Mikrofon&lt;br /&gt;
File: YwRobot_Sensor.jpg |Arduino Soundsensor mit LM386&lt;br /&gt;
File: YwRobot_circuit.png |Arduino Soundsensor Modulschaltplan&lt;br /&gt;
File: Coil_85mh.jpg|85 mH Spule&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
LM386 Verstärker&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Lm386_amplifier.jpg| LM386 Versärker (200-fach)&lt;br /&gt;
File: Lm386_modified.jpg| modifizierter LM386-Verstärker&lt;br /&gt;
File: Ardumower_lm386_circuit.png | LM386 Modulschaltplan&lt;br /&gt;
File: Coil_small.jpg| 104 mH Spule&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wichtig: Bei Verwendung dieses Verstärkers muß der Kondensator C3 überbrückt werden (erzeugt das für den Arduino erforderliche VCC/2 offset). Dies Spule schließt man an &amp;quot;IN&amp;quot; und &amp;quot;GND&amp;quot; an.&lt;br /&gt;
&lt;br /&gt;
'''Beachte''': die Spule unbedingt direkt am Verstärkermodul befestigen. Dies minimiert die Störeinflüsse durch andere Komponenten wie z.B. Motoren auf das schwache Spulensignal.&lt;br /&gt;
=== Funktionstest ===&lt;br /&gt;
# Stelle eine korrekte Funktion des Schleifensenders sicher (wie bereits weiter oben beschrieben).&lt;br /&gt;
# Drehe das Potentiometer des Arduino Soundsensors auf Maximum (gegen den Uhrzegersinn).&lt;br /&gt;
# Lade das Programm auf den Arduino und bewege eine Spule in Richtung des Begrenzungsdrahtes: die LED des Arduino sollte zu blinken beginnen. Halte nun beide Spulen im gleichen Abstand über den Begrenzungsdraht: die LED sollte nun permanent leuchten.&lt;br /&gt;
# Wenn das so nicht funktioniert, öffne die serielle Konsole und  prüfe die Signalwerte.&lt;br /&gt;
&lt;br /&gt;
=== Spulenauswahl ===&lt;br /&gt;
mathematische Näherungsberechnung einer Spule:&lt;br /&gt;
&lt;br /&gt;
 L = 1nH x n² x ((D² / mm² ) / (l / mm))&lt;br /&gt;
 l = Spulenlänge&lt;br /&gt;
 D = Spulendurchmesser&lt;br /&gt;
&lt;br /&gt;
Beispiel: eine Induktion von 85 mH, Durchmesser 10 mm, Länge 40 mm erfordert ca. 5830 Windungen.&lt;br /&gt;
&lt;br /&gt;
Diese Induktivität von 85 mH und ein Kondensator von 4.7 nF führen zu einer Resonanzfrequenz von 7963 Hz.&lt;br /&gt;
&lt;br /&gt;
 f0 = 1 / (2 * PI * sqrt(L * C)) = 1 / (2 * PI * sqrt(0.085 H * 0.0000000047 F)) =  7963 Hz&lt;br /&gt;
&lt;br /&gt;
Weil man vielleicht nicht immer die genau passende Empfängerspule zur Hand hat, hier ein paar mögliche Kombinationen (Spule / Kondensator), die die Resonanzfrequenz von 7.8 Khz aufweisen:&lt;br /&gt;
 Kombination 1: Spule: 85mH, Kondensator: 4.7nF  (getestet)&lt;br /&gt;
 Kombination 2: Spule: 104mH, Kondensator: 4nF (getestet)&lt;br /&gt;
&lt;br /&gt;
=== Anordnung der Spulen ===&lt;br /&gt;
die Spulen sind am Boden des ArduMower so angeordnet, dass sie einen Winkel von 90 Grad einschließen, d.h. jede ist um 45 Grad aus der Längsachse gedreht.&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Ardumower_spulen.jpg| Anordnung der Spulen&lt;br /&gt;
File: L50_coils.jpg | Beispiel (Ambrogio L50)&lt;br /&gt;
File: L50_parcours.jpg | Testparcours&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Messung der Signalstärke ===&lt;br /&gt;
Zum Vergleich von Messungen wurde die Signalstärke bei verschiedenen Schleifenabständen bestimmt. Die Signalsärke (soll heißen: der berechnete ADC-Wert) kann in der Android pfodApp angezeigt werden. Der Abstand (cm) ist der berechnete Wert zwischen Perimeterschleife und Spule (eingebaut im ArduMower).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Perimeter_plot.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Schleifenverlegung ===&lt;br /&gt;
&lt;br /&gt;
Wichtig bei der Schleifenverlegung ist die Vermeidung von scharfen Ecken: Rundungen sind angesagt! Fährt der Ardumower exakt über eine scharfe Ecke, kann er unter Umständen die Schleife nicht mehr orten, da Spule und Schleife fluchten / parallel stehen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Schleifen_blind.jpg  | Nicht empfohlen: ArduMower kann keine scharfen Ecken orten!&lt;br /&gt;
File: Ardumower_coil_signal.png| Wie ändert sich das Sinal, wenn die Spule gedreht wird??&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Videos ===&lt;br /&gt;
#[http://www.youtube.com/watch?v=FGaUSg-uUxk Perimeter Stoptest]&lt;br /&gt;
#[http://www.youtube.com/watch?v=8R8QaffNlJw Perimeter Verfolgungstest]&lt;br /&gt;
#[http://www.youtube.com/watch?v=CftrnetFVYc&amp;amp;feature=youtu.be Test zum Finden und Verfolgen mit L50]&lt;br /&gt;
#[http://www.youtube.com/watch?feature=player_embedded&amp;amp;v=fjuQViS2rHM Test zum Finden und Verfolgen mit Rotenbach]&lt;/div&gt;</summary>
		<author><name>Deejay</name></author>	</entry>

	<entry>
		<id>https://wiki.ardumower.de/index.php?title=Perimeter-Schleife&amp;diff=2726</id>
		<title>Perimeter-Schleife</title>
		<link rel="alternate" type="text/html" href="https://wiki.ardumower.de/index.php?title=Perimeter-Schleife&amp;diff=2726"/>
				<updated>2015-08-27T17:08:24Z</updated>
		
		<summary type="html">&lt;p&gt;Deejay: /* Automatische Schleifensignalabschaltung */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Zusammenfassung=&lt;br /&gt;
Eine Begrenzungsschleife (oder Perimeterdraht) ist eine Art 'elektronischer Zaun': er veranlaßt den ArduMower zum Stoppen / Umkehren sobald die Grenze erreicht ist. Nicht in jeder Umgebung ist eine Begrenzungsschleife notwendig - Rasensensoren könnten eine Alternative sein.&lt;br /&gt;
&lt;br /&gt;
Das Prinzip: durch den im Garten verlegten Schleifendraht wird ein Signal gesendet, das der Ardumower ausgewertet. Gebraucht werden ein Sender zur Erzeugung und Übergabe des Signals an die Schleife und ein Empfänger zur Signalauswertung im ArduMower.&lt;br /&gt;
&lt;br /&gt;
Und so wird das Signal empfangen: eine (oder zwei) Empfangsspulen liefern ein Signal, dessen Stärke je nach Abstand zwischen Schleifendraht und Empfangsspule(n) variiert. Interessanterweise wechselt das Signal in dem Moment seine Polarität, wo der ArduMower (genauer: die Empfänger-Spule) den Schleifendraht überfährt. Es gibt zwei prinzipielle Möglichkeiten, den Begrenzungsdraht zu orten. Wir haben beide Methoden implementiert (Perimeter V1 und V2) wie nachfolgend beschrieben.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Ardumower_perimeter.jpg | Perimeterdraht&lt;br /&gt;
File: Ardumower_perimeter_components.jpg | Komponenten&lt;br /&gt;
File: Perimeter_signal_strength.jpg | Signalstärke&lt;br /&gt;
File: Perimeter_gradient.png | Verlauf der Signalstärke&lt;br /&gt;
File: Ardumower_perimeter_magneticfield.png | Perimeter-Magnetfeld&lt;br /&gt;
File: Perimeter_excluding_objects.png | Objekte ausschließen&lt;br /&gt;
File: Perimeter_divide.png | Flächen aufteilen&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://hyperphysics.phy-astr.gsu.edu/hbase/magnetic/magcur.html Magnetfeld Berechnungstool]&lt;br /&gt;
&lt;br /&gt;
Videos:&lt;br /&gt;
[http://youtu.be/r4ZMgasMkH0 Magnetfeld Demovideo]&lt;br /&gt;
&lt;br /&gt;
=Begrenzungsschleife V2 (erforderlich für aktuellen ArduMower Code)=&lt;br /&gt;
&lt;br /&gt;
[[Image:Yt-brand-standard-logo-95x40.png|thumb|180px|https://www.youtube.com/watch?v=NIer_kITelc&amp;amp;feature=youtu.be]]&lt;br /&gt;
&lt;br /&gt;
Dies ist die neue Version von Sender und Empfänger für die Begrenzungsschleife (erhältlich über den [https://www.marotronics.de/index.php?k=7 shop] [[File: shopping.png|link=https://www.marotronics.de/index.php?k=7]]).&lt;br /&gt;
&lt;br /&gt;
Beim Überfahren des Schleifendrahtes passiert nun etwas Interessantes: die Polarität der Signalspannung wechselt von negativ auf positiv bzw. umgekehrt - je nachdem, ob man von innen oder außen kommt. Dadurch werden sowohl das Überfahren selbst als auch der Status (Aufenthalt innerhalb oder außerhalb der Schleife) eindeutig erkennbar. Wie bei der V1 nutzen wir zur Signalverstärkung wieder den Motortreiber für das Ausgangssignal und einen Operationsverstärker für das Eingangssignal von der Empfangsspule. Der Sender übergibt eine digitale Signalfolge (auch als 'pseudo-noise' bezeichnet) an die Schleife, die vom Empfänger über einen software-basierten digitalen [http://en.wikipedia.org/wiki/Matched_filter Matched-Filter] ausgewertet wird. Der Filter liefert als Ergebnis einen Peak: positiv - ArduMower innerhalb oder negativ - ArduMower außerhalb der Begrenzungsschleife.&lt;br /&gt;
&lt;br /&gt;
Prinzipablauf:&lt;br /&gt;
  Senderseite&lt;br /&gt;
# Erzeugen des Ausgangssignals durch den Arduino Nano&lt;br /&gt;
# Verstärkung des Ausgangssignals durch den Motortreiber (MC33926), Schleifendrahtenden anstatt eines Motors an den Ausgang anschließen&lt;br /&gt;
&lt;br /&gt;
  ArduMower&lt;br /&gt;
# Eingangssignal per Empfangsspule aufnehmen&lt;br /&gt;
# Eingangssignal per Operationsverstärker (z.B. LM386) verstärken&lt;br /&gt;
# ADC sampling durch Arduino Mega&lt;br /&gt;
# Signalfilterung and Analyse durch ein digitales Filter (software-basierter Matched-Filter-Algorithmus)&lt;br /&gt;
# Auswertung des matched filter Ergebnisses (zur Feststellung des Aufenthaltbereiches inner- / außerhalb der Schleife, Schleifenabfahren usw.)&lt;br /&gt;
&lt;br /&gt;
Folgende Bilder erklären den Wechsel der Signalpolarität innerhalb und außerhalb der Schleife. Sie zeigen auch die Richtung der magnetischen Flusslinien, die vom Begrenzungsdraht ausgehen und wie sie die Spule innerhalb und außerhalb der Begrenzungsschleife treffen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Ardumower_perimeter2.jpg| Innen/außen-Erkennung über den Polaritätswechsel&lt;br /&gt;
File: Fluxdirections.png| Flussrichtungen&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Signal ==&lt;br /&gt;
Der Schlüssel zu einem guten Empfang des Perimetersignals überall auf dem Rasen ist die Optimierung des Signal-Rausch-Abstandes (SNR=signal/noise ratio). Um das SNR zu maximieren, gibt es zwei Ansätze:&lt;br /&gt;
# Signalstärke hochfahren (elektr. Leistung) oder&lt;br /&gt;
# Erhöhung der Signallänge&lt;br /&gt;
&lt;br /&gt;
Wir nutzen eine Kombination beider Ansätze: der Sender wiederholt ständig einen digitalen Code ('pseudonoise4_pw') mit 9615 Hz :&lt;br /&gt;
&lt;br /&gt;
 1,1,-1,-1,1,-1,1,-1,-1,1,-1,1,1,-1,-1,1,-1,-1,1,-1,-1,1,1,-1&lt;br /&gt;
&lt;br /&gt;
'1' bedeutet einen positiven Signalimpuls, '-1' einen negativen. Der kürzeste erzeugte Signalwechsel ist '-1,1', das entspräche dem höchsten Ton (wenn man es hörbar darstellen würde) von 4808 Hz. Das andere Extrem wäre der längste erzeugte Signalwechsel mit '1,1,-1,-1', bei einer Frequenz von 2404 Hz.&lt;br /&gt;
&lt;br /&gt;
Die Spule erkennt nur diese Signalwechsel des Sendersignals. So - also ohne den Kondensator in Serienschaltung zur Spule - zeigt sich das (differentielle) Empfangssignal wie folgt:&lt;br /&gt;
&lt;br /&gt;
 1,0,-1, 0,1,-1,1,-1, 0,1,-1,1,0,-1, 0,1,-1, 0,1,-1, 0,1,0,-1&lt;br /&gt;
&lt;br /&gt;
Verwendet man jedoch den Kondensator in Reihe zur Spule, sind gesendetes und empfangenes (nicht-differentielles) Signal vom Prinzipverlauf wieder identisch.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Perimeter_signal_steps.png | Perimetersignal an Sender und Empfangsspule&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Arduino ADC wertet das Empfangssignal mit einer Abtastrate von 9615 Hz aus.&lt;br /&gt;
&lt;br /&gt;
== Filter ==&lt;br /&gt;
Die gewählte Signalform weist eine spezielle Charakteristik auf: &lt;br /&gt;
&lt;br /&gt;
Weil es wie ein Zufallssignal aussieht, stimmt es nicht in Teilen mit sich selbst überein, sondern erst als komplette Sequenz ([http://en.wikipedia.org/wiki/Matched_filter Übereinstimmung]). Aufgrund dieser Charakteristik können die Startpunkte der Signalsequenz durch ein [http://en.wikipedia.org/wiki/Matched_filter matched filter] ('Korrelation' mit dem gesuchten Signalmuster) ermittelt werden: sie erscheinen als Nadelimpuls im Filterergebnis - und zwar auch bei einem stark verrauschten Signal (z.B. durch Störimpulse von Motoren etc.). &lt;br /&gt;
Die Polarität der Spitze (positiv oder negativ) gibt an, ob sich die Spule inner- oder außerhalb der Begrenzungsschleife befindet.&lt;br /&gt;
&lt;br /&gt;
Du kannst sehen, wie das funktioniert: für ein tiefergehendes Verständnis des Perimetersignals und des Filters schau Dir folgende Simulation (in englisch) an: &lt;br /&gt;
[http://www.grauonline.de/alexwww/ardumower/filter/filter.html Matched filter simulation]&lt;br /&gt;
&lt;br /&gt;
# Wähle eine Perimetersignalform: setze den Schieberegler (rechts oben 'example signals') auf ''pseudonoise4_pw'' (Wert 23).&lt;br /&gt;
# Hebe den Wert des Störsignal ein wenig an: setze den Schieberegler ('noise') auf den Wert 2.&lt;br /&gt;
# Der Plot 'Matched filter' (links unten) zeigt, dass das wiederholte Signal 3 mal entdeckt wurde.&lt;br /&gt;
# Nun simuliere die Bewegung der Spule aus der Perimeterschleife nach außen:  Klicke auf 'Invert' und setze damit die Verstärkung auf '-1'. Der Filter liefert 3 negative Spitzen.&lt;br /&gt;
&lt;br /&gt;
Mehr dazu unter: [https://www.youtube.com/watch?v=NIer_kITelc Video über matched filter]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
  File: Matched_filter_principle.png| Matched Filter&lt;br /&gt;
  File: Perimeter_signal_good_bad.png|Beispiele für gutes / schlechtes Signal &lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Sender ==&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Schleifensender_Ardumower_V2.JPG | Sender Schaltplan&lt;br /&gt;
File: Ardumower_sender_pcb.jpg| Ardumower Sender PCB&lt;br /&gt;
File: Perimeter2_sender_open.jpg| Sendersignal (6.5V, ohne Perimeterschleife)&lt;br /&gt;
File: Perimeter2_sender_closed.jpg| Sendersignal (6.5V, 120m Perimeterschleife 7 Ohm)&lt;br /&gt;
File: Sender_v2_signal_sender_5v_4ohm.png| Sendersignal (6.5V, 4 Ohm Widerstand + 2m Perimeterschleife)&lt;br /&gt;
File: perimeter_wiring_motor_driver.png | Varianten der Motortreiberschaltung&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wir benutzen einen Arduino Nano zur Erzeugung und einen Mototreiber als Ausgangsverstärker des Signals. Der Motortreiber wird mit 3,2 kHz betrieben (2 Impulsbreiten 4808 und 2404 Hz). Bei ausreichend langen Schleifendrähten benötigt der Generator typischerweise 10W (6.5V, 1.7A). Unser Motortreiber verfügt über eine integrierte Strombegrenzung und eine Übertemperaturabschaltung (z.B. MC33926). Die Schleifenlänge kann im Bereich 20 - 450m betragen und muss mindestens 5 Ohm Widerstand aufweisen.&lt;br /&gt;
&lt;br /&gt;
Sender Pin-Belegung:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;background-color: lightgrey; border: solid thin grey;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 motor driver M1OUT1     o---------- perimeter loop (20-450 meters, &amp;gt; 5 Ohm) --+&lt;br /&gt;
                                                                               |&lt;br /&gt;
 motor driver M1OUT2     o---------- perimeter loop ---------------------------+&lt;br /&gt;
 motor driver Vin        o-- 6.5V&lt;br /&gt;
 motor driver M1IN1      o-- Arduino Nano pinIN1&lt;br /&gt;
 motor driver M1IN2      o-- Arduino Nano pinIN2&lt;br /&gt;
 motor driver M1PWM_nD2  o-- Arduino Nano pinPWM&lt;br /&gt;
 motor driver M1nSF      o-- Arduino Nano pinFault&lt;br /&gt;
 motor driver M1FB       o-- Arduino Nano pinFeedback&lt;br /&gt;
 motor driver EN         o-- Arduino Nano pinEnable&lt;br /&gt;
 motor driver VDD        o-- Arduino +5V&lt;br /&gt;
 motor driver M1D1       o-- GND (via Jumper)&lt;br /&gt;
 motor driver SLEW       o-- VDD (via Jumper)&lt;br /&gt;
 &lt;br /&gt;
               |---------o-- GND&lt;br /&gt;
 Potentiometer 100k -----o-- Arduino Nano pinPot&lt;br /&gt;
               |---------o-- Arduino +5V&lt;br /&gt;
 &lt;br /&gt;
 ACS712-05 OUT ------o-- Arduino Nano pinChargeCurrent    &lt;br /&gt;
 ACS712-05 A   ------o-- charging pin (+)&lt;br /&gt;
 ACS712-05 B   ------o-- battery charger +24V&lt;br /&gt;
 battery charger GND-o-- charging pin (-)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Beispiel für den Senderaufbau mit einer Lochrasterplatine:  [http://www.braunschweiger.org/content/download/SenderR212.pdf] &lt;br /&gt;
[http://www.braunschweiger.org/content/images/SenderR212_Front.jpg] [http://www.braunschweiger.org/content/images/SenderR212_Back.jpg]'''&lt;br /&gt;
&lt;br /&gt;
=== Sender Perimeterschleife und Rasengröße ===&lt;br /&gt;
Bei einer Betriebsspannung von 6.5V sollte die Perimeterschleife nicht über 450 m lang sein. (Für den 'Wohnzimmertest' tut es auch ein 100 Ohm Widerstand in Reihe mit 5m Schaltdraht.) &lt;br /&gt;
&lt;br /&gt;
Setzen wir mal eine kreisrunde Rasenfläche voraus erhalten wir für 450m Schleifenlänge (= Kreisumfang) einen Radius von 70m:&lt;br /&gt;
 radius = Schleifenlänge / (2*PI) = 450m / (2*PI) = 70 meter&lt;br /&gt;
&lt;br /&gt;
Wäre die Signalqualität nicht durch den Radius begrenzt, entspräche der eingegrenzte Rasen einer Fläche von 15000m2:&lt;br /&gt;
 Fläche = PI * (radius*radius) = PI * (70m * 70m) = 15000 m2&lt;br /&gt;
&lt;br /&gt;
Da jedoch der maximale Radius für ausreichende Signalqualität bei ca. 18m liegt, ergibt sich die maximale Rasenfläche (Annahme immer noch: Kreisfläche!) zu 1000m2: Fläche = PI * (radius*radius) = PI * (18m * 18m) = 1000 m2&lt;br /&gt;
&lt;br /&gt;
=== Einstellung der Senderstromstärke ===&lt;br /&gt;
Zur Einstellung der Sendeleistung (Spannung*Strom) gibt es verschiedene Möglichkeiten:&lt;br /&gt;
&lt;br /&gt;
*Spannung am DC/DC-Wandler: die Versorgungsspannung des Motortreibers kann über das Poti des Wandlers zwischen 6.5 bis 12V eingestellt werden. Das ist der empfohlene Weg. Beachte: der MC33926 Motortreibermotor benötigt eine Mindestspannung (Vin) von 5V. Bei zu geringer Spannung regelt der Motortreiber sporadisch ab und die Arduino-LED zur Anzeige von Unterspannung fängt an zu blinken.&lt;br /&gt;
&lt;br /&gt;
*Normale Amplitude: statt die Perimeterschleife zwischen +Vin und -Vin (doppelte Amplitude ist Standardwert) umzuschalten, kann der Motortreiber auch nur zwischen +Vin und GND (einfache Amplitude). So zieht die Schleife weniger Strom. Zur Einstellung der einfachen Amplitude muß die entsprechende Codezeile in 'sender.ino' auskommentiert werden:&lt;br /&gt;
&lt;br /&gt;
  // #define USE_DOUBLE_AMPLTIUDE    1   &lt;br /&gt;
&lt;br /&gt;
*Hochlastwiderstand: Bei einem Schleifenwiderstand kleiner 5 Ohm kann der Strom nicht weiter reduziert werden, indem man die Spannung runterdreht: unterhalb von ca. 6V arbeitet der Arduino nicht mehr richtig. Dann hilft nur noch ein zur Schleife in Reihe geschalteter Hochlastwiderstand (R: z.B. 5 Ohm, 10W). &lt;br /&gt;
&lt;br /&gt;
 @6V (Vin): 5 ohm Hochlastwiderstand =&amp;gt; I=U/R=6V/5Ohm=1.2A   (P=U*I=6V*1.2A=7.2W)&lt;br /&gt;
&lt;br /&gt;
Daher also die mindestens 10W Belastbarkeit des Widerstandes! In diesem Falle auch die 'einfache Amplitude' im Sendercode aktivieren (doppelte Amplitude nicht benutzen!).&lt;br /&gt;
&lt;br /&gt;
=== Senderstromüberwachung (in Entwicklung) ===&lt;br /&gt;
Idee: das Poti VR1 wird durch ein digitales Poti (z.B. MCP4151-5K) ersetzt. So kann die Vin des Motortreibers (und damit auch der Strom) über den Arduino eingestellt werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Lm2596_circuit.jpg | LM2596 Modulschaltplan&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
MCP4151-5K version:&lt;br /&gt;
&lt;br /&gt;
 Vout = 1.23V*(1+VR1/R1)&lt;br /&gt;
&lt;br /&gt;
 Using VR1=5K...&lt;br /&gt;
 Vstart (on reset):  Vout=1.23V*(1+2.5K/0.33K)=10v&lt;br /&gt;
 Vmax:  Vout=1.23V*(1+5K/0.33K)=19v&lt;br /&gt;
&lt;br /&gt;
=== Automatische Schleifensignalabschaltung ===&lt;br /&gt;
Während sich der ArduMower in der Ladestation aufhält, wird das Schleifensignal nicht benötigt und wir können Energie sparen. Zum Erkennen des Ladestatus wird ein Stromsensor (ACS712) zwischen Ladegerät und Ladeanschlüsse geschaltet.&lt;br /&gt;
&lt;br /&gt;
Zum aktivieren dieser Funktion ist &amp;quot;#define USE_CHG_CURRENT&amp;quot; auf 1 zu setzen&lt;br /&gt;
&lt;br /&gt;
    #define USE_CHG_CURRENT       1     // use charging current sensor for robot detection? (set to '0' if not connected!)&lt;br /&gt;
&lt;br /&gt;
Desweiteren muss der Stromsensor am analogen Eingang A2 kalibriert werden:&lt;br /&gt;
&lt;br /&gt;
* Der Mover befindet sich nicht in der Ladestation/ Ladestrom = 0 Ampere&lt;br /&gt;
* Den seriellen Monitor aufrufen&lt;br /&gt;
* In der Befehlszeile 1 eingeben und Button &amp;quot;Senden&amp;quot; drücken&lt;br /&gt;
* Mit diesem Befehl wird die Spannung am analogen Eingang A2 gemessen und im EEPROM als Referenzwert &amp;quot;chargeADCZero&amp;quot; gespeichert&lt;br /&gt;
* Am Monitor erscheint folgender Text:&lt;br /&gt;
&lt;br /&gt;
    received key=1&lt;br /&gt;
    calibrateChargeCurrentSensor (note: robot must be outside charging station!)&lt;br /&gt;
    calibration done&lt;br /&gt;
    chargeADCZero=755&lt;br /&gt;
&lt;br /&gt;
Die Kalibrierung ist damit erfolgt. Bei den weiteren Messungen wird im seriellen Monitor unter &amp;quot;chgCurrentADC&amp;quot; der Wandlerwert des analogen Eingangs A2 angezeigt:&lt;br /&gt;
&lt;br /&gt;
    time=4	chgCurrent=0.000	chgCurrentADC=755.55	 isCharging=0&lt;br /&gt;
&lt;br /&gt;
Wir simmulieren einen Ladevorgang durch Belastung der Ladebuchse durch einen 22 Ohm Widerstand. Es fließt ein Ladestrom von ca. 0,8 Ampere. Damit ändert sich der &amp;quot;chgCurrentADC&amp;quot; auf 734.63&lt;br /&gt;
&lt;br /&gt;
    time=8	chgCurrent=-0.023	chgCurrentADC=734.63	isCharging=1	&lt;br /&gt;
&lt;br /&gt;
Das Flag &amp;quot;ischarging&amp;quot; wird auf &amp;quot;1&amp;quot; gesetzt und die Perimeterschleife wird für die Dauer der Ladung abgeschaltet.&lt;br /&gt;
&lt;br /&gt;
Dies funktioniert neben dem im Sender_V2 verbauten Stromsensor &amp;quot;INA169&amp;quot; auch mit einem Stromsensor ACS 712-5 oder ACS 712-20.&lt;br /&gt;
&lt;br /&gt;
=== Sendersoftware ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;NOTE&amp;lt;/b&amp;gt;: Wenn Du Dich nie zuvor mit Arduino beschäftigt hast, lies zuerst unsere Einführung &amp;lt;b&amp;gt;[http://wiki.ardumower.de/index.php?title=Arduino_first_steps 'erste Schritte mit dem Arduino']&amp;lt;/b&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[File:warning.png]] Wichtig: Vergewissere Dich, dass die Pin-Konfiguration des Arduino im benutzten Code (sender.ino) mit Deinem Senderaufbau übereinstimmt!&lt;br /&gt;
&lt;br /&gt;
Im Code (sender.ino) die passende Option für die automatische Schleifenabschaltung (bei Verwendung des oben beschriebenen Stromsensors Option 1) wählen:&lt;br /&gt;
&lt;br /&gt;
* Define if you have connected a charging current sensor for automatic sender standby:   #define USE_CHG_CURRENT 1   (or 0)&lt;br /&gt;
&lt;br /&gt;
=== Sender Zustandsanzeige ===&lt;br /&gt;
Die LED auf dem Arduino Nano signalisiert den Senderstatus:&lt;br /&gt;
* An: Perimeterschleife ist angeschlossen und arbeitet&lt;br /&gt;
* Aus: Perimeterschleife ist geöffnet (oder durch Defekt unterbrochen) und arbeitet nicht&lt;br /&gt;
* Blinkt: der ArduMower wird geladen und die Perimeterschleife ist zur Energieeinsparung durch die Software deaktiviert&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File:Perimeter_sender_console.png | Ausgabe 'sender.ino' über serielle Konsole&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Sendertest per PC-Soundkarte ===&lt;br /&gt;
Du kannst den Sender mit Deine Soundkarte und einer Spule testen:&lt;br /&gt;
&lt;br /&gt;
# Verbinde eine Spule (100 mH) mit dem Mikrofon-/Line-Eingang (max 1V) Deiner Soundkarte &lt;br /&gt;
# Starte das [http://www.grauonline.de/alexwww/ardumower/oscilloscope/oscilloscope.html Web-Oszilloskop], und wähle Filter 'Matched', Frequenz '9615' Hz, Visualization Math 'MinMax'&lt;br /&gt;
# Das Ausgangssignal sollte den Abstand zur Perimeterschleife wiederspiegeln - die Polarität (negativ/positiv) zeigt den Aufenthaltsbereich (innerhalb/außerhalb) der Schleife.&lt;br /&gt;
&lt;br /&gt;
Versuche in beiden Fällen (innen/außen), die Spule so dicht wie möglich an der Schleife zu positionieren, um ein auswertbares Signal zu empfangen (zur Erinnerung: wir arbeiten hier ohne die Signalverstärkung durch den Operationsverstärker, da der Soundkarteneingang nur mit max 1V beaufschlagt werden darf).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File:Ardumower_web_oscilloscope_time_signal_received.jpg | Effektivwert des empfangenen Zeit-Signals (Filter Off, Time scale: x5)&lt;br /&gt;
File:Ardumower_web_oscilloscope_time_signal.jpg | Ideales Zeitsignal erzeugt vom Sender (Filter Off, Time scale: x5)&lt;br /&gt;
File:Ardumower_web_oscilloscope.jpg  | Matched Filter Signal (Frequency: 9615 Hz, Math: MinMax)&lt;br /&gt;
File:Perimeter_signal_good_bad.png | Beispiel für gutes / schlechtes Signal&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://www.youtube.com/watch?v=vg5Xg0__66A Video zur Erklärung aller Schritte]&lt;br /&gt;
&lt;br /&gt;
== Empfänger ==&lt;br /&gt;
&lt;br /&gt;
Zum Signalempfang verwenden wir eine Spule (100 mH or 150 mH, nur für die älteren Softwareversionen wird ein Kondensator 4.7nF mit der Spule in Reihe geschaltet) in aufrechter Position, in der Mitte am vorderen Rand des ArduMower. Sie ist zur Verstärkung des empfangenen Signals mit dem Eigang eines LM386 Operationsverstärkers verbunden. Auf dem LM386 Modul wird der Kondensator C3 überbrückt, damit der Verstärker ein Signal zwischen 0..5V statt im Standardbereich -5V..+5V) liefert. Der Ausgang des LM386 sollte mit dem Arduino Analog-Pin ('pinPerimeterLeft') verbunden werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt; &lt;br /&gt;
 File: Perimeter_v2_receiver_circuit.png | Empfängerschaltkreis und überbrückter Kondensator C3&lt;br /&gt;
 File: Ardumower_chassis_components.png | Position der Perimeterspule&lt;br /&gt;
 File: Ardumower_coil_position.jpg | Eine zentrierte, aufrecht montierte Spule &lt;br /&gt;
 File: Ardumower_lm386_circuit.png | LM386 Modul Schaltplan&lt;br /&gt;
 File: Tire_coil_distance.jpg | Abstand Spule-Rad: Einfluß auf den Wendekreis (Kurvenwinkel)&lt;br /&gt;
 File: Coil_motor_layout.png | Zwei Spulen (experimentell), Abstand Spule-Spule Hinterradantrieb 12.5cm, Frontantrieb 19cm&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Empfängerschaltplan:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;background-color: lightgrey; border: solid thin grey;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
                                      LM386 IN  o------- capacitor 4.7nF ----------- coil 100 mH  (or 150 mH)&lt;br /&gt;
 Arduino pinPerimeterLeft   o------o  LM386 OUT&lt;br /&gt;
                                      LM386 GND o----------------------------------- coil&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Achtung''': Die Spule muss direkt an den Verstärkermodul angeschlossen werden. So wird die Störfestigkeit des schwachen Spulensignals gegenüber Einflüssen anderer Komponenten (Motore, DC-DC-Wandler) verbessert. &lt;br /&gt;
&lt;br /&gt;
'''Differentielles Signal''': Die aktuelle Software erfordert das Weglassen des Kondensators 4.7nF in Reihe mit der Spule. &lt;br /&gt;
&lt;br /&gt;
'''Nicht-differentielles Signal''': Mithilfe des Kondensators (4.7 nF) wird das Sendersignal wieder rekonstruiert (s. Abschnitt Signal), der Empfängeschaltkreis ist ein Schwingkreis (C und L und Perimeterschleife fungiert als Antenne) und alle Parameter (C, L, Schleifendrahtlänge) müssen übereinstimmen. Weil dies die Abstimmung schwierig macht, empfehlen wir das nicht-differentielle Signal nicht!&lt;br /&gt;
&lt;br /&gt;
=== Abstand Spule/Verstärker zu Motoren ===&lt;br /&gt;
Achte auf die Einhaltung aller Mindestabstände zwischen den folgenden Komponenten:&lt;br /&gt;
 * Spule zu Radmotor: &amp;gt; 15cm&lt;br /&gt;
 * Spule zu Mähmotor: &amp;gt; 10cm &lt;br /&gt;
 * Spule zu DC-DC Wandler: &amp;gt; 10cm&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
 File: Dcdc_noise.jpg | Achtung: Halte Spule/Vorverstärker von den DC-DC-Wandlern und Motoren fern!!!&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Signalmessungen ===&lt;br /&gt;
Sender / Spule / LM386 Verstärker Ausgangssignale sollten etwa so aussehen: (witere Details über das Signal s. Abschnitt Signal)&lt;br /&gt;
&amp;lt;gallery&amp;gt; &lt;br /&gt;
 File: Perimeter_signal_steps.png | Perimetersignal an Sender, Empfangsspule und LM386 (Theorie)&lt;br /&gt;
 File: coil_signal_without_capacitor.png | differentielles Signal / Spulensignal ohne Kondensator (5V sender, 5 Ohm Schleife - blau: Perimeter, gelb: Spule, grau: LM386 Verstärkerausgang)&lt;br /&gt;
 File: Lm_output_dc_noise.jpg | LM386 Ausgang mit DC Störungen (differentielles Signal / Spule ohne Kondensator)&lt;br /&gt;
 File: Perimeter2_receiver_coil.jpg | LM386 Ausgang (nicht-differentielles Signal / Spule mit Kondensator, 12V Sender, 120m Schleife)&lt;br /&gt;
 File: coil_signal_with_capacitor.png | nicht-differentielles Signal / Spulensignalmit Kondensator (5V Sender, 5 Ohm Schleife - grau: Perimeter, gelb: Spule, blau: LM386 Verstärkerausgang)&lt;br /&gt;
 File: Lm_output_motor_noise.jpg | LM386 Ausgang mit Störungen durch Motoren (differentielles Signal / Spule ohne Kondensator)&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Signal und Rauschmessungen ===&lt;br /&gt;
Einige Spulenmessungen ohne Verstärker aber mit Störungen (Motoren, DC/DC-Wandler etc.): &lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
 File: Coil_60k_parallel.jpg | Spule und 60 kOhm Parallelwiderstand ohne Störungen (Spulenhintergrund-rauschen Vpp=7 mV)&lt;br /&gt;
 File: Coil_dc_converter_noise.jpg | Spule und 60 kOhm Parallelwiderstand mit Störungen durch DC/DC-Wandler (DC/DC-Rauschen Vpp=18 mV)&lt;br /&gt;
 File: Coil_motor_noise.jpg | Spule und 60 kOhm Parallelwiderstand mit Störungen durch Motoren&lt;br /&gt;
 File: Perimeter2_receiver_coil_pwm.jpg | Spulensignal mit seriellem 4.7nF Kondensator, PWM-Perimetersignal (nicht empfohlen) ohne Störungen&lt;br /&gt;
 File: Fft_signal.png | FFT Signal&lt;br /&gt;
 File: Fft_motors.png | FFT Motor-Störungen&lt;br /&gt;
 File: Fft_dcdc.png | FFT DC/DC-Störungen&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ADC-Kalibrierung am Empfänger ===&lt;br /&gt;
[[File:warning.png]] Die ADC-Kalibrierung (bei ausgeschaltetem Sender!) sorgt für eine korrekte Erkennung der Nulllinie (Stille), sodass das empfangene Signal später symmetrisch zur Nulllinie angezeigt wird.&lt;br /&gt;
# Der Perimetersender und die Motoren des ArduMower müssen während der Kalibrierung ausgeschaltet sein!&lt;br /&gt;
# Wenn eine Störung durch einen anderen Sender nicht zu vermeiden ist, muß während der Kalibrierung die Spule entfernt und der Eingang es LM386 mit GND verbunden werden.&lt;br /&gt;
# Führe die ADC-Kalibrierung einmal aus (&amp;quot;pfodApp-&amp;gt;ADC Calibration&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Nach der korrekt durchgeführten Kalibrierung sollte das Signal per pfodApp Plot ('sig') bei ausgeschaltetem Perimetersender ungefähr als Null angezeigt werden. Nach Einschalten des Perimetersenders sollte das Signal etwa diesselbe positive wie negative Maximalamplitude ('Symmetie zur Nulllinie') aufweisen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
 File: perimeter_v2_sig_symmetric.jpg | symmetrisches Signal bei eingeschaltetem Sender (nach ADC-Kalibrierung)&lt;br /&gt;
 File: perimeter_v2_sender_off.jpg | Nullsignal bei ausgeschaltetem Sender (nach ADC-Kalibrierung)&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Problemanalyse und Fehlerbehebung am Empfänger ===&lt;br /&gt;
&lt;br /&gt;
Empfangenes Signal, Filterergebnis und Signalqualität können per Android Handy über die pfodApp-&amp;gt;Plot-&amp;gt;Perimeter angezeigt werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
 File: Perimeter_snr.png | Signal-Rausch-Verhältnis (SNR)&lt;br /&gt;
 File: Perimeter_signal_38khz.png | Signal, Filterergebnis, LP Filterergebnis, innen/außen, Ereigniszähler, Signal ein/aus, Signalqualität&lt;br /&gt;
 File: Perimeter_plot_moving_from_inside_to_outside.png | Fahren von innen nach außen&lt;br /&gt;
 File: Perimeter_v2_plot.png&lt;br /&gt;
 File: Perimeter_v2_plot_new.png&lt;br /&gt;
 File: Ardumower_perimeter2_test.jpg&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Beschreibung der im Plot angezeigten Signalverläufe:&lt;br /&gt;
 sig:  Spulensignal (Sequenz der Rohimpulse nach ADC) als kurzer Snapshot (32 samples), Update alle 20 Sekunden &lt;br /&gt;
       (also 20 Sekundenwarten bis zum nächsten Snapshot)&lt;br /&gt;
 mag:  Filterergebnis: innen (negativ) oder außen (positiv), magnitude: Abstand zur Perimeterschleife / magnetische Signalstärke (RSSI)&lt;br /&gt;
       - wird benutzt zum &amp;lt;b&amp;gt;Perimeter verfolgen&amp;lt;/b&amp;gt;&lt;br /&gt;
 smag: Filterergebnis, low-pass-gefiltert, ohne Vorzeichen (geglätteter mag-Verlauf) - verwendet zur Erkennung des &amp;lt;b&amp;gt;'Sender-aus' Zustandes&amp;lt;/b&amp;gt;&lt;br /&gt;
       Der Grenzwert kann über die pfodApp gesetzt werden (Settings-&amp;gt;Perimeter-&amp;gt;Timed-out if below smag)&lt;br /&gt;
 in:   binäres Ergebnis des low-pass Filters: innerhalb (1) oder außerhalb (0) der Perimeterschleife - wird benutzt zur &amp;lt;b&amp;gt;Erkennung des Perimetergrenzverlaufs&amp;lt;/b&amp;gt;&lt;br /&gt;
       Ist der ArduMower eine bestimmte Zeit außerhalb der Schleife, geht er in den Fehlerstatus. Diese Zeit kann per pfodApp&lt;br /&gt;
       (Settings-&amp;gt;Perimeter-&amp;gt;Timeout (s) if not inside) eingestellt werden&lt;br /&gt;
 cnt:  Anzahl der Wechsel von innen nach außen (counter, Zähler)&lt;br /&gt;
 on:   Perimetersender ist aktiv (1) oder inaktiv (0), basiert auf der Auswertung des smag Ergebnisses&lt;br /&gt;
 qty:  &amp;lt;b&amp;gt;Signalqualität&amp;lt;/b&amp;gt; (Aussage über die Verläßlichkeit der Erkennung 'innerhalb / außerhalb' aus dem Filterergebnis)&lt;br /&gt;
       Verhältnis aus Vergleich mit Mustersignal zu Vergleich mit inversem Mustersignal              &lt;br /&gt;
       1.0 bedeutet schlechte Qualität, Du solltest Werte von 1.5 oder höher)&lt;br /&gt;
&lt;br /&gt;
Im Plot soll der 'mag'-Verlauf frei von Spitzen sein: innerhalb der Schleife sollte das Signal eine negative Kurve, außerhalb eine positive Kurve beschreiben. Weist die Kurve Spitzen auf, versuche folgende Maßnahmen zur Fehlerbeseitigung bzw. Optimierung:&lt;br /&gt;
&lt;br /&gt;
* Benutze immer einen ausreichend langen und korrekt abgerollten Schleifendraht (20m oder länger). Benutze niemals einen zu kurzen (Mindestwiderstand 5 Ohm!) oder gar aufgerollten Draht. &lt;br /&gt;
* Für den 'Wohnzimmertest' sollte ein 100 Ohm Widerstand in Reihe mit 5m Draht bei 6V seine Aufgabe erfüllen.&lt;br /&gt;
* Verbinde die Empfangsspule mit 'pinPerimeterLeft' auf dem PCB (am falschen Pin könnte das Signal 'etwas schwach' reinkommen)&lt;br /&gt;
* Die Spulenpolung kann per pfodApp eingestellt werden (wird 'außen' angezeigt, wenn der Ardumower sich innrhalb der Schleife befindet?). Denselben Effekt hat das Umklemmen der Schleifenenden am Senderausgang.&lt;br /&gt;
* Sollte das Signal schwach erscheinen, überprüfen, ob am Spulenverstärker das Poti &amp;quot;voll aufgedreht&amp;quot; ist! Hilfreich ist die gleichzeitige Anzeige des Signal per pfodApp (Plot --&amp;gt; Perimeter).&lt;br /&gt;
* Die Kabelverbindung zwischen Spule und LM386-Vorverstärker muss möglichst kurz sein - am Besten die Spule direkt am Verstärker anschließen!&lt;br /&gt;
* Halte den Abstand zwische Spule und Motoren sowie DC/DC-Wandlern möglichst groß (30cm oder mehr!)&lt;br /&gt;
* Nutze die magnetische Abschirmwirkung (z.B. Deines Akkus) zwischen Spule und Störquellen.&lt;br /&gt;
* Einstellen der Senderspannung: bei längeren Perimeterschleifen (&amp;gt;80m) die Spannung höher wählen (Potentiometer DC/DC-Wandler), bei kürzeren Schleifen (&amp;gt;25m) eher niedriger (anstreben einer Sendeleistung = Spannung * Strom von ca 10W)&lt;br /&gt;
* Versuche bei laufenden Motoren die Spule leicht zu einer Seite zu neigen um die Signalqualität 'qty' zu erhöhen.&lt;br /&gt;
&lt;br /&gt;
== Messungen ==&lt;br /&gt;
&lt;br /&gt;
Zum Vergleich Beispielwerte, gemessen an verschiedenen, im Gelände getesteten Kombinationen von Sender-/Empfänger-/Schleifenparametern:&lt;br /&gt;
&lt;br /&gt;
1) 120m (0.7mm^2), R=4 Ohm, 6.5V, Spule Vpp 20mV&lt;br /&gt;
 Störsignalpegel (max): smag=192&lt;br /&gt;
 Signal (min): smag=254&lt;br /&gt;
 SNR=Signal/Störsignal=254/192=1.3&lt;br /&gt;
&lt;br /&gt;
2) 30m (0.7mm^2), R=1.0 Ohm (+4 Ohm series R), 6.5V, Spule Vpp 120 mV&lt;br /&gt;
 Störsignalpegel (max): smag=192&lt;br /&gt;
 Signal (min): smag=896&lt;br /&gt;
 SNR=Signal/Störsignal=896/192=4.6&lt;br /&gt;
&lt;br /&gt;
=== Videos ===&lt;br /&gt;
#[http://www.youtube.com/watch?v=FL6K98B2Zsk&amp;amp;feature=player_detailpage#t=265 Perimeter2 Demo]&lt;br /&gt;
#[https://www.youtube.com/watch?v=QCA6Dm3rs3M Test 120m Perimeterschleife]&lt;br /&gt;
#[https://www.youtube.com/watch?v=NIer_kITelc Theorie zu Perimeterschleife und Matched Filter (in deutsch)]&lt;br /&gt;
#[https://www.youtube.com/watch?v=VxJN2xb55dU&amp;amp;feature=youtu.be Sender-PCB]&lt;br /&gt;
&lt;br /&gt;
= Verfolgung der Begrenzungsschleife =&lt;br /&gt;
&lt;br /&gt;
Das Abfahren der Schleife wird über einen softwareseitig realisierten digitalen PID-Regler gesteuert. Die Regler-Parameter (P,I,D) können über ein Android-Handy per pfodApp eingestellt werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Ardumower_perimeter_pid.jpg&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mehr Informationen über PID-Regler sind hier zu finden: &lt;br /&gt;
[http://www.ardumower.de/index.php/de/forum/anleitungen-hilfe/121-pid-regelung-fuer-drehzahl-drehung-etc-richtig-einstellen Forum].&lt;br /&gt;
&lt;br /&gt;
= Sensor Signalfusion =&lt;br /&gt;
Das Magnetfeld der Perimeterschleife könnte man als Input für eine [http://wiki.ardumower.de/index.php?title=Sensor_fusion zur Positionsbestimmung des ArduMower nutzen].&lt;br /&gt;
&lt;br /&gt;
= Weiterführende Links =&lt;br /&gt;
#[http://www.ardumower.de/index.php/en/forum/schleifensensoren-generator/83-ir-bake-generator-empfaenger-diy Ein anderer Navigationsansatz sind Infrarot-Baken]&lt;br /&gt;
#[http://grauonline.de/wordpress/?page_id=364 Mehr Details zum 'matched filter']&lt;br /&gt;
#[http://www.grauonline.de/alexwww/ardumower/oscilloscope/oscilloscope.html Soundkarten-Oszilloskop inklusive 'matched filter']&lt;br /&gt;
&lt;br /&gt;
= Perimeter V1 (für alten Code V0.9.3, nicht mehr empfohlen) =&lt;br /&gt;
&lt;br /&gt;
Dies war die erste Version unseres Perimetersenders und Empfängers. Sie wies einige Nachteile auf (Orientierungsfehler, Keine 'Sender-aus'-Erkennung, keine Möglichkeit zur Feststellung des Aufenthaltsbereiches inner-/außerhalb der Schleife), so dass der Einsatz nicht weiter empfohlen wird. Benutze die Nachfolgeversion V2, wie oben beschrieben.&lt;br /&gt;
&lt;br /&gt;
== Sender ==&lt;br /&gt;
Du kannst den Sender eines kommerziellen Rasenmäroboters nutzen (der hier gezeigte Sender ist kompatibel mit Tianchen oder Rotenbach Mährobotern), oder Du baust Dir selber einen:&lt;br /&gt;
&lt;br /&gt;
Ein Arduino (z.B. Nano) generiert ein Rechtecksignal, welches die Polarität eines Motortreibers (L298N) mit 7.8 Khz schaltet. Dadurch wechselt das Ausgangssignal zwischen Vcc und GND. Ein Schwingkreis verstärkt die Signalspitzen (Resonanzfrequenz ist dieselbe wie die Schaltfrequenz - 7.8 Khz). So reicht es aus, den Motortreiber mit 5V (statt 12V) zu betreiben. Die Spannungsquelle muß etwa 2W (400mA bei 5V) leisten. &lt;br /&gt;
Ein Teil des Signals wird durch den Arduino (ADC) durch eine Diode und einen Spannungsteiler erfaßt. So kann festgestellt werden, ob die Perimeterschleife angeschlossen ist. Durch den Schleifendraht fließt ein Strom von ca. 150mA (Drahtquerschnitt 2-3 mm^2, Länge max 500 m)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Arduino_perimeter_sender.png ‎&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Weil man vielleicht nicht immer die genau passende Empfängespule zur Hand hat, hier ein paar mögliche Kombinationen (Spule / Kondensator), die die Resonanzfrequenz von 7.8 Khz aufweisen:&lt;br /&gt;
*Kombination 1: Spule: 160µH, Kondensator: 3,3µF/50V  (getestet)&lt;br /&gt;
*Kombination 2: Spule 33mH, Kondensator: 12nF (nicht getestet)&lt;br /&gt;
&lt;br /&gt;
==== Stromversorgung ====&lt;br /&gt;
Zur Erzeugung der 5V Spannung wird ein step-down-Wandler (z.B. Module mit LM2596) eingesetzt. Vor dem Einsatz in der Schaltung muß der Wandler auf 5V einjustiert werden. &lt;br /&gt;
&lt;br /&gt;
'''Warnung''' : Lege niemals mehr als 5V auf die Arduino 5V Pins oder Du zerstörst ihn. Deswegen: vorher die Spannung einstellen und kontrollieren!&lt;br /&gt;
&lt;br /&gt;
==== Funktionstest ====&lt;br /&gt;
1. Nach dem Code-Hochladen und Anschliessen der Begrenzungsschleife sollte die Arduino LED an sein. Nun entferne den Schleifendraht und die LED sollte ausgehen.&lt;br /&gt;
&lt;br /&gt;
2. Sollte das nicht so sein, kontrolliere mit einem Voltmeter zum Einen die Spannung zwischen Pin 9 des Arduino und dann die am Motortreiberausgang (OUT_1) jeweils gegen GND - beide sollten eine Gleichspannung  2.5 Volt führen.&lt;br /&gt;
&lt;br /&gt;
3. Hast Du ein Oszilloskop? Dann schließe statt der Begrenzungsschleife das Oszilloskop an den Sender an. Das gemessene Signal sollte folgendermaßen aussehen:&lt;br /&gt;
&lt;br /&gt;
Das Ausgangssignal zeigt eine höhere Ampltude (hohe Spitzenwerte) als das Eingangssignal:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Perimetersignal.jpg|Signal am Senderausgang &lt;br /&gt;
File: Ardumower_perimeter_sender_schematics.png|Grundprinzip des Schwingkreises&lt;br /&gt;
File: Arduino_perimeter_sender_photo.jpg&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Für einen einfachen Empfangstest kannst Du die Empfangsspule direkt ans Oszilloskop anschließen. Das gemessene Signal sollte etwa so  aussehen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Coilsignal.jpg|Signal an der Empfangsspule&lt;br /&gt;
File: Fft.jpg|Signal im Frequenzspektrum, überlagert durch Motorstörungen&lt;br /&gt;
File: Ardumower_perimeter_spectrum_plot.jpg| Anzeige des Frequenzspektrums über pfodApp&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Empfänger ==&lt;br /&gt;
Der Empfänger nutzt zwei Spulen, die rechts und links vorn im ArduMower montiert sind. Die Signalstärke der linken und rechten Spule werden ausgewertet, um sie vergleichen zu können.&lt;br /&gt;
&lt;br /&gt;
Prinzip:&lt;br /&gt;
# Verstärkung der alternierenden Signale per OPAMP&lt;br /&gt;
# Optional: Bandpass-Filterung zum Ausblenden der Störungen durch Motore etc.&lt;br /&gt;
# Ermittlung der Signalstärke von linker und rechter Spule&lt;br /&gt;
&lt;br /&gt;
Vorteil dieser Version: analoge Auswertungfunktioniert hervorragend.&lt;br /&gt;
Nachteil: Du kannst nicht feststellen, ob Du Dich gerade innerhalb oder außerhalb der Begrenzungsschleife aufhälst, wenn Du nicht jede Überfahrt des Begrenzungsdrahtes mitprotokollierst. Es ist auch nicht möglich festzustellen, ob Du die Begrenzungsschleife im oder gegen den Uhrzeigersinn abfährst.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Arduino_perimeter_receiver.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Eine Spule empfängt das Signal des Senders. Ein Schwingkreis (LC: SPule und Kondensator)verstärkt das empfangene Signal bei einer Resonanzfrequenz von 7.8 kHz. Das Signal wird weiter verstärkt durch eien LM386-Verstärker (hier: Arduino Soundsensor mit Spule statt Mikrofon). Ein Bandpassfilter (digitaler Filter, FFT - Fast Fourier Transformation) läuft auf dem Arduino und filtert die gewünschte Frequenz (7.8 Khz) und erzeugt ein PWM-Signal (Pulsbreite proportional zur Signalstärke). Über einen Tiefpassfilter wird das PWM-Signal in eine Gleichspamnnung gewandelt.&lt;br /&gt;
Beachte: Die Verdrahtung zwischen ist vereinfacht dargestellt - Details der Verdrahtung s. Schaltplan.&lt;br /&gt;
&lt;br /&gt;
Wir haben folgende Kombinationen von Spulen und Verstärkern getestet:&lt;br /&gt;
&lt;br /&gt;
'Arduino Soundsensor'&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Soundsensor.jpg| Signalverstärkung über LM386 - Arduino Soundsensor mit Spule statt Mikrofon&lt;br /&gt;
File: YwRobot_Sensor.jpg |Arduino Soundsensor mit LM386&lt;br /&gt;
File: YwRobot_circuit.png |Arduino Soundsensor Modulschaltplan&lt;br /&gt;
File: Coil_85mh.jpg|85 mH Spule&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
LM386 Verstärker&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Lm386_amplifier.jpg| LM386 Versärker (200-fach)&lt;br /&gt;
File: Lm386_modified.jpg| modifizierter LM386-Verstärker&lt;br /&gt;
File: Ardumower_lm386_circuit.png | LM386 Modulschaltplan&lt;br /&gt;
File: Coil_small.jpg| 104 mH Spule&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wichtig: Bei Verwendung dieses Verstärkers muß der Kondensator C3 überbrückt werden (erzeugt das für den Arduino erforderliche VCC/2 offset). Dies Spule schließt man an &amp;quot;IN&amp;quot; und &amp;quot;GND&amp;quot; an.&lt;br /&gt;
&lt;br /&gt;
'''Beachte''': die Spule unbedingt direkt am Verstärkermodul befestigen. Dies minimiert die Störeinflüsse durch andere Komponenten wie z.B. Motoren auf das schwache Spulensignal.&lt;br /&gt;
=== Funktionstest ===&lt;br /&gt;
# Stelle eine korrekte Funktion des Schleifensenders sicher (wie bereits weiter oben beschrieben).&lt;br /&gt;
# Drehe das Potentiometer des Arduino Soundsensors auf Maximum (gegen den Uhrzegersinn).&lt;br /&gt;
# Lade das Programm auf den Arduino und bewege eine Spule in Richtung des Begrenzungsdrahtes: die LED des Arduino sollte zu blinken beginnen. Halte nun beide Spulen im gleichen Abstand über den Begrenzungsdraht: die LED sollte nun permanent leuchten.&lt;br /&gt;
# Wenn das so nicht funktioniert, öffne die serielle Konsole und  prüfe die Signalwerte.&lt;br /&gt;
&lt;br /&gt;
=== Spulenauswahl ===&lt;br /&gt;
mathematische Näherungsberechnung einer Spule:&lt;br /&gt;
&lt;br /&gt;
 L = 1nH x n² x ((D² / mm² ) / (l / mm))&lt;br /&gt;
 l = Spulenlänge&lt;br /&gt;
 D = Spulendurchmesser&lt;br /&gt;
&lt;br /&gt;
Beispiel: eine Induktion von 85 mH, Durchmesser 10 mm, Länge 40 mm erfordert ca. 5830 Windungen.&lt;br /&gt;
&lt;br /&gt;
Diese Induktivität von 85 mH und ein Kondensator von 4.7 nF führen zu einer Resonanzfrequenz von 7963 Hz.&lt;br /&gt;
&lt;br /&gt;
 f0 = 1 / (2 * PI * sqrt(L * C)) = 1 / (2 * PI * sqrt(0.085 H * 0.0000000047 F)) =  7963 Hz&lt;br /&gt;
&lt;br /&gt;
Weil man vielleicht nicht immer die genau passende Empfängerspule zur Hand hat, hier ein paar mögliche Kombinationen (Spule / Kondensator), die die Resonanzfrequenz von 7.8 Khz aufweisen:&lt;br /&gt;
 Kombination 1: Spule: 85mH, Kondensator: 4.7nF  (getestet)&lt;br /&gt;
 Kombination 2: Spule: 104mH, Kondensator: 4nF (getestet)&lt;br /&gt;
&lt;br /&gt;
=== Anordnung der Spulen ===&lt;br /&gt;
die Spulen sind am Boden des ArduMower so angeordnet, dass sie einen Winkel von 90 Grad einschließen, d.h. jede ist um 45 Grad aus der Längsachse gedreht.&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Ardumower_spulen.jpg| Anordnung der Spulen&lt;br /&gt;
File: L50_coils.jpg | Beispiel (Ambrogio L50)&lt;br /&gt;
File: L50_parcours.jpg | Testparcours&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Messung der Signalstärke ===&lt;br /&gt;
Zum Vergleich von Messungen wurde die Signalstärke bei verschiedenen Schleifenabständen bestimmt. Die Signalsärke (soll heißen: der berechnete ADC-Wert) kann in der Android pfodApp angezeigt werden. Der Abstand (cm) ist der berechnete Wert zwischen Perimeterschleife und Spule (eingebaut im ArduMower).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Perimeter_plot.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Schleifenverlegung ===&lt;br /&gt;
&lt;br /&gt;
Wichtig bei der Schleifenverlegung ist die Vermeidung von scharfen Ecken: Rundungen sind angesagt! Fährt der Ardumower exakt über eine scharfe Ecke, kann er unter Umständen die Schleife nicht mehr orten, da Spule und Schleife fluchten / parallel stehen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Schleifen_blind.jpg  | Nicht empfohlen: ArduMower kann keine scharfen Ecken orten!&lt;br /&gt;
File: Ardumower_coil_signal.png| Wie ändert sich das Sinal, wenn die Spule gedreht wird??&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Videos ===&lt;br /&gt;
#[http://www.youtube.com/watch?v=FGaUSg-uUxk Perimeter Stoptest]&lt;br /&gt;
#[http://www.youtube.com/watch?v=8R8QaffNlJw Perimeter Verfolgungstest]&lt;br /&gt;
#[http://www.youtube.com/watch?v=CftrnetFVYc&amp;amp;feature=youtu.be Test zum Finden und Verfolgen mit L50]&lt;br /&gt;
#[http://www.youtube.com/watch?feature=player_embedded&amp;amp;v=fjuQViS2rHM Test zum Finden und Verfolgen mit Rotenbach]&lt;/div&gt;</summary>
		<author><name>Deejay</name></author>	</entry>

	<entry>
		<id>https://wiki.ardumower.de/index.php?title=Perimeter-Schleife&amp;diff=2725</id>
		<title>Perimeter-Schleife</title>
		<link rel="alternate" type="text/html" href="https://wiki.ardumower.de/index.php?title=Perimeter-Schleife&amp;diff=2725"/>
				<updated>2015-08-27T17:07:29Z</updated>
		
		<summary type="html">&lt;p&gt;Deejay: Kalibrierung des Stromsensors beschrieben&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Zusammenfassung=&lt;br /&gt;
Eine Begrenzungsschleife (oder Perimeterdraht) ist eine Art 'elektronischer Zaun': er veranlaßt den ArduMower zum Stoppen / Umkehren sobald die Grenze erreicht ist. Nicht in jeder Umgebung ist eine Begrenzungsschleife notwendig - Rasensensoren könnten eine Alternative sein.&lt;br /&gt;
&lt;br /&gt;
Das Prinzip: durch den im Garten verlegten Schleifendraht wird ein Signal gesendet, das der Ardumower ausgewertet. Gebraucht werden ein Sender zur Erzeugung und Übergabe des Signals an die Schleife und ein Empfänger zur Signalauswertung im ArduMower.&lt;br /&gt;
&lt;br /&gt;
Und so wird das Signal empfangen: eine (oder zwei) Empfangsspulen liefern ein Signal, dessen Stärke je nach Abstand zwischen Schleifendraht und Empfangsspule(n) variiert. Interessanterweise wechselt das Signal in dem Moment seine Polarität, wo der ArduMower (genauer: die Empfänger-Spule) den Schleifendraht überfährt. Es gibt zwei prinzipielle Möglichkeiten, den Begrenzungsdraht zu orten. Wir haben beide Methoden implementiert (Perimeter V1 und V2) wie nachfolgend beschrieben.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Ardumower_perimeter.jpg | Perimeterdraht&lt;br /&gt;
File: Ardumower_perimeter_components.jpg | Komponenten&lt;br /&gt;
File: Perimeter_signal_strength.jpg | Signalstärke&lt;br /&gt;
File: Perimeter_gradient.png | Verlauf der Signalstärke&lt;br /&gt;
File: Ardumower_perimeter_magneticfield.png | Perimeter-Magnetfeld&lt;br /&gt;
File: Perimeter_excluding_objects.png | Objekte ausschließen&lt;br /&gt;
File: Perimeter_divide.png | Flächen aufteilen&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://hyperphysics.phy-astr.gsu.edu/hbase/magnetic/magcur.html Magnetfeld Berechnungstool]&lt;br /&gt;
&lt;br /&gt;
Videos:&lt;br /&gt;
[http://youtu.be/r4ZMgasMkH0 Magnetfeld Demovideo]&lt;br /&gt;
&lt;br /&gt;
=Begrenzungsschleife V2 (erforderlich für aktuellen ArduMower Code)=&lt;br /&gt;
&lt;br /&gt;
[[Image:Yt-brand-standard-logo-95x40.png|thumb|180px|https://www.youtube.com/watch?v=NIer_kITelc&amp;amp;feature=youtu.be]]&lt;br /&gt;
&lt;br /&gt;
Dies ist die neue Version von Sender und Empfänger für die Begrenzungsschleife (erhältlich über den [https://www.marotronics.de/index.php?k=7 shop] [[File: shopping.png|link=https://www.marotronics.de/index.php?k=7]]).&lt;br /&gt;
&lt;br /&gt;
Beim Überfahren des Schleifendrahtes passiert nun etwas Interessantes: die Polarität der Signalspannung wechselt von negativ auf positiv bzw. umgekehrt - je nachdem, ob man von innen oder außen kommt. Dadurch werden sowohl das Überfahren selbst als auch der Status (Aufenthalt innerhalb oder außerhalb der Schleife) eindeutig erkennbar. Wie bei der V1 nutzen wir zur Signalverstärkung wieder den Motortreiber für das Ausgangssignal und einen Operationsverstärker für das Eingangssignal von der Empfangsspule. Der Sender übergibt eine digitale Signalfolge (auch als 'pseudo-noise' bezeichnet) an die Schleife, die vom Empfänger über einen software-basierten digitalen [http://en.wikipedia.org/wiki/Matched_filter Matched-Filter] ausgewertet wird. Der Filter liefert als Ergebnis einen Peak: positiv - ArduMower innerhalb oder negativ - ArduMower außerhalb der Begrenzungsschleife.&lt;br /&gt;
&lt;br /&gt;
Prinzipablauf:&lt;br /&gt;
  Senderseite&lt;br /&gt;
# Erzeugen des Ausgangssignals durch den Arduino Nano&lt;br /&gt;
# Verstärkung des Ausgangssignals durch den Motortreiber (MC33926), Schleifendrahtenden anstatt eines Motors an den Ausgang anschließen&lt;br /&gt;
&lt;br /&gt;
  ArduMower&lt;br /&gt;
# Eingangssignal per Empfangsspule aufnehmen&lt;br /&gt;
# Eingangssignal per Operationsverstärker (z.B. LM386) verstärken&lt;br /&gt;
# ADC sampling durch Arduino Mega&lt;br /&gt;
# Signalfilterung and Analyse durch ein digitales Filter (software-basierter Matched-Filter-Algorithmus)&lt;br /&gt;
# Auswertung des matched filter Ergebnisses (zur Feststellung des Aufenthaltbereiches inner- / außerhalb der Schleife, Schleifenabfahren usw.)&lt;br /&gt;
&lt;br /&gt;
Folgende Bilder erklären den Wechsel der Signalpolarität innerhalb und außerhalb der Schleife. Sie zeigen auch die Richtung der magnetischen Flusslinien, die vom Begrenzungsdraht ausgehen und wie sie die Spule innerhalb und außerhalb der Begrenzungsschleife treffen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Ardumower_perimeter2.jpg| Innen/außen-Erkennung über den Polaritätswechsel&lt;br /&gt;
File: Fluxdirections.png| Flussrichtungen&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Signal ==&lt;br /&gt;
Der Schlüssel zu einem guten Empfang des Perimetersignals überall auf dem Rasen ist die Optimierung des Signal-Rausch-Abstandes (SNR=signal/noise ratio). Um das SNR zu maximieren, gibt es zwei Ansätze:&lt;br /&gt;
# Signalstärke hochfahren (elektr. Leistung) oder&lt;br /&gt;
# Erhöhung der Signallänge&lt;br /&gt;
&lt;br /&gt;
Wir nutzen eine Kombination beider Ansätze: der Sender wiederholt ständig einen digitalen Code ('pseudonoise4_pw') mit 9615 Hz :&lt;br /&gt;
&lt;br /&gt;
 1,1,-1,-1,1,-1,1,-1,-1,1,-1,1,1,-1,-1,1,-1,-1,1,-1,-1,1,1,-1&lt;br /&gt;
&lt;br /&gt;
'1' bedeutet einen positiven Signalimpuls, '-1' einen negativen. Der kürzeste erzeugte Signalwechsel ist '-1,1', das entspräche dem höchsten Ton (wenn man es hörbar darstellen würde) von 4808 Hz. Das andere Extrem wäre der längste erzeugte Signalwechsel mit '1,1,-1,-1', bei einer Frequenz von 2404 Hz.&lt;br /&gt;
&lt;br /&gt;
Die Spule erkennt nur diese Signalwechsel des Sendersignals. So - also ohne den Kondensator in Serienschaltung zur Spule - zeigt sich das (differentielle) Empfangssignal wie folgt:&lt;br /&gt;
&lt;br /&gt;
 1,0,-1, 0,1,-1,1,-1, 0,1,-1,1,0,-1, 0,1,-1, 0,1,-1, 0,1,0,-1&lt;br /&gt;
&lt;br /&gt;
Verwendet man jedoch den Kondensator in Reihe zur Spule, sind gesendetes und empfangenes (nicht-differentielles) Signal vom Prinzipverlauf wieder identisch.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Perimeter_signal_steps.png | Perimetersignal an Sender und Empfangsspule&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Arduino ADC wertet das Empfangssignal mit einer Abtastrate von 9615 Hz aus.&lt;br /&gt;
&lt;br /&gt;
== Filter ==&lt;br /&gt;
Die gewählte Signalform weist eine spezielle Charakteristik auf: &lt;br /&gt;
&lt;br /&gt;
Weil es wie ein Zufallssignal aussieht, stimmt es nicht in Teilen mit sich selbst überein, sondern erst als komplette Sequenz ([http://en.wikipedia.org/wiki/Matched_filter Übereinstimmung]). Aufgrund dieser Charakteristik können die Startpunkte der Signalsequenz durch ein [http://en.wikipedia.org/wiki/Matched_filter matched filter] ('Korrelation' mit dem gesuchten Signalmuster) ermittelt werden: sie erscheinen als Nadelimpuls im Filterergebnis - und zwar auch bei einem stark verrauschten Signal (z.B. durch Störimpulse von Motoren etc.). &lt;br /&gt;
Die Polarität der Spitze (positiv oder negativ) gibt an, ob sich die Spule inner- oder außerhalb der Begrenzungsschleife befindet.&lt;br /&gt;
&lt;br /&gt;
Du kannst sehen, wie das funktioniert: für ein tiefergehendes Verständnis des Perimetersignals und des Filters schau Dir folgende Simulation (in englisch) an: &lt;br /&gt;
[http://www.grauonline.de/alexwww/ardumower/filter/filter.html Matched filter simulation]&lt;br /&gt;
&lt;br /&gt;
# Wähle eine Perimetersignalform: setze den Schieberegler (rechts oben 'example signals') auf ''pseudonoise4_pw'' (Wert 23).&lt;br /&gt;
# Hebe den Wert des Störsignal ein wenig an: setze den Schieberegler ('noise') auf den Wert 2.&lt;br /&gt;
# Der Plot 'Matched filter' (links unten) zeigt, dass das wiederholte Signal 3 mal entdeckt wurde.&lt;br /&gt;
# Nun simuliere die Bewegung der Spule aus der Perimeterschleife nach außen:  Klicke auf 'Invert' und setze damit die Verstärkung auf '-1'. Der Filter liefert 3 negative Spitzen.&lt;br /&gt;
&lt;br /&gt;
Mehr dazu unter: [https://www.youtube.com/watch?v=NIer_kITelc Video über matched filter]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
  File: Matched_filter_principle.png| Matched Filter&lt;br /&gt;
  File: Perimeter_signal_good_bad.png|Beispiele für gutes / schlechtes Signal &lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Sender ==&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Schleifensender_Ardumower_V2.JPG | Sender Schaltplan&lt;br /&gt;
File: Ardumower_sender_pcb.jpg| Ardumower Sender PCB&lt;br /&gt;
File: Perimeter2_sender_open.jpg| Sendersignal (6.5V, ohne Perimeterschleife)&lt;br /&gt;
File: Perimeter2_sender_closed.jpg| Sendersignal (6.5V, 120m Perimeterschleife 7 Ohm)&lt;br /&gt;
File: Sender_v2_signal_sender_5v_4ohm.png| Sendersignal (6.5V, 4 Ohm Widerstand + 2m Perimeterschleife)&lt;br /&gt;
File: perimeter_wiring_motor_driver.png | Varianten der Motortreiberschaltung&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wir benutzen einen Arduino Nano zur Erzeugung und einen Mototreiber als Ausgangsverstärker des Signals. Der Motortreiber wird mit 3,2 kHz betrieben (2 Impulsbreiten 4808 und 2404 Hz). Bei ausreichend langen Schleifendrähten benötigt der Generator typischerweise 10W (6.5V, 1.7A). Unser Motortreiber verfügt über eine integrierte Strombegrenzung und eine Übertemperaturabschaltung (z.B. MC33926). Die Schleifenlänge kann im Bereich 20 - 450m betragen und muss mindestens 5 Ohm Widerstand aufweisen.&lt;br /&gt;
&lt;br /&gt;
Sender Pin-Belegung:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;background-color: lightgrey; border: solid thin grey;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 motor driver M1OUT1     o---------- perimeter loop (20-450 meters, &amp;gt; 5 Ohm) --+&lt;br /&gt;
                                                                               |&lt;br /&gt;
 motor driver M1OUT2     o---------- perimeter loop ---------------------------+&lt;br /&gt;
 motor driver Vin        o-- 6.5V&lt;br /&gt;
 motor driver M1IN1      o-- Arduino Nano pinIN1&lt;br /&gt;
 motor driver M1IN2      o-- Arduino Nano pinIN2&lt;br /&gt;
 motor driver M1PWM_nD2  o-- Arduino Nano pinPWM&lt;br /&gt;
 motor driver M1nSF      o-- Arduino Nano pinFault&lt;br /&gt;
 motor driver M1FB       o-- Arduino Nano pinFeedback&lt;br /&gt;
 motor driver EN         o-- Arduino Nano pinEnable&lt;br /&gt;
 motor driver VDD        o-- Arduino +5V&lt;br /&gt;
 motor driver M1D1       o-- GND (via Jumper)&lt;br /&gt;
 motor driver SLEW       o-- VDD (via Jumper)&lt;br /&gt;
 &lt;br /&gt;
               |---------o-- GND&lt;br /&gt;
 Potentiometer 100k -----o-- Arduino Nano pinPot&lt;br /&gt;
               |---------o-- Arduino +5V&lt;br /&gt;
 &lt;br /&gt;
 ACS712-05 OUT ------o-- Arduino Nano pinChargeCurrent    &lt;br /&gt;
 ACS712-05 A   ------o-- charging pin (+)&lt;br /&gt;
 ACS712-05 B   ------o-- battery charger +24V&lt;br /&gt;
 battery charger GND-o-- charging pin (-)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Beispiel für den Senderaufbau mit einer Lochrasterplatine:  [http://www.braunschweiger.org/content/download/SenderR212.pdf] &lt;br /&gt;
[http://www.braunschweiger.org/content/images/SenderR212_Front.jpg] [http://www.braunschweiger.org/content/images/SenderR212_Back.jpg]'''&lt;br /&gt;
&lt;br /&gt;
=== Sender Perimeterschleife und Rasengröße ===&lt;br /&gt;
Bei einer Betriebsspannung von 6.5V sollte die Perimeterschleife nicht über 450 m lang sein. (Für den 'Wohnzimmertest' tut es auch ein 100 Ohm Widerstand in Reihe mit 5m Schaltdraht.) &lt;br /&gt;
&lt;br /&gt;
Setzen wir mal eine kreisrunde Rasenfläche voraus erhalten wir für 450m Schleifenlänge (= Kreisumfang) einen Radius von 70m:&lt;br /&gt;
 radius = Schleifenlänge / (2*PI) = 450m / (2*PI) = 70 meter&lt;br /&gt;
&lt;br /&gt;
Wäre die Signalqualität nicht durch den Radius begrenzt, entspräche der eingegrenzte Rasen einer Fläche von 15000m2:&lt;br /&gt;
 Fläche = PI * (radius*radius) = PI * (70m * 70m) = 15000 m2&lt;br /&gt;
&lt;br /&gt;
Da jedoch der maximale Radius für ausreichende Signalqualität bei ca. 18m liegt, ergibt sich die maximale Rasenfläche (Annahme immer noch: Kreisfläche!) zu 1000m2: Fläche = PI * (radius*radius) = PI * (18m * 18m) = 1000 m2&lt;br /&gt;
&lt;br /&gt;
=== Einstellung der Senderstromstärke ===&lt;br /&gt;
Zur Einstellung der Sendeleistung (Spannung*Strom) gibt es verschiedene Möglichkeiten:&lt;br /&gt;
&lt;br /&gt;
*Spannung am DC/DC-Wandler: die Versorgungsspannung des Motortreibers kann über das Poti des Wandlers zwischen 6.5 bis 12V eingestellt werden. Das ist der empfohlene Weg. Beachte: der MC33926 Motortreibermotor benötigt eine Mindestspannung (Vin) von 5V. Bei zu geringer Spannung regelt der Motortreiber sporadisch ab und die Arduino-LED zur Anzeige von Unterspannung fängt an zu blinken.&lt;br /&gt;
&lt;br /&gt;
*Normale Amplitude: statt die Perimeterschleife zwischen +Vin und -Vin (doppelte Amplitude ist Standardwert) umzuschalten, kann der Motortreiber auch nur zwischen +Vin und GND (einfache Amplitude). So zieht die Schleife weniger Strom. Zur Einstellung der einfachen Amplitude muß die entsprechende Codezeile in 'sender.ino' auskommentiert werden:&lt;br /&gt;
&lt;br /&gt;
  // #define USE_DOUBLE_AMPLTIUDE    1   &lt;br /&gt;
&lt;br /&gt;
*Hochlastwiderstand: Bei einem Schleifenwiderstand kleiner 5 Ohm kann der Strom nicht weiter reduziert werden, indem man die Spannung runterdreht: unterhalb von ca. 6V arbeitet der Arduino nicht mehr richtig. Dann hilft nur noch ein zur Schleife in Reihe geschalteter Hochlastwiderstand (R: z.B. 5 Ohm, 10W). &lt;br /&gt;
&lt;br /&gt;
 @6V (Vin): 5 ohm Hochlastwiderstand =&amp;gt; I=U/R=6V/5Ohm=1.2A   (P=U*I=6V*1.2A=7.2W)&lt;br /&gt;
&lt;br /&gt;
Daher also die mindestens 10W Belastbarkeit des Widerstandes! In diesem Falle auch die 'einfache Amplitude' im Sendercode aktivieren (doppelte Amplitude nicht benutzen!).&lt;br /&gt;
&lt;br /&gt;
=== Senderstromüberwachung (in Entwicklung) ===&lt;br /&gt;
Idee: das Poti VR1 wird durch ein digitales Poti (z.B. MCP4151-5K) ersetzt. So kann die Vin des Motortreibers (und damit auch der Strom) über den Arduino eingestellt werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Lm2596_circuit.jpg | LM2596 Modulschaltplan&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
MCP4151-5K version:&lt;br /&gt;
&lt;br /&gt;
 Vout = 1.23V*(1+VR1/R1)&lt;br /&gt;
&lt;br /&gt;
 Using VR1=5K...&lt;br /&gt;
 Vstart (on reset):  Vout=1.23V*(1+2.5K/0.33K)=10v&lt;br /&gt;
 Vmax:  Vout=1.23V*(1+5K/0.33K)=19v&lt;br /&gt;
&lt;br /&gt;
=== Automatische Schleifensignalabschaltung ===&lt;br /&gt;
Während sich der ArduMower in der Ladestation aufhält, wird das Schleifensignal nicht benötigt und wir können Energie sparen. Zum Erkennen des Ladestatus wird ein Stromsensor (ACS712) zwischen Ladegerät und Ladeanschlüsse geschaltet.&lt;br /&gt;
&lt;br /&gt;
Zum aktivieren dieser Funktion ist &amp;quot;#define USE_CHG_CURRENT&amp;quot; auf 1 zu setzen&lt;br /&gt;
&lt;br /&gt;
    #define USE_CHG_CURRENT       1     // use charging current sensor for robot detection? (set to '0' if not connected!)&lt;br /&gt;
&lt;br /&gt;
Desweiteren muss der Stromsensor am analogen Eingang A2 kalibriert werden:&lt;br /&gt;
&lt;br /&gt;
* Der Mover befindet sich nicht in der Ladestation/ Ladestrom = 0 Ampere&lt;br /&gt;
* Den seriellen Monitor aufrufen&lt;br /&gt;
* In der Befehlszeile 1 eingeben und Button &amp;quot;Senden&amp;quot; drücken&lt;br /&gt;
* Mit diesem Befehl wird die Spannung am analogen Eingang A2 gemessen und im EEPROM als Referenzwert &amp;quot;chargeADCZero&amp;quot; gespeichert&lt;br /&gt;
* Am Monitor erscheint folgender Text:&lt;br /&gt;
&lt;br /&gt;
    received key=1&lt;br /&gt;
    calibrateChargeCurrentSensor (note: robot must be outside charging station!)&lt;br /&gt;
    calibration done&lt;br /&gt;
    chargeADCZero=755&lt;br /&gt;
&lt;br /&gt;
Die Kalibrierung ist damit erfolgt. Bei den weiteren Messungen wird im seriellen Monitor unter &amp;quot;chgCurrentADC&amp;quot; der Wandlerwert des analogen Eingangs A2 angezeigt:&lt;br /&gt;
&lt;br /&gt;
    time=4	chgCurrent=0.000	chgCurrentADC=755.55	 isCharging=0&lt;br /&gt;
&lt;br /&gt;
Wir simmulieren einen Ladevorgang durch Belastung der Ladebuchse durch einen 22 Ohm Widerstand. Es fließt ein Ladestrom von ca. 0,8 Ampere. Damit ändert sich der &amp;quot;chgCurrentADC&amp;quot; auf 734.63&lt;br /&gt;
&lt;br /&gt;
    time=8	chgCurrent=-0.023	chgCurrentADC=734.63	isCharging=1	&lt;br /&gt;
&lt;br /&gt;
Das Flag &amp;quot;ischarging&amp;quot; wird auf &amp;quot;1&amp;quot; gesetzt und die Perimeterschleife wird für die Dauer der Ladung abgeschaltet.&lt;br /&gt;
&lt;br /&gt;
Dies funktioniert auch mit einem Stromsensor ACS 712-5 oder ACS 712-20.&lt;br /&gt;
&lt;br /&gt;
=== Sendersoftware ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;NOTE&amp;lt;/b&amp;gt;: Wenn Du Dich nie zuvor mit Arduino beschäftigt hast, lies zuerst unsere Einführung &amp;lt;b&amp;gt;[http://wiki.ardumower.de/index.php?title=Arduino_first_steps 'erste Schritte mit dem Arduino']&amp;lt;/b&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[File:warning.png]] Wichtig: Vergewissere Dich, dass die Pin-Konfiguration des Arduino im benutzten Code (sender.ino) mit Deinem Senderaufbau übereinstimmt!&lt;br /&gt;
&lt;br /&gt;
Im Code (sender.ino) die passende Option für die automatische Schleifenabschaltung (bei Verwendung des oben beschriebenen Stromsensors Option 1) wählen:&lt;br /&gt;
&lt;br /&gt;
* Define if you have connected a charging current sensor for automatic sender standby:   #define USE_CHG_CURRENT 1   (or 0)&lt;br /&gt;
&lt;br /&gt;
=== Sender Zustandsanzeige ===&lt;br /&gt;
Die LED auf dem Arduino Nano signalisiert den Senderstatus:&lt;br /&gt;
* An: Perimeterschleife ist angeschlossen und arbeitet&lt;br /&gt;
* Aus: Perimeterschleife ist geöffnet (oder durch Defekt unterbrochen) und arbeitet nicht&lt;br /&gt;
* Blinkt: der ArduMower wird geladen und die Perimeterschleife ist zur Energieeinsparung durch die Software deaktiviert&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File:Perimeter_sender_console.png | Ausgabe 'sender.ino' über serielle Konsole&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Sendertest per PC-Soundkarte ===&lt;br /&gt;
Du kannst den Sender mit Deine Soundkarte und einer Spule testen:&lt;br /&gt;
&lt;br /&gt;
# Verbinde eine Spule (100 mH) mit dem Mikrofon-/Line-Eingang (max 1V) Deiner Soundkarte &lt;br /&gt;
# Starte das [http://www.grauonline.de/alexwww/ardumower/oscilloscope/oscilloscope.html Web-Oszilloskop], und wähle Filter 'Matched', Frequenz '9615' Hz, Visualization Math 'MinMax'&lt;br /&gt;
# Das Ausgangssignal sollte den Abstand zur Perimeterschleife wiederspiegeln - die Polarität (negativ/positiv) zeigt den Aufenthaltsbereich (innerhalb/außerhalb) der Schleife.&lt;br /&gt;
&lt;br /&gt;
Versuche in beiden Fällen (innen/außen), die Spule so dicht wie möglich an der Schleife zu positionieren, um ein auswertbares Signal zu empfangen (zur Erinnerung: wir arbeiten hier ohne die Signalverstärkung durch den Operationsverstärker, da der Soundkarteneingang nur mit max 1V beaufschlagt werden darf).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File:Ardumower_web_oscilloscope_time_signal_received.jpg | Effektivwert des empfangenen Zeit-Signals (Filter Off, Time scale: x5)&lt;br /&gt;
File:Ardumower_web_oscilloscope_time_signal.jpg | Ideales Zeitsignal erzeugt vom Sender (Filter Off, Time scale: x5)&lt;br /&gt;
File:Ardumower_web_oscilloscope.jpg  | Matched Filter Signal (Frequency: 9615 Hz, Math: MinMax)&lt;br /&gt;
File:Perimeter_signal_good_bad.png | Beispiel für gutes / schlechtes Signal&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://www.youtube.com/watch?v=vg5Xg0__66A Video zur Erklärung aller Schritte]&lt;br /&gt;
&lt;br /&gt;
== Empfänger ==&lt;br /&gt;
&lt;br /&gt;
Zum Signalempfang verwenden wir eine Spule (100 mH or 150 mH, nur für die älteren Softwareversionen wird ein Kondensator 4.7nF mit der Spule in Reihe geschaltet) in aufrechter Position, in der Mitte am vorderen Rand des ArduMower. Sie ist zur Verstärkung des empfangenen Signals mit dem Eigang eines LM386 Operationsverstärkers verbunden. Auf dem LM386 Modul wird der Kondensator C3 überbrückt, damit der Verstärker ein Signal zwischen 0..5V statt im Standardbereich -5V..+5V) liefert. Der Ausgang des LM386 sollte mit dem Arduino Analog-Pin ('pinPerimeterLeft') verbunden werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt; &lt;br /&gt;
 File: Perimeter_v2_receiver_circuit.png | Empfängerschaltkreis und überbrückter Kondensator C3&lt;br /&gt;
 File: Ardumower_chassis_components.png | Position der Perimeterspule&lt;br /&gt;
 File: Ardumower_coil_position.jpg | Eine zentrierte, aufrecht montierte Spule &lt;br /&gt;
 File: Ardumower_lm386_circuit.png | LM386 Modul Schaltplan&lt;br /&gt;
 File: Tire_coil_distance.jpg | Abstand Spule-Rad: Einfluß auf den Wendekreis (Kurvenwinkel)&lt;br /&gt;
 File: Coil_motor_layout.png | Zwei Spulen (experimentell), Abstand Spule-Spule Hinterradantrieb 12.5cm, Frontantrieb 19cm&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Empfängerschaltplan:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;background-color: lightgrey; border: solid thin grey;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
                                      LM386 IN  o------- capacitor 4.7nF ----------- coil 100 mH  (or 150 mH)&lt;br /&gt;
 Arduino pinPerimeterLeft   o------o  LM386 OUT&lt;br /&gt;
                                      LM386 GND o----------------------------------- coil&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Achtung''': Die Spule muss direkt an den Verstärkermodul angeschlossen werden. So wird die Störfestigkeit des schwachen Spulensignals gegenüber Einflüssen anderer Komponenten (Motore, DC-DC-Wandler) verbessert. &lt;br /&gt;
&lt;br /&gt;
'''Differentielles Signal''': Die aktuelle Software erfordert das Weglassen des Kondensators 4.7nF in Reihe mit der Spule. &lt;br /&gt;
&lt;br /&gt;
'''Nicht-differentielles Signal''': Mithilfe des Kondensators (4.7 nF) wird das Sendersignal wieder rekonstruiert (s. Abschnitt Signal), der Empfängeschaltkreis ist ein Schwingkreis (C und L und Perimeterschleife fungiert als Antenne) und alle Parameter (C, L, Schleifendrahtlänge) müssen übereinstimmen. Weil dies die Abstimmung schwierig macht, empfehlen wir das nicht-differentielle Signal nicht!&lt;br /&gt;
&lt;br /&gt;
=== Abstand Spule/Verstärker zu Motoren ===&lt;br /&gt;
Achte auf die Einhaltung aller Mindestabstände zwischen den folgenden Komponenten:&lt;br /&gt;
 * Spule zu Radmotor: &amp;gt; 15cm&lt;br /&gt;
 * Spule zu Mähmotor: &amp;gt; 10cm &lt;br /&gt;
 * Spule zu DC-DC Wandler: &amp;gt; 10cm&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
 File: Dcdc_noise.jpg | Achtung: Halte Spule/Vorverstärker von den DC-DC-Wandlern und Motoren fern!!!&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Signalmessungen ===&lt;br /&gt;
Sender / Spule / LM386 Verstärker Ausgangssignale sollten etwa so aussehen: (witere Details über das Signal s. Abschnitt Signal)&lt;br /&gt;
&amp;lt;gallery&amp;gt; &lt;br /&gt;
 File: Perimeter_signal_steps.png | Perimetersignal an Sender, Empfangsspule und LM386 (Theorie)&lt;br /&gt;
 File: coil_signal_without_capacitor.png | differentielles Signal / Spulensignal ohne Kondensator (5V sender, 5 Ohm Schleife - blau: Perimeter, gelb: Spule, grau: LM386 Verstärkerausgang)&lt;br /&gt;
 File: Lm_output_dc_noise.jpg | LM386 Ausgang mit DC Störungen (differentielles Signal / Spule ohne Kondensator)&lt;br /&gt;
 File: Perimeter2_receiver_coil.jpg | LM386 Ausgang (nicht-differentielles Signal / Spule mit Kondensator, 12V Sender, 120m Schleife)&lt;br /&gt;
 File: coil_signal_with_capacitor.png | nicht-differentielles Signal / Spulensignalmit Kondensator (5V Sender, 5 Ohm Schleife - grau: Perimeter, gelb: Spule, blau: LM386 Verstärkerausgang)&lt;br /&gt;
 File: Lm_output_motor_noise.jpg | LM386 Ausgang mit Störungen durch Motoren (differentielles Signal / Spule ohne Kondensator)&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Signal und Rauschmessungen ===&lt;br /&gt;
Einige Spulenmessungen ohne Verstärker aber mit Störungen (Motoren, DC/DC-Wandler etc.): &lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
 File: Coil_60k_parallel.jpg | Spule und 60 kOhm Parallelwiderstand ohne Störungen (Spulenhintergrund-rauschen Vpp=7 mV)&lt;br /&gt;
 File: Coil_dc_converter_noise.jpg | Spule und 60 kOhm Parallelwiderstand mit Störungen durch DC/DC-Wandler (DC/DC-Rauschen Vpp=18 mV)&lt;br /&gt;
 File: Coil_motor_noise.jpg | Spule und 60 kOhm Parallelwiderstand mit Störungen durch Motoren&lt;br /&gt;
 File: Perimeter2_receiver_coil_pwm.jpg | Spulensignal mit seriellem 4.7nF Kondensator, PWM-Perimetersignal (nicht empfohlen) ohne Störungen&lt;br /&gt;
 File: Fft_signal.png | FFT Signal&lt;br /&gt;
 File: Fft_motors.png | FFT Motor-Störungen&lt;br /&gt;
 File: Fft_dcdc.png | FFT DC/DC-Störungen&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ADC-Kalibrierung am Empfänger ===&lt;br /&gt;
[[File:warning.png]] Die ADC-Kalibrierung (bei ausgeschaltetem Sender!) sorgt für eine korrekte Erkennung der Nulllinie (Stille), sodass das empfangene Signal später symmetrisch zur Nulllinie angezeigt wird.&lt;br /&gt;
# Der Perimetersender und die Motoren des ArduMower müssen während der Kalibrierung ausgeschaltet sein!&lt;br /&gt;
# Wenn eine Störung durch einen anderen Sender nicht zu vermeiden ist, muß während der Kalibrierung die Spule entfernt und der Eingang es LM386 mit GND verbunden werden.&lt;br /&gt;
# Führe die ADC-Kalibrierung einmal aus (&amp;quot;pfodApp-&amp;gt;ADC Calibration&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Nach der korrekt durchgeführten Kalibrierung sollte das Signal per pfodApp Plot ('sig') bei ausgeschaltetem Perimetersender ungefähr als Null angezeigt werden. Nach Einschalten des Perimetersenders sollte das Signal etwa diesselbe positive wie negative Maximalamplitude ('Symmetie zur Nulllinie') aufweisen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
 File: perimeter_v2_sig_symmetric.jpg | symmetrisches Signal bei eingeschaltetem Sender (nach ADC-Kalibrierung)&lt;br /&gt;
 File: perimeter_v2_sender_off.jpg | Nullsignal bei ausgeschaltetem Sender (nach ADC-Kalibrierung)&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Problemanalyse und Fehlerbehebung am Empfänger ===&lt;br /&gt;
&lt;br /&gt;
Empfangenes Signal, Filterergebnis und Signalqualität können per Android Handy über die pfodApp-&amp;gt;Plot-&amp;gt;Perimeter angezeigt werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
 File: Perimeter_snr.png | Signal-Rausch-Verhältnis (SNR)&lt;br /&gt;
 File: Perimeter_signal_38khz.png | Signal, Filterergebnis, LP Filterergebnis, innen/außen, Ereigniszähler, Signal ein/aus, Signalqualität&lt;br /&gt;
 File: Perimeter_plot_moving_from_inside_to_outside.png | Fahren von innen nach außen&lt;br /&gt;
 File: Perimeter_v2_plot.png&lt;br /&gt;
 File: Perimeter_v2_plot_new.png&lt;br /&gt;
 File: Ardumower_perimeter2_test.jpg&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Beschreibung der im Plot angezeigten Signalverläufe:&lt;br /&gt;
 sig:  Spulensignal (Sequenz der Rohimpulse nach ADC) als kurzer Snapshot (32 samples), Update alle 20 Sekunden &lt;br /&gt;
       (also 20 Sekundenwarten bis zum nächsten Snapshot)&lt;br /&gt;
 mag:  Filterergebnis: innen (negativ) oder außen (positiv), magnitude: Abstand zur Perimeterschleife / magnetische Signalstärke (RSSI)&lt;br /&gt;
       - wird benutzt zum &amp;lt;b&amp;gt;Perimeter verfolgen&amp;lt;/b&amp;gt;&lt;br /&gt;
 smag: Filterergebnis, low-pass-gefiltert, ohne Vorzeichen (geglätteter mag-Verlauf) - verwendet zur Erkennung des &amp;lt;b&amp;gt;'Sender-aus' Zustandes&amp;lt;/b&amp;gt;&lt;br /&gt;
       Der Grenzwert kann über die pfodApp gesetzt werden (Settings-&amp;gt;Perimeter-&amp;gt;Timed-out if below smag)&lt;br /&gt;
 in:   binäres Ergebnis des low-pass Filters: innerhalb (1) oder außerhalb (0) der Perimeterschleife - wird benutzt zur &amp;lt;b&amp;gt;Erkennung des Perimetergrenzverlaufs&amp;lt;/b&amp;gt;&lt;br /&gt;
       Ist der ArduMower eine bestimmte Zeit außerhalb der Schleife, geht er in den Fehlerstatus. Diese Zeit kann per pfodApp&lt;br /&gt;
       (Settings-&amp;gt;Perimeter-&amp;gt;Timeout (s) if not inside) eingestellt werden&lt;br /&gt;
 cnt:  Anzahl der Wechsel von innen nach außen (counter, Zähler)&lt;br /&gt;
 on:   Perimetersender ist aktiv (1) oder inaktiv (0), basiert auf der Auswertung des smag Ergebnisses&lt;br /&gt;
 qty:  &amp;lt;b&amp;gt;Signalqualität&amp;lt;/b&amp;gt; (Aussage über die Verläßlichkeit der Erkennung 'innerhalb / außerhalb' aus dem Filterergebnis)&lt;br /&gt;
       Verhältnis aus Vergleich mit Mustersignal zu Vergleich mit inversem Mustersignal              &lt;br /&gt;
       1.0 bedeutet schlechte Qualität, Du solltest Werte von 1.5 oder höher)&lt;br /&gt;
&lt;br /&gt;
Im Plot soll der 'mag'-Verlauf frei von Spitzen sein: innerhalb der Schleife sollte das Signal eine negative Kurve, außerhalb eine positive Kurve beschreiben. Weist die Kurve Spitzen auf, versuche folgende Maßnahmen zur Fehlerbeseitigung bzw. Optimierung:&lt;br /&gt;
&lt;br /&gt;
* Benutze immer einen ausreichend langen und korrekt abgerollten Schleifendraht (20m oder länger). Benutze niemals einen zu kurzen (Mindestwiderstand 5 Ohm!) oder gar aufgerollten Draht. &lt;br /&gt;
* Für den 'Wohnzimmertest' sollte ein 100 Ohm Widerstand in Reihe mit 5m Draht bei 6V seine Aufgabe erfüllen.&lt;br /&gt;
* Verbinde die Empfangsspule mit 'pinPerimeterLeft' auf dem PCB (am falschen Pin könnte das Signal 'etwas schwach' reinkommen)&lt;br /&gt;
* Die Spulenpolung kann per pfodApp eingestellt werden (wird 'außen' angezeigt, wenn der Ardumower sich innrhalb der Schleife befindet?). Denselben Effekt hat das Umklemmen der Schleifenenden am Senderausgang.&lt;br /&gt;
* Sollte das Signal schwach erscheinen, überprüfen, ob am Spulenverstärker das Poti &amp;quot;voll aufgedreht&amp;quot; ist! Hilfreich ist die gleichzeitige Anzeige des Signal per pfodApp (Plot --&amp;gt; Perimeter).&lt;br /&gt;
* Die Kabelverbindung zwischen Spule und LM386-Vorverstärker muss möglichst kurz sein - am Besten die Spule direkt am Verstärker anschließen!&lt;br /&gt;
* Halte den Abstand zwische Spule und Motoren sowie DC/DC-Wandlern möglichst groß (30cm oder mehr!)&lt;br /&gt;
* Nutze die magnetische Abschirmwirkung (z.B. Deines Akkus) zwischen Spule und Störquellen.&lt;br /&gt;
* Einstellen der Senderspannung: bei längeren Perimeterschleifen (&amp;gt;80m) die Spannung höher wählen (Potentiometer DC/DC-Wandler), bei kürzeren Schleifen (&amp;gt;25m) eher niedriger (anstreben einer Sendeleistung = Spannung * Strom von ca 10W)&lt;br /&gt;
* Versuche bei laufenden Motoren die Spule leicht zu einer Seite zu neigen um die Signalqualität 'qty' zu erhöhen.&lt;br /&gt;
&lt;br /&gt;
== Messungen ==&lt;br /&gt;
&lt;br /&gt;
Zum Vergleich Beispielwerte, gemessen an verschiedenen, im Gelände getesteten Kombinationen von Sender-/Empfänger-/Schleifenparametern:&lt;br /&gt;
&lt;br /&gt;
1) 120m (0.7mm^2), R=4 Ohm, 6.5V, Spule Vpp 20mV&lt;br /&gt;
 Störsignalpegel (max): smag=192&lt;br /&gt;
 Signal (min): smag=254&lt;br /&gt;
 SNR=Signal/Störsignal=254/192=1.3&lt;br /&gt;
&lt;br /&gt;
2) 30m (0.7mm^2), R=1.0 Ohm (+4 Ohm series R), 6.5V, Spule Vpp 120 mV&lt;br /&gt;
 Störsignalpegel (max): smag=192&lt;br /&gt;
 Signal (min): smag=896&lt;br /&gt;
 SNR=Signal/Störsignal=896/192=4.6&lt;br /&gt;
&lt;br /&gt;
=== Videos ===&lt;br /&gt;
#[http://www.youtube.com/watch?v=FL6K98B2Zsk&amp;amp;feature=player_detailpage#t=265 Perimeter2 Demo]&lt;br /&gt;
#[https://www.youtube.com/watch?v=QCA6Dm3rs3M Test 120m Perimeterschleife]&lt;br /&gt;
#[https://www.youtube.com/watch?v=NIer_kITelc Theorie zu Perimeterschleife und Matched Filter (in deutsch)]&lt;br /&gt;
#[https://www.youtube.com/watch?v=VxJN2xb55dU&amp;amp;feature=youtu.be Sender-PCB]&lt;br /&gt;
&lt;br /&gt;
= Verfolgung der Begrenzungsschleife =&lt;br /&gt;
&lt;br /&gt;
Das Abfahren der Schleife wird über einen softwareseitig realisierten digitalen PID-Regler gesteuert. Die Regler-Parameter (P,I,D) können über ein Android-Handy per pfodApp eingestellt werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Ardumower_perimeter_pid.jpg&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mehr Informationen über PID-Regler sind hier zu finden: &lt;br /&gt;
[http://www.ardumower.de/index.php/de/forum/anleitungen-hilfe/121-pid-regelung-fuer-drehzahl-drehung-etc-richtig-einstellen Forum].&lt;br /&gt;
&lt;br /&gt;
= Sensor Signalfusion =&lt;br /&gt;
Das Magnetfeld der Perimeterschleife könnte man als Input für eine [http://wiki.ardumower.de/index.php?title=Sensor_fusion zur Positionsbestimmung des ArduMower nutzen].&lt;br /&gt;
&lt;br /&gt;
= Weiterführende Links =&lt;br /&gt;
#[http://www.ardumower.de/index.php/en/forum/schleifensensoren-generator/83-ir-bake-generator-empfaenger-diy Ein anderer Navigationsansatz sind Infrarot-Baken]&lt;br /&gt;
#[http://grauonline.de/wordpress/?page_id=364 Mehr Details zum 'matched filter']&lt;br /&gt;
#[http://www.grauonline.de/alexwww/ardumower/oscilloscope/oscilloscope.html Soundkarten-Oszilloskop inklusive 'matched filter']&lt;br /&gt;
&lt;br /&gt;
= Perimeter V1 (für alten Code V0.9.3, nicht mehr empfohlen) =&lt;br /&gt;
&lt;br /&gt;
Dies war die erste Version unseres Perimetersenders und Empfängers. Sie wies einige Nachteile auf (Orientierungsfehler, Keine 'Sender-aus'-Erkennung, keine Möglichkeit zur Feststellung des Aufenthaltsbereiches inner-/außerhalb der Schleife), so dass der Einsatz nicht weiter empfohlen wird. Benutze die Nachfolgeversion V2, wie oben beschrieben.&lt;br /&gt;
&lt;br /&gt;
== Sender ==&lt;br /&gt;
Du kannst den Sender eines kommerziellen Rasenmäroboters nutzen (der hier gezeigte Sender ist kompatibel mit Tianchen oder Rotenbach Mährobotern), oder Du baust Dir selber einen:&lt;br /&gt;
&lt;br /&gt;
Ein Arduino (z.B. Nano) generiert ein Rechtecksignal, welches die Polarität eines Motortreibers (L298N) mit 7.8 Khz schaltet. Dadurch wechselt das Ausgangssignal zwischen Vcc und GND. Ein Schwingkreis verstärkt die Signalspitzen (Resonanzfrequenz ist dieselbe wie die Schaltfrequenz - 7.8 Khz). So reicht es aus, den Motortreiber mit 5V (statt 12V) zu betreiben. Die Spannungsquelle muß etwa 2W (400mA bei 5V) leisten. &lt;br /&gt;
Ein Teil des Signals wird durch den Arduino (ADC) durch eine Diode und einen Spannungsteiler erfaßt. So kann festgestellt werden, ob die Perimeterschleife angeschlossen ist. Durch den Schleifendraht fließt ein Strom von ca. 150mA (Drahtquerschnitt 2-3 mm^2, Länge max 500 m)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Arduino_perimeter_sender.png ‎&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Weil man vielleicht nicht immer die genau passende Empfängespule zur Hand hat, hier ein paar mögliche Kombinationen (Spule / Kondensator), die die Resonanzfrequenz von 7.8 Khz aufweisen:&lt;br /&gt;
*Kombination 1: Spule: 160µH, Kondensator: 3,3µF/50V  (getestet)&lt;br /&gt;
*Kombination 2: Spule 33mH, Kondensator: 12nF (nicht getestet)&lt;br /&gt;
&lt;br /&gt;
==== Stromversorgung ====&lt;br /&gt;
Zur Erzeugung der 5V Spannung wird ein step-down-Wandler (z.B. Module mit LM2596) eingesetzt. Vor dem Einsatz in der Schaltung muß der Wandler auf 5V einjustiert werden. &lt;br /&gt;
&lt;br /&gt;
'''Warnung''' : Lege niemals mehr als 5V auf die Arduino 5V Pins oder Du zerstörst ihn. Deswegen: vorher die Spannung einstellen und kontrollieren!&lt;br /&gt;
&lt;br /&gt;
==== Funktionstest ====&lt;br /&gt;
1. Nach dem Code-Hochladen und Anschliessen der Begrenzungsschleife sollte die Arduino LED an sein. Nun entferne den Schleifendraht und die LED sollte ausgehen.&lt;br /&gt;
&lt;br /&gt;
2. Sollte das nicht so sein, kontrolliere mit einem Voltmeter zum Einen die Spannung zwischen Pin 9 des Arduino und dann die am Motortreiberausgang (OUT_1) jeweils gegen GND - beide sollten eine Gleichspannung  2.5 Volt führen.&lt;br /&gt;
&lt;br /&gt;
3. Hast Du ein Oszilloskop? Dann schließe statt der Begrenzungsschleife das Oszilloskop an den Sender an. Das gemessene Signal sollte folgendermaßen aussehen:&lt;br /&gt;
&lt;br /&gt;
Das Ausgangssignal zeigt eine höhere Ampltude (hohe Spitzenwerte) als das Eingangssignal:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Perimetersignal.jpg|Signal am Senderausgang &lt;br /&gt;
File: Ardumower_perimeter_sender_schematics.png|Grundprinzip des Schwingkreises&lt;br /&gt;
File: Arduino_perimeter_sender_photo.jpg&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Für einen einfachen Empfangstest kannst Du die Empfangsspule direkt ans Oszilloskop anschließen. Das gemessene Signal sollte etwa so  aussehen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Coilsignal.jpg|Signal an der Empfangsspule&lt;br /&gt;
File: Fft.jpg|Signal im Frequenzspektrum, überlagert durch Motorstörungen&lt;br /&gt;
File: Ardumower_perimeter_spectrum_plot.jpg| Anzeige des Frequenzspektrums über pfodApp&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Empfänger ==&lt;br /&gt;
Der Empfänger nutzt zwei Spulen, die rechts und links vorn im ArduMower montiert sind. Die Signalstärke der linken und rechten Spule werden ausgewertet, um sie vergleichen zu können.&lt;br /&gt;
&lt;br /&gt;
Prinzip:&lt;br /&gt;
# Verstärkung der alternierenden Signale per OPAMP&lt;br /&gt;
# Optional: Bandpass-Filterung zum Ausblenden der Störungen durch Motore etc.&lt;br /&gt;
# Ermittlung der Signalstärke von linker und rechter Spule&lt;br /&gt;
&lt;br /&gt;
Vorteil dieser Version: analoge Auswertungfunktioniert hervorragend.&lt;br /&gt;
Nachteil: Du kannst nicht feststellen, ob Du Dich gerade innerhalb oder außerhalb der Begrenzungsschleife aufhälst, wenn Du nicht jede Überfahrt des Begrenzungsdrahtes mitprotokollierst. Es ist auch nicht möglich festzustellen, ob Du die Begrenzungsschleife im oder gegen den Uhrzeigersinn abfährst.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Arduino_perimeter_receiver.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Eine Spule empfängt das Signal des Senders. Ein Schwingkreis (LC: SPule und Kondensator)verstärkt das empfangene Signal bei einer Resonanzfrequenz von 7.8 kHz. Das Signal wird weiter verstärkt durch eien LM386-Verstärker (hier: Arduino Soundsensor mit Spule statt Mikrofon). Ein Bandpassfilter (digitaler Filter, FFT - Fast Fourier Transformation) läuft auf dem Arduino und filtert die gewünschte Frequenz (7.8 Khz) und erzeugt ein PWM-Signal (Pulsbreite proportional zur Signalstärke). Über einen Tiefpassfilter wird das PWM-Signal in eine Gleichspamnnung gewandelt.&lt;br /&gt;
Beachte: Die Verdrahtung zwischen ist vereinfacht dargestellt - Details der Verdrahtung s. Schaltplan.&lt;br /&gt;
&lt;br /&gt;
Wir haben folgende Kombinationen von Spulen und Verstärkern getestet:&lt;br /&gt;
&lt;br /&gt;
'Arduino Soundsensor'&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Soundsensor.jpg| Signalverstärkung über LM386 - Arduino Soundsensor mit Spule statt Mikrofon&lt;br /&gt;
File: YwRobot_Sensor.jpg |Arduino Soundsensor mit LM386&lt;br /&gt;
File: YwRobot_circuit.png |Arduino Soundsensor Modulschaltplan&lt;br /&gt;
File: Coil_85mh.jpg|85 mH Spule&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
LM386 Verstärker&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Lm386_amplifier.jpg| LM386 Versärker (200-fach)&lt;br /&gt;
File: Lm386_modified.jpg| modifizierter LM386-Verstärker&lt;br /&gt;
File: Ardumower_lm386_circuit.png | LM386 Modulschaltplan&lt;br /&gt;
File: Coil_small.jpg| 104 mH Spule&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wichtig: Bei Verwendung dieses Verstärkers muß der Kondensator C3 überbrückt werden (erzeugt das für den Arduino erforderliche VCC/2 offset). Dies Spule schließt man an &amp;quot;IN&amp;quot; und &amp;quot;GND&amp;quot; an.&lt;br /&gt;
&lt;br /&gt;
'''Beachte''': die Spule unbedingt direkt am Verstärkermodul befestigen. Dies minimiert die Störeinflüsse durch andere Komponenten wie z.B. Motoren auf das schwache Spulensignal.&lt;br /&gt;
=== Funktionstest ===&lt;br /&gt;
# Stelle eine korrekte Funktion des Schleifensenders sicher (wie bereits weiter oben beschrieben).&lt;br /&gt;
# Drehe das Potentiometer des Arduino Soundsensors auf Maximum (gegen den Uhrzegersinn).&lt;br /&gt;
# Lade das Programm auf den Arduino und bewege eine Spule in Richtung des Begrenzungsdrahtes: die LED des Arduino sollte zu blinken beginnen. Halte nun beide Spulen im gleichen Abstand über den Begrenzungsdraht: die LED sollte nun permanent leuchten.&lt;br /&gt;
# Wenn das so nicht funktioniert, öffne die serielle Konsole und  prüfe die Signalwerte.&lt;br /&gt;
&lt;br /&gt;
=== Spulenauswahl ===&lt;br /&gt;
mathematische Näherungsberechnung einer Spule:&lt;br /&gt;
&lt;br /&gt;
 L = 1nH x n² x ((D² / mm² ) / (l / mm))&lt;br /&gt;
 l = Spulenlänge&lt;br /&gt;
 D = Spulendurchmesser&lt;br /&gt;
&lt;br /&gt;
Beispiel: eine Induktion von 85 mH, Durchmesser 10 mm, Länge 40 mm erfordert ca. 5830 Windungen.&lt;br /&gt;
&lt;br /&gt;
Diese Induktivität von 85 mH und ein Kondensator von 4.7 nF führen zu einer Resonanzfrequenz von 7963 Hz.&lt;br /&gt;
&lt;br /&gt;
 f0 = 1 / (2 * PI * sqrt(L * C)) = 1 / (2 * PI * sqrt(0.085 H * 0.0000000047 F)) =  7963 Hz&lt;br /&gt;
&lt;br /&gt;
Weil man vielleicht nicht immer die genau passende Empfängerspule zur Hand hat, hier ein paar mögliche Kombinationen (Spule / Kondensator), die die Resonanzfrequenz von 7.8 Khz aufweisen:&lt;br /&gt;
 Kombination 1: Spule: 85mH, Kondensator: 4.7nF  (getestet)&lt;br /&gt;
 Kombination 2: Spule: 104mH, Kondensator: 4nF (getestet)&lt;br /&gt;
&lt;br /&gt;
=== Anordnung der Spulen ===&lt;br /&gt;
die Spulen sind am Boden des ArduMower so angeordnet, dass sie einen Winkel von 90 Grad einschließen, d.h. jede ist um 45 Grad aus der Längsachse gedreht.&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Ardumower_spulen.jpg| Anordnung der Spulen&lt;br /&gt;
File: L50_coils.jpg | Beispiel (Ambrogio L50)&lt;br /&gt;
File: L50_parcours.jpg | Testparcours&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Messung der Signalstärke ===&lt;br /&gt;
Zum Vergleich von Messungen wurde die Signalstärke bei verschiedenen Schleifenabständen bestimmt. Die Signalsärke (soll heißen: der berechnete ADC-Wert) kann in der Android pfodApp angezeigt werden. Der Abstand (cm) ist der berechnete Wert zwischen Perimeterschleife und Spule (eingebaut im ArduMower).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Perimeter_plot.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Schleifenverlegung ===&lt;br /&gt;
&lt;br /&gt;
Wichtig bei der Schleifenverlegung ist die Vermeidung von scharfen Ecken: Rundungen sind angesagt! Fährt der Ardumower exakt über eine scharfe Ecke, kann er unter Umständen die Schleife nicht mehr orten, da Spule und Schleife fluchten / parallel stehen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Schleifen_blind.jpg  | Nicht empfohlen: ArduMower kann keine scharfen Ecken orten!&lt;br /&gt;
File: Ardumower_coil_signal.png| Wie ändert sich das Sinal, wenn die Spule gedreht wird??&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Videos ===&lt;br /&gt;
#[http://www.youtube.com/watch?v=FGaUSg-uUxk Perimeter Stoptest]&lt;br /&gt;
#[http://www.youtube.com/watch?v=8R8QaffNlJw Perimeter Verfolgungstest]&lt;br /&gt;
#[http://www.youtube.com/watch?v=CftrnetFVYc&amp;amp;feature=youtu.be Test zum Finden und Verfolgen mit L50]&lt;br /&gt;
#[http://www.youtube.com/watch?feature=player_embedded&amp;amp;v=fjuQViS2rHM Test zum Finden und Verfolgen mit Rotenbach]&lt;/div&gt;</summary>
		<author><name>Deejay</name></author>	</entry>

	<entry>
		<id>https://wiki.ardumower.de/index.php?title=Arduino_erste_Schritte&amp;diff=2600</id>
		<title>Arduino erste Schritte</title>
		<link rel="alternate" type="text/html" href="https://wiki.ardumower.de/index.php?title=Arduino_erste_Schritte&amp;diff=2600"/>
				<updated>2015-08-20T17:51:46Z</updated>
		
		<summary type="html">&lt;p&gt;Deejay: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
Wenn du noch nie mit einem Arduino gearbeitet hast, zeigt dir diese  Seite wie du mit dem Arduino beginnst, den du im Ardumower-Shop [https://www.marotronics.de/index.php?k=7 shop] [[File: shopping.png|link=https://www.marotronics.de/index.php?k=7]] kaufen kannst. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Alles was du brauchst, um die folgenden Beispiele auszuführen:&lt;br /&gt;
* Einen Arduino Nano (or Arduino Mega2560)&lt;br /&gt;
* Ein USB-Kabel&lt;br /&gt;
 [[File: Arduino nano usb cable.jpg|300px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;&amp;lt;b&amp;gt;1. Schliesse den Arduino an deinen Computer an&amp;lt;/b&amp;gt;&amp;lt;/h3&amp;gt;&lt;br /&gt;
 verwende ein USB-Kabel und schliesse deinen Arduino Nano oder Arduino Mega wie nachfolgend gezeigt, an den Computer an.&lt;br /&gt;
 &amp;lt;gallery&amp;gt;&lt;br /&gt;
 File: Arduino nano usb connected.jpg|Arduino Nano über USB angeschlossen&lt;br /&gt;
 File: Arduino atmega2560 usb connected.jpg|Arduino Mega 2560 über USB angeschlossen&lt;br /&gt;
 &amp;lt;/gallery&amp;gt;&lt;br /&gt;
 Möglicherweise musst du einen Treiber für den Arduino installieren:&lt;br /&gt;
*  Arduino Nano: Klick hier [http://forum.diamex.de/attachment.php?attachmentid=65&amp;amp;d=1346742303 here] um den Treiber 'FTDI CDM 2.08.24' herunterzuladen&lt;br /&gt;
   Bemerkung: Verwende nicht die neuesten FTDI-Treiber, sie können Fehlfunktionen verursachen. Hier sind die Arbeitsschritte,&lt;br /&gt;
   wie neuere Treiber wieder entfernt werden:&lt;br /&gt;
   1. In Windows, wähle 'Computer-&amp;gt;Eigenschaften-&amp;gt;Erweiterte Systemeinstellungen-&amp;gt;Geräteeinstellungen'&lt;br /&gt;
   2. Setze 'Soll Windows Treiber automatisch installieren?' auf 'Nein'&lt;br /&gt;
   3. Aktiviere 'niemals Treiber über Windows-Update installieren'&lt;br /&gt;
   4. Führe [http://www.ftdichip.com/Support/Utilities.htm CDM Uninstaller] aus.&lt;br /&gt;
   5. Klick 'Add', dann 'Remove Devices'&lt;br /&gt;
   6. Starte deinen Computer neu&lt;br /&gt;
   7. Schliesse Arduino Nano erneut an, nun sollte Windown fragen, ob es einen Treiber installieren soll und du kannst die richtige&lt;br /&gt;
      Treiberversion (2.08.24) auswählen.&lt;br /&gt;
* Bei Verwendung eines Nano-Clons mit einem USB/Serial-Chip der Firma Winchiphead ist der Treiber &amp;quot;CH341SER.ZIP&amp;quot; des Herstellers zu installieren. Den Treiber können Sie [http://wch.cn/download/CH341SER_ZIP.html hier] herunterladen, entpacken und mit dem Befehl „Setup“ installieren. Weitere Informationen dazu in diesem [http://blog.sengotta.net/arduino-nano-wird-nicht-erkannt-was-tun/ Blog]. Damit der Nano in der Arduino-IDE unter Com_xx erkannt wird, muss der integrierte UART über „Start“/“Geräte und Drucker/USB UART“ deaktiviert werden. Eine Deinstallation ist nicht erforderlich.&lt;br /&gt;
*  Arduino Mega 2560: &lt;br /&gt;
   1. Lade die Arduino Entwicklungssoftware herunter (Link im nächsten Abschnitt, unten)&lt;br /&gt;
   2. Wähle die Treiberdatei &amp;quot;arduino.inf&amp;quot;, die sich im Ordner &amp;quot;Drivers&amp;quot; der herunter geladenen Arduino-Software befindet.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;&amp;lt;b&amp;gt;2. Download&amp;lt;/b&amp;gt;&amp;lt;/h3&amp;gt;&lt;br /&gt;
 Klick hier um die Arduino Entwicklungsumgebung (v1.6.5) auf deinen Computer herunter zuladen&lt;br /&gt;
 (Windows Benutzer sollten die 'Installer' Version auf dieser Seite downloaden):&lt;br /&gt;
&lt;br /&gt;
 [[File: Arduino symbol small.jpg |link=http://arduino.cc/en/Main/Software#toc3]]  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;&amp;lt;b&amp;gt;3. Installation&amp;lt;/b&amp;gt;&amp;lt;/h3&amp;gt;&lt;br /&gt;
 Nachdem die Software erfolgreich herunter geladen wurde, intalliere die Arduino-Software auf deinem Computer:&lt;br /&gt;
 Windows-Benutzer doppelklicken auf die Datei ('arduino-1.6.5-windows.exe') im Explorer um die Software zu installieren.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;&amp;lt;b&amp;gt;4. Start&amp;lt;/b&amp;gt;&amp;lt;/h3&amp;gt;&lt;br /&gt;
 Nachdem die Installation komplett ist, wird die Arduino Entwicklungsumgebung (IDE) mit einem Doppelklick auf das 'Arduino'-Symbol&lt;br /&gt;
 auf dem Desktop gestartet.&lt;br /&gt;
&lt;br /&gt;
 [[File: Arduino_start_symbol_small.jpg]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;&amp;lt;b&amp;gt;5. Wähle das Beispiel Blink&amp;lt;/b&amp;gt;&amp;lt;/h3&amp;gt;&lt;br /&gt;
 Nachdem die Arduino-Entwicklungsumgebung gestartet ist, wähle 'Datei -&amp;gt; Beispiele -&amp;gt; Basics -&amp;gt; Blink'. Damit wird&lt;br /&gt;
 das Beispielprogramm 'Blink' geladen.&lt;br /&gt;
&lt;br /&gt;
 [[File: Arduino ide blink example.jpg]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;&amp;lt;b&amp;gt;6. Wähle den richtigen Board-Typ&amp;lt;/b&amp;gt;&amp;lt;/h3&amp;gt;&lt;br /&gt;
 Klicke im Menü 'Werkzeuge-&amp;gt;Platine-&amp;gt;Arduino Nano' um dein Arduino Nano-Board auszuwählen &lt;br /&gt;
 (oder Arduino Mega 2560 wenn du ein Mega-Board verwenden möchtest). &lt;br /&gt;
&lt;br /&gt;
 [[File: Arduino ide choose board.jpg]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;&amp;lt;b&amp;gt;7. Wähle den richtigen USB-Port aus&amp;lt;/b&amp;gt;&amp;lt;/h3&amp;gt;&lt;br /&gt;
 Klicke im Menü 'Werkzeuge-&amp;gt;Port', und wähle den ermittelte USB-Port aus.&lt;br /&gt;
&lt;br /&gt;
 [[File: Arduino ide choose port.jpg]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;&amp;lt;b&amp;gt;8. Laden der Beispielanwendung 'Blink' auf den Arduino&amp;lt;/b&amp;gt;&amp;lt;/h3&amp;gt;&lt;br /&gt;
 Klicke auf das Symbol 'Hochladen' um das Programm auf deinen Arduino zu laden. &lt;br /&gt;
&lt;br /&gt;
 [[File: Arduino ide upload.jpg]]&lt;br /&gt;
&lt;br /&gt;
 Nachdem der Code hochgeladen wurde, wird die gelbe LED auf dem Arduino anfangen zu blinken!&lt;br /&gt;
&lt;br /&gt;
 [[File: Arduino nano blink example.gif]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;&amp;lt;b&amp;gt;Gratulation!&amp;lt;/b&amp;gt;&amp;lt;/h3&amp;gt;&lt;br /&gt;
 Du hast gerade deinen ersten Arduino programmiert!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;&amp;lt;b&amp;gt;Nun wollen wir uns den Blink-Code etwas genauer anschauen um ihn zu verstehen:&amp;lt;/b&amp;gt;&amp;lt;/h3&amp;gt; &lt;br /&gt;
 Der Arduino hat verschiedene Anschlüsse (Pins). Jeder davon hat eine Nummer. Wie weiter unten gezeigt, ist Pin 13&lt;br /&gt;
 bereits intern mit der 'on-board' LED verbunden:&lt;br /&gt;
&lt;br /&gt;
 [[File: Arduino nano pinout.jpg|300px]]&lt;br /&gt;
&lt;br /&gt;
 Jeder Pin kann entweder als &amp;lt;b&amp;gt;INPUT (Eingang)&amp;lt;/b&amp;gt; oder &amp;lt;b&amp;gt;OUTPUT (Ausgang)&amp;lt;/b&amp;gt; konfiguriert werden, abhängig davon,&lt;br /&gt;
 ob du den Pin messen oder steuern willst: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;background-color: lightgrey; border: solid thin grey;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 INPUT bedeutet, du kannst den Pin lesen (messen). Das Messergebnis kann entweder 'On' (es ist Spannung an dem Pin)&lt;br /&gt;
  or 'Off' (es ist keine Spannung an dem Pin) sein.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;background-color: lightgrey; border: solid thin grey;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 OUTPUT   bedeutet, du kannst die Spannung des Pins schreiben (oder steuern).&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 Im Blink-Beispiel oben verwenden wir den LED-Pin (pin 13) der bereits intern mit einer LED verbunden ist. &lt;br /&gt;
 Weil wir diesen Pin steuern wollen, konfigurieren wir ihn als  &amp;lt;b&amp;gt;OUTPUT&amp;lt;/b&amp;gt;: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;background-color: lightgrey; border: solid thin grey;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 pinMode(13, OUTPUT);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Nun wollen wir sehen, wie wir die LED mit einem Arduino-Befehl ein- (ON) oder ausschalten (Off) können. Dieser Befehl&lt;br /&gt;
 wird die Spannung an Pin 13 einschalten:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;background-color: lightgrey; border: solid thin grey;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 digitalWrite(13, HIGH);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 und logischerweise wird dieser Befehl die Spannung an Pin 13 ausschalten:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;background-color: lightgrey; border: solid thin grey;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 digitalWrite(13, LOW);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 Jetzt sehen wir, wie wir zwischen dem Umschalten von ON auf OFF 1s warten können. Dieser Befehl wird für&lt;br /&gt;
 1s (=1000 Millisekunden) warten, das Programm anhalten:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;background-color: lightgrey; border: solid thin grey;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 delay(1000);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 So, schauen wir uns das komplette Blink-Programm noch einmal an:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;background-color: lightgrey; border: solid thin grey;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 void setup(){&lt;br /&gt;
   pinMode(13, OUTPUT);      // wir wollen pin 13 steuern &lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 void loop(){&lt;br /&gt;
   digitalWrite(13, HIGH);   // pin 13 geht auf HIGH (Spannung ON)&lt;br /&gt;
   delay(1000);              // warte 1s(=1000 milliseconds)&lt;br /&gt;
   digitalWrite(13, LOW);    // pin 13 geht auf LOW (Spannung OFF)&lt;br /&gt;
   delay(1000);              // warte 1s (=1000 milliseconds)&lt;br /&gt;
   // ...nun wird alles wiederholt                           &lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;&amp;lt;b&amp;gt;Wie geht es weiter...&amp;lt;/b&amp;gt;&amp;lt;/h3&amp;gt;&lt;br /&gt;
 Nun kannst du versuchen, den Ardumower-Code [http://wiki.ardumower.de/index.php?title=Ardumower_PCB Ardumower code]&lt;br /&gt;
 auf die gleiche Weise wie das Blink-Programm hochzuladen!&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;nbsp;&lt;br /&gt;
 &amp;amp;nbsp;&lt;br /&gt;
 &amp;amp;nbsp;&lt;br /&gt;
 &amp;amp;nbsp;&lt;br /&gt;
 &amp;amp;nbsp;&lt;/div&gt;</summary>
		<author><name>Deejay</name></author>	</entry>

	<entry>
		<id>https://wiki.ardumower.de/index.php?title=Arduino_erste_Schritte&amp;diff=2599</id>
		<title>Arduino erste Schritte</title>
		<link rel="alternate" type="text/html" href="https://wiki.ardumower.de/index.php?title=Arduino_erste_Schritte&amp;diff=2599"/>
				<updated>2015-08-20T17:49:23Z</updated>
		
		<summary type="html">&lt;p&gt;Deejay: Nano-Clon mit einem USB/Serial-Chip der Firma Winchiphead&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
Wenn du noch nie mit einem Arduino gearbeitet hast, zeigt dir diese  Seite wie du mit dem Arduino beginnst, den du im Ardumower-Shop [https://www.marotronics.de/index.php?k=7 shop] [[File: shopping.png|link=https://www.marotronics.de/index.php?k=7]] kaufen kannst. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Alles was du brauchst, um die folgenden Beispiele auszuführen:&lt;br /&gt;
* Einen Arduino Nano (or Arduino Mega2560)&lt;br /&gt;
* Ein USB-Kabel&lt;br /&gt;
 [[File: Arduino nano usb cable.jpg|300px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;&amp;lt;b&amp;gt;1. Schliesse den Arduino an deinen Computer an&amp;lt;/b&amp;gt;&amp;lt;/h3&amp;gt;&lt;br /&gt;
 verwende ein USB-Kabel und schliesse deinen Arduino Nano oder Arduino Mega wie nachfolgend gezeigt, an den Computer an.&lt;br /&gt;
 &amp;lt;gallery&amp;gt;&lt;br /&gt;
 File: Arduino nano usb connected.jpg|Arduino Nano über USB angeschlossen&lt;br /&gt;
 File: Arduino atmega2560 usb connected.jpg|Arduino Mega 2560 über USB angeschlossen&lt;br /&gt;
 &amp;lt;/gallery&amp;gt;&lt;br /&gt;
 Möglicherweise musst du einen Treiber für den Arduino installieren:&lt;br /&gt;
*  Arduino Nano: Klick hier [http://forum.diamex.de/attachment.php?attachmentid=65&amp;amp;d=1346742303 here] um den Treiber 'FTDI CDM 2.08.24' herunterzuladen&lt;br /&gt;
   Bemerkung: Verwende nicht die neuesten FTDI-Treiber, sie können Fehlfunktionen verursachen. Hier sind die Arbeitsschritte,&lt;br /&gt;
   wie neuere Treiber wieder entfernt werden:&lt;br /&gt;
   1. In Windows, wähle 'Computer-&amp;gt;Eigenschaften-&amp;gt;Erweiterte Systemeinstellungen-&amp;gt;Geräteeinstellungen'&lt;br /&gt;
   2. Setze 'Soll Windows Treiber automatisch installieren?' auf 'Nein'&lt;br /&gt;
   3. Aktiviere 'niemals Treiber über Windows-Update installieren'&lt;br /&gt;
   4. Führe [http://www.ftdichip.com/Support/Utilities.htm CDM Uninstaller] aus.&lt;br /&gt;
   5. Klick 'Add', dann 'Remove Devices'&lt;br /&gt;
   6. Starte deinen Computer neu&lt;br /&gt;
   7. Schliesse Arduino Nano erneut an, nun sollte Windown fragen, ob es einen Treiber installieren soll und du kannst die richtige&lt;br /&gt;
      Treiberversion (2.08.24) auswählen.&lt;br /&gt;
* Bei Verwendung eines Nano-Clons mit einem USB/Serial-Chip der Firma Winchiphead ist der Treiber des Herstellers zu installieren. Den Treiber können Sie [http://wch.cn/downloads.php?name=pro&amp;amp;proid=5 hier] herunterladen, entpacken und mit dem Befehl „Setup“ installieren. Weitere Informationen dazu in diesem [http://blog.sengotta.net/arduino-nano-wird-nicht-erkannt-was-tun/ Blog]. Damit der Nano in der Arduino-IDE unter Com_xx erkannt wird, muss der integrierte UART über „Start“/“Geräte und Drucker/USB UART“ deaktiviert werden. Eine Deinstallation ist nicht erforderlich.&lt;br /&gt;
*  Arduino Mega 2560: &lt;br /&gt;
   1. Lade die Arduino Entwicklungssoftware herunter (Link im nächsten Abschnitt, unten)&lt;br /&gt;
   2. Wähle die Treiberdatei &amp;quot;arduino.inf&amp;quot;, die sich im Ordner &amp;quot;Drivers&amp;quot; der herunter geladenen Arduino-Software befindet.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;&amp;lt;b&amp;gt;2. Download&amp;lt;/b&amp;gt;&amp;lt;/h3&amp;gt;&lt;br /&gt;
 Klick hier um die Arduino Entwicklungsumgebung (v1.6.5) auf deinen Computer herunter zuladen&lt;br /&gt;
 (Windows Benutzer sollten die 'Installer' Version auf dieser Seite downloaden):&lt;br /&gt;
&lt;br /&gt;
 [[File: Arduino symbol small.jpg |link=http://arduino.cc/en/Main/Software#toc3]]  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;&amp;lt;b&amp;gt;3. Installation&amp;lt;/b&amp;gt;&amp;lt;/h3&amp;gt;&lt;br /&gt;
 Nachdem die Software erfolgreich herunter geladen wurde, intalliere die Arduino-Software auf deinem Computer:&lt;br /&gt;
 Windows-Benutzer doppelklicken auf die Datei ('arduino-1.6.5-windows.exe') im Explorer um die Software zu installieren.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;&amp;lt;b&amp;gt;4. Start&amp;lt;/b&amp;gt;&amp;lt;/h3&amp;gt;&lt;br /&gt;
 Nachdem die Installation komplett ist, wird die Arduino Entwicklungsumgebung (IDE) mit einem Doppelklick auf das 'Arduino'-Symbol&lt;br /&gt;
 auf dem Desktop gestartet.&lt;br /&gt;
&lt;br /&gt;
 [[File: Arduino_start_symbol_small.jpg]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;&amp;lt;b&amp;gt;5. Wähle das Beispiel Blink&amp;lt;/b&amp;gt;&amp;lt;/h3&amp;gt;&lt;br /&gt;
 Nachdem die Arduino-Entwicklungsumgebung gestartet ist, wähle 'Datei -&amp;gt; Beispiele -&amp;gt; Basics -&amp;gt; Blink'. Damit wird&lt;br /&gt;
 das Beispielprogramm 'Blink' geladen.&lt;br /&gt;
&lt;br /&gt;
 [[File: Arduino ide blink example.jpg]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;&amp;lt;b&amp;gt;6. Wähle den richtigen Board-Typ&amp;lt;/b&amp;gt;&amp;lt;/h3&amp;gt;&lt;br /&gt;
 Klicke im Menü 'Werkzeuge-&amp;gt;Platine-&amp;gt;Arduino Nano' um dein Arduino Nano-Board auszuwählen &lt;br /&gt;
 (oder Arduino Mega 2560 wenn du ein Mega-Board verwenden möchtest). &lt;br /&gt;
&lt;br /&gt;
 [[File: Arduino ide choose board.jpg]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;&amp;lt;b&amp;gt;7. Wähle den richtigen USB-Port aus&amp;lt;/b&amp;gt;&amp;lt;/h3&amp;gt;&lt;br /&gt;
 Klicke im Menü 'Werkzeuge-&amp;gt;Port', und wähle den ermittelte USB-Port aus.&lt;br /&gt;
&lt;br /&gt;
 [[File: Arduino ide choose port.jpg]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;&amp;lt;b&amp;gt;8. Laden der Beispielanwendung 'Blink' auf den Arduino&amp;lt;/b&amp;gt;&amp;lt;/h3&amp;gt;&lt;br /&gt;
 Klicke auf das Symbol 'Hochladen' um das Programm auf deinen Arduino zu laden. &lt;br /&gt;
&lt;br /&gt;
 [[File: Arduino ide upload.jpg]]&lt;br /&gt;
&lt;br /&gt;
 Nachdem der Code hochgeladen wurde, wird die gelbe LED auf dem Arduino anfangen zu blinken!&lt;br /&gt;
&lt;br /&gt;
 [[File: Arduino nano blink example.gif]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;&amp;lt;b&amp;gt;Gratulation!&amp;lt;/b&amp;gt;&amp;lt;/h3&amp;gt;&lt;br /&gt;
 Du hast gerade deinen ersten Arduino programmiert!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;&amp;lt;b&amp;gt;Nun wollen wir uns den Blink-Code etwas genauer anschauen um ihn zu verstehen:&amp;lt;/b&amp;gt;&amp;lt;/h3&amp;gt; &lt;br /&gt;
 Der Arduino hat verschiedene Anschlüsse (Pins). Jeder davon hat eine Nummer. Wie weiter unten gezeigt, ist Pin 13&lt;br /&gt;
 bereits intern mit der 'on-board' LED verbunden:&lt;br /&gt;
&lt;br /&gt;
 [[File: Arduino nano pinout.jpg|300px]]&lt;br /&gt;
&lt;br /&gt;
 Jeder Pin kann entweder als &amp;lt;b&amp;gt;INPUT (Eingang)&amp;lt;/b&amp;gt; oder &amp;lt;b&amp;gt;OUTPUT (Ausgang)&amp;lt;/b&amp;gt; konfiguriert werden, abhängig davon,&lt;br /&gt;
 ob du den Pin messen oder steuern willst: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;background-color: lightgrey; border: solid thin grey;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 INPUT bedeutet, du kannst den Pin lesen (messen). Das Messergebnis kann entweder 'On' (es ist Spannung an dem Pin)&lt;br /&gt;
  or 'Off' (es ist keine Spannung an dem Pin) sein.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;background-color: lightgrey; border: solid thin grey;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 OUTPUT   bedeutet, du kannst die Spannung des Pins schreiben (oder steuern).&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 Im Blink-Beispiel oben verwenden wir den LED-Pin (pin 13) der bereits intern mit einer LED verbunden ist. &lt;br /&gt;
 Weil wir diesen Pin steuern wollen, konfigurieren wir ihn als  &amp;lt;b&amp;gt;OUTPUT&amp;lt;/b&amp;gt;: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;background-color: lightgrey; border: solid thin grey;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 pinMode(13, OUTPUT);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Nun wollen wir sehen, wie wir die LED mit einem Arduino-Befehl ein- (ON) oder ausschalten (Off) können. Dieser Befehl&lt;br /&gt;
 wird die Spannung an Pin 13 einschalten:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;background-color: lightgrey; border: solid thin grey;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 digitalWrite(13, HIGH);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 und logischerweise wird dieser Befehl die Spannung an Pin 13 ausschalten:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;background-color: lightgrey; border: solid thin grey;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 digitalWrite(13, LOW);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 Jetzt sehen wir, wie wir zwischen dem Umschalten von ON auf OFF 1s warten können. Dieser Befehl wird für&lt;br /&gt;
 1s (=1000 Millisekunden) warten, das Programm anhalten:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;background-color: lightgrey; border: solid thin grey;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 delay(1000);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 So, schauen wir uns das komplette Blink-Programm noch einmal an:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;background-color: lightgrey; border: solid thin grey;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 void setup(){&lt;br /&gt;
   pinMode(13, OUTPUT);      // wir wollen pin 13 steuern &lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 void loop(){&lt;br /&gt;
   digitalWrite(13, HIGH);   // pin 13 geht auf HIGH (Spannung ON)&lt;br /&gt;
   delay(1000);              // warte 1s(=1000 milliseconds)&lt;br /&gt;
   digitalWrite(13, LOW);    // pin 13 geht auf LOW (Spannung OFF)&lt;br /&gt;
   delay(1000);              // warte 1s (=1000 milliseconds)&lt;br /&gt;
   // ...nun wird alles wiederholt                           &lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;&amp;lt;b&amp;gt;Wie geht es weiter...&amp;lt;/b&amp;gt;&amp;lt;/h3&amp;gt;&lt;br /&gt;
 Nun kannst du versuchen, den Ardumower-Code [http://wiki.ardumower.de/index.php?title=Ardumower_PCB Ardumower code]&lt;br /&gt;
 auf die gleiche Weise wie das Blink-Programm hochzuladen!&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;nbsp;&lt;br /&gt;
 &amp;amp;nbsp;&lt;br /&gt;
 &amp;amp;nbsp;&lt;br /&gt;
 &amp;amp;nbsp;&lt;br /&gt;
 &amp;amp;nbsp;&lt;/div&gt;</summary>
		<author><name>Deejay</name></author>	</entry>

	<entry>
		<id>https://wiki.ardumower.de/index.php?title=Arduino_erste_Schritte&amp;diff=2596</id>
		<title>Arduino erste Schritte</title>
		<link rel="alternate" type="text/html" href="https://wiki.ardumower.de/index.php?title=Arduino_erste_Schritte&amp;diff=2596"/>
				<updated>2015-08-19T19:49:25Z</updated>
		
		<summary type="html">&lt;p&gt;Deejay: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
Wenn du noch nie mit einem Arduino gearbeitet hast, zeigt dir diese  Seite wie du mit dem Arduino beginnst, den du im Ardumower-Shop [https://www.marotronics.de/index.php?k=7 shop] [[File: shopping.png|link=https://www.marotronics.de/index.php?k=7]] kaufen kannst. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Alles was du brauchst, um die folgenden Beispiele auszuführen:&lt;br /&gt;
* Einen Arduino Nano (or Arduino Mega2560)&lt;br /&gt;
* Ein USB-Kabel&lt;br /&gt;
 [[File: Arduino nano usb cable.jpg|300px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;&amp;lt;b&amp;gt;1. Schliesse den Arduino an deinen Computer an&amp;lt;/b&amp;gt;&amp;lt;/h3&amp;gt;&lt;br /&gt;
 verwende ein USB-Kabel und schliesse deinen Arduino Nano oder Arduino Mega wie nachfolgend gezeigt, an den Computer an.&lt;br /&gt;
 &amp;lt;gallery&amp;gt;&lt;br /&gt;
 File: Arduino nano usb connected.jpg|Arduino Nano über USB angeschlossen&lt;br /&gt;
 File: Arduino atmega2560 usb connected.jpg|Arduino Mega 2560 über USB angeschlossen&lt;br /&gt;
 &amp;lt;/gallery&amp;gt;&lt;br /&gt;
 Möglicherweise musst du einen Treiber für den Arduino installieren:&lt;br /&gt;
*  Arduino Nano: Klick hier [http://forum.diamex.de/attachment.php?attachmentid=65&amp;amp;d=1346742303 here] um den Treiber 'FTDI CDM 2.08.24' herunterzuladen&lt;br /&gt;
   Bemerkung: Verwende nicht die neuesten FTDI-Treiber, sie können Fehlfunktionen verursachen. Hier sind die Arbeitsschritte,&lt;br /&gt;
   wie neuere Treiber wieder entfernt werden:&lt;br /&gt;
   1. In Windows, wähle 'Computer-&amp;gt;Eigenschaften-&amp;gt;Erweiterte Systemeinstellungen-&amp;gt;Geräteeinstellungen'&lt;br /&gt;
   2. Setze 'Soll Windows Treiber automatisch installieren?' auf 'Nein'&lt;br /&gt;
   3. Aktiviere 'niemals Treiber über Windows-Update installieren'&lt;br /&gt;
   4. Führe [http://www.ftdichip.com/Support/Utilities.htm CDM Uninstaller] aus.&lt;br /&gt;
   5. Klick 'Add', dann 'Remove Devices'&lt;br /&gt;
   6. Starte deinen Computer neu&lt;br /&gt;
   7. Schliesse Arduino Nano erneut an, nun sollte Windown fragen, ob es einen Treiber installieren soll und du kannst die richtige&lt;br /&gt;
      Treiberversion (2.08.24) auswählen.&lt;br /&gt;
*  Arduino Mega 2560: &lt;br /&gt;
   1. Lade die Arduino Entwicklungssoftware herunter (Link im nächsten Abschnitt, unten)&lt;br /&gt;
   2. Wähle die Treiberdatei &amp;quot;arduino.inf&amp;quot;, die sich im Ordner &amp;quot;Drivers&amp;quot; der herunter geladenen Arduino-Software befindet.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;&amp;lt;b&amp;gt;2. Download&amp;lt;/b&amp;gt;&amp;lt;/h3&amp;gt;&lt;br /&gt;
 Klick hier um die Arduino Entwicklungsumgebung (v1.6.5) auf deinen Computer herunter zuladen&lt;br /&gt;
 (Windows Benutzer sollten die 'Installer' Version auf dieser Seite downloaden):&lt;br /&gt;
&lt;br /&gt;
 [[File: Arduino symbol small.jpg |link=http://arduino.cc/en/Main/Software#toc3]]  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;&amp;lt;b&amp;gt;3. Installation&amp;lt;/b&amp;gt;&amp;lt;/h3&amp;gt;&lt;br /&gt;
 Nachdem die Software erfolgreich herunter geladen wurde, intalliere die Arduino-Software auf deinem Computer:&lt;br /&gt;
 Windows-Benutzer doppelklicken auf die Datei ('arduino-1.6.5-windows.exe') im Explorer um die Software zu installieren.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;&amp;lt;b&amp;gt;4. Start&amp;lt;/b&amp;gt;&amp;lt;/h3&amp;gt;&lt;br /&gt;
 Nachdem die Installation komplett ist, wird die Arduino Entwicklungsumgebung (IDE) mit einem Doppelklick auf das 'Arduino'-Symbol&lt;br /&gt;
 auf dem Desktop gestartet.&lt;br /&gt;
&lt;br /&gt;
 [[File: Arduino_start_symbol_small.jpg]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;&amp;lt;b&amp;gt;5. Wähle das Beispiel Blink&amp;lt;/b&amp;gt;&amp;lt;/h3&amp;gt;&lt;br /&gt;
 Nachdem die Arduino-Entwicklungsumgebung gestartet ist, wähle 'Datei -&amp;gt; Beispiele -&amp;gt; Basics -&amp;gt; Blink'. Damit wird&lt;br /&gt;
 das Beispielprogramm 'Blink' geladen.&lt;br /&gt;
&lt;br /&gt;
 [[File: Arduino ide blink example.jpg]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;&amp;lt;b&amp;gt;6. Wähle den richtigen Board-Typ&amp;lt;/b&amp;gt;&amp;lt;/h3&amp;gt;&lt;br /&gt;
 Klicke im Menü 'Werkzeuge-&amp;gt;Platine-&amp;gt;Arduino Nano' um dein Arduino Nano-Board auszuwählen &lt;br /&gt;
 (oder Arduino Mega 2560 wenn du ein Mega-Board verwenden möchtest). &lt;br /&gt;
&lt;br /&gt;
 [[File: Arduino ide choose board.jpg]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;&amp;lt;b&amp;gt;7. Wähle den richtigen USB-Port aus&amp;lt;/b&amp;gt;&amp;lt;/h3&amp;gt;&lt;br /&gt;
 Klicke im Menü 'Werkzeuge-&amp;gt;Port', und wähle den ermittelte USB-Port aus.&lt;br /&gt;
&lt;br /&gt;
 [[File: Arduino ide choose port.jpg]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;&amp;lt;b&amp;gt;8. Laden der Beispielanwendung 'Blink' auf den Arduino&amp;lt;/b&amp;gt;&amp;lt;/h3&amp;gt;&lt;br /&gt;
 Klicke auf das Symbol 'Hochladen' um das Programm auf deinen Arduino zu laden. &lt;br /&gt;
&lt;br /&gt;
 [[File: Arduino ide upload.jpg]]&lt;br /&gt;
&lt;br /&gt;
 Nachdem der Code hochgeladen wurde, wird die gelbe LED auf dem Arduino anfangen zu blinken!&lt;br /&gt;
&lt;br /&gt;
 [[File: Arduino nano blink example.gif]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;&amp;lt;b&amp;gt;Gratulation!&amp;lt;/b&amp;gt;&amp;lt;/h3&amp;gt;&lt;br /&gt;
 Du hast gerade deinen ersten Arduino programmiert!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;&amp;lt;b&amp;gt;Nun wollen wir uns den Blink-Code etwas genauer anschauen um ihn zu verstehen:&amp;lt;/b&amp;gt;&amp;lt;/h3&amp;gt; &lt;br /&gt;
 Der Arduino hat verschiedene Anschlüsse (Pins). Jeder davon hat eine Nummer. Wie weiter unten gezeigt, ist Pin 13&lt;br /&gt;
 bereits intern mit der 'on-board' LED verbunden:&lt;br /&gt;
&lt;br /&gt;
 [[File: Arduino nano pinout.jpg|300px]]&lt;br /&gt;
&lt;br /&gt;
 Jeder Pin kann entweder als &amp;lt;b&amp;gt;INPUT (Eingang)&amp;lt;/b&amp;gt; oder &amp;lt;b&amp;gt;OUTPUT (Ausgang)&amp;lt;/b&amp;gt; konfiguriert werden, abhängig davon,&lt;br /&gt;
 ob du den Pin messen oder steuern willst: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;background-color: lightgrey; border: solid thin grey;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 INPUT bedeutet, du kannst den Pin lesen (messen). Das Messergebnis kann entweder 'On' (es ist Spannung an dem Pin)&lt;br /&gt;
  or 'Off' (es ist keine Spannung an dem Pin) sein.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;background-color: lightgrey; border: solid thin grey;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 OUTPUT   bedeutet, du kannst die Spannung des Pins schreiben (oder steuern).&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 Im Blink-Beispiel oben verwenden wir den LED-Pin (pin 13) der bereits intern mit einer LED verbunden ist. &lt;br /&gt;
 Weil wir diesen Pin steuern wollen, konfigurieren wir ihn als  &amp;lt;b&amp;gt;OUTPUT&amp;lt;/b&amp;gt;: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;background-color: lightgrey; border: solid thin grey;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 pinMode(13, OUTPUT);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Nun wollen wir sehen, wie wir die LED mit einem Arduino-Befehl ein- (ON) oder ausschalten (Off) können. Dieser Befehl&lt;br /&gt;
 wird die Spannung an Pin 13 einschalten:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;background-color: lightgrey; border: solid thin grey;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 digitalWrite(13, HIGH);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 und logischerweise wird dieser Befehl die Spannung an Pin 13 ausschalten:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;background-color: lightgrey; border: solid thin grey;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 digitalWrite(13, LOW);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 Jetzt sehen wir, wie wir zwischen dem Umschalten von ON auf OFF 1s warten können. Dieser Befehl wird für&lt;br /&gt;
 1s (=1000 Millisekunden) warten, das Programm anhalten:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;background-color: lightgrey; border: solid thin grey;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 delay(1000);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 So, schauen wir uns das komplette Blink-Programm noch einmal an:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;background-color: lightgrey; border: solid thin grey;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 void setup(){&lt;br /&gt;
   pinMode(13, OUTPUT);      // wir wollen pin 13 steuern &lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 void loop(){&lt;br /&gt;
   digitalWrite(13, HIGH);   // pin 13 geht auf HIGH (Spannung ON)&lt;br /&gt;
   delay(1000);              // warte 1s(=1000 milliseconds)&lt;br /&gt;
   digitalWrite(13, LOW);    // pin 13 geht auf LOW (Spannung OFF)&lt;br /&gt;
   delay(1000);              // warte 1s (=1000 milliseconds)&lt;br /&gt;
   // ...nun wird alles wiederholt                           &lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;&amp;lt;b&amp;gt;Wie geht es weiter...&amp;lt;/b&amp;gt;&amp;lt;/h3&amp;gt;&lt;br /&gt;
 Nun kannst du versuchen, den Ardumower-Code [http://wiki.ardumower.de/index.php?title=Ardumower_PCB Ardumower code]&lt;br /&gt;
 auf die gleiche Weise wie das Blink-Programm hochzuladen!&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;nbsp;&lt;br /&gt;
 &amp;amp;nbsp;&lt;br /&gt;
 &amp;amp;nbsp;&lt;br /&gt;
 &amp;amp;nbsp;&lt;br /&gt;
 &amp;amp;nbsp;&lt;/div&gt;</summary>
		<author><name>Deejay</name></author>	</entry>

	<entry>
		<id>https://wiki.ardumower.de/index.php?title=Arduino_erste_Schritte&amp;diff=2595</id>
		<title>Arduino erste Schritte</title>
		<link rel="alternate" type="text/html" href="https://wiki.ardumower.de/index.php?title=Arduino_erste_Schritte&amp;diff=2595"/>
				<updated>2015-08-19T19:49:01Z</updated>
		
		<summary type="html">&lt;p&gt;Deejay: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
Wenn du noch nie mit einem Arduino gearbeitet hast, zeigt dir diese  Seite wie du mit dem Arduino beginnst, den du im Ardumower-Shop [https://www.marotronics.de/index.php?k=7 shop] [[File: shopping.png|link=https://www.marotronics.de/index.php?k=7]] kaufen kannst. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Alles was du brauchst, um die folgenden Beispiele auszuführen:&lt;br /&gt;
* Einen Arduino Nano (or Arduino Mega2560)&lt;br /&gt;
* Ein USB-Kabel&lt;br /&gt;
 [[File: Arduino nano usb cable.jpg|300px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;&amp;lt;b&amp;gt;1. Schliesse den Arduino an deinen Computer an&amp;lt;/b&amp;gt;&amp;lt;/h3&amp;gt;&lt;br /&gt;
 verwende ein USB-Kabel und schliesse deinen Arduino Nano oder Arduino Mega wie nachfolgend gezeigt, an den Computer an.&lt;br /&gt;
 &amp;lt;gallery&amp;gt;&lt;br /&gt;
 File: Arduino nano usb connected.jpg|Arduino Nano über USB angeschlossen&lt;br /&gt;
 File: Arduino atmega2560 usb connected.jpg|Arduino Mega 2560 über USB angeschlossen&lt;br /&gt;
 &amp;lt;/gallery&amp;gt;&lt;br /&gt;
 Möglicherweise musst du einen Treiber für den Arduino installieren:&lt;br /&gt;
*  Arduino Nano: Klick hier [http://forum.diamex.de/attachment.php?attachmentid=65&amp;amp;d=1346742303 here] um den Treiber 'FTDI CDM 2.08.24' herunterzuladen&lt;br /&gt;
   Bemerkung: Verwende nicht die neuesten FTDI-Treiber, sie können Fehlfunktionen verursachen. Hier sind die Arbeitsschritte,&lt;br /&gt;
   wie neuere Treiber wieder entfernt werden:&lt;br /&gt;
   1. In Windows, wähle 'Computer-&amp;gt;Eigenschaften-&amp;gt;Erweiterte Systemeinstellungen-&amp;gt;Geräteeinstellungen'&lt;br /&gt;
   2. Setze 'Soll Windows Treiber automatisch installieren?' auf 'Nein'&lt;br /&gt;
   3. Aktiviere 'niemals Treiber über Windows-Update installieren'&lt;br /&gt;
   4. Führe [http://www.ftdichip.com/Support/Utilities.htm CDM Uninstaller] aus.&lt;br /&gt;
   5. Klick 'Add', dann 'Remove Devices'&lt;br /&gt;
   6. Starte deinen Computer neu&lt;br /&gt;
   7. Schliesse Arduino Nano erneut an, nun sollte Windown fragen, ob es einen Treiber installieren soll und du kannst die richtige&lt;br /&gt;
      Treiberversion (2.08.24) auswählen..&lt;br /&gt;
*  Arduino Mega 2560: &lt;br /&gt;
   1. Lade die Arduino Entwicklungssoftware herunter (Link im nächsten Abschnitt, unten)&lt;br /&gt;
   2. Wähle die Treiberdatei &amp;quot;arduino.inf&amp;quot;, die sich im Ordner &amp;quot;Drivers&amp;quot; der herunter geladenen Arduino-Software befindet.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;&amp;lt;b&amp;gt;2. Download&amp;lt;/b&amp;gt;&amp;lt;/h3&amp;gt;&lt;br /&gt;
 Klick hier um die Arduino Entwicklungsumgebung (v1.6.5) auf deinen Computer herunter zuladen&lt;br /&gt;
 (Windows Benutzer sollten die 'Installer' Version auf dieser Seite downloaden):&lt;br /&gt;
&lt;br /&gt;
 [[File: Arduino symbol small.jpg |link=http://arduino.cc/en/Main/Software#toc3]]  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;&amp;lt;b&amp;gt;3. Installation&amp;lt;/b&amp;gt;&amp;lt;/h3&amp;gt;&lt;br /&gt;
 Nachdem die Software erfolgreich herunter geladen wurde, intalliere die Arduino-Software auf deinem Computer:&lt;br /&gt;
 Windows-Benutzer doppelklicken auf die Datei ('arduino-1.6.5-windows.exe') im Explorer um die Software zu installieren.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;&amp;lt;b&amp;gt;4. Start&amp;lt;/b&amp;gt;&amp;lt;/h3&amp;gt;&lt;br /&gt;
 Nachdem die Installation komplett ist, wird die Arduino Entwicklungsumgebung (IDE) mit einem Doppelklick auf das 'Arduino'-Symbol&lt;br /&gt;
 auf dem Desktop gestartet.&lt;br /&gt;
&lt;br /&gt;
 [[File: Arduino_start_symbol_small.jpg]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;&amp;lt;b&amp;gt;5. Wähle das Beispiel Blink&amp;lt;/b&amp;gt;&amp;lt;/h3&amp;gt;&lt;br /&gt;
 Nachdem die Arduino-Entwicklungsumgebung gestartet ist, wähle 'Datei -&amp;gt; Beispiele -&amp;gt; Basics -&amp;gt; Blink'. Damit wird&lt;br /&gt;
 das Beispielprogramm 'Blink' geladen.&lt;br /&gt;
&lt;br /&gt;
 [[File: Arduino ide blink example.jpg]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;&amp;lt;b&amp;gt;6. Wähle den richtigen Board-Typ&amp;lt;/b&amp;gt;&amp;lt;/h3&amp;gt;&lt;br /&gt;
 Klicke im Menü 'Werkzeuge-&amp;gt;Platine-&amp;gt;Arduino Nano' um dein Arduino Nano-Board auszuwählen &lt;br /&gt;
 (oder Arduino Mega 2560 wenn du ein Mega-Board verwenden möchtest). &lt;br /&gt;
&lt;br /&gt;
 [[File: Arduino ide choose board.jpg]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;&amp;lt;b&amp;gt;7. Wähle den richtigen USB-Port aus&amp;lt;/b&amp;gt;&amp;lt;/h3&amp;gt;&lt;br /&gt;
 Klicke im Menü 'Werkzeuge-&amp;gt;Port', und wähle den ermittelte USB-Port aus.&lt;br /&gt;
&lt;br /&gt;
 [[File: Arduino ide choose port.jpg]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;&amp;lt;b&amp;gt;8. Laden der Beispielanwendung 'Blink' auf den Arduino&amp;lt;/b&amp;gt;&amp;lt;/h3&amp;gt;&lt;br /&gt;
 Klicke auf das Symbol 'Hochladen' um das Programm auf deinen Arduino zu laden. &lt;br /&gt;
&lt;br /&gt;
 [[File: Arduino ide upload.jpg]]&lt;br /&gt;
&lt;br /&gt;
 Nachdem der Code hochgeladen wurde, wird die gelbe LED auf dem Arduino anfangen zu blinken!&lt;br /&gt;
&lt;br /&gt;
 [[File: Arduino nano blink example.gif]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;&amp;lt;b&amp;gt;Gratulation!&amp;lt;/b&amp;gt;&amp;lt;/h3&amp;gt;&lt;br /&gt;
 Du hast gerade deinen ersten Arduino programmiert!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;&amp;lt;b&amp;gt;Nun wollen wir uns den Blink-Code etwas genauer anschauen um ihn zu verstehen:&amp;lt;/b&amp;gt;&amp;lt;/h3&amp;gt; &lt;br /&gt;
 Der Arduino hat verschiedene Anschlüsse (Pins). Jeder davon hat eine Nummer. Wie weiter unten gezeigt, ist Pin 13&lt;br /&gt;
 bereits intern mit der 'on-board' LED verbunden:&lt;br /&gt;
&lt;br /&gt;
 [[File: Arduino nano pinout.jpg|300px]]&lt;br /&gt;
&lt;br /&gt;
 Jeder Pin kann entweder als &amp;lt;b&amp;gt;INPUT (Eingang)&amp;lt;/b&amp;gt; oder &amp;lt;b&amp;gt;OUTPUT (Ausgang)&amp;lt;/b&amp;gt; konfiguriert werden, abhängig davon,&lt;br /&gt;
 ob du den Pin messen oder steuern willst: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;background-color: lightgrey; border: solid thin grey;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 INPUT bedeutet, du kannst den Pin lesen (messen). Das Messergebnis kann entweder 'On' (es ist Spannung an dem Pin)&lt;br /&gt;
  or 'Off' (es ist keine Spannung an dem Pin) sein.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;background-color: lightgrey; border: solid thin grey;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 OUTPUT   bedeutet, du kannst die Spannung des Pins schreiben (oder steuern).&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 Im Blink-Beispiel oben verwenden wir den LED-Pin (pin 13) der bereits intern mit einer LED verbunden ist. &lt;br /&gt;
 Weil wir diesen Pin steuern wollen, konfigurieren wir ihn als  &amp;lt;b&amp;gt;OUTPUT&amp;lt;/b&amp;gt;: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;background-color: lightgrey; border: solid thin grey;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 pinMode(13, OUTPUT);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Nun wollen wir sehen, wie wir die LED mit einem Arduino-Befehl ein- (ON) oder ausschalten (Off) können. Dieser Befehl&lt;br /&gt;
 wird die Spannung an Pin 13 einschalten:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;background-color: lightgrey; border: solid thin grey;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 digitalWrite(13, HIGH);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 und logischerweise wird dieser Befehl die Spannung an Pin 13 ausschalten:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;background-color: lightgrey; border: solid thin grey;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 digitalWrite(13, LOW);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 Jetzt sehen wir, wie wir zwischen dem Umschalten von ON auf OFF 1s warten können. Dieser Befehl wird für&lt;br /&gt;
 1s (=1000 Millisekunden) warten, das Programm anhalten:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;background-color: lightgrey; border: solid thin grey;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 delay(1000);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 So, schauen wir uns das komplette Blink-Programm noch einmal an:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;background-color: lightgrey; border: solid thin grey;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 void setup(){&lt;br /&gt;
   pinMode(13, OUTPUT);      // wir wollen pin 13 steuern &lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 void loop(){&lt;br /&gt;
   digitalWrite(13, HIGH);   // pin 13 geht auf HIGH (Spannung ON)&lt;br /&gt;
   delay(1000);              // warte 1s(=1000 milliseconds)&lt;br /&gt;
   digitalWrite(13, LOW);    // pin 13 geht auf LOW (Spannung OFF)&lt;br /&gt;
   delay(1000);              // warte 1s (=1000 milliseconds)&lt;br /&gt;
   // ...nun wird alles wiederholt                           &lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;&amp;lt;b&amp;gt;Wie geht es weiter...&amp;lt;/b&amp;gt;&amp;lt;/h3&amp;gt;&lt;br /&gt;
 Nun kannst du versuchen, den Ardumower-Code [http://wiki.ardumower.de/index.php?title=Ardumower_PCB Ardumower code]&lt;br /&gt;
 auf die gleiche Weise wie das Blink-Programm hochzuladen!&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;nbsp;&lt;br /&gt;
 &amp;amp;nbsp;&lt;br /&gt;
 &amp;amp;nbsp;&lt;br /&gt;
 &amp;amp;nbsp;&lt;br /&gt;
 &amp;amp;nbsp;&lt;/div&gt;</summary>
		<author><name>Deejay</name></author>	</entry>

	</feed>