- 12V Akku mit 280 Ah bauen         
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
    Registriert seit
    18.03.2018
    Beiträge
    2.650
    Ich habe diese Gefährte letztens auch irgendwo gesehen. Schlecht sind die nicht - so vom Erscheinungsbild.

    Aber ich muss mal sagen, dass Du ganz schön viele Geräte angeschafft hast. Wieviele Roboter hast Du noch so?

    Dann viel Spaß beim Auseinanderbauen!
    Ich bin immer froh, wenn etwas zusammen ist und ich es nicht aufmachen muss.


    MfG

  2. #2
    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
    Ich habe diese Gefährte letztens auch irgendwo gesehen. Schlecht sind die nicht - so vom Erscheinungsbild. Dann viel Spaß beim Auseinanderbauen!
    das gehäuse ist nicht schlecht, allerdings habe ich als erstes die gewinde im 1,5mm alu(!) durch setzmuttern aus V2A ersetzt, sonst wäre es heute nur noch schrott - wegen dauernd auseinander nehmen

    Ich versuche es aber erstmal mit einem kühlkörper, manchmal muss man den weg des geringeren widerstandes gehen - ich hab einfach schiss, dass da noch mehr kaputtgeht...

    @Rabenauge:
    Das neuere Motorshield kenne ich nicht. Das ältere konnte nur max. 600mA, wenn ich mich recht entsinne. Da hab ich, auf die beiden Treiber, huckepack einfach noch welche raufgelötet (den Tip hatte ich irgendwo bekommen)- das verdoppelt die Leistung.
    Du meinst bestimmt diese abenteuerliche konstruktion:
    Klicke auf die Grafik für eine größere Ansicht

