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:
Vielleicht kann ja Bitte ein Kenner der Materie etwas dazu sagen ??Code:// 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); }
Gruss und Dank
Gerhard
Arduinos, STK-500(AVR), EasyPIC-40, PICKIT 3 & MPLABX-IDE , Linux Mint
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.
Lesezeichen