Sonntag, 1. Dezember 2013
Brotbretter
Ich habe mir inzwischen ein Arduino Motor-Shield besorgt, um bei der späteren Hardware die Motoren treiben zu können. Um den Treiber zu testen, habe ich einen kleinen Teststand aufgebaut auf dem ich einen Motor mit einer Luftschraube betreiben kann. Die Kratzer auf dem Aluminium sind meinem handwerklichen Geschick zu schulden, aber seit heute kann ich immerhin sagen: "Ja, ich habe schon einmal mit einem Proxxon frei Hand gefräst." Für den Gesellenbrief genügt es vermutlich nicht, aber glücklicherweise bietet das Ergebnis dennoch ausreichend Halt…



Hier betreibe ich den Motor selbst bereits direkt mit der Batteriespannung. Das Galileo-Board würde ich auch gerne an dem gleichen Batteriepack betreiben. Dafür fehlt mir aber noch ein einfacher DCDC-Spannungswandler (Teile kommen hoffentlich nächste Woche)…

Ich habe erstmalig auch meinen Speed-Blitz testen können. Und in der Tat ist er recht schnell, möchte ich mal behaupten, wenn man sich den quasi stehenden Rotor anschaut.





Die Motoransteuerung selbst war leichter als ich erwartet hatte. Das Arduino-Shield lässt sich leicht über GPIOs und die PWM Ausgänge kontrollieren. Da ich ja ein eigenes Linux aufgespielt habe, kann ich z.Zt. leider keine Sketches aufspielen. Die einzelnen Ausgänge können jedoch direkt als Dateien in dem Linux-Dateisystem angesprochen werden.

Auch hier hat Sergey Kiselev wieder eine schöne (Englische) Einführung geschrieben:

http://www.malinov.com/Home/sergey-s-blog/intelgalileo-programminggpiofromlinux

Um den Motor an Ausgang B des Shields zu steuern muss ich nun PWM Channel 4 an Pin 11, sowie die GPIOS 13 (Drehrichtung) und 8 (Bremse) programmieren. Unter Linux muss ich dazu einmal die Multiplexer an Linux GPIO ID 43 sowie 55 auf 1 programmieren. Die Linux GPIOs für 13 und 8 sind 39 und 26 respektive.

Die jeweiligen Sequenzen habe ich mir in Shell-Skripte gepackt:

PWM Sequenz

echo -n "4" > /sys/class/pwm/pwmchip0/export
echo -n "1" > /sys/class/pwm/pwmchip0/pwm4/enable
echo -n "1000000" > /sys/class/pwm/pwmchip0/pwm4/period 
echo -n "500000" > /sys/class/pwm/pwmchip0/pwm4/duty_cycle 
echo -n "4" > /sys/class/pwm/pwmchip0/unexport

Brake Sequenz

echo -n "26" > /sys/class/gpio/export
echo -n "out" > /sys/class/gpio/gpio26/direction
echo -n "$1" > /sys/class/gpio/gpio26/value
echo -n "26" > /sys/class/gpio/unexport

Direction Sequenz

echo -n "39" > /sys/class/gpio/export
echo -n "out" > /sys/class/gpio/gpio39/direction
echo -n "$1" > /sys/class/gpio/gpio39/value
echo -n "39" > /sys/class/gpio/unexport

Das Einschalten kann dann z.B. einfach über die Eingabe

./engineB_setBrake.sh 0

durchgeführt werden.

... comment

 
Addendum
Ach ja, nachdem ich heute erfahren habe, dass tatsächlich einige wenige in diesen Blog hineinschauen...

Ja, ich weiß!

Wenn man sich den LAN-Port und die Versorgungsspannungsbuchse anschaut, hätte ich besser das Galileo Board und den Rotor in der Lage auf dem Brett vertauscht, bzw. beide Aufbauten auf dem Foto nach rechts verschoben. Aber wie das Leben manchmal so spielt passieren manche Dinge eben und hinterher weiß man immer mehr...

... link  


... comment