Dokumentation PDV

Transcription

Dokumentation PDV
PDV-Vertiefungsprojekt
Teilautomatisierung eines MB-Trac 800
Projektdokumentation
Holger Reinl
Axel Meyer
Betreut durch: Prof. Linn
Inhaltsverzeichnis
Inhaltsverzeichnis........................................................................................................................2
Projektbeschreibung....................................................................................................................3
Bedienungsanleitung................................................................................................................... 3
Allgemeine Hinweise zum Fahren.......................................................................................... 3
Starten der Anlage...................................................................................................................3
Menüstuktur der Steuerung..................................................................................................... 3
Technische Dokumentation.........................................................................................................4
Steuerungscomputer................................................................................................................4
50 Pol Sub-D Stecker.......................................................................................................... 4
Servosteuerung und Elektronik............................................................................................... 4
LCD-Display........................................................................................................................... 5
Bluetooth-Adapter...................................................................................................................6
Das verwendete Linux-System............................................................................................... 6
Quellcode-Dokumentation.......................................................................................................... 6
LCD-Display........................................................................................................................... 6
Servo-Steuerung......................................................................................................................7
COMM-API............................................................................................................................ 9
Joystick-API..........................................................................................................................10
Jchart-API............................................................................................................................. 12
GPS-Steuerung......................................................................................................................12
Regelungsalgorithmus...........................................................................................................12
Projektbericht............................................................................................................................ 12
Probleme und ihre Lösungen................................................................................................ 12
Spannungsversorgung....................................................................................................... 12
Speicherlösung.................................................................................................................. 13
Das Servo.......................................................................................................................... 13
Das LCD-Display..............................................................................................................13
Fazit.......................................................................................................................................14
Seite 2 von 14
Projektbeschreibung
Ziel des Projekts ist es eine computergestützte Steuerung eines 72 PS starken Traktors zu
realisieren. Hierbei soll zunächst die Gassteuerung über ein Servomotor erfolgen. Die
Geschwindigkeitsmessung erfolgt per GPS. Das gesamte System wird über einen Industrie PC
mit Joystick und LCD Display gesteuert.
Auch wenn eine computergestützte Steuerung bei modernen Landmaschinen gängig ist,
macht es sinn für alte Traktoren, die zum großen Teil immer noch produktiv eingesetzt
werden moderne Technik zur Verfügung zu stellen.
Bedienungsanleitung
Allgemeine Hinweise zum Fahren
Die Automatik Funktionen der Anlage dürfen nur auf nicht öffentlichen Straßen oder Flächen
genutzt werden. Zum Fahren auf öffentlichen Straßen ist das Stahlseil welches zum Servo
führt über den Federsplint zu entfernen.
Vor dem auswählen einer Geschwindigkeit muss ein geeigneter Gang eingelegt werden oder
ggf. das Anfahren bis in den gewünschten Gang per Hand erfolgen, da die Schaltung nicht
gesteuert werden kann.
Starten der Anlage
Durch den Spannungswandler von 12V auf 220V ist es erforderlich den Motor zunächst zu
starten und danach den Spannungswandler einzuschalten, da sonnst beim Anlassen des
Traktors der Computer ausgehen würde. Außerdem ist darauf zu achten dass der Computer
während des Startvorgangs vibrationsarm gelagert ist, da sonnst die Festplattenzugriffe
fehlschlagen bzw. zu lange dauern.
Wenn das System gestartet ist erscheint auf dem LCD-Display ein Menü welches per Joystick
bedient werden kann. Manchmal ist es notwendig dass sich der GPS Empfänger zunächst
kalibriert. Dies sieht man daran, dass im Menü eine Geschwindigkeit von –0.0 km/h angezeigt
wird. Ist dies der Fall muss man solange warten bis gültige Werte angezeigt werden.
Menüstuktur der Steuerung
Es gibt das Menü Traktorsteuerung, mit den Untermenüs, der Manuellen Steuerung, bei der
der Fahrer die Möglichkeit hat, über die Plus bzw. Minus Tasten des Joysticks die
Geschwindigkeit zu regeln. Wenn eine bestimmte Geschwindigkeit gehalten werden soll,
kann der Feuerknopf am Joystick gedrückt werden und der Traktor hält diese
Geschwindigkeit.
Das Untermenü Automatikmodus der Traktorsteuerung bietet die Möglichkeit eine
Geschwindigkeit über die Joysticktasten vorzuwählen. Nach drücken der Feuertaste wird
diese dann angefahren und bei behalten.
Das letzte Untermenü bietet die Möglichkeit den Tachomodus auszuwählen und nur die
aktuelle Geschwindigkeit angezeigt zu bekommen.
Ein weiteres Hauptmenü bietet die Möglichkeit einen Mediaplayer zu starten der wahlweise
von USB-Sticks oder von dem internen Speicher MP3s abzuspielen. Da dieser Teil aber nicht
direkt zum Projekt gehört wird auf weitere Details verzichtet.
Dann gibt es noch den Menüpunkt Herunterfahren um den PC auszuschalten. Dies kann über
den Feuerknopf am Joystick ausgelöst werden.
Seite 3 von 14
Technische Dokumentation
Steuerungscomputer
Der Steuerungs-PC besteht aus einem angepassten 19“ Industrie Gehäuse mit normalen 220V
Netzteil mit 95W Leistungsaufnahme. Um das Gerät mit Spannung zu versorgen wird ein
Spannungswandler eingesetzt. Der PC selbst besteht aus einem ASUS TUSL2-C Rev. 1.04
Mainbaord, 256 MB SD-RAM PC133, einem Intel Celeron 1100Mhz Prozessor, einer S3
Trio32 PCI-Grafikkarte, einer ESS Solo-1 (ES1969) Soundkarte, einer Texas Instruments
ACS111 54Mbps WLAN-Karte, einem Timedia Parallel-Port-Controller und einer 10GB
FUJITSU Notebook-Festplatte. Außerdem ist noch ein MSI-Bluetooth Adapter am internen
USB-Anschluss angeschlossen.
Alle Komponenten sind mit Heizkleber fixiert, damit die starken Vibrationen im Betrieb
ausgehalten werden können. Außerdem ist die Festplatte mit Einmachgummis in einem
Aluminium-Käfig gelagert um etwas die Vibrationen zu dämpfen, die durch den Motor vom
Traktor entstehen.
50 Pol Sub-D Stecker
Für die Anschlüsse von Stromzufuhr, Servosteuerung und LCD-Stromversorgung wurde ein
50 Pol Sub-D Stecker verwendet, der wie folgt belegt ist:
Pin 1 = Servo PWM-Signal
Pin 4 = Servo +5V
Pin 7 = Servo GND
Pin 17 = PWM-Signal der V24-Schnittstelle (+12 V bis -12V)
Pin 14 = +5V vom PC Netzteil für das LCD-Display
Pin 11 = PC Netzteil GND für das LCD-Display
Pin 50-42 = Versorgungspannung GND (nicht mehr verwendet)
Pin 41-34 = Versugrungsspannung +12V (nicht mehr verwendet)
(Das Zündplus und das VCC sind gekoppelt da der Strom über einen externen Schaltet wird,
außerdem sind wegen der Stromstärke so viele Pin's verwendet worden, da aber kein 12V
ATX-Netzteil verwendet wird sind diese Pins überflüssig.)
Die Servo-Elektronik ist im PC-Gehäuse untergebracht.
Servosteuerung und Elektronik
Das verwendete Servo hat eine Stellkraft bei 5V von 19kg und bei 6V von 25kg, was auch
erforderlich ist, da ein 9kg Servo nicht ausgereicht hat. Um ein möglichst ruhiges und
kraftschonendes Stellen des Servos zu ermöglichen wurde das Gaspedal mit einem Stahlseil
und einer Scheibe die am Servo montiert ist befestigt. Diese Konstruktion erlaubt eine
ruckfreies Stellen in jeder Position.
Das verwendete Servo wird über eine Puls-Weiten-Modulation (PWM) geregelt. Hierbei
muss ein Rechteck-Impuls im Abstand von 20ms (50Hz) ein Impuls gesendet werden mit
einer Länge von 0,9 bis 2,1ms.
Der folgende Schaltplan hat die folgende Funktionsweise:
Diese Impulse werden über die V.24 Schnittstelle vom PC gesendet. Hierbei ist jedoch zu
beachten, dass V.24 Signal eine low-Pegel von –12V und einen high-Pegel von +12V hat. Da
der Transistor mit –12V kaputt gehen würde ist eine Sperrdiode vorgeschaltet. Außerdem
muss die Schaltung das Signal von +12V auf +5V ummodelieren da sonnst das Servo kaputt
gehen würde.
Seite 4 von 14
LCD-Display
Es kommt ein beleuchtetes LCD-Display vom Typ HD44780 mit 8-Bit und mit 2x40 Zeichen
zum Einsatz. Dieses Display kann fast direkt an den Parallelport des Computers
angeschlossen werden. Die Ansteuerung geschieht über das LCDproc-Projekt, wobei nur der
LCDd-Server genutzt wird. Die Java-Anwendung kann sich direkt über das jLCD mit dem
LCDd-Server verbinden.
Für die Ansteuerung wurde folgender Schaltplan verwendet und etwas modifiziert:
(Quelle: http://www.exclaim.de/howtos/artikel/133_1/4x20-LC--Character-Displayanschliessen---HD44780-Controller.html)
Seite 5 von 14
Anstelle des 10K Widerstands wurde ein Drehpotentiometer eingesetzt was die Regelung des
Display-Kontrasts ermöglicht. Außerdem wurde die Spannungsversorgung für die
Hintergrundbeleuchtung reduziert, da hier blaue LEDs zum Einsatz kommen die nur mit 2,9V
betrieben werden dürfen, so dass anstelle des 100 Ohm Widerstands ein 120 Ohm Widerstand
verwendet werden muss.
Die gesamte LCD-Schaltung befindet sich in einem selbstgebautem Gehäuse im Traktor und
wird über einen Sub-D 25 Pol. Stecker angeschlossen. Außerdem benötigt das Modul noch
5V Versorgungsspannung die aus dem PC-Netzteil gewonnen wird.
Bluetooth-Adapter
Der verwendete MSI-Bluetooth-Adapter kann über Linux ganz einfach eingebunden werden:
hcitool scan
hcitool cc <mac>
rfcomm bind /dev/rfcomm0 <mac>
In der Datei /etc/bluetooth/rfcomm.conf können Geräte permanent mit dem System
verbunden werden. Dazu muss die Mac-Adresse des Gerätes bekannt sein. Es wird dann
sobald es in die nähe kommt als /dev/rfcomm0 eingebunden.
Die GPS-Daten können direkt vom Seriellen-Bluetooth Device als endloser Datenstrom
gelesen werden. Diese werden dann mit unserem NMEA-Parser ausgewertet. Der verwendete
GPS-Empfänger ist ein ASUS BT100 der das Sirf III schon unterstützt.
Das verwendete Linux-System
Wir haben uns für die Verwendung eines Gentoo-Linux mit Kernel 2.6.20 entscheiden da
man dieses genau nach seinen Bedürfnissen anpassen kann, was auch Speicherplatz spart und
die Geschwindigkeit erhöht. Außerdem Kommt Java 1.5.0_11 zum Einsatz was uns die
Verwendung modernster Programmierelemente ermöglicht. Für die Kommunikation mit dem
LCD-Display wird das OpenSource-Projekt jLCD verwendet, für die Kommunikation mit
dem RS232-Port eine Bibliothek von SUN und für die Steuerung des Joysticks wird das
OpenSource-Projekt Javajoystick verwendet.
Näheres erfahren Sie in der Quellcode-Dokumentation.
Quellcode-Dokumentation
LCD-Display
package pdv;
import com.colour9.jLCD.LCD;
import com.colour9.jLCD.Screen;
import com.colour9.jLCD.StringWidget;
/**
*
* @author Administrator
*/
public class Menu {
LCD myLCD = new LCD(13666, "192.168.1.27");
StringWidget Line1 = new StringWidget(1, 1, "MB-TRAC POWER V. 0.1");
StringWidget Line2 = new StringWidget(1,2,"Axel & Holger sind cool!");
/** Creates a new instance of Main */
public Menu() {
Screen myScreen = new Screen();
myLCD.addScreen(myScreen);
myScreen.setName("Test1");
Seite 6 von 14
myScreen.setHeartbeat("off");
myScreen.setPriority(1000);
myScreen.addWidget(Line1);
myScreen.addWidget(Line2);
}
public static Main (String[] args){
Menu mm = new Menu();
mm.Line1.setText("Zeile1 setzen");
mm.Line2.setText("Zeile2 setzen");
}
}
Servo-Steuerung
/*
* gas.java
*
* Created on May 1, 2007, 11:52 AM
*
* To change this template, choose Tools | Template Manager
* and open the template in the editor.
*/
/**
*
* @author holger
*/
package pdv;
import java.util.*;
import com.sun.comm.*;
import javax.comm.*;
import java.io.*;
import org.apache.log4j.*;
public class gas {
static gas me = null;
// Log4J logger
private static Logger logger = Logger.getLogger("gas.class");
// Prozent mit denen am Gas gezogen werden soll
int gas = 0;
// Angaben ueber den minimalen und maximalen PWM-Puls
double minimum = 1.3;
double maximum = 2.7;
// Frequenz in Hz
long freq = 20;
static SerialPort sp = null;
Timer t = new Timer();
/** Creates a new instance of gas */
private gas(Properties prop) {
// Setze meine Argumente
logger.debug("Neues Objekt erstellt");
this.minimum = new Double(prop.getProperty("gas_minimum"));
this.maximum = new Double(prop.getProperty("gas_maximum"));
Seite 7 von 14
this.freq = new Long(prop.getProperty("gas_freq"));
try {
//sp = new LinuxSerial("/dev/ttyS0");
sp = new LinuxSerial(prop.getProperty("gas_serial_dev"));
} catch (IOException ex) {
ex.printStackTrace();
}
this.run();
}
private void sethigh(){
// Diese Methode setzt auf der Schnittstelle ein High-Level
if (logger.isDebugEnabled()){
logger.debug("Level auf high gesetzt");
}
sp.setRTS(true);
}
private void setlow(){
// Diese Methode setzt auf der Schnittstelle ein Low-Level
if (logger.isDebugEnabled()){
logger.debug("Level auf low gesetzt");
}
sp.setRTS(false);
}
// Muss den Timer Stoppen und keine HIGH-Impulse mehr zulassen
public void estop(){
logger.error("NOT-AUS!!!");
}
private void run(){
if(logger.isInfoEnabled()){
logger.info("Starte den Timer");
}
TimerTask tt = new TimerTask(){
@Override public void run(){
long a = 0;
// High setzen der Comm-Schnittstelle
sethigh();
a = System.nanoTime();
while (System.nanoTime()-a < (getPW())){
// Mache nix und warte
}
// Low setzen der Comm-Schnittstelle
System.out.println("Fertig :"+new Date());
Seite 8 von 14
setlow();
}
};
t.schedule(tt,0,(long)((double)(1.0/freq)*1000));
}
private double getPW(){
// Milli-Sekunden Faktor (1 000 000 nano-sekunden => 1mili-sekunde)
if(logger.isDebugEnabled()){
logger.debug("Die bei "+gas+" leistung muss der impuls "+((((maximumminimum)/100*gas)+minimum) * 1000)+" MicroSekunden lang sein");
}
return (((maximum-minimum)/100*gas)+minimum) * 1000000;
}
public void setGas(int gas){
this.gas = gas;
}
public int getGas(){
return this.gas;
}
// Implemtiere das Singleton-Pattern
public static gas getInstance(Properties prop){
if (me == null){
me = new gas(prop);
}
return me;
}
}
COMM-API
Die COMM-API die von SUN zur Verfügung gestellt wird ermöglicht den Zugriff auf die
serielle sowie auf die parallele Schnittstelle aus Java heraus.
Leider ist diese API nicht Plattform-unabhängig und benötigt andere Dateien für Windows
oder Linux. Allerdings ist die API identisch für alle Plattformen die richtigen Verzeichnisse
kopiert werden damit die JRE diese auch findet.
Unter Linux müssen alle *.so Files in das Verzeichnis /opt/sun-jdk-*/jre/lib/i386/ kopiert
werden.
import com.sun.comm.*;
import javax.comm.*;
import java.io.*;
Seite 9 von 14
public static Main(String[] args){
sp = new LinuxSerial("/dev/ttyS0");
// High Pegel
sp.setRTS(false);
// Low Pegel
sp.setRTS(true);
}
Joystick-API
Die JOYSTICK-API wird ebenfalls von SUN angeboten und ermöglicht es unter Windows
und Linux kinderleicht einen Joystick mit Java zu nutzen.
Dazu muss nur die Joystick.jar-Datei in das Projekt eingebunden werden und schon kann es
losgehen.
Sofort kann man eine Joystick-Listener-Klasse schreiben die auf Joystick-Events wartet und
ganz Java konform Methoden aufruft die man selbst bestücken kann.
Das einzige was man machen muss ist die Klasse vom Interface JoystickListener abzuleiten.
Zuerst muss ein Joystick instanziiert werden
Joystick js;
try {
js = Joystick.createInstance();
js.addJoystickListener(jl);
} catch (IOException ex) {
ex.printStackTrace();
}
Dann Muss noch der Listener Entwickelt werden
package pdv;
import com.centralnexus.input.Joystick;
import com.centralnexus.input.JoystickListener;
import java.rmi.RemoteException;
/**
*
* @author holger
*/
public class MyJoystickListener implements JoystickListener{
int oldbutton = 0;
pdv.PDVController c = null;
public void joystickAxisChanged(Joystick joystick) {
/*
double value =0;
value = joystick.getY();
if (value > 0) {
value = 0;
}
value = (value*-100);
Seite 10 von 14
try {
c.setJoyGas(value);
} catch (Exception ex) {
ex.printStackTrace();
}
*/
}
public void joystickButtonChanged(Joystick js) {
int newbutton = js.getButtons();
//c.mm.Line1.setText("Button ->"+js.getButtons());
// Zustandsaenderung
if (oldbutton != newbutton){
System.out.println("Button ->"+newbutton);
if (newbutton == 15){
c.oben();
}
else if (newbutton == 11){
c.rechts();
}
else if (newbutton == 3){
c.links();
}
else if (newbutton == 7){
c.unten();
}
// Launch
else if (newbutton == 1){
c.launch();
} else if(newbutton == 4){
c.inkr();
}else if(newbutton == 8){
c.dekr();
}else if(newbutton == 2){
c.notaus();
}
}
}
/** Creates a new instance of MyJoystickListener */
public MyJoystickListener(pdv.PDVController c) {
this.c = c;
}
}
Seite 11 von 14
Jchart-API
Diese API erlaubt es dem Benutzer sehr einfach mit swing Charts zu erstellen.
Für unsere GUI haben wir es verwendet um die Geschwindigkeit die Servostellung und die
Servo Änderung zu visualisieren.
Leider ist diese API nicht ganz einfach zu verstehen aber wenn man sich ein bisschen
hineinversetzt hat gelingt es einem doch.
Das Howto gibt es unter: http://jcharts.sourceforge.net/userGuide/exportingImages.html
GPS-Steuerung
Das Parsen der NMEA-Daten erfolgt in der Klasse NMEAParser die in einem eigenständigen
Thread läuft. Da die NMEA-Daten unter Linux, aus einem Gerät (Device) , wie aus einer
Datei eingelesen werden. Da die Daten kommaseperiert sind gestaltet sich das Parsen sehr
einfach. Mit der Java-Split-Funktion lassen sich die Strings sehr einfach in die einzelnen
Datenfelder zerlegen.
Regelungsalgorithmus
Der von uns verwendete Regelungsalgorithmus basiert auf einem P-Regler bei dem die
Ableitung der vorherigen Servostellung mit einem von der Geschwindigkeitabweichung
abhängigen Faktor multipliziert wird.
Servostellung = AlteServostellung + (AlteServostellung – NeuBerechneteServostellung) *
GeschwindigkeitsDifferenzFaktor
Projektbericht
Probleme und ihre Lösungen
Während des Entwickeln hatten wir sehr viele Probleme die durch den extremen Einsatzort
des Systems entstanden sind. Da diese Probleme in der Endfassung unseres Projekts evtl.
nicht mehr nachzuvollziehen sind aber dennoch einen Großteil unserer Projektarbeit
ausmachten sollten diese an dieser Stelle noch erwähnt werden.
Spannungsversorgung
Da auf dem Traktor nur 12V Versorgungsspannung zur Verfügung stehen ist es erforderlich
passende Spannungswandler einzusetzen. Zunächst wurde von uns ein spezielles KFZNetzteil mit 180W Leistung verwendet. Dieses Netzteil sollte die Eigenschaften haben direkt
an die Batterie des Traktors angeschlossen zu werden und z.B. Spannungsschwankungen
beim Anlassen auszugleichen. Außerdem sollte es eine Tiefentladung des Akkus vermeiden.
Jedoch kam das Netzteil sehr schnell an seine Grenzen. Wenn das Servo beim Starten des
Computers schon angeschlossen war hat meistens der Startstrom nicht mehr ausgereicht, so
dass das Servo erst vom PC getrennt werden musste bis er gestartet war. Das machte natürlich
das Testen sehr mühsam. Nach einiger Zeit des Betriebs kam jedoch weißer Rauch aus dem
Gehäuse und nichts ging mehr. Das Netzteil hat die Belastung nicht ausgehalten.
Da wir mit dem Ursprünglichen 95W Netzteil überhaupt keine Probleme bislang hatten
obwohl es gute 85W weniger Leistung hatte entschlossen wir uns einen KFZSpannungswandler einzusetzen, der aus 12V Spannung 220V für das normale Netzteil
erzeugte.
Der Spannungswandler wird jedoch sehr heiß. Außerdem kommt es durch die nicht
vorhandene Erdung zum Teil zu heftigen Kriechströmen die das berühren der Metallflächen
am Traktor nicht gerade angenehm gestalteten. Außerdem kam es zu Aussetzern am LCDSeite 12 von 14
Display durch die Kriechströme. Daher ist das Gehäuse über ein Erdungskabel mit dem
Traktor zu verbinden.
Speicherlösung
Da Notebook-Festplatten die starken Erschütterungen und Vibrationen nicht kompensieren
können entscheiden wir uns für einen Flash-Speicher der mit einem IDE-Adapter an das
System angeschlossen wurde. Das Problem ist jedoch, dass die Speicherkarten nur eine
begrenzte Lebensdauer bezüglich ihrer Schreibzugriffe haben, so dass alle Log-Files, SWAPFiles und Temporären Zugriffe ausgeschaltet werden müssen. Ein RamDrive kann man unter
Linux mit dem Befehl mount -t ramfs none /mnt/[Mountpoint] anlegen.Dabei ist -t der
FileSystemtyp none das Gerät und Mountpoint die Stelle im Dateisystem an dem das
Verzeichnis angehängt werden soll. Die Karten haben jedoch das Problem dass diese nicht
persistente Daten haben und sehr empfindlich auf Rechnerabstürze sind. D.h. es sind
permanent Filesystem-Checks notwendig, die nicht im Traktor durchgeführt werden können.
Daher entschlossen wir uns doch eine Notebook-Festplatte zu verwenden. Eine
Schaumstofffederung reichte nicht um die Vibrationen auszugleichen. Wir haben daher eine
Aufhängung mit Einmachgummis und Bleigewichten als Masse entwickelt, die Vibrationen
ausgleichen sollen. Es ist jedoch immer noch erforderlich den Rechner beim Hochfahren im
Traktor in der Hand zu halten um die Vibrationen auszugleichen. D.h. bei jeder
Programmänderung musste der Rechner neu gestartet werden und dabei Hochgehalten werden
was jeden Testlauf extrem rauszögerte. Um das Problem weiter zu verhindern haben wir die
Festplatte direkt nach dem Booten in den Schlaf-Modus geschickt, also den Motor
ausgeschaltet, da während der Ausführung des Programms die Festplatte nicht benötigt wird.
Diesen Sleep-Modus kann man unter Linux mit dem Befehl „hdparm -y /dev/hda“ einleiten.
Wenn wieder eine neue Programmversion kopiert werden muss, muss der Computer aus dem
Gehäuse genommen werden damit die Festplatte wieder anlaufen kann. Das funktionierte
recht gut, jedoch auch nicht dauerhaft, so dass nach ca. 5 Kopiervorgängen der Computer neu
gestartet werden muss. Das war aber dennoch eine erhebliche Arbeitserleichterung für uns.
Das Speicherproblems ist so noch nicht perfekt gelöst, jedoch verkraftbar, da jetzt das
Programm nicht mehr getestet werden muss und während des Betriebs die Festplatte
ausgeschaltet bleiben kann.
Das Servo
Bei der Ansteuerung des Servos hatten wir zunächst das Problem das die Genauigkeit des
Signals nicht ausreichend war. Das konnten wir sehr gut mit einem Oszilloskop eingrenzen
und beheben. Ein weiteres Problem war, das das ursprüngliche Servo mit 9kg Zugkraft nicht
ausreichte aber das neue mit 19kg Zugkraft zu viel Einschaltstrom gezogen hat, so dass der
Rechner nicht richtig startete.
Das LCD-Display
Die Schwierigkeit das LCD anzusteuern erwies sich leider als viel größer als zunächst
gedacht.
Leider gibt es für Java keine API die auch nur annähernd als stabil gilt, allerdings von den
unstabilen dafür mehr als man möchte. Zunächst haben wir uns dazu entschieden den LCDd
zu verwenden weil er für eine saubere Architektur steht und sich so theoretisch mehrere
Anwendungen das Display teilen können.
Nach tagelangen Recherchen haben wir dann endlich die API jLCD gefunden, und nach
weiteren Tagen und der Anpassung der Beispielanwendung konnten wir endlich das Display
nach unseren Vorstellungen ansprechen.
Seite 13 von 14
Fazit
Auch wenn das Projekt sehr viele unerwartete Probleme bereitete haben wir viel gelernt.
Insbesondere das austüfteln in der extremen Umgebung war eine Herausforderung. Außerdem
ist dieses Projekt eines der wenigen FH-Aufgaben die auch nach der Abgabe Anwendung
finden werden.
Was die Funktionalität betrifft gibt es zwar bei modernen Traktoren schon solche Systeme
jedoch, gibt es immer noch sehr viele alte Maschinen die noch im professionellen Einsatz
sind. Daher ist es sinnvoll für diese Nachrüstungs-Möglichkeiten zu bieten. Außerdem bietet
dieses Projekt durch den vielseitig einsetzbaren Computer Erweiterungsmöglichkeiten die
ggf. später dazu entwickelt werden können.
Holger im MB-Trac Kommandozentrum
Axel beim Nachmessen der Rechtecksignale
Seite 14 von 14

Documents pareils