Name:	20200127_110116.jpg
Hits:	7
Größe:	60,2 KB
ID:	34771
    gruß inka

  3. #3
    Erfahrener Benutzer Robotik Einstein Avatar von Rabenauge
    Registriert seit
    13.10.2007
    Ort
    Osterzgebirge
    Alter
    56
    Beiträge
    2.211
    Cooles Konstrukt!

    Ich hab keinen Kühlkörper raufgemacht, das war nicht nötig (keine Ahnung mehr, wofür ich das Ding das letzte mal verwendet hatte, ist ewig her-> ich mag Shields nicht).
    Das mit den aufgedoppelten Treibern sieht aber tatsächlich so aus- und funktioniert super.
    Grüssle, Sly
    ..dem Inschenör ist nix zu schwör..

  4. #4
    Erfahrener Benutzer Robotik Einstein Avatar von inka
    Registriert seit
    29.10.2006
    Ort
    nahe Dresden
    Alter
    77
    Beiträge
    2.180
    ich weiss nicht ob das herausnehmen der angabe der fahrtdauer aus der "millis-schleife" das problem löst:
    Code:
    void zwei_sec_links_rotieren(void)
    {
      currentMillis = millis();
      dauer_fahrt = 2000;
    
      if (currentMillis - previousMillis > dauer_fahrt)
      {
    
        Serial.println("zwei sec links rotieren");
        motor_hl->setSpeed(s_speed);
        motor_hr->setSpeed(s_speed + 1);
        motor_vr->setSpeed(s_speed + 1);
        motor_vl->setSpeed(s_speed);
    
        motor_hl->run(BACKWARD);
        motor_hr->run(FORWARD);
        motor_vr->run(FORWARD);
        motor_vl->run(BACKWARD);
    
      }
    }
    der code wird in der loop so aufgerufen:
    Code:
      zwei_sec_links_rotieren();
      delay(500);
      alle_motoren_halt();
    und die räder drehen eine halbe sekunde und nicht zwei. Ich verstehe es nicht, in anderen beispielen funktioniert es so mit den millis...
    gruß inka

  5. #5
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    18.03.2018
    Beiträge
    2.650
    Die halbe Sekunde kommt wohl von "delay(500);"

    Das mit dem Code haut so nicht hin. Der muss anders gestaltet werden. Du willst doch "delay" raus haben.

    Zuerst startest Du die Motoren.
    Dann wartest Du in "loop()", bis 2 Sekunden um sind.
    Dann stoppst Du die Motoren.

    Die Funktion "
    void zwei_sec_links_rotieren(void)" ist von der Namensgabe her schon so nicht brauchbar, weil sie was falsches vermittelt, was Du dann vermutlich innerhalb der Funktion umzusetzen versuchst, weil ja sonst die Logik nicht zum Namen der Funktion passt.

    Also mal anders denken, hier ein Beispiel:

    Was brauchst Du für Funktionen?

    Code:
    void  links_rotieren(void){   
    
        motor_hl->setSpeed(s_speed);
        motor_hr->setSpeed(s_speed + 1);
        motor_vr->setSpeed(s_speed + 1);
        motor_vl->setSpeed(s_speed);
    
    
        motor_hl->run(BACKWARD);
        motor_hr->run(FORWARD);
        motor_vr->run(FORWARD);
        motor_vl->run(BACKWARD);
    }
    
    
    void alle_motoren_halt(void){
        
        ...
    
    
    }


    Welche Variablen außerhalb von "loop()" brauchst Du?

    Code:
    int status = 0;
    unsigned long previousMillis, currentMillis, dauer_fahrt;


    Wie in "loop()" aufrufen?

    Code:
    currentMillis = millis();
    
    
    if (status == 0) {
            status = 1;
            previousMillis = currentMillis;
            dauer_fahrt = 2000;
            links_rotieren();
    }
    
    
    if (status == 1  &&  (currentMillis - previousMillis) > dauer_fahrt) {
            alle_motoren_halt();
    }


    PS: der Code soll nur am Beispiel zeigen, wie es funktionieren kann.

    MfG

  6. #6
    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
    Die Funktion "void zwei_sec_links_rotieren(void)" ist von der Namensgabe her schon so nicht brauchbar, weil sie was falsches vermittelt, was Du dann vermutlich innerhalb der Funktion umzusetzen versuchst, weil ja sonst die Logik nicht zum Namen der Funktion passt.
    ich kann selbst nicht mehr nachvollziehen von welchem code und wie oft ich diese schnipsel hin und her kopiert habe, bis sie dann endlich nicht mehr funktioniert haben...

    Zitat Zitat von Moppi Beitrag anzeigen
    Code:
    int status = 0;
    unsigned long previousMillis, currentMillis, dauer_fahrt;

    die unsigned long's hatte ich schon global definiert, hier ist es noch die frage nach dem "status". Sollte die variable immer beim aufruf einer der motorfunktionen neu lokal definiert werden, also z. b. "status-drehen-links" , oder auch global und dann jedesmal aufgerufen werden? Kann man es überhaupt so von vorne herein definieren?

    Zitat Zitat von Moppi Beitrag anzeigen
    der Code soll nur am Beispiel zeigen, wie es funktionieren kann.


    tut er auch, danke, für beides, erklärung und codeschnipsel - dann kann man beides gut nachvollziehen...
    gruß inka

  7. #7
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    18.03.2018
    Beiträge
    2.650
    Zitat Zitat von inka Beitrag anzeigen
    "status". Sollte die variable immer beim aufruf einer der motorfunktionen neu lokal definiert werden, also z. b. "status-drehen-links" , oder auch global und dann jedesmal aufgerufen werden? Kann man es überhaupt so von vorne herein definieren?
    Du kannst die "status-drehen-links" nennen, nur die soll global definiert sein. Was meinst Du mit " jedesmal aufgerufen werden"? Diese Variable dient der Auswertung, damit im Programm ermittelt werden kann, was gerade abläuft und dann kann darauf reagiert werden.


    MfG

Ä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, 11:37
  2. Antworten: 1
    Letzter Beitrag: 02.11.2015, 15: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, 19:09
  4. SainSmart uno r3-atmega328
    Von Droggelbecher im Forum Microcontroller allgemeine Fragen/Andere Microcontroller
    Antworten: 18
    Letzter Beitrag: 04.01.2013, 11:57
  5. Pulling Test - Wheels, Tyres and Traction
    Von Vogon im Forum Mechanik
    Antworten: 4
    Letzter Beitrag: 08.02.2006, 18:34

Berechtigungen

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

fchao-Sinus-Wechselrichter AliExpress