智能小车 |
您所在的位置:网站首页 › 避障程序设计方法 › 智能小车 |
项目准备: stm32c8t6单片机一个 降压模块一个 L298N电机驱动模块2个、直流电机4个 TCRT5000循迹模块三个 12V锂电池一块 电路连接基本思路:12v锂电池为两个L298N电机驱动模块供电,一个L298N输出5V为C8T6单片机供电,12v电池通过降压模块输出3.3V电压为循迹模块,避障模块供电。 循迹模块图片(一般循迹模块有两种,我用的是这一种): 循迹模块使用介绍 该循迹模块原理: 检测到黑线时,输出端为低电平,二极管处于熄灭状态 若不是黑线,由于反射回来的的红外线强度足够大,输出端为高电平,指示二极管被点亮。 循迹设计思路:①三个循迹模块分别位于小车的左中右,分别记为:led0、led1、led2 配置相应的模式为上拉输入。 从循迹模块的原理我们可以知道,当循迹模块检测到黑线时,输出端为低电平,否则为高电平。 所以 // An highlighted block if(led0==0&&led1==1&&led2==1)小车左转 if(led0==1&&led1==0&&led2==1)小车前进 if(led0==1&&led1==1&&led2==0)小车右转 if(led0==1&&led1==1&&led2==1)小车停止(即未在黑线范围内)②电机速度控制:4个电机采用2个通用定时器输出的pwm进行前进,后退,左转,右转(同时速度也可调)。 左转: 左前、左后两个车轮后转;右前、右后两个车轮前转,实现了原地左转 右转: 左前、左后两个车轮前转;右前、右后两个车轮后转,实现了原地右转 详细内容见 STM32用PWM实现小电机的正反转 避障设计思路:避障模块图片: 此函数功能是直接读数据寄存器的值,来确定PA1 PA2 PA3 的状态, 0x0E:0000 1110三个“1”正好对应A1、A2、A3 比如说左边发现障碍物 0000 1110 &0000 1100即 0000 1100 右移一位即0x06 比如中间发现障碍物 0000 1110 &0000 1010 即0000 1010 右移以为即0x05 // An highlighted block #define No_Findx 0x07 //无障碍 #define Middle_Findx 0x05 //中间发现障碍物 #define Left_Findx 0x06 //左侧 #define Left_Middle_Findx 0X04 //左中测 #define Right_Findx 0x03 //右侧 #define Right_Middle_Findx 0x01 //右中侧 #define All_Findx 0x00 //全是障碍物其他的都是以此类推,当然左边发现障碍物可以分为:只有左边发现障碍物和左边或者左中发现障碍物。 如有错误,望大家多多指正。 附: ①小车引脚连接图: ②代码连接: 链接:https://pan.baidu.com/s/1k1uAvE72ynIJ_hwsas_qTg 提取码:lbay |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |