<?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=Pemiso</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=Pemiso"/>
		<link rel="alternate" type="text/html" href="https://wiki.ardumower.de/index.php?title=Spezial:Beitr%C3%A4ge/Pemiso"/>
		<updated>2026-10-09T18:23:50Z</updated>
		<subtitle>Benutzerbeiträge</subtitle>
		<generator>MediaWiki 1.24.1</generator>

	<entry>
		<id>https://wiki.ardumower.de/index.php?title=Inertialsensor_-_IMU&amp;diff=2813</id>
		<title>Inertialsensor - IMU</title>
		<link rel="alternate" type="text/html" href="https://wiki.ardumower.de/index.php?title=Inertialsensor_-_IMU&amp;diff=2813"/>
				<updated>2015-11-04T22:17:04Z</updated>
		
		<summary type="html">&lt;p&gt;Pemiso: /* Compass */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Zusammenfassung=&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File:Imu.jpg&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ein Modul namens IMU (Intertia Measurement Unit) ist das Herzstück eines Trägheitsnavigationssystems, mit dem wir folgendes erreichen können:&lt;br /&gt;
*feststellen, ob der Ardumower umgekippt ist (Neigungswinkel)&lt;br /&gt;
*regeln einer exakten Geradeausfahrt z.B: für das Mähen in parallelen Bahnen&lt;br /&gt;
&lt;br /&gt;
= Beschleunigungssensor =&lt;br /&gt;
Dieser Sensor mißt die translatorischen und rotatorischen Beschleunigungswerte des Ardumower bezüglich der 3 Raumachsen (x/y/z). &lt;br /&gt;
Die Auswertung dieser Signale ermöglicht dem Ardumower die Berechnung der räumlichen Bewegung und der Veränderung der räumlichen Position.&lt;br /&gt;
Zur Bestimmung der Raumwinkeländerungen beinhaltet die IMU ein Gyromodul.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Ardumower_pitch_roll_yaw.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Gyro=&lt;br /&gt;
Ein Gyro mißt die Rotationsgeschwindigkeit (Winkelgrad/Sekunde) um alle 3 Roboterachsen (Roll, Pitch, Yaw). Das ermöglicht die Kurskorrektur wenn der Roboter durch z.B. nässebedingten Schlupf der Räder außer Kurs gerät. When integrating (adding) gyro values over time, the actual course (yaw) can be calculated. However, because each sensor reading has a small error, the course will 'drift' over time. This needs to be corrected via an absolute heading sensor (compass).&lt;br /&gt;
&lt;br /&gt;
Typical gyro measurement errors:&lt;br /&gt;
&lt;br /&gt;
                 noise dps/sqrt(Hz)&lt;br /&gt;
 L3G4200D        0.03&lt;br /&gt;
 BMG160/BNO055   0.014&lt;br /&gt;
 MPU9150         0.005&lt;br /&gt;
&lt;br /&gt;
=Compass=&lt;br /&gt;
Fährt der Roboter auf nassem Gras, wird man feststellen, dass er nicht genau geradeaus fährt, sondern in Richtung des Rades tendiert, an dem Schlupf auftritt. Unter Auswertung eines Kompasssignals kann dieses Problem gelöst werden und der Robbi wird wieder geradeausfahren.&lt;br /&gt;
&lt;br /&gt;
Ein Kompass hat jedoch 2 Probleme: &lt;br /&gt;
&lt;br /&gt;
# If tilting the robot, the compass measurements (x,y,z) relate to the tilted robot. So, you need to correct them using knowing the tilt angles. This requires the use of the accerlation sensor (x,y).&lt;br /&gt;
# The compass measurements are influenced by motors. So you may need to switch of the motor to get an accurate measurement.&lt;br /&gt;
&lt;br /&gt;
=Sensor fusion=&lt;br /&gt;
To eliminate the issues of all sensor, they are merged to compute the course (degree) and pitch/roll angles.&lt;br /&gt;
&lt;br /&gt;
We use a complementary filter to fusion all sensor values.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Ardumower_sensor_fusion.png  | IMU sensor fusion&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Additionally, gyro/acceleration and compass sensors can be further input to a [http://wiki.ardumower.de/index.php?title=Sensor_fusion position estimation].&lt;br /&gt;
&lt;br /&gt;
=IMU modules=&lt;br /&gt;
&lt;br /&gt;
GY-80&lt;br /&gt;
*Acceleration sensor: ADXL345B&lt;br /&gt;
*Compass sensor: HMC5883L&lt;br /&gt;
*Gyro: L3G4200D&lt;br /&gt;
*Pressure sensor: BMP085  (not used here)&lt;br /&gt;
&lt;br /&gt;
MPU9150&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Gy80.jpg | GY-80 module&lt;br /&gt;
File: GY80-Schematic.jpg | GY-80 schematics&lt;br /&gt;
File: Mpu9150.jpg | MPU9150 module  (in development/testing)&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Assembly=&lt;br /&gt;
This photo shows how the IMU module is placed in the driving position (the black arrow shows the driving position). The tube shown was needed to ensure a minimum distance of 30cm from all motors. This minimum distance seems to be needed to ensure the compass is not disturbed by dynamically disturbing sources (like motors).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Gy80_direction.jpg  | GY-80 assembly&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Calibration abstract=&lt;br /&gt;
This one-time calibration ensures that:&lt;br /&gt;
*All 3 axes measurements of the acceleration sensor are weighted equally. This calibration can even be performed externally to the robot.&lt;br /&gt;
*Cables, metal, etc. which are located in the robot near the IMU module have no effect on the compass data.&lt;br /&gt;
&lt;br /&gt;
Why is it needed?&lt;br /&gt;
The origin of a 3D compass point is 0,0,0 (x,y,z) and points to the north pole. If the 3D compass is rotated around all of its axes i.e. all values of x, y and z are measured then these points will ​​lie on a sphere. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Compass_sphere.png &lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you add a magnetic material (e.g. metal) near the compass, the measured values ​​from the origin (0,0,0) of the sensor suddenly point in one direction only - Why?&lt;br /&gt;
There are two types of disturbances of the magnetic field which change / move the values​​:&lt;br /&gt;
&lt;br /&gt;
*Hard ircon (e.g. magnets): the sphere moves&lt;br /&gt;
*Soft ircon (e.g. metal): the sphere deforms (becomes an Ellipsoid)&lt;br /&gt;
&lt;br /&gt;
Example measurements&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Compass_ellipsoid.jpg   | Uncalibrated readings do not lie on a sphere but on an ellipsoid and have shifted from the origin of the sensor&lt;br /&gt;
File: Compass_ellipsoid_cal1.jpg | Shift-corrected values&lt;br /&gt;
File: Compass_ellipsoid_cal2.jpg | Calibrated values ​​are now reformed (or undeformed) again on a sphere, centered around the origin of the sensor&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The goal of the calibration is that the measurements are centered again on a sphere around the origin of the sensor.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Abgleich (letzte Version)=&lt;br /&gt;
==Acceleration sensor==&lt;br /&gt;
&lt;br /&gt;
This calibration can be performed outside of the robot. Place each of the 6 module sides exactly upright, do not move and choose 'next side calibration':&lt;br /&gt;
&lt;br /&gt;
*Via serial console &amp;quot;IMU acc calibration next side&amp;quot; OR&lt;br /&gt;
*Via pfodApp &amp;quot;Settings-&amp;gt;IMU-&amp;gt;acc calibration next side&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Do not move the module during the measurement of each side! During measurement you will hear a short beep tone.&lt;br /&gt;
&lt;br /&gt;
Repeat this step for all 6 sides. After all 6 sides are calibrated, you will hear a short melody.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Gy80_acc_calibration.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Compass sensor==&lt;br /&gt;
This calibration can be performed outside or inside of the robot (in its final position). Make sure the module is far away from magnetic fields or ferreous sources! Start the compass calibration:&lt;br /&gt;
&lt;br /&gt;
*Via serial console &amp;quot;IMU com calibration start/stop&amp;quot; OR&lt;br /&gt;
*Via pfodApp &amp;quot;Settings-&amp;gt;IMU-&amp;gt;com calibration start/stop&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hold each of the 6 module sides to North direction and tilt the module until minimum and maximum of the axis does not change anymore (until no tone is outputted anymore):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Gy80_com_calibration.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Calibration quality test==&lt;br /&gt;
&lt;br /&gt;
===Table test===&lt;br /&gt;
For testing calibration quality, hold module (parts upside) against a table edge and do not move. Write down the Yaw-value (example: -95,45). Then rotate the module by 180 degree and hold it again against the table edge. Now the Yaw-value should output 180 degree away (example: -95,45 + 180 = 84,55). Repeat this test for both remaining sides of the module. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Gy80_calibration_check.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
... hold module against a table edge ...&lt;br /&gt;
&lt;br /&gt;
 calls=30    yaw=-95.56    pitch=0.02    roll=2.52    com=-95.91    com180=84.09    gyroZ=0.00&lt;br /&gt;
 calls=30    yaw=-95.48    pitch=-0.11    roll=2.33    com=-95.81    com180=84.19    gyroZ=-0.01&lt;br /&gt;
 calls=30    yaw=-95.42    pitch=0.03    roll=2.42    com=-95.65    com180=84.35    gyroZ=-0.00&lt;br /&gt;
 calls=30    yaw=-95.45    pitch=-0.21    roll=2.38    com=-95.35    com180=84.65    gyroZ=-0.00&lt;br /&gt;
&lt;br /&gt;
... turn 180 degree, hold again against table edge ...&lt;br /&gt;
&lt;br /&gt;
 calls=30    yaw=85.06    pitch=-2.50    roll=0.04    com=84.91    com180=-95.09    gyroZ=-0.03&lt;br /&gt;
 calls=30    yaw=84.90    pitch=-2.59    roll=0.05    com=84.63    com180=-95.37    gyroZ=-0.02&lt;br /&gt;
 calls=30    yaw=85.19    pitch=-2.55    roll=0.01    com=84.73    com180=-95.27    gyroZ=-0.01&lt;br /&gt;
 calls=30    yaw=84.98    pitch=-2.73    roll=0.02    com=84.85    com180=-95.15    gyroZ=-0.01&lt;br /&gt;
&lt;br /&gt;
If deviation is more than one degree, repeat calibration steps!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===pfodApp test===&lt;br /&gt;
For a more detailed quality test, you can plot the calibration results (Yaw, Pitch, Roll) via pfodApp. Place the robot on a flat ground and let it rotate (pfodApp: click on &amp;quot;Commands-&amp;gt;Auto rotate&amp;quot; until robot rotates). Alternatively, you can let the robot drive a circle (pfodApp: click &amp;quot;Manual-&amp;gt;Right&amp;quot; until it drives the desired radius). Finally, choose 'Plot-&amp;gt;IMU' to see the calibration result.&lt;br /&gt;
&lt;br /&gt;
For the yaw plot, the curve should be a straight line when the robot is rotating with a constant speed.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Ardumower_screenshot_IMU.png &lt;br /&gt;
File: Ardumower_imu_plotting.jpg&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Calibration (old v0.9.3)=&lt;br /&gt;
==Acceleration sensor==&lt;br /&gt;
This one-time calibration ensures that all 3 axes measurements are weighted equally. This calibration can even be performed externally to the robot.&lt;br /&gt;
&lt;br /&gt;
1. Connect the Arduino Nano to your PC. On the PC, open the serial console (19200) in the Arduino environment. After the automatic gyro calibration menu appears (this can be shown at any time by pressing the &amp;quot;m&amp;quot; + ENTER keys).&lt;br /&gt;
&lt;br /&gt;
2. Start the calibration by pressing &amp;quot;1&amp;quot; + ENTER keys.&lt;br /&gt;
&lt;br /&gt;
2.1. After calibration, each of the 6 sides of the module has to look up-side and down-side (rotated 180 °). The module has 6 sides, so it must be rotated 6 times, so that each side once is on the table (you can hold the module with your hand  without moving it). Press ENTER after each calibration step. The aim of the calibration to determine the acceleration due to gravity (more precisely, the minimum / maximum value) for each axis . The module must not be artificially accelerated. The order of the sides does not matter.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Ardumower_pitch_roll_yaw_imu.png &lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Finally, the calibration values ​​for acceleration sensor are printed out on serial console.&lt;br /&gt;
&lt;br /&gt;
==Compass sensor==&lt;br /&gt;
&lt;br /&gt;
First ensure that the IMU module is mounted on the final position and that entire robotic electronic equipment and metal objects are 30cm or more away from it (ie the sensor is not distracted by metallic objects in its environment).&lt;br /&gt;
&lt;br /&gt;
1. Download ArduMag calibration app for Android.&lt;br /&gt;
2. If not done yet, pair your Android device with the Bluetooth module: On the Android device main screen, choose symbol &amp;quot;Settings&amp;quot; (via Android menu). Now choose  &amp;quot;Wirless and Networks-&amp;gt;Bluetooth Settings&amp;quot; and &amp;quot;Find device&amp;quot;. Finally, choose &amp;quot;pair with this device&amp;quot; and enter your pin (very often &amp;quot;1234&amp;quot;). The Bluetooth module should now appear as &amp;quot;paired&amp;quot;.&lt;br /&gt;
3. In the ArduMag app, press the Android menu key and then &amp;quot;Bluetooth&amp;quot; to connect with your Bluetooth module (and your robot). The robot should confirm the connection with a beep. The number of measurements should increase.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Turn around the robot slowly for all axes and all 6 sides for at least 360 degrees:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Ardumower_compass_calibrate.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The order of the axis of rotation and the direction does not matter. For example, rotate each side 180 degree clockwise and then again 180 degree counterclockwise (result is a 360 degree rotation). The measurements may not fit a sphere.&lt;br /&gt;
Examples:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Ardumag1.png&lt;br /&gt;
File: Ardumag2.png&lt;br /&gt;
File: Ardumag3.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Finally, press 'Calibrate' to finish the calibration. The robot will confirm the calibration with two beeps. The measurements should fit a sphere now.&lt;br /&gt;
Examples:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Ardumag4.png&lt;br /&gt;
File: Ardumag5.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Compass deviation==&lt;br /&gt;
The 'compass deviation calibration' should ensure that all courses are correct (example: south = north + 180 degree). &lt;br /&gt;
&lt;br /&gt;
1. Keep robot on a flat surface, and let it rotate (via pfodApp, press &amp;quot;Commands-&amp;gt;Auto rotate&amp;quot; repeatedly until robot rotates). Alternatively, you can let the robot drive in circles (via pfodApp, press &amp;quot;Manual-&amp;gt;Right&amp;quot; repeatedly until reaching desired radius).&lt;br /&gt;
&lt;br /&gt;
2. Start deviation calibration (pfodApp: &amp;quot;Settings-&amp;gt;IMU-&amp;gt;Start Com Cal Dev&amp;quot;). At each 10 degree step, the Nano LED flashes. After reaching all 360 degrees, the Nano LED stops flashing and the deviation calibration is completed.&lt;br /&gt;
&lt;br /&gt;
==Calibration test==&lt;br /&gt;
=== Testen von Kompass und Neigungswinkeln über die serielle Konsole ===&lt;br /&gt;
Folgende Werte gibt der Arduino aus:&lt;br /&gt;
&lt;br /&gt;
 yaw: Course/Yaw (see above figure)&lt;br /&gt;
 pitch: Pitch angle (see above figure)&lt;br /&gt;
 roll: Roll angle (see above figure)&lt;br /&gt;
 frequency: Number of measurements per second (100)&lt;br /&gt;
 latency: Number of latency overflows (0)&lt;br /&gt;
 access: Number of external access counts (from Arduino Mega)&lt;br /&gt;
&lt;br /&gt;
=== Testen per LED ===&lt;br /&gt;
Align the compass facing north, south, east, west - the LED should go ON. Between them it should go OFF. North, south and east, west about should be opposite.&lt;br /&gt;
&lt;br /&gt;
=== Testen per Android pfodApp ===&lt;br /&gt;
You can plot the results of the IMU module (yaw, pitch, roll) using pfodApp.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Videos =&lt;br /&gt;
#[http://www.youtube.com/watch?v=pyTy1Swom-8 Tanz des Roboters]&lt;br /&gt;
#[http://www.youtube.com/watch?v=V9dE4Kfoz9I&amp;amp;feature=youtu.be Spur halten]&lt;br /&gt;
#[https://www.youtube.com/watch?v=A-11khSzq1U Parallele Bahnen fahren]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= weiterführende Links =&lt;/div&gt;</summary>
		<author><name>Pemiso</name></author>	</entry>

	<entry>
		<id>https://wiki.ardumower.de/index.php?title=Inertialsensor_-_IMU&amp;diff=2812</id>
		<title>Inertialsensor - IMU</title>
		<link rel="alternate" type="text/html" href="https://wiki.ardumower.de/index.php?title=Inertialsensor_-_IMU&amp;diff=2812"/>
				<updated>2015-11-04T21:59:51Z</updated>
		
		<summary type="html">&lt;p&gt;Pemiso: /* Gyro */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Zusammenfassung=&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File:Imu.jpg&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ein Modul namens IMU (Intertia Measurement Unit) ist das Herzstück eines Trägheitsnavigationssystems, mit dem wir folgendes erreichen können:&lt;br /&gt;
*feststellen, ob der Ardumower umgekippt ist (Neigungswinkel)&lt;br /&gt;
*regeln einer exakten Geradeausfahrt z.B: für das Mähen in parallelen Bahnen&lt;br /&gt;
&lt;br /&gt;
= Beschleunigungssensor =&lt;br /&gt;
Dieser Sensor mißt die translatorischen und rotatorischen Beschleunigungswerte des Ardumower bezüglich der 3 Raumachsen (x/y/z). &lt;br /&gt;
Die Auswertung dieser Signale ermöglicht dem Ardumower die Berechnung der räumlichen Bewegung und der Veränderung der räumlichen Position.&lt;br /&gt;
Zur Bestimmung der Raumwinkeländerungen beinhaltet die IMU ein Gyromodul.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Ardumower_pitch_roll_yaw.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Gyro=&lt;br /&gt;
Ein Gyro mißt die Rotationsgeschwindigkeit (Winkelgrad/Sekunde) um alle 3 Roboterachsen (Roll, Pitch, Yaw). Das ermöglicht die Kurskorrektur wenn der Roboter durch z.B. nässebedingten Schlupf der Räder außer Kurs gerät. When integrating (adding) gyro values over time, the actual course (yaw) can be calculated. However, because each sensor reading has a small error, the course will 'drift' over time. This needs to be corrected via an absolute heading sensor (compass).&lt;br /&gt;
&lt;br /&gt;
Typical gyro measurement errors:&lt;br /&gt;
&lt;br /&gt;
                 noise dps/sqrt(Hz)&lt;br /&gt;
 L3G4200D        0.03&lt;br /&gt;
 BMG160/BNO055   0.014&lt;br /&gt;
 MPU9150         0.005&lt;br /&gt;
&lt;br /&gt;
=Compass=&lt;br /&gt;
If a robot drives on a wet lawn, you'll notice quickly that it will not drive straight forward, but instead tends to drive into the direction of the slope. Reading a compass heading can solve this problem and the robot will drive straight forward again .&lt;br /&gt;
&lt;br /&gt;
However, a compass has two problems: &lt;br /&gt;
&lt;br /&gt;
# If tilting the robot, the compass measurements (x,y,z) relate to the tilted robot. So, you need to correct them using knowing the tilt angles. This requires the use of the accerlation sensor (x,y).&lt;br /&gt;
# The compass measurements are influenced by motors. So you may need to switch of the motor to get an accurate measurement.&lt;br /&gt;
&lt;br /&gt;
=Sensor fusion=&lt;br /&gt;
To eliminate the issues of all sensor, they are merged to compute the course (degree) and pitch/roll angles.&lt;br /&gt;
&lt;br /&gt;
We use a complementary filter to fusion all sensor values.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Ardumower_sensor_fusion.png  | IMU sensor fusion&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Additionally, gyro/acceleration and compass sensors can be further input to a [http://wiki.ardumower.de/index.php?title=Sensor_fusion position estimation].&lt;br /&gt;
&lt;br /&gt;
=IMU modules=&lt;br /&gt;
&lt;br /&gt;
GY-80&lt;br /&gt;
*Acceleration sensor: ADXL345B&lt;br /&gt;
*Compass sensor: HMC5883L&lt;br /&gt;
*Gyro: L3G4200D&lt;br /&gt;
*Pressure sensor: BMP085  (not used here)&lt;br /&gt;
&lt;br /&gt;
MPU9150&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Gy80.jpg | GY-80 module&lt;br /&gt;
File: GY80-Schematic.jpg | GY-80 schematics&lt;br /&gt;
File: Mpu9150.jpg | MPU9150 module  (in development/testing)&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Assembly=&lt;br /&gt;
This photo shows how the IMU module is placed in the driving position (the black arrow shows the driving position). The tube shown was needed to ensure a minimum distance of 30cm from all motors. This minimum distance seems to be needed to ensure the compass is not disturbed by dynamically disturbing sources (like motors).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Gy80_direction.jpg  | GY-80 assembly&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Calibration abstract=&lt;br /&gt;
This one-time calibration ensures that:&lt;br /&gt;
*All 3 axes measurements of the acceleration sensor are weighted equally. This calibration can even be performed externally to the robot.&lt;br /&gt;
*Cables, metal, etc. which are located in the robot near the IMU module have no effect on the compass data.&lt;br /&gt;
&lt;br /&gt;
Why is it needed?&lt;br /&gt;
The origin of a 3D compass point is 0,0,0 (x,y,z) and points to the north pole. If the 3D compass is rotated around all of its axes i.e. all values of x, y and z are measured then these points will ​​lie on a sphere. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Compass_sphere.png &lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you add a magnetic material (e.g. metal) near the compass, the measured values ​​from the origin (0,0,0) of the sensor suddenly point in one direction only - Why?&lt;br /&gt;
There are two types of disturbances of the magnetic field which change / move the values​​:&lt;br /&gt;
&lt;br /&gt;
*Hard ircon (e.g. magnets): the sphere moves&lt;br /&gt;
*Soft ircon (e.g. metal): the sphere deforms (becomes an Ellipsoid)&lt;br /&gt;
&lt;br /&gt;
Example measurements&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Compass_ellipsoid.jpg   | Uncalibrated readings do not lie on a sphere but on an ellipsoid and have shifted from the origin of the sensor&lt;br /&gt;
File: Compass_ellipsoid_cal1.jpg | Shift-corrected values&lt;br /&gt;
File: Compass_ellipsoid_cal2.jpg | Calibrated values ​​are now reformed (or undeformed) again on a sphere, centered around the origin of the sensor&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The goal of the calibration is that the measurements are centered again on a sphere around the origin of the sensor.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Abgleich (letzte Version)=&lt;br /&gt;
==Acceleration sensor==&lt;br /&gt;
&lt;br /&gt;
This calibration can be performed outside of the robot. Place each of the 6 module sides exactly upright, do not move and choose 'next side calibration':&lt;br /&gt;
&lt;br /&gt;
*Via serial console &amp;quot;IMU acc calibration next side&amp;quot; OR&lt;br /&gt;
*Via pfodApp &amp;quot;Settings-&amp;gt;IMU-&amp;gt;acc calibration next side&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Do not move the module during the measurement of each side! During measurement you will hear a short beep tone.&lt;br /&gt;
&lt;br /&gt;
Repeat this step for all 6 sides. After all 6 sides are calibrated, you will hear a short melody.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Gy80_acc_calibration.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Compass sensor==&lt;br /&gt;
This calibration can be performed outside or inside of the robot (in its final position). Make sure the module is far away from magnetic fields or ferreous sources! Start the compass calibration:&lt;br /&gt;
&lt;br /&gt;
*Via serial console &amp;quot;IMU com calibration start/stop&amp;quot; OR&lt;br /&gt;
*Via pfodApp &amp;quot;Settings-&amp;gt;IMU-&amp;gt;com calibration start/stop&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hold each of the 6 module sides to North direction and tilt the module until minimum and maximum of the axis does not change anymore (until no tone is outputted anymore):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Gy80_com_calibration.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Calibration quality test==&lt;br /&gt;
&lt;br /&gt;
===Table test===&lt;br /&gt;
For testing calibration quality, hold module (parts upside) against a table edge and do not move. Write down the Yaw-value (example: -95,45). Then rotate the module by 180 degree and hold it again against the table edge. Now the Yaw-value should output 180 degree away (example: -95,45 + 180 = 84,55). Repeat this test for both remaining sides of the module. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Gy80_calibration_check.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
... hold module against a table edge ...&lt;br /&gt;
&lt;br /&gt;
 calls=30    yaw=-95.56    pitch=0.02    roll=2.52    com=-95.91    com180=84.09    gyroZ=0.00&lt;br /&gt;
 calls=30    yaw=-95.48    pitch=-0.11    roll=2.33    com=-95.81    com180=84.19    gyroZ=-0.01&lt;br /&gt;
 calls=30    yaw=-95.42    pitch=0.03    roll=2.42    com=-95.65    com180=84.35    gyroZ=-0.00&lt;br /&gt;
 calls=30    yaw=-95.45    pitch=-0.21    roll=2.38    com=-95.35    com180=84.65    gyroZ=-0.00&lt;br /&gt;
&lt;br /&gt;
... turn 180 degree, hold again against table edge ...&lt;br /&gt;
&lt;br /&gt;
 calls=30    yaw=85.06    pitch=-2.50    roll=0.04    com=84.91    com180=-95.09    gyroZ=-0.03&lt;br /&gt;
 calls=30    yaw=84.90    pitch=-2.59    roll=0.05    com=84.63    com180=-95.37    gyroZ=-0.02&lt;br /&gt;
 calls=30    yaw=85.19    pitch=-2.55    roll=0.01    com=84.73    com180=-95.27    gyroZ=-0.01&lt;br /&gt;
 calls=30    yaw=84.98    pitch=-2.73    roll=0.02    com=84.85    com180=-95.15    gyroZ=-0.01&lt;br /&gt;
&lt;br /&gt;
If deviation is more than one degree, repeat calibration steps!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===pfodApp test===&lt;br /&gt;
For a more detailed quality test, you can plot the calibration results (Yaw, Pitch, Roll) via pfodApp. Place the robot on a flat ground and let it rotate (pfodApp: click on &amp;quot;Commands-&amp;gt;Auto rotate&amp;quot; until robot rotates). Alternatively, you can let the robot drive a circle (pfodApp: click &amp;quot;Manual-&amp;gt;Right&amp;quot; until it drives the desired radius). Finally, choose 'Plot-&amp;gt;IMU' to see the calibration result.&lt;br /&gt;
&lt;br /&gt;
For the yaw plot, the curve should be a straight line when the robot is rotating with a constant speed.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Ardumower_screenshot_IMU.png &lt;br /&gt;
File: Ardumower_imu_plotting.jpg&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Calibration (old v0.9.3)=&lt;br /&gt;
==Acceleration sensor==&lt;br /&gt;
This one-time calibration ensures that all 3 axes measurements are weighted equally. This calibration can even be performed externally to the robot.&lt;br /&gt;
&lt;br /&gt;
1. Connect the Arduino Nano to your PC. On the PC, open the serial console (19200) in the Arduino environment. After the automatic gyro calibration menu appears (this can be shown at any time by pressing the &amp;quot;m&amp;quot; + ENTER keys).&lt;br /&gt;
&lt;br /&gt;
2. Start the calibration by pressing &amp;quot;1&amp;quot; + ENTER keys.&lt;br /&gt;
&lt;br /&gt;
2.1. After calibration, each of the 6 sides of the module has to look up-side and down-side (rotated 180 °). The module has 6 sides, so it must be rotated 6 times, so that each side once is on the table (you can hold the module with your hand  without moving it). Press ENTER after each calibration step. The aim of the calibration to determine the acceleration due to gravity (more precisely, the minimum / maximum value) for each axis . The module must not be artificially accelerated. The order of the sides does not matter.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Ardumower_pitch_roll_yaw_imu.png &lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Finally, the calibration values ​​for acceleration sensor are printed out on serial console.&lt;br /&gt;
&lt;br /&gt;
==Compass sensor==&lt;br /&gt;
&lt;br /&gt;
First ensure that the IMU module is mounted on the final position and that entire robotic electronic equipment and metal objects are 30cm or more away from it (ie the sensor is not distracted by metallic objects in its environment).&lt;br /&gt;
&lt;br /&gt;
1. Download ArduMag calibration app for Android.&lt;br /&gt;
2. If not done yet, pair your Android device with the Bluetooth module: On the Android device main screen, choose symbol &amp;quot;Settings&amp;quot; (via Android menu). Now choose  &amp;quot;Wirless and Networks-&amp;gt;Bluetooth Settings&amp;quot; and &amp;quot;Find device&amp;quot;. Finally, choose &amp;quot;pair with this device&amp;quot; and enter your pin (very often &amp;quot;1234&amp;quot;). The Bluetooth module should now appear as &amp;quot;paired&amp;quot;.&lt;br /&gt;
3. In the ArduMag app, press the Android menu key and then &amp;quot;Bluetooth&amp;quot; to connect with your Bluetooth module (and your robot). The robot should confirm the connection with a beep. The number of measurements should increase.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Turn around the robot slowly for all axes and all 6 sides for at least 360 degrees:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Ardumower_compass_calibrate.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The order of the axis of rotation and the direction does not matter. For example, rotate each side 180 degree clockwise and then again 180 degree counterclockwise (result is a 360 degree rotation). The measurements may not fit a sphere.&lt;br /&gt;
Examples:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Ardumag1.png&lt;br /&gt;
File: Ardumag2.png&lt;br /&gt;
File: Ardumag3.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Finally, press 'Calibrate' to finish the calibration. The robot will confirm the calibration with two beeps. The measurements should fit a sphere now.&lt;br /&gt;
Examples:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Ardumag4.png&lt;br /&gt;
File: Ardumag5.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Compass deviation==&lt;br /&gt;
The 'compass deviation calibration' should ensure that all courses are correct (example: south = north + 180 degree). &lt;br /&gt;
&lt;br /&gt;
1. Keep robot on a flat surface, and let it rotate (via pfodApp, press &amp;quot;Commands-&amp;gt;Auto rotate&amp;quot; repeatedly until robot rotates). Alternatively, you can let the robot drive in circles (via pfodApp, press &amp;quot;Manual-&amp;gt;Right&amp;quot; repeatedly until reaching desired radius).&lt;br /&gt;
&lt;br /&gt;
2. Start deviation calibration (pfodApp: &amp;quot;Settings-&amp;gt;IMU-&amp;gt;Start Com Cal Dev&amp;quot;). At each 10 degree step, the Nano LED flashes. After reaching all 360 degrees, the Nano LED stops flashing and the deviation calibration is completed.&lt;br /&gt;
&lt;br /&gt;
==Calibration test==&lt;br /&gt;
=== Testen von Kompass und Neigungswinkeln über die serielle Konsole ===&lt;br /&gt;
Folgende Werte gibt der Arduino aus:&lt;br /&gt;
&lt;br /&gt;
 yaw: Course/Yaw (see above figure)&lt;br /&gt;
 pitch: Pitch angle (see above figure)&lt;br /&gt;
 roll: Roll angle (see above figure)&lt;br /&gt;
 frequency: Number of measurements per second (100)&lt;br /&gt;
 latency: Number of latency overflows (0)&lt;br /&gt;
 access: Number of external access counts (from Arduino Mega)&lt;br /&gt;
&lt;br /&gt;
=== Testen per LED ===&lt;br /&gt;
Align the compass facing north, south, east, west - the LED should go ON. Between them it should go OFF. North, south and east, west about should be opposite.&lt;br /&gt;
&lt;br /&gt;
=== Testen per Android pfodApp ===&lt;br /&gt;
You can plot the results of the IMU module (yaw, pitch, roll) using pfodApp.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Videos =&lt;br /&gt;
#[http://www.youtube.com/watch?v=pyTy1Swom-8 Tanz des Roboters]&lt;br /&gt;
#[http://www.youtube.com/watch?v=V9dE4Kfoz9I&amp;amp;feature=youtu.be Spur halten]&lt;br /&gt;
#[https://www.youtube.com/watch?v=A-11khSzq1U Parallele Bahnen fahren]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= weiterführende Links =&lt;/div&gt;</summary>
		<author><name>Pemiso</name></author>	</entry>

	<entry>
		<id>https://wiki.ardumower.de/index.php?title=Perimeter-Schleife&amp;diff=2523</id>
		<title>Perimeter-Schleife</title>
		<link rel="alternate" type="text/html" href="https://wiki.ardumower.de/index.php?title=Perimeter-Schleife&amp;diff=2523"/>
				<updated>2015-07-19T22:20:43Z</updated>
		
		<summary type="html">&lt;p&gt;Pemiso: /* Signal */&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;
=== 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>Pemiso</name></author>	</entry>

	<entry>
		<id>https://wiki.ardumower.de/index.php?title=Inertialsensor_-_IMU&amp;diff=2522</id>
		<title>Inertialsensor - IMU</title>
		<link rel="alternate" type="text/html" href="https://wiki.ardumower.de/index.php?title=Inertialsensor_-_IMU&amp;diff=2522"/>
				<updated>2015-07-19T17:13:36Z</updated>
		
		<summary type="html">&lt;p&gt;Pemiso: /* Beschleunigungssensor */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Zusammenfassung=&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File:Imu.jpg&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ein Modul namens IMU (Intertia Measurement Unit) ist das Herzstück eines Trägheitsnavigationssystems, mit dem wir folgendes erreichen können:&lt;br /&gt;
*feststellen, ob der Ardumower umgekippt ist (Neigungswinkel)&lt;br /&gt;
*regeln einer exakten Geradeausfahrt z.B: für das Mähen in parallelen Bahnen&lt;br /&gt;
&lt;br /&gt;
= Beschleunigungssensor =&lt;br /&gt;
Dieser Sensor mißt die translatorischen und rotatorischen Beschleunigungswerte des Ardumower bezüglich der 3 Raumachsen (x/y/z). &lt;br /&gt;
Die Auswertung dieser Signale ermöglicht dem Ardumower die Berechnung der räumlichen Bewegung und der Veränderung der räumlichen Position.&lt;br /&gt;
Zur Bestimmung der Raumwinkeländerungen beinhaltet die IMU ein Gyromodul.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Ardumower_pitch_roll_yaw.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Gyro=&lt;br /&gt;
A gyro measures rotational speed (degree/second) in all 3 robot axes (Roll, Pitch, Yaw). This allows us to correct the robot if it is driving 'off-course' due to wet conditions or slope. When integrating (adding) gyro values over time, the actual course (yaw) can be calculated. However, because each sensor reading has a small error, the course will 'drift' over time. This needs to be corrected via an absolute heading sensor (compass).&lt;br /&gt;
&lt;br /&gt;
Typical gyro measurement errors:&lt;br /&gt;
&lt;br /&gt;
                 noise dps/sqrt(Hz)&lt;br /&gt;
 L3G4200D        0.03&lt;br /&gt;
 BMG160/BNO055   0.014&lt;br /&gt;
 MPU9150         0.005&lt;br /&gt;
&lt;br /&gt;
=Compass=&lt;br /&gt;
If a robot drives on a wet lawn, you'll notice quickly that it will not drive straight forward, but instead tends to drive into the direction of the slope. Reading a compass heading can solve this problem and the robot will drive straight forward again .&lt;br /&gt;
&lt;br /&gt;
However, a compass has two problems: &lt;br /&gt;
&lt;br /&gt;
# If tilting the robot, the compass measurements (x,y,z) relate to the tilted robot. So, you need to correct them using knowing the tilt angles. This requires the use of the accerlation sensor (x,y).&lt;br /&gt;
# The compass measurements are influenced by motors. So you may need to switch of the motor to get an accurate measurement.&lt;br /&gt;
&lt;br /&gt;
=Sensor fusion=&lt;br /&gt;
To eliminate the issues of all sensor, they are merged to compute the course (degree) and pitch/roll angles.&lt;br /&gt;
&lt;br /&gt;
We use a complementary filter to fusion all sensor values.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Ardumower_sensor_fusion.png  | IMU sensor fusion&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Additionally, gyro/acceleration and compass sensors can be further input to a [http://wiki.ardumower.de/index.php?title=Sensor_fusion position estimation].&lt;br /&gt;
&lt;br /&gt;
=IMU modules=&lt;br /&gt;
&lt;br /&gt;
GY-80&lt;br /&gt;
*Acceleration sensor: ADXL345B&lt;br /&gt;
*Compass sensor: HMC5883L&lt;br /&gt;
*Gyro: L3G4200D&lt;br /&gt;
*Pressure sensor: BMP085  (not used here)&lt;br /&gt;
&lt;br /&gt;
MPU9150&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Gy80.jpg | GY-80 module&lt;br /&gt;
File: GY80-Schematic.jpg | GY-80 schematics&lt;br /&gt;
File: Mpu9150.jpg | MPU9150 module  (in development/testing)&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Assembly=&lt;br /&gt;
This photo shows how the IMU module is placed in the driving position (the black arrow shows the driving position). The tube shown was needed to ensure a minimum distance of 30cm from all motors. This minimum distance seems to be needed to ensure the compass is not disturbed by dynamically disturbing sources (like motors).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Gy80_direction.jpg  | GY-80 assembly&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Calibration abstract=&lt;br /&gt;
This one-time calibration ensures that:&lt;br /&gt;
*All 3 axes measurements of the acceleration sensor are weighted equally. This calibration can even be performed externally to the robot.&lt;br /&gt;
*Cables, metal, etc. which are located in the robot near the IMU module have no effect on the compass data.&lt;br /&gt;
&lt;br /&gt;
Why is it needed?&lt;br /&gt;
The origin of a 3D compass point is 0,0,0 (x,y,z) and points to the north pole. If the 3D compass is rotated around all of its axes i.e. all values of x, y and z are measured then these points will ​​lie on a sphere. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Compass_sphere.png &lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you add a magnetic material (e.g. metal) near the compass, the measured values ​​from the origin (0,0,0) of the sensor suddenly point in one direction only - Why?&lt;br /&gt;
There are two types of disturbances of the magnetic field which change / move the values​​:&lt;br /&gt;
&lt;br /&gt;
*Hard ircon (e.g. magnets): the sphere moves&lt;br /&gt;
*Soft ircon (e.g. metal): the sphere deforms (becomes an Ellipsoid)&lt;br /&gt;
&lt;br /&gt;
Example measurements&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Compass_ellipsoid.jpg   | Uncalibrated readings do not lie on a sphere but on an ellipsoid and have shifted from the origin of the sensor&lt;br /&gt;
File: Compass_ellipsoid_cal1.jpg | Shift-corrected values&lt;br /&gt;
File: Compass_ellipsoid_cal2.jpg | Calibrated values ​​are now reformed (or undeformed) again on a sphere, centered around the origin of the sensor&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The goal of the calibration is that the measurements are centered again on a sphere around the origin of the sensor.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Calibration (latest version)=&lt;br /&gt;
==Acceleration sensor==&lt;br /&gt;
&lt;br /&gt;
This calibration can be performed outside of the robot. Place each of the 6 module sides exactly upright, do not move and choose 'next side calibration':&lt;br /&gt;
&lt;br /&gt;
*Via serial console &amp;quot;IMU acc calibration next side&amp;quot; OR&lt;br /&gt;
*Via pfodApp &amp;quot;Settings-&amp;gt;IMU-&amp;gt;acc calibration next side&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Do not move the module during the measurement of each side! During measurement you will hear a short beep tone.&lt;br /&gt;
&lt;br /&gt;
Repeat this step for all 6 sides. After all 6 sides are calibrated, you will hear a short melody.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Gy80_acc_calibration.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Compass sensor==&lt;br /&gt;
This calibration can be performed outside or inside of the robot (in its final position). Make sure the module is far away from magnetic fields or ferreous sources! Start the compass calibration:&lt;br /&gt;
&lt;br /&gt;
*Via serial console &amp;quot;IMU com calibration start/stop&amp;quot; OR&lt;br /&gt;
*Via pfodApp &amp;quot;Settings-&amp;gt;IMU-&amp;gt;com calibration start/stop&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hold each of the 6 module sides to North direction and tilt the module until minimum and maximum of the axis does not change anymore (until no tone is outputted anymore):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Gy80_com_calibration.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Calibration quality test==&lt;br /&gt;
&lt;br /&gt;
===Table test===&lt;br /&gt;
For testing calibration quality, hold module (parts upside) against a table edge and do not move. Write down the Yaw-value (example: -95,45). Then rotate the module by 180 degree and hold it again against the table edge. Now the Yaw-value should output 180 degree away (example: -95,45 + 180 = 84,55). Repeat this test for both remaining sides of the module. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Gy80_calibration_check.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
... hold module against a table edge ...&lt;br /&gt;
&lt;br /&gt;
 calls=30    yaw=-95.56    pitch=0.02    roll=2.52    com=-95.91    com180=84.09    gyroZ=0.00&lt;br /&gt;
 calls=30    yaw=-95.48    pitch=-0.11    roll=2.33    com=-95.81    com180=84.19    gyroZ=-0.01&lt;br /&gt;
 calls=30    yaw=-95.42    pitch=0.03    roll=2.42    com=-95.65    com180=84.35    gyroZ=-0.00&lt;br /&gt;
 calls=30    yaw=-95.45    pitch=-0.21    roll=2.38    com=-95.35    com180=84.65    gyroZ=-0.00&lt;br /&gt;
&lt;br /&gt;
... turn 180 degree, hold again against table edge ...&lt;br /&gt;
&lt;br /&gt;
 calls=30    yaw=85.06    pitch=-2.50    roll=0.04    com=84.91    com180=-95.09    gyroZ=-0.03&lt;br /&gt;
 calls=30    yaw=84.90    pitch=-2.59    roll=0.05    com=84.63    com180=-95.37    gyroZ=-0.02&lt;br /&gt;
 calls=30    yaw=85.19    pitch=-2.55    roll=0.01    com=84.73    com180=-95.27    gyroZ=-0.01&lt;br /&gt;
 calls=30    yaw=84.98    pitch=-2.73    roll=0.02    com=84.85    com180=-95.15    gyroZ=-0.01&lt;br /&gt;
&lt;br /&gt;
If deviation is more than one degree, repeat calibration steps!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===pfodApp test===&lt;br /&gt;
For a more detailed quality test, you can plot the calibration results (Yaw, Pitch, Roll) via pfodApp. Place the robot on a flat ground and let it rotate (pfodApp: click on &amp;quot;Commands-&amp;gt;Auto rotate&amp;quot; until robot rotates). Alternatively, you can let the robot drive a circle (pfodApp: click &amp;quot;Manual-&amp;gt;Right&amp;quot; until it drives the desired radius). Finally, choose 'Plot-&amp;gt;IMU' to see the calibration result.&lt;br /&gt;
&lt;br /&gt;
For the yaw plot, the curve should be a straight line when the robot is rotating with a constant speed.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Ardumower_screenshot_IMU.png &lt;br /&gt;
File: Ardumower_imu_plotting.jpg&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Calibration (old v0.9.3)=&lt;br /&gt;
==Acceleration sensor==&lt;br /&gt;
This one-time calibration ensures that all 3 axes measurements are weighted equally. This calibration can even be performed externally to the robot.&lt;br /&gt;
&lt;br /&gt;
1. Connect the Arduino Nano to your PC. On the PC, open the serial console (19200) in the Arduino environment. After the automatic gyro calibration menu appears (this can be shown at any time by pressing the &amp;quot;m&amp;quot; + ENTER keys).&lt;br /&gt;
&lt;br /&gt;
2. Start the calibration by pressing &amp;quot;1&amp;quot; + ENTER keys.&lt;br /&gt;
&lt;br /&gt;
2.1. After calibration, each of the 6 sides of the module has to look up-side and down-side (rotated 180 °). The module has 6 sides, so it must be rotated 6 times, so that each side once is on the table (you can hold the module with your hand  without moving it). Press ENTER after each calibration step. The aim of the calibration to determine the acceleration due to gravity (more precisely, the minimum / maximum value) for each axis . The module must not be artificially accelerated. The order of the sides does not matter.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Ardumower_pitch_roll_yaw_imu.png &lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Finally, the calibration values ​​for acceleration sensor are printed out on serial console.&lt;br /&gt;
&lt;br /&gt;
==Compass sensor==&lt;br /&gt;
&lt;br /&gt;
First ensure that the IMU module is mounted on the final position and that entire robotic electronic equipment and metal objects are 30cm or more away from it (ie the sensor is not distracted by metallic objects in its environment).&lt;br /&gt;
&lt;br /&gt;
1. Download ArduMag calibration app for Android.&lt;br /&gt;
2. If not done yet, pair your Android device with the Bluetooth module: On the Android device main screen, choose symbol &amp;quot;Settings&amp;quot; (via Android menu). Now choose  &amp;quot;Wirless and Networks-&amp;gt;Bluetooth Settings&amp;quot; and &amp;quot;Find device&amp;quot;. Finally, choose &amp;quot;pair with this device&amp;quot; and enter your pin (very often &amp;quot;1234&amp;quot;). The Bluetooth module should now appear as &amp;quot;paired&amp;quot;.&lt;br /&gt;
3. In the ArduMag app, press the Android menu key and then &amp;quot;Bluetooth&amp;quot; to connect with your Bluetooth module (and your robot). The robot should confirm the connection with a beep. The number of measurements should increase.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Turn around the robot slowly for all axes and all 6 sides for at least 360 degrees:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Ardumower_compass_calibrate.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The order of the axis of rotation and the direction does not matter. For example, rotate each side 180 degree clockwise and then again 180 degree counterclockwise (result is a 360 degree rotation). The measurements may not fit a sphere.&lt;br /&gt;
Examples:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Ardumag1.png&lt;br /&gt;
File: Ardumag2.png&lt;br /&gt;
File: Ardumag3.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Finally, press 'Calibrate' to finish the calibration. The robot will confirm the calibration with two beeps. The measurements should fit a sphere now.&lt;br /&gt;
Examples:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Ardumag4.png&lt;br /&gt;
File: Ardumag5.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Compass deviation==&lt;br /&gt;
The 'compass deviation calibration' should ensure that all courses are correct (example: south = north + 180 degree). &lt;br /&gt;
&lt;br /&gt;
1. Keep robot on a flat surface, and let it rotate (via pfodApp, press &amp;quot;Commands-&amp;gt;Auto rotate&amp;quot; repeatedly until robot rotates). Alternatively, you can let the robot drive in circles (via pfodApp, press &amp;quot;Manual-&amp;gt;Right&amp;quot; repeatedly until reaching desired radius).&lt;br /&gt;
&lt;br /&gt;
2. Start deviation calibration (pfodApp: &amp;quot;Settings-&amp;gt;IMU-&amp;gt;Start Com Cal Dev&amp;quot;). At each 10 degree step, the Nano LED flashes. After reaching all 360 degrees, the Nano LED stops flashing and the deviation calibration is completed.&lt;br /&gt;
&lt;br /&gt;
==Calibration test==&lt;br /&gt;
=== Testen von Kompass und Neigungswinkeln über die serielle Konsole ===&lt;br /&gt;
Folgende Werte gibt der Arduino aus:&lt;br /&gt;
&lt;br /&gt;
 yaw: Course/Yaw (see above figure)&lt;br /&gt;
 pitch: Pitch angle (see above figure)&lt;br /&gt;
 roll: Roll angle (see above figure)&lt;br /&gt;
 frequency: Number of measurements per second (100)&lt;br /&gt;
 latency: Number of latency overflows (0)&lt;br /&gt;
 access: Number of external access counts (from Arduino Mega)&lt;br /&gt;
&lt;br /&gt;
=== Testen per LED ===&lt;br /&gt;
Align the compass facing north, south, east, west - the LED should go ON. Between them it should go OFF. North, south and east, west about should be opposite.&lt;br /&gt;
&lt;br /&gt;
=== Testen per Android pfodApp ===&lt;br /&gt;
You can plot the results of the IMU module (yaw, pitch, roll) using pfodApp.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Videos =&lt;br /&gt;
#[http://www.youtube.com/watch?v=pyTy1Swom-8 Tanz des Roboters]&lt;br /&gt;
#[http://www.youtube.com/watch?v=V9dE4Kfoz9I&amp;amp;feature=youtu.be Spur halten]&lt;br /&gt;
#[https://www.youtube.com/watch?v=A-11khSzq1U Parallele Bahnen fahren]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= weiterführende Links =&lt;/div&gt;</summary>
		<author><name>Pemiso</name></author>	</entry>

	<entry>
		<id>https://wiki.ardumower.de/index.php?title=Inertialsensor_-_IMU&amp;diff=2521</id>
		<title>Inertialsensor - IMU</title>
		<link rel="alternate" type="text/html" href="https://wiki.ardumower.de/index.php?title=Inertialsensor_-_IMU&amp;diff=2521"/>
				<updated>2015-07-19T17:11:56Z</updated>
		
		<summary type="html">&lt;p&gt;Pemiso: /* Beschleunigungssensor */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Zusammenfassung=&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File:Imu.jpg&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ein Modul namens IMU (Intertia Measurement Unit) ist das Herzstück eines Trägheitsnavigationssystems, mit dem wir folgendes erreichen können:&lt;br /&gt;
*feststellen, ob der Ardumower umgekippt ist (Neigungswinkel)&lt;br /&gt;
*regeln einer exakten Geradeausfahrt z.B: für das Mähen in parallelen Bahnen&lt;br /&gt;
&lt;br /&gt;
= Beschleunigungssensor =&lt;br /&gt;
Dieser Sensor mißt die translatorischen und rotatorischen Beschleunigungswerte des Ardumower bezüglich der 3 Raumachsen (x/y/z). &lt;br /&gt;
Die Auswertung dieser Signale ermöglicht dem Ardumower die Berechnung der räumlichen Bewegung und der Veränderung der räumlichen Position.&lt;br /&gt;
adurch  allowing you to calculate the orientation towards earth center of the robot (Roll, Pitch). However, it cannot detect movement around Yaw - this requires a gyro.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Ardumower_pitch_roll_yaw.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Gyro=&lt;br /&gt;
A gyro measures rotational speed (degree/second) in all 3 robot axes (Roll, Pitch, Yaw). This allows us to correct the robot if it is driving 'off-course' due to wet conditions or slope. When integrating (adding) gyro values over time, the actual course (yaw) can be calculated. However, because each sensor reading has a small error, the course will 'drift' over time. This needs to be corrected via an absolute heading sensor (compass).&lt;br /&gt;
&lt;br /&gt;
Typical gyro measurement errors:&lt;br /&gt;
&lt;br /&gt;
                 noise dps/sqrt(Hz)&lt;br /&gt;
 L3G4200D        0.03&lt;br /&gt;
 BMG160/BNO055   0.014&lt;br /&gt;
 MPU9150         0.005&lt;br /&gt;
&lt;br /&gt;
=Compass=&lt;br /&gt;
If a robot drives on a wet lawn, you'll notice quickly that it will not drive straight forward, but instead tends to drive into the direction of the slope. Reading a compass heading can solve this problem and the robot will drive straight forward again .&lt;br /&gt;
&lt;br /&gt;
However, a compass has two problems: &lt;br /&gt;
&lt;br /&gt;
# If tilting the robot, the compass measurements (x,y,z) relate to the tilted robot. So, you need to correct them using knowing the tilt angles. This requires the use of the accerlation sensor (x,y).&lt;br /&gt;
# The compass measurements are influenced by motors. So you may need to switch of the motor to get an accurate measurement.&lt;br /&gt;
&lt;br /&gt;
=Sensor fusion=&lt;br /&gt;
To eliminate the issues of all sensor, they are merged to compute the course (degree) and pitch/roll angles.&lt;br /&gt;
&lt;br /&gt;
We use a complementary filter to fusion all sensor values.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Ardumower_sensor_fusion.png  | IMU sensor fusion&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Additionally, gyro/acceleration and compass sensors can be further input to a [http://wiki.ardumower.de/index.php?title=Sensor_fusion position estimation].&lt;br /&gt;
&lt;br /&gt;
=IMU modules=&lt;br /&gt;
&lt;br /&gt;
GY-80&lt;br /&gt;
*Acceleration sensor: ADXL345B&lt;br /&gt;
*Compass sensor: HMC5883L&lt;br /&gt;
*Gyro: L3G4200D&lt;br /&gt;
*Pressure sensor: BMP085  (not used here)&lt;br /&gt;
&lt;br /&gt;
MPU9150&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Gy80.jpg | GY-80 module&lt;br /&gt;
File: GY80-Schematic.jpg | GY-80 schematics&lt;br /&gt;
File: Mpu9150.jpg | MPU9150 module  (in development/testing)&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Assembly=&lt;br /&gt;
This photo shows how the IMU module is placed in the driving position (the black arrow shows the driving position). The tube shown was needed to ensure a minimum distance of 30cm from all motors. This minimum distance seems to be needed to ensure the compass is not disturbed by dynamically disturbing sources (like motors).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Gy80_direction.jpg  | GY-80 assembly&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Calibration abstract=&lt;br /&gt;
This one-time calibration ensures that:&lt;br /&gt;
*All 3 axes measurements of the acceleration sensor are weighted equally. This calibration can even be performed externally to the robot.&lt;br /&gt;
*Cables, metal, etc. which are located in the robot near the IMU module have no effect on the compass data.&lt;br /&gt;
&lt;br /&gt;
Why is it needed?&lt;br /&gt;
The origin of a 3D compass point is 0,0,0 (x,y,z) and points to the north pole. If the 3D compass is rotated around all of its axes i.e. all values of x, y and z are measured then these points will ​​lie on a sphere. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Compass_sphere.png &lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you add a magnetic material (e.g. metal) near the compass, the measured values ​​from the origin (0,0,0) of the sensor suddenly point in one direction only - Why?&lt;br /&gt;
There are two types of disturbances of the magnetic field which change / move the values​​:&lt;br /&gt;
&lt;br /&gt;
*Hard ircon (e.g. magnets): the sphere moves&lt;br /&gt;
*Soft ircon (e.g. metal): the sphere deforms (becomes an Ellipsoid)&lt;br /&gt;
&lt;br /&gt;
Example measurements&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Compass_ellipsoid.jpg   | Uncalibrated readings do not lie on a sphere but on an ellipsoid and have shifted from the origin of the sensor&lt;br /&gt;
File: Compass_ellipsoid_cal1.jpg | Shift-corrected values&lt;br /&gt;
File: Compass_ellipsoid_cal2.jpg | Calibrated values ​​are now reformed (or undeformed) again on a sphere, centered around the origin of the sensor&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The goal of the calibration is that the measurements are centered again on a sphere around the origin of the sensor.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Calibration (latest version)=&lt;br /&gt;
==Acceleration sensor==&lt;br /&gt;
&lt;br /&gt;
This calibration can be performed outside of the robot. Place each of the 6 module sides exactly upright, do not move and choose 'next side calibration':&lt;br /&gt;
&lt;br /&gt;
*Via serial console &amp;quot;IMU acc calibration next side&amp;quot; OR&lt;br /&gt;
*Via pfodApp &amp;quot;Settings-&amp;gt;IMU-&amp;gt;acc calibration next side&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Do not move the module during the measurement of each side! During measurement you will hear a short beep tone.&lt;br /&gt;
&lt;br /&gt;
Repeat this step for all 6 sides. After all 6 sides are calibrated, you will hear a short melody.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Gy80_acc_calibration.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Compass sensor==&lt;br /&gt;
This calibration can be performed outside or inside of the robot (in its final position). Make sure the module is far away from magnetic fields or ferreous sources! Start the compass calibration:&lt;br /&gt;
&lt;br /&gt;
*Via serial console &amp;quot;IMU com calibration start/stop&amp;quot; OR&lt;br /&gt;
*Via pfodApp &amp;quot;Settings-&amp;gt;IMU-&amp;gt;com calibration start/stop&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hold each of the 6 module sides to North direction and tilt the module until minimum and maximum of the axis does not change anymore (until no tone is outputted anymore):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Gy80_com_calibration.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Calibration quality test==&lt;br /&gt;
&lt;br /&gt;
===Table test===&lt;br /&gt;
For testing calibration quality, hold module (parts upside) against a table edge and do not move. Write down the Yaw-value (example: -95,45). Then rotate the module by 180 degree and hold it again against the table edge. Now the Yaw-value should output 180 degree away (example: -95,45 + 180 = 84,55). Repeat this test for both remaining sides of the module. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Gy80_calibration_check.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
... hold module against a table edge ...&lt;br /&gt;
&lt;br /&gt;
 calls=30    yaw=-95.56    pitch=0.02    roll=2.52    com=-95.91    com180=84.09    gyroZ=0.00&lt;br /&gt;
 calls=30    yaw=-95.48    pitch=-0.11    roll=2.33    com=-95.81    com180=84.19    gyroZ=-0.01&lt;br /&gt;
 calls=30    yaw=-95.42    pitch=0.03    roll=2.42    com=-95.65    com180=84.35    gyroZ=-0.00&lt;br /&gt;
 calls=30    yaw=-95.45    pitch=-0.21    roll=2.38    com=-95.35    com180=84.65    gyroZ=-0.00&lt;br /&gt;
&lt;br /&gt;
... turn 180 degree, hold again against table edge ...&lt;br /&gt;
&lt;br /&gt;
 calls=30    yaw=85.06    pitch=-2.50    roll=0.04    com=84.91    com180=-95.09    gyroZ=-0.03&lt;br /&gt;
 calls=30    yaw=84.90    pitch=-2.59    roll=0.05    com=84.63    com180=-95.37    gyroZ=-0.02&lt;br /&gt;
 calls=30    yaw=85.19    pitch=-2.55    roll=0.01    com=84.73    com180=-95.27    gyroZ=-0.01&lt;br /&gt;
 calls=30    yaw=84.98    pitch=-2.73    roll=0.02    com=84.85    com180=-95.15    gyroZ=-0.01&lt;br /&gt;
&lt;br /&gt;
If deviation is more than one degree, repeat calibration steps!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===pfodApp test===&lt;br /&gt;
For a more detailed quality test, you can plot the calibration results (Yaw, Pitch, Roll) via pfodApp. Place the robot on a flat ground and let it rotate (pfodApp: click on &amp;quot;Commands-&amp;gt;Auto rotate&amp;quot; until robot rotates). Alternatively, you can let the robot drive a circle (pfodApp: click &amp;quot;Manual-&amp;gt;Right&amp;quot; until it drives the desired radius). Finally, choose 'Plot-&amp;gt;IMU' to see the calibration result.&lt;br /&gt;
&lt;br /&gt;
For the yaw plot, the curve should be a straight line when the robot is rotating with a constant speed.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Ardumower_screenshot_IMU.png &lt;br /&gt;
File: Ardumower_imu_plotting.jpg&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Calibration (old v0.9.3)=&lt;br /&gt;
==Acceleration sensor==&lt;br /&gt;
This one-time calibration ensures that all 3 axes measurements are weighted equally. This calibration can even be performed externally to the robot.&lt;br /&gt;
&lt;br /&gt;
1. Connect the Arduino Nano to your PC. On the PC, open the serial console (19200) in the Arduino environment. After the automatic gyro calibration menu appears (this can be shown at any time by pressing the &amp;quot;m&amp;quot; + ENTER keys).&lt;br /&gt;
&lt;br /&gt;
2. Start the calibration by pressing &amp;quot;1&amp;quot; + ENTER keys.&lt;br /&gt;
&lt;br /&gt;
2.1. After calibration, each of the 6 sides of the module has to look up-side and down-side (rotated 180 °). The module has 6 sides, so it must be rotated 6 times, so that each side once is on the table (you can hold the module with your hand  without moving it). Press ENTER after each calibration step. The aim of the calibration to determine the acceleration due to gravity (more precisely, the minimum / maximum value) for each axis . The module must not be artificially accelerated. The order of the sides does not matter.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Ardumower_pitch_roll_yaw_imu.png &lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Finally, the calibration values ​​for acceleration sensor are printed out on serial console.&lt;br /&gt;
&lt;br /&gt;
==Compass sensor==&lt;br /&gt;
&lt;br /&gt;
First ensure that the IMU module is mounted on the final position and that entire robotic electronic equipment and metal objects are 30cm or more away from it (ie the sensor is not distracted by metallic objects in its environment).&lt;br /&gt;
&lt;br /&gt;
1. Download ArduMag calibration app for Android.&lt;br /&gt;
2. If not done yet, pair your Android device with the Bluetooth module: On the Android device main screen, choose symbol &amp;quot;Settings&amp;quot; (via Android menu). Now choose  &amp;quot;Wirless and Networks-&amp;gt;Bluetooth Settings&amp;quot; and &amp;quot;Find device&amp;quot;. Finally, choose &amp;quot;pair with this device&amp;quot; and enter your pin (very often &amp;quot;1234&amp;quot;). The Bluetooth module should now appear as &amp;quot;paired&amp;quot;.&lt;br /&gt;
3. In the ArduMag app, press the Android menu key and then &amp;quot;Bluetooth&amp;quot; to connect with your Bluetooth module (and your robot). The robot should confirm the connection with a beep. The number of measurements should increase.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Turn around the robot slowly for all axes and all 6 sides for at least 360 degrees:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Ardumower_compass_calibrate.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The order of the axis of rotation and the direction does not matter. For example, rotate each side 180 degree clockwise and then again 180 degree counterclockwise (result is a 360 degree rotation). The measurements may not fit a sphere.&lt;br /&gt;
Examples:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Ardumag1.png&lt;br /&gt;
File: Ardumag2.png&lt;br /&gt;
File: Ardumag3.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Finally, press 'Calibrate' to finish the calibration. The robot will confirm the calibration with two beeps. The measurements should fit a sphere now.&lt;br /&gt;
Examples:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Ardumag4.png&lt;br /&gt;
File: Ardumag5.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Compass deviation==&lt;br /&gt;
The 'compass deviation calibration' should ensure that all courses are correct (example: south = north + 180 degree). &lt;br /&gt;
&lt;br /&gt;
1. Keep robot on a flat surface, and let it rotate (via pfodApp, press &amp;quot;Commands-&amp;gt;Auto rotate&amp;quot; repeatedly until robot rotates). Alternatively, you can let the robot drive in circles (via pfodApp, press &amp;quot;Manual-&amp;gt;Right&amp;quot; repeatedly until reaching desired radius).&lt;br /&gt;
&lt;br /&gt;
2. Start deviation calibration (pfodApp: &amp;quot;Settings-&amp;gt;IMU-&amp;gt;Start Com Cal Dev&amp;quot;). At each 10 degree step, the Nano LED flashes. After reaching all 360 degrees, the Nano LED stops flashing and the deviation calibration is completed.&lt;br /&gt;
&lt;br /&gt;
==Calibration test==&lt;br /&gt;
=== Testen von Kompass und Neigungswinkeln über die serielle Konsole ===&lt;br /&gt;
Folgende Werte gibt der Arduino aus:&lt;br /&gt;
&lt;br /&gt;
 yaw: Course/Yaw (see above figure)&lt;br /&gt;
 pitch: Pitch angle (see above figure)&lt;br /&gt;
 roll: Roll angle (see above figure)&lt;br /&gt;
 frequency: Number of measurements per second (100)&lt;br /&gt;
 latency: Number of latency overflows (0)&lt;br /&gt;
 access: Number of external access counts (from Arduino Mega)&lt;br /&gt;
&lt;br /&gt;
=== Testen per LED ===&lt;br /&gt;
Align the compass facing north, south, east, west - the LED should go ON. Between them it should go OFF. North, south and east, west about should be opposite.&lt;br /&gt;
&lt;br /&gt;
=== Testen per Android pfodApp ===&lt;br /&gt;
You can plot the results of the IMU module (yaw, pitch, roll) using pfodApp.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Videos =&lt;br /&gt;
#[http://www.youtube.com/watch?v=pyTy1Swom-8 Tanz des Roboters]&lt;br /&gt;
#[http://www.youtube.com/watch?v=V9dE4Kfoz9I&amp;amp;feature=youtu.be Spur halten]&lt;br /&gt;
#[https://www.youtube.com/watch?v=A-11khSzq1U Parallele Bahnen fahren]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= weiterführende Links =&lt;/div&gt;</summary>
		<author><name>Pemiso</name></author>	</entry>

	<entry>
		<id>https://wiki.ardumower.de/index.php?title=Inertialsensor_-_IMU&amp;diff=2520</id>
		<title>Inertialsensor - IMU</title>
		<link rel="alternate" type="text/html" href="https://wiki.ardumower.de/index.php?title=Inertialsensor_-_IMU&amp;diff=2520"/>
				<updated>2015-07-19T14:07:15Z</updated>
		
		<summary type="html">&lt;p&gt;Pemiso: /* Abstract */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Zusammenfassung=&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File:Imu.jpg&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ein Modul namens IMU (Intertia Measurement Unit) ist das Herzstück eines Trägheitsnavigationssystems, mit dem wir folgendes erreichen können:&lt;br /&gt;
*feststellen, ob der Ardumower umgekippt ist (Neigungswinkel)&lt;br /&gt;
*regeln einer exakten Geradeausfahrt z.B: für das Mähen in parallelen Bahnen&lt;br /&gt;
&lt;br /&gt;
= Beschleunigungssensor =&lt;br /&gt;
An acceleration sensor measures earth gravity force (m*s^2) in all 3 robot axes (x/y/z) allowing you to calculate the orientation towards earth center of the robot (Roll, Pitch). However, it cannot detect movement around Yaw - this requires a gyro.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Ardumower_pitch_roll_yaw.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Gyro=&lt;br /&gt;
A gyro measures rotational speed (degree/second) in all 3 robot axes (Roll, Pitch, Yaw). This allows us to correct the robot if it is driving 'off-course' due to wet conditions or slope. When integrating (adding) gyro values over time, the actual course (yaw) can be calculated. However, because each sensor reading has a small error, the course will 'drift' over time. This needs to be corrected via an absolute heading sensor (compass).&lt;br /&gt;
&lt;br /&gt;
Typical gyro measurement errors:&lt;br /&gt;
&lt;br /&gt;
                 noise dps/sqrt(Hz)&lt;br /&gt;
 L3G4200D        0.03&lt;br /&gt;
 BMG160/BNO055   0.014&lt;br /&gt;
 MPU9150         0.005&lt;br /&gt;
&lt;br /&gt;
=Compass=&lt;br /&gt;
If a robot drives on a wet lawn, you'll notice quickly that it will not drive straight forward, but instead tends to drive into the direction of the slope. Reading a compass heading can solve this problem and the robot will drive straight forward again .&lt;br /&gt;
&lt;br /&gt;
However, a compass has two problems: &lt;br /&gt;
&lt;br /&gt;
# If tilting the robot, the compass measurements (x,y,z) relate to the tilted robot. So, you need to correct them using knowing the tilt angles. This requires the use of the accerlation sensor (x,y).&lt;br /&gt;
# The compass measurements are influenced by motors. So you may need to switch of the motor to get an accurate measurement.&lt;br /&gt;
&lt;br /&gt;
=Sensor fusion=&lt;br /&gt;
To eliminate the issues of all sensor, they are merged to compute the course (degree) and pitch/roll angles.&lt;br /&gt;
&lt;br /&gt;
We use a complementary filter to fusion all sensor values.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Ardumower_sensor_fusion.png  | IMU sensor fusion&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Additionally, gyro/acceleration and compass sensors can be further input to a [http://wiki.ardumower.de/index.php?title=Sensor_fusion position estimation].&lt;br /&gt;
&lt;br /&gt;
=IMU modules=&lt;br /&gt;
&lt;br /&gt;
GY-80&lt;br /&gt;
*Acceleration sensor: ADXL345B&lt;br /&gt;
*Compass sensor: HMC5883L&lt;br /&gt;
*Gyro: L3G4200D&lt;br /&gt;
*Pressure sensor: BMP085  (not used here)&lt;br /&gt;
&lt;br /&gt;
MPU9150&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Gy80.jpg | GY-80 module&lt;br /&gt;
File: GY80-Schematic.jpg | GY-80 schematics&lt;br /&gt;
File: Mpu9150.jpg | MPU9150 module  (in development/testing)&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Assembly=&lt;br /&gt;
This photo shows how the IMU module is placed in the driving position (the black arrow shows the driving position). The tube shown was needed to ensure a minimum distance of 30cm from all motors. This minimum distance seems to be needed to ensure the compass is not disturbed by dynamically disturbing sources (like motors).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Gy80_direction.jpg  | GY-80 assembly&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Calibration abstract=&lt;br /&gt;
This one-time calibration ensures that:&lt;br /&gt;
*All 3 axes measurements of the acceleration sensor are weighted equally. This calibration can even be performed externally to the robot.&lt;br /&gt;
*Cables, metal, etc. which are located in the robot near the IMU module have no effect on the compass data.&lt;br /&gt;
&lt;br /&gt;
Why is it needed?&lt;br /&gt;
The origin of a 3D compass point is 0,0,0 (x,y,z) and points to the north pole. If the 3D compass is rotated around all of its axes i.e. all values of x, y and z are measured then these points will ​​lie on a sphere. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Compass_sphere.png &lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you add a magnetic material (e.g. metal) near the compass, the measured values ​​from the origin (0,0,0) of the sensor suddenly point in one direction only - Why?&lt;br /&gt;
There are two types of disturbances of the magnetic field which change / move the values​​:&lt;br /&gt;
&lt;br /&gt;
*Hard ircon (e.g. magnets): the sphere moves&lt;br /&gt;
*Soft ircon (e.g. metal): the sphere deforms (becomes an Ellipsoid)&lt;br /&gt;
&lt;br /&gt;
Example measurements&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Compass_ellipsoid.jpg   | Uncalibrated readings do not lie on a sphere but on an ellipsoid and have shifted from the origin of the sensor&lt;br /&gt;
File: Compass_ellipsoid_cal1.jpg | Shift-corrected values&lt;br /&gt;
File: Compass_ellipsoid_cal2.jpg | Calibrated values ​​are now reformed (or undeformed) again on a sphere, centered around the origin of the sensor&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The goal of the calibration is that the measurements are centered again on a sphere around the origin of the sensor.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Calibration (latest version)=&lt;br /&gt;
==Acceleration sensor==&lt;br /&gt;
&lt;br /&gt;
This calibration can be performed outside of the robot. Place each of the 6 module sides exactly upright, do not move and choose 'next side calibration':&lt;br /&gt;
&lt;br /&gt;
*Via serial console &amp;quot;IMU acc calibration next side&amp;quot; OR&lt;br /&gt;
*Via pfodApp &amp;quot;Settings-&amp;gt;IMU-&amp;gt;acc calibration next side&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Do not move the module during the measurement of each side! During measurement you will hear a short beep tone.&lt;br /&gt;
&lt;br /&gt;
Repeat this step for all 6 sides. After all 6 sides are calibrated, you will hear a short melody.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Gy80_acc_calibration.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Compass sensor==&lt;br /&gt;
This calibration can be performed outside or inside of the robot (in its final position). Make sure the module is far away from magnetic fields or ferreous sources! Start the compass calibration:&lt;br /&gt;
&lt;br /&gt;
*Via serial console &amp;quot;IMU com calibration start/stop&amp;quot; OR&lt;br /&gt;
*Via pfodApp &amp;quot;Settings-&amp;gt;IMU-&amp;gt;com calibration start/stop&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hold each of the 6 module sides to North direction and tilt the module until minimum and maximum of the axis does not change anymore (until no tone is outputted anymore):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Gy80_com_calibration.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Calibration quality test==&lt;br /&gt;
&lt;br /&gt;
===Table test===&lt;br /&gt;
For testing calibration quality, hold module (parts upside) against a table edge and do not move. Write down the Yaw-value (example: -95,45). Then rotate the module by 180 degree and hold it again against the table edge. Now the Yaw-value should output 180 degree away (example: -95,45 + 180 = 84,55). Repeat this test for both remaining sides of the module. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Gy80_calibration_check.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
... hold module against a table edge ...&lt;br /&gt;
&lt;br /&gt;
 calls=30    yaw=-95.56    pitch=0.02    roll=2.52    com=-95.91    com180=84.09    gyroZ=0.00&lt;br /&gt;
 calls=30    yaw=-95.48    pitch=-0.11    roll=2.33    com=-95.81    com180=84.19    gyroZ=-0.01&lt;br /&gt;
 calls=30    yaw=-95.42    pitch=0.03    roll=2.42    com=-95.65    com180=84.35    gyroZ=-0.00&lt;br /&gt;
 calls=30    yaw=-95.45    pitch=-0.21    roll=2.38    com=-95.35    com180=84.65    gyroZ=-0.00&lt;br /&gt;
&lt;br /&gt;
... turn 180 degree, hold again against table edge ...&lt;br /&gt;
&lt;br /&gt;
 calls=30    yaw=85.06    pitch=-2.50    roll=0.04    com=84.91    com180=-95.09    gyroZ=-0.03&lt;br /&gt;
 calls=30    yaw=84.90    pitch=-2.59    roll=0.05    com=84.63    com180=-95.37    gyroZ=-0.02&lt;br /&gt;
 calls=30    yaw=85.19    pitch=-2.55    roll=0.01    com=84.73    com180=-95.27    gyroZ=-0.01&lt;br /&gt;
 calls=30    yaw=84.98    pitch=-2.73    roll=0.02    com=84.85    com180=-95.15    gyroZ=-0.01&lt;br /&gt;
&lt;br /&gt;
If deviation is more than one degree, repeat calibration steps!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===pfodApp test===&lt;br /&gt;
For a more detailed quality test, you can plot the calibration results (Yaw, Pitch, Roll) via pfodApp. Place the robot on a flat ground and let it rotate (pfodApp: click on &amp;quot;Commands-&amp;gt;Auto rotate&amp;quot; until robot rotates). Alternatively, you can let the robot drive a circle (pfodApp: click &amp;quot;Manual-&amp;gt;Right&amp;quot; until it drives the desired radius). Finally, choose 'Plot-&amp;gt;IMU' to see the calibration result.&lt;br /&gt;
&lt;br /&gt;
For the yaw plot, the curve should be a straight line when the robot is rotating with a constant speed.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Ardumower_screenshot_IMU.png &lt;br /&gt;
File: Ardumower_imu_plotting.jpg&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Calibration (old v0.9.3)=&lt;br /&gt;
==Acceleration sensor==&lt;br /&gt;
This one-time calibration ensures that all 3 axes measurements are weighted equally. This calibration can even be performed externally to the robot.&lt;br /&gt;
&lt;br /&gt;
1. Connect the Arduino Nano to your PC. On the PC, open the serial console (19200) in the Arduino environment. After the automatic gyro calibration menu appears (this can be shown at any time by pressing the &amp;quot;m&amp;quot; + ENTER keys).&lt;br /&gt;
&lt;br /&gt;
2. Start the calibration by pressing &amp;quot;1&amp;quot; + ENTER keys.&lt;br /&gt;
&lt;br /&gt;
2.1. After calibration, each of the 6 sides of the module has to look up-side and down-side (rotated 180 °). The module has 6 sides, so it must be rotated 6 times, so that each side once is on the table (you can hold the module with your hand  without moving it). Press ENTER after each calibration step. The aim of the calibration to determine the acceleration due to gravity (more precisely, the minimum / maximum value) for each axis . The module must not be artificially accelerated. The order of the sides does not matter.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Ardumower_pitch_roll_yaw_imu.png &lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Finally, the calibration values ​​for acceleration sensor are printed out on serial console.&lt;br /&gt;
&lt;br /&gt;
==Compass sensor==&lt;br /&gt;
&lt;br /&gt;
First ensure that the IMU module is mounted on the final position and that entire robotic electronic equipment and metal objects are 30cm or more away from it (ie the sensor is not distracted by metallic objects in its environment).&lt;br /&gt;
&lt;br /&gt;
1. Download ArduMag calibration app for Android.&lt;br /&gt;
2. If not done yet, pair your Android device with the Bluetooth module: On the Android device main screen, choose symbol &amp;quot;Settings&amp;quot; (via Android menu). Now choose  &amp;quot;Wirless and Networks-&amp;gt;Bluetooth Settings&amp;quot; and &amp;quot;Find device&amp;quot;. Finally, choose &amp;quot;pair with this device&amp;quot; and enter your pin (very often &amp;quot;1234&amp;quot;). The Bluetooth module should now appear as &amp;quot;paired&amp;quot;.&lt;br /&gt;
3. In the ArduMag app, press the Android menu key and then &amp;quot;Bluetooth&amp;quot; to connect with your Bluetooth module (and your robot). The robot should confirm the connection with a beep. The number of measurements should increase.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Turn around the robot slowly for all axes and all 6 sides for at least 360 degrees:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Ardumower_compass_calibrate.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The order of the axis of rotation and the direction does not matter. For example, rotate each side 180 degree clockwise and then again 180 degree counterclockwise (result is a 360 degree rotation). The measurements may not fit a sphere.&lt;br /&gt;
Examples:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Ardumag1.png&lt;br /&gt;
File: Ardumag2.png&lt;br /&gt;
File: Ardumag3.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Finally, press 'Calibrate' to finish the calibration. The robot will confirm the calibration with two beeps. The measurements should fit a sphere now.&lt;br /&gt;
Examples:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Ardumag4.png&lt;br /&gt;
File: Ardumag5.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Compass deviation==&lt;br /&gt;
The 'compass deviation calibration' should ensure that all courses are correct (example: south = north + 180 degree). &lt;br /&gt;
&lt;br /&gt;
1. Keep robot on a flat surface, and let it rotate (via pfodApp, press &amp;quot;Commands-&amp;gt;Auto rotate&amp;quot; repeatedly until robot rotates). Alternatively, you can let the robot drive in circles (via pfodApp, press &amp;quot;Manual-&amp;gt;Right&amp;quot; repeatedly until reaching desired radius).&lt;br /&gt;
&lt;br /&gt;
2. Start deviation calibration (pfodApp: &amp;quot;Settings-&amp;gt;IMU-&amp;gt;Start Com Cal Dev&amp;quot;). At each 10 degree step, the Nano LED flashes. After reaching all 360 degrees, the Nano LED stops flashing and the deviation calibration is completed.&lt;br /&gt;
&lt;br /&gt;
==Calibration test==&lt;br /&gt;
=== Testen von Kompass und Neigungswinkeln über die serielle Konsole ===&lt;br /&gt;
Folgende Werte gibt der Arduino aus:&lt;br /&gt;
&lt;br /&gt;
 yaw: Course/Yaw (see above figure)&lt;br /&gt;
 pitch: Pitch angle (see above figure)&lt;br /&gt;
 roll: Roll angle (see above figure)&lt;br /&gt;
 frequency: Number of measurements per second (100)&lt;br /&gt;
 latency: Number of latency overflows (0)&lt;br /&gt;
 access: Number of external access counts (from Arduino Mega)&lt;br /&gt;
&lt;br /&gt;
=== Testen per LED ===&lt;br /&gt;
Align the compass facing north, south, east, west - the LED should go ON. Between them it should go OFF. North, south and east, west about should be opposite.&lt;br /&gt;
&lt;br /&gt;
=== Testen per Android pfodApp ===&lt;br /&gt;
You can plot the results of the IMU module (yaw, pitch, roll) using pfodApp.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Videos =&lt;br /&gt;
#[http://www.youtube.com/watch?v=pyTy1Swom-8 Tanz des Roboters]&lt;br /&gt;
#[http://www.youtube.com/watch?v=V9dE4Kfoz9I&amp;amp;feature=youtu.be Spur halten]&lt;br /&gt;
#[https://www.youtube.com/watch?v=A-11khSzq1U Parallele Bahnen fahren]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= weiterführende Links =&lt;/div&gt;</summary>
		<author><name>Pemiso</name></author>	</entry>

	<entry>
		<id>https://wiki.ardumower.de/index.php?title=Inertialsensor_-_IMU&amp;diff=2509</id>
		<title>Inertialsensor - IMU</title>
		<link rel="alternate" type="text/html" href="https://wiki.ardumower.de/index.php?title=Inertialsensor_-_IMU&amp;diff=2509"/>
				<updated>2015-07-16T17:03:15Z</updated>
		
		<summary type="html">&lt;p&gt;Pemiso: /* Acceleration sensor */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Abstract=&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File:Imu.jpg&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ein Modul namens IMU (Intertia Measurement Unit) ist das Herzstück eines Trägheitsnavigationssystems, mit dem wir folgendes erreichen können:&lt;br /&gt;
*feststellen, ob der Ardumower umgekippt ist (Neigungswinkel)&lt;br /&gt;
*regeln einer exakten Geradeausfahrt z.B: für das Mähen in parallelen Bahnen&lt;br /&gt;
&lt;br /&gt;
= Beschleunigungssensor =&lt;br /&gt;
An acceleration sensor measures earth gravity force (m*s^2) in all 3 robot axes (x/y/z) allowing you to calculate the orientation towards earth center of the robot (Roll, Pitch). However, it cannot detect movement around Yaw - this requires a gyro.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Ardumower_pitch_roll_yaw.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Gyro=&lt;br /&gt;
A gyro measures rotational speed (degree/second) in all 3 robot axes (Roll, Pitch, Yaw). This allows us to correct the robot if it is driving 'off-course' due to wet conditions or slope. When integrating (adding) gyro values over time, the actual course (yaw) can be calculated. However, because each sensor reading has a small error, the course will 'drift' over time. This needs to be corrected via an absolute heading sensor (compass).&lt;br /&gt;
&lt;br /&gt;
Typical gyro measurement errors:&lt;br /&gt;
&lt;br /&gt;
                 noise dps/sqrt(Hz)&lt;br /&gt;
 L3G4200D        0.03&lt;br /&gt;
 BMG160/BNO055   0.014&lt;br /&gt;
 MPU9150         0.005&lt;br /&gt;
&lt;br /&gt;
=Compass=&lt;br /&gt;
If a robot drives on a wet lawn, you'll notice quickly that it will not drive straight forward, but instead tends to drive into the direction of the slope. Reading a compass heading can solve this problem and the robot will drive straight forward again .&lt;br /&gt;
&lt;br /&gt;
However, a compass has two problems: &lt;br /&gt;
&lt;br /&gt;
# If tilting the robot, the compass measurements (x,y,z) relate to the tilted robot. So, you need to correct them using knowing the tilt angles. This requires the use of the accerlation sensor (x,y).&lt;br /&gt;
# The compass measurements are influenced by motors. So you may need to switch of the motor to get an accurate measurement.&lt;br /&gt;
&lt;br /&gt;
=Sensor fusion=&lt;br /&gt;
To eliminate the issues of all sensor, they are merged to compute the course (degree) and pitch/roll angles.&lt;br /&gt;
&lt;br /&gt;
We use a complementary filter to fusion all sensor values.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Ardumower_sensor_fusion.png  | IMU sensor fusion&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Additionally, gyro/acceleration and compass sensors can be further input to a [http://wiki.ardumower.de/index.php?title=Sensor_fusion position estimation].&lt;br /&gt;
&lt;br /&gt;
=IMU modules=&lt;br /&gt;
&lt;br /&gt;
GY-80&lt;br /&gt;
*Acceleration sensor: ADXL345B&lt;br /&gt;
*Compass sensor: HMC5883L&lt;br /&gt;
*Gyro: L3G4200D&lt;br /&gt;
*Pressure sensor: BMP085  (not used here)&lt;br /&gt;
&lt;br /&gt;
MPU9150&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Gy80.jpg | GY-80 module&lt;br /&gt;
File: GY80-Schematic.jpg | GY-80 schematics&lt;br /&gt;
File: Mpu9150.jpg | MPU9150 module  (in development/testing)&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Assembly=&lt;br /&gt;
This photo shows how the IMU module is placed in the driving position (the black arrow shows the driving position). The tube shown was needed to ensure a minimum distance of 30cm from all motors. This minimum distance seems to be needed to ensure the compass is not disturbed by dynamically disturbing sources (like motors).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Gy80_direction.jpg  | GY-80 assembly&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Calibration abstract=&lt;br /&gt;
This one-time calibration ensures that:&lt;br /&gt;
*All 3 axes measurements of the acceleration sensor are weighted equally. This calibration can even be performed externally to the robot.&lt;br /&gt;
*Cables, metal, etc. which are located in the robot near the IMU module have no effect on the compass data.&lt;br /&gt;
&lt;br /&gt;
Why is it needed?&lt;br /&gt;
The origin of a 3D compass point is 0,0,0 (x,y,z) and points to the north pole. If the 3D compass is rotated around all of its axes i.e. all values of x, y and z are measured then these points will ​​lie on a sphere. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Compass_sphere.png &lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you add a magnetic material (e.g. metal) near the compass, the measured values ​​from the origin (0,0,0) of the sensor suddenly point in one direction only - Why?&lt;br /&gt;
There are two types of disturbances of the magnetic field which change / move the values​​:&lt;br /&gt;
&lt;br /&gt;
*Hard ircon (e.g. magnets): the sphere moves&lt;br /&gt;
*Soft ircon (e.g. metal): the sphere deforms (becomes an Ellipsoid)&lt;br /&gt;
&lt;br /&gt;
Example measurements&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Compass_ellipsoid.jpg   | Uncalibrated readings do not lie on a sphere but on an ellipsoid and have shifted from the origin of the sensor&lt;br /&gt;
File: Compass_ellipsoid_cal1.jpg | Shift-corrected values&lt;br /&gt;
File: Compass_ellipsoid_cal2.jpg | Calibrated values ​​are now reformed (or undeformed) again on a sphere, centered around the origin of the sensor&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The goal of the calibration is that the measurements are centered again on a sphere around the origin of the sensor.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Calibration (latest version)=&lt;br /&gt;
==Acceleration sensor==&lt;br /&gt;
&lt;br /&gt;
This calibration can be performed outside of the robot. Place each of the 6 module sides exactly upright, do not move and choose 'next side calibration':&lt;br /&gt;
&lt;br /&gt;
*Via serial console &amp;quot;IMU acc calibration next side&amp;quot; OR&lt;br /&gt;
*Via pfodApp &amp;quot;Settings-&amp;gt;IMU-&amp;gt;acc calibration next side&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Do not move the module during the measurement of each side! During measurement you will hear a short beep tone.&lt;br /&gt;
&lt;br /&gt;
Repeat this step for all 6 sides. After all 6 sides are calibrated, you will hear a short melody.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Gy80_acc_calibration.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Compass sensor==&lt;br /&gt;
This calibration can be performed outside or inside of the robot (in its final position). Make sure the module is far away from magnetic fields or ferreous sources! Start the compass calibration:&lt;br /&gt;
&lt;br /&gt;
*Via serial console &amp;quot;IMU com calibration start/stop&amp;quot; OR&lt;br /&gt;
*Via pfodApp &amp;quot;Settings-&amp;gt;IMU-&amp;gt;com calibration start/stop&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hold each of the 6 module sides to North direction and tilt the module until minimum and maximum of the axis does not change anymore (until no tone is outputted anymore):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Gy80_com_calibration.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Calibration quality test==&lt;br /&gt;
&lt;br /&gt;
===Table test===&lt;br /&gt;
For testing calibration quality, hold module (parts upside) against a table edge and do not move. Write down the Yaw-value (example: -95,45). Then rotate the module by 180 degree and hold it again against the table edge. Now the Yaw-value should output 180 degree away (example: -95,45 + 180 = 84,55). Repeat this test for both remaining sides of the module. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Gy80_calibration_check.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
... hold module against a table edge ...&lt;br /&gt;
&lt;br /&gt;
 calls=30    yaw=-95.56    pitch=0.02    roll=2.52    com=-95.91    com180=84.09    gyroZ=0.00&lt;br /&gt;
 calls=30    yaw=-95.48    pitch=-0.11    roll=2.33    com=-95.81    com180=84.19    gyroZ=-0.01&lt;br /&gt;
 calls=30    yaw=-95.42    pitch=0.03    roll=2.42    com=-95.65    com180=84.35    gyroZ=-0.00&lt;br /&gt;
 calls=30    yaw=-95.45    pitch=-0.21    roll=2.38    com=-95.35    com180=84.65    gyroZ=-0.00&lt;br /&gt;
&lt;br /&gt;
... turn 180 degree, hold again against table edge ...&lt;br /&gt;
&lt;br /&gt;
 calls=30    yaw=85.06    pitch=-2.50    roll=0.04    com=84.91    com180=-95.09    gyroZ=-0.03&lt;br /&gt;
 calls=30    yaw=84.90    pitch=-2.59    roll=0.05    com=84.63    com180=-95.37    gyroZ=-0.02&lt;br /&gt;
 calls=30    yaw=85.19    pitch=-2.55    roll=0.01    com=84.73    com180=-95.27    gyroZ=-0.01&lt;br /&gt;
 calls=30    yaw=84.98    pitch=-2.73    roll=0.02    com=84.85    com180=-95.15    gyroZ=-0.01&lt;br /&gt;
&lt;br /&gt;
If deviation is more than one degree, repeat calibration steps!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===pfodApp test===&lt;br /&gt;
For a more detailed quality test, you can plot the calibration results (Yaw, Pitch, Roll) via pfodApp. Place the robot on a flat ground and let it rotate (pfodApp: click on &amp;quot;Commands-&amp;gt;Auto rotate&amp;quot; until robot rotates). Alternatively, you can let the robot drive a circle (pfodApp: click &amp;quot;Manual-&amp;gt;Right&amp;quot; until it drives the desired radius). Finally, choose 'Plot-&amp;gt;IMU' to see the calibration result.&lt;br /&gt;
&lt;br /&gt;
For the yaw plot, the curve should be a straight line when the robot is rotating with a constant speed.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Ardumower_screenshot_IMU.png &lt;br /&gt;
File: Ardumower_imu_plotting.jpg&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Calibration (old v0.9.3)=&lt;br /&gt;
==Acceleration sensor==&lt;br /&gt;
This one-time calibration ensures that all 3 axes measurements are weighted equally. This calibration can even be performed externally to the robot.&lt;br /&gt;
&lt;br /&gt;
1. Connect the Arduino Nano to your PC. On the PC, open the serial console (19200) in the Arduino environment. After the automatic gyro calibration menu appears (this can be shown at any time by pressing the &amp;quot;m&amp;quot; + ENTER keys).&lt;br /&gt;
&lt;br /&gt;
2. Start the calibration by pressing &amp;quot;1&amp;quot; + ENTER keys.&lt;br /&gt;
&lt;br /&gt;
2.1. After calibration, each of the 6 sides of the module has to look up-side and down-side (rotated 180 °). The module has 6 sides, so it must be rotated 6 times, so that each side once is on the table (you can hold the module with your hand  without moving it). Press ENTER after each calibration step. The aim of the calibration to determine the acceleration due to gravity (more precisely, the minimum / maximum value) for each axis . The module must not be artificially accelerated. The order of the sides does not matter.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Ardumower_pitch_roll_yaw_imu.png &lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Finally, the calibration values ​​for acceleration sensor are printed out on serial console.&lt;br /&gt;
&lt;br /&gt;
==Compass sensor==&lt;br /&gt;
&lt;br /&gt;
First ensure that the IMU module is mounted on the final position and that entire robotic electronic equipment and metal objects are 30cm or more away from it (ie the sensor is not distracted by metallic objects in its environment).&lt;br /&gt;
&lt;br /&gt;
1. Download ArduMag calibration app for Android.&lt;br /&gt;
2. If not done yet, pair your Android device with the Bluetooth module: On the Android device main screen, choose symbol &amp;quot;Settings&amp;quot; (via Android menu). Now choose  &amp;quot;Wirless and Networks-&amp;gt;Bluetooth Settings&amp;quot; and &amp;quot;Find device&amp;quot;. Finally, choose &amp;quot;pair with this device&amp;quot; and enter your pin (very often &amp;quot;1234&amp;quot;). The Bluetooth module should now appear as &amp;quot;paired&amp;quot;.&lt;br /&gt;
3. In the ArduMag app, press the Android menu key and then &amp;quot;Bluetooth&amp;quot; to connect with your Bluetooth module (and your robot). The robot should confirm the connection with a beep. The number of measurements should increase.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Turn around the robot slowly for all axes and all 6 sides for at least 360 degrees:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Ardumower_compass_calibrate.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The order of the axis of rotation and the direction does not matter. For example, rotate each side 180 degree clockwise and then again 180 degree counterclockwise (result is a 360 degree rotation). The measurements may not fit a sphere.&lt;br /&gt;
Examples:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Ardumag1.png&lt;br /&gt;
File: Ardumag2.png&lt;br /&gt;
File: Ardumag3.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Finally, press 'Calibrate' to finish the calibration. The robot will confirm the calibration with two beeps. The measurements should fit a sphere now.&lt;br /&gt;
Examples:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Ardumag4.png&lt;br /&gt;
File: Ardumag5.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Compass deviation==&lt;br /&gt;
The 'compass deviation calibration' should ensure that all courses are correct (example: south = north + 180 degree). &lt;br /&gt;
&lt;br /&gt;
1. Keep robot on a flat surface, and let it rotate (via pfodApp, press &amp;quot;Commands-&amp;gt;Auto rotate&amp;quot; repeatedly until robot rotates). Alternatively, you can let the robot drive in circles (via pfodApp, press &amp;quot;Manual-&amp;gt;Right&amp;quot; repeatedly until reaching desired radius).&lt;br /&gt;
&lt;br /&gt;
2. Start deviation calibration (pfodApp: &amp;quot;Settings-&amp;gt;IMU-&amp;gt;Start Com Cal Dev&amp;quot;). At each 10 degree step, the Nano LED flashes. After reaching all 360 degrees, the Nano LED stops flashing and the deviation calibration is completed.&lt;br /&gt;
&lt;br /&gt;
==Calibration test==&lt;br /&gt;
=== Testen von Kompass und Neigungswinkeln über die serielle Konsole ===&lt;br /&gt;
Folgende Werte gibt der Arduino aus:&lt;br /&gt;
&lt;br /&gt;
 yaw: Course/Yaw (see above figure)&lt;br /&gt;
 pitch: Pitch angle (see above figure)&lt;br /&gt;
 roll: Roll angle (see above figure)&lt;br /&gt;
 frequency: Number of measurements per second (100)&lt;br /&gt;
 latency: Number of latency overflows (0)&lt;br /&gt;
 access: Number of external access counts (from Arduino Mega)&lt;br /&gt;
&lt;br /&gt;
=== Testen per LED ===&lt;br /&gt;
Align the compass facing north, south, east, west - the LED should go ON. Between them it should go OFF. North, south and east, west about should be opposite.&lt;br /&gt;
&lt;br /&gt;
=== Testen per Android pfodApp ===&lt;br /&gt;
You can plot the results of the IMU module (yaw, pitch, roll) using pfodApp.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Videos =&lt;br /&gt;
#[http://www.youtube.com/watch?v=pyTy1Swom-8 Tanz des Roboters]&lt;br /&gt;
#[http://www.youtube.com/watch?v=V9dE4Kfoz9I&amp;amp;feature=youtu.be Spur halten]&lt;br /&gt;
#[https://www.youtube.com/watch?v=A-11khSzq1U Parallele Bahnen fahren]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= weiterführende Links =&lt;/div&gt;</summary>
		<author><name>Pemiso</name></author>	</entry>

	<entry>
		<id>https://wiki.ardumower.de/index.php?title=Inertialsensor_-_IMU&amp;diff=2508</id>
		<title>Inertialsensor - IMU</title>
		<link rel="alternate" type="text/html" href="https://wiki.ardumower.de/index.php?title=Inertialsensor_-_IMU&amp;diff=2508"/>
				<updated>2015-07-16T17:02:03Z</updated>
		
		<summary type="html">&lt;p&gt;Pemiso: /* Abstract */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Abstract=&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File:Imu.jpg&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ein Modul namens IMU (Intertia Measurement Unit) ist das Herzstück eines Trägheitsnavigationssystems, mit dem wir folgendes erreichen können:&lt;br /&gt;
*feststellen, ob der Ardumower umgekippt ist (Neigungswinkel)&lt;br /&gt;
*regeln einer exakten Geradeausfahrt z.B: für das Mähen in parallelen Bahnen&lt;br /&gt;
&lt;br /&gt;
=Acceleration sensor=&lt;br /&gt;
An acceleration sensor measures earth gravity force (m*s^2) in all 3 robot axes (x/y/z) allowing you to calculate the orientation towards earth center of the robot (Roll, Pitch). However, it cannot detect movement around Yaw - this requires a gyro.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Ardumower_pitch_roll_yaw.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Gyro=&lt;br /&gt;
A gyro measures rotational speed (degree/second) in all 3 robot axes (Roll, Pitch, Yaw). This allows us to correct the robot if it is driving 'off-course' due to wet conditions or slope. When integrating (adding) gyro values over time, the actual course (yaw) can be calculated. However, because each sensor reading has a small error, the course will 'drift' over time. This needs to be corrected via an absolute heading sensor (compass).&lt;br /&gt;
&lt;br /&gt;
Typical gyro measurement errors:&lt;br /&gt;
&lt;br /&gt;
                 noise dps/sqrt(Hz)&lt;br /&gt;
 L3G4200D        0.03&lt;br /&gt;
 BMG160/BNO055   0.014&lt;br /&gt;
 MPU9150         0.005&lt;br /&gt;
&lt;br /&gt;
=Compass=&lt;br /&gt;
If a robot drives on a wet lawn, you'll notice quickly that it will not drive straight forward, but instead tends to drive into the direction of the slope. Reading a compass heading can solve this problem and the robot will drive straight forward again .&lt;br /&gt;
&lt;br /&gt;
However, a compass has two problems: &lt;br /&gt;
&lt;br /&gt;
# If tilting the robot, the compass measurements (x,y,z) relate to the tilted robot. So, you need to correct them using knowing the tilt angles. This requires the use of the accerlation sensor (x,y).&lt;br /&gt;
# The compass measurements are influenced by motors. So you may need to switch of the motor to get an accurate measurement.&lt;br /&gt;
&lt;br /&gt;
=Sensor fusion=&lt;br /&gt;
To eliminate the issues of all sensor, they are merged to compute the course (degree) and pitch/roll angles.&lt;br /&gt;
&lt;br /&gt;
We use a complementary filter to fusion all sensor values.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Ardumower_sensor_fusion.png  | IMU sensor fusion&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Additionally, gyro/acceleration and compass sensors can be further input to a [http://wiki.ardumower.de/index.php?title=Sensor_fusion position estimation].&lt;br /&gt;
&lt;br /&gt;
=IMU modules=&lt;br /&gt;
&lt;br /&gt;
GY-80&lt;br /&gt;
*Acceleration sensor: ADXL345B&lt;br /&gt;
*Compass sensor: HMC5883L&lt;br /&gt;
*Gyro: L3G4200D&lt;br /&gt;
*Pressure sensor: BMP085  (not used here)&lt;br /&gt;
&lt;br /&gt;
MPU9150&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Gy80.jpg | GY-80 module&lt;br /&gt;
File: GY80-Schematic.jpg | GY-80 schematics&lt;br /&gt;
File: Mpu9150.jpg | MPU9150 module  (in development/testing)&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Assembly=&lt;br /&gt;
This photo shows how the IMU module is placed in the driving position (the black arrow shows the driving position). The tube shown was needed to ensure a minimum distance of 30cm from all motors. This minimum distance seems to be needed to ensure the compass is not disturbed by dynamically disturbing sources (like motors).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Gy80_direction.jpg  | GY-80 assembly&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Calibration abstract=&lt;br /&gt;
This one-time calibration ensures that:&lt;br /&gt;
*All 3 axes measurements of the acceleration sensor are weighted equally. This calibration can even be performed externally to the robot.&lt;br /&gt;
*Cables, metal, etc. which are located in the robot near the IMU module have no effect on the compass data.&lt;br /&gt;
&lt;br /&gt;
Why is it needed?&lt;br /&gt;
The origin of a 3D compass point is 0,0,0 (x,y,z) and points to the north pole. If the 3D compass is rotated around all of its axes i.e. all values of x, y and z are measured then these points will ​​lie on a sphere. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Compass_sphere.png &lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you add a magnetic material (e.g. metal) near the compass, the measured values ​​from the origin (0,0,0) of the sensor suddenly point in one direction only - Why?&lt;br /&gt;
There are two types of disturbances of the magnetic field which change / move the values​​:&lt;br /&gt;
&lt;br /&gt;
*Hard ircon (e.g. magnets): the sphere moves&lt;br /&gt;
*Soft ircon (e.g. metal): the sphere deforms (becomes an Ellipsoid)&lt;br /&gt;
&lt;br /&gt;
Example measurements&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Compass_ellipsoid.jpg   | Uncalibrated readings do not lie on a sphere but on an ellipsoid and have shifted from the origin of the sensor&lt;br /&gt;
File: Compass_ellipsoid_cal1.jpg | Shift-corrected values&lt;br /&gt;
File: Compass_ellipsoid_cal2.jpg | Calibrated values ​​are now reformed (or undeformed) again on a sphere, centered around the origin of the sensor&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The goal of the calibration is that the measurements are centered again on a sphere around the origin of the sensor.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Calibration (latest version)=&lt;br /&gt;
==Acceleration sensor==&lt;br /&gt;
&lt;br /&gt;
This calibration can be performed outside of the robot. Place each of the 6 module sides exactly upright, do not move and choose 'next side calibration':&lt;br /&gt;
&lt;br /&gt;
*Via serial console &amp;quot;IMU acc calibration next side&amp;quot; OR&lt;br /&gt;
*Via pfodApp &amp;quot;Settings-&amp;gt;IMU-&amp;gt;acc calibration next side&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Do not move the module during the measurement of each side! During measurement you will hear a short beep tone.&lt;br /&gt;
&lt;br /&gt;
Repeat this step for all 6 sides. After all 6 sides are calibrated, you will hear a short melody.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Gy80_acc_calibration.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Compass sensor==&lt;br /&gt;
This calibration can be performed outside or inside of the robot (in its final position). Make sure the module is far away from magnetic fields or ferreous sources! Start the compass calibration:&lt;br /&gt;
&lt;br /&gt;
*Via serial console &amp;quot;IMU com calibration start/stop&amp;quot; OR&lt;br /&gt;
*Via pfodApp &amp;quot;Settings-&amp;gt;IMU-&amp;gt;com calibration start/stop&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hold each of the 6 module sides to North direction and tilt the module until minimum and maximum of the axis does not change anymore (until no tone is outputted anymore):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Gy80_com_calibration.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Calibration quality test==&lt;br /&gt;
&lt;br /&gt;
===Table test===&lt;br /&gt;
For testing calibration quality, hold module (parts upside) against a table edge and do not move. Write down the Yaw-value (example: -95,45). Then rotate the module by 180 degree and hold it again against the table edge. Now the Yaw-value should output 180 degree away (example: -95,45 + 180 = 84,55). Repeat this test for both remaining sides of the module. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Gy80_calibration_check.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
... hold module against a table edge ...&lt;br /&gt;
&lt;br /&gt;
 calls=30    yaw=-95.56    pitch=0.02    roll=2.52    com=-95.91    com180=84.09    gyroZ=0.00&lt;br /&gt;
 calls=30    yaw=-95.48    pitch=-0.11    roll=2.33    com=-95.81    com180=84.19    gyroZ=-0.01&lt;br /&gt;
 calls=30    yaw=-95.42    pitch=0.03    roll=2.42    com=-95.65    com180=84.35    gyroZ=-0.00&lt;br /&gt;
 calls=30    yaw=-95.45    pitch=-0.21    roll=2.38    com=-95.35    com180=84.65    gyroZ=-0.00&lt;br /&gt;
&lt;br /&gt;
... turn 180 degree, hold again against table edge ...&lt;br /&gt;
&lt;br /&gt;
 calls=30    yaw=85.06    pitch=-2.50    roll=0.04    com=84.91    com180=-95.09    gyroZ=-0.03&lt;br /&gt;
 calls=30    yaw=84.90    pitch=-2.59    roll=0.05    com=84.63    com180=-95.37    gyroZ=-0.02&lt;br /&gt;
 calls=30    yaw=85.19    pitch=-2.55    roll=0.01    com=84.73    com180=-95.27    gyroZ=-0.01&lt;br /&gt;
 calls=30    yaw=84.98    pitch=-2.73    roll=0.02    com=84.85    com180=-95.15    gyroZ=-0.01&lt;br /&gt;
&lt;br /&gt;
If deviation is more than one degree, repeat calibration steps!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===pfodApp test===&lt;br /&gt;
For a more detailed quality test, you can plot the calibration results (Yaw, Pitch, Roll) via pfodApp. Place the robot on a flat ground and let it rotate (pfodApp: click on &amp;quot;Commands-&amp;gt;Auto rotate&amp;quot; until robot rotates). Alternatively, you can let the robot drive a circle (pfodApp: click &amp;quot;Manual-&amp;gt;Right&amp;quot; until it drives the desired radius). Finally, choose 'Plot-&amp;gt;IMU' to see the calibration result.&lt;br /&gt;
&lt;br /&gt;
For the yaw plot, the curve should be a straight line when the robot is rotating with a constant speed.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Ardumower_screenshot_IMU.png &lt;br /&gt;
File: Ardumower_imu_plotting.jpg&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Calibration (old v0.9.3)=&lt;br /&gt;
==Acceleration sensor==&lt;br /&gt;
This one-time calibration ensures that all 3 axes measurements are weighted equally. This calibration can even be performed externally to the robot.&lt;br /&gt;
&lt;br /&gt;
1. Connect the Arduino Nano to your PC. On the PC, open the serial console (19200) in the Arduino environment. After the automatic gyro calibration menu appears (this can be shown at any time by pressing the &amp;quot;m&amp;quot; + ENTER keys).&lt;br /&gt;
&lt;br /&gt;
2. Start the calibration by pressing &amp;quot;1&amp;quot; + ENTER keys.&lt;br /&gt;
&lt;br /&gt;
2.1. After calibration, each of the 6 sides of the module has to look up-side and down-side (rotated 180 °). The module has 6 sides, so it must be rotated 6 times, so that each side once is on the table (you can hold the module with your hand  without moving it). Press ENTER after each calibration step. The aim of the calibration to determine the acceleration due to gravity (more precisely, the minimum / maximum value) for each axis . The module must not be artificially accelerated. The order of the sides does not matter.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Ardumower_pitch_roll_yaw_imu.png &lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Finally, the calibration values ​​for acceleration sensor are printed out on serial console.&lt;br /&gt;
&lt;br /&gt;
==Compass sensor==&lt;br /&gt;
&lt;br /&gt;
First ensure that the IMU module is mounted on the final position and that entire robotic electronic equipment and metal objects are 30cm or more away from it (ie the sensor is not distracted by metallic objects in its environment).&lt;br /&gt;
&lt;br /&gt;
1. Download ArduMag calibration app for Android.&lt;br /&gt;
2. If not done yet, pair your Android device with the Bluetooth module: On the Android device main screen, choose symbol &amp;quot;Settings&amp;quot; (via Android menu). Now choose  &amp;quot;Wirless and Networks-&amp;gt;Bluetooth Settings&amp;quot; and &amp;quot;Find device&amp;quot;. Finally, choose &amp;quot;pair with this device&amp;quot; and enter your pin (very often &amp;quot;1234&amp;quot;). The Bluetooth module should now appear as &amp;quot;paired&amp;quot;.&lt;br /&gt;
3. In the ArduMag app, press the Android menu key and then &amp;quot;Bluetooth&amp;quot; to connect with your Bluetooth module (and your robot). The robot should confirm the connection with a beep. The number of measurements should increase.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Turn around the robot slowly for all axes and all 6 sides for at least 360 degrees:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Ardumower_compass_calibrate.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The order of the axis of rotation and the direction does not matter. For example, rotate each side 180 degree clockwise and then again 180 degree counterclockwise (result is a 360 degree rotation). The measurements may not fit a sphere.&lt;br /&gt;
Examples:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Ardumag1.png&lt;br /&gt;
File: Ardumag2.png&lt;br /&gt;
File: Ardumag3.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Finally, press 'Calibrate' to finish the calibration. The robot will confirm the calibration with two beeps. The measurements should fit a sphere now.&lt;br /&gt;
Examples:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Ardumag4.png&lt;br /&gt;
File: Ardumag5.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Compass deviation==&lt;br /&gt;
The 'compass deviation calibration' should ensure that all courses are correct (example: south = north + 180 degree). &lt;br /&gt;
&lt;br /&gt;
1. Keep robot on a flat surface, and let it rotate (via pfodApp, press &amp;quot;Commands-&amp;gt;Auto rotate&amp;quot; repeatedly until robot rotates). Alternatively, you can let the robot drive in circles (via pfodApp, press &amp;quot;Manual-&amp;gt;Right&amp;quot; repeatedly until reaching desired radius).&lt;br /&gt;
&lt;br /&gt;
2. Start deviation calibration (pfodApp: &amp;quot;Settings-&amp;gt;IMU-&amp;gt;Start Com Cal Dev&amp;quot;). At each 10 degree step, the Nano LED flashes. After reaching all 360 degrees, the Nano LED stops flashing and the deviation calibration is completed.&lt;br /&gt;
&lt;br /&gt;
==Calibration test==&lt;br /&gt;
=== Testen von Kompass und Neigungswinkeln über die serielle Konsole ===&lt;br /&gt;
Folgende Werte gibt der Arduino aus:&lt;br /&gt;
&lt;br /&gt;
 yaw: Course/Yaw (see above figure)&lt;br /&gt;
 pitch: Pitch angle (see above figure)&lt;br /&gt;
 roll: Roll angle (see above figure)&lt;br /&gt;
 frequency: Number of measurements per second (100)&lt;br /&gt;
 latency: Number of latency overflows (0)&lt;br /&gt;
 access: Number of external access counts (from Arduino Mega)&lt;br /&gt;
&lt;br /&gt;
=== Testen per LED ===&lt;br /&gt;
Align the compass facing north, south, east, west - the LED should go ON. Between them it should go OFF. North, south and east, west about should be opposite.&lt;br /&gt;
&lt;br /&gt;
=== Testen per Android pfodApp ===&lt;br /&gt;
You can plot the results of the IMU module (yaw, pitch, roll) using pfodApp.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Videos =&lt;br /&gt;
#[http://www.youtube.com/watch?v=pyTy1Swom-8 Tanz des Roboters]&lt;br /&gt;
#[http://www.youtube.com/watch?v=V9dE4Kfoz9I&amp;amp;feature=youtu.be Spur halten]&lt;br /&gt;
#[https://www.youtube.com/watch?v=A-11khSzq1U Parallele Bahnen fahren]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= weiterführende Links =&lt;/div&gt;</summary>
		<author><name>Pemiso</name></author>	</entry>

	<entry>
		<id>https://wiki.ardumower.de/index.php?title=Inertialsensor_-_IMU&amp;diff=2507</id>
		<title>Inertialsensor - IMU</title>
		<link rel="alternate" type="text/html" href="https://wiki.ardumower.de/index.php?title=Inertialsensor_-_IMU&amp;diff=2507"/>
				<updated>2015-07-16T16:57:00Z</updated>
		
		<summary type="html">&lt;p&gt;Pemiso: Die Seite wurde neu angelegt: „=Abstract= &amp;lt;gallery&amp;gt; File:Imu.jpg &amp;lt;/gallery&amp;gt;  An IMU (Intertia Measurement Unit) is a key component of an inertia navigation system. We use it to: *detect if t…“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Abstract=&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File:Imu.jpg&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
An IMU (Intertia Measurement Unit) is a key component of an inertia navigation system. We use it to:&lt;br /&gt;
*detect if the robot is in tilt orientation&lt;br /&gt;
*keep the robot on track for the 'lane-by-lane' mowing pattern&lt;br /&gt;
&lt;br /&gt;
=Acceleration sensor=&lt;br /&gt;
An acceleration sensor measures earth gravity force (m*s^2) in all 3 robot axes (x/y/z) allowing you to calculate the orientation towards earth center of the robot (Roll, Pitch). However, it cannot detect movement around Yaw - this requires a gyro.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Ardumower_pitch_roll_yaw.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Gyro=&lt;br /&gt;
A gyro measures rotational speed (degree/second) in all 3 robot axes (Roll, Pitch, Yaw). This allows us to correct the robot if it is driving 'off-course' due to wet conditions or slope. When integrating (adding) gyro values over time, the actual course (yaw) can be calculated. However, because each sensor reading has a small error, the course will 'drift' over time. This needs to be corrected via an absolute heading sensor (compass).&lt;br /&gt;
&lt;br /&gt;
Typical gyro measurement errors:&lt;br /&gt;
&lt;br /&gt;
                 noise dps/sqrt(Hz)&lt;br /&gt;
 L3G4200D        0.03&lt;br /&gt;
 BMG160/BNO055   0.014&lt;br /&gt;
 MPU9150         0.005&lt;br /&gt;
&lt;br /&gt;
=Compass=&lt;br /&gt;
If a robot drives on a wet lawn, you'll notice quickly that it will not drive straight forward, but instead tends to drive into the direction of the slope. Reading a compass heading can solve this problem and the robot will drive straight forward again .&lt;br /&gt;
&lt;br /&gt;
However, a compass has two problems: &lt;br /&gt;
&lt;br /&gt;
# If tilting the robot, the compass measurements (x,y,z) relate to the tilted robot. So, you need to correct them using knowing the tilt angles. This requires the use of the accerlation sensor (x,y).&lt;br /&gt;
# The compass measurements are influenced by motors. So you may need to switch of the motor to get an accurate measurement.&lt;br /&gt;
&lt;br /&gt;
=Sensor fusion=&lt;br /&gt;
To eliminate the issues of all sensor, they are merged to compute the course (degree) and pitch/roll angles.&lt;br /&gt;
&lt;br /&gt;
We use a complementary filter to fusion all sensor values.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Ardumower_sensor_fusion.png  | IMU sensor fusion&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Additionally, gyro/acceleration and compass sensors can be further input to a [http://wiki.ardumower.de/index.php?title=Sensor_fusion position estimation].&lt;br /&gt;
&lt;br /&gt;
=IMU modules=&lt;br /&gt;
&lt;br /&gt;
GY-80&lt;br /&gt;
*Acceleration sensor: ADXL345B&lt;br /&gt;
*Compass sensor: HMC5883L&lt;br /&gt;
*Gyro: L3G4200D&lt;br /&gt;
*Pressure sensor: BMP085  (not used here)&lt;br /&gt;
&lt;br /&gt;
MPU9150&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Gy80.jpg | GY-80 module&lt;br /&gt;
File: GY80-Schematic.jpg | GY-80 schematics&lt;br /&gt;
File: Mpu9150.jpg | MPU9150 module  (in development/testing)&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Assembly=&lt;br /&gt;
This photo shows how the IMU module is placed in the driving position (the black arrow shows the driving position). The tube shown was needed to ensure a minimum distance of 30cm from all motors. This minimum distance seems to be needed to ensure the compass is not disturbed by dynamically disturbing sources (like motors).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Gy80_direction.jpg  | GY-80 assembly&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Calibration abstract=&lt;br /&gt;
This one-time calibration ensures that:&lt;br /&gt;
*All 3 axes measurements of the acceleration sensor are weighted equally. This calibration can even be performed externally to the robot.&lt;br /&gt;
*Cables, metal, etc. which are located in the robot near the IMU module have no effect on the compass data.&lt;br /&gt;
&lt;br /&gt;
Why is it needed?&lt;br /&gt;
The origin of a 3D compass point is 0,0,0 (x,y,z) and points to the north pole. If the 3D compass is rotated around all of its axes i.e. all values of x, y and z are measured then these points will ​​lie on a sphere. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Compass_sphere.png &lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you add a magnetic material (e.g. metal) near the compass, the measured values ​​from the origin (0,0,0) of the sensor suddenly point in one direction only - Why?&lt;br /&gt;
There are two types of disturbances of the magnetic field which change / move the values​​:&lt;br /&gt;
&lt;br /&gt;
*Hard ircon (e.g. magnets): the sphere moves&lt;br /&gt;
*Soft ircon (e.g. metal): the sphere deforms (becomes an Ellipsoid)&lt;br /&gt;
&lt;br /&gt;
Example measurements&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Compass_ellipsoid.jpg   | Uncalibrated readings do not lie on a sphere but on an ellipsoid and have shifted from the origin of the sensor&lt;br /&gt;
File: Compass_ellipsoid_cal1.jpg | Shift-corrected values&lt;br /&gt;
File: Compass_ellipsoid_cal2.jpg | Calibrated values ​​are now reformed (or undeformed) again on a sphere, centered around the origin of the sensor&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The goal of the calibration is that the measurements are centered again on a sphere around the origin of the sensor.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Calibration (latest version)=&lt;br /&gt;
==Acceleration sensor==&lt;br /&gt;
&lt;br /&gt;
This calibration can be performed outside of the robot. Place each of the 6 module sides exactly upright, do not move and choose 'next side calibration':&lt;br /&gt;
&lt;br /&gt;
*Via serial console &amp;quot;IMU acc calibration next side&amp;quot; OR&lt;br /&gt;
*Via pfodApp &amp;quot;Settings-&amp;gt;IMU-&amp;gt;acc calibration next side&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Do not move the module during the measurement of each side! During measurement you will hear a short beep tone.&lt;br /&gt;
&lt;br /&gt;
Repeat this step for all 6 sides. After all 6 sides are calibrated, you will hear a short melody.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Gy80_acc_calibration.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Compass sensor==&lt;br /&gt;
This calibration can be performed outside or inside of the robot (in its final position). Make sure the module is far away from magnetic fields or ferreous sources! Start the compass calibration:&lt;br /&gt;
&lt;br /&gt;
*Via serial console &amp;quot;IMU com calibration start/stop&amp;quot; OR&lt;br /&gt;
*Via pfodApp &amp;quot;Settings-&amp;gt;IMU-&amp;gt;com calibration start/stop&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hold each of the 6 module sides to North direction and tilt the module until minimum and maximum of the axis does not change anymore (until no tone is outputted anymore):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Gy80_com_calibration.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Calibration quality test==&lt;br /&gt;
&lt;br /&gt;
===Table test===&lt;br /&gt;
For testing calibration quality, hold module (parts upside) against a table edge and do not move. Write down the Yaw-value (example: -95,45). Then rotate the module by 180 degree and hold it again against the table edge. Now the Yaw-value should output 180 degree away (example: -95,45 + 180 = 84,55). Repeat this test for both remaining sides of the module. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Gy80_calibration_check.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
... hold module against a table edge ...&lt;br /&gt;
&lt;br /&gt;
 calls=30    yaw=-95.56    pitch=0.02    roll=2.52    com=-95.91    com180=84.09    gyroZ=0.00&lt;br /&gt;
 calls=30    yaw=-95.48    pitch=-0.11    roll=2.33    com=-95.81    com180=84.19    gyroZ=-0.01&lt;br /&gt;
 calls=30    yaw=-95.42    pitch=0.03    roll=2.42    com=-95.65    com180=84.35    gyroZ=-0.00&lt;br /&gt;
 calls=30    yaw=-95.45    pitch=-0.21    roll=2.38    com=-95.35    com180=84.65    gyroZ=-0.00&lt;br /&gt;
&lt;br /&gt;
... turn 180 degree, hold again against table edge ...&lt;br /&gt;
&lt;br /&gt;
 calls=30    yaw=85.06    pitch=-2.50    roll=0.04    com=84.91    com180=-95.09    gyroZ=-0.03&lt;br /&gt;
 calls=30    yaw=84.90    pitch=-2.59    roll=0.05    com=84.63    com180=-95.37    gyroZ=-0.02&lt;br /&gt;
 calls=30    yaw=85.19    pitch=-2.55    roll=0.01    com=84.73    com180=-95.27    gyroZ=-0.01&lt;br /&gt;
 calls=30    yaw=84.98    pitch=-2.73    roll=0.02    com=84.85    com180=-95.15    gyroZ=-0.01&lt;br /&gt;
&lt;br /&gt;
If deviation is more than one degree, repeat calibration steps!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===pfodApp test===&lt;br /&gt;
For a more detailed quality test, you can plot the calibration results (Yaw, Pitch, Roll) via pfodApp. Place the robot on a flat ground and let it rotate (pfodApp: click on &amp;quot;Commands-&amp;gt;Auto rotate&amp;quot; until robot rotates). Alternatively, you can let the robot drive a circle (pfodApp: click &amp;quot;Manual-&amp;gt;Right&amp;quot; until it drives the desired radius). Finally, choose 'Plot-&amp;gt;IMU' to see the calibration result.&lt;br /&gt;
&lt;br /&gt;
For the yaw plot, the curve should be a straight line when the robot is rotating with a constant speed.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Ardumower_screenshot_IMU.png &lt;br /&gt;
File: Ardumower_imu_plotting.jpg&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Calibration (old v0.9.3)=&lt;br /&gt;
==Acceleration sensor==&lt;br /&gt;
This one-time calibration ensures that all 3 axes measurements are weighted equally. This calibration can even be performed externally to the robot.&lt;br /&gt;
&lt;br /&gt;
1. Connect the Arduino Nano to your PC. On the PC, open the serial console (19200) in the Arduino environment. After the automatic gyro calibration menu appears (this can be shown at any time by pressing the &amp;quot;m&amp;quot; + ENTER keys).&lt;br /&gt;
&lt;br /&gt;
2. Start the calibration by pressing &amp;quot;1&amp;quot; + ENTER keys.&lt;br /&gt;
&lt;br /&gt;
2.1. After calibration, each of the 6 sides of the module has to look up-side and down-side (rotated 180 °). The module has 6 sides, so it must be rotated 6 times, so that each side once is on the table (you can hold the module with your hand  without moving it). Press ENTER after each calibration step. The aim of the calibration to determine the acceleration due to gravity (more precisely, the minimum / maximum value) for each axis . The module must not be artificially accelerated. The order of the sides does not matter.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Ardumower_pitch_roll_yaw_imu.png &lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Finally, the calibration values ​​for acceleration sensor are printed out on serial console.&lt;br /&gt;
&lt;br /&gt;
==Compass sensor==&lt;br /&gt;
&lt;br /&gt;
First ensure that the IMU module is mounted on the final position and that entire robotic electronic equipment and metal objects are 30cm or more away from it (ie the sensor is not distracted by metallic objects in its environment).&lt;br /&gt;
&lt;br /&gt;
1. Download ArduMag calibration app for Android.&lt;br /&gt;
2. If not done yet, pair your Android device with the Bluetooth module: On the Android device main screen, choose symbol &amp;quot;Settings&amp;quot; (via Android menu). Now choose  &amp;quot;Wirless and Networks-&amp;gt;Bluetooth Settings&amp;quot; and &amp;quot;Find device&amp;quot;. Finally, choose &amp;quot;pair with this device&amp;quot; and enter your pin (very often &amp;quot;1234&amp;quot;). The Bluetooth module should now appear as &amp;quot;paired&amp;quot;.&lt;br /&gt;
3. In the ArduMag app, press the Android menu key and then &amp;quot;Bluetooth&amp;quot; to connect with your Bluetooth module (and your robot). The robot should confirm the connection with a beep. The number of measurements should increase.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Turn around the robot slowly for all axes and all 6 sides for at least 360 degrees:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Ardumower_compass_calibrate.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The order of the axis of rotation and the direction does not matter. For example, rotate each side 180 degree clockwise and then again 180 degree counterclockwise (result is a 360 degree rotation). The measurements may not fit a sphere.&lt;br /&gt;
Examples:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Ardumag1.png&lt;br /&gt;
File: Ardumag2.png&lt;br /&gt;
File: Ardumag3.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Finally, press 'Calibrate' to finish the calibration. The robot will confirm the calibration with two beeps. The measurements should fit a sphere now.&lt;br /&gt;
Examples:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Ardumag4.png&lt;br /&gt;
File: Ardumag5.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Compass deviation==&lt;br /&gt;
The 'compass deviation calibration' should ensure that all courses are correct (example: south = north + 180 degree). &lt;br /&gt;
&lt;br /&gt;
1. Keep robot on a flat surface, and let it rotate (via pfodApp, press &amp;quot;Commands-&amp;gt;Auto rotate&amp;quot; repeatedly until robot rotates). Alternatively, you can let the robot drive in circles (via pfodApp, press &amp;quot;Manual-&amp;gt;Right&amp;quot; repeatedly until reaching desired radius).&lt;br /&gt;
&lt;br /&gt;
2. Start deviation calibration (pfodApp: &amp;quot;Settings-&amp;gt;IMU-&amp;gt;Start Com Cal Dev&amp;quot;). At each 10 degree step, the Nano LED flashes. After reaching all 360 degrees, the Nano LED stops flashing and the deviation calibration is completed.&lt;br /&gt;
&lt;br /&gt;
==Calibration test==&lt;br /&gt;
=== Testen von Kompass und Neigungswinkeln über die serielle Konsole ===&lt;br /&gt;
Folgende Werte gibt der Arduino aus:&lt;br /&gt;
&lt;br /&gt;
 yaw: Course/Yaw (see above figure)&lt;br /&gt;
 pitch: Pitch angle (see above figure)&lt;br /&gt;
 roll: Roll angle (see above figure)&lt;br /&gt;
 frequency: Number of measurements per second (100)&lt;br /&gt;
 latency: Number of latency overflows (0)&lt;br /&gt;
 access: Number of external access counts (from Arduino Mega)&lt;br /&gt;
&lt;br /&gt;
=== Testen per LED ===&lt;br /&gt;
Align the compass facing north, south, east, west - the LED should go ON. Between them it should go OFF. North, south and east, west about should be opposite.&lt;br /&gt;
&lt;br /&gt;
=== Testen per Android pfodApp ===&lt;br /&gt;
You can plot the results of the IMU module (yaw, pitch, roll) using pfodApp.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Videos =&lt;br /&gt;
#[http://www.youtube.com/watch?v=pyTy1Swom-8 Tanz des Roboters]&lt;br /&gt;
#[http://www.youtube.com/watch?v=V9dE4Kfoz9I&amp;amp;feature=youtu.be Spur halten]&lt;br /&gt;
#[https://www.youtube.com/watch?v=A-11khSzq1U Parallele Bahnen fahren]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= weiterführende Links =&lt;/div&gt;</summary>
		<author><name>Pemiso</name></author>	</entry>

	<entry>
		<id>https://wiki.ardumower.de/index.php?title=Perimeter-Schleife&amp;diff=2506</id>
		<title>Perimeter-Schleife</title>
		<link rel="alternate" type="text/html" href="https://wiki.ardumower.de/index.php?title=Perimeter-Schleife&amp;diff=2506"/>
				<updated>2015-07-16T16:50:39Z</updated>
		
		<summary type="html">&lt;p&gt;Pemiso: /* Schleifenverlegung */&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 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 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;
=== 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>Pemiso</name></author>	</entry>

	<entry>
		<id>https://wiki.ardumower.de/index.php?title=Wegmessung_(Odometrie)&amp;diff=2505</id>
		<title>Wegmessung (Odometrie)</title>
		<link rel="alternate" type="text/html" href="https://wiki.ardumower.de/index.php?title=Wegmessung_(Odometrie)&amp;diff=2505"/>
				<updated>2015-07-15T17:25:28Z</updated>
		
		<summary type="html">&lt;p&gt;Pemiso: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Zusammenfassung =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: odometry.png &lt;br /&gt;
File: ardumower_odometry_sensor.png&lt;br /&gt;
File: ardumower_motor.jpg&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mittels Odometrie können sowohl Geschwindigkeit als auch kurzfristige Position des ArduMower ermittelt werden. Dies basiert auf der Zählung der Umdrehungen des linken und rechten Radantriebsmotors (Motor-Encoder erforderlich zur Nutzung der aktuellen Ardumower-Software).&lt;br /&gt;
&lt;br /&gt;
Momentan wird die Odometrie folgendermaßen genutzt:&lt;br /&gt;
* Gewährleistung der gleichen Drehzahl bei rechtem und linken Antriebsrad des Ardumower beim Vorwärtsfahren.&lt;br /&gt;
&lt;br /&gt;
= Pinbelegung der Ardumower Motor-Encoder =&lt;br /&gt;
&lt;br /&gt;
Die Motoren aus dem Shop verfügen über 2-Kanal-Encoder. Diese liefern 5 Impulse per Motorumdrehung. Multipliziert man diese mit dem Übersetzungsverhältnis des Getriebes von 1:212, erhält man 1060 Encoderimpulse pro voller Radumdrehung.&lt;br /&gt;
&lt;br /&gt;
Pinbelegung und Verdrahtung der Encoder-Anschlüsse:&lt;br /&gt;
&lt;br /&gt;
 grün  ---- GND&lt;br /&gt;
 braun  ---- VCC&lt;br /&gt;
 blau   ---- Odometry1 (Kanal 1)&lt;br /&gt;
 lila ---- Odometry2 (Kanal 2)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
WICHTIG: Auf den PCB V0.5/1.2 fehlen die Pull-up-Widerstände! Du mußt sie selbst ergänzen:&lt;br /&gt;
&lt;br /&gt;
 odometry1 --- 4.7k --- 5v&lt;br /&gt;
 odometry2 --- 4.7k --- 5v&lt;br /&gt;
&lt;br /&gt;
= Signalverlauf der Odometrie-Encoder =&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: ardumower_odometry_encoder.jpg&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 Vorwärts: Pin 1 zeigt Übergang LOW-&amp;gt;HIGH und Pin 2 = HIGH&lt;br /&gt;
 Rückwärts: Pin 1 zeigt Übergang LOW-&amp;gt;HIGH und Pin 2 = LOW&lt;br /&gt;
&lt;br /&gt;
= Encoder im Eigenbau =&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: l50_odometry_sensor.jpg | Ambrogio L50: Encoderscheibe einer Computermaus auf der Motorachse, Fotodiode/Fototransistor einer Lichtschranke (z.B. LTH 301) an den Plexiglasscheiben befestigt.&lt;br /&gt;
File: mower_photo_interrupter_right.JPG | Tianchen TC-G158 (rechts): Eine Lichtschranke (z.B. LTH 301) wird durch das Getriebezahnrad auf der Motorachse unterbrochen.&lt;br /&gt;
File: Odometry_circuit.jpg | LTH301 Schaltung&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Verdrahtung ==&lt;br /&gt;
&lt;br /&gt;
 VCC           pinArduino&lt;br /&gt;
 +--13 KOhm----+-------Collector  Emitter---GND&lt;br /&gt;
 +--380 Ohm------------Anode      Kathode---GND&lt;br /&gt;
&lt;br /&gt;
== Differential drive ==&lt;br /&gt;
Durch Auswertung der Odometrie können wir Geschwindigkeit, Fahrstrecke und Richtung ermitteln. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt; &lt;br /&gt;
File: differential_drive.png | Differential drive&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
vom Rad zurückgelegter Weg:&lt;br /&gt;
 left_cm  = ticksLeft  / odometryTicksPerCm&lt;br /&gt;
 right_cm = ticksRight / odometryTicksPerCm&lt;br /&gt;
 &lt;br /&gt;
Fahrtrichtung:&lt;br /&gt;
 wheel_theta = (left_cm - right_cm) / odometryWheelBaseCm&lt;br /&gt;
 odometryTheta += wheel_theta&lt;br /&gt;
&lt;br /&gt;
Gesamtweg:&lt;br /&gt;
 avg_cm  = (left_cm + right_cm) / 2.0&lt;br /&gt;
 odometryX += avg_cm * sin(odometryTheta)&lt;br /&gt;
 odometryY += avg_cm * cos(odometryTheta)&lt;br /&gt;
&lt;br /&gt;
== Meßfehler ==&lt;br /&gt;
Durch Auswertung der am linken und rechten Radantrieb gezählten Encoderimpulse über der Zeit können wir Geschwindigkeit, Fahrstrecke und Richtung ermitteln. Jedoch addieren sich kleine Fehler durch Verwendung von Näherungsformeln und Schlupf der Antriebsräder über längere Zeit zu wachsenden Ungenauigkeiten. Dies kann durch [http://wiki.ardumower.de/index.php?title=Sensor_fusion Sensor-Signalfusion] kompensiert werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: odometry_plot.jpg | Odometriefehler&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Drehzahlregelung (PID) der Motoren =&lt;br /&gt;
Die Drehzahlregelung der Radantriebe erfolgt per Software über einen PID-Regler. Die Qualität der Regelung kann per pfodApp visualisiert werden (Plot-&amp;gt;Motor control):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
  File: Odometry_motor_pid_controller.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Video =&lt;br /&gt;
Noch kein Video verfügbar (Odometrie derzeit in Entwicklung)&lt;/div&gt;</summary>
		<author><name>Pemiso</name></author>	</entry>

	<entry>
		<id>https://wiki.ardumower.de/index.php?title=Wegmessung_(Odometrie)&amp;diff=2504</id>
		<title>Wegmessung (Odometrie)</title>
		<link rel="alternate" type="text/html" href="https://wiki.ardumower.de/index.php?title=Wegmessung_(Odometrie)&amp;diff=2504"/>
				<updated>2015-07-15T12:46:10Z</updated>
		
		<summary type="html">&lt;p&gt;Pemiso: /* Encoder im Eigenbau */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Zusammenfassung =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: odometry.png &lt;br /&gt;
File: ardumower_odometry_sensor.png&lt;br /&gt;
File: ardumower_motor.jpg&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mittels Odometrie können sowohl Geschwindigkeit als auch kurzfristige Position des ArduMower ermittelt werden. Dies basiert auf der Zählung der Umdrehungen des linken und rechten Radantriebsmotors (Motor-Encoder erforderlich zur Nutzung der aktuellen Ardumower-Software).&lt;br /&gt;
&lt;br /&gt;
Momentan wird die Odometrie folgendermaßen genutzt:&lt;br /&gt;
* Gewährleistung der gleichen Drehzahl bei rechtem und linken Antriebsrad des Ardumower beim Vorwärtsfahren.&lt;br /&gt;
&lt;br /&gt;
= Pinbelegung der Ardumower Motor-Encoder =&lt;br /&gt;
&lt;br /&gt;
Die Motoren aus dem Shop verfügen über 2-Kanal-Encoder. Diese liefern 5 Impulse per Motorumdrehung. Multipliziert man diese mit dem Übersetzungsverhältnis des Getriebes von 1:212, erhält man 1060 Encoderimpulse pro voller Radumdrehung.&lt;br /&gt;
&lt;br /&gt;
Pinbelegung und Verdrahtung der Encoder-Anschlüsse:&lt;br /&gt;
&lt;br /&gt;
 grün  ---- GND&lt;br /&gt;
 braun  ---- VCC&lt;br /&gt;
 blau   ---- Odometry1 (Kanal 1)&lt;br /&gt;
 lila ---- Odometry2 (Kanal 2)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
WICHTIG: Auf den PCB V0.5/1.2 fehlen die Pull-up-Widerstände! Du mußt sie selbst ergänzen:&lt;br /&gt;
&lt;br /&gt;
 odometry1 --- 4.7k --- 5v&lt;br /&gt;
 odometry2 --- 4.7k --- 5v&lt;br /&gt;
&lt;br /&gt;
= Signalverlauf der Odometrie-Encoder =&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: ardumower_odometry_encoder.jpg&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 Vorwärts: Pin 1 zeigt Übergang LOW-&amp;gt;HIGH und Pin 2 = HIGH&lt;br /&gt;
 Rückwärts: Pin 1 zeigt Übergang LOW-&amp;gt;HIGH und Pin 2 = LOW&lt;br /&gt;
&lt;br /&gt;
= Encoder im Eigenbau =&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: l50_odometry_sensor.jpg | Ambrogio L50: Encoderscheibe einer Computermaus auf der Motorachse, Fotodiode/Fototransistor einer Lichtschranke (z.B. LTH 301) an den Plexiglasscheiben befestigt.&lt;br /&gt;
File: mower_photo_interrupter_right.JPG | Tianchen TC-G158 (rechts): Eine Lichtschranke (z.B. LTH 301) wird durch das Getriebezahnrad auf der Motorachse unterbrochen.&lt;br /&gt;
File: Odometry_circuit.jpg | LTH301 Schaltung&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Verdrahtung ==&lt;br /&gt;
&lt;br /&gt;
 VCC           pinArduino&lt;br /&gt;
 +--13 KOhm----+-------Collector  Emitter---GND&lt;br /&gt;
 +--380 Ohm------------Anode      Kathode---GND&lt;br /&gt;
&lt;br /&gt;
== Differential drive ==&lt;br /&gt;
By adding (integrating) Odometry speed, we can calculate distance and heading. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt; &lt;br /&gt;
File: differential_drive.png | Differential drive&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
vom Rad zurückgelegter Weg:&lt;br /&gt;
 left_cm  = ticksLeft  / odometryTicksPerCm&lt;br /&gt;
 right_cm = ticksRight / odometryTicksPerCm&lt;br /&gt;
 &lt;br /&gt;
Fahrtrichtung:&lt;br /&gt;
 wheel_theta = (left_cm - right_cm) / odometryWheelBaseCm&lt;br /&gt;
 odometryTheta += wheel_theta&lt;br /&gt;
&lt;br /&gt;
Gesamtweg:&lt;br /&gt;
 avg_cm  = (left_cm + right_cm) / 2.0&lt;br /&gt;
 odometryX += avg_cm * sin(odometryTheta)&lt;br /&gt;
 odometryY += avg_cm * cos(odometryTheta)&lt;br /&gt;
&lt;br /&gt;
== Meßfehler ==&lt;br /&gt;
Durch Auswertung der am linken und rechten Radantrieb gezählten Encoderimpulse über der Zeit können wir Geschwindigkeit, Fahrstrecke und Richtung ermitteln. Jedoch addieren sich kleine Fehler durch Verwendung von Näherungsformeln und Schlupf der Antriebsräder über längere Zeit zu wachsenden Ungenauigkeiten. Dies kann durch [http://wiki.ardumower.de/index.php?title=Sensor_fusion Sensor-Signalfusion] kompensiert werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: odometry_plot.jpg | Odometriefehler&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Drehzahlregelung (PID) der Motoren =&lt;br /&gt;
Die Drehzahlregelung der Radantriebe erfolgt per Software über einen PID-Regler. Die Qualität der Regelung kann per pfodApp visualisiert werden (Plot-&amp;gt;Motor control):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
  File: Odometry_motor_pid_controller.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Video =&lt;br /&gt;
Noch kein Video verfügbar (Odometrie derzeit in Entwicklung)&lt;/div&gt;</summary>
		<author><name>Pemiso</name></author>	</entry>

	<entry>
		<id>https://wiki.ardumower.de/index.php?title=Wegmessung_(Odometrie)&amp;diff=2503</id>
		<title>Wegmessung (Odometrie)</title>
		<link rel="alternate" type="text/html" href="https://wiki.ardumower.de/index.php?title=Wegmessung_(Odometrie)&amp;diff=2503"/>
				<updated>2015-07-15T12:43:02Z</updated>
		
		<summary type="html">&lt;p&gt;Pemiso: /* Encoder im Eigenbau */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Zusammenfassung =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: odometry.png &lt;br /&gt;
File: ardumower_odometry_sensor.png&lt;br /&gt;
File: ardumower_motor.jpg&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mittels Odometrie können sowohl Geschwindigkeit als auch kurzfristige Position des ArduMower ermittelt werden. Dies basiert auf der Zählung der Umdrehungen des linken und rechten Radantriebsmotors (Motor-Encoder erforderlich zur Nutzung der aktuellen Ardumower-Software).&lt;br /&gt;
&lt;br /&gt;
Momentan wird die Odometrie folgendermaßen genutzt:&lt;br /&gt;
* Gewährleistung der gleichen Drehzahl bei rechtem und linken Antriebsrad des Ardumower beim Vorwärtsfahren.&lt;br /&gt;
&lt;br /&gt;
= Pinbelegung der Ardumower Motor-Encoder =&lt;br /&gt;
&lt;br /&gt;
Die Motoren aus dem Shop verfügen über 2-Kanal-Encoder. Diese liefern 5 Impulse per Motorumdrehung. Multipliziert man diese mit dem Übersetzungsverhältnis des Getriebes von 1:212, erhält man 1060 Encoderimpulse pro voller Radumdrehung.&lt;br /&gt;
&lt;br /&gt;
Pinbelegung und Verdrahtung der Encoder-Anschlüsse:&lt;br /&gt;
&lt;br /&gt;
 grün  ---- GND&lt;br /&gt;
 braun  ---- VCC&lt;br /&gt;
 blau   ---- Odometry1 (Kanal 1)&lt;br /&gt;
 lila ---- Odometry2 (Kanal 2)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
WICHTIG: Auf den PCB V0.5/1.2 fehlen die Pull-up-Widerstände! Du mußt sie selbst ergänzen:&lt;br /&gt;
&lt;br /&gt;
 odometry1 --- 4.7k --- 5v&lt;br /&gt;
 odometry2 --- 4.7k --- 5v&lt;br /&gt;
&lt;br /&gt;
= Signalverlauf der Odometrie-Encoder =&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: ardumower_odometry_encoder.jpg&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 Vorwärts: Pin 1 zeigt Übergang LOW-&amp;gt;HIGH und Pin 2 = HIGH&lt;br /&gt;
 Rückwärts: Pin 1 zeigt Übergang LOW-&amp;gt;HIGH und Pin 2 = LOW&lt;br /&gt;
&lt;br /&gt;
= Encoder im Eigenbau =&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: l50_odometry_sensor.jpg | Ambrogio L50: Encoderscheibe einer Computermaus. The screw of the wheel shaft is unscrewed, and the slice is added. Fotodiode/Fototransistor einer Lichtschranke (z.B. LTH 301) sind zwischen 2 Plexiglasstücke eingebettet.&lt;br /&gt;
File: mower_photo_interrupter_right.JPG | Tianchen TC-G158 (rechts): Eine Lichtschranke (z.B. LTH 301) wird durch das Getriebezahnrad auf der Motorachse unterbrochen.&lt;br /&gt;
File: Odometry_circuit.jpg | LTH301 Schaltung&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Verdrahtung ==&lt;br /&gt;
&lt;br /&gt;
 VCC           pinArduino&lt;br /&gt;
 +--13 KOhm----+-------Collector  Emitter---GND&lt;br /&gt;
 +--380 Ohm------------Anode      Kathode---GND&lt;br /&gt;
&lt;br /&gt;
== Differential drive ==&lt;br /&gt;
By adding (integrating) Odometry speed, we can calculate distance and heading. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt; &lt;br /&gt;
File: differential_drive.png | Differential drive&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
vom Rad zurückgelegter Weg:&lt;br /&gt;
 left_cm  = ticksLeft  / odometryTicksPerCm&lt;br /&gt;
 right_cm = ticksRight / odometryTicksPerCm&lt;br /&gt;
 &lt;br /&gt;
Fahrtrichtung:&lt;br /&gt;
 wheel_theta = (left_cm - right_cm) / odometryWheelBaseCm&lt;br /&gt;
 odometryTheta += wheel_theta&lt;br /&gt;
&lt;br /&gt;
Gesamtweg:&lt;br /&gt;
 avg_cm  = (left_cm + right_cm) / 2.0&lt;br /&gt;
 odometryX += avg_cm * sin(odometryTheta)&lt;br /&gt;
 odometryY += avg_cm * cos(odometryTheta)&lt;br /&gt;
&lt;br /&gt;
== Meßfehler ==&lt;br /&gt;
Durch Auswertung der am linken und rechten Radantrieb gezählten Encoderimpulse über der Zeit können wir Geschwindigkeit, Fahrstrecke und Richtung ermitteln. Jedoch addieren sich kleine Fehler durch Verwendung von Näherungsformeln und Schlupf der Antriebsräder über längere Zeit zu wachsenden Ungenauigkeiten. Dies kann durch [http://wiki.ardumower.de/index.php?title=Sensor_fusion Sensor-Signalfusion] kompensiert werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: odometry_plot.jpg | Odometriefehler&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Drehzahlregelung (PID) der Motoren =&lt;br /&gt;
Die Drehzahlregelung der Radantriebe erfolgt per Software über einen PID-Regler. Die Qualität der Regelung kann per pfodApp visualisiert werden (Plot-&amp;gt;Motor control):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
  File: Odometry_motor_pid_controller.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Video =&lt;br /&gt;
Noch kein Video verfügbar (Odometrie derzeit in Entwicklung)&lt;/div&gt;</summary>
		<author><name>Pemiso</name></author>	</entry>

	<entry>
		<id>https://wiki.ardumower.de/index.php?title=Wegmessung_(Odometrie)&amp;diff=2502</id>
		<title>Wegmessung (Odometrie)</title>
		<link rel="alternate" type="text/html" href="https://wiki.ardumower.de/index.php?title=Wegmessung_(Odometrie)&amp;diff=2502"/>
				<updated>2015-07-14T23:34:15Z</updated>
		
		<summary type="html">&lt;p&gt;Pemiso: /* Circuit */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Zusammenfassung =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: odometry.png &lt;br /&gt;
File: ardumower_odometry_sensor.png&lt;br /&gt;
File: ardumower_motor.jpg&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mittels Odometrie können sowohl Geschwindigkeit als auch kurzfristige Position des ArduMower ermittelt werden. Dies basiert auf der Zählung der Umdrehungen des linken und rechten Radantriebsmotors (Motor-Encoder erforderlich zur Nutzung der aktuellen Ardumower-Software).&lt;br /&gt;
&lt;br /&gt;
Momentan wird die Odometrie folgendermaßen genutzt:&lt;br /&gt;
* Gewährleistung der gleichen Drehzahl bei rechtem und linken Antriebsrad des Ardumower beim Vorwärtsfahren.&lt;br /&gt;
&lt;br /&gt;
= Pinbelegung der Ardumower Motor-Encoder =&lt;br /&gt;
&lt;br /&gt;
Die Motoren aus dem Shop verfügen über 2-Kanal-Encoder. Diese liefern 5 Impulse per Motorumdrehung. Multipliziert man diese mit dem Übersetzungsverhältnis des Getriebes von 1:212, erhält man 1060 Encoderimpulse pro voller Radumdrehung.&lt;br /&gt;
&lt;br /&gt;
Pinbelegung und Verdrahtung der Encoder-Anschlüsse:&lt;br /&gt;
&lt;br /&gt;
 grün  ---- GND&lt;br /&gt;
 braun  ---- VCC&lt;br /&gt;
 blau   ---- Odometry1 (Kanal 1)&lt;br /&gt;
 lila ---- Odometry2 (Kanal 2)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
WICHTIG: Auf den PCB V0.5/1.2 fehlen die Pull-up-Widerstände! Du mußt sie selbst ergänzen:&lt;br /&gt;
&lt;br /&gt;
 odometry1 --- 4.7k --- 5v&lt;br /&gt;
 odometry2 --- 4.7k --- 5v&lt;br /&gt;
&lt;br /&gt;
= Signalverlauf der Odometrie-Encoder =&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: ardumower_odometry_encoder.jpg&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 Vorwärts: Pin 1 zeigt Übergang LOW-&amp;gt;HIGH und Pin 2 = HIGH&lt;br /&gt;
 Rückwärts: Pin 1 zeigt Übergang LOW-&amp;gt;HIGH und Pin 2 = LOW&lt;br /&gt;
&lt;br /&gt;
= Encoder im Eigenbau =&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: l50_odometry_sensor.jpg | Ambrogio L50: An encoder wheel of a computer mouse is glued to a slice. The screw of the wheel shaft is unscrewed, and the slice is added. Embedded in two Plexiglas pieces is a photo diode and photo transistor of a light barrier (e.g. LTH 301)&lt;br /&gt;
File: mower_photo_interrupter_right.JPG | Tianchen TC-G158 (right): A light barrier (e.g. LTH 301) is interrupted by a gear-weheel of the motor shaft. ).&lt;br /&gt;
File: Odometry_circuit.jpg | LTH301 circuit&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Verdrahtung ==&lt;br /&gt;
&lt;br /&gt;
 VCC           pinArduino&lt;br /&gt;
 +--13 KOhm----+-------Collector  Emitter---GND&lt;br /&gt;
 +--380 Ohm------------Anode      Kathode---GND&lt;br /&gt;
&lt;br /&gt;
== Differential drive ==&lt;br /&gt;
By adding (integrating) Odometry speed, we can calculate distance and heading. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt; &lt;br /&gt;
File: differential_drive.png | Differential drive&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Distance per wheel:&lt;br /&gt;
 left_cm  = ticksLeft  / odometryTicksPerCm&lt;br /&gt;
 right_cm = ticksRight / odometryTicksPerCm&lt;br /&gt;
 &lt;br /&gt;
Heading:&lt;br /&gt;
 wheel_theta = (left_cm - right_cm) / odometryWheelBaseCm&lt;br /&gt;
 odometryTheta += wheel_theta&lt;br /&gt;
&lt;br /&gt;
Overall distance:&lt;br /&gt;
 avg_cm  = (left_cm + right_cm) / 2.0&lt;br /&gt;
 odometryX += avg_cm * sin(odometryTheta)&lt;br /&gt;
 odometryY += avg_cm * cos(odometryTheta)&lt;br /&gt;
&lt;br /&gt;
== Meßfehler ==&lt;br /&gt;
Durch Auswertung der am linken und rechten Radantrieb gezählten Encoderimpulse über der Zeit können wir Geschwindigkeit, Fahrstrecke und Richtung ermitteln. Jedoch addieren sich kleine Fehler durch Verwendung von Näherungsformeln und Schlupf der Antriebsräder über längere Zeit zu wachsenden Ungenauigkeiten. Dies kann durch [http://wiki.ardumower.de/index.php?title=Sensor_fusion Sensor-Signalfusion] kompensiert werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: odometry_plot.jpg | Odometriefehler&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Drehzahlregelung (PID) der Motoren =&lt;br /&gt;
Die Drehzahlregelung der Radantriebe erfolgt per Software über einen PID-Regler. Die Qualität der Regelung kann per pfodApp visualisiert werden (Plot-&amp;gt;Motor control):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
  File: Odometry_motor_pid_controller.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Video =&lt;br /&gt;
Noch kein Video verfügbar (Odometrie derzeit in Entwicklung)&lt;/div&gt;</summary>
		<author><name>Pemiso</name></author>	</entry>

	<entry>
		<id>https://wiki.ardumower.de/index.php?title=Wegmessung_(Odometrie)&amp;diff=2501</id>
		<title>Wegmessung (Odometrie)</title>
		<link rel="alternate" type="text/html" href="https://wiki.ardumower.de/index.php?title=Wegmessung_(Odometrie)&amp;diff=2501"/>
				<updated>2015-07-14T23:33:08Z</updated>
		
		<summary type="html">&lt;p&gt;Pemiso: /* Ground measurement error */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Zusammenfassung =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: odometry.png &lt;br /&gt;
File: ardumower_odometry_sensor.png&lt;br /&gt;
File: ardumower_motor.jpg&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mittels Odometrie können sowohl Geschwindigkeit als auch kurzfristige Position des ArduMower ermittelt werden. Dies basiert auf der Zählung der Umdrehungen des linken und rechten Radantriebsmotors (Motor-Encoder erforderlich zur Nutzung der aktuellen Ardumower-Software).&lt;br /&gt;
&lt;br /&gt;
Momentan wird die Odometrie folgendermaßen genutzt:&lt;br /&gt;
* Gewährleistung der gleichen Drehzahl bei rechtem und linken Antriebsrad des Ardumower beim Vorwärtsfahren.&lt;br /&gt;
&lt;br /&gt;
= Pinbelegung der Ardumower Motor-Encoder =&lt;br /&gt;
&lt;br /&gt;
Die Motoren aus dem Shop verfügen über 2-Kanal-Encoder. Diese liefern 5 Impulse per Motorumdrehung. Multipliziert man diese mit dem Übersetzungsverhältnis des Getriebes von 1:212, erhält man 1060 Encoderimpulse pro voller Radumdrehung.&lt;br /&gt;
&lt;br /&gt;
Pinbelegung und Verdrahtung der Encoder-Anschlüsse:&lt;br /&gt;
&lt;br /&gt;
 grün  ---- GND&lt;br /&gt;
 braun  ---- VCC&lt;br /&gt;
 blau   ---- Odometry1 (Kanal 1)&lt;br /&gt;
 lila ---- Odometry2 (Kanal 2)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
WICHTIG: Auf den PCB V0.5/1.2 fehlen die Pull-up-Widerstände! Du mußt sie selbst ergänzen:&lt;br /&gt;
&lt;br /&gt;
 odometry1 --- 4.7k --- 5v&lt;br /&gt;
 odometry2 --- 4.7k --- 5v&lt;br /&gt;
&lt;br /&gt;
= Signalverlauf der Odometrie-Encoder =&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: ardumower_odometry_encoder.jpg&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 Vorwärts: Pin 1 zeigt Übergang LOW-&amp;gt;HIGH und Pin 2 = HIGH&lt;br /&gt;
 Rückwärts: Pin 1 zeigt Übergang LOW-&amp;gt;HIGH und Pin 2 = LOW&lt;br /&gt;
&lt;br /&gt;
= Encoder im Eigenbau =&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: l50_odometry_sensor.jpg | Ambrogio L50: An encoder wheel of a computer mouse is glued to a slice. The screw of the wheel shaft is unscrewed, and the slice is added. Embedded in two Plexiglas pieces is a photo diode and photo transistor of a light barrier (e.g. LTH 301)&lt;br /&gt;
File: mower_photo_interrupter_right.JPG | Tianchen TC-G158 (right): A light barrier (e.g. LTH 301) is interrupted by a gear-weheel of the motor shaft. ).&lt;br /&gt;
File: Odometry_circuit.jpg | LTH301 circuit&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Circuit ==&lt;br /&gt;
&lt;br /&gt;
 VCC           pinArduino&lt;br /&gt;
 +--13 KOhm----+-------Collector  Emitter---GND&lt;br /&gt;
 +--380 Ohm------------Anode      Kathode---GND&lt;br /&gt;
&lt;br /&gt;
== Differential drive ==&lt;br /&gt;
By adding (integrating) Odometry speed, we can calculate distance and heading. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt; &lt;br /&gt;
File: differential_drive.png | Differential drive&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Distance per wheel:&lt;br /&gt;
 left_cm  = ticksLeft  / odometryTicksPerCm&lt;br /&gt;
 right_cm = ticksRight / odometryTicksPerCm&lt;br /&gt;
 &lt;br /&gt;
Heading:&lt;br /&gt;
 wheel_theta = (left_cm - right_cm) / odometryWheelBaseCm&lt;br /&gt;
 odometryTheta += wheel_theta&lt;br /&gt;
&lt;br /&gt;
Overall distance:&lt;br /&gt;
 avg_cm  = (left_cm + right_cm) / 2.0&lt;br /&gt;
 odometryX += avg_cm * sin(odometryTheta)&lt;br /&gt;
 odometryY += avg_cm * cos(odometryTheta)&lt;br /&gt;
&lt;br /&gt;
== Meßfehler ==&lt;br /&gt;
Durch Auswertung der am linken und rechten Radantrieb gezählten Encoderimpulse über der Zeit können wir Geschwindigkeit, Fahrstrecke und Richtung ermitteln. Jedoch addieren sich kleine Fehler durch Verwendung von Näherungsformeln und Schlupf der Antriebsräder über längere Zeit zu wachsenden Ungenauigkeiten. Dies kann durch [http://wiki.ardumower.de/index.php?title=Sensor_fusion Sensor-Signalfusion] kompensiert werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: odometry_plot.jpg | Odometriefehler&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Drehzahlregelung (PID) der Motoren =&lt;br /&gt;
Die Drehzahlregelung der Radantriebe erfolgt per Software über einen PID-Regler. Die Qualität der Regelung kann per pfodApp visualisiert werden (Plot-&amp;gt;Motor control):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
  File: Odometry_motor_pid_controller.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Video =&lt;br /&gt;
Noch kein Video verfügbar (Odometrie derzeit in Entwicklung)&lt;/div&gt;</summary>
		<author><name>Pemiso</name></author>	</entry>

	<entry>
		<id>https://wiki.ardumower.de/index.php?title=Wegmessung_(Odometrie)&amp;diff=2500</id>
		<title>Wegmessung (Odometrie)</title>
		<link rel="alternate" type="text/html" href="https://wiki.ardumower.de/index.php?title=Wegmessung_(Odometrie)&amp;diff=2500"/>
				<updated>2015-07-14T23:21:53Z</updated>
		
		<summary type="html">&lt;p&gt;Pemiso: /* Motor-Regler (PID) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Zusammenfassung =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: odometry.png &lt;br /&gt;
File: ardumower_odometry_sensor.png&lt;br /&gt;
File: ardumower_motor.jpg&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mittels Odometrie können sowohl Geschwindigkeit als auch kurzfristige Position des ArduMower ermittelt werden. Dies basiert auf der Zählung der Umdrehungen des linken und rechten Radantriebsmotors (Motor-Encoder erforderlich zur Nutzung der aktuellen Ardumower-Software).&lt;br /&gt;
&lt;br /&gt;
Momentan wird die Odometrie folgendermaßen genutzt:&lt;br /&gt;
* Gewährleistung der gleichen Drehzahl bei rechtem und linken Antriebsrad des Ardumower beim Vorwärtsfahren.&lt;br /&gt;
&lt;br /&gt;
= Pinbelegung der Ardumower Motor-Encoder =&lt;br /&gt;
&lt;br /&gt;
Die Motoren aus dem Shop verfügen über 2-Kanal-Encoder. Diese liefern 5 Impulse per Motorumdrehung. Multipliziert man diese mit dem Übersetzungsverhältnis des Getriebes von 1:212, erhält man 1060 Encoderimpulse pro voller Radumdrehung.&lt;br /&gt;
&lt;br /&gt;
Pinbelegung und Verdrahtung der Encoder-Anschlüsse:&lt;br /&gt;
&lt;br /&gt;
 grün  ---- GND&lt;br /&gt;
 braun  ---- VCC&lt;br /&gt;
 blau   ---- Odometry1 (Kanal 1)&lt;br /&gt;
 lila ---- Odometry2 (Kanal 2)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
WICHTIG: Auf den PCB V0.5/1.2 fehlen die Pull-up-Widerstände! Du mußt sie selbst ergänzen:&lt;br /&gt;
&lt;br /&gt;
 odometry1 --- 4.7k --- 5v&lt;br /&gt;
 odometry2 --- 4.7k --- 5v&lt;br /&gt;
&lt;br /&gt;
= Signalverlauf der Odometrie-Encoder =&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: ardumower_odometry_encoder.jpg&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 Vorwärts: Pin 1 zeigt Übergang LOW-&amp;gt;HIGH und Pin 2 = HIGH&lt;br /&gt;
 Rückwärts: Pin 1 zeigt Übergang LOW-&amp;gt;HIGH und Pin 2 = LOW&lt;br /&gt;
&lt;br /&gt;
= Encoder im Eigenbau =&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: l50_odometry_sensor.jpg | Ambrogio L50: An encoder wheel of a computer mouse is glued to a slice. The screw of the wheel shaft is unscrewed, and the slice is added. Embedded in two Plexiglas pieces is a photo diode and photo transistor of a light barrier (e.g. LTH 301)&lt;br /&gt;
File: mower_photo_interrupter_right.JPG | Tianchen TC-G158 (right): A light barrier (e.g. LTH 301) is interrupted by a gear-weheel of the motor shaft. ).&lt;br /&gt;
File: Odometry_circuit.jpg | LTH301 circuit&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Circuit ==&lt;br /&gt;
&lt;br /&gt;
 VCC           pinArduino&lt;br /&gt;
 +--13 KOhm----+-------Collector  Emitter---GND&lt;br /&gt;
 +--380 Ohm------------Anode      Kathode---GND&lt;br /&gt;
&lt;br /&gt;
== Differential drive ==&lt;br /&gt;
By adding (integrating) Odometry speed, we can calculate distance and heading. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt; &lt;br /&gt;
File: differential_drive.png | Differential drive&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Distance per wheel:&lt;br /&gt;
 left_cm  = ticksLeft  / odometryTicksPerCm&lt;br /&gt;
 right_cm = ticksRight / odometryTicksPerCm&lt;br /&gt;
 &lt;br /&gt;
Heading:&lt;br /&gt;
 wheel_theta = (left_cm - right_cm) / odometryWheelBaseCm&lt;br /&gt;
 odometryTheta += wheel_theta&lt;br /&gt;
&lt;br /&gt;
Overall distance:&lt;br /&gt;
 avg_cm  = (left_cm + right_cm) / 2.0&lt;br /&gt;
 odometryX += avg_cm * sin(odometryTheta)&lt;br /&gt;
 odometryY += avg_cm * cos(odometryTheta)&lt;br /&gt;
&lt;br /&gt;
== Ground measurement error ==&lt;br /&gt;
By adding (integrating) Odometry speed, we can calculate distance and heading. However, as we are adding a small error each time (due to not exact physical ground measurement), distance and angle errors are increasing. This can be solved by [http://wiki.ardumower.de/index.php?title=Sensor_fusion sensor fusion].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: odometry_plot.jpg | Odometry error&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Drehzahlregelung (PID) der Motoren =&lt;br /&gt;
Die Drehzahlregelung der Radantriebe erfolgt per Software über einen PID-Regler. Die Qualität der Regelung kann per pfodApp visualisiert werden (Plot-&amp;gt;Motor control):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
  File: Odometry_motor_pid_controller.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Video =&lt;br /&gt;
Noch kein Video verfügbar (Odometrie derzeit in Entwicklung)&lt;/div&gt;</summary>
		<author><name>Pemiso</name></author>	</entry>

	<entry>
		<id>https://wiki.ardumower.de/index.php?title=Wegmessung_(Odometrie)&amp;diff=2499</id>
		<title>Wegmessung (Odometrie)</title>
		<link rel="alternate" type="text/html" href="https://wiki.ardumower.de/index.php?title=Wegmessung_(Odometrie)&amp;diff=2499"/>
				<updated>2015-07-14T23:20:49Z</updated>
		
		<summary type="html">&lt;p&gt;Pemiso: /* Motor controller (PID) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Zusammenfassung =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: odometry.png &lt;br /&gt;
File: ardumower_odometry_sensor.png&lt;br /&gt;
File: ardumower_motor.jpg&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mittels Odometrie können sowohl Geschwindigkeit als auch kurzfristige Position des ArduMower ermittelt werden. Dies basiert auf der Zählung der Umdrehungen des linken und rechten Radantriebsmotors (Motor-Encoder erforderlich zur Nutzung der aktuellen Ardumower-Software).&lt;br /&gt;
&lt;br /&gt;
Momentan wird die Odometrie folgendermaßen genutzt:&lt;br /&gt;
* Gewährleistung der gleichen Drehzahl bei rechtem und linken Antriebsrad des Ardumower beim Vorwärtsfahren.&lt;br /&gt;
&lt;br /&gt;
= Pinbelegung der Ardumower Motor-Encoder =&lt;br /&gt;
&lt;br /&gt;
Die Motoren aus dem Shop verfügen über 2-Kanal-Encoder. Diese liefern 5 Impulse per Motorumdrehung. Multipliziert man diese mit dem Übersetzungsverhältnis des Getriebes von 1:212, erhält man 1060 Encoderimpulse pro voller Radumdrehung.&lt;br /&gt;
&lt;br /&gt;
Pinbelegung und Verdrahtung der Encoder-Anschlüsse:&lt;br /&gt;
&lt;br /&gt;
 grün  ---- GND&lt;br /&gt;
 braun  ---- VCC&lt;br /&gt;
 blau   ---- Odometry1 (Kanal 1)&lt;br /&gt;
 lila ---- Odometry2 (Kanal 2)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
WICHTIG: Auf den PCB V0.5/1.2 fehlen die Pull-up-Widerstände! Du mußt sie selbst ergänzen:&lt;br /&gt;
&lt;br /&gt;
 odometry1 --- 4.7k --- 5v&lt;br /&gt;
 odometry2 --- 4.7k --- 5v&lt;br /&gt;
&lt;br /&gt;
= Signalverlauf der Odometrie-Encoder =&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: ardumower_odometry_encoder.jpg&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 Vorwärts: Pin 1 zeigt Übergang LOW-&amp;gt;HIGH und Pin 2 = HIGH&lt;br /&gt;
 Rückwärts: Pin 1 zeigt Übergang LOW-&amp;gt;HIGH und Pin 2 = LOW&lt;br /&gt;
&lt;br /&gt;
= Encoder im Eigenbau =&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: l50_odometry_sensor.jpg | Ambrogio L50: An encoder wheel of a computer mouse is glued to a slice. The screw of the wheel shaft is unscrewed, and the slice is added. Embedded in two Plexiglas pieces is a photo diode and photo transistor of a light barrier (e.g. LTH 301)&lt;br /&gt;
File: mower_photo_interrupter_right.JPG | Tianchen TC-G158 (right): A light barrier (e.g. LTH 301) is interrupted by a gear-weheel of the motor shaft. ).&lt;br /&gt;
File: Odometry_circuit.jpg | LTH301 circuit&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Circuit ==&lt;br /&gt;
&lt;br /&gt;
 VCC           pinArduino&lt;br /&gt;
 +--13 KOhm----+-------Collector  Emitter---GND&lt;br /&gt;
 +--380 Ohm------------Anode      Kathode---GND&lt;br /&gt;
&lt;br /&gt;
== Differential drive ==&lt;br /&gt;
By adding (integrating) Odometry speed, we can calculate distance and heading. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt; &lt;br /&gt;
File: differential_drive.png | Differential drive&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Distance per wheel:&lt;br /&gt;
 left_cm  = ticksLeft  / odometryTicksPerCm&lt;br /&gt;
 right_cm = ticksRight / odometryTicksPerCm&lt;br /&gt;
 &lt;br /&gt;
Heading:&lt;br /&gt;
 wheel_theta = (left_cm - right_cm) / odometryWheelBaseCm&lt;br /&gt;
 odometryTheta += wheel_theta&lt;br /&gt;
&lt;br /&gt;
Overall distance:&lt;br /&gt;
 avg_cm  = (left_cm + right_cm) / 2.0&lt;br /&gt;
 odometryX += avg_cm * sin(odometryTheta)&lt;br /&gt;
 odometryY += avg_cm * cos(odometryTheta)&lt;br /&gt;
&lt;br /&gt;
== Ground measurement error ==&lt;br /&gt;
By adding (integrating) Odometry speed, we can calculate distance and heading. However, as we are adding a small error each time (due to not exact physical ground measurement), distance and angle errors are increasing. This can be solved by [http://wiki.ardumower.de/index.php?title=Sensor_fusion sensor fusion].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: odometry_plot.jpg | Odometry error&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Motor-Regler (PID) =&lt;br /&gt;
Die Drehzahlregelung der Radantriebe erfolgt per Software über einen PID-Regler. Die Qualität der Regelung kann per pfodApp visualisiert werden (Plot-&amp;gt;Motor control):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
  File: Odometry_motor_pid_controller.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Video =&lt;br /&gt;
Noch kein Video verfügbar (Odometrie derzeit in Entwicklung)&lt;/div&gt;</summary>
		<author><name>Pemiso</name></author>	</entry>

	<entry>
		<id>https://wiki.ardumower.de/index.php?title=Wegmessung_(Odometrie)&amp;diff=2498</id>
		<title>Wegmessung (Odometrie)</title>
		<link rel="alternate" type="text/html" href="https://wiki.ardumower.de/index.php?title=Wegmessung_(Odometrie)&amp;diff=2498"/>
				<updated>2015-07-14T23:18:30Z</updated>
		
		<summary type="html">&lt;p&gt;Pemiso: /* Video */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Zusammenfassung =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: odometry.png &lt;br /&gt;
File: ardumower_odometry_sensor.png&lt;br /&gt;
File: ardumower_motor.jpg&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mittels Odometrie können sowohl Geschwindigkeit als auch kurzfristige Position des ArduMower ermittelt werden. Dies basiert auf der Zählung der Umdrehungen des linken und rechten Radantriebsmotors (Motor-Encoder erforderlich zur Nutzung der aktuellen Ardumower-Software).&lt;br /&gt;
&lt;br /&gt;
Momentan wird die Odometrie folgendermaßen genutzt:&lt;br /&gt;
* Gewährleistung der gleichen Drehzahl bei rechtem und linken Antriebsrad des Ardumower beim Vorwärtsfahren.&lt;br /&gt;
&lt;br /&gt;
= Pinbelegung der Ardumower Motor-Encoder =&lt;br /&gt;
&lt;br /&gt;
Die Motoren aus dem Shop verfügen über 2-Kanal-Encoder. Diese liefern 5 Impulse per Motorumdrehung. Multipliziert man diese mit dem Übersetzungsverhältnis des Getriebes von 1:212, erhält man 1060 Encoderimpulse pro voller Radumdrehung.&lt;br /&gt;
&lt;br /&gt;
Pinbelegung und Verdrahtung der Encoder-Anschlüsse:&lt;br /&gt;
&lt;br /&gt;
 grün  ---- GND&lt;br /&gt;
 braun  ---- VCC&lt;br /&gt;
 blau   ---- Odometry1 (Kanal 1)&lt;br /&gt;
 lila ---- Odometry2 (Kanal 2)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
WICHTIG: Auf den PCB V0.5/1.2 fehlen die Pull-up-Widerstände! Du mußt sie selbst ergänzen:&lt;br /&gt;
&lt;br /&gt;
 odometry1 --- 4.7k --- 5v&lt;br /&gt;
 odometry2 --- 4.7k --- 5v&lt;br /&gt;
&lt;br /&gt;
= Signalverlauf der Odometrie-Encoder =&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: ardumower_odometry_encoder.jpg&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 Vorwärts: Pin 1 zeigt Übergang LOW-&amp;gt;HIGH und Pin 2 = HIGH&lt;br /&gt;
 Rückwärts: Pin 1 zeigt Übergang LOW-&amp;gt;HIGH und Pin 2 = LOW&lt;br /&gt;
&lt;br /&gt;
= Encoder im Eigenbau =&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: l50_odometry_sensor.jpg | Ambrogio L50: An encoder wheel of a computer mouse is glued to a slice. The screw of the wheel shaft is unscrewed, and the slice is added. Embedded in two Plexiglas pieces is a photo diode and photo transistor of a light barrier (e.g. LTH 301)&lt;br /&gt;
File: mower_photo_interrupter_right.JPG | Tianchen TC-G158 (right): A light barrier (e.g. LTH 301) is interrupted by a gear-weheel of the motor shaft. ).&lt;br /&gt;
File: Odometry_circuit.jpg | LTH301 circuit&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Circuit ==&lt;br /&gt;
&lt;br /&gt;
 VCC           pinArduino&lt;br /&gt;
 +--13 KOhm----+-------Collector  Emitter---GND&lt;br /&gt;
 +--380 Ohm------------Anode      Kathode---GND&lt;br /&gt;
&lt;br /&gt;
== Differential drive ==&lt;br /&gt;
By adding (integrating) Odometry speed, we can calculate distance and heading. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt; &lt;br /&gt;
File: differential_drive.png | Differential drive&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Distance per wheel:&lt;br /&gt;
 left_cm  = ticksLeft  / odometryTicksPerCm&lt;br /&gt;
 right_cm = ticksRight / odometryTicksPerCm&lt;br /&gt;
 &lt;br /&gt;
Heading:&lt;br /&gt;
 wheel_theta = (left_cm - right_cm) / odometryWheelBaseCm&lt;br /&gt;
 odometryTheta += wheel_theta&lt;br /&gt;
&lt;br /&gt;
Overall distance:&lt;br /&gt;
 avg_cm  = (left_cm + right_cm) / 2.0&lt;br /&gt;
 odometryX += avg_cm * sin(odometryTheta)&lt;br /&gt;
 odometryY += avg_cm * cos(odometryTheta)&lt;br /&gt;
&lt;br /&gt;
== Ground measurement error ==&lt;br /&gt;
By adding (integrating) Odometry speed, we can calculate distance and heading. However, as we are adding a small error each time (due to not exact physical ground measurement), distance and angle errors are increasing. This can be solved by [http://wiki.ardumower.de/index.php?title=Sensor_fusion sensor fusion].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: odometry_plot.jpg | Odometry error&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Motor controller (PID) =&lt;br /&gt;
The speed of the motors is controlled by a software PID controller. You can monitor the quality of the motor speed control via pfodApp (Plot-&amp;gt;Motor control):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
  File: Odometry_motor_pid_controller.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Video =&lt;br /&gt;
Noch kein Video verfügbar (Odometrie derzeit in Entwicklung)&lt;/div&gt;</summary>
		<author><name>Pemiso</name></author>	</entry>

	<entry>
		<id>https://wiki.ardumower.de/index.php?title=Wegmessung_(Odometrie)&amp;diff=2497</id>
		<title>Wegmessung (Odometrie)</title>
		<link rel="alternate" type="text/html" href="https://wiki.ardumower.de/index.php?title=Wegmessung_(Odometrie)&amp;diff=2497"/>
				<updated>2015-07-14T23:17:31Z</updated>
		
		<summary type="html">&lt;p&gt;Pemiso: /* Do-It-Yourself encoders */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Zusammenfassung =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: odometry.png &lt;br /&gt;
File: ardumower_odometry_sensor.png&lt;br /&gt;
File: ardumower_motor.jpg&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mittels Odometrie können sowohl Geschwindigkeit als auch kurzfristige Position des ArduMower ermittelt werden. Dies basiert auf der Zählung der Umdrehungen des linken und rechten Radantriebsmotors (Motor-Encoder erforderlich zur Nutzung der aktuellen Ardumower-Software).&lt;br /&gt;
&lt;br /&gt;
Momentan wird die Odometrie folgendermaßen genutzt:&lt;br /&gt;
* Gewährleistung der gleichen Drehzahl bei rechtem und linken Antriebsrad des Ardumower beim Vorwärtsfahren.&lt;br /&gt;
&lt;br /&gt;
= Pinbelegung der Ardumower Motor-Encoder =&lt;br /&gt;
&lt;br /&gt;
Die Motoren aus dem Shop verfügen über 2-Kanal-Encoder. Diese liefern 5 Impulse per Motorumdrehung. Multipliziert man diese mit dem Übersetzungsverhältnis des Getriebes von 1:212, erhält man 1060 Encoderimpulse pro voller Radumdrehung.&lt;br /&gt;
&lt;br /&gt;
Pinbelegung und Verdrahtung der Encoder-Anschlüsse:&lt;br /&gt;
&lt;br /&gt;
 grün  ---- GND&lt;br /&gt;
 braun  ---- VCC&lt;br /&gt;
 blau   ---- Odometry1 (Kanal 1)&lt;br /&gt;
 lila ---- Odometry2 (Kanal 2)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
WICHTIG: Auf den PCB V0.5/1.2 fehlen die Pull-up-Widerstände! Du mußt sie selbst ergänzen:&lt;br /&gt;
&lt;br /&gt;
 odometry1 --- 4.7k --- 5v&lt;br /&gt;
 odometry2 --- 4.7k --- 5v&lt;br /&gt;
&lt;br /&gt;
= Signalverlauf der Odometrie-Encoder =&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: ardumower_odometry_encoder.jpg&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 Vorwärts: Pin 1 zeigt Übergang LOW-&amp;gt;HIGH und Pin 2 = HIGH&lt;br /&gt;
 Rückwärts: Pin 1 zeigt Übergang LOW-&amp;gt;HIGH und Pin 2 = LOW&lt;br /&gt;
&lt;br /&gt;
= Encoder im Eigenbau =&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: l50_odometry_sensor.jpg | Ambrogio L50: An encoder wheel of a computer mouse is glued to a slice. The screw of the wheel shaft is unscrewed, and the slice is added. Embedded in two Plexiglas pieces is a photo diode and photo transistor of a light barrier (e.g. LTH 301)&lt;br /&gt;
File: mower_photo_interrupter_right.JPG | Tianchen TC-G158 (right): A light barrier (e.g. LTH 301) is interrupted by a gear-weheel of the motor shaft. ).&lt;br /&gt;
File: Odometry_circuit.jpg | LTH301 circuit&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Circuit ==&lt;br /&gt;
&lt;br /&gt;
 VCC           pinArduino&lt;br /&gt;
 +--13 KOhm----+-------Collector  Emitter---GND&lt;br /&gt;
 +--380 Ohm------------Anode      Kathode---GND&lt;br /&gt;
&lt;br /&gt;
== Differential drive ==&lt;br /&gt;
By adding (integrating) Odometry speed, we can calculate distance and heading. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt; &lt;br /&gt;
File: differential_drive.png | Differential drive&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Distance per wheel:&lt;br /&gt;
 left_cm  = ticksLeft  / odometryTicksPerCm&lt;br /&gt;
 right_cm = ticksRight / odometryTicksPerCm&lt;br /&gt;
 &lt;br /&gt;
Heading:&lt;br /&gt;
 wheel_theta = (left_cm - right_cm) / odometryWheelBaseCm&lt;br /&gt;
 odometryTheta += wheel_theta&lt;br /&gt;
&lt;br /&gt;
Overall distance:&lt;br /&gt;
 avg_cm  = (left_cm + right_cm) / 2.0&lt;br /&gt;
 odometryX += avg_cm * sin(odometryTheta)&lt;br /&gt;
 odometryY += avg_cm * cos(odometryTheta)&lt;br /&gt;
&lt;br /&gt;
== Ground measurement error ==&lt;br /&gt;
By adding (integrating) Odometry speed, we can calculate distance and heading. However, as we are adding a small error each time (due to not exact physical ground measurement), distance and angle errors are increasing. This can be solved by [http://wiki.ardumower.de/index.php?title=Sensor_fusion sensor fusion].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: odometry_plot.jpg | Odometry error&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Motor controller (PID) =&lt;br /&gt;
The speed of the motors is controlled by a software PID controller. You can monitor the quality of the motor speed control via pfodApp (Plot-&amp;gt;Motor control):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
  File: Odometry_motor_pid_controller.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Video =&lt;br /&gt;
No video yet  (odometry is currently under development)&lt;/div&gt;</summary>
		<author><name>Pemiso</name></author>	</entry>

	<entry>
		<id>https://wiki.ardumower.de/index.php?title=Wegmessung_(Odometrie)&amp;diff=2496</id>
		<title>Wegmessung (Odometrie)</title>
		<link rel="alternate" type="text/html" href="https://wiki.ardumower.de/index.php?title=Wegmessung_(Odometrie)&amp;diff=2496"/>
				<updated>2015-07-14T23:16:55Z</updated>
		
		<summary type="html">&lt;p&gt;Pemiso: /* Signalform der Odometrie-Encoder */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Zusammenfassung =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: odometry.png &lt;br /&gt;
File: ardumower_odometry_sensor.png&lt;br /&gt;
File: ardumower_motor.jpg&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mittels Odometrie können sowohl Geschwindigkeit als auch kurzfristige Position des ArduMower ermittelt werden. Dies basiert auf der Zählung der Umdrehungen des linken und rechten Radantriebsmotors (Motor-Encoder erforderlich zur Nutzung der aktuellen Ardumower-Software).&lt;br /&gt;
&lt;br /&gt;
Momentan wird die Odometrie folgendermaßen genutzt:&lt;br /&gt;
* Gewährleistung der gleichen Drehzahl bei rechtem und linken Antriebsrad des Ardumower beim Vorwärtsfahren.&lt;br /&gt;
&lt;br /&gt;
= Pinbelegung der Ardumower Motor-Encoder =&lt;br /&gt;
&lt;br /&gt;
Die Motoren aus dem Shop verfügen über 2-Kanal-Encoder. Diese liefern 5 Impulse per Motorumdrehung. Multipliziert man diese mit dem Übersetzungsverhältnis des Getriebes von 1:212, erhält man 1060 Encoderimpulse pro voller Radumdrehung.&lt;br /&gt;
&lt;br /&gt;
Pinbelegung und Verdrahtung der Encoder-Anschlüsse:&lt;br /&gt;
&lt;br /&gt;
 grün  ---- GND&lt;br /&gt;
 braun  ---- VCC&lt;br /&gt;
 blau   ---- Odometry1 (Kanal 1)&lt;br /&gt;
 lila ---- Odometry2 (Kanal 2)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
WICHTIG: Auf den PCB V0.5/1.2 fehlen die Pull-up-Widerstände! Du mußt sie selbst ergänzen:&lt;br /&gt;
&lt;br /&gt;
 odometry1 --- 4.7k --- 5v&lt;br /&gt;
 odometry2 --- 4.7k --- 5v&lt;br /&gt;
&lt;br /&gt;
= Signalverlauf der Odometrie-Encoder =&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: ardumower_odometry_encoder.jpg&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 Vorwärts: Pin 1 zeigt Übergang LOW-&amp;gt;HIGH und Pin 2 = HIGH&lt;br /&gt;
 Rückwärts: Pin 1 zeigt Übergang LOW-&amp;gt;HIGH und Pin 2 = LOW&lt;br /&gt;
&lt;br /&gt;
= Do-It-Yourself encoders =&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: l50_odometry_sensor.jpg | Ambrogio L50: An encoder wheel of a computer mouse is glued to a slice. The screw of the wheel shaft is unscrewed, and the slice is added. Embedded in two Plexiglas pieces is a photo diode and photo transistor of a light barrier (e.g. LTH 301)&lt;br /&gt;
File: mower_photo_interrupter_right.JPG | Tianchen TC-G158 (right): A light barrier (e.g. LTH 301) is interrupted by a gear-weheel of the motor shaft. ).&lt;br /&gt;
File: Odometry_circuit.jpg | LTH301 circuit&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Circuit ==&lt;br /&gt;
&lt;br /&gt;
 VCC           pinArduino&lt;br /&gt;
 +--13 KOhm----+-------Collector  Emitter---GND&lt;br /&gt;
 +--380 Ohm------------Anode      Kathode---GND&lt;br /&gt;
&lt;br /&gt;
== Differential drive ==&lt;br /&gt;
By adding (integrating) Odometry speed, we can calculate distance and heading. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt; &lt;br /&gt;
File: differential_drive.png | Differential drive&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Distance per wheel:&lt;br /&gt;
 left_cm  = ticksLeft  / odometryTicksPerCm&lt;br /&gt;
 right_cm = ticksRight / odometryTicksPerCm&lt;br /&gt;
 &lt;br /&gt;
Heading:&lt;br /&gt;
 wheel_theta = (left_cm - right_cm) / odometryWheelBaseCm&lt;br /&gt;
 odometryTheta += wheel_theta&lt;br /&gt;
&lt;br /&gt;
Overall distance:&lt;br /&gt;
 avg_cm  = (left_cm + right_cm) / 2.0&lt;br /&gt;
 odometryX += avg_cm * sin(odometryTheta)&lt;br /&gt;
 odometryY += avg_cm * cos(odometryTheta)&lt;br /&gt;
&lt;br /&gt;
== Ground measurement error ==&lt;br /&gt;
By adding (integrating) Odometry speed, we can calculate distance and heading. However, as we are adding a small error each time (due to not exact physical ground measurement), distance and angle errors are increasing. This can be solved by [http://wiki.ardumower.de/index.php?title=Sensor_fusion sensor fusion].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: odometry_plot.jpg | Odometry error&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Motor controller (PID) =&lt;br /&gt;
The speed of the motors is controlled by a software PID controller. You can monitor the quality of the motor speed control via pfodApp (Plot-&amp;gt;Motor control):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
  File: Odometry_motor_pid_controller.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Video =&lt;br /&gt;
No video yet  (odometry is currently under development)&lt;/div&gt;</summary>
		<author><name>Pemiso</name></author>	</entry>

	<entry>
		<id>https://wiki.ardumower.de/index.php?title=Wegmessung_(Odometrie)&amp;diff=2495</id>
		<title>Wegmessung (Odometrie)</title>
		<link rel="alternate" type="text/html" href="https://wiki.ardumower.de/index.php?title=Wegmessung_(Odometrie)&amp;diff=2495"/>
				<updated>2015-07-14T23:16:39Z</updated>
		
		<summary type="html">&lt;p&gt;Pemiso: /* Signal of odometry encoders */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Zusammenfassung =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: odometry.png &lt;br /&gt;
File: ardumower_odometry_sensor.png&lt;br /&gt;
File: ardumower_motor.jpg&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mittels Odometrie können sowohl Geschwindigkeit als auch kurzfristige Position des ArduMower ermittelt werden. Dies basiert auf der Zählung der Umdrehungen des linken und rechten Radantriebsmotors (Motor-Encoder erforderlich zur Nutzung der aktuellen Ardumower-Software).&lt;br /&gt;
&lt;br /&gt;
Momentan wird die Odometrie folgendermaßen genutzt:&lt;br /&gt;
* Gewährleistung der gleichen Drehzahl bei rechtem und linken Antriebsrad des Ardumower beim Vorwärtsfahren.&lt;br /&gt;
&lt;br /&gt;
= Pinbelegung der Ardumower Motor-Encoder =&lt;br /&gt;
&lt;br /&gt;
Die Motoren aus dem Shop verfügen über 2-Kanal-Encoder. Diese liefern 5 Impulse per Motorumdrehung. Multipliziert man diese mit dem Übersetzungsverhältnis des Getriebes von 1:212, erhält man 1060 Encoderimpulse pro voller Radumdrehung.&lt;br /&gt;
&lt;br /&gt;
Pinbelegung und Verdrahtung der Encoder-Anschlüsse:&lt;br /&gt;
&lt;br /&gt;
 grün  ---- GND&lt;br /&gt;
 braun  ---- VCC&lt;br /&gt;
 blau   ---- Odometry1 (Kanal 1)&lt;br /&gt;
 lila ---- Odometry2 (Kanal 2)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
WICHTIG: Auf den PCB V0.5/1.2 fehlen die Pull-up-Widerstände! Du mußt sie selbst ergänzen:&lt;br /&gt;
&lt;br /&gt;
 odometry1 --- 4.7k --- 5v&lt;br /&gt;
 odometry2 --- 4.7k --- 5v&lt;br /&gt;
&lt;br /&gt;
= Signalform der Odometrie-Encoder =&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: ardumower_odometry_encoder.jpg&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 Vorwärts: Pin 1 zeigt Übergang LOW-&amp;gt;HIGH und Pin 2 = HIGH&lt;br /&gt;
 Rückwärts: Pin 1 zeigt Übergang LOW-&amp;gt;HIGH und Pin 2 = LOW&lt;br /&gt;
&lt;br /&gt;
= Do-It-Yourself encoders =&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: l50_odometry_sensor.jpg | Ambrogio L50: An encoder wheel of a computer mouse is glued to a slice. The screw of the wheel shaft is unscrewed, and the slice is added. Embedded in two Plexiglas pieces is a photo diode and photo transistor of a light barrier (e.g. LTH 301)&lt;br /&gt;
File: mower_photo_interrupter_right.JPG | Tianchen TC-G158 (right): A light barrier (e.g. LTH 301) is interrupted by a gear-weheel of the motor shaft. ).&lt;br /&gt;
File: Odometry_circuit.jpg | LTH301 circuit&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Circuit ==&lt;br /&gt;
&lt;br /&gt;
 VCC           pinArduino&lt;br /&gt;
 +--13 KOhm----+-------Collector  Emitter---GND&lt;br /&gt;
 +--380 Ohm------------Anode      Kathode---GND&lt;br /&gt;
&lt;br /&gt;
== Differential drive ==&lt;br /&gt;
By adding (integrating) Odometry speed, we can calculate distance and heading. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt; &lt;br /&gt;
File: differential_drive.png | Differential drive&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Distance per wheel:&lt;br /&gt;
 left_cm  = ticksLeft  / odometryTicksPerCm&lt;br /&gt;
 right_cm = ticksRight / odometryTicksPerCm&lt;br /&gt;
 &lt;br /&gt;
Heading:&lt;br /&gt;
 wheel_theta = (left_cm - right_cm) / odometryWheelBaseCm&lt;br /&gt;
 odometryTheta += wheel_theta&lt;br /&gt;
&lt;br /&gt;
Overall distance:&lt;br /&gt;
 avg_cm  = (left_cm + right_cm) / 2.0&lt;br /&gt;
 odometryX += avg_cm * sin(odometryTheta)&lt;br /&gt;
 odometryY += avg_cm * cos(odometryTheta)&lt;br /&gt;
&lt;br /&gt;
== Ground measurement error ==&lt;br /&gt;
By adding (integrating) Odometry speed, we can calculate distance and heading. However, as we are adding a small error each time (due to not exact physical ground measurement), distance and angle errors are increasing. This can be solved by [http://wiki.ardumower.de/index.php?title=Sensor_fusion sensor fusion].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: odometry_plot.jpg | Odometry error&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Motor controller (PID) =&lt;br /&gt;
The speed of the motors is controlled by a software PID controller. You can monitor the quality of the motor speed control via pfodApp (Plot-&amp;gt;Motor control):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
  File: Odometry_motor_pid_controller.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Video =&lt;br /&gt;
No video yet  (odometry is currently under development)&lt;/div&gt;</summary>
		<author><name>Pemiso</name></author>	</entry>

	<entry>
		<id>https://wiki.ardumower.de/index.php?title=Wegmessung_(Odometrie)&amp;diff=2494</id>
		<title>Wegmessung (Odometrie)</title>
		<link rel="alternate" type="text/html" href="https://wiki.ardumower.de/index.php?title=Wegmessung_(Odometrie)&amp;diff=2494"/>
				<updated>2015-07-14T23:14:21Z</updated>
		
		<summary type="html">&lt;p&gt;Pemiso: /* Encoder Pinbelegung der Ardumower Motoren aus dem Shop) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Zusammenfassung =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: odometry.png &lt;br /&gt;
File: ardumower_odometry_sensor.png&lt;br /&gt;
File: ardumower_motor.jpg&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mittels Odometrie können sowohl Geschwindigkeit als auch kurzfristige Position des ArduMower ermittelt werden. Dies basiert auf der Zählung der Umdrehungen des linken und rechten Radantriebsmotors (Motor-Encoder erforderlich zur Nutzung der aktuellen Ardumower-Software).&lt;br /&gt;
&lt;br /&gt;
Momentan wird die Odometrie folgendermaßen genutzt:&lt;br /&gt;
* Gewährleistung der gleichen Drehzahl bei rechtem und linken Antriebsrad des Ardumower beim Vorwärtsfahren.&lt;br /&gt;
&lt;br /&gt;
= Pinbelegung der Ardumower Motor-Encoder =&lt;br /&gt;
&lt;br /&gt;
Die Motoren aus dem Shop verfügen über 2-Kanal-Encoder. Diese liefern 5 Impulse per Motorumdrehung. Multipliziert man diese mit dem Übersetzungsverhältnis des Getriebes von 1:212, erhält man 1060 Encoderimpulse pro voller Radumdrehung.&lt;br /&gt;
&lt;br /&gt;
Pinbelegung und Verdrahtung der Encoder-Anschlüsse:&lt;br /&gt;
&lt;br /&gt;
 grün  ---- GND&lt;br /&gt;
 braun  ---- VCC&lt;br /&gt;
 blau   ---- Odometry1 (Kanal 1)&lt;br /&gt;
 lila ---- Odometry2 (Kanal 2)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
WICHTIG: Auf den PCB V0.5/1.2 fehlen die Pull-up-Widerstände! Du mußt sie selbst ergänzen:&lt;br /&gt;
&lt;br /&gt;
 odometry1 --- 4.7k --- 5v&lt;br /&gt;
 odometry2 --- 4.7k --- 5v&lt;br /&gt;
&lt;br /&gt;
= Signal of odometry encoders =&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: ardumower_odometry_encoder.jpg&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 Forward: pin1 makes LOW-&amp;gt;HIGH transition and pin2 = HIGH&lt;br /&gt;
 Reverse: pin1 makes LOW-&amp;gt;HIGH transition and pin2 = LOW&lt;br /&gt;
&lt;br /&gt;
= Do-It-Yourself encoders =&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: l50_odometry_sensor.jpg | Ambrogio L50: An encoder wheel of a computer mouse is glued to a slice. The screw of the wheel shaft is unscrewed, and the slice is added. Embedded in two Plexiglas pieces is a photo diode and photo transistor of a light barrier (e.g. LTH 301)&lt;br /&gt;
File: mower_photo_interrupter_right.JPG | Tianchen TC-G158 (right): A light barrier (e.g. LTH 301) is interrupted by a gear-weheel of the motor shaft. ).&lt;br /&gt;
File: Odometry_circuit.jpg | LTH301 circuit&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Circuit ==&lt;br /&gt;
&lt;br /&gt;
 VCC           pinArduino&lt;br /&gt;
 +--13 KOhm----+-------Collector  Emitter---GND&lt;br /&gt;
 +--380 Ohm------------Anode      Kathode---GND&lt;br /&gt;
&lt;br /&gt;
== Differential drive ==&lt;br /&gt;
By adding (integrating) Odometry speed, we can calculate distance and heading. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt; &lt;br /&gt;
File: differential_drive.png | Differential drive&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Distance per wheel:&lt;br /&gt;
 left_cm  = ticksLeft  / odometryTicksPerCm&lt;br /&gt;
 right_cm = ticksRight / odometryTicksPerCm&lt;br /&gt;
 &lt;br /&gt;
Heading:&lt;br /&gt;
 wheel_theta = (left_cm - right_cm) / odometryWheelBaseCm&lt;br /&gt;
 odometryTheta += wheel_theta&lt;br /&gt;
&lt;br /&gt;
Overall distance:&lt;br /&gt;
 avg_cm  = (left_cm + right_cm) / 2.0&lt;br /&gt;
 odometryX += avg_cm * sin(odometryTheta)&lt;br /&gt;
 odometryY += avg_cm * cos(odometryTheta)&lt;br /&gt;
&lt;br /&gt;
== Ground measurement error ==&lt;br /&gt;
By adding (integrating) Odometry speed, we can calculate distance and heading. However, as we are adding a small error each time (due to not exact physical ground measurement), distance and angle errors are increasing. This can be solved by [http://wiki.ardumower.de/index.php?title=Sensor_fusion sensor fusion].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: odometry_plot.jpg | Odometry error&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Motor controller (PID) =&lt;br /&gt;
The speed of the motors is controlled by a software PID controller. You can monitor the quality of the motor speed control via pfodApp (Plot-&amp;gt;Motor control):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
  File: Odometry_motor_pid_controller.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Video =&lt;br /&gt;
No video yet  (odometry is currently under development)&lt;/div&gt;</summary>
		<author><name>Pemiso</name></author>	</entry>

	<entry>
		<id>https://wiki.ardumower.de/index.php?title=Wegmessung_(Odometrie)&amp;diff=2493</id>
		<title>Wegmessung (Odometrie)</title>
		<link rel="alternate" type="text/html" href="https://wiki.ardumower.de/index.php?title=Wegmessung_(Odometrie)&amp;diff=2493"/>
				<updated>2015-07-14T23:07:10Z</updated>
		
		<summary type="html">&lt;p&gt;Pemiso: /* Zusammenfassung */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Zusammenfassung =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: odometry.png &lt;br /&gt;
File: ardumower_odometry_sensor.png&lt;br /&gt;
File: ardumower_motor.jpg&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mittels Odometrie können sowohl Geschwindigkeit als auch kurzfristige Position des ArduMower ermittelt werden. Dies basiert auf der Zählung der Umdrehungen des linken und rechten Radantriebsmotors (Motor-Encoder erforderlich zur Nutzung der aktuellen Ardumower-Software).&lt;br /&gt;
&lt;br /&gt;
Momentan wird die Odometrie folgendermaßen genutzt:&lt;br /&gt;
* Gewährleistung der gleichen Drehzahl bei rechtem und linken Antriebsrad des Ardumower beim Vorwärtsfahren.&lt;br /&gt;
&lt;br /&gt;
= Encoder Pinbelegung der Ardumower Motoren aus dem Shop) =&lt;br /&gt;
&lt;br /&gt;
The Ardumower has a 2-channel encoder with 5 pulses at one cycle of motor multiplied by gear ratio 1:212, resulting in 1060 encoder ticks per one full tire resolution.&lt;br /&gt;
&lt;br /&gt;
Wiring/pinout of motor encoder connector:&lt;br /&gt;
&lt;br /&gt;
 green  ---- GND&lt;br /&gt;
 brown  ---- VCC&lt;br /&gt;
 blue   ---- odometry1&lt;br /&gt;
 purple ---- odometry2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
IMPORTANT: PCB v0.5/1.2 are missing pull-ups! You need to add them yourself:&lt;br /&gt;
&lt;br /&gt;
 odometry1 --- 4.7k --- 5v&lt;br /&gt;
 odometry2 --- 4.7k --- 5v&lt;br /&gt;
&lt;br /&gt;
= Signal of odometry encoders =&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: ardumower_odometry_encoder.jpg&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 Forward: pin1 makes LOW-&amp;gt;HIGH transition and pin2 = HIGH&lt;br /&gt;
 Reverse: pin1 makes LOW-&amp;gt;HIGH transition and pin2 = LOW&lt;br /&gt;
&lt;br /&gt;
= Do-It-Yourself encoders =&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: l50_odometry_sensor.jpg | Ambrogio L50: An encoder wheel of a computer mouse is glued to a slice. The screw of the wheel shaft is unscrewed, and the slice is added. Embedded in two Plexiglas pieces is a photo diode and photo transistor of a light barrier (e.g. LTH 301)&lt;br /&gt;
File: mower_photo_interrupter_right.JPG | Tianchen TC-G158 (right): A light barrier (e.g. LTH 301) is interrupted by a gear-weheel of the motor shaft. ).&lt;br /&gt;
File: Odometry_circuit.jpg | LTH301 circuit&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Circuit ==&lt;br /&gt;
&lt;br /&gt;
 VCC           pinArduino&lt;br /&gt;
 +--13 KOhm----+-------Collector  Emitter---GND&lt;br /&gt;
 +--380 Ohm------------Anode      Kathode---GND&lt;br /&gt;
&lt;br /&gt;
== Differential drive ==&lt;br /&gt;
By adding (integrating) Odometry speed, we can calculate distance and heading. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt; &lt;br /&gt;
File: differential_drive.png | Differential drive&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Distance per wheel:&lt;br /&gt;
 left_cm  = ticksLeft  / odometryTicksPerCm&lt;br /&gt;
 right_cm = ticksRight / odometryTicksPerCm&lt;br /&gt;
 &lt;br /&gt;
Heading:&lt;br /&gt;
 wheel_theta = (left_cm - right_cm) / odometryWheelBaseCm&lt;br /&gt;
 odometryTheta += wheel_theta&lt;br /&gt;
&lt;br /&gt;
Overall distance:&lt;br /&gt;
 avg_cm  = (left_cm + right_cm) / 2.0&lt;br /&gt;
 odometryX += avg_cm * sin(odometryTheta)&lt;br /&gt;
 odometryY += avg_cm * cos(odometryTheta)&lt;br /&gt;
&lt;br /&gt;
== Ground measurement error ==&lt;br /&gt;
By adding (integrating) Odometry speed, we can calculate distance and heading. However, as we are adding a small error each time (due to not exact physical ground measurement), distance and angle errors are increasing. This can be solved by [http://wiki.ardumower.de/index.php?title=Sensor_fusion sensor fusion].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: odometry_plot.jpg | Odometry error&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Motor controller (PID) =&lt;br /&gt;
The speed of the motors is controlled by a software PID controller. You can monitor the quality of the motor speed control via pfodApp (Plot-&amp;gt;Motor control):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
  File: Odometry_motor_pid_controller.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Video =&lt;br /&gt;
No video yet  (odometry is currently under development)&lt;/div&gt;</summary>
		<author><name>Pemiso</name></author>	</entry>

	<entry>
		<id>https://wiki.ardumower.de/index.php?title=Wegmessung_(Odometrie)&amp;diff=2492</id>
		<title>Wegmessung (Odometrie)</title>
		<link rel="alternate" type="text/html" href="https://wiki.ardumower.de/index.php?title=Wegmessung_(Odometrie)&amp;diff=2492"/>
				<updated>2015-07-14T23:06:30Z</updated>
		
		<summary type="html">&lt;p&gt;Pemiso: Die Seite wurde neu angelegt: „= Zusammenfassung =  &amp;lt;gallery&amp;gt; File: odometry.png  File: ardumower_odometry_sensor.png File: ardumower_motor.jpg &amp;lt;/gallery&amp;gt;  Mittels Odometrie können sowohl G…“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Zusammenfassung =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: odometry.png &lt;br /&gt;
File: ardumower_odometry_sensor.png&lt;br /&gt;
File: ardumower_motor.jpg&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mittels Odometrie können sowohl Geschwindigkeit als auch die kurzfristige Position des ArduMower ermittelt werden. Dies basiert auf der Zählung der Umdrehungen des linken und rechten Radantriebsmotors (Motor-Encoder erforderlich zur Nutzung der aktuellen Ardumower-Software).&lt;br /&gt;
&lt;br /&gt;
Momentan wird die Odometrie folgendermaßen genutzt:&lt;br /&gt;
* Gewährleistung der gleichen Drehzahl bei rechtem und linken Antriebsrad des Ardumower beim Vorwärtsfahren.&lt;br /&gt;
&lt;br /&gt;
= Encoder Pinbelegung der Ardumower Motoren aus dem Shop) =&lt;br /&gt;
&lt;br /&gt;
The Ardumower has a 2-channel encoder with 5 pulses at one cycle of motor multiplied by gear ratio 1:212, resulting in 1060 encoder ticks per one full tire resolution.&lt;br /&gt;
&lt;br /&gt;
Wiring/pinout of motor encoder connector:&lt;br /&gt;
&lt;br /&gt;
 green  ---- GND&lt;br /&gt;
 brown  ---- VCC&lt;br /&gt;
 blue   ---- odometry1&lt;br /&gt;
 purple ---- odometry2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
IMPORTANT: PCB v0.5/1.2 are missing pull-ups! You need to add them yourself:&lt;br /&gt;
&lt;br /&gt;
 odometry1 --- 4.7k --- 5v&lt;br /&gt;
 odometry2 --- 4.7k --- 5v&lt;br /&gt;
&lt;br /&gt;
= Signal of odometry encoders =&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: ardumower_odometry_encoder.jpg&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 Forward: pin1 makes LOW-&amp;gt;HIGH transition and pin2 = HIGH&lt;br /&gt;
 Reverse: pin1 makes LOW-&amp;gt;HIGH transition and pin2 = LOW&lt;br /&gt;
&lt;br /&gt;
= Do-It-Yourself encoders =&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: l50_odometry_sensor.jpg | Ambrogio L50: An encoder wheel of a computer mouse is glued to a slice. The screw of the wheel shaft is unscrewed, and the slice is added. Embedded in two Plexiglas pieces is a photo diode and photo transistor of a light barrier (e.g. LTH 301)&lt;br /&gt;
File: mower_photo_interrupter_right.JPG | Tianchen TC-G158 (right): A light barrier (e.g. LTH 301) is interrupted by a gear-weheel of the motor shaft. ).&lt;br /&gt;
File: Odometry_circuit.jpg | LTH301 circuit&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Circuit ==&lt;br /&gt;
&lt;br /&gt;
 VCC           pinArduino&lt;br /&gt;
 +--13 KOhm----+-------Collector  Emitter---GND&lt;br /&gt;
 +--380 Ohm------------Anode      Kathode---GND&lt;br /&gt;
&lt;br /&gt;
== Differential drive ==&lt;br /&gt;
By adding (integrating) Odometry speed, we can calculate distance and heading. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt; &lt;br /&gt;
File: differential_drive.png | Differential drive&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Distance per wheel:&lt;br /&gt;
 left_cm  = ticksLeft  / odometryTicksPerCm&lt;br /&gt;
 right_cm = ticksRight / odometryTicksPerCm&lt;br /&gt;
 &lt;br /&gt;
Heading:&lt;br /&gt;
 wheel_theta = (left_cm - right_cm) / odometryWheelBaseCm&lt;br /&gt;
 odometryTheta += wheel_theta&lt;br /&gt;
&lt;br /&gt;
Overall distance:&lt;br /&gt;
 avg_cm  = (left_cm + right_cm) / 2.0&lt;br /&gt;
 odometryX += avg_cm * sin(odometryTheta)&lt;br /&gt;
 odometryY += avg_cm * cos(odometryTheta)&lt;br /&gt;
&lt;br /&gt;
== Ground measurement error ==&lt;br /&gt;
By adding (integrating) Odometry speed, we can calculate distance and heading. However, as we are adding a small error each time (due to not exact physical ground measurement), distance and angle errors are increasing. This can be solved by [http://wiki.ardumower.de/index.php?title=Sensor_fusion sensor fusion].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: odometry_plot.jpg | Odometry error&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Motor controller (PID) =&lt;br /&gt;
The speed of the motors is controlled by a software PID controller. You can monitor the quality of the motor speed control via pfodApp (Plot-&amp;gt;Motor control):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
  File: Odometry_motor_pid_controller.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Video =&lt;br /&gt;
No video yet  (odometry is currently under development)&lt;/div&gt;</summary>
		<author><name>Pemiso</name></author>	</entry>

	<entry>
		<id>https://wiki.ardumower.de/index.php?title=Fehlerbehebung&amp;diff=2491</id>
		<title>Fehlerbehebung</title>
		<link rel="alternate" type="text/html" href="https://wiki.ardumower.de/index.php?title=Fehlerbehebung&amp;diff=2491"/>
				<updated>2015-07-14T22:55:28Z</updated>
		
		<summary type="html">&lt;p&gt;Pemiso: /* Unerwartete Sensorauslösung */&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.&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 'IMU calibration' (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, 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;
                          * 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;
  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;
  ERR_ODOMETRY_RIGHT      Odometrie-Fehler rechter Motor &lt;br /&gt;
                          * Überprüfe das rechte Odometie-Kabel&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;
==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>Pemiso</name></author>	</entry>

	<entry>
		<id>https://wiki.ardumower.de/index.php?title=Perimeter-Schleife&amp;diff=2490</id>
		<title>Perimeter-Schleife</title>
		<link rel="alternate" type="text/html" href="https://wiki.ardumower.de/index.php?title=Perimeter-Schleife&amp;diff=2490"/>
				<updated>2015-07-14T22:24:05Z</updated>
		
		<summary type="html">&lt;p&gt;Pemiso: /* Zusammenfassung */&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 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 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;
=== 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 sit 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>Pemiso</name></author>	</entry>

	<entry>
		<id>https://wiki.ardumower.de/index.php?title=Perimeter-Schleife&amp;diff=2489</id>
		<title>Perimeter-Schleife</title>
		<link rel="alternate" type="text/html" href="https://wiki.ardumower.de/index.php?title=Perimeter-Schleife&amp;diff=2489"/>
				<updated>2015-07-14T22:00:12Z</updated>
		
		<summary type="html">&lt;p&gt;Pemiso: /* 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: im Garten wird ein Schleifendraht verlegt, durch den ein Signal gesendet und vom Ardumower ausgewertet wird. 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 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 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;
=== 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 sit 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>Pemiso</name></author>	</entry>

	<entry>
		<id>https://wiki.ardumower.de/index.php?title=Perimeter-Schleife&amp;diff=2488</id>
		<title>Perimeter-Schleife</title>
		<link rel="alternate" type="text/html" href="https://wiki.ardumower.de/index.php?title=Perimeter-Schleife&amp;diff=2488"/>
				<updated>2015-07-14T21:58:03Z</updated>
		
		<summary type="html">&lt;p&gt;Pemiso: /* 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: im Garten wird ein Schleifendraht verlegt, durch den ein Signal gesendet und vom Ardumower ausgewertet wird. 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 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 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;
=== 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 amplifier&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;
'''Note''': 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 sit 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>Pemiso</name></author>	</entry>

	<entry>
		<id>https://wiki.ardumower.de/index.php?title=Perimeter-Schleife&amp;diff=2487</id>
		<title>Perimeter-Schleife</title>
		<link rel="alternate" type="text/html" href="https://wiki.ardumower.de/index.php?title=Perimeter-Schleife&amp;diff=2487"/>
				<updated>2015-07-14T21:54:02Z</updated>
		
		<summary type="html">&lt;p&gt;Pemiso: /* Signal und Rauschmessungen */&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: im Garten wird ein Schleifendraht verlegt, durch den ein Signal gesendet und vom Ardumower ausgewertet wird. 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 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 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;
=== 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 amplifier&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: When using this amplifier, capacitor C3 should be bypassed (will give a VCC/2 offset required for Arduino) and the coil will be connected to &amp;quot;IN&amp;quot; and &amp;quot;GND&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
'''NOTE''': 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 sit 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>Pemiso</name></author>	</entry>

	<entry>
		<id>https://wiki.ardumower.de/index.php?title=Perimeter-Schleife&amp;diff=2486</id>
		<title>Perimeter-Schleife</title>
		<link rel="alternate" type="text/html" href="https://wiki.ardumower.de/index.php?title=Perimeter-Schleife&amp;diff=2486"/>
				<updated>2015-07-14T21:44:46Z</updated>
		
		<summary type="html">&lt;p&gt;Pemiso: /* 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: im Garten wird ein Schleifendraht verlegt, durch den ein Signal gesendet und vom Ardumower ausgewertet wird. 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 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 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;
=== 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 (Spulenhintergrundrauschen 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 amplifier&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: When using this amplifier, capacitor C3 should be bypassed (will give a VCC/2 offset required for Arduino) and the coil will be connected to &amp;quot;IN&amp;quot; and &amp;quot;GND&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
'''NOTE''': 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 sit 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>Pemiso</name></author>	</entry>

	<entry>
		<id>https://wiki.ardumower.de/index.php?title=Perimeter-Schleife&amp;diff=2485</id>
		<title>Perimeter-Schleife</title>
		<link rel="alternate" type="text/html" href="https://wiki.ardumower.de/index.php?title=Perimeter-Schleife&amp;diff=2485"/>
				<updated>2015-07-14T21:42:46Z</updated>
		
		<summary type="html">&lt;p&gt;Pemiso: /* 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: im Garten wird ein Schleifendraht verlegt, durch den ein Signal gesendet und vom Ardumower ausgewertet wird. 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 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 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;
=== 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 Kondensator 4.7nF 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 verkompliziert, wird das nicht-differentielle Signal nicht empfohlen!&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 (Spulenhintergrundrauschen 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 amplifier&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: When using this amplifier, capacitor C3 should be bypassed (will give a VCC/2 offset required for Arduino) and the coil will be connected to &amp;quot;IN&amp;quot; and &amp;quot;GND&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
'''NOTE''': 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 sit 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>Pemiso</name></author>	</entry>

	<entry>
		<id>https://wiki.ardumower.de/index.php?title=Perimeter-Schleife&amp;diff=2454</id>
		<title>Perimeter-Schleife</title>
		<link rel="alternate" type="text/html" href="https://wiki.ardumower.de/index.php?title=Perimeter-Schleife&amp;diff=2454"/>
				<updated>2015-07-13T21:57:12Z</updated>
		
		<summary type="html">&lt;p&gt;Pemiso: /* Funktionstest */&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: im Garten wird ein Schleifendraht verlegt, durch den ein Signal gesendet und vom Ardumower ausgewertet wird. 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 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 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;
=== 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 Kondensator 4.7nF 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 verkompliziert, wird das nicht-differentielle Signal nicht empfohlen!&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 (Spulenhintergrundrauschen 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;
The receiver uses 2 coils mounted left and right in the robot. The signal strenght of left and right coils is evaluated to be able to compare them.&lt;br /&gt;
&lt;br /&gt;
Principle:&lt;br /&gt;
# Amplification of alternating signal using OPAMP&lt;br /&gt;
# Optional: Bandpass-filtering to filter-out noise caused by motors etc.&lt;br /&gt;
# Evaluation of signal strength of left and right coil&lt;br /&gt;
&lt;br /&gt;
Advantage of this version: analog controlling works great.&lt;br /&gt;
Disadvantage: You cannot detect, where you are (inside/outside) if your missed the perimter crossing. Also, you cannot detect if you drive clockwise or anti-clockwise on the perimeter wire.&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;
A coil receives the sender's signal. A resonator circuit (LC) amplifies the received signal at resonation frequency (7.8 kHz). Then the signal is amplified using an LM386 (here: Arduino sound sensor using coil instead of microphone). A bandpass-filter  (digital filter, FFT) on the Arduino filters the desired frequency (7.8 Khz) and outputs a PWM signal (pulse width is proportional to signal strength). A lowpass-filter converts it to a DC voltage.&lt;br /&gt;
Note: Wiring between Nano and Mega has been simplified - see schematics for exact wiring.&lt;br /&gt;
&lt;br /&gt;
We have tested the following combinations of amplifier und coils:&lt;br /&gt;
&lt;br /&gt;
'Arduino sound sensor'&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Soundsensor.jpg| Amplifying signal using LM386 - Arduino Sound Sensor using coil instead microphone&lt;br /&gt;
File: YwRobot_Sensor.jpg |Arduino Sound Sensor using LM386&lt;br /&gt;
File: YwRobot_circuit.png |Arduino Sound Sensor module schematics&lt;br /&gt;
File: Coil_85mh.jpg|85 mH coils&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
LM386 amplifier&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Lm386_amplifier.jpg| LM386 amplifier (200x amplification)&lt;br /&gt;
File: Lm386_modified.jpg| LM386 amplifier modified&lt;br /&gt;
File: Ardumower_lm386_circuit.png | LM386 module schematics&lt;br /&gt;
File: Coil_small.jpg| 104 mH coil&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Important: When using this amplifier, capacitor C3 should be bypassed (will give a VCC/2 offset required for Arduino) and the coil will be connected to &amp;quot;IN&amp;quot; and &amp;quot;GND&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
'''NOTE''': It's recommended to directly mount the coil on the amplifier module. This ensures the 'small signal' of the coil is not distorted by other components (motors etc.)&lt;br /&gt;
&lt;br /&gt;
=== Funktionstest ===&lt;br /&gt;
# Make sure that the sender works correctly (see further above).&lt;br /&gt;
# Increase the Arduino Sound Sensor potentiometer to maximum (rotate counter-clock-wise).&lt;br /&gt;
# After uploading the code, move one coil towards the perimeter wire. The Arduino LED should start to blink. Now, hold both coils at same distance over the perimeter wire. The Arduino LED should be always ON now.&lt;br /&gt;
# If that doesn't work, open the serial console (19200 baud), and verify the signal values.&lt;br /&gt;
&lt;br /&gt;
=== Spulenauswahl ===&lt;br /&gt;
Induction math, only approximation:&lt;br /&gt;
&lt;br /&gt;
 L = 1nH x n² x ((D² / mm² ) / (l / mm))&lt;br /&gt;
 l = coil length&lt;br /&gt;
 D = coil diameter&lt;br /&gt;
&lt;br /&gt;
Example: An inductance of 85 mH, and diamter of 10 mm, and length of 40 mm require about  5830 windings.&lt;br /&gt;
&lt;br /&gt;
This inductance of 85 mH and a capacity of 4.7 nF results in a resonation frequency of 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ä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: 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 sit 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>Pemiso</name></author>	</entry>

	<entry>
		<id>https://wiki.ardumower.de/index.php?title=Perimeter-Schleife&amp;diff=2453</id>
		<title>Perimeter-Schleife</title>
		<link rel="alternate" type="text/html" href="https://wiki.ardumower.de/index.php?title=Perimeter-Schleife&amp;diff=2453"/>
				<updated>2015-07-13T21:56:53Z</updated>
		
		<summary type="html">&lt;p&gt;Pemiso: /* Funktionstest */&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: im Garten wird ein Schleifendraht verlegt, durch den ein Signal gesendet und vom Ardumower ausgewertet wird. 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 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 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;
=== 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 Kondensator 4.7nF 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 verkompliziert, wird das nicht-differentielle Signal nicht empfohlen!&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 (Spulenhintergrundrauschen 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 un d 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;
The receiver uses 2 coils mounted left and right in the robot. The signal strenght of left and right coils is evaluated to be able to compare them.&lt;br /&gt;
&lt;br /&gt;
Principle:&lt;br /&gt;
# Amplification of alternating signal using OPAMP&lt;br /&gt;
# Optional: Bandpass-filtering to filter-out noise caused by motors etc.&lt;br /&gt;
# Evaluation of signal strength of left and right coil&lt;br /&gt;
&lt;br /&gt;
Advantage of this version: analog controlling works great.&lt;br /&gt;
Disadvantage: You cannot detect, where you are (inside/outside) if your missed the perimter crossing. Also, you cannot detect if you drive clockwise or anti-clockwise on the perimeter wire.&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;
A coil receives the sender's signal. A resonator circuit (LC) amplifies the received signal at resonation frequency (7.8 kHz). Then the signal is amplified using an LM386 (here: Arduino sound sensor using coil instead of microphone). A bandpass-filter  (digital filter, FFT) on the Arduino filters the desired frequency (7.8 Khz) and outputs a PWM signal (pulse width is proportional to signal strength). A lowpass-filter converts it to a DC voltage.&lt;br /&gt;
Note: Wiring between Nano and Mega has been simplified - see schematics for exact wiring.&lt;br /&gt;
&lt;br /&gt;
We have tested the following combinations of amplifier und coils:&lt;br /&gt;
&lt;br /&gt;
'Arduino sound sensor'&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Soundsensor.jpg| Amplifying signal using LM386 - Arduino Sound Sensor using coil instead microphone&lt;br /&gt;
File: YwRobot_Sensor.jpg |Arduino Sound Sensor using LM386&lt;br /&gt;
File: YwRobot_circuit.png |Arduino Sound Sensor module schematics&lt;br /&gt;
File: Coil_85mh.jpg|85 mH coils&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
LM386 amplifier&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Lm386_amplifier.jpg| LM386 amplifier (200x amplification)&lt;br /&gt;
File: Lm386_modified.jpg| LM386 amplifier modified&lt;br /&gt;
File: Ardumower_lm386_circuit.png | LM386 module schematics&lt;br /&gt;
File: Coil_small.jpg| 104 mH coil&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Important: When using this amplifier, capacitor C3 should be bypassed (will give a VCC/2 offset required for Arduino) and the coil will be connected to &amp;quot;IN&amp;quot; and &amp;quot;GND&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
'''NOTE''': It's recommended to directly mount the coil on the amplifier module. This ensures the 'small signal' of the coil is not distorted by other components (motors etc.)&lt;br /&gt;
&lt;br /&gt;
=== Funktionstest ===&lt;br /&gt;
# Make sure that the sender works correctly (see further above).&lt;br /&gt;
# Increase the Arduino Sound Sensor potentiometer to maximum (rotate counter-clock-wise).&lt;br /&gt;
# After uploading the code, move one coil towards the perimeter wire. The Arduino LED should start to blink. Now, hold both coils at same distance over the perimeter wire. The Arduino LED should be always ON now.&lt;br /&gt;
# If that doesn't work, open the serial console (19200 baud), and verify the signal values.&lt;br /&gt;
&lt;br /&gt;
=== Spulenauswahl ===&lt;br /&gt;
Induction math, only approximation:&lt;br /&gt;
&lt;br /&gt;
 L = 1nH x n² x ((D² / mm² ) / (l / mm))&lt;br /&gt;
 l = coil length&lt;br /&gt;
 D = coil diameter&lt;br /&gt;
&lt;br /&gt;
Example: An inductance of 85 mH, and diamter of 10 mm, and length of 40 mm require about  5830 windings.&lt;br /&gt;
&lt;br /&gt;
This inductance of 85 mH and a capacity of 4.7 nF results in a resonation frequency of 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ä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: 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 sit 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>Pemiso</name></author>	</entry>

	<entry>
		<id>https://wiki.ardumower.de/index.php?title=Perimeter-Schleife&amp;diff=2452</id>
		<title>Perimeter-Schleife</title>
		<link rel="alternate" type="text/html" href="https://wiki.ardumower.de/index.php?title=Perimeter-Schleife&amp;diff=2452"/>
				<updated>2015-07-13T21:56:30Z</updated>
		
		<summary type="html">&lt;p&gt;Pemiso: /* Funktionstest */&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: im Garten wird ein Schleifendraht verlegt, durch den ein Signal gesendet und vom Ardumower ausgewertet wird. 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 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 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;
=== 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 Kondensator 4.7nF 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 verkompliziert, wird das nicht-differentielle Signal nicht empfohlen!&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 (Spulenhintergrundrauschen 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 un d Anschliessen der Begrenzungsschleife sollte die Arduino LED an sein. Nun entferne den Schleifendraht und die LED sollte ausgehen.&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;
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;
The receiver uses 2 coils mounted left and right in the robot. The signal strenght of left and right coils is evaluated to be able to compare them.&lt;br /&gt;
&lt;br /&gt;
Principle:&lt;br /&gt;
# Amplification of alternating signal using OPAMP&lt;br /&gt;
# Optional: Bandpass-filtering to filter-out noise caused by motors etc.&lt;br /&gt;
# Evaluation of signal strength of left and right coil&lt;br /&gt;
&lt;br /&gt;
Advantage of this version: analog controlling works great.&lt;br /&gt;
Disadvantage: You cannot detect, where you are (inside/outside) if your missed the perimter crossing. Also, you cannot detect if you drive clockwise or anti-clockwise on the perimeter wire.&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;
A coil receives the sender's signal. A resonator circuit (LC) amplifies the received signal at resonation frequency (7.8 kHz). Then the signal is amplified using an LM386 (here: Arduino sound sensor using coil instead of microphone). A bandpass-filter  (digital filter, FFT) on the Arduino filters the desired frequency (7.8 Khz) and outputs a PWM signal (pulse width is proportional to signal strength). A lowpass-filter converts it to a DC voltage.&lt;br /&gt;
Note: Wiring between Nano and Mega has been simplified - see schematics for exact wiring.&lt;br /&gt;
&lt;br /&gt;
We have tested the following combinations of amplifier und coils:&lt;br /&gt;
&lt;br /&gt;
'Arduino sound sensor'&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Soundsensor.jpg| Amplifying signal using LM386 - Arduino Sound Sensor using coil instead microphone&lt;br /&gt;
File: YwRobot_Sensor.jpg |Arduino Sound Sensor using LM386&lt;br /&gt;
File: YwRobot_circuit.png |Arduino Sound Sensor module schematics&lt;br /&gt;
File: Coil_85mh.jpg|85 mH coils&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
LM386 amplifier&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Lm386_amplifier.jpg| LM386 amplifier (200x amplification)&lt;br /&gt;
File: Lm386_modified.jpg| LM386 amplifier modified&lt;br /&gt;
File: Ardumower_lm386_circuit.png | LM386 module schematics&lt;br /&gt;
File: Coil_small.jpg| 104 mH coil&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Important: When using this amplifier, capacitor C3 should be bypassed (will give a VCC/2 offset required for Arduino) and the coil will be connected to &amp;quot;IN&amp;quot; and &amp;quot;GND&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
'''NOTE''': It's recommended to directly mount the coil on the amplifier module. This ensures the 'small signal' of the coil is not distorted by other components (motors etc.)&lt;br /&gt;
&lt;br /&gt;
=== Funktionstest ===&lt;br /&gt;
# Make sure that the sender works correctly (see further above).&lt;br /&gt;
# Increase the Arduino Sound Sensor potentiometer to maximum (rotate counter-clock-wise).&lt;br /&gt;
# After uploading the code, move one coil towards the perimeter wire. The Arduino LED should start to blink. Now, hold both coils at same distance over the perimeter wire. The Arduino LED should be always ON now.&lt;br /&gt;
# If that doesn't work, open the serial console (19200 baud), and verify the signal values.&lt;br /&gt;
&lt;br /&gt;
=== Spulenauswahl ===&lt;br /&gt;
Induction math, only approximation:&lt;br /&gt;
&lt;br /&gt;
 L = 1nH x n² x ((D² / mm² ) / (l / mm))&lt;br /&gt;
 l = coil length&lt;br /&gt;
 D = coil diameter&lt;br /&gt;
&lt;br /&gt;
Example: An inductance of 85 mH, and diamter of 10 mm, and length of 40 mm require about  5830 windings.&lt;br /&gt;
&lt;br /&gt;
This inductance of 85 mH and a capacity of 4.7 nF results in a resonation frequency of 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ä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: 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 sit 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>Pemiso</name></author>	</entry>

	<entry>
		<id>https://wiki.ardumower.de/index.php?title=Perimeter-Schleife&amp;diff=2451</id>
		<title>Perimeter-Schleife</title>
		<link rel="alternate" type="text/html" href="https://wiki.ardumower.de/index.php?title=Perimeter-Schleife&amp;diff=2451"/>
				<updated>2015-07-13T21:38:41Z</updated>
		
		<summary type="html">&lt;p&gt;Pemiso: /* Filter */&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: im Garten wird ein Schleifendraht verlegt, durch den ein Signal gesendet und vom Ardumower ausgewertet wird. 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 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 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;
=== 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 Kondensator 4.7nF 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 verkompliziert, wird das nicht-differentielle Signal nicht empfohlen!&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 (Spulenhintergrundrauschen 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. After uploading the code and connecting the perimeter wire, the Arduino LED should be ON. Now remove the perimeter wire -  the Arduino LED should go OFF.&lt;br /&gt;
2. If that doesn't work: Using a voltmeter, measure once at Arduino pin D9 and once at motor driver output pin (OUT_1) against ground - both should have a DC voltage of 2.5 Volt.&lt;br /&gt;
3. If you have an oscilloscope, replace the perimeter wire by the oscilloscope. The measured signal look like below:&lt;br /&gt;
&lt;br /&gt;
The output signal shows a higher amplitude (high spikes) as the input signal:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Perimetersignal.jpg|signal on the sender output &lt;br /&gt;
File: Ardumower_perimeter_sender_schematics.png|resonator circuit basic principle&lt;br /&gt;
File: Arduino_perimeter_sender_photo.jpg&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For a simple receiver test, you can simply connect the receiver coil to an oscilloscope. The measured oscilloscope signal should look like below:&lt;br /&gt;
&lt;br /&gt;
This signal can be detected easily with a coil:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Coilsignal.jpg|coil signal at receiver coil&lt;br /&gt;
File: Fft.jpg|signal in frequency spectrum, superposed by motor noise&lt;br /&gt;
File: Ardumower_perimeter_spectrum_plot.jpg| frequency spectrum via pfodApp&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Empfänger ==&lt;br /&gt;
The receiver uses 2 coils mounted left and right in the robot. The signal strenght of left and right coils is evaluated to be able to compare them.&lt;br /&gt;
&lt;br /&gt;
Principle:&lt;br /&gt;
# Amplification of alternating signal using OPAMP&lt;br /&gt;
# Optional: Bandpass-filtering to filter-out noise caused by motors etc.&lt;br /&gt;
# Evaluation of signal strength of left and right coil&lt;br /&gt;
&lt;br /&gt;
Advantage of this version: analog controlling works great.&lt;br /&gt;
Disadvantage: You cannot detect, where you are (inside/outside) if your missed the perimter crossing. Also, you cannot detect if you drive clockwise or anti-clockwise on the perimeter wire.&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;
A coil receives the sender's signal. A resonator circuit (LC) amplifies the received signal at resonation frequency (7.8 kHz). Then the signal is amplified using an LM386 (here: Arduino sound sensor using coil instead of microphone). A bandpass-filter  (digital filter, FFT) on the Arduino filters the desired frequency (7.8 Khz) and outputs a PWM signal (pulse width is proportional to signal strength). A lowpass-filter converts it to a DC voltage.&lt;br /&gt;
Note: Wiring between Nano and Mega has been simplified - see schematics for exact wiring.&lt;br /&gt;
&lt;br /&gt;
We have tested the following combinations of amplifier und coils:&lt;br /&gt;
&lt;br /&gt;
'Arduino sound sensor'&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Soundsensor.jpg| Amplifying signal using LM386 - Arduino Sound Sensor using coil instead microphone&lt;br /&gt;
File: YwRobot_Sensor.jpg |Arduino Sound Sensor using LM386&lt;br /&gt;
File: YwRobot_circuit.png |Arduino Sound Sensor module schematics&lt;br /&gt;
File: Coil_85mh.jpg|85 mH coils&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
LM386 amplifier&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Lm386_amplifier.jpg| LM386 amplifier (200x amplification)&lt;br /&gt;
File: Lm386_modified.jpg| LM386 amplifier modified&lt;br /&gt;
File: Ardumower_lm386_circuit.png | LM386 module schematics&lt;br /&gt;
File: Coil_small.jpg| 104 mH coil&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Important: When using this amplifier, capacitor C3 should be bypassed (will give a VCC/2 offset required for Arduino) and the coil will be connected to &amp;quot;IN&amp;quot; and &amp;quot;GND&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
'''NOTE''': It's recommended to directly mount the coil on the amplifier module. This ensures the 'small signal' of the coil is not distorted by other components (motors etc.)&lt;br /&gt;
&lt;br /&gt;
=== Funktionstest ===&lt;br /&gt;
# Make sure that the sender works correctly (see further above).&lt;br /&gt;
# Increase the Arduino Sound Sensor potentiometer to maximum (rotate counter-clock-wise).&lt;br /&gt;
# After uploading the code, move one coil towards the perimeter wire. The Arduino LED should start to blink. Now, hold both coils at same distance over the perimeter wire. The Arduino LED should be always ON now.&lt;br /&gt;
# If that doesn't work, open the serial console (19200 baud), and verify the signal values.&lt;br /&gt;
&lt;br /&gt;
=== Spulenauswahl ===&lt;br /&gt;
Induction math, only approximation:&lt;br /&gt;
&lt;br /&gt;
 L = 1nH x n² x ((D² / mm² ) / (l / mm))&lt;br /&gt;
 l = coil length&lt;br /&gt;
 D = coil diameter&lt;br /&gt;
&lt;br /&gt;
Example: An inductance of 85 mH, and diamter of 10 mm, and length of 40 mm require about  5830 windings.&lt;br /&gt;
&lt;br /&gt;
This inductance of 85 mH and a capacity of 4.7 nF results in a resonation frequency of 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ä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: 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 sit 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>Pemiso</name></author>	</entry>

	<entry>
		<id>https://wiki.ardumower.de/index.php?title=Deutsche_Version&amp;diff=2446</id>
		<title>Deutsche Version</title>
		<link rel="alternate" type="text/html" href="https://wiki.ardumower.de/index.php?title=Deutsche_Version&amp;diff=2446"/>
				<updated>2015-07-11T10:10:58Z</updated>
		
		<summary type="html">&lt;p&gt;Pemiso: Änderung 2445 von Pemiso (Diskussion) rückgängig gemacht.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000; font-size:200%;&amp;quot;&amp;gt;'''Diese Seiten sind noch im Aufbau'''&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Hauptseite|to english version]]&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;br /&gt;
{| border=0&lt;br /&gt;
 |&amp;lt;span style=&amp;quot;color:#cf7606; font-size:200%;&amp;quot;&amp;gt;'''Willkommen bei'''&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color:#005288; font-size:200%;&amp;quot;&amp;gt;'''Ardumower - dem Eigenbau-Mähroboter'''&amp;lt;/span&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:150%;&amp;quot;&amp;gt;Ardumower WIKI, die Wissensdatenbank der Ardumower Gemeinschaft &amp;lt;/span&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Image:H7c785a1.png |100px|left|Ardumower Logo]][[Image:1000x500-ausbildung.jpg|thumb|180px|Bild des Monats]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Yt-brand-standard-logo-95x40.png|thumb|180px|http://www.youtube.com/user/naneona/videos]]&lt;br /&gt;
&lt;br /&gt;
Du kennst vermutlich das Ardumower - Forum, die Selbstbau-Mähroboter-Gemeinde im Internet. Hier ist nun eine zusätzliche Wissensdatenbank, genannt WIKI. Du kannst hier Informationen, Grundlagen und Tipps zu Eigenbau-Mährobotern finden, die in verschiedene Themen untergliedert sind. Diese Seiten sollten sowohl ein Leitfaden für Einsteiger als auch ein Referenz-Handbuch sein (Der Aufbau entspricht dem bekannten Wikipedia). Wir verwenden dafür das gleiche System: MediaWiki.&amp;lt;p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In diesem WIKI kannst du die Seiten derzeit frei ändern - du kannst deine ersten Erfahrungen dazu auf einer Testseite [[test]] hier im WIKI machen. &lt;br /&gt;
&lt;br /&gt;
Hilf uns, dieses WIKI zu verbessern! Dazu einfach [http://wiki.ardumower.de/index.php?title=Spezial:Anmelden/signup registrieren] und heute mit deiner Bearbeitung beginnen ...&lt;br /&gt;
&lt;br /&gt;
=Anfang / Einführung=&lt;br /&gt;
[[Image:Ardumower_overview.png|thumb|400px|Überblick]]&lt;br /&gt;
Diese Einführung soll dir helfen, den Bau deines eigenen Selbstbau-Mähroboter zu beginnen:&lt;br /&gt;
*[[So fang ich an]] (Einleitung und Überblick über die einzelnen Schritte)&lt;br /&gt;
*[[Arduino erste Schritte]] (wenn du vorher noch nie mit Arduino gearbeitet hast: wie lade ich ein Programm auf den Arduino...)&lt;br /&gt;
&lt;br /&gt;
=Ardumower Themen=&lt;br /&gt;
Diese Seiten liefern dir ein Referenzbuch, das nach Mähroboter-Themen gegliedert ist:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;color:blue; background-color:#ffffcc;&amp;quot; cellpadding=&amp;quot;10&amp;quot;&lt;br /&gt;
!Chassis Montage&lt;br /&gt;
|[[Ardumower Chassis]] &lt;br /&gt;
|-&lt;br /&gt;
!Arduino Code, Schaltbilder, Leiterplatte(LP) usw.&lt;br /&gt;
|[[Arduino erste Schritte]]&lt;br /&gt;
|[[Ardumower LP|Ardumower LP&amp;amp;Code]]&lt;br /&gt;
|[[Arduino DUE]]&lt;br /&gt;
|[[Fehlerbehebung]]&lt;br /&gt;
|-&lt;br /&gt;
!Aktoren&lt;br /&gt;
|[[Motor-Treiber|Motortreiber - Motoren]]&lt;br /&gt;
|[[Relais]]&lt;br /&gt;
|-&lt;br /&gt;
!Sensoren&lt;br /&gt;
|[[Perimeter-Schleife|Begrenzungs - Schleife]]&lt;br /&gt;
|[[Ultraschall]]&lt;br /&gt;
|[[Hall-Sensoren]]&lt;br /&gt;
|[[Rasen-Sensoren]]&lt;br /&gt;
|[[Wegmessung (Odometrie)]]&lt;br /&gt;
|[[Inertialsensor - IMU]]&lt;br /&gt;
|[[Regensensor]]&lt;br /&gt;
|[[Absturzsensor]]&lt;br /&gt;
|-&lt;br /&gt;
!Energie&lt;br /&gt;
|[[Laden]]&lt;br /&gt;
|-&lt;br /&gt;
!Wireless&lt;br /&gt;
|[[Modell R/C]]&lt;br /&gt;
|[[Bluetooth und App|Bluetooth&amp;amp;App]]&lt;br /&gt;
|[[Global Positioning System-GPS]]&lt;br /&gt;
|-&lt;br /&gt;
!Andere Module&lt;br /&gt;
|[[Echtzeit-Uhr]]&lt;br /&gt;
|-&lt;br /&gt;
!Software Architektur, Algorithmen&lt;br /&gt;
|[http://www.grauonline.de/alexwww/ardumower/sim/mower.html Ardumower simulator]&lt;br /&gt;
|[[Ardumower Software-Design]]&lt;br /&gt;
|[[Sensor Fusion|Sensorfusion - SLAM]]&lt;br /&gt;
|[[PID Regelung]]&lt;br /&gt;
|[[Kalman-Filter|Kalman-Filter - (EKF)]]&lt;br /&gt;
|-&lt;br /&gt;
!Arduino Programmierung&lt;br /&gt;
|[[Arduino Crash Kurs|Arduino - Crashkurs]]&lt;br /&gt;
|[[Arduino Code-Techniken|Arduino - Code-Techniken]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Dein Mähroboter-Projekt=&lt;br /&gt;
Beschreibe dein eigenes Mähroboter-Projekt auf einer neuen WIKI-Seite:&lt;br /&gt;
* [[Ardumower Chassis für Hanglagen]]&lt;br /&gt;
* [[Ardumower MINI]]&lt;br /&gt;
* [[Tracked Mower]]&lt;br /&gt;
* ...&lt;br /&gt;
* ...&lt;br /&gt;
&lt;br /&gt;
=Deine Ardumower Erweiterung=&lt;br /&gt;
Beschreibe Deine eigene Erweiterung oder Verbesserung des Ardumowers (optisch, computertechnisch, Infrarot, Sound, Navigation, Funk, oder andere Zusatzbaugruppen ) auf einer neuen WIKI Seite:&lt;br /&gt;
* Erzeugung von Sound [[Sound Module]]&lt;br /&gt;
* [[Ardumower zukünftige LP]]&lt;br /&gt;
* ...&lt;br /&gt;
* ...&lt;br /&gt;
&lt;br /&gt;
=Wiki Hilfe=&lt;br /&gt;
* Wie bearbeiten/hinzufügen einer Seite: [[Wiki help]]&lt;br /&gt;
* Verwende diese Seite zum Ausprobieren : [[test]]&lt;br /&gt;
&lt;br /&gt;
=Weiterführende Links=&lt;br /&gt;
[http://www.ardumower.de/index.php/de Ardumower Home / Forum]&lt;br /&gt;
[https://www.marotronics.de/ Ardumower Shop]&lt;/div&gt;</summary>
		<author><name>Pemiso</name></author>	</entry>

	<entry>
		<id>https://wiki.ardumower.de/index.php?title=Deutsche_Version&amp;diff=2445</id>
		<title>Deutsche Version</title>
		<link rel="alternate" type="text/html" href="https://wiki.ardumower.de/index.php?title=Deutsche_Version&amp;diff=2445"/>
				<updated>2015-07-11T10:08:20Z</updated>
		
		<summary type="html">&lt;p&gt;Pemiso: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000; font-size:200%;&amp;quot;&amp;gt;'''Diese Seiten sind noch im Aufbau'''&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Hauptseite|to english version]]&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;br /&gt;
{| border=0&lt;br /&gt;
 |&amp;lt;span style=&amp;quot;color:#cf7606; font-size:200%;&amp;quot;&amp;gt;'''Willkommen bei'''&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color:#005288; font-size:200%;&amp;quot;&amp;gt;'''Ardumower - dem Eigenbau-Mähroboter'''&amp;lt;/span&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:150%;&amp;quot;&amp;gt;Ardumower WIKI, die Wissensdatenbank der Ardumower Gemeinschaft &amp;lt;/span&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Image:H7c785a1.png |100px|left|Ardumower Logo]][[Image:1000x500-ausbildung.jpg|thumb|180px|Bild des Monats]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Yt-brand-standard-logo-95x40.png|thumb|180px|http://www.youtube.com/user/naneona/videos]]&lt;br /&gt;
&lt;br /&gt;
Du kennst vermutlich das Ardumower - Forum, die Selbstbau-Mähroboter-Gemeinde im Internet. Hier ist nun eine zusätzliche Wissensdatenbank, genannt WIKI. Du kannst hier Informationen, Grundlagen und Tipps zu Eigenbau-Mährobotern finden, die in verschiedene Themen untergliedert sind. Diese Seiten sollten sowohl ein Leitfaden für Einsteiger als auch ein Referenz-Handbuch sein (Der Aufbau entspricht dem bekannten Wikipedia). Wir verwenden dafür das gleiche System: MediaWiki.&amp;lt;p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In diesem WIKI kannst du die Seiten derzeit frei ändern - du kannst deine ersten Erfahrungen dazu auf einer Testseite [[test]] hier im WIKI machen. &lt;br /&gt;
&lt;br /&gt;
Hilf uns, dieses WIKI zu verbessern! Dazu einfach [http://wiki.ardumower.de/index.php?title=Spezial:Anmelden/signup registrieren] und heute mit deiner Bearbeitung beginnen ...&lt;br /&gt;
&lt;br /&gt;
=Anfang / Einführung=&lt;br /&gt;
[[Image:Ardumower_overview.png|thumb|400px|Überblick]]&lt;br /&gt;
Diese Einführung soll dir helfen, den Bau deines eigenen Selbstbau-Mähroboter zu beginnen:&lt;br /&gt;
*[[So fang ich an]] (Einleitung und Überblick über die einzelnen Schritte)&lt;br /&gt;
*[[Arduino erste Schritte]] (wenn du vorher noch nie mit Arduino gearbeitet hast: wie lade ich ein Programm auf den Arduino...)&lt;br /&gt;
&lt;br /&gt;
=Ardumower Themen=&lt;br /&gt;
Diese Seiten liefern dir ein Referenzbuch, das nach Mähroboter-Themen gegliedert ist:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;color:blue; background-color:#ffffcc;&amp;quot; cellpadding=&amp;quot;10&amp;quot;&lt;br /&gt;
!Chassis Montage&lt;br /&gt;
|[[Ardumower Chassis]] &lt;br /&gt;
|-&lt;br /&gt;
!Arduino Code, Schaltbilder, Leiterplatte(LP) usw.&lt;br /&gt;
|[[Arduino erste Schritte]]&lt;br /&gt;
|[[Ardumower LP|Ardumower LP&amp;amp;Code]]&lt;br /&gt;
|[[Arduino DUE]]&lt;br /&gt;
|[[Fehlerbehebung]]&lt;br /&gt;
|-&lt;br /&gt;
!Aktoren&lt;br /&gt;
|[[Motor-Treiber|Motortreiber - Motoren]]&lt;br /&gt;
|[[Relais]]&lt;br /&gt;
|-&lt;br /&gt;
!Sensoren&lt;br /&gt;
|[[Begrenzungsschleife|Begrenzungs - Schleife]]&lt;br /&gt;
|[[Ultraschall]]&lt;br /&gt;
|[[Hall-Sensoren]]&lt;br /&gt;
|[[Rasen-Sensoren]]&lt;br /&gt;
|[[Wegmessung (Odometrie)]]&lt;br /&gt;
|[[Inertialsensor - IMU]]&lt;br /&gt;
|[[Regensensor]]&lt;br /&gt;
|[[Absturzsensor]]&lt;br /&gt;
|-&lt;br /&gt;
!Energie&lt;br /&gt;
|[[Laden]]&lt;br /&gt;
|-&lt;br /&gt;
!Wireless&lt;br /&gt;
|[[Modell R/C]]&lt;br /&gt;
|[[Bluetooth und App|Bluetooth&amp;amp;App]]&lt;br /&gt;
|[[Global Positioning System-GPS]]&lt;br /&gt;
|-&lt;br /&gt;
!Andere Module&lt;br /&gt;
|[[Echtzeit-Uhr]]&lt;br /&gt;
|-&lt;br /&gt;
!Software Architektur, Algorithmen&lt;br /&gt;
|[http://www.grauonline.de/alexwww/ardumower/sim/mower.html Ardumower simulator]&lt;br /&gt;
|[[Ardumower Software-Design]]&lt;br /&gt;
|[[Sensor Fusion|Sensorfusion - SLAM]]&lt;br /&gt;
|[[PID Regelung]]&lt;br /&gt;
|[[Kalman-Filter|Kalman-Filter - (EKF)]]&lt;br /&gt;
|-&lt;br /&gt;
!Arduino Programmierung&lt;br /&gt;
|[[Arduino Crash Kurs|Arduino - Crashkurs]]&lt;br /&gt;
|[[Arduino Code-Techniken|Arduino - Code-Techniken]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Dein Mähroboter-Projekt=&lt;br /&gt;
Beschreibe dein eigenes Mähroboter-Projekt auf einer neuen WIKI-Seite:&lt;br /&gt;
* [[Ardumower Chassis für Hanglagen]]&lt;br /&gt;
* [[Ardumower MINI]]&lt;br /&gt;
* [[Tracked Mower]]&lt;br /&gt;
* ...&lt;br /&gt;
* ...&lt;br /&gt;
&lt;br /&gt;
=Deine Ardumower Erweiterung=&lt;br /&gt;
Beschreibe Deine eigene Erweiterung oder Verbesserung des Ardumowers (optisch, computertechnisch, Infrarot, Sound, Navigation, Funk, oder andere Zusatzbaugruppen ) auf einer neuen WIKI Seite:&lt;br /&gt;
* Erzeugung von Sound [[Sound Module]]&lt;br /&gt;
* [[Ardumower zukünftige LP]]&lt;br /&gt;
* ...&lt;br /&gt;
* ...&lt;br /&gt;
&lt;br /&gt;
=Wiki Hilfe=&lt;br /&gt;
* Wie bearbeiten/hinzufügen einer Seite: [[Wiki help]]&lt;br /&gt;
* Verwende diese Seite zum Ausprobieren : [[test]]&lt;br /&gt;
&lt;br /&gt;
=Weiterführende Links=&lt;br /&gt;
[http://www.ardumower.de/index.php/de Ardumower Home / Forum]&lt;br /&gt;
[https://www.marotronics.de/ Ardumower Shop]&lt;/div&gt;</summary>
		<author><name>Pemiso</name></author>	</entry>

	<entry>
		<id>https://wiki.ardumower.de/index.php?title=Perimeter-Schleife&amp;diff=2444</id>
		<title>Perimeter-Schleife</title>
		<link rel="alternate" type="text/html" href="https://wiki.ardumower.de/index.php?title=Perimeter-Schleife&amp;diff=2444"/>
				<updated>2015-07-11T10:07:14Z</updated>
		
		<summary type="html">&lt;p&gt;Pemiso: &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: im Garten wird ein Schleifendraht verlegt, durch den ein Signal gesendet und vom Ardumower ausgewertet wird. 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 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 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 hat eine spezielle Charakteristik: &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;
=== 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 Kondensator 4.7nF 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 verkompliziert, wird das nicht-differentielle Signal nicht empfohlen!&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 (Spulenhintergrundrauschen 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. After uploading the code and connecting the perimeter wire, the Arduino LED should be ON. Now remove the perimeter wire -  the Arduino LED should go OFF.&lt;br /&gt;
2. If that doesn't work: Using a voltmeter, measure once at Arduino pin D9 and once at motor driver output pin (OUT_1) against ground - both should have a DC voltage of 2.5 Volt.&lt;br /&gt;
3. If you have an oscilloscope, replace the perimeter wire by the oscilloscope. The measured signal look like below:&lt;br /&gt;
&lt;br /&gt;
The output signal shows a higher amplitude (high spikes) as the input signal:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Perimetersignal.jpg|signal on the sender output &lt;br /&gt;
File: Ardumower_perimeter_sender_schematics.png|resonator circuit basic principle&lt;br /&gt;
File: Arduino_perimeter_sender_photo.jpg&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For a simple receiver test, you can simply connect the receiver coil to an oscilloscope. The measured oscilloscope signal should look like below:&lt;br /&gt;
&lt;br /&gt;
This signal can be detected easily with a coil:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Coilsignal.jpg|coil signal at receiver coil&lt;br /&gt;
File: Fft.jpg|signal in frequency spectrum, superposed by motor noise&lt;br /&gt;
File: Ardumower_perimeter_spectrum_plot.jpg| frequency spectrum via pfodApp&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Empfänger ==&lt;br /&gt;
The receiver uses 2 coils mounted left and right in the robot. The signal strenght of left and right coils is evaluated to be able to compare them.&lt;br /&gt;
&lt;br /&gt;
Principle:&lt;br /&gt;
# Amplification of alternating signal using OPAMP&lt;br /&gt;
# Optional: Bandpass-filtering to filter-out noise caused by motors etc.&lt;br /&gt;
# Evaluation of signal strength of left and right coil&lt;br /&gt;
&lt;br /&gt;
Advantage of this version: analog controlling works great.&lt;br /&gt;
Disadvantage: You cannot detect, where you are (inside/outside) if your missed the perimter crossing. Also, you cannot detect if you drive clockwise or anti-clockwise on the perimeter wire.&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;
A coil receives the sender's signal. A resonator circuit (LC) amplifies the received signal at resonation frequency (7.8 kHz). Then the signal is amplified using an LM386 (here: Arduino sound sensor using coil instead of microphone). A bandpass-filter  (digital filter, FFT) on the Arduino filters the desired frequency (7.8 Khz) and outputs a PWM signal (pulse width is proportional to signal strength). A lowpass-filter converts it to a DC voltage.&lt;br /&gt;
Note: Wiring between Nano and Mega has been simplified - see schematics for exact wiring.&lt;br /&gt;
&lt;br /&gt;
We have tested the following combinations of amplifier und coils:&lt;br /&gt;
&lt;br /&gt;
'Arduino sound sensor'&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Soundsensor.jpg| Amplifying signal using LM386 - Arduino Sound Sensor using coil instead microphone&lt;br /&gt;
File: YwRobot_Sensor.jpg |Arduino Sound Sensor using LM386&lt;br /&gt;
File: YwRobot_circuit.png |Arduino Sound Sensor module schematics&lt;br /&gt;
File: Coil_85mh.jpg|85 mH coils&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
LM386 amplifier&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Lm386_amplifier.jpg| LM386 amplifier (200x amplification)&lt;br /&gt;
File: Lm386_modified.jpg| LM386 amplifier modified&lt;br /&gt;
File: Ardumower_lm386_circuit.png | LM386 module schematics&lt;br /&gt;
File: Coil_small.jpg| 104 mH coil&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Important: When using this amplifier, capacitor C3 should be bypassed (will give a VCC/2 offset required for Arduino) and the coil will be connected to &amp;quot;IN&amp;quot; and &amp;quot;GND&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
'''NOTE''': It's recommended to directly mount the coil on the amplifier module. This ensures the 'small signal' of the coil is not distorted by other components (motors etc.)&lt;br /&gt;
&lt;br /&gt;
=== Funktionstest ===&lt;br /&gt;
# Make sure that the sender works correctly (see further above).&lt;br /&gt;
# Increase the Arduino Sound Sensor potentiometer to maximum (rotate counter-clock-wise).&lt;br /&gt;
# After uploading the code, move one coil towards the perimeter wire. The Arduino LED should start to blink. Now, hold both coils at same distance over the perimeter wire. The Arduino LED should be always ON now.&lt;br /&gt;
# If that doesn't work, open the serial console (19200 baud), and verify the signal values.&lt;br /&gt;
&lt;br /&gt;
=== Spulenauswahl ===&lt;br /&gt;
Induction math, only approximation:&lt;br /&gt;
&lt;br /&gt;
 L = 1nH x n² x ((D² / mm² ) / (l / mm))&lt;br /&gt;
 l = coil length&lt;br /&gt;
 D = coil diameter&lt;br /&gt;
&lt;br /&gt;
Example: An inductance of 85 mH, and diamter of 10 mm, and length of 40 mm require about  5830 windings.&lt;br /&gt;
&lt;br /&gt;
This inductance of 85 mH and a capacity of 4.7 nF results in a resonation frequency of 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ä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: 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 sit 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>Pemiso</name></author>	</entry>

	<entry>
		<id>https://wiki.ardumower.de/index.php?title=Perimeter-Schleife&amp;diff=2443</id>
		<title>Perimeter-Schleife</title>
		<link rel="alternate" type="text/html" href="https://wiki.ardumower.de/index.php?title=Perimeter-Schleife&amp;diff=2443"/>
				<updated>2015-07-11T10:05:50Z</updated>
		
		<summary type="html">&lt;p&gt;Pemiso: &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: im Garten wird ein Schleifendraht verlegt, durch den ein Signal gesendet und vom Ardumower ausgewertet wird. 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;
=Perimeter-Schleife 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 Perimeter-Schleife (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 Perimeter-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 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 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 hat eine spezielle Charakteristik: &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;
=== 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 Kondensator 4.7nF 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 verkompliziert, wird das nicht-differentielle Signal nicht empfohlen!&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 (Spulenhintergrundrauschen 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. After uploading the code and connecting the perimeter wire, the Arduino LED should be ON. Now remove the perimeter wire -  the Arduino LED should go OFF.&lt;br /&gt;
2. If that doesn't work: Using a voltmeter, measure once at Arduino pin D9 and once at motor driver output pin (OUT_1) against ground - both should have a DC voltage of 2.5 Volt.&lt;br /&gt;
3. If you have an oscilloscope, replace the perimeter wire by the oscilloscope. The measured signal look like below:&lt;br /&gt;
&lt;br /&gt;
The output signal shows a higher amplitude (high spikes) as the input signal:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Perimetersignal.jpg|signal on the sender output &lt;br /&gt;
File: Ardumower_perimeter_sender_schematics.png|resonator circuit basic principle&lt;br /&gt;
File: Arduino_perimeter_sender_photo.jpg&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For a simple receiver test, you can simply connect the receiver coil to an oscilloscope. The measured oscilloscope signal should look like below:&lt;br /&gt;
&lt;br /&gt;
This signal can be detected easily with a coil:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Coilsignal.jpg|coil signal at receiver coil&lt;br /&gt;
File: Fft.jpg|signal in frequency spectrum, superposed by motor noise&lt;br /&gt;
File: Ardumower_perimeter_spectrum_plot.jpg| frequency spectrum via pfodApp&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Empfänger ==&lt;br /&gt;
The receiver uses 2 coils mounted left and right in the robot. The signal strenght of left and right coils is evaluated to be able to compare them.&lt;br /&gt;
&lt;br /&gt;
Principle:&lt;br /&gt;
# Amplification of alternating signal using OPAMP&lt;br /&gt;
# Optional: Bandpass-filtering to filter-out noise caused by motors etc.&lt;br /&gt;
# Evaluation of signal strength of left and right coil&lt;br /&gt;
&lt;br /&gt;
Advantage of this version: analog controlling works great.&lt;br /&gt;
Disadvantage: You cannot detect, where you are (inside/outside) if your missed the perimter crossing. Also, you cannot detect if you drive clockwise or anti-clockwise on the perimeter wire.&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;
A coil receives the sender's signal. A resonator circuit (LC) amplifies the received signal at resonation frequency (7.8 kHz). Then the signal is amplified using an LM386 (here: Arduino sound sensor using coil instead of microphone). A bandpass-filter  (digital filter, FFT) on the Arduino filters the desired frequency (7.8 Khz) and outputs a PWM signal (pulse width is proportional to signal strength). A lowpass-filter converts it to a DC voltage.&lt;br /&gt;
Note: Wiring between Nano and Mega has been simplified - see schematics for exact wiring.&lt;br /&gt;
&lt;br /&gt;
We have tested the following combinations of amplifier und coils:&lt;br /&gt;
&lt;br /&gt;
'Arduino sound sensor'&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Soundsensor.jpg| Amplifying signal using LM386 - Arduino Sound Sensor using coil instead microphone&lt;br /&gt;
File: YwRobot_Sensor.jpg |Arduino Sound Sensor using LM386&lt;br /&gt;
File: YwRobot_circuit.png |Arduino Sound Sensor module schematics&lt;br /&gt;
File: Coil_85mh.jpg|85 mH coils&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
LM386 amplifier&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Lm386_amplifier.jpg| LM386 amplifier (200x amplification)&lt;br /&gt;
File: Lm386_modified.jpg| LM386 amplifier modified&lt;br /&gt;
File: Ardumower_lm386_circuit.png | LM386 module schematics&lt;br /&gt;
File: Coil_small.jpg| 104 mH coil&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Important: When using this amplifier, capacitor C3 should be bypassed (will give a VCC/2 offset required for Arduino) and the coil will be connected to &amp;quot;IN&amp;quot; and &amp;quot;GND&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
'''NOTE''': It's recommended to directly mount the coil on the amplifier module. This ensures the 'small signal' of the coil is not distorted by other components (motors etc.)&lt;br /&gt;
&lt;br /&gt;
=== Funktionstest ===&lt;br /&gt;
# Make sure that the sender works correctly (see further above).&lt;br /&gt;
# Increase the Arduino Sound Sensor potentiometer to maximum (rotate counter-clock-wise).&lt;br /&gt;
# After uploading the code, move one coil towards the perimeter wire. The Arduino LED should start to blink. Now, hold both coils at same distance over the perimeter wire. The Arduino LED should be always ON now.&lt;br /&gt;
# If that doesn't work, open the serial console (19200 baud), and verify the signal values.&lt;br /&gt;
&lt;br /&gt;
=== Spulenauswahl ===&lt;br /&gt;
Induction math, only approximation:&lt;br /&gt;
&lt;br /&gt;
 L = 1nH x n² x ((D² / mm² ) / (l / mm))&lt;br /&gt;
 l = coil length&lt;br /&gt;
 D = coil diameter&lt;br /&gt;
&lt;br /&gt;
Example: An inductance of 85 mH, and diamter of 10 mm, and length of 40 mm require about  5830 windings.&lt;br /&gt;
&lt;br /&gt;
This inductance of 85 mH and a capacity of 4.7 nF results in a resonation frequency of 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ä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: 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 sit 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>Pemiso</name></author>	</entry>

	<entry>
		<id>https://wiki.ardumower.de/index.php?title=Deutsche_Version&amp;diff=2442</id>
		<title>Deutsche Version</title>
		<link rel="alternate" type="text/html" href="https://wiki.ardumower.de/index.php?title=Deutsche_Version&amp;diff=2442"/>
				<updated>2015-07-11T10:04:47Z</updated>
		
		<summary type="html">&lt;p&gt;Pemiso: /* Ardumower Themen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000; font-size:200%;&amp;quot;&amp;gt;'''Diese Seiten sind noch im Aufbau'''&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Hauptseite|to english version]]&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;br /&gt;
{| border=0&lt;br /&gt;
 |&amp;lt;span style=&amp;quot;color:#cf7606; font-size:200%;&amp;quot;&amp;gt;'''Willkommen bei'''&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color:#005288; font-size:200%;&amp;quot;&amp;gt;'''Ardumower - dem Eigenbau-Mähroboter'''&amp;lt;/span&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:150%;&amp;quot;&amp;gt;Ardumower WIKI, die Wissensdatenbank der Ardumower Gemeinschaft &amp;lt;/span&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Image:H7c785a1.png |100px|left|Ardumower Logo]][[Image:1000x500-ausbildung.jpg|thumb|180px|Bild des Monats]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Yt-brand-standard-logo-95x40.png|thumb|180px|http://www.youtube.com/user/naneona/videos]]&lt;br /&gt;
&lt;br /&gt;
Du kennst vermutlich das Ardumower - Forum, die Selbstbau-Mähroboter-Gemeinde im Internet. Hier ist nun eine zusätzliche Wissensdatenbank, genannt WIKI. Du kannst hier Informationen, Grundlagen und Tipps zu Eigenbau-Mährobotern finden, die in verschiedene Themen untergliedert sind. Diese Seiten sollten sowohl ein Leitfaden für Einsteiger als auch ein Referenz-Handbuch sein (Der Aufbau entspricht dem bekannten Wikipedia). Wir verwenden dafür das gleiche System: MediaWiki.&amp;lt;p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In diesem WIKI kannst du die Seiten derzeit frei ändern - du kannst deine ersten Erfahrungen dazu auf einer Testseite [[test]] hier im WIKI machen. &lt;br /&gt;
&lt;br /&gt;
Hilf uns, dieses WIKI zu verbessern! Dazu einfach [http://wiki.ardumower.de/index.php?title=Spezial:Anmelden/signup registrieren] und heute mit deiner Bearbeitung beginnen ...&lt;br /&gt;
&lt;br /&gt;
=Anfang / Einführung=&lt;br /&gt;
[[Image:Ardumower_overview.png|thumb|400px|Überblick]]&lt;br /&gt;
Diese Einführung soll dir helfen, den Bau deines eigenen Selbstbau-Mähroboter zu beginnen:&lt;br /&gt;
*[[So fang ich an]] (Einleitung und Überblick über die einzelnen Schritte)&lt;br /&gt;
*[[Arduino erste Schritte]] (wenn du vorher noch nie mit Arduino gearbeitet hast: wie lade ich ein Programm auf den Arduino...)&lt;br /&gt;
&lt;br /&gt;
=Ardumower Themen=&lt;br /&gt;
Diese Seiten liefern dir ein Referenzbuch, das nach Mähroboter-Themen gegliedert ist:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;color:blue; background-color:#ffffcc;&amp;quot; cellpadding=&amp;quot;10&amp;quot;&lt;br /&gt;
!Chassis Montage&lt;br /&gt;
|[[Ardumower Chassis]] &lt;br /&gt;
|-&lt;br /&gt;
!Arduino Code, Schaltbilder, Leiterplatte(LP) usw.&lt;br /&gt;
|[[Arduino erste Schritte]]&lt;br /&gt;
|[[Ardumower LP|Ardumower LP&amp;amp;Code]]&lt;br /&gt;
|[[Arduino DUE]]&lt;br /&gt;
|[[Fehlerbehebung]]&lt;br /&gt;
|-&lt;br /&gt;
!Aktoren&lt;br /&gt;
|[[Motor-Treiber|Motortreiber - Motoren]]&lt;br /&gt;
|[[Relais]]&lt;br /&gt;
|-&lt;br /&gt;
!Sensoren&lt;br /&gt;
|[[Perimeter-Schleife|Begrenzungs - Schleife]]&lt;br /&gt;
|[[Ultraschall]]&lt;br /&gt;
|[[Hall-Sensoren]]&lt;br /&gt;
|[[Rasen-Sensoren]]&lt;br /&gt;
|[[Wegmessung (Odometrie)]]&lt;br /&gt;
|[[Inertialsensor - IMU]]&lt;br /&gt;
|[[Regensensor]]&lt;br /&gt;
|[[Absturzsensor]]&lt;br /&gt;
|-&lt;br /&gt;
!Energie&lt;br /&gt;
|[[Laden]]&lt;br /&gt;
|-&lt;br /&gt;
!Wireless&lt;br /&gt;
|[[Modell R/C]]&lt;br /&gt;
|[[Bluetooth und App|Bluetooth&amp;amp;App]]&lt;br /&gt;
|[[Global Positioning System-GPS]]&lt;br /&gt;
|-&lt;br /&gt;
!Andere Module&lt;br /&gt;
|[[Echtzeit-Uhr]]&lt;br /&gt;
|-&lt;br /&gt;
!Software Architektur, Algorithmen&lt;br /&gt;
|[http://www.grauonline.de/alexwww/ardumower/sim/mower.html Ardumower simulator]&lt;br /&gt;
|[[Ardumower Software-Design]]&lt;br /&gt;
|[[Sensor Fusion|Sensorfusion - SLAM]]&lt;br /&gt;
|[[PID Regelung]]&lt;br /&gt;
|[[Kalman-Filter|Kalman-Filter - (EKF)]]&lt;br /&gt;
|-&lt;br /&gt;
!Arduino Programmierung&lt;br /&gt;
|[[Arduino Crash Kurs|Arduino - Crashkurs]]&lt;br /&gt;
|[[Arduino Code-Techniken|Arduino - Code-Techniken]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Dein Mähroboter-Projekt=&lt;br /&gt;
Beschreibe dein eigenes Mähroboter-Projekt auf einer neuen WIKI-Seite:&lt;br /&gt;
* [[Ardumower Chassis für Hanglagen]]&lt;br /&gt;
* [[Ardumower MINI]]&lt;br /&gt;
* [[Tracked Mower]]&lt;br /&gt;
* ...&lt;br /&gt;
* ...&lt;br /&gt;
&lt;br /&gt;
=Deine Ardumower Erweiterung=&lt;br /&gt;
Beschreibe Deine eigene Erweiterung oder Verbesserung des Ardumowers (optisch, computertechnisch, Infrarot, Sound, Navigation, Funk, oder andere Zusatzbaugruppen ) auf einer neuen WIKI Seite:&lt;br /&gt;
* Erzeugung von Sound [[Sound Module]]&lt;br /&gt;
* [[Ardumower zukünftige LP]]&lt;br /&gt;
* ...&lt;br /&gt;
* ...&lt;br /&gt;
&lt;br /&gt;
=Wiki Hilfe=&lt;br /&gt;
* Wie bearbeiten/hinzufügen einer Seite: [[Wiki help]]&lt;br /&gt;
* Verwende diese Seite zum Ausprobieren : [[test]]&lt;br /&gt;
&lt;br /&gt;
=Weiterführende Links=&lt;br /&gt;
[http://www.ardumower.de/index.php/de Ardumower Home / Forum]&lt;br /&gt;
[https://www.marotronics.de/ Ardumower Shop]&lt;/div&gt;</summary>
		<author><name>Pemiso</name></author>	</entry>

	<entry>
		<id>https://wiki.ardumower.de/index.php?title=Deutsche_Version&amp;diff=2441</id>
		<title>Deutsche Version</title>
		<link rel="alternate" type="text/html" href="https://wiki.ardumower.de/index.php?title=Deutsche_Version&amp;diff=2441"/>
				<updated>2015-07-11T09:47:27Z</updated>
		
		<summary type="html">&lt;p&gt;Pemiso: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000; font-size:200%;&amp;quot;&amp;gt;'''Diese Seiten sind noch im Aufbau'''&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Hauptseite|to english version]]&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;br /&gt;
{| border=0&lt;br /&gt;
 |&amp;lt;span style=&amp;quot;color:#cf7606; font-size:200%;&amp;quot;&amp;gt;'''Willkommen bei'''&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color:#005288; font-size:200%;&amp;quot;&amp;gt;'''Ardumower - dem Eigenbau-Mähroboter'''&amp;lt;/span&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:150%;&amp;quot;&amp;gt;Ardumower WIKI, die Wissensdatenbank der Ardumower Gemeinschaft &amp;lt;/span&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Image:H7c785a1.png |100px|left|Ardumower Logo]][[Image:1000x500-ausbildung.jpg|thumb|180px|Bild des Monats]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Yt-brand-standard-logo-95x40.png|thumb|180px|http://www.youtube.com/user/naneona/videos]]&lt;br /&gt;
&lt;br /&gt;
Du kennst vermutlich das Ardumower - Forum, die Selbstbau-Mähroboter-Gemeinde im Internet. Hier ist nun eine zusätzliche Wissensdatenbank, genannt WIKI. Du kannst hier Informationen, Grundlagen und Tipps zu Eigenbau-Mährobotern finden, die in verschiedene Themen untergliedert sind. Diese Seiten sollten sowohl ein Leitfaden für Einsteiger als auch ein Referenz-Handbuch sein (Der Aufbau entspricht dem bekannten Wikipedia). Wir verwenden dafür das gleiche System: MediaWiki.&amp;lt;p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In diesem WIKI kannst du die Seiten derzeit frei ändern - du kannst deine ersten Erfahrungen dazu auf einer Testseite [[test]] hier im WIKI machen. &lt;br /&gt;
&lt;br /&gt;
Hilf uns, dieses WIKI zu verbessern! Dazu einfach [http://wiki.ardumower.de/index.php?title=Spezial:Anmelden/signup registrieren] und heute mit deiner Bearbeitung beginnen ...&lt;br /&gt;
&lt;br /&gt;
=Anfang / Einführung=&lt;br /&gt;
[[Image:Ardumower_overview.png|thumb|400px|Überblick]]&lt;br /&gt;
Diese Einführung soll dir helfen, den Bau deines eigenen Selbstbau-Mähroboter zu beginnen:&lt;br /&gt;
*[[So fang ich an]] (Einleitung und Überblick über die einzelnen Schritte)&lt;br /&gt;
*[[Arduino erste Schritte]] (wenn du vorher noch nie mit Arduino gearbeitet hast: wie lade ich ein Programm auf den Arduino...)&lt;br /&gt;
&lt;br /&gt;
=Ardumower Themen=&lt;br /&gt;
Diese Seiten liefern dir ein Referenzbuch, das nach Mähroboter-Themen gegliedert ist:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;color:blue; background-color:#ffffcc;&amp;quot; cellpadding=&amp;quot;10&amp;quot;&lt;br /&gt;
!Chassis Montage&lt;br /&gt;
|[[Ardumower Chassis]] &lt;br /&gt;
|-&lt;br /&gt;
!Arduino Code, Schaltbilder, Leiterplatte(LP) usw.&lt;br /&gt;
|[[Arduino erste Schritte]]&lt;br /&gt;
|[[Ardumower LP|Ardumower LP &amp;amp; Code]]&lt;br /&gt;
|[[Arduino DUE]]&lt;br /&gt;
|[[Fehlerbehebung]]&lt;br /&gt;
|-&lt;br /&gt;
!Aktoren&lt;br /&gt;
|[[Motor-Treiber|Motor-Treiber &amp;amp; Motoren]]&lt;br /&gt;
|[[Relais]]&lt;br /&gt;
|-&lt;br /&gt;
!Sensoren&lt;br /&gt;
|[[Perimeter-Schleife]]&lt;br /&gt;
|[[Ultraschall]]&lt;br /&gt;
|[[Hall-Sensoren]]&lt;br /&gt;
|[[Rasen-Sensoren]]&lt;br /&gt;
|[[Weg- und Geschwindigkeismessung (Odometrie)]]&lt;br /&gt;
|[[Inertialsensor - IMU]]&lt;br /&gt;
|[[Regensensor]]&lt;br /&gt;
|[[Absturzsensor]]&lt;br /&gt;
|-&lt;br /&gt;
!Energie&lt;br /&gt;
|[[Laden]]&lt;br /&gt;
|-&lt;br /&gt;
!Wireless&lt;br /&gt;
|[[Modell R/C]]&lt;br /&gt;
|[[Bluetooth und App|Bluetooth &amp;amp; App]]&lt;br /&gt;
|[[Global Positioning System-GPS]]&lt;br /&gt;
|-&lt;br /&gt;
!Andere Module&lt;br /&gt;
|[[Echtzeit-Uhr]]&lt;br /&gt;
|-&lt;br /&gt;
!Software Architektur, Algorithmen&lt;br /&gt;
|[http://www.grauonline.de/alexwww/ardumower/sim/mower.html Ardumower simulator]&lt;br /&gt;
|[[Ardumower Software-Design]]&lt;br /&gt;
|[[Sensor Fusion|Sensor Fusion &amp;amp; SLAM]]&lt;br /&gt;
|[[PID Regelung]]&lt;br /&gt;
|[[Kalman-Filter|Kalman-Filter (EKF)]]&lt;br /&gt;
|-&lt;br /&gt;
!Arduino Programmierung&lt;br /&gt;
|[[Arduino Crash Kurs]]&lt;br /&gt;
|[[Arduino Code-Techniken]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Dein Mähroboter-Projekt=&lt;br /&gt;
Beschreibe dein eigenes Mähroboter-Projekt auf einer neuen WIKI-Seite:&lt;br /&gt;
* [[Ardumower Chassis für Hanglagen]]&lt;br /&gt;
* [[Ardumower MINI]]&lt;br /&gt;
* [[Tracked Mower]]&lt;br /&gt;
* ...&lt;br /&gt;
* ...&lt;br /&gt;
&lt;br /&gt;
=Deine Ardumower Erweiterung=&lt;br /&gt;
Beschreibe Deine eigene Erweiterung oder Verbesserung des Ardumowers (optisch, computertechnisch, Infrarot, Sound, Navigation, Funk, oder andere Zusatzbaugruppen ) auf einer neuen WIKI Seite:&lt;br /&gt;
* Erzeugung von Sound [[Sound Module]]&lt;br /&gt;
* [[Ardumower zukünftige LP]]&lt;br /&gt;
* ...&lt;br /&gt;
* ...&lt;br /&gt;
&lt;br /&gt;
=Wiki Hilfe=&lt;br /&gt;
* Wie bearbeiten/hinzufügen einer Seite: [[Wiki help]]&lt;br /&gt;
* Verwende diese Seite zum Ausprobieren : [[test]]&lt;br /&gt;
&lt;br /&gt;
=Weiterführende Links=&lt;br /&gt;
[http://www.ardumower.de/index.php/de Ardumower Home / Forum]&lt;br /&gt;
[https://www.marotronics.de/ Ardumower Shop]&lt;/div&gt;</summary>
		<author><name>Pemiso</name></author>	</entry>

	<entry>
		<id>https://wiki.ardumower.de/index.php?title=Ardumower_LP&amp;diff=2440</id>
		<title>Ardumower LP</title>
		<link rel="alternate" type="text/html" href="https://wiki.ardumower.de/index.php?title=Ardumower_LP&amp;diff=2440"/>
				<updated>2015-07-11T00:49:43Z</updated>
		
		<summary type="html">&lt;p&gt;Pemiso: /* Starten des Mähroboters */&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, undwie 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 können als komplettes Kit über den [https://www.marotronics.de/index.php?k=7 shop] [[File: shopping.png|link=https://www.marotronics.de/index.php?k=7]] bezogen werden .&lt;br /&gt;
&lt;br /&gt;
* Hauptfunktionen&lt;br /&gt;
** Arduino Kabel (female-female and male-female jumper cable)&lt;br /&gt;
** Arduino Mega 2560 (oder Arduino Due)&lt;br /&gt;
** einstellbare DC voltage step-down Module (3.3v, 5v, 8v)&lt;br /&gt;
** zweifach Motortreiber-Modul mit integriertem Stromsensor (2 Antriebsmotoren)&lt;br /&gt;
** Stromsensor Module&lt;br /&gt;
** Motortreiber-Modul mit integriertem Stromsensor (Mähmotor) &lt;br /&gt;
** Widerstände, Kondensatoren, Sicherungen&lt;br /&gt;
** Piezo Buzzer, Taster, Ein/Aus-Schalter&lt;br /&gt;
&lt;br /&gt;
* Perimeter Sender (optional)&lt;br /&gt;
** Arduino Nano&lt;br /&gt;
** DC voltage step-down Module &lt;br /&gt;
** Motortreiber-Modul mit integriertem Stromsensor&lt;br /&gt;
&lt;br /&gt;
* Perimeter Emfpänger (optional)&lt;br /&gt;
** Vorverstärker-Module &lt;br /&gt;
** Kondensatoren, Empfängerspulen&lt;br /&gt;
&lt;br /&gt;
* zusätzliche Module&lt;br /&gt;
** IMU module (Gyro, Beschleunigungssensor. Kompass) (erforderlich)&lt;br /&gt;
** Echtzeituhr (erforderlich)&lt;br /&gt;
** Bluetooth Module (zur Steuerung über Handy/Tablet, empfohlen)&lt;br /&gt;
** Ultraschall-Module(optional)&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>Pemiso</name></author>	</entry>

	<entry>
		<id>https://wiki.ardumower.de/index.php?title=Ardumower_LP&amp;diff=2439</id>
		<title>Ardumower LP</title>
		<link rel="alternate" type="text/html" href="https://wiki.ardumower.de/index.php?title=Ardumower_LP&amp;diff=2439"/>
				<updated>2015-07-11T00:44:53Z</updated>
		
		<summary type="html">&lt;p&gt;Pemiso: /* Stromversorgung */&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, undwie 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 können als komplettes Kit über den [https://www.marotronics.de/index.php?k=7 shop] [[File: shopping.png|link=https://www.marotronics.de/index.php?k=7]] bezogen werden .&lt;br /&gt;
&lt;br /&gt;
* Hauptfunktionen&lt;br /&gt;
** Arduino Kabel (female-female and male-female jumper cable)&lt;br /&gt;
** Arduino Mega 2560 (oder Arduino Due)&lt;br /&gt;
** einstellbare DC voltage step-down Module (3.3v, 5v, 8v)&lt;br /&gt;
** zweifach Motortreiber-Modul mit integriertem Stromsensor (2 Antriebsmotoren)&lt;br /&gt;
** Stromsensor Module&lt;br /&gt;
** Motortreiber-Modul mit integriertem Stromsensor (Mähmotor) &lt;br /&gt;
** Widerstände, Kondensatoren, Sicherungen&lt;br /&gt;
** Piezo Buzzer, Taster, Ein/Aus-Schalter&lt;br /&gt;
&lt;br /&gt;
* Perimeter Sender (optional)&lt;br /&gt;
** Arduino Nano&lt;br /&gt;
** DC voltage step-down Module &lt;br /&gt;
** Motortreiber-Modul mit integriertem Stromsensor&lt;br /&gt;
&lt;br /&gt;
* Perimeter Emfpänger (optional)&lt;br /&gt;
** Vorverstärker-Module &lt;br /&gt;
** Kondensatoren, Empfängerspulen&lt;br /&gt;
&lt;br /&gt;
* zusätzliche Module&lt;br /&gt;
** IMU module (Gyro, Beschleunigungssensor. Kompass) (erforderlich)&lt;br /&gt;
** Echtzeituhr (erforderlich)&lt;br /&gt;
** Bluetooth Module (zur Steuerung über Handy/Tablet, empfohlen)&lt;br /&gt;
** Ultraschall-Module(optional)&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 Buzzer 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 solange wie du Pieptöne hörst:&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>Pemiso</name></author>	</entry>

	<entry>
		<id>https://wiki.ardumower.de/index.php?title=Ardumower_LP&amp;diff=2438</id>
		<title>Ardumower LP</title>
		<link rel="alternate" type="text/html" href="https://wiki.ardumower.de/index.php?title=Ardumower_LP&amp;diff=2438"/>
				<updated>2015-07-11T00:42:32Z</updated>
		
		<summary type="html">&lt;p&gt;Pemiso: /* Leiterplatten Jumper */&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, undwie 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 können als komplettes Kit über den [https://www.marotronics.de/index.php?k=7 shop] [[File: shopping.png|link=https://www.marotronics.de/index.php?k=7]] bezogen werden .&lt;br /&gt;
&lt;br /&gt;
* Hauptfunktionen&lt;br /&gt;
** Arduino Kabel (female-female and male-female jumper cable)&lt;br /&gt;
** Arduino Mega 2560 (oder Arduino Due)&lt;br /&gt;
** einstellbare DC voltage step-down Module (3.3v, 5v, 8v)&lt;br /&gt;
** zweifach Motortreiber-Modul mit integriertem Stromsensor (2 Antriebsmotoren)&lt;br /&gt;
** Stromsensor Module&lt;br /&gt;
** Motortreiber-Modul mit integriertem Stromsensor (Mähmotor) &lt;br /&gt;
** Widerstände, Kondensatoren, Sicherungen&lt;br /&gt;
** Piezo Buzzer, Taster, Ein/Aus-Schalter&lt;br /&gt;
&lt;br /&gt;
* Perimeter Sender (optional)&lt;br /&gt;
** Arduino Nano&lt;br /&gt;
** DC voltage step-down Module &lt;br /&gt;
** Motortreiber-Modul mit integriertem Stromsensor&lt;br /&gt;
&lt;br /&gt;
* Perimeter Emfpänger (optional)&lt;br /&gt;
** Vorverstärker-Module &lt;br /&gt;
** Kondensatoren, Empfängerspulen&lt;br /&gt;
&lt;br /&gt;
* zusätzliche Module&lt;br /&gt;
** IMU module (Gyro, Beschleunigungssensor. Kompass) (erforderlich)&lt;br /&gt;
** Echtzeituhr (erforderlich)&lt;br /&gt;
** Bluetooth Module (zur Steuerung über Handy/Tablet, empfohlen)&lt;br /&gt;
** Ultraschall-Module(optional)&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 ferhalten (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 Buzzer 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 solange wie du Pieptöne hörst:&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>Pemiso</name></author>	</entry>

	<entry>
		<id>https://wiki.ardumower.de/index.php?title=Perimeter-Schleife&amp;diff=2437</id>
		<title>Perimeter-Schleife</title>
		<link rel="alternate" type="text/html" href="https://wiki.ardumower.de/index.php?title=Perimeter-Schleife&amp;diff=2437"/>
				<updated>2015-07-10T23:08:24Z</updated>
		
		<summary type="html">&lt;p&gt;Pemiso: /* Perimeter-Schleife V2 (erforderlich für aktuellen ArduMower Code) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Zusammenfassung=&lt;br /&gt;
Eine Perimeter-Schleife (oder Begrenzungsdraht) ist eine Art 'elektronischer Zaun': er veranlaßt den ArduMower zum Stoppen / Umkehren sobald die Grenze erreicht ist. Nicht in jeder Umgebung ist eine Perimeter-Schleife notwendig - Rasensensoren könnten eine Alternative sein.&lt;br /&gt;
&lt;br /&gt;
Das Prinzip: im Garten wird ein Schleifendraht verlegt, durch den ein Signal gesendet und vom Ardumower ausgewertet wird. 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;
=Perimeter-Schleife 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 Perimeter-Schleife (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 Perimeter-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 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 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 hat eine spezielle Charakteristik: &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;
=== 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 Kondensator 4.7nF 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 verkompliziert, wird das nicht-differentielle Signal nicht empfohlen!&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 (Spulenhintergrundrauschen 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. After uploading the code and connecting the perimeter wire, the Arduino LED should be ON. Now remove the perimeter wire -  the Arduino LED should go OFF.&lt;br /&gt;
2. If that doesn't work: Using a voltmeter, measure once at Arduino pin D9 and once at motor driver output pin (OUT_1) against ground - both should have a DC voltage of 2.5 Volt.&lt;br /&gt;
3. If you have an oscilloscope, replace the perimeter wire by the oscilloscope. The measured signal look like below:&lt;br /&gt;
&lt;br /&gt;
The output signal shows a higher amplitude (high spikes) as the input signal:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Perimetersignal.jpg|signal on the sender output &lt;br /&gt;
File: Ardumower_perimeter_sender_schematics.png|resonator circuit basic principle&lt;br /&gt;
File: Arduino_perimeter_sender_photo.jpg&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For a simple receiver test, you can simply connect the receiver coil to an oscilloscope. The measured oscilloscope signal should look like below:&lt;br /&gt;
&lt;br /&gt;
This signal can be detected easily with a coil:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Coilsignal.jpg|coil signal at receiver coil&lt;br /&gt;
File: Fft.jpg|signal in frequency spectrum, superposed by motor noise&lt;br /&gt;
File: Ardumower_perimeter_spectrum_plot.jpg| frequency spectrum via pfodApp&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Empfänger ==&lt;br /&gt;
The receiver uses 2 coils mounted left and right in the robot. The signal strenght of left and right coils is evaluated to be able to compare them.&lt;br /&gt;
&lt;br /&gt;
Principle:&lt;br /&gt;
# Amplification of alternating signal using OPAMP&lt;br /&gt;
# Optional: Bandpass-filtering to filter-out noise caused by motors etc.&lt;br /&gt;
# Evaluation of signal strength of left and right coil&lt;br /&gt;
&lt;br /&gt;
Advantage of this version: analog controlling works great.&lt;br /&gt;
Disadvantage: You cannot detect, where you are (inside/outside) if your missed the perimter crossing. Also, you cannot detect if you drive clockwise or anti-clockwise on the perimeter wire.&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;
A coil receives the sender's signal. A resonator circuit (LC) amplifies the received signal at resonation frequency (7.8 kHz). Then the signal is amplified using an LM386 (here: Arduino sound sensor using coil instead of microphone). A bandpass-filter  (digital filter, FFT) on the Arduino filters the desired frequency (7.8 Khz) and outputs a PWM signal (pulse width is proportional to signal strength). A lowpass-filter converts it to a DC voltage.&lt;br /&gt;
Note: Wiring between Nano and Mega has been simplified - see schematics for exact wiring.&lt;br /&gt;
&lt;br /&gt;
We have tested the following combinations of amplifier und coils:&lt;br /&gt;
&lt;br /&gt;
'Arduino sound sensor'&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Soundsensor.jpg| Amplifying signal using LM386 - Arduino Sound Sensor using coil instead microphone&lt;br /&gt;
File: YwRobot_Sensor.jpg |Arduino Sound Sensor using LM386&lt;br /&gt;
File: YwRobot_circuit.png |Arduino Sound Sensor module schematics&lt;br /&gt;
File: Coil_85mh.jpg|85 mH coils&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
LM386 amplifier&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Lm386_amplifier.jpg| LM386 amplifier (200x amplification)&lt;br /&gt;
File: Lm386_modified.jpg| LM386 amplifier modified&lt;br /&gt;
File: Ardumower_lm386_circuit.png | LM386 module schematics&lt;br /&gt;
File: Coil_small.jpg| 104 mH coil&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Important: When using this amplifier, capacitor C3 should be bypassed (will give a VCC/2 offset required for Arduino) and the coil will be connected to &amp;quot;IN&amp;quot; and &amp;quot;GND&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
'''NOTE''': It's recommended to directly mount the coil on the amplifier module. This ensures the 'small signal' of the coil is not distorted by other components (motors etc.)&lt;br /&gt;
&lt;br /&gt;
=== Funktionstest ===&lt;br /&gt;
# Make sure that the sender works correctly (see further above).&lt;br /&gt;
# Increase the Arduino Sound Sensor potentiometer to maximum (rotate counter-clock-wise).&lt;br /&gt;
# After uploading the code, move one coil towards the perimeter wire. The Arduino LED should start to blink. Now, hold both coils at same distance over the perimeter wire. The Arduino LED should be always ON now.&lt;br /&gt;
# If that doesn't work, open the serial console (19200 baud), and verify the signal values.&lt;br /&gt;
&lt;br /&gt;
=== Spulenauswahl ===&lt;br /&gt;
Induction math, only approximation:&lt;br /&gt;
&lt;br /&gt;
 L = 1nH x n² x ((D² / mm² ) / (l / mm))&lt;br /&gt;
 l = coil length&lt;br /&gt;
 D = coil diameter&lt;br /&gt;
&lt;br /&gt;
Example: An inductance of 85 mH, and diamter of 10 mm, and length of 40 mm require about  5830 windings.&lt;br /&gt;
&lt;br /&gt;
This inductance of 85 mH and a capacity of 4.7 nF results in a resonation frequency of 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ä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: 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 sit 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>Pemiso</name></author>	</entry>

	<entry>
		<id>https://wiki.ardumower.de/index.php?title=Perimeter-Schleife&amp;diff=2436</id>
		<title>Perimeter-Schleife</title>
		<link rel="alternate" type="text/html" href="https://wiki.ardumower.de/index.php?title=Perimeter-Schleife&amp;diff=2436"/>
				<updated>2015-07-10T23:04:36Z</updated>
		
		<summary type="html">&lt;p&gt;Pemiso: /* Signal */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Zusammenfassung=&lt;br /&gt;
Eine Perimeter-Schleife (oder Begrenzungsdraht) ist eine Art 'elektronischer Zaun': er veranlaßt den ArduMower zum Stoppen / Umkehren sobald die Grenze erreicht ist. Nicht in jeder Umgebung ist eine Perimeter-Schleife notwendig - Rasensensoren könnten eine Alternative sein.&lt;br /&gt;
&lt;br /&gt;
Das Prinzip: im Garten wird ein Schleifendraht verlegt, durch den ein Signal gesendet und vom Ardumower ausgewertet wird. 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;
=Perimeter-Schleife 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 Perimeter-Schleife (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 Perimeter-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 Spule 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 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 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 hat eine spezielle Charakteristik: &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;
=== 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 Kondensator 4.7nF 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 verkompliziert, wird das nicht-differentielle Signal nicht empfohlen!&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 (Spulenhintergrundrauschen 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. After uploading the code and connecting the perimeter wire, the Arduino LED should be ON. Now remove the perimeter wire -  the Arduino LED should go OFF.&lt;br /&gt;
2. If that doesn't work: Using a voltmeter, measure once at Arduino pin D9 and once at motor driver output pin (OUT_1) against ground - both should have a DC voltage of 2.5 Volt.&lt;br /&gt;
3. If you have an oscilloscope, replace the perimeter wire by the oscilloscope. The measured signal look like below:&lt;br /&gt;
&lt;br /&gt;
The output signal shows a higher amplitude (high spikes) as the input signal:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Perimetersignal.jpg|signal on the sender output &lt;br /&gt;
File: Ardumower_perimeter_sender_schematics.png|resonator circuit basic principle&lt;br /&gt;
File: Arduino_perimeter_sender_photo.jpg&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For a simple receiver test, you can simply connect the receiver coil to an oscilloscope. The measured oscilloscope signal should look like below:&lt;br /&gt;
&lt;br /&gt;
This signal can be detected easily with a coil:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Coilsignal.jpg|coil signal at receiver coil&lt;br /&gt;
File: Fft.jpg|signal in frequency spectrum, superposed by motor noise&lt;br /&gt;
File: Ardumower_perimeter_spectrum_plot.jpg| frequency spectrum via pfodApp&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Empfänger ==&lt;br /&gt;
The receiver uses 2 coils mounted left and right in the robot. The signal strenght of left and right coils is evaluated to be able to compare them.&lt;br /&gt;
&lt;br /&gt;
Principle:&lt;br /&gt;
# Amplification of alternating signal using OPAMP&lt;br /&gt;
# Optional: Bandpass-filtering to filter-out noise caused by motors etc.&lt;br /&gt;
# Evaluation of signal strength of left and right coil&lt;br /&gt;
&lt;br /&gt;
Advantage of this version: analog controlling works great.&lt;br /&gt;
Disadvantage: You cannot detect, where you are (inside/outside) if your missed the perimter crossing. Also, you cannot detect if you drive clockwise or anti-clockwise on the perimeter wire.&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;
A coil receives the sender's signal. A resonator circuit (LC) amplifies the received signal at resonation frequency (7.8 kHz). Then the signal is amplified using an LM386 (here: Arduino sound sensor using coil instead of microphone). A bandpass-filter  (digital filter, FFT) on the Arduino filters the desired frequency (7.8 Khz) and outputs a PWM signal (pulse width is proportional to signal strength). A lowpass-filter converts it to a DC voltage.&lt;br /&gt;
Note: Wiring between Nano and Mega has been simplified - see schematics for exact wiring.&lt;br /&gt;
&lt;br /&gt;
We have tested the following combinations of amplifier und coils:&lt;br /&gt;
&lt;br /&gt;
'Arduino sound sensor'&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Soundsensor.jpg| Amplifying signal using LM386 - Arduino Sound Sensor using coil instead microphone&lt;br /&gt;
File: YwRobot_Sensor.jpg |Arduino Sound Sensor using LM386&lt;br /&gt;
File: YwRobot_circuit.png |Arduino Sound Sensor module schematics&lt;br /&gt;
File: Coil_85mh.jpg|85 mH coils&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
LM386 amplifier&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Lm386_amplifier.jpg| LM386 amplifier (200x amplification)&lt;br /&gt;
File: Lm386_modified.jpg| LM386 amplifier modified&lt;br /&gt;
File: Ardumower_lm386_circuit.png | LM386 module schematics&lt;br /&gt;
File: Coil_small.jpg| 104 mH coil&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Important: When using this amplifier, capacitor C3 should be bypassed (will give a VCC/2 offset required for Arduino) and the coil will be connected to &amp;quot;IN&amp;quot; and &amp;quot;GND&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
'''NOTE''': It's recommended to directly mount the coil on the amplifier module. This ensures the 'small signal' of the coil is not distorted by other components (motors etc.)&lt;br /&gt;
&lt;br /&gt;
=== Funktionstest ===&lt;br /&gt;
# Make sure that the sender works correctly (see further above).&lt;br /&gt;
# Increase the Arduino Sound Sensor potentiometer to maximum (rotate counter-clock-wise).&lt;br /&gt;
# After uploading the code, move one coil towards the perimeter wire. The Arduino LED should start to blink. Now, hold both coils at same distance over the perimeter wire. The Arduino LED should be always ON now.&lt;br /&gt;
# If that doesn't work, open the serial console (19200 baud), and verify the signal values.&lt;br /&gt;
&lt;br /&gt;
=== Spulenauswahl ===&lt;br /&gt;
Induction math, only approximation:&lt;br /&gt;
&lt;br /&gt;
 L = 1nH x n² x ((D² / mm² ) / (l / mm))&lt;br /&gt;
 l = coil length&lt;br /&gt;
 D = coil diameter&lt;br /&gt;
&lt;br /&gt;
Example: An inductance of 85 mH, and diamter of 10 mm, and length of 40 mm require about  5830 windings.&lt;br /&gt;
&lt;br /&gt;
This inductance of 85 mH and a capacity of 4.7 nF results in a resonation frequency of 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ä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: 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 sit 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>Pemiso</name></author>	</entry>

	<entry>
		<id>https://wiki.ardumower.de/index.php?title=Perimeter-Schleife&amp;diff=2435</id>
		<title>Perimeter-Schleife</title>
		<link rel="alternate" type="text/html" href="https://wiki.ardumower.de/index.php?title=Perimeter-Schleife&amp;diff=2435"/>
				<updated>2015-07-10T22:58:46Z</updated>
		
		<summary type="html">&lt;p&gt;Pemiso: /* Perimeter-Schleife V2 (erforderlich für aktuellen ArduMower Code) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Zusammenfassung=&lt;br /&gt;
Eine Perimeter-Schleife (oder Begrenzungsdraht) ist eine Art 'elektronischer Zaun': er veranlaßt den ArduMower zum Stoppen / Umkehren sobald die Grenze erreicht ist. Nicht in jeder Umgebung ist eine Perimeter-Schleife notwendig - Rasensensoren könnten eine Alternative sein.&lt;br /&gt;
&lt;br /&gt;
Das Prinzip: im Garten wird ein Schleifendraht verlegt, durch den ein Signal gesendet und vom Ardumower ausgewertet wird. 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;
=Perimeter-Schleife 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 Perimeter-Schleife (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 Perimeter-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 Spule 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 Kondensatorin Serienschaltung zu Spule) zeigt sich das 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 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 sampelt das Empfangssignal mit 9615 Hz.&lt;br /&gt;
&lt;br /&gt;
== Filter ==&lt;br /&gt;
Die gewählte Signalform hat eine spezielle Charakteristik: &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;
=== 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 Kondensator 4.7nF 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 verkompliziert, wird das nicht-differentielle Signal nicht empfohlen!&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 (Spulenhintergrundrauschen 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. After uploading the code and connecting the perimeter wire, the Arduino LED should be ON. Now remove the perimeter wire -  the Arduino LED should go OFF.&lt;br /&gt;
2. If that doesn't work: Using a voltmeter, measure once at Arduino pin D9 and once at motor driver output pin (OUT_1) against ground - both should have a DC voltage of 2.5 Volt.&lt;br /&gt;
3. If you have an oscilloscope, replace the perimeter wire by the oscilloscope. The measured signal look like below:&lt;br /&gt;
&lt;br /&gt;
The output signal shows a higher amplitude (high spikes) as the input signal:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Perimetersignal.jpg|signal on the sender output &lt;br /&gt;
File: Ardumower_perimeter_sender_schematics.png|resonator circuit basic principle&lt;br /&gt;
File: Arduino_perimeter_sender_photo.jpg&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For a simple receiver test, you can simply connect the receiver coil to an oscilloscope. The measured oscilloscope signal should look like below:&lt;br /&gt;
&lt;br /&gt;
This signal can be detected easily with a coil:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Coilsignal.jpg|coil signal at receiver coil&lt;br /&gt;
File: Fft.jpg|signal in frequency spectrum, superposed by motor noise&lt;br /&gt;
File: Ardumower_perimeter_spectrum_plot.jpg| frequency spectrum via pfodApp&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Empfänger ==&lt;br /&gt;
The receiver uses 2 coils mounted left and right in the robot. The signal strenght of left and right coils is evaluated to be able to compare them.&lt;br /&gt;
&lt;br /&gt;
Principle:&lt;br /&gt;
# Amplification of alternating signal using OPAMP&lt;br /&gt;
# Optional: Bandpass-filtering to filter-out noise caused by motors etc.&lt;br /&gt;
# Evaluation of signal strength of left and right coil&lt;br /&gt;
&lt;br /&gt;
Advantage of this version: analog controlling works great.&lt;br /&gt;
Disadvantage: You cannot detect, where you are (inside/outside) if your missed the perimter crossing. Also, you cannot detect if you drive clockwise or anti-clockwise on the perimeter wire.&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;
A coil receives the sender's signal. A resonator circuit (LC) amplifies the received signal at resonation frequency (7.8 kHz). Then the signal is amplified using an LM386 (here: Arduino sound sensor using coil instead of microphone). A bandpass-filter  (digital filter, FFT) on the Arduino filters the desired frequency (7.8 Khz) and outputs a PWM signal (pulse width is proportional to signal strength). A lowpass-filter converts it to a DC voltage.&lt;br /&gt;
Note: Wiring between Nano and Mega has been simplified - see schematics for exact wiring.&lt;br /&gt;
&lt;br /&gt;
We have tested the following combinations of amplifier und coils:&lt;br /&gt;
&lt;br /&gt;
'Arduino sound sensor'&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Soundsensor.jpg| Amplifying signal using LM386 - Arduino Sound Sensor using coil instead microphone&lt;br /&gt;
File: YwRobot_Sensor.jpg |Arduino Sound Sensor using LM386&lt;br /&gt;
File: YwRobot_circuit.png |Arduino Sound Sensor module schematics&lt;br /&gt;
File: Coil_85mh.jpg|85 mH coils&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
LM386 amplifier&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Lm386_amplifier.jpg| LM386 amplifier (200x amplification)&lt;br /&gt;
File: Lm386_modified.jpg| LM386 amplifier modified&lt;br /&gt;
File: Ardumower_lm386_circuit.png | LM386 module schematics&lt;br /&gt;
File: Coil_small.jpg| 104 mH coil&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Important: When using this amplifier, capacitor C3 should be bypassed (will give a VCC/2 offset required for Arduino) and the coil will be connected to &amp;quot;IN&amp;quot; and &amp;quot;GND&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
'''NOTE''': It's recommended to directly mount the coil on the amplifier module. This ensures the 'small signal' of the coil is not distorted by other components (motors etc.)&lt;br /&gt;
&lt;br /&gt;
=== Funktionstest ===&lt;br /&gt;
# Make sure that the sender works correctly (see further above).&lt;br /&gt;
# Increase the Arduino Sound Sensor potentiometer to maximum (rotate counter-clock-wise).&lt;br /&gt;
# After uploading the code, move one coil towards the perimeter wire. The Arduino LED should start to blink. Now, hold both coils at same distance over the perimeter wire. The Arduino LED should be always ON now.&lt;br /&gt;
# If that doesn't work, open the serial console (19200 baud), and verify the signal values.&lt;br /&gt;
&lt;br /&gt;
=== Spulenauswahl ===&lt;br /&gt;
Induction math, only approximation:&lt;br /&gt;
&lt;br /&gt;
 L = 1nH x n² x ((D² / mm² ) / (l / mm))&lt;br /&gt;
 l = coil length&lt;br /&gt;
 D = coil diameter&lt;br /&gt;
&lt;br /&gt;
Example: An inductance of 85 mH, and diamter of 10 mm, and length of 40 mm require about  5830 windings.&lt;br /&gt;
&lt;br /&gt;
This inductance of 85 mH and a capacity of 4.7 nF results in a resonation frequency of 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ä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: 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 sit 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>Pemiso</name></author>	</entry>

	<entry>
		<id>https://wiki.ardumower.de/index.php?title=Perimeter-Schleife&amp;diff=2434</id>
		<title>Perimeter-Schleife</title>
		<link rel="alternate" type="text/html" href="https://wiki.ardumower.de/index.php?title=Perimeter-Schleife&amp;diff=2434"/>
				<updated>2015-07-10T22:56:19Z</updated>
		
		<summary type="html">&lt;p&gt;Pemiso: /* Perimeter-Schleife V2 (erforderlich für aktuellen ArduMower Code) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Zusammenfassung=&lt;br /&gt;
Eine Perimeter-Schleife (oder Begrenzungsdraht) ist eine Art 'elektronischer Zaun': er veranlaßt den ArduMower zum Stoppen / Umkehren sobald die Grenze erreicht ist. Nicht in jeder Umgebung ist eine Perimeter-Schleife notwendig - Rasensensoren könnten eine Alternative sein.&lt;br /&gt;
&lt;br /&gt;
Das Prinzip: im Garten wird ein Schleifendraht verlegt, durch den ein Signal gesendet und vom Ardumower ausgewertet wird. 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;
=Perimeter-Schleife 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 Perimeter-Schleife (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 Perimeter-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) 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: 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 Spule 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 Kondensatorin Serienschaltung zu Spule) zeigt sich das 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 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 sampelt das Empfangssignal mit 9615 Hz.&lt;br /&gt;
&lt;br /&gt;
== Filter ==&lt;br /&gt;
Die gewählte Signalform hat eine spezielle Charakteristik: &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;
=== 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 Kondensator 4.7nF 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 verkompliziert, wird das nicht-differentielle Signal nicht empfohlen!&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 (Spulenhintergrundrauschen 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. After uploading the code and connecting the perimeter wire, the Arduino LED should be ON. Now remove the perimeter wire -  the Arduino LED should go OFF.&lt;br /&gt;
2. If that doesn't work: Using a voltmeter, measure once at Arduino pin D9 and once at motor driver output pin (OUT_1) against ground - both should have a DC voltage of 2.5 Volt.&lt;br /&gt;
3. If you have an oscilloscope, replace the perimeter wire by the oscilloscope. The measured signal look like below:&lt;br /&gt;
&lt;br /&gt;
The output signal shows a higher amplitude (high spikes) as the input signal:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Perimetersignal.jpg|signal on the sender output &lt;br /&gt;
File: Ardumower_perimeter_sender_schematics.png|resonator circuit basic principle&lt;br /&gt;
File: Arduino_perimeter_sender_photo.jpg&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For a simple receiver test, you can simply connect the receiver coil to an oscilloscope. The measured oscilloscope signal should look like below:&lt;br /&gt;
&lt;br /&gt;
This signal can be detected easily with a coil:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Coilsignal.jpg|coil signal at receiver coil&lt;br /&gt;
File: Fft.jpg|signal in frequency spectrum, superposed by motor noise&lt;br /&gt;
File: Ardumower_perimeter_spectrum_plot.jpg| frequency spectrum via pfodApp&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Empfänger ==&lt;br /&gt;
The receiver uses 2 coils mounted left and right in the robot. The signal strenght of left and right coils is evaluated to be able to compare them.&lt;br /&gt;
&lt;br /&gt;
Principle:&lt;br /&gt;
# Amplification of alternating signal using OPAMP&lt;br /&gt;
# Optional: Bandpass-filtering to filter-out noise caused by motors etc.&lt;br /&gt;
# Evaluation of signal strength of left and right coil&lt;br /&gt;
&lt;br /&gt;
Advantage of this version: analog controlling works great.&lt;br /&gt;
Disadvantage: You cannot detect, where you are (inside/outside) if your missed the perimter crossing. Also, you cannot detect if you drive clockwise or anti-clockwise on the perimeter wire.&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;
A coil receives the sender's signal. A resonator circuit (LC) amplifies the received signal at resonation frequency (7.8 kHz). Then the signal is amplified using an LM386 (here: Arduino sound sensor using coil instead of microphone). A bandpass-filter  (digital filter, FFT) on the Arduino filters the desired frequency (7.8 Khz) and outputs a PWM signal (pulse width is proportional to signal strength). A lowpass-filter converts it to a DC voltage.&lt;br /&gt;
Note: Wiring between Nano and Mega has been simplified - see schematics for exact wiring.&lt;br /&gt;
&lt;br /&gt;
We have tested the following combinations of amplifier und coils:&lt;br /&gt;
&lt;br /&gt;
'Arduino sound sensor'&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Soundsensor.jpg| Amplifying signal using LM386 - Arduino Sound Sensor using coil instead microphone&lt;br /&gt;
File: YwRobot_Sensor.jpg |Arduino Sound Sensor using LM386&lt;br /&gt;
File: YwRobot_circuit.png |Arduino Sound Sensor module schematics&lt;br /&gt;
File: Coil_85mh.jpg|85 mH coils&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
LM386 amplifier&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Lm386_amplifier.jpg| LM386 amplifier (200x amplification)&lt;br /&gt;
File: Lm386_modified.jpg| LM386 amplifier modified&lt;br /&gt;
File: Ardumower_lm386_circuit.png | LM386 module schematics&lt;br /&gt;
File: Coil_small.jpg| 104 mH coil&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Important: When using this amplifier, capacitor C3 should be bypassed (will give a VCC/2 offset required for Arduino) and the coil will be connected to &amp;quot;IN&amp;quot; and &amp;quot;GND&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
'''NOTE''': It's recommended to directly mount the coil on the amplifier module. This ensures the 'small signal' of the coil is not distorted by other components (motors etc.)&lt;br /&gt;
&lt;br /&gt;
=== Funktionstest ===&lt;br /&gt;
# Make sure that the sender works correctly (see further above).&lt;br /&gt;
# Increase the Arduino Sound Sensor potentiometer to maximum (rotate counter-clock-wise).&lt;br /&gt;
# After uploading the code, move one coil towards the perimeter wire. The Arduino LED should start to blink. Now, hold both coils at same distance over the perimeter wire. The Arduino LED should be always ON now.&lt;br /&gt;
# If that doesn't work, open the serial console (19200 baud), and verify the signal values.&lt;br /&gt;
&lt;br /&gt;
=== Spulenauswahl ===&lt;br /&gt;
Induction math, only approximation:&lt;br /&gt;
&lt;br /&gt;
 L = 1nH x n² x ((D² / mm² ) / (l / mm))&lt;br /&gt;
 l = coil length&lt;br /&gt;
 D = coil diameter&lt;br /&gt;
&lt;br /&gt;
Example: An inductance of 85 mH, and diamter of 10 mm, and length of 40 mm require about  5830 windings.&lt;br /&gt;
&lt;br /&gt;
This inductance of 85 mH and a capacity of 4.7 nF results in a resonation frequency of 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ä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: 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 sit 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>Pemiso</name></author>	</entry>

	<entry>
		<id>https://wiki.ardumower.de/index.php?title=Perimeter-Schleife&amp;diff=2413</id>
		<title>Perimeter-Schleife</title>
		<link rel="alternate" type="text/html" href="https://wiki.ardumower.de/index.php?title=Perimeter-Schleife&amp;diff=2413"/>
				<updated>2015-07-08T22:20:08Z</updated>
		
		<summary type="html">&lt;p&gt;Pemiso: /* Perimeter V1 (für alten Code V0.9.3, nicht mehr empfohlen) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Zusammenfassung=&lt;br /&gt;
Eine Perimeter-Schleife (oder Begrenzungsdraht) ist eine Art 'elektronischer Zaun': er veranlaßt den ArduMower zum Stoppen / Umkehren sobald die Grenze erreicht ist. Nicht in jeder Umgebung ist eine Perimeter-Schleife notwendig - Rasensensoren könnten eine Alternative sein.&lt;br /&gt;
&lt;br /&gt;
Das Prinzip: im Garten wird ein Schleifendraht verlegt, durch den ein Signal gesendet und vom Ardumower ausgewertet wird. 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;
=Perimeter-Schleife 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 Perimeter-Schleife (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 Perimeter-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) 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: 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 Spule 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 Kondensatorin Serienschaltung zu Spule) zeigt sich das 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 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 sampelt das Empfangssignal mit 9615 Hz.&lt;br /&gt;
&lt;br /&gt;
== Filter ==&lt;br /&gt;
Die gewählte Signalform hat eine spezielle Charakteristik: &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;
=== 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 Kondensator 4.7nF 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 verkompliziert, wird das nicht-differentielle Signal nicht empfohlen!&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 (Spulenhintergrundrauschen 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. After uploading the code and connecting the perimeter wire, the Arduino LED should be ON. Now remove the perimeter wire -  the Arduino LED should go OFF.&lt;br /&gt;
2. If that doesn't work: Using a voltmeter, measure once at Arduino pin D9 and once at motor driver output pin (OUT_1) against ground - both should have a DC voltage of 2.5 Volt.&lt;br /&gt;
3. If you have an oscilloscope, replace the perimeter wire by the oscilloscope. The measured signal look like below:&lt;br /&gt;
&lt;br /&gt;
The output signal shows a higher amplitude (high spikes) as the input signal:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Perimetersignal.jpg|signal on the sender output &lt;br /&gt;
File: Ardumower_perimeter_sender_schematics.png|resonator circuit basic principle&lt;br /&gt;
File: Arduino_perimeter_sender_photo.jpg&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For a simple receiver test, you can simply connect the receiver coil to an oscilloscope. The measured oscilloscope signal should look like below:&lt;br /&gt;
&lt;br /&gt;
This signal can be detected easily with a coil:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Coilsignal.jpg|coil signal at receiver coil&lt;br /&gt;
File: Fft.jpg|signal in frequency spectrum, superposed by motor noise&lt;br /&gt;
File: Ardumower_perimeter_spectrum_plot.jpg| frequency spectrum via pfodApp&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Empfänger ==&lt;br /&gt;
The receiver uses 2 coils mounted left and right in the robot. The signal strenght of left and right coils is evaluated to be able to compare them.&lt;br /&gt;
&lt;br /&gt;
Principle:&lt;br /&gt;
# Amplification of alternating signal using OPAMP&lt;br /&gt;
# Optional: Bandpass-filtering to filter-out noise caused by motors etc.&lt;br /&gt;
# Evaluation of signal strength of left and right coil&lt;br /&gt;
&lt;br /&gt;
Advantage of this version: analog controlling works great.&lt;br /&gt;
Disadvantage: You cannot detect, where you are (inside/outside) if your missed the perimter crossing. Also, you cannot detect if you drive clockwise or anti-clockwise on the perimeter wire.&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;
A coil receives the sender's signal. A resonator circuit (LC) amplifies the received signal at resonation frequency (7.8 kHz). Then the signal is amplified using an LM386 (here: Arduino sound sensor using coil instead of microphone). A bandpass-filter  (digital filter, FFT) on the Arduino filters the desired frequency (7.8 Khz) and outputs a PWM signal (pulse width is proportional to signal strength). A lowpass-filter converts it to a DC voltage.&lt;br /&gt;
Note: Wiring between Nano and Mega has been simplified - see schematics for exact wiring.&lt;br /&gt;
&lt;br /&gt;
We have tested the following combinations of amplifier und coils:&lt;br /&gt;
&lt;br /&gt;
'Arduino sound sensor'&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Soundsensor.jpg| Amplifying signal using LM386 - Arduino Sound Sensor using coil instead microphone&lt;br /&gt;
File: YwRobot_Sensor.jpg |Arduino Sound Sensor using LM386&lt;br /&gt;
File: YwRobot_circuit.png |Arduino Sound Sensor module schematics&lt;br /&gt;
File: Coil_85mh.jpg|85 mH coils&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
LM386 amplifier&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Lm386_amplifier.jpg| LM386 amplifier (200x amplification)&lt;br /&gt;
File: Lm386_modified.jpg| LM386 amplifier modified&lt;br /&gt;
File: Ardumower_lm386_circuit.png | LM386 module schematics&lt;br /&gt;
File: Coil_small.jpg| 104 mH coil&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Important: When using this amplifier, capacitor C3 should be bypassed (will give a VCC/2 offset required for Arduino) and the coil will be connected to &amp;quot;IN&amp;quot; and &amp;quot;GND&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
'''NOTE''': It's recommended to directly mount the coil on the amplifier module. This ensures the 'small signal' of the coil is not distorted by other components (motors etc.)&lt;br /&gt;
&lt;br /&gt;
=== Funktionstest ===&lt;br /&gt;
# Make sure that the sender works correctly (see further above).&lt;br /&gt;
# Increase the Arduino Sound Sensor potentiometer to maximum (rotate counter-clock-wise).&lt;br /&gt;
# After uploading the code, move one coil towards the perimeter wire. The Arduino LED should start to blink. Now, hold both coils at same distance over the perimeter wire. The Arduino LED should be always ON now.&lt;br /&gt;
# If that doesn't work, open the serial console (19200 baud), and verify the signal values.&lt;br /&gt;
&lt;br /&gt;
=== Spulenauswahl ===&lt;br /&gt;
Induction math, only approximation:&lt;br /&gt;
&lt;br /&gt;
 L = 1nH x n² x ((D² / mm² ) / (l / mm))&lt;br /&gt;
 l = coil length&lt;br /&gt;
 D = coil diameter&lt;br /&gt;
&lt;br /&gt;
Example: An inductance of 85 mH, and diamter of 10 mm, and length of 40 mm require about  5830 windings.&lt;br /&gt;
&lt;br /&gt;
This inductance of 85 mH and a capacity of 4.7 nF results in a resonation frequency of 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ä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: 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 sit 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>Pemiso</name></author>	</entry>

	<entry>
		<id>https://wiki.ardumower.de/index.php?title=Perimeter-Schleife&amp;diff=2412</id>
		<title>Perimeter-Schleife</title>
		<link rel="alternate" type="text/html" href="https://wiki.ardumower.de/index.php?title=Perimeter-Schleife&amp;diff=2412"/>
				<updated>2015-07-08T21:45:53Z</updated>
		
		<summary type="html">&lt;p&gt;Pemiso: /* Problemanalyse und Fehlerbehebung am Empfänger */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Zusammenfassung=&lt;br /&gt;
Eine Perimeter-Schleife (oder Begrenzungsdraht) ist eine Art 'elektronischer Zaun': er veranlaßt den ArduMower zum Stoppen / Umkehren sobald die Grenze erreicht ist. Nicht in jeder Umgebung ist eine Perimeter-Schleife notwendig - Rasensensoren könnten eine Alternative sein.&lt;br /&gt;
&lt;br /&gt;
Das Prinzip: im Garten wird ein Schleifendraht verlegt, durch den ein Signal gesendet und vom Ardumower ausgewertet wird. 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;
=Perimeter-Schleife 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 Perimeter-Schleife (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 Perimeter-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) 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: 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 Spule 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 Kondensatorin Serienschaltung zu Spule) zeigt sich das 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 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 sampelt das Empfangssignal mit 9615 Hz.&lt;br /&gt;
&lt;br /&gt;
== Filter ==&lt;br /&gt;
Die gewählte Signalform hat eine spezielle Charakteristik: &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;
=== 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 Kondensator 4.7nF 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 verkompliziert, wird das nicht-differentielle Signal nicht empfohlen!&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 (Spulenhintergrundrauschen 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;
This was the first version of our perimeter sender and receiver. It has some drawbacks (orientation issues, no sender-off detection, no inside/outside state detection), so it's not recommended to build it anymore. Use the second version (v2) of our perimeter sender and receiver further below.&lt;br /&gt;
&lt;br /&gt;
== Sender ==&lt;br /&gt;
You can use the sender of a commercial lawn robot (the sender shown here is compatible with Tianchen or Rotenbach robot mowers), or you build one yourself.&lt;br /&gt;
&lt;br /&gt;
So, here's the sender:&lt;br /&gt;
&lt;br /&gt;
An Arduino (e.g. Nano) generates a square signal that is used to switch the direction of a motor driver (L298N) at 7.8 Khz. Thereby, the motor driver will switch the output between VCC and GND. A resonator circuit amplifies the signal spikes as it's dimensioned so that its resonation frequency is the same as the switching frequency (7.8 Khz). That way, the motor drive only needs to be operated at 5V (instead of 12V). The power supply should be able to supply 2W (400mA at 5V). One part of the signal is captured by the Arduino (ADC) through a diode and a voltage divider. This allows to detect if the perimeter loop is connected or not. A 150 mA current will flow through in the perimeter wire (wire cross section 2-3 mm^2) - the wire should not be longer than 500m.&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;
Because it's sometimes difficult to find a specific coil, here are possible combinations (coil / capacitor) you can use (all will have a resonation frequency of 7.8 Khz):&lt;br /&gt;
*Combination 1: Coil: 160µH, Capacitor: 3,3µF/50V  (tested)&lt;br /&gt;
*Combination 2: Coil 33mH, Capacitor: 12nF (not tested)&lt;br /&gt;
&lt;br /&gt;
==== Stromversorgung ====&lt;br /&gt;
It is recommended to use a voltage step-down converter (e.g. module using LM2596) to generate the 5V voltage. Before connecting, set the voltage of the converter to 5V. &lt;br /&gt;
&lt;br /&gt;
'''Warning''' : never connect more than 5V on the Arduino 5V pins, or you will damage the Arduino. Therefore, always measure the 5V voltage before connecting it to the Arduino 5V pin!&lt;br /&gt;
&lt;br /&gt;
==== Funktionstest ====&lt;br /&gt;
1. After uploading the code and connecting the perimeter wire, the Arduino LED should be ON. Now remove the perimeter wire -  the Arduino LED should go OFF.&lt;br /&gt;
2. If that doesn't work: Using a voltmeter, measure once at Arduino pin D9 and once at motor driver output pin (OUT_1) against ground - both should have a DC voltage of 2.5 Volt.&lt;br /&gt;
3. If you have an oscilloscope, replace the perimeter wire by the oscilloscope. The measured signal look like below:&lt;br /&gt;
&lt;br /&gt;
The output signal shows a higher amplitude (high spikes) as the input signal:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Perimetersignal.jpg|signal on the sender output &lt;br /&gt;
File: Ardumower_perimeter_sender_schematics.png|resonator circuit basic principle&lt;br /&gt;
File: Arduino_perimeter_sender_photo.jpg&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For a simple receiver test, you can simply connect the receiver coil to an oscilloscope. The measured oscilloscope signal should look like below:&lt;br /&gt;
&lt;br /&gt;
This signal can be detected easily with a coil:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Coilsignal.jpg|coil signal at receiver coil&lt;br /&gt;
File: Fft.jpg|signal in frequency spectrum, superposed by motor noise&lt;br /&gt;
File: Ardumower_perimeter_spectrum_plot.jpg| frequency spectrum via pfodApp&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Empfänger ==&lt;br /&gt;
The receiver uses 2 coils mounted left and right in the robot. The signal strenght of left and right coils is evaluated to be able to compare them.&lt;br /&gt;
&lt;br /&gt;
Principle:&lt;br /&gt;
# Amplification of alternating signal using OPAMP&lt;br /&gt;
# Optional: Bandpass-filtering to filter-out noise caused by motors etc.&lt;br /&gt;
# Evaluation of signal strength of left and right coil&lt;br /&gt;
&lt;br /&gt;
Advantage of this version: analog controlling works great.&lt;br /&gt;
Disadvantage: You cannot detect, where you are (inside/outside) if your missed the perimter crossing. Also, you cannot detect if you drive clockwise or anti-clockwise on the perimeter wire.&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;
A coil receives the sender's signal. A resonator circuit (LC) amplifies the received signal at resonation frequency (7.8 kHz). Then the signal is amplified using an LM386 (here: Arduino sound sensor using coil instead of microphone). A bandpass-filter  (digital filter, FFT) on the Arduino filters the desired frequency (7.8 Khz) and outputs a PWM signal (pulse width is proportional to signal strength). A lowpass-filter converts it to a DC voltage.&lt;br /&gt;
Note: Wiring between Nano and Mega has been simplified - see schematics for exact wiring.&lt;br /&gt;
&lt;br /&gt;
We have tested the following combinations of amplifier und coils:&lt;br /&gt;
&lt;br /&gt;
'Arduino sound sensor'&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Soundsensor.jpg| Amplifying signal using LM386 - Arduino Sound Sensor using coil instead microphone&lt;br /&gt;
File: YwRobot_Sensor.jpg |Arduino Sound Sensor using LM386&lt;br /&gt;
File: YwRobot_circuit.png |Arduino Sound Sensor module schematics&lt;br /&gt;
File: Coil_85mh.jpg|85 mH coils&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
LM386 amplifier&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File: Lm386_amplifier.jpg| LM386 amplifier (200x amplification)&lt;br /&gt;
File: Lm386_modified.jpg| LM386 amplifier modified&lt;br /&gt;
File: Ardumower_lm386_circuit.png | LM386 module schematics&lt;br /&gt;
File: Coil_small.jpg| 104 mH coil&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Important: When using this amplifier, capacitor C3 should be bypassed (will give a VCC/2 offset required for Arduino) and the coil will be connected to &amp;quot;IN&amp;quot; and &amp;quot;GND&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
'''NOTE''': It's recommended to directly mount the coil on the amplifier module. This ensures the 'small signal' of the coil is not distorted by other components (motors etc.)&lt;br /&gt;
&lt;br /&gt;
=== Funktionstest ===&lt;br /&gt;
# Make sure that the sender works correctly (see further above).&lt;br /&gt;
# Increase the Arduino Sound Sensor potentiometer to maximum (rotate counter-clock-wise).&lt;br /&gt;
# After uploading the code, move one coil towards the perimeter wire. The Arduino LED should start to blink. Now, hold both coils at same distance over the perimeter wire. The Arduino LED should be always ON now.&lt;br /&gt;
# If that doesn't work, open the serial console (19200 baud), and verify the signal values.&lt;br /&gt;
&lt;br /&gt;
=== Spulenauswahl ===&lt;br /&gt;
Induction math, only approximation:&lt;br /&gt;
&lt;br /&gt;
 L = 1nH x n² x ((D² / mm² ) / (l / mm))&lt;br /&gt;
 l = coil length&lt;br /&gt;
 D = coil diameter&lt;br /&gt;
&lt;br /&gt;
Example: An inductance of 85 mH, and diamter of 10 mm, and length of 40 mm require about  5830 windings.&lt;br /&gt;
&lt;br /&gt;
This inductance of 85 mH and a capacity of 4.7 nF results in a resonation frequency of 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;
Because it's sometimes difficult to find a specific coil, here are possible combinations (coil / capacitor) you can use (all will have a resonation frequency of 7.8 Khz):&lt;br /&gt;
 Combination 1: Coil: 85mH, Capacitor: 4.7nF  (tested)&lt;br /&gt;
 Combination 2: Coil 104mH, Capacitor: 4nF (tested)&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 | Test Parcours&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 sit 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>Pemiso</name></author>	</entry>

	</feed>