Liste der Anhänge anzeigen (Anzahl: 3)
Hallo Virtuelx,
ich habe zu wenig Erfahrung mit einer kraftschlüssigen Verbindung zwischen Metallwelle und Kuststoffrad per Heißklebepistole. Aber vermutlich wird das nicht lange halten.
Ja, das sind meine Bilder am Mitnehmer. Als erstes Robotergehäuse habe ich erst einmal eine Plastikschale verwendet. Dummerweise fliegt die Elektronik dauernd darin herum. Und dann habe ich bemerkt, dass ich die Motoren nicht mittig befestigt habe. Dadurch dreht der Roboter links herum weiter als rechts herum mit der gleichen Anzahl von Schritten. Nachdem ich das festgestellt hatte war das der auslösende Moment für die Konstruktion eines richtigen Robotergehäuses. Ich habe das Teil leider erst am 23.12. bestellt und muß mich bis Mitte Januar noch gedulden bis ich die Teile bekomme. Hier schon mal ein paar gerenderte Bilder:
Anhang 20944Anhang 20945Anhang 20946
Ganz billig ist so ein Gehäuse leider nicht. Aber was halbwegs professionelles geht nicht ohne eine gewisse Präzision...
Freigegeben zum Nachbestellen habe ich die Gehäusekonstruktion noch nicht, weil ich erst die mechanische Haltbarkeit ausprobieren will. Bei ein paar hundert Euro wären Leute die das Teil bestellen wahrscheinlich ziemlich sauer wenn das Teil bei Belastung zerbröselt.
Die Ultraschallsensoren benötigen zwischen dem Senden und dem Empfangen ein ziemlich genaues Timing. Zum Beispiel muß zwischen 2 Messungen ein Zeitabstand von 54 Millisekunden eingehalten werden. Der auslösende Impuls soll 10 Mikrosekunden lang sein. Anschließend muß auf die Antwort gewartet werden und die Zeit dazu gemessen werden (möglichst exakt). Die Zeitdauer ist beim SRF05 definiert mit 100 ys nis 25 ms.
Bei einem Roboter mit Schrittmotoren mit einer Auflösung von 200 Schritten pro Umdrehung der im 1/4 Schritt- Betrieb betrieben wird hat man pro Umdrehung 800 Schritte die in konstantem Abstand vom Microcontroller am Motorcontroller angefordert werden müssen.
Bei 2 Radumdrehungen pro Sekunde sind das dann 2 x 800 = 1600 Schritte pro Sekunde. Damit muß dann alle 0,625 Millisekunden ein Schritt vom Microcontroller angefordert werden.
Ich habe das so gelöst, dass der Arduino einen Timer benutzt. Der Timer bekommt einen Startwert und zählt dann aud Null runter. Bei Null wird ein Interrupt ausgelöst. In der Interruptroutine gebe ich dann die Motorenimpulse und setze die Startwerte für den Timer neu. Mit der Variation der Startwerte kann ich den Roboter dann sanft beschleunigen und abbremsen.
In der Hauptroutine mache ich dann alle anderen Sachen (Infrarot- Entfernungsmessung, Ultraschall- Entfernungsmessung und Wegeplanung). Das Verfahren funktioniert bei mir problemlos.
Falls Du anstatt von Schrittmotoren mit Getriebemotoren arbeitest der per PWM angesteuert wird dann hast Du dieses Problem natürlich nicht.