7

我正在使用 Arduino,我连接了一个伺服电机和一个普通电机。它们都可以工作,但是当我启动正常的电机脚本时,伺服电机会做一些小的痉挛。谁能帮我解决这个问题?

    // Includes
#include <Servo.h> 

// Aanmaken van de variabelen voor in de code

int ledPin = 13;
const int motorPin = 2;
int usbnumber = 0;
Servo stuurServo;   // create servo object to control a servo 
int pos = 90;        // variable to store the servo position 


// De eerste setup maken
void setup()
{
    pinMode(ledPin, OUTPUT);
    pinMode(motorPin, OUTPUT);
    stuurServo.attach(12);
    Serial.begin(9600);
    stuurServo.write(pos);
}

void loop()
{
    if (Serial.available() > 0) {
        usbnumber = Serial.read();

    }

    if (usbnumber > 0) {
        if (usbnumber == 1){ // Lampje knipperen
            digitalWrite(ledPin, HIGH);
            delay(1000);
            digitalWrite(ledPin, LOW);
            delay(500);
            digitalWrite(ledPin, HIGH);
            delay(1000);
            digitalWrite(ledPin, LOW);
            delay(500);
            digitalWrite(ledPin, HIGH);
            delay(1000);
            digitalWrite(ledPin, LOW);
            delay(500);
        }else if(usbnumber == 2){ // Motor aan voor 5 seconden
            digitalWrite(motorPin, HIGH);
            delay(20000);
            digitalWrite(motorPin, LOW);
        }else if(usbnumber == 3){ // stuur servo +10 graden
            if(pos != 180){
              pos + 10;
              stuurServo.write(pos);
            }
        }else if(usbnumber == 4){ // stuur servo -10 graden
            if(pos != 0){
              pos - 10;
             stuurServo.write(pos);
            }
        }else if(usbnumber == 5){ // stuur servo liks
             pos = 0;
             stuurServo.write(pos);
        }else if(usbnumber == 6){ // stuur servo rechts
             pos = 180;
             stuurServo.write(pos);
        }else{
            delay(500);
        }
        usbnumber = 0;
    }
 }
4

1 回答 1

2

大多数(爱好)伺服电机在通电时会抽搐或有点抽搐,特别是如果您在驱动伺服(提供位置控制信号)之前为电机供电。解决方案是先将控制线写入伺服器,然后再通电。一些简单的解决方案包括:

  1. 通过可以关闭/打开的东西来控制伺服的电源(PWM,MOSFET,其他人在这里帮忙吗?)
  2. 有一个辅助电源手动开关,您可以在控制器启动并运行后进行切换。

在驱动位置控制线之前,如果没有某种方法可以让电路在伺服没有电源的情况下启动,基本上你无法在代码中做任何事情。

于 2013-01-28T20:40:47.670 回答