INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Dagu Rover 5
26.08.2017, 18:56
Beitrag #1
Dagu Rover 5
Hallo lie Arduino Profis,

ich verzweifle hier noch.
Ich wollte einen Dagu Rover 5 mit 4 Motoren und 4 Encodern zur Hindernisvermeidung erstellen.
Leider bekomme ich noch nicht mal die 4 Räder ordentlich zum Drehen.
Könnte Ihr mir da evtl. einen Tipp geben, wo man einen guten SChaltplan und Testcode her bekommen kann?
Ich habe folgende Bauteile:

- Dagu Rover 5 (4 Motoren & 4 Encoder)

- 4 Channel DC Motor Controller with Encoder Support
genaue Bezeichnung hier

- Arduino MEGA 2560 (alternativ habe ich auch einen UNO)

Den Testcode habe ich von hier:
So genau habe ich es gebaut

Wenn ich dann alles mit Strom versorge, dreht sich ein Rad gar nicht, ein Rad macht was es soll, also kurz vor und zurück) und die anderen beiden Räder drehen entgegengesetzt und eins davon auch noch immerzu.

Was habe ich da falsch gemacht bzw. hat jemand einen Link zu einem Tut oä. ?

Lieben Dank für Euch Hilfe.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
26.08.2017, 19:32
Beitrag #2
RE: Dagu Rover 5
(26.08.2017 18:56)Bikandajyo schrieb:  Was habe ich da falsch gemacht bzw.....

Gleich mehrere Dinge.
Du lieferst keine Fakten sondern nur Namen und wir sollen jetzt für dich suchen.

Also poste Links "Hyperlinks" deiner verwendeten Teile.
Poste deinen Sketch direkt im Forum, allerdings in Code-Tags, damit man den vernünftig lesen kann.
Und ganz wichtig, lerne programmieren, das brauchst du auch, wenn du Copy&Paste verwendest.
Sorry, wenn ich zu ehrlich bin.
Und warum verwendest du als "Anfänger" keinen Bausatz ?

Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. Cool
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
26.08.2017, 20:10 (Dieser Beitrag wurde zuletzt bearbeitet: 26.08.2017 20:34 von Bikandajyo.)
Beitrag #3
RE: Dagu Rover 5
Hallo,

da der Code von der Seite nicht mir gehört dachte ich es wäre so besser.
Wenn es also OK geht, dann hier der Code und die Bilder der Schaltpläne:

Das habe ich gekauft:

Dagu Rover 5 Chassis 4WD (4 Motoren + 4 Encodern)
http://www.exp-tech.de/dagu-rover-5-chas...gI1ZPD_BwE

Dagu - 4 Channel DC Motor Controller with Encoder Support
https://robosavvy.com/store/dagu-4-chann...pport.html

Diesen Code habe ich verwendet:
Code:
#define DIRECTIONLEFTA 29
#define MOTORLEFTA 30

#define DIRECTIONLEFTB 5
#define MOTORLEFTB 4

#define DIRECTIONRIGHTA 22
#define MOTORRIGHTA 24

#define DIRECTIONRIGHTB 16
#define MOTORRIGHTB 17

char buf[50];
unsigned long timeOld;

