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
SR-04 + UNO + 4WD Roboter, Abstandsfehler
20.09.2014, 18:13
Beitrag #9
RE: SR-04 + UNO + 4WD Roboter, Abstandsfehler
Das dachte ich ja ursprünglich auch, aber mit dem ( delay(2000); ) zucken die nur rum. Huh


Gruß Marc

Shy
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
20.09.2014, 18:25
Beitrag #10
RE: SR-04 + UNO + 4WD Roboter, Abstandsfehler
Hi,
tja, da weiß ich jetzt auch nicht. Schreib' vielleicht mal einen ganz einfachen Versuchs-Sketch, bei dem der Roboter sich einfach nur auf der Stelle drehen soll.
Was mich ein bisschen wundert: Warum gibt es 4 Motoren? Mach mal ein Bild von dem Ding...
Gruß,
Thorsten

Falls ich mit einer Antwort helfen konnte, wuerde ich mich freuen, ein paar Fotos oder auch ein kleines Filmchen des zugehoerigen Projekts zu sehen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
20.09.2014, 18:53 (Dieser Beitrag wurde zuletzt bearbeitet: 20.09.2014 18:54 von Marc2014.)
Beitrag #11
RE: SR-04 + UNO + 4WD Roboter, Abstandsfehler
Hey Wink

wollte ein video hier hochladen geht aber nicht 25mb ist zu groß laut Server...

Habe aber Bilder angehängt Wink

Wenn ich das delay komplett wegnehme fährt er mehr oder weniger gleichmäßig zurück.
code:



Code:
// HOMECONTROL ROBOTER 1
// Version 1.7 BETA

// ################################################################################​################################################################################​###############################################################


#include <AFMotor.h>
#include <Servo.h>


#include <Ultrasonic.h>

#define TRIGGER_PIN  14
#define ECHO_PIN     15

Ultrasonic ultrasonic(TRIGGER_PIN, ECHO_PIN);

  



Servo PingServo;
AF_DCMotor motor1(1);
AF_DCMotor motor2(2);
AF_DCMotor motor3(3);
AF_DCMotor motor4(4);




int minSafeDist = 12 ;                                                            // Minimale Distanz festlegen.
int centerDist, leftDist, rightDist, backDist;                                    // Variablen für die unterschiedlichen Distanzen.



// ################################################################################​################################################################################​###############################################################

void setup() {
  
  
PingServo.attach(10);                                                             // Servo am Pin 10 ( Motor Shield ).

PingServo.write(90);                                                              // Ping Sensor in Mittelstellung bringen ( 90 Grad ).

motor1.setSpeed(250);                                                             // Motor 1 Geschwindigkeit festlegen.
motor2.setSpeed(250);                                                             // Motor 2 Geschwindigkeit festlegen.
motor3.setSpeed(250);                                                             // Motor 3 Geschwindigkeit festlegen.
motor4.setSpeed(250);                                                             // Motor 4 Geschwindigkeit festlegen.


Serial.begin(9600);                                                               // Serielle Schnittstelle instalisieren.
Serial.println("Version 1.2 BETA start...");                                                   // Serielle Ausgabe. ( Text ).

}


// ################################################################################​################################################################################​###############################################################

void AllStop() {
  
Serial.println("stop");                                                           // Serielle Ausgabe.

  
motor1.run(RELEASE);                                                              // Motor 1 AUS
motor2.run(RELEASE);                                                              // Motor 2 AUS
motor3.run(RELEASE);                                                              // Motor 3 AUS
motor4.run(RELEASE);                                                              // Motor 4 AUS

delay(1500);

}

void AllForward() {                                                               //  forwärts

Serial.println("forwaerts");                                                       // Serielle Ausgabe.

motor1.setSpeed(250);                                                             // Motor 1 Geschwindigkeit festlegen.
motor2.setSpeed(250);                                                             // Motor 2 Geschwindigkeit festlegen.
motor3.setSpeed(250);                                                             // Motor 3 Geschwindigkeit festlegen.
motor4.setSpeed(250);  


motor1.run(FORWARD);                                                              // Motor 1 forwärts
motor2.run(FORWARD);                                                              // Motor 2 forwärts
motor3.run(FORWARD);                                                              // Motor 3 forwärts
motor4.run(FORWARD);                                                              // Motor 4 forwärts

delay(1500);




}


void turnRight() {                                                                // rechts abbiegen

Serial.println("rechts abbiegen");                                                // Serielle Ausgabe.

motor1.setSpeed(250);                                                             // Motor 1 Geschwindigkeit festlegen.
motor2.setSpeed(250);                                                             // Motor 2 Geschwindigkeit festlegen.
motor3.setSpeed(250);                                                             // Motor 3 Geschwindigkeit festlegen.
motor4.setSpeed(250);  

motor1.run(FORWARD);                                                              // Motor 1 forwärts
motor2.run(FORWARD);                                                              // Motor 2 forwärts
motor3.run(BACKWARD);                                                             // Motor 3 rückwärts
motor4.run(BACKWARD);                                                             // Motor 4 rückwärts

delay(1500);


}


