heise online | · | c't | · | iX | · | Technology Review | · | Telepolis | · | mobil | · | Security | · | Netze | · | heise open | · | heise resale | · | Autos | · | c't-TV | · | Jobs | · | Kiosk

Aktuelles Heft #### Support Hotline & FAQ Tipps & Tricks Treiber & BIOS Firmenkontakte #### Download Software zu c't Software-Verzeichnis c't-Projekte Testbilder & Vorlagen #### Service Tipp-Datenbank c't-CD-Register Internettarife Telefontarife Virenschutz #### Magazin Heftarchiv c't specials English Pages Benchmarks Red. Stuff Leserforum c't-Bildmotive URLs aus c't Schlagseite #### Aktionen Browsercheck Krypto-Kampagne Schulen ans Netz Netz gegen Kinderporno TV/Radio-Termine #### Info Abo & Heft Veranstaltungen Mediadaten Kontakt Impressum Kleinanzeigen und Veranstaltungen
| c't Projekte - c't-Bot und c't-Sim - Mailinglisten ## c't-Bot und c't-Sim [Voriger (Datum)] [Nächster (Datum)] [Voriger (Thread)] [Nächster (Thread)] [Nach Datum][Nach Thread] ### [ct-bot] Kalibrierung der Distanzsensren mittels EEPROM-Tabelle Absender: Achim Pankalla Datum: So, 06.05.2007 18:53:09 In-reply-to: <38A4BFD9-CA32-436A-9A1E-B4E6E0652A5D@xxxxxxxxxxxxxxx> References: <BCF016D5ED5AC34FBB655D109519ABCF083EBE@xxxxxxxxxxxxxxxxxxxx> <45ED3B46.4030400@xxxxxx> <45EF385C.3080609@xxxxxx> <A2ED0A68-A8F1-438A-B1E3-18033ED489E3@xxxxxxxxxxxxxxx> <45F135B9.5030203@xxxxxx> <45F13A91.6090904@xxxxxxxx> <D053B7F5-6BDD-4052-B45F-28FCF0EF45F8@xxxxxxxxxxxxxxx> <45F2B74F.8090706@xxxxxx> <38A4BFD9-CA32-436A-9A1E-B4E6E0652A5D@xxxxxxxxxxxxxxx>
    hallo,
    weil 60kb überschritten, die docu als extra-patch.

    gruss
     a. pankalla
    ### Eclipse Workspace Patch 1.0
    #P ct-Bot
    Index: Documentation/eeprom-simulation.html
    ===================================================================
    RCS file: Documentation/eeprom-simulation.html
    diff -N Documentation/eeprom-simulation.html
    --- /dev/null	1 Jan 1970 00:00:00 -0000
    +++ Documentation/eeprom-simulation.html	1 Jan 1970 00:00:00 -0000
    @@ -0,0 +1,146 @@
    +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
    +<HTML>
    +<HEAD>
    +	<META HTTP-EQUIV="CONTENT-TYPE" CONTENT="text/html; charset=windows-1252">
    +	<TITLE></TITLE>
    +	<META NAME="GENERATOR" CONTENT="OpenOffice.org 2.2  (Win32)">
    +	<META NAME="AUTHOR" CONTENT="Achim Pankalla">
    +	<META NAME="CREATED" CONTENT="20060528;19455600">
    +	<META NAME="CHANGEDBY" CONTENT="Achim Pankalla">
    +	<META NAME="CHANGED" CONTENT="20070505;21065990">
    +	<STYLE TYPE="text/css">
    +	<!--
    +		@page { size: 21cm 29.7cm; margin: 2cm }
    +		P { margin-bottom: 0.21cm }
    +	-->
    +	</STYLE>
    +</HEAD>
    +<BODY LANG="de-DE" DIR="LTR">
    +<P ALIGN=CENTER STYLE="margin-bottom: 0cm"><B>EEPROM Simulation f&uuml;r
    +PC</B></P>
    +<P STYLE="margin-bottom: 0cm"><BR>
    +</P>
    +<P STYLE="margin-bottom: 0cm"><FONT SIZE=3><B>Author: </B></FONT>
    +</P>
    +<P STYLE="margin-bottom: 0cm"><FONT SIZE=3>Achim Pankalla
    +(achim.pankalla@xxxxxx)</FONT></P>
    +<P STYLE="margin-bottom: 0cm"><BR>
    +</P>
    +<P STYLE="margin-bottom: 0cm"><B>Beschreibung:</B></P>
    +<P ALIGN=LEFT STYLE="margin-bottom: 0cm; font-style: normal">Die
    +EEPROM Simulation f&uuml;r den PC stellt das EEPROM des <I>Atmel
    +MEGA32 Prozessor</I> auch dem Simulierten ct-bot zur Verf&uuml;gung.
    +Der Zugriff auf dieses EEPROM erfolgt &uuml;ber gleichnamige
    +Funktionen, wie sie auch der avr-gcc besitzt und auch die
    +Variablendefinition erfolgt &uuml;ber die gleichen Konstrukte. Eine
    +Unterscheidung &uuml;ber #ifdef's ist also nicht notwendig.<BR>Durch
    +diese EEPROM-Simulation, ist der Simulator dem realen Bot ein schritt
    +n&auml;her gekommen und Programme mit EEPROM-Zugriffe k&ouml;nnen mit
    +der Simulation getestet werden.</P>
    +<P ALIGN=LEFT STYLE="margin-bottom: 0cm"><BR>
    +</P>
    +<P STYLE="margin-bottom: 0cm; font-style: normal"><B>Implementierung:</B></P>
    +<P STYLE="margin-bottom: 0cm">Alle Funktionen und Einstellungen der
    +EEPROM Simulation findet Sie in den Dateien <I>pc/eeprom-emu_pc.c</I>
    +und <I>include/eeprom-emu.h</I>. Das EEPROM selbst wird durch eine
    +Bin&auml;re Datei (genau 1K bzw. 2K gross) repr&auml;sentiert (und
    +kann so mit einen HexEditor bearbeitet werden), deren Pfad in der
    +C-Datei festgelegt wird. Standard Pfad ist das Heimatverzeichnis des
    +Ct-Sim. Nat&uuml;rlich k&ouml;nnen Sie das jederzeit &auml;ndern,
    +dies geht &uuml;ber die Konstante <FONT COLOR="#000000"><FONT FACE="Courier New, monospace"><FONT SIZE=2>EEPROM_FILENAME.
    +</FONT></FONT></FONT><FONT COLOR="#000000"><FONT FACE="Times New Roman, serif">B</FONT></FONT><FONT FACE="Times New Roman, serif">itte
    +beachten Sie aber das Verdoppeln des Backslash im Verzeichnispfad.
    +Der Name </FONT><FONT FACE="Times New Roman, serif"><I>eeprom.bin</I></FONT><FONT FACE="Times New Roman, serif">
    +sollte dabei belassen werden.</FONT><BR>Die Datei wird automatisch
    +neu angelegt, wenn sie noch nicht existiert. Dann besteht der Inhalt
    +nur aus 0xFF, wie es auch beim unintialisierten EEPROM des Atmel der
    +Fall ist.<BR>Damit die EEPROM-Funktionen des PC korrekt auf die Datei
    +zugreifen k&ouml;nnen und nur ein Adressraum von 0 bis 1023(2047)
    +entsteht, wie es auch beim avr-gcc verwalteten ist, gibt es die
    +externe Variable &bdquo;_eeprom_start__&ldquo;. Diese enth&auml;lt
    +die Startadresse der ersten Variable im Segment .eeprom und dieser
    +Wert wird dann von der &uuml;bergebenen Adresse subtrahiert. Damit es
    +diese Variable gibt, m&uuml;ssen Sie das Linkerscript
    +&bdquo;linker_script.lk&ldquo; an den Linker &uuml;bergeben. Dies
    +machen Sie mit den Parameter <I>-T</I> der Linkers. Tragen sie in
    +Eclipse dies unter Project-&gt;Properties-&gt;C/C++
    +Build-&gt;Linker-&gt;Miscellaneous-&gt;Linker flags &bdquo;-T
    +linker_script.lk&ldquo; ein. Die Datei muss dann nat&uuml;rlich im
    +Debug-W32/Linux Verzeichnis vorhanden sein.<BR>Wie auch beim MCU
    +Projekt wird nun auch beim Erstellen eines ct-sim bot die Datei
    +ct-bot.eep erstellt, die die Initialisierungswerte der EEPROM
    +Variablen enth&auml;lt. Daf&uuml;r muss unter
    +Project-&gt;Properties-&gt;C/C++ Build-&gt;Build Steps-&gt;Post Build
    +steps der Befehl eingetragen <I>objcopy -j .eeprom
    +--change-section-lma .eeprom=0 -O ihex ct-Bot.exe ct-Bot.eep</I>
    +sein. Dies m&uuml;ssen Sie nat&uuml;rlich nur in der Konfiguration
    +DEBUG-W32/Linux machen.</P>
    +<P STYLE="margin-bottom: 0cm"><BR>
    +</P>
    +<P STYLE="margin-bottom: 0cm; font-style: normal"><FONT COLOR="#ff0000"><FONT SIZE=4 STYLE="font-size: 15pt"><B>Achtung!!</B></FONT></FONT><BR>Beachten
    +Sie die Zeigerarithmetik von C. Alle eeprom-Funktionen erwarten, wie
    +beim avr-Compiler Pointer auf uint8 oder uint16 als Adressparameter.
    +Damit auch alles sicher klappt sollten bei berechneten Adressen wie
    +folgt vorgegangen werden.<BR>z.B. eeprom_read_word((uint16 *)
    +(SCT_LEFT + i*2))</P>
    +<P STYLE="margin-bottom: 0cm"><BR>
    +</P>
    +<P STYLE="margin-bottom: 0cm; font-style: normal"><B>eeprom_map.h</B></P>
    +<P STYLE="margin-bottom: 0cm; font-style: normal; font-weight: medium">
    +Enth&auml;lt Deklarationen aller erstellten EEPROM Variablen.</P>
    +<P STYLE="margin-bottom: 0cm"><BR>
    +</P>
    +<P STYLE="margin-bottom: 0cm; font-style: normal"><B>Probleme der
    +Implementierung</B></P>
    +<P STYLE="margin-bottom: 0cm; font-style: normal; font-weight: medium">
    +Im Moment erstellen gleiche Compilerversionen (zu &Uuml;berpr&uuml;fen
    +mit &ndash;version) auch gleiche EEPROM-Sections. Es gibt aber keine
    +Garantien daf&uuml;r, das zuk&uuml;nftige Compiler Versionen nicht
    +die Reihenfolge der Variablen im Code &auml;ndern.  Ein Einf&uuml;gen
    +neuer EEPROM Variablen kann auch zu Verschiebungen der Adressen
    +f&uuml;hren. Nach solchen &Auml;nderungen ist man nur auf der
    +sicheren Seite, wenn das EEPROM initialisiert wird (sprich Sie Ihre
    +alte eeprom.bin bzw. auf den Atmel das EEPROM l&ouml;schen). Einmal
    +erstellte Werte sind dann nat&uuml;rlich futsch. Wenn man den
    +Einfluss von Kodeerg&auml;nzungen kontrollieren will, kann man dies
    +vor und nach der &Auml;nderungen mit objdump machen, mit den
    +richtigen Parametern kann man sich die Adressverteilung anzeigen
    +lassen.<BR>Die Implementierung des EEPROM auf den PC kontrolliert
    +noch nicht, ob nicht 1K bzw. 2K an Daten &uuml;berschritten wird. Die
    +Funktionen f&uuml;r den Zugriff aber schon, dh im Moment muss der
    +Programmierer selbst darauf achten, das seine Daten nicht mehr als
    +ein Kilobyte werden. (Sp&auml;testens der avg-gcc wird dann aber
    +meckern).
    +</P>
    +<P STYLE="margin-bottom: 0cm"><BR>
    +</P>
    +<P STYLE="margin-bottom: 0cm"><B>Funktionen:</B></P>
    +<P STYLE="margin-bottom: 0cm"><B>Nur in eeprom-emu_pc.c sichtbare
    +Funktionen</B></P>
    +<P STYLE="margin-bottom: 0cm">store_parameter() - Speichern von
    +Informationen im simulierten EEPROM</P>
    +<P STYLE="margin-bottom: 0cm">load_parameter() - Laden von
    +Informationen aus dem simulierten EEPROM</P>
    +<P STYLE="margin-bottom: 0cm"><B>Zugriffsfunktionen f&uuml;r den PC
    +(Identisch zu denen von WinAVR)</B></P>
    +<P STYLE="margin-bottom: 0cm">eeprom_read_byte()</P>
    +<P STYLE="margin-bottom: 0cm">eeprom_write_byte()</P>
    +<P STYLE="margin-bottom: 0cm">eeprom_read_word()</P>
    +<P STYLE="margin-bottom: 0cm">eeprom_write_word()</P>
    +<P STYLE="margin-bottom: 0cm">eeprom_write_block()</P>
    +<P STYLE="margin-bottom: 0cm">eeprom_read_block()</P>
    +<P STYLE="margin-bottom: 0cm"><BR>
    +</P>
    +<P STYLE="margin-bottom: 0cm"><FONT SIZE=3><B>Dateien:</B></FONT></P>
    +<P STYLE="margin-bottom: 0cm"><FONT SIZE=3>eeprom-emu.h Include
    +Dateinamen mit Funktionsparameter</FONT></P>
    +<P STYLE="margin-bottom: 0cm"><FONT SIZE=3>eeprom-emu_pc.c Funktionen
    +fuer den ct-Sim</FONT></P>
    +<P STYLE="margin-bottom: 0cm"><BR>
    +</P>
    +<P STYLE="margin-bottom: 0cm"><BR>
    +</P>
    +<P STYLE="margin-bottom: 0cm; font-style: normal"><BR>
    +</P>
    +</BODY>
    +</HTML>
    Index: Documentation/Abstandssensor-Kalibrierung.html
    ===================================================================
    RCS file: Documentation/Abstandssensor-Kalibrierung.html
    diff -N Documentation/Abstandssensor-Kalibrierung.html
    --- /dev/null	1 Jan 1970 00:00:00 -0000
    +++ Documentation/Abstandssensor-Kalibrierung.html	1 Jan 1970 00:00:00 -0000
    @@ -0,0 +1,184 @@
    +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
    +<HTML>
    +<HEAD>
    +	<META HTTP-EQUIV="CONTENT-TYPE" CONTENT="text/html; charset=windows-1252">
    +	<TITLE></TITLE>
    +	<META NAME="GENERATOR" CONTENT="OpenOffice.org 2.1  (Win32)">
    +	<META NAME="CREATED" CONTENT="20060508;19143406">
    +	<META NAME="CHANGEDBY" CONTENT="Achim Pankalla">
    +	<META NAME="CHANGED" CONTENT="20070401;19571565">
    +	<STYLE>
    +	<!--
    +		@page { size: 21cm 29.7cm }
    +		H2.western { font-family: "Albany", sans-serif; font-size: 14pt; font-style: italic }
    +		H2.cjk { font-family: "HG Mincho Light J"; font-size: 14pt; font-style: italic }
    +		H2.ctl { font-family: "Arial Unicode MS"; font-size: 14pt; font-style: italic }
    +	-->
    +	</STYLE>
    +</HEAD>
    +<BODY LANG="de-DE" DIR="LTR">
    +<H2 CLASS="western">Abstandssensorkalibrierung mittels EEPROM-Tabelle</H2>
    +<P STYLE="margin-bottom: 0cm">Version 0.7 (03-April-2007)<BR><BR>Peter
    +Jonas (peter.jonas@xxxxxx)
    +</P>
    +<P STYLE="margin-bottom: 0cm">Achim Pankalla (achim.pankalla@xxxxxx)</P>
    +<HR>
    +<P ALIGN=CENTER><U><B>Einleitung</B></U></P>
    +<P ALIGN=LEFT>Mit diesem Behaviour kann mittels einer EEPROM-Tabelle
    +die Kalibrierung der Distanzsensoren durchgef&uuml;hrt werden. Dies
    +gilt auch f&uuml;r den ct-bot, sowohl als realen Bot auch als f&uuml;r
    +den im Ct-Sim. Der Vorteil dieses Verfahrens sind. <BR>1) Beruhigte
    +Messwerte (Nat&uuml;rlich nur beim realen Bot, im Sim rauschen die
    +Werte (noch) nicht.)<BR>2) Beide Sensoren liefern bei gleichen
    +Distanzen identische Werte.<BR>3) Die Messwerte liegen fest, dh. Man
    +kann ohne Probleme im Code bestimmte Abst&auml;nde abfragen. <BR><BR><BR>
    +</P>
    +<P ALIGN=CENTER><U><B>Einstellungen im Quellkode</B></U></P>
    +<P ALIGN=LEFT>Die Kalibrierung wird &uuml;ber mehrere <I>#defines</I>
    +in der Datei available_behaviours<I>.h</I> und <I>sensor_correction.h</I>
    +gesteuert:
    +</P>
    +<P ALIGN=CENTER><BR><FONT COLOR="#ff0000">#define
    +<FONT SIZE=3><FONT FACE="Times New Roman, serif">BEHAVIOUR_CALIBRATE_DSENSORS</FONT></FONT></FONT></P>
    +<P ALIGN=LEFT>Wenn diese Zeile aktiviert ist, geht der Roboter in den
    +Kalibrierungsmodus. Diese Einstellung ist nur einmal notwendig, um
    +die Kalibrierung der Sensoren durchzuf&uuml;hren. Im sp&auml;teren
    +normalen Roboterbetrieb ist diese Zeile zu deaktivieren.
    +</P>
    +<P ALIGN=CENTER><BR><FONT COLOR="#ff0000">#define
    +<FONT FACE="Times New Roman, serif">SENSOR_TABLE_AVAILABLE</FONT></FONT><BR><BR><BR>
    +</P>
    +<P ALIGN=LEFT>Wenn diese Zeile aktiviert ist, wird im normalen
    +Roboterbetrieb eine im EEPROM abgelegte Tabelle f&uuml;r die
    +Linearisierung der Distanzsensoren benutzt. Wenn diese Zeile
    +deaktiviert ist, wird die urspr&uuml;ngliche Linearisierung der
    +Sensoren &uuml;ber die einfache Hyperbelfunktion durchgef&uuml;hrt.
    +</P>
    +<P ALIGN=CENTER STYLE="margin-bottom: 0cm"><FONT COLOR="#ff0000"><FONT FACE="Times New Roman, serif"><FONT SIZE=3><B>#define</B>
    +SAMPLES_PER_AVG</FONT></FONT></FONT></P>
    +<P ALIGN=LEFT STYLE="margin-bottom: 0cm"><BR>
    +</P>
    +<P ALIGN=LEFT STYLE="margin-bottom: 0cm"><FONT COLOR="#000000"><FONT FACE="Times New Roman, serif"><FONT SIZE=3>Anzahl
    +der Messungen pro Abstand, die zur Mittelwertberechung genutzt
    +werden.</FONT></FONT></FONT></P>
    +<P ALIGN=CENTER STYLE="margin-bottom: 0cm"><FONT COLOR="#ff0000"><FONT FACE="Times New Roman, serif"><FONT SIZE=3><B>#define</B>
    +<FONT FACE="Courier New, monospace">SC_STARTDIST</FONT></FONT></FONT></FONT></P>
    +<P ALIGN=CENTER STYLE="margin-bottom: 0cm"><BR>
    +</P>
    +<P ALIGN=LEFT STYLE="margin-bottom: 0cm"><FONT COLOR="#000000"><FONT FACE="Times New Roman, serif"><FONT SIZE=3>Abstand
    +in Zentimeter, bei dem die Messreihe beginnt. Dieser Wert muss dort
    +liegen, wo die Sensoren ihre hoechsten Werte liefern und dann den Bot
    +noch ein kleines Stuck weiter. Acht Zentimeter hat sich als guter
    +Wert erwiesen. </FONT></FONT></FONT>
    +</P>
    +<P ALIGN=CENTER STYLE="margin-bottom: 0cm"><FONT COLOR="#ff0000"><FONT FACE="Times New Roman, serif"><FONT SIZE=3><B>#define</B>
    +<FONT FACE="Courier New, monospace">SC_STEPWIDTH</FONT></FONT></FONT></FONT></P>
    +<P ALIGN=CENTER STYLE="margin-bottom: 0cm"><BR>
    +</P>
    +<P ALIGN=LEFT STYLE="margin-bottom: 0cm"><FONT COLOR="#000000"><FONT FACE="Times New Roman, serif"><FONT SIZE=3>Abstand
    +zwischen den Messpunkten. Mit der aktuellen Auswertungsfunktion wird
    +dieser Wert halbiert und man erh&auml;lt so die Genauigkeit der
    +ermittelten Werte. Bei mir hat sich der Wert 4 als gut erwiesen. Der
    +Bot kann dann auf 20mm die Werte aufl&ouml;sen und diese sind auch
    +sehr stabil. Der Wert entspricht nat&uuml;rlich Zentimeter. Man
    +sollte aber auf eine Gesamtdistanz von mindestens 80cm kommen.
    +Notfalls den folgenden Wert erh&ouml;hen.</FONT></FONT></FONT></P>
    +<P ALIGN=CENTER STYLE="margin-bottom: 0cm"><FONT COLOR="#ff0000"><FONT FACE="Times New Roman, serif"><FONT SIZE=3><B>#define</B>
    +<FONT FACE="Courier New, monospace">SC_NO_OF_STEPS</FONT></FONT></FONT></FONT></P>
    +<P ALIGN=CENTER STYLE="margin-bottom: 0cm"><BR>
    +</P>
    +<P ALIGN=LEFT STYLE="margin-bottom: 0cm"><FONT COLOR="#000000"><FONT FACE="Times New Roman, serif"><FONT SIZE=3>Dieser
    +Wert legt fest, wie viele Messungen gemacht werden. Man sollte nicht
    +uber eine Gesamtdistanz von ca. 80cm kommen, da die Sensoren mehr
    +nicht hergeben und Werte zu dicht beieinander liegen. Der Wert gibt
    +die Anzahl der Messungen ohne Startwert an, dh. F&uuml;r insgesamt 16
    +Messungen, muss man hier 15 eintragen. Es nur ein <U>Maximum von 29</U>
    +zul&auml;ssig.</FONT></FONT></FONT></P>
    +<P ALIGN=LEFT STYLE="margin-bottom: 0cm"><BR>
    +</P>
    +<P ALIGN=CENTER><U><B>Kalibrierung</B></U></P>
    +<P ALIGN=LEFT STYLE="font-weight: medium; text-decoration: none">Eine
    +wichtige Bemerkung vorweg, bei der Aufnahme der Werte m&uuml;ssen Sie
    +nat&uuml;rlich sehr exakt sein. Je genauer Sie arbeiten, um so besser
    +das Ergebnis. Gerade in den Werten nahe der 8cm bedeutet ein
    +ungenauer Abstand auch entsprechend abweichende Werte, da hier die
    +Sensorkurve sehr steil verl&auml;uft. Sorgen sie au&szlig;erdem
    +daf&uuml;r, das der Bot immer senkrecht auf ihren Messabstand, am
    +besten eine ebene Wand, schaut.</P>
    +<P ALIGN=LEFT><BR>Im Kalibriermodus sieht man auf dem Display
    +zunaechst ein Menue. Man wird aufgefordert, den Roboter auf eine
    +bestimmte Distanz in cm zur Wand zu stellen. Wenn man das gemacht
    +hat, drueckt man die Taste &quot;2&quot; auf der Fernbedienung. (Kann
    +beim erstenmal zweimal notwendig sein.) Es wird nun aus den folgenden
    +vorgegebenen Zahl von Me&szlig;werten pro Sensor ein Mittelwert
    +gebildet. Dieser Wert wird dann in den beiden Tabellen (links und
    +rechts getrennt) im EEPROM abgelegt. Danach wird man aufgefordert,
    +eine neue Distanz einzustellen und der Vorgang beginnt von vorn.
    +<BR><BR>Nach SC_NO_OF_STEPS Messungen ist die Kalibrierung
    +abgeschlossen. Die Sensorwerte fuer die SC_NO_OF_STEPS Abstaende sind
    +nun im EEPROM. (Meldung in Zeile drei des Displays) Man kann aber mit
    +den Tasten &bdquo;1&ldquo; (zurueck) und &bdquo;3&ldquo; (vor)
    +nochmal zu einzelnen Werten gehen und diese nochmal wiederholen,
    +solang der letzte Wert nicht schon gemessen wurde.<BR>Mit der Taste
    +&quot;0&quot; kommt man in den normalen Roboterbetrieb zurueck und
    +kann die Kalibrierung gleich testen (SENSOR_TABLE_AVAILABLE muss
    +dafuer definiert sein). Dies ist auch bei nicht vollstaendiger
    +Kalibrierung moeglich aber nicht sinnvoll, wenn man die
    +EEPROM-Tabelle fuer die Sensoren nutzen moechte. Zu beachten ist, das
    +die Normale Belegung der Zahlentasten nicht gegeben ist, da diese
    +fuer Kalibrierung genutzt wurden.</P>
    +<P ALIGN=LEFT>Waehrend des Kalibrierungsvorgangs, zeigt die dritte
    +Zeile des Displays immer die aktuellen Messwerte an (waehrend des
    +Kalibrierungsvorgangs, MWert) oder das gemittelte Ergebnis an
    +(EWert). Die Anzahl der Messungen pro Entfernung legt uebrings das
    +<I>#define <FONT COLOR="#000000"><FONT SIZE=2><FONT FACE="Courier New, monospace">SAMPLES_PER_AVG</FONT></FONT></FONT></I><FONT COLOR="#000000">
    +<FONT FACE="Times New Roman, serif">fest, dies befindet sich in
    +<I>calibrate_sensors.c.</I></FONT></FONT><BR>Wenn die Sensoren im
    +Normalbetrieb Distanzen messen, die au&szlig;erhalb des eingestellten
    +Distanzbereiches der EEPROM-Tabelle liegen, wird der Werte aus der
    +Konstanten <FONT SIZE=2><FONT FACE="Courier New, monospace"><FONT COLOR="#000000">SENS_IR_INFINITE</FONT></FONT></FONT>
    +ausgegeben. <BR><BR>Im EEPROM werden fuer den Distanzbereich
    +SC_NO_OF_STEPS Messwerte pro Sensor gespeichert. Da die Sensoren
    +jedoch auch Werte fuer Distanzen zwischen den gemessenen Distanzen
    +ausgeben, wird im laufenden Betrieb des Roboters zwischen den
    +Stuetzwerten interpoliert, um fuer jeden Sensorwert einen mm-Wert
    +liefern zu koennen. <BR><BR>Beim Flashen mu&szlig; man aufpassen,
    +dass die Tabelle im EEPROM nicht ueberschrieben wird, deshalb sollte
    +man sie unmittelbar nach der Kalibrierung zunaechst sichern. Bei
    +PonyProg zb. Mit der Funktion <I>Command-&gt;Read Data</I> und diese
    +dann auch auf der Platte sichern. <BR>Um spaeter ein Programmupdate
    +zu flashen, liest man die Programm-Hexdatei mit &quot;Open Program
    +(Flash) File ...&quot; ein und flasht es dann mit &quot;Write Program
    +(Flash)&quot; und dann muss man die EEPROM-Datei wieder neu
    +aufspielen, da diese durch das Flashen des Programms geloescht
    +werden<BR>Speichert man den EEPROM-Bereich im BIN-Format, kann diese
    +Datei direkt auch fuer den ct-Sim nutzen.</P>
    +<P ALIGN=CENTER><B>Nutzung der Kalibrierdaten</B></P>
    +<P ALIGN=LEFT>Hat man das Define <I>SENSOR_TABLE_AVAILABLE</I> in
    +ctbot.h gesetzt, so werden die Daten in der Funktion <I>sensor_abstand</I>
    +in <I>sensor.c</I> genutzt, um aus den aktuellen Messwerten der
    +Abstandssensoren moeglichst genaue und ruhige Abstaende zu bestimmen.
    +Dafuer wird beim ct-bot nochmal die Genauigkeit der Werte durch eine
    +Mittlung ueber mehrere Werte erhoeht.<BR>Beim Simulator ist die
    +Nutzung der Kalibrierdaten auch moeglich. In dem man die
    +EEPROM-Simulation benutzt und die Werte vom realen Bot in einer Datei
    +im BIN-Format ablegt und diese ins entsprechende Verzeichnis ablegt.
    +(Siehe auch Docu fuer parameter-low).</P>
    +<P ALIGN=CENTER><B>Vorteile und Nachteile der Kalibrierung</B></P>
    +<P ALIGN=LEFT>Vorteile <BR>- Ueber Tabellen im EEPROM liefern die
    +Distanzsensoren stabile werte. <BR>- Beide Sensoren sind nun
    +kalibriert und liefern deshalb die gleichen Abstandswerte f&uuml;r
    +die gleichen Entfernung, sind aber weiter unabh&auml;ngig
    +voneinander! <BR><BR>Nachteile<BR>- Eingeschr&auml;nkte Aufl&ouml;sung
    +der Distanzwerte (bei mir 10mm Aufl&ouml;sung noch super ruhig)<BR>-
    +Kleinster Kalibrierabstand ist 2cm, damit erreicht man eine Aufl&ouml;sung
    +von 1cm (10mm). <BR>- Man muss die Anleitung lesen ;-)
    +</P>
    +<P ALIGN=CENTER><FONT COLOR="#ff0000"><I><U><B>ACHTUNG!</B></U></I></FONT></P>
    +<P ALIGN=LEFT>Fuer die Nutzung der Kalibrierung ist es wichtig, das
    +die Konstanten (DEFINEs) immer die Werte haben, die auch bei der
    +Aufnahme der Daten aktuell waren. Die neue Version der
    +Kalibrierfunktion (Docu-Version ab 0.5) ist nicht kompatible mit
    +BIN-Dateien vorheriger Versionen.</P>
    +</BODY>
    +</HTML>
