文章目录
一、智能避障小车(V1.0)
V1.0版本智能避障小车,通过单片机控制各避障模块并驱动直流电机,实现小车根据障碍物情况不同,做出前进/后退/转弯/后转弯等动作,可以在一般室内条件下无碰撞行进。
(一)准备阶段
1、制作思路
先购买各个硬件模块,之后解耦智能避障小车为动力模块与避障模块两大部分,分别测试成功后进行软件模拟,最后完成硬件拼接与实际测试。
2、制作原则
安全第一,避免翻车。
3、硬件系统
(1)动力模块
四个直流减速电机,一个L298N电机驱动模块;
(2)避障模块
四个或六个红外避障模块;
(3)其它
组装用:89C52单片机、5V电池、小车底盘、固定件、轮子(某宝成套出售),打胶枪,电烙铁、杜邦线(公母)
4、软件系统
(1)动力模块
A.驱动电机正反转:
驱动一组直流电机正转,当P3^2口接收一个低电平时触发外部中断,中断返回后驱动直流电机反转(L298N驱动电机真值表如下):
程序:
#include <reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit IN1 = P0^0;
sbit IN2 = P0^1;
uint flag;
void exter0() interrupt 0{
IN1 = 1;
IN2 = 1;
flag = 0;
}
void main(){
flag = 1;
EA = 1;
EX0 = 1;
while(flag == 1){
IN1 = 1;
IN2 = 0;
}
if(flag == 0){
while(1){
IN1 = 0;
IN2 = 1;
}
}
}
(2)避障模块
A.当避障模块前有障碍物时向单片机P3^2口发送一个低电平
#include <reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit led1 = P1^0;
sbit led2 = P1^1;
uint flag;
void exter0() interrupt 0{
flag = 0;
led1 = 0;
led2 = 1;
}
void main(){
flag = 1;
EA = 1;
EX0 = 1;
while(flag == 1){
led1 = 0;
led2 = 0;
}
if(flag == 0){
while(1){
led1 = 1;
led2 = 0;
}
}
}
(3)模块合并
A.智能小车上电后直行,当4个避障模块中任意一个遇到障碍物时,小车停止并后退,后方遇到障碍停止并前进,五次遇到障碍后小车停止,LED1点亮。
扫描二维码关注公众号,回复:
9930658 查看本文章
#include <reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit led1 = P1^0;
sbit IN1 = P0^0;
sbit IN2 = P0^1;
sbit IN3 = P0^2;
sbit IN4 = P0^3;
sbit ob1 = P0^4;
sbit ob2 = P0^5;
sbit ob3 = P0^6;
sbit ob4 = P0^7;
sbit ex0 = P3^2;
uint flag,temp,obstacle,n;
void delay(uint z){
uint x,y;
for (x = 200; x > 0; x--) {
for(y = z; y > 0; y--);
}
}
void exter0() interrupt 0{
IN1 = IN2 = IN3 = IN4 = 1;
ex0 = 1;
obstacle = 1;
n = !flag;
flag = n;
temp ++;
}
void main(){
while(1){
ob1 = ob2 = ob3 = ob4 = 1;
ex0 = 1;
flag = 1;
temp = 1;
EA = 1;
EX0 = 1;
while(temp <= 5){
while(flag == 1){
IN1 = IN3 = 1;
IN2 = IN4 = 0;
obstacle = ob1 && ob2;
while(obstacle == 0){
ex0 = obstacle;
delay(210);
}
}
while(flag == 0){
IN1 = IN3 = 0;
IN2 = IN4 = 1;
obstacle = ob3 && ob4;
while(obstacle == 0){
ex0 = obstacle;
delay(210);
}
}
}
while(1){
IN1 = IN2 = IN3 = IN4 = 0;
led1 = 0;
}
}
}
(二)测试阶段
正常运行,测试成功。
下一个版本计划升级转向避障与声音控制启动。