void GoBack() {                                                                   // zurück fahren

Serial.println("rueckwaerts");                                                      // Serielle Ausgabe


motor1.run(BACKWARD);                                                             // Motor 1 rückwärts
motor2.run(BACKWARD);                                                             // Motor 2 rückwärts
motor3.run(BACKWARD);                                                             // Motor 3 rückwärts
motor4.run(BACKWARD);                                                             // Motor 4 rückwärts

// delay(1500);


Serial.println("rueckwaerts");                                                    // Serielle Ausgabe
}


void turnLeft() {                                                                 // links abbiegen

Serial.println("links");                                                          // Serielle Ausgabe


motor1.run(BACKWARD);                                                             // Motor 1 rückwärts
motor2.run(BACKWARD);                                                             // Motor 2 rückwärts
motor3.run(FORWARD);                                                              // Motor 3 vorwärts
motor4.run(FORWARD);                                                              // Motor 4 vorwärts

delay(1500);


}


// ################################################################################​################################################################################​###############################################################

  void loop () {
    
  


      GoBack();


  
  }


Wenn ich so wie ganz am Anfang im jeweiligen unterprogramm für links rechts zurück usw. ein delay() einfüge dann zuckt er nur noch rum aber bewegen kann man das nicht nennen.

Ich hab 2 getrennte Spannungsversorgungen also Motoren getrennt vom Arduino.
Ich habe sogar das Motorshield vorhin ganz abgebaut und mir auf dem Steckbrett nen ULN2803 als Treiber für die Motoren genommen das brachte das selbe Ergebnis nur rumgezucke..

Gruß Marc

Warum 4 Motoren?

Ich hab mir das 4WD Gestell gekauft mit 4 Motoren und das Motorshield hat ja auch 4 Ausgänge.

Wink


Angehängte Datei(en) Thumbnail(s)
           

Shy
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
20.09.2014, 19:19
Beitrag #12
RE: SR-04 + UNO + 4WD Roboter, Abstandsfehler
Tja, da weiß ich auch nicht wirklich weiter.
Versuch mal die PWM-Frequenz zu erhöhen. Vielleicht vertragen Deine Motoren die Default-1kHz nicht so richtig.
...oder setze den Speed mal auf 255.

Funktioniert das ganze vorwärts und nur rückwärts nicht???

Gruß,
Thorsten

Falls ich mit einer Antwort helfen konnte, wuerde ich mich freuen, ein paar Fotos oder auch ein kleines Filmchen des zugehoerigen Projekts zu sehen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
20.09.2014, 19:27
Beitrag #13
RE: SR-04 + UNO + 4WD Roboter, Abstandsfehler
PWM (speed) hab ich schon versucht von 50 bis 255 aber die laufen erst ab 100 einigermaßen. Deswegen bin ich auch bei 200 geblieben.


(Versuch mal die PWM-Frequenz zu erhöhen. Vielleicht vertragen Deine Motoren die Default-1kHz nicht so richtig. )

Wie mach ich das ?

In alle Richtungen das selbe Problem.

Ich könnte auch mal versuchen an die Motoren 3-Kondensatoren zu löten evtl. stören die Motoren ohne C einfach zu sehr ?

Gruß Marc

Shy
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
20.09.2014, 19:37 (Dieser Beitrag wurde zuletzt bearbeitet: 20.09.2014 20:02 von Thorsten Pferdekämper.)
Beitrag #14
RE: SR-04 + UNO + 4WD Roboter, Abstandsfehler
(20.09.2014 19:27)Marc2014 schrieb:  Deswegen bin ich auch bei 200 geblieben.
Nimm mal 255.
Zitat:(Versuch mal die PWM-Frequenz zu erhöhen. Vielleicht vertragen Deine Motoren die Default-1kHz nicht so richtig. )
Wie mach ich das ?
Vergiss es, hab grad im Sourcecode nachgesehen. Das scheint nur beim Mega zu gehen.

Ich bin jetzt mit meinem Latein ziemlich am Ende.
Mach mal folgendes: Mach mal einen Sketch, der wirklich nur einen Motor ansteuert und den in irgendeine Richtung fahren lässt. Also einfach den Motor "einschalten" und vorwärts fahren lassen. Probier das mal mit und ohne delay(10000).
...ohne die ganzen includes für Servo, Ultraschall etc. und ohne den ganzen Kram im setup().

Gruß,
Thorsten

Hi,
da fällt mir noch was ein: Sind das tatsächlich Gleichstrommotoren oder vielleicht Stepper?
Gruß,
Thorsten