Referenzen: [ct-bot] Kaibrierung From: Carsten Giesen [ct-bot] Re: Kalibrierung der Distanzsensren mittels EEPROM-Tabelle From: Achim Pankalla Re: [ct-bot] Re: Kalibrierung der Distanzsensren mittels EEPROM-Tabelle From: Achim Pankalla Re: [ct-bot] Re: Kalibrierung der Distanzsensren mittels EEPROM-Tabelle From: Timo Sandmann Re: [ct-bot] Re: Kalibrierung der Distanzsensren mittels EEPROM-Tabelle From: Achim Pankalla Re: [ct-bot] Re: Kalibrierung der Distanzsensren mittels EEPROM-Tabelle From: Benjamin Benz Re: [ct-bot] Re: Kalibrierung der Distanzsensren mittels EEPROM-Tabelle From: Timo Sandmann Re: [ct-bot] Re: Kalibrierung der Distanzsensren mittels EEPROM-Tabelle From: Achim Pankalla Re: [ct-bot] Re: Kalibrierung der Distanzsensren mittels EEPROM-Tabelle From: Timo Sandmann Voriger (Datum): [ct-bot] Kalibrierung der Distanzsensren mittels EEPROM-Tabelle, Achim Pankalla Nächster (Datum): Re: [ct-bot] Kalibrierung der Distanzsensren mittels EEPROM-Tabelle, Timo Sandmann Voriger (Thread): Re: [ct-bot] Kalibrierung der Distanzsensren mittels EEPROM-Tabelle und eeprom@pc, Achim Pankalla Nächster (Thread): Re: [ct-bot] Re: Kalibrierung der Distanzsensren mittels EEPROM-Tabelle, Benjamin Benz Indizes: Datum Thread |

Copyright © 2007 Heise Zeitschriften Verlag | Kritik, Anregungen bitte an c't-WWW | Datenschutzhinweis Impressum