版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
8.2.2嵌入式智能车停止、前进和后退程序设计要实现主车路径的自动识别,可利用嵌入式智能车核心板通过CAN总线的通信方式来获取电机驱动板上的码盘数据,以及采集寻迹板上的红外对管的数据。1.设置电机转速函数设置电机转速是通过CanP_HostCom.c文件中的Send_UpMotor(intx1,intx2)函数来实现的。设置电机转速函数,代码如下:嵌入式智能车停止、前进和后退程序设计嵌入式智能车停止、前进和后退程序设计voidSend_UpMotor(intx1,intx2){
u8txbuf[4];
txbuf[0]=x1;
txbuf[1]=x1;
txbuf[2]=x2;
txbuf[3]=x2;
if(CanDrv_TxEmptyCheck())
{
CanDrv_TxData(txbuf,4,CAN_SID_HL(ID_MOTOR,0),0,_NULL);
CanP_Cmd_Write(CANP_CMD_ID_MOTO,txbuf,0,CAN_SID_HL(ID_MOTOR,0),0);
}
else
CanP_Cmd_Write(CANP_CMD_ID_MOTO,txbuf,4,CAN_SID_HL(ID_MOTOR,0),0);}
第一个参数x1为左侧电机速度,且赋值为负数时,电机会向相反的方向转动;第二个参数x2为右侧电机速度,且赋值为负数时,电机会向相反的方向转动。2.限制电机转速函数在设置电机转速时,通常会做一定的限制,限制电机转速是通过roadway_check.c文件中的Control(intL_Spend,intR_Spend)函数来实现的。限制电机转速函数,代码如下:
嵌入式智能车停止、前进和后退程序设计voidControl(intL_Spend,intR_Spend){
if(L_Spend>=0)
{
if(L_Spend>100)
L_Spend=100;
if(L_Spend<5)
L_Spend=5;
}
else
{
if(L_Spend<-100)
L_Spend=-100;
if(L_Spend>-5)
L_Spend=-5;
}
if(R_Spend>=0)
{
if(R_Spend>100)
R_Spend=100;
if(R_Spend<5)
R_Spend=5;
}
else
{
if(R_Spend<-100)
R_Spend=-100;
if(R_Spend>-5)
R_Spend=-5;
}
Send_UpMotor(L_Spend,R_Spend);}Control()函数的参数含义和Send_UpMotor()函数一致。嵌入式智能车停止、前进和后退程序设计获取当前码盘值是通过roadway_check.c文件中的Roadway_mp_syn(void)函数来实现的。获取当前码盘值函数,代码如下: voidRoadway_mp_syn(void) {
Roadway_cmp=CanHost_Mp; }获取当前码盘值函数在前进时,从嵌入式智能车左边看,轮子是逆时针旋转;从右边看,轮子是顺时针旋转。这样,就可以控制左轮逆时针旋转、右轮顺时针旋转,就能控制嵌入式智能车前进。嵌入式智能车前进控制函数Car_Go()。前进控制函数voidCar_Go(uint8_tspeed,uint16_ttemp)//主车前进参数:速度、码盘{
Roadway_mp_syn();
//码盘同步
Stop_Flag=0;
//运行状态标志位
Go_Flag=1;
//前进标志位
wheel_L_Flag=0;
//左转标志位
wheel_R_Flag=0;
//右转标志位
wheel_Nav_Flag=0;
//码盘旋转标志位
Back_Flag=0;
//后退标志位
Track_Flag=0;
//循迹标志位
temp_MP=temp;
//码盘值
Car_Spend=speed;
//速度值
Control(Car_Spend,Car_Spend);//电机驱动函数
while(Stop_Flag!=0x03);//等待前进完成}在后退时,从嵌入式智能车左边看,轮子是顺时针旋转;从右边看,轮子是逆时针旋转。这样,就可以控制左轮顺时针旋转、右轮逆时针旋转,就能控制嵌入式智能车后退。嵌入式智能车后退控制函数Car_Back()。后退控制函数voidCar_Back(uint8_tspeed,uint16_ttemp)//主车后退参数:速度/码盘{
Roadway_mp_syn();
//码盘同步
Stop_Flag=0;
//运行状态标志位
Go_Flag=0;
//前进标志位
wheel_L_Flag=0;
//左转标志位
wheel_R_Flag=0;
//右转标志位
wheel_Nav_Flag=0;
//码盘旋转标志位
Back_Flag=1;
//后退标志位
Track_Flag=0;
//循迹标志位
temp_MP=temp;
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 安全知识普及确保健康成长小学主题班会课件
- 无人零售货架补货机器人
- 辽宁省营口市普通高中学情调研2025-2026学年高二下学期6月阶段检测物理试卷(含解析)
- 客户服务沟通技巧与流程优化手册
- 人形机器人产业新质
- 诚实守信主题教育活动小学主题班会课件
- 建筑项目施工进度管理与监测方案
- 酒店客房服务标准化流程与客户满意度提升手册
- 虚拟现实技术与应用开发技术手册
- 江苏省南京师范大学附属中学2024-2025学年高一上学期期末考试化学试题
- 2026海南万宁市总工会招聘工会社会工作者11人(第1号)笔试备考试题及答案详解
- 2026年6月成都市锦江区国有企业招聘17人笔试参考试题及答案详解
- 2026年甘肃省金昌市公务员招聘笔试参考试题及答案详解
- 2026年浙江省永康市高一化学上册期末考试模拟试卷附完整答案【必刷】
- 人教精通版小学英语3年级至6年级单词带音标
- 固体料仓 (2.26)设计计算
- 管道保温层厚度的计算方法-(三种方法)
- 航信离港系统静态数据维护手册
- JJG 52-2013弹性元件式一般压力表、压力真空表和真空表
- GB/T 9634.2-2002铁氧体磁心表面缺陷极限导则第2部分:RM磁心
- GB/T 5293-2018埋弧焊用非合金钢及细晶粒钢实心焊丝、药芯焊丝和焊丝-焊剂组合分类要求
评论
0/150
提交评论