新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > AVR與L298進(jìn)行直流電機(jī)控制

AVR與L298進(jìn)行直流電機(jī)控制

作者: 時間:2016-11-26 來源:網(wǎng)絡(luò) 收藏
軟件環(huán)境:icc+avrstudio

打開motor.h更改以下內(nèi)容即可。

//PD4,PD5 電機(jī)方向控制
#define moto_en1 PORTD |= 0x10
#define moto_en2 PORTD |= 0x20
#define moto_uen1 PORTD &=~ 0x10
#define moto_uen2 PORTD &=~ 0x20

軟件核心介紹:

通過控制電機(jī)的IN1和IN2改變方向, pwm控制速度。
IN1和IN2不同時,電機(jī)轉(zhuǎn)動;
IN1和IN2相同時,電機(jī)急停。

硬件連接電路圖


avr+N298控制電機(jī)輸入信號與電機(jī)工作方式


N298電機(jī)控制芯片引腳圖


電機(jī)控制資料包括 所有電機(jī)控制例子源程序,L298數(shù)據(jù)手冊,連接電路圖。

今天有人反映,程序有點(diǎn)小問題

程序中這里的IO初始化

void port_init(void)
{
PORTA = 0x00;
DDRA = 0x00;
PORTB = 0x00;
DDRB = 0x00;
PORTC = 0x00;
DDRC = 0x00;
PORTD = 0x00;
// DDRD = 0x80; // D7 PWM //參考芯片手冊
//這里修改
DDRD =0xB0; //PD4 PD5 PD7 OUT
}

另外注意如果,啟動時的PWM占空比太低 電機(jī)是轉(zhuǎn)不起來的,

void main(void)
{


//初始工作

init_devices();

while(1)
{
for_ward(0); //默認(rèn)速度運(yùn)轉(zhuǎn) 正
Delay1s(5); //延時5s
motor_stop(); //停止
Delay1s(5); //延時5s
back_ward(0); //默認(rèn)速度運(yùn)轉(zhuǎn) 反
Delay1s(5); //延時5s
speed_add(20); //加速
Delay1s(5); //延時5s
speed_subtract(20); //減速
Delay1s(5); //延時5s
}

}

及這里的for_ward(0); //默認(rèn)速度運(yùn)轉(zhuǎn) 正
如果改為for_ward(5);電機(jī)轉(zhuǎn)不起來


關(guān)鍵詞: AVRL298直流電機(jī)控

評論


技術(shù)專區(qū)

關(guān)閉