Управление направлением вращения двигателя постоянного тока с помощью H-моста

Тема в разделе "Arduino & Shields", создана пользователем поклонник бабулеха, 7 апр 2019.

  1. здравствуйте. прошу помочь разобраться в коде управления мотором с помощью h-моста (занимаюсь по книге Блума). не могу понять: для какой цели автор в функции brake(функция остановки двигателя) последней командой подает на вход включения двигателя единицу(digitalWrite(EN, HIGH);), если нам напротив нужно, чтобы двигатель остановился?
    Код (C++):
    //Hbridge Motor Control
    const int EN=9;   //Half Bridge 1 Enable(вход включения двигателя)
    const int MC1=3;  //Motor Control 1
    const int MC2=2;  //Motor Control 2
    const int POT=0;  //POT(потенциометр) on Analog Pin 0

    int val = 0;      //переменная для хранения значения с потенциометра
    int velocity = 0; //переменная для хранения скорости двигателя (0-255)

    void setup()
    {
        pinMode(EN, OUTPUT);
        pinMode(MC1, OUTPUT);
        pinMode(MC2, OUTPUT);
        brake(); //остановка при инициализации
    }

    void loop()
    {
        val = analogRead(POT);
        //движение вперед
        if (val > 562)
        {
            velocity = map(val, 563, 1023, 0, 255);
            forward(velocity);
        }
        //назад
        else if (val < 462)
        {
            velocity = map(val, 461, 0, 0, 255);
            reverse(velocity);
        }
        //остановка
        else
        {
            brake();
        }
    }

    //движение двигателя вперед с заданной скоростью (0-255)
    void forward (int rate)
    {
        digitalWrite(EN, LOW);
        digitalWrite(MC1, HIGH);
        digitalWrite(MC2, LOW);
        analogWrite(EN, rate);
    }

    //движение назад (0-255)
    void reverse (int rate)
    {
        digitalWrite(EN, LOW);
        digitalWrite(MC1, LOW);
        digitalWrite(MC2, HIGH);
        analogWrite(EN, rate);
    }

    //остановка двигателя
    void brake ()
    {
        digitalWrite(EN, LOW);
        digitalWrite(MC1, LOW);
        digitalWrite(MC2, LOW);
        digitalWrite(EN, HIGH);
    }
     
     
  2. Андрей Я.

    Андрей Я. Нерд

    Нужна схема включения двигателя
     
  3. Asper Daffy

    Asper Daffy Гуру

    Без схемы трудно, но скорее всего он включает динамическое торможение. Двигатель то надо остановить, а не просто оставить в покое.

    Если не знаете что такое динамическое торможение, возьмите никуда не подключённый двигатель, раскрутите руками и замкните его выводы между собой - узнаете много интересного.

    Вот, скорее всего это он и делает.
     
  4. 1.Включенный драйвер - оба конца движка закорочены на один провод открытыми транзисторами, по сути КЗ обмотки. Крутнули рукой движок - он как генератор выработал напряжение. Напряжение ушло в КЗ.
    2. Выключенный драйвер - концы движка "висят в воздухе". Крутнули движок - сгенерированная напруга пробила закрытые выходные транзисторы.
    3. Обесточенный драйвер - все выходные транзисторы ведут себя как "открытые". Следовательно - смотри пункт первый. Тут можно спорить, но чаще всего - именно так.
    Вывод - Последняя команда защищает запитанный, но выключенный программно драйвер.
     
    Последнее редактирование: 8 апр 2019
  5. parovoZZ

    parovoZZ Гуру

    электрический пробой коллекторного перехода не страшен.
     
  6. 9xA59kK

    9xA59kK Гик

    В мосте есть режим торможения, И есть режим использования обратных диодов(есть транзисторы со встроенными обратными диодами) чтобы погасить обратную ЭДС холостого хода. Это такой же принцип ,как и в обычном применении без моста (как на первом рисунке). Опять же, что за мост, что за схема.?
    На втором рисунке мост. И там обведен диод и транзистор на который подается управляющий сигнал для гашения обратной ЭДС. При чём можно использовать для этих целей как нижнее плечё так и верхнее, что вам больше требуется. И при этом,все зависит от вращения двигателя, в одну сторону - один транзистор открывается , при вращении в другую сторону -соответственно другой. Этот режим стандартное применение моста для двигателей.
     

    Вложения:

    • pic_.png
      pic_.png
      Размер файла:
      7,8 КБ
      Просмотров:
      141
    • pic2_.png
      pic2_.png
      Размер файла:
      87 КБ
      Просмотров:
      152
    Последнее редактирование: 10 апр 2019
  7. Это что еще за "режим использования обратных диодов" ? Диоды - есть. Режима - нет.
    Что такое - обратная эдс холостого хода ? Есть просто обратная эдс, независимо холостой ход или нет. Есть ЭДС "генераторного режима" двигателя. Короче - терминология еще та.
    Режим торможения реально есть только для шагового движка, потому что у него ротор с явно-выраженными полюсами. Включение выводов на КЗ ускоряет торможение движка, но сроду не называлось режимом торможения.
    ПС. Прошу не обижаться на въедливость. Просто дьявол всегда прячется в мелочах.
     
    Последнее редактирование: 10 апр 2019
    parovoZZ нравится это.
  8. 9xA59kK

    9xA59kK Гик

    Режим торможения применяется в промышленных электронных пускателях и не только, да и наверное не со вру , если скажу что на всех двигателях вне зависимости от типа(если это требуется).
     
    Последнее редактирование: 10 апр 2019
  9. parovoZZ

    parovoZZ Гуру

    @9xA59kK А зачем в схеме наружные диоды, если есть технологические внутренние?
     
  10. 9xA59kK

    9xA59kK Гик

    Ну я же не зря упомянул, что есть и встроенные диоды, но в тоже время мост можно собрать и на обычных NPN PNP транзисторах, в которых нет таких диодов.
     
    Последнее редактирование: 10 апр 2019
  11. Хотя я сам облажался. Про шаговый движок правильно - режим удержания, а не торможения. А включение движка на КЗ - типа "режим динамического торможения" (прокатит только для маломощных устройств). В мощных, типа трамвая, движок переводят в генераторный режим, и он отдает энергию обратно в сеть. Вроде бы так.
     
    Последнее редактирование: 10 апр 2019
  12. parovoZZ

    parovoZZ Гуру

    Других МОП транзисторов и не бывает))
     
  13. parovoZZ

    parovoZZ Гуру

    обратная ЭДС есть всегда, когда крутится якорь. Для коллекторного движка это есть ЗЛО (из-за нее невозможно реализовать весь потенциал двигателя, поэтому якорь на около номинальных мощностях шунтируют резистором), у асинхронного двигателя обратная ЭДС есть принцип его работы.
     
  14. Вопрос Паровозу : Если мы нагрузим на выводы лампочками обычный асинхронник, раскрутим за вал внешним движком, - можно ли перевести его в генераторный режим ?
     
  15. parovoZZ

    parovoZZ Гуру

    Можно. Но надо сдвинуть ток относительно напряжения. Конденсаторами, например.
     
    9xA59kK и Ariadna-on-Line нравится это.