PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Dagu Motor+Getriebe DG01D und Adafruit Motorshield lässt Motoren singen



oderlachs
29.09.2017, 17:52
Hallo Freunde,
ich möchte mal einen mit dem AF - Motorshield v1.2 erfahrenen User, den es doch hier bestimmt gibt, befragen.
Das AF - Motorshield lag ewig in der Kiste, weil es für meine anderen Motoren etwas zu schwach auf der Brust ist .;)
Nun da die Bastelabende länger werden, möchte ich gern die Spreu vom Weizen trennen, was sich so angesammelt hat in der Bastelkiste.
Also schnell ein Sperrholzchassis mit den Dagumotoren versehen und Arduino + AF-Motor- Shield verwendet.

Doch beim Anlaufen ist das eher eine Sirene, als das ein rollendes Modell ist.
Ist das nun Motor-Shield typisch oder bin ich wieder mal zu blöde....???

Ich habe mal den Testcode von Adafruit etwas manipuliert:


// Adafruit Motor shield library
// copyright Adafruit Industries LLC, 2009
// this code is public domain, enjoy!

#include <AFMotor.h>

AF_DCMotor motor1(3,MOTOR12_8KHZ);
AF_DCMotor motor2(4,MOTOR12_8KHZ);

void setup() {
Serial.begin(9600); // set up Serial library at 9600 bps
Serial.println("Motor test!");

// turn on motor
motor1.setSpeed(255);
motor2.setSpeed(255);

//motor.run(RELEASE);
}

void loop() {
uint8_t i;
//*****************************************
Serial.print("Vor1\n");

motor1.run(FORWARD);
for (i=0; i<255; i++) {
motor1.setSpeed(i);
delay(10);
}

for (i=255; i!=0; i--) {
motor1.setSpeed(i);
delay(10);
}
//*****************************************
Serial.print("Rueck1\n");

motor1.run(BACKWARD);
for (i=0; i<255; i++) {
motor1.setSpeed(i);
delay(10);
}

for (i=255; i!=0; i--) {
motor1.setSpeed(i);
delay(10);
}
//*****************************************
Serial.print("Stop1\n");
motor1.run(RELEASE);
delay(2000);
//*****************************************
Serial.print("Vor2\n");

motor2.run(FORWARD);
for (i=0; i<255; i++) {
motor2.setSpeed(i);
delay(10);
}

for (i=255; i!=0; i--) {
motor2.setSpeed(i);
delay(10);
}

//*****************************************
Serial.print("Rueck2\n");

motor2.run(BACKWARD);
for (i=0; i<255; i++) {
motor2.setSpeed(i);
delay(10);
}

for (i=255; i!=0; i--) {
motor2.setSpeed(i);
delay(10);
}
Serial.print("Stop2\n");

motor2.run(RELEASE);
delay(2000);
}


Vielleicht kann ja Bitte ein Kenner der Materie etwas dazu sagen ??

Gruss und Dank

Gerhard

shedepe
30.09.2017, 10:31
Wenn dein Motor singt hat das oftmals mit dem PWM Frequenz zu tun. Das kann auch von Motortyp zu Motortyp unterschiedlich sein, d.h. also mit einem Motor wird es bei 8KHz singen, bei einem anderen nicht.

Ich kenne dein Motorshield bzw. die Ansteuerung nicht, würde aber vorschlagen du probierst mal eine höhere PWM Frequenz aus. Außerdem würde ich ausprobieren ab welchem Tastverhältnis (Motor.setSpeed) die Motoren überhaupt erst anfangen zu drehen, davor neigen viele Motoren auch gerne zum summen.

Die Aussagen sind unter der Annahme getroffen, dass das Board keine Strom oder Drehzahlregelung macht.