AU.ROB Menü

21. Nov. 2011

Rasterscheibe zum Messen der UmdrehungenUm eine halbwegs genaue Positionsbestimmung zu machen ist es notwenig zu wissen wo sich mein AU.ROB bewegt. Habe heute mal begonnen für jede Achses eine Gabellichtschranke (TCYS5201) zu verbauen. Auf jeder Achse sitzt eine Rasterscheibe. Gemessen werden einfach die Impulse die mir die IR Lichtschranken liefern.
Zum Herstellen der Rasterscheibe hab ich ein Excel File verwendet welches ich im Roboternetz.de gefunden haben (hier gehts zum Download) – vielen Dank an Manf!

Das erste Bild zeigt die Ausgangsbasis für meine Rasterscheiben. Nachdem ich die Scheibe auf die richtige Größe gebracht habe, habe ich diese auf einen Karton aufgebracht.

Da ich mir beim Aufbau des AU.ROB noch keine Gedanken bzgl. Rasterscheiben gemacht habe, und ich keine Lust habe den Antrieb zu zerlegen wird improvisiert. Ich mache von einer Seite bis zur Mitte einen Schnitt und stecke die Scheibe auf die Achse. Danach wird der Schnitt bestmöglich verklebt. Fertig ;)

Die Messung der Geschwindigkeit bzw. der Umdrehungen an den Achsen erfolgt durch jeweils eine TCYS5201 Gabellichtschranke. Meine Rasterscheibe hat eine Auflösung von 30, d.h. eine Umdrehung sind bei mir 30 Signale (1). Der erste Funktionstest war eigentlich sehr gut, mit meinem Testprogramm ist AU.ROB vier Meter gerade aus gefahren, hat dann eine 180° Drehung gemacht, wieder vier Meter zurück, nochmal eine 180° Drehung – die Abweichung bei ca. 15 Versuchen lag von 0 bis 15cm. Bis jetzt ist es mir allerdings noch nicht gelungen diese zu beseitigen – ich vermute bzw. bin mir fast sicher dass es an den professionell gefertigten Rasterscheiben liegt.

Eines der nächsten Ziele wird sein, eine Map zu erstellen – gemeinsam mit dem Kompass und den gefahrenen Strecken sollte dies möglich sein.

Mehr Info zur Odometrie (noch nicht fertig) und meiner Lösung (Testprogramm, ….)

20. Nov. 2011

Mein erstes Kompass Modul hat ja nach ein paar Tagen seine Funktion verweigert. Um sicher zu stellen dass der Fehler nicht bei mir liegt, habe ich mir ein neues Kompass Modul(HDMM01 von Pollin) bestellt und diese Woche bekommen.
Das neue Modul funktioniert und liefert mit meinem Programm wieder Werte. Ich übernehme die neuen Werte auch bereits in mein C# Programm.

Unten ein Screenshot meines Steuerprogramms (geschrieben in C#). Zu sehen ist der obere Ausschnitt. Daten werden vom Arduino übernommen und dargestellt. Die grafischen Darstellung der gelieferten Daten ist im unteren Bereich des Tools angesiedelt. Das Soll° Eingabefeld bzw der eingegebene Wert wird zum Arduino übertragen, der Bot richtet sich dann an dieser Eingabe aus.

Foto folgt in Kürze ….

16. Nov. 2011

Vor einiger Zeit hatte glaube c’t mal eine Serie mitunter mit dem Spiel LunarLanding im Netz. Älteren von uns durchaus noch ein Begriff ;) für alle anderen ein nettes Spiel um z.B. ein wenig mit ein G-Sensor herum zu spielen.

Ich hab mich auf die Suche gemacht und tatsächlich noch alles gefunden, frei nach der Devise – gelöscht wird schon mal gar nichts ….

Rechts und Links wird natürlich mit dem G-Sensor gesteuert – der Antrieb liegt auf einen Schalter. Nachfolgend ein kleines Video und das wirklich nicht sehr aufregende Arduino Programm.

//**********************************************
int xPin = 3; // X-Achse
int yPin = 4; // Y-Achse
int zPin = 5; // Z-Achse
int buttonPin = 10; // Schalter

void setup() {
Serial.begin(9600);
pinMode(buttonPin, INPUT);
}

void loop() {
Serial.print(analogRead(xPin));
Serial.print(” “);
Serial.print(analogRead(yPin));
Serial.print(” “);
Serial.print(analogRead(zPin));
Serial.print(” “);
Serial.print(digitalRead(buttonPin));
Serial.println();
delay(50);
}

15. Nov. 2011

Arduino mit ADXL335: Der Aufbau ist extrem simpel. Folgende Anschlüsse stehen beim ADXL335 zur Verfügung: VCC, GND, X, Y, Z, ST. Als Eingänge am Arduino habe ich die Analogeingänge A2, A3 und A4 für X, Y und Z verwendet.

Am Arduino mache ich mit den gelieferten Daten nicht (wie auch bei allen anderen Sensoren) sonder gebe diese nur aus um die Daten auf meinem Notebook aufzusaugen und weiter zu bearbeiten. Hierfür hab ich mir in C# ein kleines Testprogramm geschrieben welches die gelieferten Daten darstellt. (mehr unter: Hard- und Software)

