要使用MicroPython控制L298N電機驅動板來控制電機的轉速,你可以通過PWM(脈沖寬度調制)信號來調節電機速度。L298N是一個雙H橋驅動器,可以同時控制兩個電機的正反轉和速度。
硬件準備:
1. L298N 電機控制板
2. ESP32 開發板,我用的是:USB Type-C ESP32開發板 CH340C
3. 直流電機一個
4. 電池,12v
硬件連接
1. VCC? 連接到電機驅動板,我這里連接到的是驅動板上的12v供電
2. GND? 接地線,驅動板與開發板要共用底線
3. 輸入 IN1 IN2 電機驅動板與ESP32開發板連接,我這里連接對應的開發板GPIO口是:2和4
4. ENA或者ENB 我這里只有一個電機,所以用的ENA,將電機驅動板上的ENA接口與ESP32上的 GPIO 15 連接
完整的聯系圖如下:
編寫代碼測試
打開?Thonny 在里面新建一個py腳本,編寫測試代碼如下:
代碼
from machine import Pin, PWM
import time# 定義GPIO引腳
in1 = Pin(2, Pin.OUT) # 例如ESP32的GPIO2
in2 = Pin(4, Pin.OUT) # 例如ESP32的GPIO4
enA = PWM(Pin(15), freq=5000) # 例如ESP32的GPIO15,頻率為5000Hz# 電機正轉
def motor_forward(duty_cycle):in1.value(1)in2.value(0)enA.duty(duty_cycle) # duty_cycle范圍從0到1023,代表0%到100%的占空比# 電機反轉
def motor_backward(duty_cycle):in1.value(0)in2.value(1)enA.duty(duty_cycle)# 電機停止
def motor_stop():in1.value(0)in2.value(0)enA.duty(0) # 完全關閉PWM信號# 示例:讓電機以不同的速度運行和停止
motor_forward(512) # 50%速度正轉
time.sleep(2)
motor_stop() # 停止
time.sleep(1)
motor_backward(768) # 75%速度反轉
time.sleep(2)
motor_stop() # 停止
注意事項
-
頻率:PWM信號的頻率可以根據你的需要進行調整,但通常5kHz到10kHz是常見的選擇。
-
占空比:
duty()
函數的值從0(0%)到1023(100%),你可以根據需要調整這個值來改變電機的速度。 -
引腳選擇:根據你的具體硬件平臺(如ESP8266, ESP32等),GPIO引腳的選擇可能會有所不同。請參考你的開發板文檔。
-
電源:確保你的電機和驅動板能夠承受所選擇的電壓和電流。建議大于5v,不然電機帶不動,無反應