Introduction: Hexapod Arduino Pololu Maestro Servo Controll
Nach dem mein erster Versuch mit einem Hexapod, daran gescheitert war das die servos zu schwach waren jetzt ein neuer Versuch mit mit 10Kg Servos aus HK.
Ausserdem habe ich mich für ein neuen Sevocontroller von Pololu entschieden.
Ausserdem habe ich mich für ein neuen Sevocontroller von Pololu entschieden.
Step 1: Material
- Arduino Nano
- Pololu Maestro Servo Controll 24
- BEC 15A
- 18 Servos 10 KG
- Pololu Carrier with Sharp GP2Y0D810Z0F Digital Distance Sensor 10cm
- ein paar Aluprofile
- 18 servowinkel
- 18 Kugellager
- ein Paar platten für das Body (alu holz oder....)
- Pololu Maestro Servo Controll 24
- BEC 15A
- 18 Servos 10 KG
- Pololu Carrier with Sharp GP2Y0D810Z0F Digital Distance Sensor 10cm
- ein paar Aluprofile
- 18 servowinkel
- 18 Kugellager
- ein Paar platten für das Body (alu holz oder....)
Step 2: Vorbereitung
•Bodyplatte schneiden
•Aluwinkel schneiden
•Winkel Bohren
Beim Schneiden der Bodyplatte habe ich mir diesmal überlegt, nicht wieder das ganze servo als Beweglichen teil zu machen. da das sehr auf die kraft des Servos geht, daher diesmal die Platte ausschneiden und das Servo in die Platte setzen.
Als nächstes schneide ich mir mein AluProfil mit dem innenmass von 46mm aus 20mm breite Uwinkel. Danach muss ich diese auf beiden Seiten Aufbohren mit einem 6mm Bohrer, Auf einer seite kommt Später das Kugellager rein und auf der anderen das Servohorn. Für dieses mus ich auch noch zwei kleine 2mm löcher bohren um das Servohorn fest zu schrauben.
Als nächstes schneide ich noch aus einen weiter Uprofil mit 20mm innenmass 60mm Stücke um die Servos dann auf der Längsachse zusammen zu Kleben können.
•Aluwinkel schneiden
•Winkel Bohren
Beim Schneiden der Bodyplatte habe ich mir diesmal überlegt, nicht wieder das ganze servo als Beweglichen teil zu machen. da das sehr auf die kraft des Servos geht, daher diesmal die Platte ausschneiden und das Servo in die Platte setzen.
Als nächstes schneide ich mir mein AluProfil mit dem innenmass von 46mm aus 20mm breite Uwinkel. Danach muss ich diese auf beiden Seiten Aufbohren mit einem 6mm Bohrer, Auf einer seite kommt Später das Kugellager rein und auf der anderen das Servohorn. Für dieses mus ich auch noch zwei kleine 2mm löcher bohren um das Servohorn fest zu schrauben.
Als nächstes schneide ich noch aus einen weiter Uprofil mit 20mm innenmass 60mm Stücke um die Servos dann auf der Längsachse zusammen zu Kleben können.
Step 3: Body Platte
•Bodyplatte Servo Montage
•Servos Ausrichten
So jetzt muss ich die servos in die Bodyplatte verbauen, im Anschluss werden Sie dann gleich auf den Servomittelpunkt ausgerichtet mit hilfe eines Servotesters.
•Servos Ausrichten
So jetzt muss ich die servos in die Bodyplatte verbauen, im Anschluss werden Sie dann gleich auf den Servomittelpunkt ausgerichtet mit hilfe eines Servotesters.
Step 4: Body Und Knie Servos
•Servohalterungen für Knie und Bodyservo zusammenbauen
•Kugellager in die Servohalterungen einsetzen
•Servohorn Verschrauben
Hier habe ich als erstes die Kugellager in das Loch der Aluwinkel eingeschlagen, auf der seite wo ich nur ein 6mm Loch im Winkel habe. Da die andern zwei 2 mm löcher für das Servohorn gebraucht werden...
Auf der anden Seite noch das Servohorn verschraauben.
Jetzt kann ich Die Winkel für Bady und Knie miteeinander verschrauben.
•Kugellager in die Servohalterungen einsetzen
•Servohorn Verschrauben
Hier habe ich als erstes die Kugellager in das Loch der Aluwinkel eingeschlagen, auf der seite wo ich nur ein 6mm Loch im Winkel habe. Da die andern zwei 2 mm löcher für das Servohorn gebraucht werden...
Auf der anden Seite noch das Servohorn verschraauben.
Jetzt kann ich Die Winkel für Bady und Knie miteeinander verschrauben.
Step 5: Servos Verbinden Knie Fuss
Das ist eigendlich das einfachste, servos zusammen in das 20mm Uprofil drücken und mit der Klebepistole auffüllen
Step 6: Fusswinkel
Für den Fuss habe ich gedacht es reicht wenn ich den winkel in der mitte anbohre und ein abstandshalter verschraube und am ende ein Radirgummi aufstecke um meinen Boden etwas zu schonen.
Step 7: Und Jetzt Das Wichtigste
Wenn wir jetzt alle Beine Fertig habe,
Werkstatt Aufräumen und etwas Sauber machen !!!!!
Werkstatt Aufräumen und etwas Sauber machen !!!!!
Step 8: Der Grosse Moment
•Lager winkel einsetzten
•Bode und Beine zusammenbauen
Ich habe diese Lagerwinkel noch garnicht erwähnt, (link zum händler folgt) diese habe ich im netz gefunden zum aufschieben auf das heck des Servos inkl beidseitigen klebestreifen und M3 mutter zum verschrauben des Kugellagers, echt coole sache um ein Servo auf zwei seiten lagern zu können.
Also alle Beine Auf das Body Montieren, und die Lagerschalen einsetzten und Verschrauben..
•Bode und Beine zusammenbauen
Ich habe diese Lagerwinkel noch garnicht erwähnt, (link zum händler folgt) diese habe ich im netz gefunden zum aufschieben auf das heck des Servos inkl beidseitigen klebestreifen und M3 mutter zum verschrauben des Kugellagers, echt coole sache um ein Servo auf zwei seiten lagern zu können.
Also alle Beine Auf das Body Montieren, und die Lagerschalen einsetzten und Verschrauben..
Step 9: Zum Herzstück, Pololu Maestro Controll
zum anschluss mus ich glaug ich nicht vile schreiben das kann man der PDF entnehmen.
Ich habe Channal 0- 17 für die servos genommen
wobei immer in der Reiche Body, Knie, Fuss
also servo 0 = Body, servo 1 = Knie, servo 2 = Fuss,
von Oben gesehen oben vorne
0 - 2 Rechtes vordere Bein
3 - 5 Rechtes mittleres Bein
6 - 8 Rechtes hintere Bein
9 - 11 Linkes hintere Bein
12 - 14 Linkes mittlere Bein
15 - 17 Linkes vordere Bein
channal 18 rechte IR sensor
19 linker IR sensor
Ich habe Channal 0- 17 für die servos genommen
wobei immer in der Reiche Body, Knie, Fuss
also servo 0 = Body, servo 1 = Knie, servo 2 = Fuss,
von Oben gesehen oben vorne
0 - 2 Rechtes vordere Bein
3 - 5 Rechtes mittleres Bein
6 - 8 Rechtes hintere Bein
9 - 11 Linkes hintere Bein
12 - 14 Linkes mittlere Bein
15 - 17 Linkes vordere Bein
channal 18 rechte IR sensor
19 linker IR sensor
Step 10: Skript
Am besten Ihr stellt mit hilfe der Software erst einmal ein eure min, mitte und max werte ein, und vergebt den Channels nahmen damit ihr nicht durcheinander kommt...
hier ist ein beispiel zu meiner vorwärts sequenz
# forward
sub forward
100 5504 5556 7680 4992 6016 7744
8000 5699 8000 5056 6129 4352
4864 6048 4800 7680 5896 4608
0 0 0 0 frame_0..17_20..23 # Frame 0
100 7104 5056 4800 frame_4_10_16 # Frame 1
100 4096 7360 6726 3584 7123 6016 frame_0_3_6_9_12_15 # Frame 2
100 5984 6208 5907 frame_4_10_16 # Frame 3
100 6784 6784 5056 frame_1_7_13 # Frame 4
100 5504 4992 8000 5056 4864 7680 frame_0_3_6_9_12_15 # Frame 5
eure wird natürlich etwas anderst sein denn es kommt immer auf die mittelstellung der servos an, wie sind die hörner montiert und wie genau hat man gearbeitet...
so müste dann euer code aussehen damit er erst einmal vorwärts Läuft.
# forward
begin
100 5504 5556 7680 4992 6016 7744
8000 5699 8000 5056 6129 4352
4864 6048 4800 7680 5896 4608
0 0 0 0 frame_0..17_20..23 # Frame 0
100 7104 5056 4800 frame_4_10_16 # Frame 1
100 4096 7360 6726 3584 7123 6016 frame_0_3_6_9_12_15 # Frame 2
100 5984 6208 5907 frame_4_10_16 # Frame 3
100 6784 6784 5056 frame_1_7_13 # Frame 4
100 5504 4992 8000 5056 4864 7680 frame_0_3_6_9_12_15 # Frame 5
repeat
sub frame_0..17_20..23
23 servo
22 servo
21 servo
20 servo
17 servo
16 servo
15 servo
14 servo
13 servo
12 servo
11 servo
10 servo
9 servo
8 servo
7 servo
6 servo
5 servo
4 servo
3 servo
2 servo
1 servo
0 servo
delay
return
sub frame_4_10_16
16 servo
10 servo
4 servo
delay
return
sub frame_0_3_6_9_12_15
15 servo
12 servo
9 servo
6 servo
3 servo
0 servo
delay
return
sub frame_1_7_13
13 servo
7 servo
1 servo
delay
return
hier ist ein beispiel zu meiner vorwärts sequenz
# forward
sub forward
100 5504 5556 7680 4992 6016 7744
8000 5699 8000 5056 6129 4352
4864 6048 4800 7680 5896 4608
0 0 0 0 frame_0..17_20..23 # Frame 0
100 7104 5056 4800 frame_4_10_16 # Frame 1
100 4096 7360 6726 3584 7123 6016 frame_0_3_6_9_12_15 # Frame 2
100 5984 6208 5907 frame_4_10_16 # Frame 3
100 6784 6784 5056 frame_1_7_13 # Frame 4
100 5504 4992 8000 5056 4864 7680 frame_0_3_6_9_12_15 # Frame 5
eure wird natürlich etwas anderst sein denn es kommt immer auf die mittelstellung der servos an, wie sind die hörner montiert und wie genau hat man gearbeitet...
so müste dann euer code aussehen damit er erst einmal vorwärts Läuft.
# forward
begin
100 5504 5556 7680 4992 6016 7744
8000 5699 8000 5056 6129 4352
4864 6048 4800 7680 5896 4608
0 0 0 0 frame_0..17_20..23 # Frame 0
100 7104 5056 4800 frame_4_10_16 # Frame 1
100 4096 7360 6726 3584 7123 6016 frame_0_3_6_9_12_15 # Frame 2
100 5984 6208 5907 frame_4_10_16 # Frame 3
100 6784 6784 5056 frame_1_7_13 # Frame 4
100 5504 4992 8000 5056 4864 7680 frame_0_3_6_9_12_15 # Frame 5
repeat
sub frame_0..17_20..23
23 servo
22 servo
21 servo
20 servo
17 servo
16 servo
15 servo
14 servo
13 servo
12 servo
11 servo
10 servo
9 servo
8 servo
7 servo
6 servo
5 servo
4 servo
3 servo
2 servo
1 servo
0 servo
delay
return
sub frame_4_10_16
16 servo
10 servo
4 servo
delay
return
sub frame_0_3_6_9_12_15
15 servo
12 servo
9 servo
6 servo
3 servo
0 servo
delay
return
sub frame_1_7_13
13 servo
7 servo
1 servo
delay
return
Step 11: Mein Completter Code
start:
# wenn beide sensoren on dann Back
left_sensor right_sensor logical_and
if back back goto start endif
# wenn linker sensor on dann nach rechts
left_sensor if back right right goto start endif
# wenn rechter sensor on dann nach links
right_sensor if back left left goto start endif
# wenn kein sensor dann Vorwärts
forward
goto start
sub left_sensor
19 get_position 512 less_than
return
sub right_sensor
18 get_position 512 less_than
return
### Sequence subroutines: ###
# back
sub back
350 5504 6784 7680 4992 5984 7744
8000 6784 8000 5056 6208 4352
4864 5056 4800 7680 5907 4608
0 0 0 0 frame_0..17_20..23 # Frame 0
350 7360 3591 6040 frame_3_9_15 # Frame 1
350 4096 6720 7168 frame_0_6_12 # Frame 2
350 5556 5632 6165 frame_1_7_13 # Frame 3
350 7104 5056 4800 frame_4_10_16 # Frame 4
350 5504 4992 8000 5056 4897 7680 frame_0_3_6_9_12_15 # Frame 5
350 5973 6219 5929 frame_4_10_16 # Frame 6
return
# forward
sub forward
100 5504 5556 7680 4992 6016 7744
8000 5699 8000 5056 6129 4352
4864 6048 4800 7680 5896 4608
0 0 0 0 frame_0..17_20..23 # Frame 0
100 7104 5056 4800 frame_4_10_16 # Frame 1
100 4096 7360 6726 3584 7123 6016 frame_0_3_6_9_12_15 # Frame 2
100 5984 6208 5907 frame_4_10_16 # Frame 3
100 6784 6784 5056 frame_1_7_13 # Frame 4
100 5504 4992 8000 5056 4864 7680 frame_0_3_6_9_12_15 # Frame 5
return
# left
sub left
300 5504 5556 7680 7360 5994 7744
8000 5643 8000 5056 6185 4352
7168 6122 4800 7680 5896 4608
0 0 0 0 frame_0..17_20..23 # Frame 0
300 4096 4992 6720 3584 4864 6040 frame_0_3_6_9_12_15 # Frame 1
300 6606 6784 5056 frame_1_7_13 # Frame 2
300 5504 8000 7168 frame_0_6_12 # Frame 3
300 5568 5598 6112 frame_1_7_13 # Frame 4
300 7104 5078 4800 frame_4_10_16 # Frame 5
300 4096 7360 6720 5056 4864 7680 frame_0_3_6_9_12_15 # Frame 6
return
# right
sub right
300 4806 5556 7680 6176 5994 7744
7372 5643 8000 4334 6185 4352
5993 6122 4800 6856 5896 4608
0 0 0 0 frame_0..17_20..23 # Frame 2
300 5504 7360 8000 5056 7168 7680 frame_0_3_6_9_12_15 # Frame 1
300 4096 6784 6720 6784 4864 5056 frame_0_1_6_7_12_13 # Frame 2
300 5579 5643 6133 frame_1_7_13 # Frame 3
300 7104 5056 4800 frame_4_10_16 # Frame 4
300 5504 4992 8000 3584 7168 6016 frame_0_3_6_9_12_15 # Frame 5
return
# startup
sub startup
500 4820 5603 7680 6187 5984 7744
7360 5620 8000 4327 6208 4352
5993 6122 4800 6823 5907 4608
0 0 0 0 frame_0..17_20..23 # Frame 0
500 4387 6132 4864 6159 4480 6368
7348 5828 7210 6337 7104 6061 frame_1_2_4_5_7_8_10_11_13_14_16_17 # Frame 1
500 4096 4992 6720 3598 4864 6016 frame_0_3_6_9_12_15 # Frame 3
500 5504 7360 8000 5056 7168 7680 frame_0_3_6_9_12_15 # Frame 3
500 4779 6164 7372 4334 5982 6848 frame_0_3_6_9_12_15 # Frame 4
500 5568 7650 5994 7744 5632 8000
6219 4352 6154 4800 5929 4608 frame_1_2_4_5_7_8_10_11_13_14_16_17 # Frame 5
200 5504 7360 8000 5056 7168 7680 frame_0_3_6_9_12_15 # Frame 6
200 4096 4992 6720 3584 4864 6016 frame_0_3_6_9_12_15 # Frame 7
200 5504 7360 8000 5056 7168 7680 frame_0_3_6_9_12_15 # Frame 9
200 4096 4992 6720 3584 4864 6016 frame_0_3_6_9_12_15 # Frame 7
200 5504 7360 8000 5056 7168 7680 frame_0_3_6_9_12_15 # Frame 9
200 4800 6176 7360 4334 6038 6848 frame_0_3_6_9_12_15 # Frame 8
return
sub frame_0..17_20..23
23 servo
22 servo
21 servo
20 servo
17 servo
16 servo
15 servo
14 servo
13 servo
12 servo
11 servo
10 servo
9 servo
8 servo
7 servo
6 servo
5 servo
4 servo
3 servo
2 servo
1 servo
0 servo
delay
return
sub frame_3_9_15
15 servo
9 servo
3 servo
delay
return
sub frame_0_6_12
12 servo
6 servo
0 servo
delay
return
sub frame_1_7_13
13 servo
7 servo
1 servo
delay
return
sub frame_4_10_16
16 servo
10 servo
4 servo
delay
return
sub frame_0_3_6_9_12_15
15 servo
12 servo
9 servo
6 servo
3 servo
0 servo
delay
return
sub frame_0_1_6_7_12_13
13 servo
12 servo
7 servo
6 servo
1 servo
0 servo
delay
return
sub frame_1_2_4_5_7_8_10_11_13_14_16_17
17 servo
16 servo
14 servo
13 servo
11 servo
10 servo
8 servo
7 servo
5 servo
4 servo
2 servo
1 servo
delay
return
# wenn beide sensoren on dann Back
left_sensor right_sensor logical_and
if back back goto start endif
# wenn linker sensor on dann nach rechts
left_sensor if back right right goto start endif
# wenn rechter sensor on dann nach links
right_sensor if back left left goto start endif
# wenn kein sensor dann Vorwärts
forward
goto start
sub left_sensor
19 get_position 512 less_than
return
sub right_sensor
18 get_position 512 less_than
return
### Sequence subroutines: ###
# back
sub back
350 5504 6784 7680 4992 5984 7744
8000 6784 8000 5056 6208 4352
4864 5056 4800 7680 5907 4608
0 0 0 0 frame_0..17_20..23 # Frame 0
350 7360 3591 6040 frame_3_9_15 # Frame 1
350 4096 6720 7168 frame_0_6_12 # Frame 2
350 5556 5632 6165 frame_1_7_13 # Frame 3
350 7104 5056 4800 frame_4_10_16 # Frame 4
350 5504 4992 8000 5056 4897 7680 frame_0_3_6_9_12_15 # Frame 5
350 5973 6219 5929 frame_4_10_16 # Frame 6
return
# forward
sub forward
100 5504 5556 7680 4992 6016 7744
8000 5699 8000 5056 6129 4352
4864 6048 4800 7680 5896 4608
0 0 0 0 frame_0..17_20..23 # Frame 0
100 7104 5056 4800 frame_4_10_16 # Frame 1
100 4096 7360 6726 3584 7123 6016 frame_0_3_6_9_12_15 # Frame 2
100 5984 6208 5907 frame_4_10_16 # Frame 3
100 6784 6784 5056 frame_1_7_13 # Frame 4
100 5504 4992 8000 5056 4864 7680 frame_0_3_6_9_12_15 # Frame 5
return
# left
sub left
300 5504 5556 7680 7360 5994 7744
8000 5643 8000 5056 6185 4352
7168 6122 4800 7680 5896 4608
0 0 0 0 frame_0..17_20..23 # Frame 0
300 4096 4992 6720 3584 4864 6040 frame_0_3_6_9_12_15 # Frame 1
300 6606 6784 5056 frame_1_7_13 # Frame 2
300 5504 8000 7168 frame_0_6_12 # Frame 3
300 5568 5598 6112 frame_1_7_13 # Frame 4
300 7104 5078 4800 frame_4_10_16 # Frame 5
300 4096 7360 6720 5056 4864 7680 frame_0_3_6_9_12_15 # Frame 6
return
# right
sub right
300 4806 5556 7680 6176 5994 7744
7372 5643 8000 4334 6185 4352
5993 6122 4800 6856 5896 4608
0 0 0 0 frame_0..17_20..23 # Frame 2
300 5504 7360 8000 5056 7168 7680 frame_0_3_6_9_12_15 # Frame 1
300 4096 6784 6720 6784 4864 5056 frame_0_1_6_7_12_13 # Frame 2
300 5579 5643 6133 frame_1_7_13 # Frame 3
300 7104 5056 4800 frame_4_10_16 # Frame 4
300 5504 4992 8000 3584 7168 6016 frame_0_3_6_9_12_15 # Frame 5
return
# startup
sub startup
500 4820 5603 7680 6187 5984 7744
7360 5620 8000 4327 6208 4352
5993 6122 4800 6823 5907 4608
0 0 0 0 frame_0..17_20..23 # Frame 0
500 4387 6132 4864 6159 4480 6368
7348 5828 7210 6337 7104 6061 frame_1_2_4_5_7_8_10_11_13_14_16_17 # Frame 1
500 4096 4992 6720 3598 4864 6016 frame_0_3_6_9_12_15 # Frame 3
500 5504 7360 8000 5056 7168 7680 frame_0_3_6_9_12_15 # Frame 3
500 4779 6164 7372 4334 5982 6848 frame_0_3_6_9_12_15 # Frame 4
500 5568 7650 5994 7744 5632 8000
6219 4352 6154 4800 5929 4608 frame_1_2_4_5_7_8_10_11_13_14_16_17 # Frame 5
200 5504 7360 8000 5056 7168 7680 frame_0_3_6_9_12_15 # Frame 6
200 4096 4992 6720 3584 4864 6016 frame_0_3_6_9_12_15 # Frame 7
200 5504 7360 8000 5056 7168 7680 frame_0_3_6_9_12_15 # Frame 9
200 4096 4992 6720 3584 4864 6016 frame_0_3_6_9_12_15 # Frame 7
200 5504 7360 8000 5056 7168 7680 frame_0_3_6_9_12_15 # Frame 9
200 4800 6176 7360 4334 6038 6848 frame_0_3_6_9_12_15 # Frame 8
return
sub frame_0..17_20..23
23 servo
22 servo
21 servo
20 servo
17 servo
16 servo
15 servo
14 servo
13 servo
12 servo
11 servo
10 servo
9 servo
8 servo
7 servo
6 servo
5 servo
4 servo
3 servo
2 servo
1 servo
0 servo
delay
return
sub frame_3_9_15
15 servo
9 servo
3 servo
delay
return
sub frame_0_6_12
12 servo
6 servo
0 servo
delay
return
sub frame_1_7_13
13 servo
7 servo
1 servo
delay
return
sub frame_4_10_16
16 servo
10 servo
4 servo
delay
return
sub frame_0_3_6_9_12_15
15 servo
12 servo
9 servo
6 servo
3 servo
0 servo
delay
return
sub frame_0_1_6_7_12_13
13 servo
12 servo
7 servo
6 servo
1 servo
0 servo
delay
return
sub frame_1_2_4_5_7_8_10_11_13_14_16_17
17 servo
16 servo
14 servo
13 servo
11 servo
10 servo
8 servo
7 servo
5 servo
4 servo
2 servo
1 servo
delay
return