Nachfolgend ein kleines Video wie der ADXL335 Beschleunigungssensor in Verbindung mit meinem Arduino Mega und meinem Testprogramm arbeitet:

Eine andere Ausgabe welche sich extrem gut zum Testen bzw. Darstellen von Werten eignet erstellt mit ADXLgraph (c) by David A. Mellis. Auch hier noch ein kleines Video dazu:

15. Nov. 2011

Seit heute funktioniert mein Kompass Modul nicht mehr. Weder an der Software noch an der Hardware wurden Änderungen gemacht – sehr komisch!!!
Habe mir heute nochmal das gleiche Kompass Modul(HDMM01 von Pollin) bestellt um zu testen ob es an mir oder an dem Modul liegt, ich hoffe das Teil kommt bald.

Weiters in den Einkaufskorb gefallen sind einige Gabellichtschranken (TCYS5201) und IR Dioden udn Fototransistoren. Der nächste Schritt ist, meinen AU.ROB kontrolliert fahren zu lassen, was mit den verwendeten Motoren ziemlich schwierig werden wird.

Mit dem Kompass und der Information welches Rad wieviel gedreht hat, sollte der AU.ROB immer wissen wo er ist, von wo er gekommen ist und wo es ev. hingehen soll ;) Das Ganze natürlich mit ein wenig Abweichungen da z.B. der Schlupf am Rad nicht berücksichtigt wird und der Kompass auch nicht 100%ig genau ist.

6. Nov. 2011

Heute wird das Kompass Modul HDMM01 von Pollin verbaut. Viel gibt es zu dem Modul nicht zu sagen. Angeschlossen wird VCC, GND, SCL (Clock) und SLD (Data). Das Kompassmodul gibt zwei Werte zurück – jede Achse misst eine Komponente des Magnetfeldvektors (sagen wir mal x und y dazu).

Mit dem unten gelisteten Programm lese ich die Daten aus dem Kompass Modul aus.

In Excel dargestellt sieht eine (sehr ungenaue) Drehung nach link und daraufvolgende Drehung nach rechts wie folgt aus.

Rechnet man die Ergebnisse entsprechend um, bekommt man x/y Punkte (siehe Bild Nr.2) welche man dann ganz einfach in einen Winkel umrechnen kann – das ist alles.

Die hieraus resultierenden Daten verwende ich für die Darstellung meiner Kompassnadel.

Noch eine kleine Anmerung – je nachdem ob
x = positiv oder neagtiv
y = positiv oder negativ

-> abhängig davon ist dann klar in welchen Quadranten ich mich bewege.

#include <Wire.h>

#define  I2ADDR       0×30
#define  TakeMeasure  0×01
void setup(){
Wire.begin();
Serial.begin(9600);
Serial.println(“Start Programm”);
}
void loop(){
byte MsbX,LsbX,MsbY,LsbY;
int x,y;
char line[80];
Wire.beginTransmission(I2ADDR); // Pollin HDMM01
Wire.send(0×00);   // Adressfeld ist hier nicht wichtig
Wire.send(TakeMeasure);
Wire.endTransmission();
delay(20);
Wire.beginTransmission(I2ADDR);
Wire.send(0×01);
Wire.requestFrom(I2ADDR, 4);

while(Wire.available()<4);
MsbX  =Wire.receive();          // obere  4 Bit X
LsbX  =Wire.receive();          // untere 8 Bit X
MsbY  =Wire.receive();          // obere  4 Bit Y
LsbY  =Wire.receive();          // untere 8 Bit Y
Wire.endTransmission();         // stop transmitting
x=((MsbX&0x0f)*256)+(LsbX);
y=((MsbY&0x0f)*256)+(LsbY);
x = map(x, 1900, 2188, -180, 180);
y = map(y, 1910, 2193, -180, 180);
double mygrad = atan2(x, y)*180/3.1415927410;
if (mygrad < 0)    mygrad = mygrad +360;
// Ausgabe von X, Y und Grad
Serial.print(“KOM:”);
Serial.print(x);
Serial.print(“;”);
Serial.print(y);
Serial.print(“;”);
Serial.println(mygrad);
delay(200);
}

6. Nov. 2011

Für mein Notebook und die Webcam welche mitunter für die Gesichtserkennung zuständig ist, hat der AU.ROB nun einen “Deckel” bekommen. Hier der aktuelle Zwischenstand des AU.ROB No.2:

6. Nov. 2011

Nach längerem komm ich nun wieder ein wenig zum Basteln und Programmieren. Den US Sensor hab ich jetzt auf einen Servo montiert welcher permanent hin und her schwenkt um Hindernisse zu erkennen.

Durch den US Sensor sind die beiden IR Sensoren fast überflüssig geworden.

Letzte Kommentare

Links

Letzte Artikel

Roboternetz.de

Copyright © Roboternetz.de - Alle Rechte vorbehalten.

Archive