小時候玩過四驅(qū)車的同學應該都接觸過馬達,馬達是一種直流電機,馬達上有兩個銅片,同干電池正負極分別連接兩個銅片,馬達就可以轉(zhuǎn)起來了。把干電池反過來接銅片,馬達就反轉(zhuǎn)了。今天我們要學習的是控制TT馬達,是一種直流減速電機,所謂減速就是在馬達上裝了減速箱,速度降低了,扭矩變大了。TT馬達如下圖所示。
如果跟電機通上的電源能像PWM那樣調(diào)節(jié)占空比,那電機就能實現(xiàn)調(diào)速功能。然后單片機的引腳輸入電流大小有限,不足以使電機轉(zhuǎn)動,所以我們將使用一種器件,叫做電機驅(qū)動模塊。我們今天要使用的是L298N電機驅(qū)動模塊,如下圖所示。
L298N電機驅(qū)動模塊有如下幾個接口,供電正極端子接的電源不能單片機的供電正極共用,我們用7.4V給它供電;接地端子和單片機共用GND;ENA、ENB的插的跳線帽要取下來,連接STM8的PWM口,IN1~IN4連接STM8的IO口;OUT1、OUT2接電機的兩個銅片,OUT3、OUT4接另一個電機的兩個銅片??梢钥闯鯨298N電機驅(qū)動模塊可以控制兩路電機,每一路電機可以并聯(lián)很多個電機,OUT1、OUT2在電機驅(qū)動模塊功率允許的條件下可以接多個直流電機。
ENA、IN1、IN2控制OUT1、OUT2的輸出;
ENB、IN3、IN4控制OUT3、OUT4的輸出。
ENA接收的PWM信號控制電機的轉(zhuǎn)速,占空比越大,電機轉(zhuǎn)速越快。IN1、IN2的高低電平組合控制電機的轉(zhuǎn)向。
電機轉(zhuǎn)向控制如下表。
一、庫函數(shù)1、打開DAHUME MINI.stw文件;
2、在STVD左側(cè)Workspace窗口Source Files目錄下找到main.c,雙擊打開;
3、編寫如下代碼;
#include "main.h"
#define IN1PC1
#define IN2PC2
#define IN3PC3
#define IN4PC4
#define zuo1
#define you2
void setup(void)
{
delay(10);
CLOCK(_16MHz);
pinMode(IN1, OUTPUT);
pinMode(IN2, OUTPUT);
pinMode(IN3, OUTPUT);
pinMode(IN4, OUTPUT);
PWM3_init(10, 100);
//_asm("rim");//rim為打開總中斷,sim為關(guān)閉總中斷
}
void go(unsigned char speed)
{
digitalWrite(IN1, HIGH);digitalWrite(IN3, HIGH);
digitalWrite(IN2, LOW);digitalWrite(IN4, LOW);
PWM3(zuo, speed);PWM3(you, speed);
}
main()
{
setup();
while (1)
{
go(50);
}
}
#define是C語言的關(guān)鍵字,是宏定義。#define名詞1名詞2是表示用名詞1代替名詞2,名詞2可以為地址、寄存器、變量名、數(shù)值、函數(shù)等,宏定義的作用之一是助記。
二、練習1、按照《綜合練習1循跡小車》,組裝循跡小車;
2、參照go函數(shù),編寫back、left、right函數(shù),left、right效果是原地左轉(zhuǎn)、右轉(zhuǎn);
3、編寫stop函數(shù),參數(shù)作為停止持續(xù)時間;
4、調(diào)用以上函數(shù),實現(xiàn)小車走三角形、長方形、梯形、五邊形路徑。