14自走車(L298N)

(2017/09/22)

下週課後電腦班要上自走車,整理資料時,想說用micro:bit當控制器來測試看看(以前是用arduino來控制),所以才有此文章!!

這次用到比較多腳位,所以參考下圖

一、材料:

  • micro:bit 二片

  • micro:bit擴展板:Grace Chen提供的

  • 自走車車體:motoduino的車體

  • L298N馬達驅動模組

  • 18650電池盒及電池

二、佈線

  • L298N的out1、out2與右車輪的馬達連結

  • L298N的out3、out4與左車輪的馬達連結

  • L298N的in1、in2、in3、in4分別與micro:bit的P0、P1、P2、P3來連接

  • L298N的ENA、ENB先jumper住(以最快速度來跑),事後要控制速度再把ENA接P4、ENB接P5

  • L298N的12V接18650電池盒的正極

  • L298N的GND分別接18650電池盒的負極及micro:bit的GND

  • L298N的5V不接線(會把micro:bit給燒壞)

三、簡易測試

  • L298N控制馬達的正轉

    • 右馬達:in1為LOW、in2為HIGH (ENA控制轉速 0~255)

    • 左馬達:in3為LOW、in4為HIGH (ENB控制轉速 0~255)

  • L298N控制馬達的正轉

    • 右馬達:in1為HIGH、in2為LOW (ENA控制轉速 0~255)

    • 左馬達:in3為HIGH、in4為LOW (ENB控制轉速 0~255)

  • L298N控制馬達的停止

    • 右馬達:in1為LOW、in2為LOW 或 in1為HIGH、in2為HIGH

    • 左馬達:in3為LOW、in4為LOW 或 in3為HIGH、in4為HIGH

  • 程式如下:

    • 經測試後,發現並非所有腳位都適合當控制馬達的腳位,如下圖打叉的腳位就不行

    • 所以將控制左輪的in3、in4改接到P2、P8

四、測試車子前進、後退、左右轉

  • L298N的in1、in2、in3、in4分別與micro:bit的P0、P1、P2、P8來連接

  • 按 micro:bit 的A+B前進車子、按A向左轉、按B向右轉、搖動向後退

  • 程式如下:

五、利用板子傾斜度控制車子前進、後退、左右轉

  • L298N的in1、in2、in3、in4分別與micro:bit的P0、P1、P2、P8來連接

  • 當 micro:bit 前向傾(logo較低)車子前進、向後傾(logo較高)車子後退、向左傾(向左傾斜)車子左轉、向右傾(向右傾斜)車子右轉、按A鍵時車子停止

  • 程式如下:

    • 測試畫面:

六、利用另一塊micro:bit板子來控制車子前進、後退、左右轉

  • 自走車上micro:bit的程式,加入廣播的功能,修改如下:

    • 準備另一塊micro:bit 當遙控器,程式如下:

    • 測試影片

七、利用micro:bit Blue的APP來控制車子前進、後退、左右轉

  • 參考上文後,修改程式如下:

    • 測試時,發現按方向鍵時,micro:bit的方向指示燈不會顯示,當然車子也不會動!因此,我先將L298N到micro:bit的GND線先拔掉,再重新連線,按方向鍵micro:bit就會顯示方向燈了,這時再把GND線插上,車子就可以被控制了!

    • 測試影片,如下:

八、利用按鍵控制車子轉動速度

  • 銜接【五、利用板子傾斜度控制車子前進、後退、左右轉】的部份

  • 增加 按A鍵-車子加速、按B鍵-車子減速、按A+B鍵-車子停止 的功能

  • 由於 L298N的ENA、ENB需用到PWM的腳位,在micro:bit有類比輸入功能的腳位有P0、P1、P2、P3、P4、P10 等腳位(其值為0~1023),所以將原本控制右輪的P0、P1改為P13、14,將ENA接到P0、ENB接到P1,如下圖

    • 程式的部份如下:

    • 車子行進時,按下A鍵,車子就會加速,同樣,按下B鍵,車子就會減速

    • 如果要用另一塊板子來控制車子,也是將按A鍵及B鍵,給廣播過去給車子,所以不再贅述。

    • 另外,如果兩個輪子的轉動速度不同,就利用兩個變數speed1及speed2來分別控制兩個輪子的轉速。