void setup() {
  // put your setup code here, to run once:
  // Set up pins for Motor
  pinMode(DIRECTIONLEFTA,OUTPUT);
  pinMode(MOTORLEFTA,OUTPUT);
  pinMode(DIRECTIONLEFTB,OUTPUT);
  pinMode(MOTORLEFTB,OUTPUT);

  pinMode(DIRECTIONRIGHTA,OUTPUT);
  pinMode(MOTORRIGHTA,OUTPUT);
  pinMode(DIRECTIONRIGHTB,OUTPUT);
  pinMode(MOTORRIGHTB,OUTPUT);

  // Switch motors off and at speed zero

  digitalWrite(DIRECTIONLEFTA,LOW);
  analogWrite(MOTORLEFTA,0);
  digitalWrite(DIRECTIONLEFTB,LOW);
  analogWrite(MOTORLEFTB,0);

  digitalWrite(DIRECTIONRIGHTA,LOW);
  analogWrite(MOTORRIGHTA,0);
  digitalWrite(DIRECTIONRIGHTB,LOW);
  analogWrite(MOTORRIGHTB,0);

}
int command = 255;
void loop() {
  unsigned long  timeNow = millis();
  sprintf(buf, "%lu, %d,  \n", timeNow, command);
  if (timeNow - timeOld > 700){
    command = -command;
    timeOld = timeNow;
  }
  Serial.print(buf);  
    if (command >  0) {

  digitalWrite(DIRECTIONLEFTA,LOW);
  analogWrite(MOTORLEFTA,command);
  digitalWrite(DIRECTIONLEFTB,HIGH);
  analogWrite(MOTORLEFTB,command);

  digitalWrite(DIRECTIONRIGHTA,LOW);
  analogWrite(MOTORRIGHTA,command);
  digitalWrite(DIRECTIONRIGHTB,HIGH);
  analogWrite(MOTORRIGHTB,command);

   }
    else {
  digitalWrite(DIRECTIONLEFTA,HIGH);
  analogWrite(MOTORLEFTA,-command);
  digitalWrite(DIRECTIONLEFTB,LOW);
  analogWrite(MOTORLEFTB,-command);

  digitalWrite(DIRECTIONRIGHTA,HIGH);
  analogWrite(MOTORRIGHTA,-command);
  digitalWrite(DIRECTIONRIGHTB,LOW);
  analogWrite(MOTORRIGHTB,-command);

    }

[Bild: components_arduino.jpg]

[Bild: components_chassis-768x501.jpg]
>> Und ganz wichtig, lerne programmieren, das brauchst du auch, wenn du Copy&Paste verwendest.

Ja, das versuche ich ja mit dem Code. Einen funktionierenden Code zu ändern ist da auch ein guter Anfang.

Warum ich kein Kit verwendet habe?
Ich habe schlicht keins gefunden, welches auf dem Rover 5 aufbaut.
:-(

Gruss und vielen Dank
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
26.08.2017, 20:25
Beitrag #4
RE: Dagu Rover 5
Du verwendest die Code-Tags falsch.
Mach das bitte nochmal richtig wie das geht, steht hier

Ich habe den Sketch grob überflogen und kann aktuell keinen Fehler erkennen.
Um dem Fehler auf die Spur zu kommen, solltest du die Motoren einzeln ansteuern um auch zu sehen, ob evtl. ein Hardwarefehler vorliegt.

Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. Cool
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
26.08.2017, 20:38
Beitrag #5
RE: Dagu Rover 5
::::Mach das bitte nochmal richtig
War ein Versehen, sorry, so sollte es nun passen :-)

Um dem Fehler auf die Spur zu kommen, solltest du die Motoren einzeln ansteuern um auch zu sehen, ob evtl. ein Hardwarefehler vorliegt.


Also wenn ich Strom auf jeden einzelnen Motor gebe dreh sich jeder Motor.

Das nicht drehende Rad habe ich mal mit einem sich drehenden vertauscht zum Test (also Channel 1 auf 2 und 2 auf 1)
Dann dreht sich das Rad am Channel, was vorher nicht ging.

Sag, kann es sein, dass in dem Code eine Libary zum Motor Board fehlt?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
26.08.2017, 20:57
Beitrag #6
RE: Dagu Rover 5
(26.08.2017 20:38)Bikandajyo schrieb:  Das nicht drehende Rad habe ich mal mit einem sich drehenden vertauscht zum Test (also Channel 1 auf 2 und 2 auf 1)
Dann dreht sich das Rad am Channel, was vorher nicht ging.

Sag, kann es sein, dass in dem Code eine Libary zum Motor Board fehlt?

Der Sketch passt jetzt.
Da ich die verwendeten Teile nicht kenne, kann ich zu einer Library nichts sagen.
Ich vermute aber, nein.
Evtl. solltest du auf der Seite nachfragen, wo der Sketch her ist.

Mit dem Testen der Motoren meinte ich auch innerhalb eines Testsketches, in dem du die Motoren nacheinander einzeln für 10 Sek. ansteuerst.

Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. Cool
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
26.08.2017, 21:55
Beitrag #7
RE: Dagu Rover 5
ich hatte einfach mal die Pibelegung versucht, da passieren aber auch nur komische Sachen

Code:
#define DIRECTIONLEFTA 29
#define MOTORLEFTA 30

#define DIRECTIONLEFTB 5
#define MOTORLEFTB 4

geändert zu:
Code:
#define DIRECTIONLEFTA 5
#define MOTORLEFTA 4

#define DIRECTIONLEFTB 29
#define MOTORLEFTB 30

#


Wie kann ich denn die Motoren einzeln als Befehl ansteuern?

so?
Code:
#define DIRECTIONLEFTA 29
#define MOTORLEFTA 30

#define DIRECTIONLEFTB 5
#define MOTORLEFTB 4


char buf[50];
unsigned long timeOld;

void setup() {
  // put your setup code here, to run once:
  // Set up pins for Motor
  pinMode(DIRECTIONLEFTA,OUTPUT);
  pinMode(MOTORLEFTA,OUTPUT);
  pinMode(DIRECTIONLEFTB,OUTPUT);
  pinMode(MOTORLEFTB,OUTPUT);

  // Switch motors off and at speed zero

  digitalWrite(DIRECTIONLEFTA,LOW);
  analogWrite(MOTORLEFTA,0);
  digitalWrite(DIRECTIONLEFTB,LOW);
  analogWrite(MOTORLEFTB,0);

}
int command = 255;
void loop() {
  unsigned long  timeNow = millis();
  sprintf(buf, "%lu, %d,  \n", timeNow, command);
  if (timeNow - timeOld > 700){
    command = -command;
    timeOld = timeNow;
  }
  Serial.print(buf);  
    if (command >  0) {

  digitalWrite(DIRECTIONLEFTA,LOW);
  analogWrite(MOTORLEFTA,command);
  digitalWrite(DIRECTIONLEFTB,HIGH);
  analogWrite(MOTORLEFTB,command);

    }
    else {
  digitalWrite(DIRECTIONLEFTA,HIGH);
  analogWrite(MOTORLEFTA,-command);
  digitalWrite(DIRECTIONLEFTB,LOW);
  analogWrite(MOTORLEFTB,-command);

    }
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
26.08.2017, 22:09
Beitrag #8
RE: Dagu Rover 5
(26.08.2017 21:55)Bikandajyo schrieb:  Wie kann ich denn die Motoren einzeln als Befehl ansteuern?

Oh ja, diese verdammten Grundlagen.
Die muss du dir aneigne. Ohne die geht nichts.

Da ich deine Hardware nicht habe und auch nicht kenne, kann ich nur vermuten.
Dies hier steuert den Motor:
Code:
void loop() {
  unsigned long  timeNow = millis();
  sprintf(buf, "%lu, %d,  \n", timeNow, command);
  if (timeNow - timeOld > 700) {
    command = -command;
    timeOld = timeNow;
  }
  Serial.print(buf);
  if (command >  0) {

    digitalWrite(DIRECTIONLEFTA, LOW);
    analogWrite(MOTORLEFTA, command);
    digitalWrite(DIRECTIONLEFTB, HIGH);
    analogWrite(MOTORLEFTB, command);

  }
  else {
    digitalWrite(DIRECTIONLEFTA, HIGH);
    analogWrite(MOTORLEFTA, -command);
    digitalWrite(DIRECTIONLEFTB, LOW);
    analogWrite(MOTORLEFTB, -command);

  }

Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. Cool
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste