|
該智能車(chē)采用紅外傳感器對(duì)賽道進(jìn)行道路檢測(cè),單片機(jī)根據(jù)采集到的信號(hào)的不同狀態(tài)判斷小車(chē)當(dāng)前狀態(tài),通過(guò)電機(jī)驅(qū)動(dòng)芯片L298N發(fā)出控制命令,控制電機(jī)的工作狀態(tài)以實(shí)現(xiàn)對(duì)小車(chē)姿態(tài)的控制。
本模型車(chē)的電路系統(tǒng)包括電源管理模塊、單片機(jī)模塊、傳感器模塊、電機(jī)驅(qū)動(dòng)模塊。其中采用AT89C52作為單片機(jī)控制芯片(5V),同時(shí)需要6V電源電機(jī)(L298N)和舵機(jī)、傳感器、紅外對(duì)管和電壓比較器模塊和7805穩(wěn)壓模塊。
從而實(shí)現(xiàn)將紅外采集模塊中的紅外發(fā)射接收對(duì)管檢測(cè)路面上面的軌跡,并將軌跡信息送到單片機(jī)中去,單片機(jī)采用模糊推理求出轉(zhuǎn)向的角度和行走速度,然后去控制行走部分,最終實(shí)現(xiàn)智能小車(chē)在規(guī)定路面上的軌跡行駛。
Altium Designer畫(huà)的原理圖和PCB圖如下:(51hei附件中可下載工程文件)
單片機(jī)源程序如下:
- #include <STC12C5Axx.h>
- sbit IN3=P1^0;
- sbit IN4=P1^1;
- sbit IN1=P1^2;
- //sbit ENA=P1^3;
- //sbit ENB=P1^4;
- sbit IN2=P1^5;
- sbit D4=P0^4;
- sbit D1=P0^1;
- sbit D2=P0^2;
- sbit D3=P0^3;
- sbit D0=P0^0;
- sbit D5=P0^5;
- void qian() //前進(jìn)
- {
- IN1=1;
- IN2=0;
- IN3=1;
- IN4=0;
- }
- void you() //YOU
- {
- IN1=1;
- IN2=0;
- IN3=0;
- IN4=1;
- }
- void zuo() //ZUO
- {
- IN1=0;
- IN2=1;
- IN3=1;
- IN4=0;
- }
- void PWMinit()
- {
- CMOD=0X02;//"時(shí)鐘源為1/2; "
- CL=CH=0X00;
- CCAPM0=0X42;
- CCAP0L=0X00;
- CCAP0H=0x00;
- CCAPM1=0x42;
- CCAP1H=0x00;
- CCAP1L=0x00;
- CR=1;
- }
- void PWMtiaojie(unsigned int num,int cex) //NUM"越大越快,調(diào)節(jié)范圍為55~99",cex"電機(jī)0,電機(jī)1"
- {
- double i=256*(100-num)/100;
- switch(cex)
- {
- case 0: CCAP0L=i; CCAP0H=i; CCAPM0=0x42; break;
- case 1: CCAP1L=i; CCAP1H=i; CCAPM1=0x42; break;
- }
- }
- void main()
- {
- PWMinit();
- while(1)
- {
- if(D1==1&&D3==1&&D2==1&&D0==1)
- {
- PWMtiaojie(25,0);
- PWMtiaojie(25,1);
- qian();
- }
- if(D2==0||D3==0)
- {
- PWMtiaojie(1,0);
- PWMtiaojie(1,1);
- you();
- }
- if(D1==0||D0==0)
- {
- PWMtiaojie(1,1);
- PWMtiaojie(1,0);
- zuo();
- }
- }
- }
復(fù)制代碼
所有資料51hei提供下載:
循跡小車(chē)硬件部分.rar
(1.27 MB, 下載次數(shù): 233)
2019-6-9 23:04 上傳
點(diǎn)擊文件名下載附件
PCB板圖
循跡小車(chē)程序部分.rar
(4.41 KB, 下載次數(shù): 162)
2019-6-9 23:00 上傳
點(diǎn)擊文件名下載附件
基于AT89C52的程序設(shè)計(jì)
|
|