达尔文正在开发最强大的设计汽车系列。 继二轮平衡车、物流搬运车、STM32F407智能车之后,自动分拣车来了。 下面分享的内容虽然难度不是很大,但作为基础毕业设计还是有一定参考意义的。
自动分拣车总体方案
分拣小车的任务是:小车到达装货点并放置货物后,扫码并经服务器判断后向小车发送指令信息。 收到指令后,小车会将货物分拣至指定地点。
汽车整体功能结构
本设计所需的模块包括:跟踪避障小车模块、定位卸载模块、无线交互模块。
主控单片机:采用STC公司的STC89C52RC,为8051内核,内含Flash E2PROM存储器。 它是一款CMOS产品。 芯片内部最大存储空间为8KB。 单片机内部RAM的大小为512B。 选用工业级双列直插封装型微控制器。
此外,STC89C52微控制器还具有以下标准功能:4个外部中断、看门狗定时器、MAX810复位电路、3个16位定时器、全双工串口、7向量4级中断结构。 可降低至0Hz静态逻辑运算,支持2种软件可选的省电模式。 CPU在空闲时停止工作,允许串口、RAM、中断和定时器/计数器继续工作。 在掉电保护模式下,振荡器被冻结,RAM的内容被保存,所有工作停止,直到下一次硬件复位或中断。
市场上51系列单片机的总体成本较低。 与STM32相比,其开发的简单应用程序更便宜。 与其他八位微控制器相比,51系列具有乘法和除法指令、RAM区域的双功能地址范围以及从硬件到软件的一整套位处理器。 因此,它仍然在市场上占有很大的份额。
跟踪与避障硬件设计
要实现小车基本的跟踪和避障功能,需要利用驱动系统提供小车的驱动力,利用跟踪和避障系统来判断小车执行的行驶指令。
驱动系统硬件设计:根据本设计的思路,单片机根据检测到的数据进行判断,然后执行相应的功能,实现自动分拣车的智能控制。 在此过程中,动力系统为汽车提供动力,实现汽车各种功能的运动。
电源系统选型:
方案1:VM直流调速系统。 VM双闭环直流调速系统是工业生产中最常用的传动装置之一,常用于机床、冶金等众多机械领域。 具有调速范围宽、稳定性好、响应速度快、抗干扰能力强等优点。 它是直流调速系统中最成熟的。 其缺点是只能朝一个方向传导,操作要求严格,并且可能对其他电子设备造成干扰。
方案2:PWM直流调速系统。 PWM 直流电机通常用于微控制器或其他微处理器。 它是一种利用数字输出来控制模拟电路,节省能源、降低成本的技术。 实现了模拟信号的数字控制,降低了成本和功耗。
分析VM系统和PWM系统并对两者进行比较。 脉宽调制具有以下优点:
(1) PWM系统功耗较低。 相同电流下,热损失比VM系统低。
(2) PWM系统开关频率高、快速响应性能好、调速范围大[12]。
(3) PWM系统控制比较方便,设计简单,适合与单片机和小板配合使用。
(4)可设计为可逆PWM系统,实现电机反转和小车反向运动。
综上所述,采用可逆PWM直流调速系统。 易于安装且易于控制。 并采用市场上常见的L298N驱动芯片来驱动电机。
直流电机没有正负极之分,但为了设计方便,我们模拟电机一端为正极,另一端为负极。 本设计将芯片的5、6、7、10、11、12脚连接到51单片机的P1.1、P1.0、P1.2、P1.4、P1.3、P1.5接口。 芯片的输出端口2和3连接到左电机的正负极,输出端口13和14连接到右电机的正负极。 电机需要四节1.5V AA电池来驱动,并使用外部电池盒来放置电池。
当单片机P1.0信号为“1”时,左电机输出电路开关打开,P1.1输出信号“1”,P1.2信号“0”,OUT1端口输出VCC高电平,OUT2输出低电平0V,左电机正转。 同样,如果P1.3信号为“1”,P1.4信号为“0”,P1.5信号为“1”,则右电机反转。 就这样,车子就向前行驶了。 在程序中,可以这样定义:
1) 执行左电机正转:{ P1_0 = 1; P1_1=1; P1_2 = 0}
2) 执行左电机停止:{ P1_0 = 0; P1_1=0; P1_2 = 0}
3) 执行左电机反转:{ P1_0 = 1; P1_1=0; P1_2 = 1}
4) 执行右电机正转:{ P1_3 = 1; P1_4=1; P1_5 = 0}
5) 执行右电机停止:{ P1_3 = 0; P1_4=0; P1_5 = 0 }
6) 执行右电机反转:{ P1_3 = 1; P1_4=0; P1_5 = 1}
跟踪系统的硬件设计:本设计中使用的红外跟踪模块是TCRT5000红外反射传感器。 这种传感器的工作原理是依靠红外发射二极管不断发射红外线,被物体反射回接收管。 接收到的信号由比较器电路处理并输出数字信号。 用户可以通过旋钮调节检测的灵敏度。 本设计中用于检测车辆是否行驶在浅色地面上布置的黑线上,然后通过程序判断调整电子旋转以保持跟踪。
上图为TCRT5000红外反射传感器原理图。 图中的红外对接管用于发射和接收红外信号。 正常情况下,接通电源后,电源指示灯有电流流过,指示灯亮。 图中的10K可调电阻是芯片上的可调旋钮,用于改变电阻值来调节传感器的灵敏度。 LM3939是一个比较器。 当正极端电压大于负极端电压时,输出高电平,开关指示灯不亮。 当正极端电压小于负极端电压时,输出低电平0,开关指示灯灯形电流流过,灯亮。 实际中,当红外线被黑线吸收时,接口管没有接收到足够的红外线,接收管没有连接,比较器的正端电压必须大于负端电压,此时输出为高电平。 当传感器处于白地时,红外接收管接收红外线,接收器形成通路,比较器正极端子电压为0。负极端子接滑动变阻器,其电压必须大于0,则比较器输出0,开关指示灯亮。 根据检测到黑线时输出1、未检测到黑线时输出0的特点,将左跟踪传感器的输出连接到单片机的P3.6接口,右跟踪传感器的输出连接到单片机的P3.6接口。传感器连接到P3.7接口。 代码中可以这样设计:
1) 判断两侧均未检测到黑线:{P3_6 == 0; P3_7 == 0} 向前执行
2)判断左侧是否检测到黑线:{P3_6 == 1; P3_7 == 0} 并执行左转
3)判断右侧是否检测到黑线:{P3_6 == 0; P3_7 == 1} 并执行右转
4)判断两侧是否检测到黑线:{P3_6 == 1; P3_7 == 1} 执行停车
避障系统和跟踪系统采用相同的模块原理,采用相同的红外发射和红外接收方式工作。 当发射管发射的红外线遇到障碍物时,反射回来的红外线被接收管接通。 比较器输出低电平0; 当没有遇到障碍物且未连接接收管时,比较器输出高电平1。该模块的检测距离约为2~30cm,检测角度为35度。 通过调节旋钮滑动变阻器可以调节检测距离。
该设计仅使用红外发射传感器来检测障碍物。 虽然市面上有更好的超声波传感器等模块,但由于小车模拟环境是在仓库等工作环境,甚至是无人仓库,所以采用的是红外传感器。 检测障碍物就足够了。 另外,采用自动避障行驶,在仓库作业过程中,很容易造成小车组之间的意外失误。 如果一辆电车成功避开障碍物,其他电车将不得不重新规划路线,这增加了管理系统的负担。 因此,为了方便主控系统的电路计算,本设计仅在检测到障碍物后执行停车指令,使用红外检测模块就足够了。
本设计中,左侧避障传感器输出连接至P3.4,右侧避障输出端子连接至P3.5。 在程序中可以这样设置:
(1) 判断左侧是否有障碍物:{ P3_4 == 0 ; P3_5 == 1 } 执行停车
(2) 判断右侧是否有障碍物:{ P3_4 == 1 ; P3_5 == 0 } 执行停车
(3) 判断双方都遇到了障碍: { P3_4 == 0 ; P3_5 == 0 } 执行停车
定位与卸载硬件设计
定位卸载系统由定位系统和舵机卸载系统组成。 利用定位系统判断小车是否行驶到指定卸货点,利用舵机卸货系统来操作货物卸货。
定位系统的硬件设计:定位系统采用光敏电阻传感器和LED发光二极管组成定位点识别系统。 设计中使用了4个LED发光二极管和一个光敏电阻传感器。 实际使用方法如图4-1所示。 在路线上设置四个点,在每个点的适当位置放置一个LED发光二极管,并在汽车侧面安装一个光敏电阻传感器。 四个定位点模拟仓库内的装货点、A区、B区、C区。 当小车到达第一点时,光敏电阻传感器感应到光线达到标准,输出低电平。 然后判断变量中是否存储了wifi信号。 如果wifi变量为0,汽车就会停下来。 货物装完后,wifi变量不等于0,光敏信号为0,则小车向前行驶。 当光敏电阻传感器感应不到标准强度的光时,输出信号“1”。 此时,对变量进行比较,另一个变量的值加一。 如此循环下去,直到小车到达wifi信息对应的定位点后停止卸货。
卸料系统硬件设计:
SG90 9g模型舵机用于执行卸载动作。 当卸载条件满足时,舵机子程序驱动舵机旋转90度,将称重模块上放置的货物推下。 动作完成后,卸载功能完成,舵机复位,变量归零。 程序再次开始循环变量判断,小车继续跟踪回到起始点并停止。 下图为轿厢二层舵机安装平面图。 将wifi模块放置在二楼,避免其他干扰。
为了驱动舵机旋转,需要通过信号线给舵机提供周期性的直流偏置电压。 舵机将输入电压与参考电压进行比较,得到电压差输出,并根据正负电压差来确定旋转方向。 此外,旋转角度是根据输入方波的周期确定的。 该参数t是使用定时器0来计数的。单片机的晶振定时为每次0.1ms。 计数的数量决定了参数t的周期。 参数t的说明如下表所示。 展示。
设计中要将舵机旋转90度,需要输入周期为1.5ms的方波。 旋转完成后,输入周期为0.5ms的方波,电机开始反转并复位。
无线传输及称重系统硬件设计
无线传输系统是指客户端和服务器通过无线连接来交换信息并处理传输的数据。 本系统分为WIFI无线模块、红外遥控模块和称重模块。
WIFI传输功能设计:使用ESP8266WIFI模块。 本设计使用Android移动应用程序扫描商品上的条形码或二维码。 识别号码后,根据选择的范围将数据发送到esp8266模块。 微控制器获取传输的wifi数据,对上传的数据进行权重,然后确定在哪个LED定位点进行停车和卸货。 本系统需要ESP8266模块、手机APP、打印的条码/二维码组成WIFI无线传输系统。
红外遥控功能的设计:旨在作为手动处理临时问题时的一种手动控制方法。 微控制器初始化后或中断期间,通过按按钮切换自动和手动模式。 本设计采用IR1838型号红外接收管。 红外遥控利用遥控器发射的红外信号让汽车执行四个简单的动作:停车、直行、转弯、倒车。 采用通用21键红外遥控器进行遥控操作。
称重传感器功能设计:选用的称重传感器为桥式压力应变传感器和型号为hx711的24位A/D转换芯片。 hx711模块专用于高精度电子秤。 集成了所需的外围电路,抗干扰能力强,可直接与单片机连接。 当单片机判断获取的wifi数据一致时,执行称重功能,获取24位AD信号后,通过公式计算出重量。 然后将条码数据和计算结果发送到手机,手机程序根据获得的数据在列表框中添加数值显示。 然后汽车开始行驶,下一个过程开始。 下图为称重模块的功能结构图:
编程与调试
主要功能设计:
void main() //主程序入口
{
bit ExeFlag=0; //定义可执行位变量
EX0=0; //同意开启外部中断1
IT0=1; //设定外部中断1为低边缘触发类型
EA=1;
TMOD=0X01;
TH0= 0XFc;//1ms定时
TL0= 0X18;
TR0= 1;
ET0= 1;
Init_Tim1(); //串口初始化子程序
SendString("AT+CWMODE_DEF=1rn"); //进入模式1 Station
HAL_Delay(100); //延时100ms
SendString("AT+CWJAP_DEF="SCY","bilibili"rn"); //连接家庭路由器
HAL_Delay(3000);
SendString("AT+CWMODE_DEF=2rn");//进入模式2 SoftAP
HAL_Delay(100);//延时100ms
SendString("ATE0rn");//关闭回显
HAL_Delay(100);
SendString("AT+CIPMUX=1rn");//wifi模块多连接模式
HAL_Delay(100);
SendString("AT+CIPSERVER=1,333rn");//建立TCP服务器
while(1) //程序主循环
{
if(P3_3 == 0)
{
delay_nms(10);
if(P3_3 == 0)
{temp++ ; while(!P3_3); } //检测到按钮按下
BUZZ=0; //蜂鸣器发出“滴”声响。
delay(50);
BUZZ=1; //响50ms后关闭蜂鸣器
}
if(temp > 2) //如果按下超过2次,即第三次还原成1
{temp = 1; }
switch(temp)
{
case 1: Car_Avoidance();EX0 = 0;break; //执行自动模式子程序
case 2: BUZZ = 1; EX0 = 1;break; //打开中断,解码红外遥控指令
}}}
完整代码可以从“亲爱的新闻”回复中获取:排序小车。
此设计是Don’t Say I'm a Sheep 分享的原创项目。 原文链接:
结尾
毕业系列: