- 3D-Druck Einstieg und Tipps         
Ergebnis 1 bis 10 von 26

Thema: sainsmart-car mit omni wheels

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Robotik Einstein Avatar von inka
    Registriert seit
    29.10.2006
    Ort
    nahe Dresden
    Alter
    77
    Beiträge
    2.180

    sainsmart-car mit omni wheels

    hallo allerseits,

    ich war nicht sicher ob ich ein neues thema aufmachen soll, aber es passt eigentlich nirgends zu den momentan laufenden themen dazu. Ich habe (schon 2017) dieses hier gekauft:

    sainsmart-car und den motor-treiber V1.

    Zunächst waren die TT-motoren drin, die habe ich dann durch diese Schrittmotoren ersetzt. Es lief ganz gut, irgendwann mal habe ich die TT-motoren wieder eingebaut, war aber mit der geschichte nicht so ganz zufrieden...

    Jetzt habe ich das gerät aus dem selbstgedruckten frischaltebeutel (hallo Moppi ) - nach dem ich die staubschicht enfernt habe - wieder reaktiviert. Der wesentlicher grund dafür war eine falschlieferung. Die chinesen haben mir statt der omniwheels 100mm auf die ich händereibend für den outdoor warte, die mit 60mm durchmesser geliefert. Darf ich behalten, geld wird zurückgezahlt. Kulant sind die, auch wenn teilweise seehhhr langsam...

    Vier adapter für die räder gedruckt (herrlich dass man sowas machen kann) und so sieht das gerät nun aus:

    Klicke auf die Grafik für eine größere Ansicht

Name:	2020_01_26_von_oben.jpg
Hits:	21
Größe:	77,7 KB
ID:	34764 Klicke auf die Grafik für eine größere Ansicht

Name:	2020_01_26_linien_folge_module.jpg
Hits:	20
Größe:	41,2 KB
ID:	34765 Klicke auf die Grafik für eine größere Ansicht

Name:	2020_01_26_omni_wheel.jpg
Hits:	21
Größe:	44,8 KB
ID:	34766 Klicke auf die Grafik für eine größere Ansicht

Name:	2020_01_26_module.jpg
Hits:	22
Größe:	54,5 KB
ID:	34767

    jetzt bin ich aber wieder so weit wie schon 2017. Die ansteuerung der motoren über die sainsmart lib lässt zu wünschen übrig. Mit solchen funktionen:
    Code:
    void zehn_ms_links_schieben(void)
    {
      currentMillis = millis();
    
      if (currentMillis - previousMillis > dauer_fahrt)
      {
    
    //    Serial.println("10ms links schieben");
        motor_hl->setSpeed(s_speed);
        motor_hr->setSpeed(s_speed);
        motor_vr->setSpeed(s_speed);
        motor_vl->setSpeed(s_speed);
    
        motor_hl->run(FORWARD);
        motor_hr->run(BACKWARD);
        motor_vr->run(FORWARD);
        motor_vl->run(BACKWARD);
    
        dauer_fahrt = 10;
    
      }
    }
    kann man zwar kurze sequenzen machen, einen gleichmässigen lauf bekomme ich z.b. nicht hin...

    @Rabenauge @Moppi: wie mach ihr das? Mit lib? Ohne Lib? Mit sonst noch was?

    EDIT: ich habe jetzt den motortreiber V2 eingebaut
    Geändert von inka (26.01.2020 um 14:44 Uhr) Grund: link hinzu
    gruß inka

  2. #2
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    18.03.2018
    Beiträge
    2.650
    Hallo Inka,

    schön, dass Du wieder da bist!
    Das mit dem selbstgedruckten Frischhaltebeutel, finde ich noch immer sehr originell

    Wegen der Frage:
    Ich nehme nie Bibliotheken, wenn ich die nicht brauche. Also im Grunde für alles Einfache keine Lib.

    Aber trotzdem noch mal nachgefragt, hast Du jetzt wieder die TT-Motoren (also Getriebe) eingebaut?
    Und warum läuft das nicht gleichmäßig?

    Was ich herausgefunden habe ist, die beste Variante, wie ich finde:

    1. Die Motorspannung für die TT-Getriebemotoren auf ein Maximum einstellen (Max. Geschwindigkeit), das können 6V sein oder 4.5V, je nach Gewicht.
    2. Das PWM-Signal möglichst hoch im Wert zu verwenden. Also eben dann 1023 für MAX-Speed. Dann liegt die volle Spannung an (unzerhackt) und die Motoren haben genug Drehmoment, um das Gefährt anzuschieben.
    3. Zum Fahren dann das PWM-Signal herunterregeln, je nachdem, welcher Motor zu schnell läuft. S. Gabelleichtschranke + Lochscheibe an den TT-Getrieben.

    Weiter bin ich damit noch nicht.
    Wir waren aber schon so weit, dass klar war, dass diese TT-Getriebe nicht gleichmäßig drehen und eben nachgeregelt werden müssen.
    Bei den DC-Motoren geht die Geschwindigkeit eben mit steigender Spannung einher. So muss für langsame Fahrt die Spannung herunter geregelt werden. Dann wird so ein Motor aber schwächer. Es kann also passieren, dass ein Motor viel langsamer dreht, als der andere Motor. Also müssen die immer kontrolliert werden und die Spannung nachgeregelt, dass die wieder gleich schnell drehen. Bei vier Motoren ist es nicht anders. Wenn man das ordentlich hinbekommt, funktioniert das auch gut.


    MfG
    Geändert von Moppi (26.01.2020 um 16:05 Uhr)

  3. #3
    Erfahrener Benutzer Robotik Einstein Avatar von inka
    Registriert seit
    29.10.2006
    Ort
    nahe Dresden
    Alter
    77
    Beiträge
    2.180
    Zitat Zitat von Moppi Beitrag anzeigen
    Aber trotzdem noch mal nachgefragt, hast Du jetzt wieder die TT-Motoren (also Getriebe) eingebaut?
    ja

    Zitat Zitat von Moppi Beitrag anzeigen
    Und warum läuft das nicht gleichmäßig?
    wenn ich das wüsste...

    hier der sehr einfacher:
    Code:
    #include <Wire.h>
    #include <Adafruit_MotorShield.h>
    #include "utility/Adafruit_MS_PWMServoDriver.h"
    
    
    Adafruit_MotorShield AFMS = Adafruit_MotorShield();
    
    Adafruit_DCMotor *motor_hl = AFMS.getMotor(1);
    Adafruit_DCMotor *motor_hr = AFMS.getMotor(2);
    Adafruit_DCMotor *motor_vr = AFMS.getMotor(3);
    Adafruit_DCMotor *motor_vl = AFMS.getMotor(4);
    
    
    void setup() 
    {
      Serial.begin(115200);
    
      AFMS.begin();
    
      // turn on motor
      motor_hl->run(RELEASE);
      motor_hr->run(RELEASE);
      motor_vr->run(RELEASE);
      motor_vl->run(RELEASE);
    
    }
    
    void loop() 
    {
      
        alle_motoren_vorwaerts();
    
    }
    
    void alle_motoren_vorwaerts (void)
    {
    
      motor_hl->setSpeed(150);
      motor_hr->setSpeed(150);
      motor_vr->setSpeed(150);
      motor_vl->setSpeed(150);
    
      motor_hl->run(FORWARD);
      motor_hr->run(FORWARD);
      motor_vr->run(FORWARD);
      motor_vl->run(FORWARD);
    
    }
    die ersten 5 sekunden ist alles ok, dann fangen - ohne einen erkennbaren grund - die beiden hinteren motoren zu "stottern". Habe dazu ein video gedreht
    gruß inka

  4. #4
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    18.03.2018
    Beiträge
    2.650
    Könnte an dem Treiberboard liegen. Vielleicht ist das überlastet? Oder hat einen Defekt.
    Mehr kann ich dazu nicht sagen, weil ich nicht weiß, wie die Treiber genau angesteuert werden. Das passiert alles in dieser Lib.
    Genügend Leistung hat das Board jedenfalls, daran sollte es nicht liegen.

    Auf dem Board sind/ist L293D drauf. Kannst ja mal fühlen, ob die warm/heiß werden, wenn die Motoren aussetzen.
    Die L293D steuern ja wiederum TB6612 MOSFETs an, wenn ich das richtig gelesen habe.


    MfG
    Geändert von Moppi (26.01.2020 um 16:48 Uhr)

  5. #5
    Erfahrener Benutzer Robotik Einstein Avatar von inka
    Registriert seit
    29.10.2006
    Ort
    nahe Dresden
    Alter
    77
    Beiträge
    2.180
    Zitat Zitat von Moppi Beitrag anzeigen
    Auf dem Board sind/ist L293D drauf. Kannst ja mal fühlen, ob die warm/heiß werden, wenn die Motoren aussetzen.
    Die L293D steuern ja wiederum TB6612 MOSFETs an, wenn ich das richtig gelesen habe.
    die TB6612 werden beide warm, der einer zu den vorderen motoren, da kann man den finger drauf lassen, auf dem anderen nicht. Also defekt...
    gruß inka

  6. #6
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    18.03.2018
    Beiträge
    2.650
    Lt. Datenblatt schalten die ab, wenn die zu heiß werden. Das könnte das Aussetzen erklären. Defekt vielleicht noch nicht. Aber einer von den ICs wird sehr heiß. Ich würde die Verkabelung prüfen, ob irgendwo ein Kabel - aus Versehen - quer hängt und Kurzschluss verursacht (Platinenunterseite evtl. oder sonst wo). Sind alle Kabel fest in den Klemmen verschraubt? Sind die Klemmen alle eingelötet oder ist eine Klemme auf der Platine lose? Die Schraubklemmen kann man u.U. nachlöten, manchmal sind solche Klemmen auch nicht sauber verlötet. Es muss einen Grund haben, warum ein IC zu heiß wird. Auch die Lötpunkte anschauen, ob irgendwo Zinn quer hängt und evtl. eine Brücke bildet. Und man könnte, wenn dieser Fehler mal behoben ist, auch noch Kühlkörper drauf setzen, wegen dem Abschalten, bei Überhitzung.


    MfG

    - - - Aktualisiert - - -

    Vielleicht ist es auch ein Motor, der ständig zu viel Strom zieht. Kabel alle richtig angelötet (Kurzschluss über Motorgehäuse ausschließen). Motoren mal abklemmen und einzeln anschließen. Vielleicht findest Du so heraus, welcher Probleme macht (vielleicht wird ein Motor auch warm).

Ähnliche Themen

  1. Mecanum-Wheels -Bot will nicht richtig..., aber warum ??
    Von oderlachs im Forum Sonstige Roboter- und artverwandte Modelle
    Antworten: 10
    Letzter Beitrag: 23.07.2016, 12:37
  2. Antworten: 1
    Letzter Beitrag: 02.11.2015, 16:57
  3. Roboterbasis mit Mecanum Wheels
    Von malthy im Forum Vorstellung+Bilder+Ideen zu geplanten eigenen Projekten/Bots
    Antworten: 37
    Letzter Beitrag: 31.08.2015, 20:09
  4. SainSmart uno r3-atmega328
    Von Droggelbecher im Forum Microcontroller allgemeine Fragen/Andere Microcontroller
    Antworten: 18
    Letzter Beitrag: 04.01.2013, 12:57
  5. Pulling Test - Wheels, Tyres and Traction
    Von Vogon im Forum Mechanik
    Antworten: 4
    Letzter Beitrag: 08.02.2006, 19:34

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

fchao-Sinus-Wechselrichter AliExpress