Серво мотор греется что делать?

Тема в разделе "Моторы, сервоприводы, робототехника", создана пользователем kef82871, 16 фев 2016.

  1. kef82871

    kef82871 Нерд

    В общем сегодня получил наборчик для экспериментов. Подключил серво привод и держал его в руках пока он крутился, почувствовал, что он греется. нормально ли это или я что-то неправильно сделал и моторчик скоро сгорит?
     
  2. vvr

    vvr Инженерище

    если греется - это плохо.
    а для нормального ответа нужен нормальный вопрос - что за серва, как подключили, как запитали:)
     
  3. kef82871

    kef82871 Нерд

    [​IMG]
    Код (C++):
    /*
      Blink
      Turns on an LED on for one second, then off for one second, repeatedly.

      Most Arduinos have an on-board LED you can control. On the Uno and
      Leonardo, it is attached to digital pin 13. If you're unsure what
      pin the on-board LED is connected to on your Arduino model, check
      the documentation at http://www.arduino.cc

      This example code is in the public domain.

      modified 8 May 2014
      by Scott Fitzgerald
    */

    #include<Servo.h>

    // the setup function runs once when you press reset or power the board

    int led = 13;
    int led2 = 12;
    int ledState = LOW; // состояние светодиода: ВКЛ/ВЫКЛ
    int ledState2 = LOW;
    unsigned long previousMillis = 0;
    unsigned long previousMillis2 = 0;
    long OnTime = 2250; // длительность свечения светодиода (в миллисекундах)
    long OnTime2 = 4250; // длительность свечения светодиода (в миллисекундах)
    long OffTime = 750; // светодиод не горит (в миллисекундах)
    long OffTime2 = 250; // светодиод не горит (в миллисекундах)
    // переменная для хранения положения сервы
    int pos = 0;
    Servo my_servo;
    int increment=1; // увеличиваем перемещение на каждом шаге
    int updateInterval; // промежуток времени между обновлениями
    unsigned long lastUpdate = 0; // последнее обновление положения

    void setup() {
      // initialize digital pin 13 as an output.
      pinMode(13, OUTPUT);
      pinMode(12, OUTPUT);
      my_servo.attach(9);
      Serial.begin(9600);
    }

    // the loop function runs over and over again forever
    void loop() {
      // выясняем не настал ли момент сменить состояние светодиода
      unsigned long currentMillis = millis(); // текущее время в миллисекундах

      // если светодиод включен и светится больше чем надо
      if((ledState == HIGH) && (currentMillis - previousMillis >= OnTime))
      {
        ledState = LOW; // выключаем
        previousMillis = currentMillis; // запоминаем момент времени
        digitalWrite(led, ledState); // реализуем новое состояние
      }
      else if ((ledState == LOW) && (currentMillis - previousMillis >= OffTime))
      {
        ledState = HIGH; // выключаем
        previousMillis = currentMillis ; // запоминаем момент времени
        digitalWrite(led, ledState); // реализуем новое состояние
      }

      // если светодиод включен и светится больше чем надо
      if((ledState2 == HIGH) && (currentMillis - previousMillis2 >= OnTime2))
      {
        ledState2 = LOW; // выключаем
        previousMillis2 = currentMillis; // запоминаем момент времени
        digitalWrite(led2, ledState2); // реализуем новое состояние
      }
      else if ((ledState2 == LOW) && (currentMillis - previousMillis2 >= OffTime2))
      {
        ledState2 = HIGH; // выключаем
        previousMillis2 = currentMillis ; // запоминаем момент времени
        digitalWrite(led2, ledState2); // реализуем новое состояние
      }


       if((millis() - lastUpdate) > updateInterval) // время обновлять
        {
          lastUpdate = millis();
          pos += increment;
          my_servo.write(pos);
          Serial.println(pos);
          if ((pos >= 180) || (pos <= 0)) // конец вращения
          {
            // обратное направление
            increment = -increment;
          }
        }
    }
    в коде многопоточность. серва SG90 [​IMG]
     
    Последнее редактирование: 16 фев 2016
  4. vvr

    vvr Инженерище

    а зачем вы закомментировали
    my_servo.attach(9);
     
  5. kef82871

    kef82871 Нерд

    лень было лезть отключать usb провод от ардуино, решил закоментить чтобы серво не работал, а лампочки пускай мигают...пока выясняю дело с нагреванием серво. в общем, забыл убрать коммент
     
  6. portales

    portales Нуб

    обычно греется в двух случаях
    1) сигнал, приходящий на серву, попадает на одно из "значений" потенциометра и серва прыгает мелкими движениями вперед-назад. при этом, моторо постоянно под нагрузкой и греется
    2) что-то мешает двигателю нормально передвигаться, может шестерни или подшипники криво стоят.
    ну и может где-то пайка плохая, тоже нельзя исключить