一、項(xiàng)目介紹
隨著社會(huì)經(jīng)濟(jì)的快速發(fā)展,人們對(duì)節(jié)能環(huán)保的要求越來(lái)越高,電動(dòng)車(chē)因其無(wú)污染、噪音小、使用成本低等優(yōu)點(diǎn)逐漸成為了市場(chǎng)關(guān)注的焦點(diǎn)。同時(shí),隨著科技的不斷進(jìn)步和應(yīng)用,電動(dòng)車(chē)的技術(shù)水平也在不斷提高。
為了更好地滿足市場(chǎng)需求和科技進(jìn)步的要求,本項(xiàng)目基于51單片機(jī)設(shè)計(jì)了一款電動(dòng)車(chē)控制器。主要包括電動(dòng)車(chē)控制和驅(qū)動(dòng)兩個(gè)關(guān)鍵部分。其中,控制部分采用51單片機(jī)作為控制核心,通過(guò)編程實(shí)現(xiàn)電動(dòng)車(chē)前后行駛、左右轉(zhuǎn)向、加速等操作。而驅(qū)動(dòng)部分則采用L298N驅(qū)動(dòng)芯片驅(qū)動(dòng)直流電機(jī)。當(dāng)前設(shè)計(jì)的電動(dòng)車(chē),支持鋰電池供電、支持按鍵實(shí)現(xiàn)電動(dòng)車(chē)前后行駛、左右轉(zhuǎn)向和加速等操作,電機(jī)采用直流電機(jī),驅(qū)動(dòng)芯片采用L298N。
二、系統(tǒng)架構(gòu)
本系統(tǒng)由控制器、電機(jī)、驅(qū)動(dòng)芯片、鋰電池和按鍵等組成,其功能、特點(diǎn)如下:
(1)控制器:采用AT89S52微控制器,作為整個(gè)系統(tǒng)的核心控制部分??刂破鹘邮諄?lái)自按鍵的信號(hào),控制驅(qū)動(dòng)芯片輸出電機(jī)控制信號(hào),從而實(shí)現(xiàn)對(duì)電動(dòng)車(chē)的前后行駛、左右轉(zhuǎn)向、加速等控制功能。
(2)電機(jī):采用直流電機(jī),其轉(zhuǎn)速和轉(zhuǎn)向可通過(guò)驅(qū)動(dòng)芯片控制信號(hào)進(jìn)行調(diào)節(jié)。
(3)驅(qū)動(dòng)芯片:采用L298N驅(qū)動(dòng)芯片,為電機(jī)提供驅(qū)動(dòng)電流,并控制電機(jī)轉(zhuǎn)速和轉(zhuǎn)向。L298N驅(qū)動(dòng)芯片具有功率大、穩(wěn)定性好等特點(diǎn)。
(4)鋰電池:為電動(dòng)車(chē)提供動(dòng)力,具有體積小、能量密度高、充電效率高、自放電率低等優(yōu)點(diǎn)。
(5)按鍵:用于控制和調(diào)節(jié)電動(dòng)車(chē)的運(yùn)行狀態(tài),包括前后行駛、左右轉(zhuǎn)向、加速等操作。
三、系統(tǒng)設(shè)計(jì)
3.1 控制器設(shè)計(jì)
本項(xiàng)目采用STC89C52為主控芯片,主要功能是接收來(lái)自按鍵的信號(hào),并通過(guò)控制L298N驅(qū)動(dòng)芯片輸出驅(qū)動(dòng)電流,從而控制電機(jī)的轉(zhuǎn)速和轉(zhuǎn)向??刂破鬟€需要實(shí)現(xiàn)鋰電池充電管理、限位保護(hù)等的功能。
設(shè)計(jì)流程:
(1)編寫(xiě)單片機(jī)的邏輯程序,實(shí)現(xiàn)對(duì)按鍵信號(hào)的捕獲和處理,以及對(duì)L298N驅(qū)動(dòng)芯片的控制。
(2)為了實(shí)現(xiàn)鋰電池充電和保護(hù),采用鋰電池充電模塊和充電管理芯片。
3.2 電機(jī)和驅(qū)動(dòng)芯片設(shè)計(jì)
本項(xiàng)目電機(jī)采用直流電機(jī),驅(qū)動(dòng)芯片采用L298N。
設(shè)計(jì)流程:
(1)根據(jù)電機(jī)型號(hào)和參數(shù),確定合適的電機(jī)供電電壓和控制電路。
(2)根據(jù)實(shí)際需要,確定L298N驅(qū)動(dòng)芯片的工作模式和參數(shù),設(shè)計(jì)驅(qū)動(dòng)電路。
(3)為提高電機(jī)的效率和壽命,添加電機(jī)驅(qū)動(dòng)電阻、反電動(dòng)勢(shì)抑制電路電路。
3.3 鋰電池設(shè)計(jì)
本項(xiàng)目采用鋰電池供電。
設(shè)計(jì)流程:
(1)根據(jù)需要,選擇適當(dāng)?shù)匿囯姵匦吞?hào)和容量。
(2)設(shè)計(jì)電池充電管理電路,實(shí)現(xiàn)對(duì)鋰電池的充電和保護(hù)。
(3)結(jié)合其他電路的設(shè)計(jì),完成對(duì)鋰電池的供電和相應(yīng)的充電管理。
3.4 按鍵設(shè)計(jì)
按鍵是控制電動(dòng)車(chē)運(yùn)行狀態(tài)的關(guān)鍵部分。
設(shè)計(jì)流程:
(1)根據(jù)實(shí)際需要,確定需要添加的按鍵類(lèi)型和數(shù)量。
(2)設(shè)計(jì)按鍵接口電路,實(shí)現(xiàn)按鍵信號(hào)的捕獲和處理。
(3)結(jié)合控制器設(shè)計(jì),實(shí)現(xiàn)對(duì)電動(dòng)車(chē)的前后行駛、左右轉(zhuǎn)向、加速等操作控制。
四、代碼實(shí)現(xiàn)
4.1 按鍵檢測(cè)程序設(shè)計(jì)
本項(xiàng)目用到了9個(gè)按鍵,按鍵按下是低電平。 實(shí)現(xiàn)了前后行駛切換控制、左右轉(zhuǎn)向燈控制、加速控制、喇叭控制、前后剎車(chē)燈控制、一個(gè)開(kāi)機(jī)鍵。
以下是按鍵的完整邏輯代碼:
#include < reg52.h >
?
sbit key1 = P1^0; // 按鍵1
sbit key2 = P1^1; // 按鍵2
sbit key3 = P1^2; // 按鍵3
sbit key4 = P1^3; // 按鍵4
sbit key5 = P1^4; // 按鍵5
sbit key6 = P1^5; // 按鍵6
sbit key7 = P1^6; // 按鍵7
sbit key8 = P1^7; // 按鍵8
sbit key9 = P2^0; // 按鍵9
?
sbit forward = P3^0; // 前進(jìn)
sbit backward = P3^1; // 后退
sbit left = P3^2; // 左轉(zhuǎn)燈
sbit right = P3^3; // 右轉(zhuǎn)燈
sbit accelerate = P3^4; // 加速器
sbit horn = P3^5; // 喇叭
sbit stoplight1 = P3^6; // 前剎車(chē)燈
sbit stoplight2 = P3^7; // 后剎車(chē)燈
?
void main() {
while(1) {
if(key1 == 0) { // 按鍵1按下
forward = 1;
backward = 0;
}
if(key2 == 0) { // 按鍵2按下
forward = 0;
backward = 1;
}
if(key3 == 0) { // 按鍵3按下
left = 1;
}
else {
left = 0;
}
if(key4 == 0) { // 按鍵4按下
right = 1;
}
else {
right = 0;
}
if(key5 == 0) { // 按鍵5按下
accelerate = 1;
}
else {
accelerate = 0;
}
if(key6 == 0) { // 按鍵6按下
horn = 1;
}
else {
horn = 0;
}
if(key7 == 0) { // 按鍵7按下
stoplight1 = 1;
}
else {
stoplight1 = 0;
}
if(key8 == 0) { // 按鍵8按下
stoplight2 = 1;
}
else {
stoplight2 = 0;
}
if(key9 == 0) { // 按鍵9按下
forward = 0;
backward = 0;
left = 0;
right = 0;
accelerate = 0;
horn = 0;
stoplight1 = 0;
stoplight2 = 0;
}
}
}