Pomocí H-můstku s obvodem BTS7960 (hotový modul IBT-2) a Pica můžeme řídit rychlost a směr otáčení stejnosměrného kartáčového motoru.

  • Modul má napájení logiky: 3.3V až 5V

  • Napětí motoru: 6V až 27V

  • Maximální proud motorem: 43A (reálně do 20A kvůli svorkovnici a plošnému spoji)

  • Ochrana proti zkratu na motoru a zdroji.

Modul s 2x BTS7960 shora

modul BTS7960

Popis konektoru logiky

  • VCC: napájení logické části (3.3V až 5V)

  • GND: zem 0V

  • R_IS: měření proudu motorem

  • L_IS: měření proudu motorem

  • R_EN: zapnutí motoru

  • L_EN: zapnutí motoru

  • RPWM: PWM pulsy - řízení jedním směrem

  • LPWM: PWM pulsy - řízení opačným směrem

Modul s 2x BTS7960 zdola

modul BTS7960 2

Popis svorkovnice napájení a motoru

  • B+: kladné napětí zdroje motoru 6V až 27V

  • B-: zem napájecího zdroje

  • M+: vývod k motoru

  • M-: vývod k motoru

Zapojení obvodu Pico — H-můstek s BTS7960

zapojeni pico bts7960

# řízení stejnosměrného motoru  H-můstkem BTS7960

from machine import Pin, PWM
from time import sleep

# nastavení pinů
r_en = Pin(16, Pin.OUT)  # pin GP16 pro řízení  - spojen s R_EN na H můstku (bílý)
l_en = Pin(17, Pin.OUT)  # pin GP17 pro řízení  - spojen s L_EN na H můstku (šedý)
# dopředu se motor točí pokud je r_en HIGH a l_en HIGH a PWM signál je na r_pwm
# dozadu se motor točí  pokud je r_en HIGH a l_en HIGH a PWM sígnál je na l_pwm
r_pwm = PWM(Pin(20))     # pin GP20 pro nastavení rychlosti otáčení dopředu - spojen s RPWM na H můstku (fialový)
r_pwm.freq(300)          # nastavení kmitočtu řízení 300 Hz

l_pwm = PWM(Pin(21))     # pin GP21 pro nastavení rychlosti otáčení dozadu - spojen s LPWM na H můstku  (modrý)
l_pwm.freq(300)          # nastavení kmitočtu řízení 300 Hz

# nastavení rychlosti dopředu, rychost musí být v rozsahu 0 - 65535
def motor_dopredu( rychlost ):
    r_en.high()
    l_en.high()
    l_pwm.duty_u16( 0 )
    r_pwm.duty_u16( rychlost )

# nastavení rychosti dozadu, rychlost musí být v rozsahu 0 - 65535
def motor_dozadu( rychlost ):
    r_en.high()
    l_en.high()
    r_pwm.duty_u16( 0 )
    l_pwm.duty_u16( rychlost )

# zastavení motoru
def motor_stop():
    r_en.low()
    l_en.low()
    r_pwm.duty_u16(0)
    l_pwm.duty_u16(0)

# testování
try:
    while True:
        print("Jedeme dopředu 25")
        motor_dopredu(16384)
        sleep(2)
        print("Jedeme dopředu 50")
        motor_dopredu(32762)
        sleep(2)
        print("Jedeme dopředu 91")
        motor_dopredu(60000)
        sleep(2)
        print("Zastavíme")
        motor_stop()
        sleep(2)
        print("Couváme 25")
        motor_dozadu(16384)
        sleep(2)
        print("Zastavíme")
        motor_stop()
        sleep(2)
except KeyboardInterrupt:
    motor_stop()
    print("Zastavili jsme, konec programu.")
Fungující prototyp

Zdroje a odkazy