ich könnte mir vorstellen, dass dein Modell mit deiner Fahrgestell-Geometrie auf Teppich, auf Rasen oder im Sand nicht ohne weiteres auf der Stelle drehen kann (und auch sonst nicht in engen Kurven), insb. wenn er mit 10kg++ beladen ist?
ich könnte mir vorstellen, dass dein Modell mit deiner Fahrgestell-Geometrie auf Teppich, auf Rasen oder im Sand nicht ohne weiteres auf der Stelle drehen kann (und auch sonst nicht in engen Kurven), insb. wenn er mit 10kg++ beladen ist?
ich könnte mir vorstellen (als ausbaustufe) zwischen die schrittmotor-winkel und den rahmen so etwas einzusetzen und die räder dann mit einem servo auszurichten. Ich wolte den roboter aber weder an die Ostsee mitnehmen, noch mit 10kg++ belasten. Das ginge beides natürlich nicht. Eigentlich ist mein ziel mit dem roboter feinere aufgaben im gelände zu erledigen. Einen sixpack Jever oder Radeberger müsste aber zu schaffen sein
gruß inka
es funktioniert grundsätzlich mit dem Drehen besser, wenn die Radachsen länger sind als der Abstand der Räder vorn-hinten!
Ich kann mir vorstellen, dass der ein oder andere gleich eine Lenkung einsetzen würde. Wobei Du verschiedene Möglichkeiten hast: nur die vorderen Zwei gemeinsam zu lenken, nur die vorderen Zwei einzeln zu lenken oder eventuell sogar alle Vier einzeln zu lenken.
Als Alternative sind die Mecanum-Räder hier schon öfter erwähnt worden. Davon gibt es mittlerweile eine größere Auswahl, hier mal ein Link.
Vielleicht solltest Du von Anfang eine Variante mit einplanen(?).
MfG
- - - Aktualisiert - - -
Jetzt kam mir gerade nochmal die Frage zum Gewicht, dass die Plattform bewegen könnte., deshalb mache jetzt mal hier explizit einen Frageabsatz draus:
Diese NEMA17 haben ca. 40ncm Max.-Drehmoment; wenn das so richtig ist und ich Pi mal Daumen drüber nachdenke - mit Radgröße, dürften etwa max. 1.5kg pro Motor rauskommen; die Plattform jetzt könnte - geschätzt - etwa 1.5kg auf die Waage bringen; da kommt noch der Akku dazu der einiges an Gewicht mit bringt; die spätere Nutzlast könnte bei 3 bis 4kg liegen? Inka was hattest Du so für eine Vorstellung?
ich dachte hier wirklich nur an eine alternative als "notlösung", wenn es ohne nicht geht, weil ja die notwendige mechanik das ganze komplizierter und störungsanfälliger macht. Und die möglichkeiten des 3D-drucks sind ja auch begrenzt...
ich habe schon die kombination aus 3 rädern durchmesser ca. 50mm
und vier rädern mit einem durchmesser von ca. 70mm
ausprobiert. In innenräumen ok, draussen nur begrenzt, weil sie doch recht schnell und gründlich verdrecken
Abgesehen vom preis, bei 100 mm durchmesser sind es sicher 30€ pro rad...
entspricht in etwa Deiner schätzung, die platform wiegt schon ohne den akku fast 2kg, die nutzlast schätze ich auf maximal 4-5kg...
gruß inka
ich hab mir jetzt noch einmal die beispiele ohne lib angeschaut, schwierig ist es wirklich nicht. Zumindest der anfang
der code funktioniert soweit, was mich noch ein bischen stört, sieht und hört man in dem video hier . Wenn zusätzlich zur stromversorgung (immer noch ein steckernetzteil) der atmega 2560 an der USB verbindung zum PC hängt passiert es nicht. Das kenne ich von den steppern 28BYJ_48 und ULN2003 treibern so nicht, da stand der Stepper beim einschalten.... Ob sich das bei akkuversorgung ändert?Code:// Define Stepper motor connections and steps per revolution: #define dirPin_VL 2 #define stepPin_VL 3 #define dirPin_HL 4 #define stepPin_HL 5 #define dirPin_VR 6 #define stepPin_VR 7 #define dirPin_HR 8 #define stepPin_HR 9 #define stepsPerRevolution 200 #define enbl_VL 40 #define enbl_HL 42 #define enbl_VR 41 #define enbl_HR 43 void setup() { // deklariere pins als output: pinMode(dirPin_VL, OUTPUT); pinMode(stepPin_VL, OUTPUT); pinMode(dirPin_HL, OUTPUT); pinMode(stepPin_HL, OUTPUT); pinMode(dirPin_VR, OUTPUT); pinMode(stepPin_VR, OUTPUT); pinMode(dirPin_HR, OUTPUT); pinMode(stepPin_HR, OUTPUT); Serial.begin(115200); // mache enaable pins stromlos: digitalWrite(enbl_VL, HIGH); digitalWrite(enbl_HL, HIGH); digitalWrite(enbl_VR, HIGH); digitalWrite(enbl_HR, HIGH); Serial.print("code---- /home/georg/Arduino/outdoor_robo/stepper/test_vier_stepper/ohne_lib/vier_stepper_ohne_lib_basic_example_idx_enbl_1"); } void loop() { // bestrome enable pins: digitalWrite(enbl_VL, LOW); digitalWrite(enbl_HL, LOW); digitalWrite(enbl_VR, LOW); digitalWrite(enbl_HR, LOW); // drehe alle vier Stepper langsam vorwaerts einmal herum: //set dir pinns vorwarts digitalWrite(dirPin_VL, LOW); digitalWrite(dirPin_HL, LOW); digitalWrite(dirPin_VR, HIGH); digitalWrite(dirPin_HR, HIGH); for (int i = 0; i < stepsPerRevolution; i++) { // These four lines result in 1 step: digitalWrite(stepPin_VL, HIGH); digitalWrite(stepPin_HL, HIGH); digitalWrite(stepPin_VR, HIGH); digitalWrite(stepPin_HR, HIGH); delayMicroseconds(2000); digitalWrite(stepPin_VL, LOW); digitalWrite(stepPin_HL, LOW); digitalWrite(stepPin_VR, LOW); digitalWrite(stepPin_HR, LOW); delayMicroseconds(2000); } delay(1000); // drehe alle vier Stepper schnell rueckwaerts einmal herum: //set dir pinns rueckwaerts digitalWrite(dirPin_VL, HIGH); digitalWrite(dirPin_HL, HIGH); digitalWrite(dirPin_VR, LOW); digitalWrite(dirPin_HR, LOW); for (int i = 0; i < stepsPerRevolution; i++) { // These four lines result in 1 step: digitalWrite(stepPin_VL, HIGH); digitalWrite(stepPin_HL, HIGH); digitalWrite(stepPin_VR, HIGH); digitalWrite(stepPin_HR, HIGH); delayMicroseconds(1000); digitalWrite(stepPin_VL, LOW); digitalWrite(stepPin_HL, LOW); digitalWrite(stepPin_VR, LOW); digitalWrite(stepPin_HR, LOW); delayMicroseconds(1000); } delay(1000); // drehe alle vier Stepper langsam vorwaerts fünf mal herum: //set dir pinns vorwarts digitalWrite(dirPin_VL, LOW); digitalWrite(dirPin_HL, LOW); digitalWrite(dirPin_VR, HIGH); digitalWrite(dirPin_HR, HIGH); for (int i = 0; i < 5* stepsPerRevolution; i++) { // These four lines result in 1 step: digitalWrite(stepPin_VL, HIGH); digitalWrite(stepPin_HL, HIGH); digitalWrite(stepPin_VR, HIGH); digitalWrite(stepPin_HR, HIGH); delayMicroseconds(2000); digitalWrite(stepPin_VL, LOW); digitalWrite(stepPin_HL, LOW); digitalWrite(stepPin_VR, LOW); digitalWrite(stepPin_HR, LOW); delayMicroseconds(2000); } delay(1000); // drehe alle vier Stepper schnell rueckwaerts fünf mal herum: //set dir pinns rueckwaerts digitalWrite(dirPin_VL, HIGH); digitalWrite(dirPin_HL, HIGH); digitalWrite(dirPin_VR, LOW); digitalWrite(dirPin_HR, LOW); for (int i = 0; i < 5* stepsPerRevolution; i++) { // These four lines result in 1 step: digitalWrite(stepPin_VL, HIGH); digitalWrite(stepPin_HL, HIGH); digitalWrite(stepPin_VR, HIGH); digitalWrite(stepPin_HR, HIGH); delayMicroseconds(500); digitalWrite(stepPin_VL, LOW); digitalWrite(stepPin_HL, LOW); digitalWrite(stepPin_VR, LOW); digitalWrite(stepPin_HR, LOW); delayMicroseconds(500); } delay(1000); }
gruß inka
Ich gebe noch mal den Tip. ein paar Varta-Batterien zu holen "D", hatte ich irgendwo schon mal genauer geschrieben. Einfach um sicher zu gehen und diese Frage zu beantworten.
Das ist jetzt mehr so ein Rätselraten, als für mich jedenfalls. Vielleicht weiß jemand anders mehr.
Nach dem Einschalten des Treibers kann sich der Stepper nicht bwegen, es sei denn, der Treiber bekommt die entsprechenden Signale.
MfG
gesagt, getan, ich hab ja (fast) alles zuhause
video
und nun? Woran kann das nun liegen?
gruß inka
An der Ansteuerung des Treibers, der bekommt Step-Signale etc.
Du hast es doch im lopp() so geschrieben!?
Verstehe jetzt nicht, was Du meinst! Was stört Dich jetzt daran, dass er links und rechts herum dreht, wenn das im Programm so steht? Ich stehe wohl etwas auf'm Schlauch, hilf mir mal!
MfG
Lesezeichen