ROBO M16C/20-24

ftComputing : Programme für die fischertechnik-Interfaces und -konstruktionskästen
  
ftComputing.de
Home
Back
Sitemap
Index
Links
Impressum
Mail
 

Freiheit für die Mobile Robots

Am Beispiel des Hindernis-Robots des aktuellen Kastens "Mobile Robot Set" 93 292

(das ist der linke auf dem Bild) soll gezeigt werden, welche Möglichkeiten es gibt, den Robot ohne lästige USB-Strippe durch die Gegend fahren zu lassen.

ROBO Pro : Download zum Betrieb im ROBO Interface

Das Programm ist in der Beispielsammlung von ROBO Pro enthalten. Also : in Robo Pro laden, Download-Button drücken, Robot läuft. Gezeigt ist hier das Main, es kommen noch 7 weitere Unterprogramme dazu.

Geht einfach und prächtig, es gibt aber keine Einfluß-Möglichkeit auf das laufenden Programm im ROBO Interface. Ablaufen tut hier das compilierte ROBO Pro Programm im Renesas Microprocessor des ROBO Interfaces.

ROBO Pro : Kommunikation über das RF Datalink

ROBO Pro Programm wie oben. An den Rechner wird anstelle des ROBO Interfaces das ROBO RF Datalink an USB angeschlossen. Die USB-Strippe am ROBO Interface wird abgezogen, Akku bleibt. Button Online-Modus drücken.

Läuft genauso schön wie im Download-Betrieb. Man kann das Programm z.B. um Anzeigemöglichkeiten oder zusätzliche Steuerungsmöglichkeiten erweitern (Bedienfeld ROBO Pro). Das Programm läuft auf dem PC ab, dabei wird natürlich die Firmware des ROBO Interfaces genutzt.

Nachteil : Es kostet (das ROBO RF Datalink).

vbaFish : Kommunikation über das RF Datalink

Wenn man das graphische Programmieren nicht so recht mag, geht's auch mit dem textuellen Programmieren z.B. mit vbaFish40.

Sub Main
Do
  If GetInput(ftiI3) Then
    Stopp
    Pause 500
    ZuruckLinks
  ElseIf GetInput(ftiI4) Then
    Stopp
    Pause 500
    ZuruckRechts
  Else
    Vorwarts
  End If
Loop Until Finish
End Sub

Sub Stopp
  SetMotor ftiM1, ftiAus
  SetMotor ftiM2, ftiAus
End Sub

Sub ZuruckLinks
  Ruckwarts
  WaitForChange ftiI1, 6
  Links
  WaitForChange ftiI1, 3
  Stopp
  Pause 500
End Sub

........

Das Programm wurde in enger Anlehnung an die ROBO Pro Lösung erstellt und leistet das gleiche wie die ROBO Pro RF Datalink Lösung. Mit einer anderen Programmiersprache gehts genauso gut. Programmierer habe eine (gesunde?) Sammlung von Vorurteilen für ihr Handwerkszeug.

Renesas C : Download zum Betrieb im ROBO Interface

Das ROBO Interface enthält den Microprozessor M16C/20-24 von Renesas und zusätzlich umfangreiche fischertechnik Firmware zum Betrieb der speziellen ROBO Interface Hardware. Wenn man es denn ganz genau wissen will kann man den Prozessor selber in Renesas C programmieren und das Programm dann über das fischertechnik Program FtLoader in das ROBO Interface laden :

#include "TA_Firmware\TAF_00D.h"
#include "TA_Firmware\TAF_00P.h"

void Stopp(void) {
  sTrans.M_Main = 0x00; }
void Vorwarts(void) {
  sTrans.M_Main = 0x05; }
void Links(void) {
  sTrans.M_Main = 0x09; }
void Rechts(void) {
  sTrans.M_Main = 0x06; }
void Ruckwarts(void) {
  sTrans.M_Main = 0x0A; }

void ZuruckLinks(void) {
  Ruckwarts();
  FtDelay(600);
  Links();
  FtDelay(300);
  Stopp();
  FtDelay(500); }