Falls ich mit einer Antwort helfen konnte, wuerde ich mich freuen, ein paar Fotos oder auch ein kleines Filmchen des zugehoerigen Projekts zu sehen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
20.09.2014, 20:15
Beitrag #15
RE: SR-04 + UNO + 4WD Roboter, Abstandsfehler
So habe jetzt ausführlich getestet und bin verwundert Huh

Ich habe jetzt als PWM speed 255 genommen.

Dann alles raus aus dem sketch nur Motor library und für einen Motor das Setup rein.

Der Motor lief einwandfrei ( getestet für Motor 1- 4).
Dann dasselbe mit (BACKWARDS) ebenfalls alles 1A.

PS. aber mit einem delay() unter ( motor1.run(FORWARD); ) zuckt er auch nur rum.

Hier der code:

Code:
#include <AFMotor.h>


AF_DCMotor motor1(1);


// ################################################################################​################################################################################​###############################################################

void setup() {
  
  


motor1.setSpeed(255);  


  }

// ################################################################################​################################################################################​###############################################################


void loop () {
  
  motor1.run(FORWARD);


  
  }


Danach habe ich den sketch auf 4 Motoren erweitert.
Habe dann langsam angefangen erst 2 Motoren dann 3 dann alle 4 in die selbe Richtung drehen zu lassen.

Auch hier keine Probleme!

Dann habe ich M1 und M2 vorwärts und M3 + M4 rückwärts fahren lassen auch alles OK!

Dann dachte ich mir gut dann testen wir mal alle 4 Motoren fahren vorwärts dann
alle 4 Motoren abschalten (RELEASE) Funktion und danach alle 4 Motoren rückwerts fahren lassen.

DOCH DAS GEHT NICHT die fahren erst alle 4 vorwärts dann alle 4 AUS und dann zufallsmodus manche gehen manche zucken das ist jedesmal anders manchmal zucken sie alle dann fährt einer los die andern 3 bleiben stehen usw.

Hier der code:

Code:
#include <AFMotor.h>


AF_DCMotor motor1(1);
AF_DCMotor motor2(2);
AF_DCMotor motor3(3);
AF_DCMotor motor4(4);



// ################################################################################​################################################################################​###############################################################

void setup() {
  
  


motor1.setSpeed(255);  
motor2.setSpeed(255);                                                            
motor3.setSpeed(255);                                                            
motor4.setSpeed(255);                                                            


  }

// ################################################################################​################################################################################​###############################################################


void loop () {
  
  motor1.run(FORWARD);
  motor2.run(FORWARD);
  motor3.run(FORWARD);
  motor4.run(FORWARD);
  
  delay(1500);
  
  motor1.run(RELEASE);
  motor2.run(RELEASE);
  motor3.run(RELEASE);
  motor4.run(RELEASE);
  
  delay(1500);
  
  motor1.run(BACKWARD);
  motor2.run(BACKWARD);
  motor3.run(BACKWARD);
  motor4.run(BACKWARD);
  
  delay(1500);
  
  motor1.run(RELEASE);
  motor2.run(RELEASE);
  motor3.run(RELEASE);
  motor4.run(RELEASE);


  
  }

Ich frag mich echt was da los ist?
Das Motor Shield kann ja eigentlich nicht kaputt sein wenn es die Motoren ja alleine normal ansteuert?

Es spuckt nur sobald ein Richtungswechsel statt findet?

Ich hab ja extra im code die Motoren vor jedem Richtungswechsel abgeschaltet und kurz gewartet.

Da bringen wohl auch die Kondensatoren an die ich erst dachte nichts das muss irgendwie an der library liegen irgendwas fehlt? oder hab ich irgendwas nicht richtig gemacht?

Gruß Marc

Shy
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
20.09.2014, 21:18
Beitrag #16
RE: SR-04 + UNO + 4WD Roboter, Abstandsfehler
Tja, da müsste jetzt echt mal jemand antworten, der damit Erfahrung hat.

Falls ich mit einer Antwort helfen konnte, wuerde ich mich freuen, ein paar Fotos oder auch ein kleines Filmchen des zugehoerigen Projekts zu sehen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  kleiner Roboter blichi 24 790 27.07.2016 14:02
Letzter Beitrag: torsten_156
  Roboter-Bau Probleme blebbens 8 379 12.07.2016 07:35
Letzter Beitrag: Binatone
  Selbstfahrender Roboter Programm änderung hilfe ? arekklone 11 547 06.07.2016 14:59
Letzter Beitrag: Binatone
  Neo's Roboter Neoneo23 74 5.911 11.11.2015 21:18
Letzter Beitrag: Neoneo23
  Roboter J4Ng0 2 1.530 21.07.2013 15:49
Letzter Beitrag: Snake8811

Gehe zu:


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