Подключение драйвера DM320T при использовании GyverStepper

Andrey/

✩✩✩✩✩✩✩
26 Янв 2025
1
0
Подскажите пожалуста, можно ли использовать библиотеку GyverStepper с драйвером DM320T? В отличие от например от TB6560 и подобных у DM320T управление инвертировано, на драйвер постоянно подаётся "+", а EN, DIR, STEP управляются минусами.
 

viktor1703

★★★✩✩✩✩
9 Дек 2021
649
152
А что мешает взять три транзистора, сделать простейшее инвертирование сигнала и пользоваться?
Вот здесь есть маленько информации по данному вопросу.
 
Изменено:

VictorArx

★★✩✩✩✩✩
22 Мар 2021
540
87
Есть логические элементы типа ИЛИ ,И, Или-НЕ и т.д.
 

bort707

★★★★★★✩
21 Сен 2020
3,093
917
В отличие от например от TB6560 и подобных у DM320T управление инвертировано, на драйвер постоянно подаётся "+", а EN, DIR, STEP управляются минусами.
Библиотека на такое не рассчитана. В коде есть метод "invertEn(bool val);" для инвертирования поведение EN пина, но на сигналах DIR и STEP активный уровень высокий.
Так что либо электрически инвертировать DIR и STEP, как советуют выше, либо поправить код библиотеки.
Последнее не должно быть особо сложно, навскидку достаточно исправить два метода:
C++:
   void configurePin(int num, uint8_t pin) {
        pinMode(pin, OUTPUT);
#ifdef __AVR__
        _port_reg[num] = portOutputRegister(digitalPinToPort(pin));
        _bit_mask[num] = digitalPinToBitMask(pin);
#else
        _pins[num] = pin;
#endif
    }

    // быстрая установка пина
    void setPin(int num, bool state) {
#ifdef __AVR__
        if (state) *_port_reg[num] |= _bit_mask[num];
        else *_port_reg[num] &= ~_bit_mask[num];
#elif defined(ESP8266)
        if (state) GPOS = (1 << _pins[num]);
        else GPOC = (1 << _pins[num]);
#else
        digitalWrite(_pins[num], state);
#endif
    }