void ZuruckRechts(void) {
  Ruckwarts();
  FtDelay(600);
  Rechts();
  FtDelay(700);
  Stopp();
  FtDelay(500); }

UCHAR main(void) {
  sTrans.MPWM_Main[0] = 8;
  sTrans.MPWM_Main[1] = 8;
  sTrans.MPWM_Main[2] = 8;
  sTrans.MPWM_Main[3] = 8;
  sTrans.MPWM_Update = 0x01;
  do {
    if(sTrans.E_Main & 0x04) {
      Stopp();
      FtDelay(500);
      ZuruckLinks(); }
    else if(sTrans.E_Main & 0x08) {
      Stopp();
      FtDelay(500);
      ZuruckRechts(); }
    else {
      Vorwarts(); }
  } while(1);
  return(0);
}

Datei Hindernis1.C

Das Programm entspricht im Aufbau der vbaFish40-Lösung. Das Warten auf Impulse am Antriebsrad (WaitForChanges) wurde aber durch eine Pause (FtDelay, Firmware-Funktion) ersetzt (Grund : Faulheit). Anstelle der FishFace-Methoden wurde hier mit der TransferArea (sTrans) der Firmware gearbeitet, die TransferArea wird in 10 ms Intervallen von der Firmware upgedatet.

sTrans.M_Main erlaubt z.B. den Zugriff auf die Motorausgänge des Interfaces (alle gleichzeitig). Unterprogramm Vorwarts : sTrans.M_Main = 0x05; (binär 0101) setzt M1 und M2 auf links (FullSpeed, siehe sTrans.MPWM_Main), M3 und M4 werden abgeschaltet.

sTrans.E_Main & 0x04 maskiert die I-Ausgänge des Interfaces, ungleich 0 : I3 ist gesetzt.

Die Installation der Renesas Software (IDE und Compiler) läuft wie üblich, detaillierte Beschreibung (fischertechnik/Knobloch) in FtComp.ZIP : Renesas-Install.pdf.

Die Renesas IDE benötigt und erzeugt einen unheimlichen Wust von Dateien. Bei diesem kleinen Projekt mit einer EXE (die hier HEX heißt) von ca. 500 Byte sind das 28 Dateien und Ordner. Wenn man dann FtComp.ZIP : FtCComp.PDF (fischertechnik/Knobloch), Seiten 14 - 22 konsultiert ist das aber durchaus beherrschbar. Wenn man diesem Dateienwust noch zwei weitere hinzufügt, bekommt man eine Lösung in der die Zugriffe auf die TransferArea in Unterprogrammen gekapselt sind, vielleicht versöhnt man sich dann langsam doch mit der IDE und schimpft nur noch auf die Testmöglichkeiten.

Schwieriger wird es, wenn man mehr machen will, als der simple Zugriff auf die TransferArea hergibt, da sollte man dann die paar hundert (oder tausend) Seiten der Renesas Dokumentation zu Rate ziehen.

Conclusion

Es gibt mehrere gleichwertige Möglichkeiten einen Standard Mobile Robot kabelunabhängig zu Betreiben. Jeder sollte da nach seinen Vorlieben entscheiden. Meist dürfte es darauf hinauslaufen, bei den bisherigen Gewohnheiten zu bleiben. Bei textuellen Sprachen gibt es dann allerdings der Einsatz eines RF Datalink erforderlich. Für einen Kenner von Microprozessoren und der C-Programmierung ist auch ein - für Außenstehende - recht schwieriges Angebot wie das Renesas C / TransferArea eher eine Herausforderung und ein Vergnügen. 

Will man deutlich von den Vorgaben der Bauanleitung abweichen und z.B. Bauteile anschließen, ist Renesas C die einzige Alternative. Für einen "Neuen" kann das eine harte Durststrecke mit sich bringen.

Download

Das vbaFish40 Programm und das Renesas C Projekt sind in RoboMobil.ZIP enthalten.

Stand : 16.02.2006