Корректировка вращения сервопривода

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

  1. TimesnaP

    TimesnaP Нуб

    Всем привет. Подскажите как сделать натяжитель для экструдера нити. Вообщем есть сервопривод (переделанный на постоянное вращение), со встроенным потенциометром. Поворотом ручки потенциометра регулируется скорость вращения сервы. Этой ручкой (на начальном этапе) я регулирую натяжку нити после экструдера, тем самым регулируется диаметр нити. Есть 2 оптических концевика, в поле которых будет заходить нить, один сверху второй внизу. Если нить опускается на нижний концевик, нужно увеличить (уже выставленную потенциометром) скорость вращения сервы, если на верхний, соответственно снизить вращение. Подскажите возможно-ли это сделать, или надо делать это иначе? Например заменить серву на мотор редуктор и регулировать с помощью ШИМ и переменных. Как регулировать обороты электродвигателя с потенциометра и одновременно подстройку оборотов с помощью концевиков? Пример скетча очень-бы помог. В программировании плохо разбираюсь, поэтому прошу помощи. Спасибо.
    Использую: аналог ARDUINO NANO V3.0
    Servo TowerPro MG995 Digi Hi-Speed

    Использую код:
    Код (C++):
    // задаем константы
    #include <Servo.h>
    Servo myservo;
    const int MechEndStop = 2;     // номер входа, подключенный к мех.концевику
    const int MotorPin =  8;      // номер выхода мотора намотчика
    // переменные
    int MechEndStopState = 0;         // переменная для хранения состояния мех.концевика
    void setup() {

      // инициализируем пин, подключенный к мотору намотчика, как выход
      pinMode(MotorPin, OUTPUT);
      // инициализируем пин, подключенный к мех.концевику, как вход
      pinMode(MechEndStop, INPUT);
    myservo.attach(9);
    }
    void loop(){
      myservo.write(90);
      // считываем значения с входа мех.концевика
      MechEndStopState = digitalRead(MotorPin);
      // проверяем нажат ли мех.концевик
      // если нажат, то MechEndStopState будет HIGH:
      if (MechEndStopState == HIGH) {
        // включаем мотор намотчика
        digitalWrite(MotorPin, HIGH);

      }
      else {
        // выключаем мотор намотчика
        digitalWrite(MotorPin, LOW);
            delay(500);
      }
    }
     
    Последнее редактирование: 27 янв 2016
  2. vvr

    vvr Инженерище

    ваш код вообще не понятно что делает
    вы сначала определитесь что будете использовать серву непрерывного вращения (и нафига было переделывать когда можно купить готовую) или мотор редуктор - программы ведь будут разные
    сервой управлять конечно проще и не надо городить обвязку как для dc мотора
    главное обеспечить правильное питание
     
  3. TimesnaP

    TimesnaP Нуб

    Сейчас работает сервопривод, если из корпуса вытащить плату и потенциометр, получится нормальный мотор редуктор. Сервопривод переделал потому-что был под рукой. Питается все через шилд и регулятор напряжения. Если с сервой проще, тогда оставлю как есть, если надо мотор редуктор, вытащю из сервы потроха. А по коду, ардуино еще управляет мотором который нить скручивает в катушку, когда срабатывает механический концевик. В целом все работает нормально, но хотелось-бы прикрутить туда еще 2 оптических концевика для коррекции скорости сервы (натяжителя), потому как сидеть по n часов и крутить потенциметр не очень занятие, охото автоматики. Servo.jpg Optic.jpg Shield.jpg Stabilizator.jpg
     
  4. TimesnaP

    TimesnaP Нуб

    Просьба модераторов перенести тему в ветку "закажу проект". Спасибо.
     
  5. vvr

    vvr Инженерище

    а если они не перенесут так и будете ждать у моря погоды:)
    сами создайте новую тему и напишите более конкретно своё задание
    тогда есть шанс что вам помогут
     
    TimesnaP нравится это.