智能车浅谈 电磁组——环岛处理
前言
本文为第十七届全国大学生智能车电磁四轮部分经验分享,转载于智能车电磁组——环岛处理,文中如有不妥之处欢迎批评指正。
智能车电磁组——环岛处理
智能车电磁组——环岛处理
- 一、电感排布
- 二、圆环思路
- 1.入环
- (1)预圆环
- (2)入环
- 2.环岛内
- 3.出环
- (1)预出环
- (2)出环
- 三、代码部分
- 1.入环
- 2.圆环内寻迹
- 3.出环
一、电感排布
二、圆环思路
1.入环
(1)预圆环
在电磁智能车中,圆环要想稳定入环,预圆环判断及处理是非常重要以及不可缺少的。
在预圆环的判断过程中,我使用的是M、L、M_2这三路电感,当进入靠近预圆环的位置时,M、L、M_2这三路电感都会增大,而且当到达预圆环的位置时,M电感与M_2电感会有一个差值,通过判断M、L、M-M_2大于阈值来判断预圆环的标志位。
(2)入环
当预圆环的标志位置1之后,接下来就到了入环,我是通过判断预圆环然后开始通过编码器去计路程,当路程达到一个定值之后就通过舵机固定打角,执行入环程序。
注:在编码器计路程的过程中,为了防止高速情况下因为电感值的变化过大导致舵机小幅度的摆动进而导致车身姿态不稳,可以在这过程中让差比和的误差手动置零,让舵机保持在中值状态。
2.环岛内
当执行入环程序之后,在圆环里不能一直保持固定打角,所以我在入环之后,开启陀螺仪的积分标志位,当陀螺仪的积分数值大于一个定值,则代表入环程序结束,执行环内寻迹。
这里环内寻迹我切换到第二排的三个电感寻迹,因为第一排的三个电感已经在赛道之外了,无法计算出正确的差比和值。
!!!!环内寻迹别忘了写丢线!!!!!!
3.出环
(1)预出环
预出环也是必不可少的一部分,因为如果正常寻迹接近到出环那里,与出环方向相反的那个电感的电感值会变得很大,经过差比和计算,舵机会打向和出环方向相反的方向。这也进而会导致车声冲出赛道。我的处理方案是陀螺仪的积分数值大于一个定值,就执行舵机固定打角。
(2)出环
预出环判定到后就执行出环程序,给舵机固定打角,当陀螺仪的积分值达到整整一圈之后,舵机回正,差比和手动置零。这时候如果让它正常寻迹的话,车子可能会因为还没远离圆环,导致左边或右边的电感值偏大,导致舵机往左大或者往右打,进而影响车身姿态。所以在出环执行完后,让车子自行一段距离,直到远离圆环,最后把圆环标志位、陀螺仪积分执行标志位和陀螺仪积分数值置零。等待下一次圆环。
!!!!!圆环的整个过程中,陀螺仪积分都在执行,直到圆环整个过程结束!!!!!
三、代码部分
1.入环
预圆环判断
if(M>650&&M-M_2>100&&L>500&&Statu == 1){L_RING_FLAG1=1;Statu=2; //圆环状态BeeOn; //蜂鸣器ring_running_flag = 1; //圆环内标志Record_Dis = 1;//开启计算距离}
入环
if((L_RING_FLAG1 || L_RING_DELAY_FLAG1)){L_RING_FLAG1=0;L_RING_DELAY_FLAG1=1;if(Distance>75){//入环,路程大于一个值L_RING_DELAY_FLAG1=0;L_RING_FLAG2=1;Record_Angle=1; //开启陀螺仪积分Statu = 3;}}
结束入环
如果陀螺仪积分值大于一个阈值,则代表车身已在环内,代表入环结束,反之,则代表车身还没有在圆环内,继续执行入环。
if(L_RING_FLAG2 || L_RING_DELAY_FLAG2){L_RING_FLAG2=0;L_RING_DELAY_FLAG2=1;if(Angle>150){//陀螺仪积分到一定数值,代表车身已经在圆环内L_RING_DELAY_FLAG2=0;L_RING_FLAG3=1;Statu = 4;Record_Dis = 0;//距离清零,方便下次计数Distance = 0;(PWMB_CH1_P74,1490); //舵机固定打角}}
2.圆环内寻迹
圆环内寻迹,则使用第二排的三个电感进行差比和运算。
if(ring_running_flag==1){cha_2 = my_sqrt(a_L_2)-my_sqrt(a_R_2);he_2 = my_sqrt(a_L_2)+my_sqrt(a_M_2)+my_sqrt(a_R_2);bi_2 = cha_2/he_2;poserror = (int16)(bi_2*100);}
3.出环
预出环判定
if(L_RING_FLAG3 || L_RING_DELAY_FLAG3){L_RING_FLAG3=0;L_RING_DELAY_FLAG3=1;if(Angle>735){//判定出还口,angle到达850代表跑了接近一圈L_RING_DELAY_FLAG3=0;L_RING_FLAG4=1;Statu = 5;}else{cal_poserror(L,M,R,L_2,M_2,R_2);}}
执行出环,舵机固定打角
if(L_RING_FLAG4 || L_RING_DELAY_FLAG4){L_RING_FLAG4=0;L_RING_DELAY_FLAG4=1;if(Angle>1050){//快要结束圆环L_RING_DELAY_FLAG4=0;L_RING_FLAG5=1;Statu = 6;}else{pwm_duty(PWMB_CH1_P74,1500); //舵机固定打角}}
出环后,差比和置零,车子直行,如果中间电感小于一个值,代表远离圆环,这时候圆环过程全部结束,正常寻迹和圆环标志位清零。
if(L_RING_FLAG5 || L_RING_DELAY_FLAG5){L_RING_FLAG5=0;L_RING_DELAY_FLAG5=1;if(M>580&&M<880){//L_RING_DELAY_FLAG5=0;Angle=0;Record_Angle=0;Statu=1;h=0;BeeOff;ring_running_flag=0;}else{cal_poserror(L,M,R,L_2,M_2,R_2);}}
电磁寻迹小车
智能车系列文章汇总
智能车浅谈——硬件篇
智能车浅谈——方向控制篇
智能车浅谈——电机控制篇
智能车浅谈——图像篇
智能车浅谈——控制规律篇
智能车浅谈——过程通道篇
智能车浅谈——抗干扰技术硬件篇
智能车浅谈——抗干扰技术软件篇
智能车浅谈——手把手让车跑起来(电磁篇)
智能车浅谈 电磁组——环岛处理
第十七届智能车越野硬件篇——无刷电机驱动
无刷驱动设计——浅谈MOS驱动电路
芯源&立创EDA训练营——无刷电机驱动
智能车浅谈 电磁组——环岛处理相关推荐
- 智能车浅谈——硬件篇
目录 初识小车 硬件系统 1.电源系统 线性电源 开关电源 2.人机交互系统 3.MCU最小系统 4.传感器系统 摄像头 电感 编码器 5.驱动系统 机械结构 17届完赛代码 智能车系列文章汇总 前言 ...
- 智能车浅谈——图像篇
文章目录 前言 认识图像 基本含义 图像类型 数字图像 彩色图像 灰度图像 黑白图像 小结 图像处理 图像压缩 二值化 固定阈值法 大津法 图像降噪(腐蚀) 寻边线 总结 17届完赛代码 17届完赛代 ...
- 智能车浅谈——手把手让车跑起来(电磁篇)
文章目录 前言 材料准备 备赛组 车模 硬件 练习组 车模 硬件方案 整车原理 赛道信息获取及转向原理 工字电感 运放模块 转向原理 元素判断 电机及舵机控制原理 代码实现 效果欣赏 总结 17届完赛 ...
- 智能车浅谈——抗干扰技术硬件篇
文章目录 前言 干扰 什么是干扰 干扰窜入的主要途径 干扰的分类 硬件抗干扰技术 控制系统的电源保护技术 输入/输出传输线的抗干扰措施 I/O接口的抗干扰措施 接地技术 总结 智能车系列文章汇总 前言 ...
- 智能车浅谈——过程通道篇
文章目录 前言 过程通道 模拟量输入通道 模拟量输出通道 开关量输入/输出通道 小结 模拟信号的调理 信号放大电路 滤波限幅电路 开关量信号调理 信号转换电路 滤波电路 保护电路 触点消抖 光耦隔离 ...
- 智能车浅谈——方向控制篇
文章目录 前言 自动控制理论 人工控制系统 自动控制 方向控制 典型环节对应 典型环节分析 给定环节与给定量 比较环节与偏差量 控制环节与控制量 执行机构 舵机 PWM技术 舵机中值及限幅 转向控制 ...
- 智能车浅谈——控制规律篇
文章目录 前言 计算机控制系统 常用控制规律 PID控制 比例(P)控制器 比例积分(PI)控制器 比例积分微分(PID)控制 位置式PID 增量式PID 数字PID控制算法的改进 PID参数整定 小 ...
- 智能车浅谈——抗干扰技术软件篇
文章目录 软件抗干扰技术 数字信号的抗干扰措施 数字输入信号软件抗干扰措施 数字输出信号软件抗干扰措施 数字滤波 算术平均值滤波 中值滤波 滑动平均滤波 归一化 差比和 CPU及程序的抗干扰措施 复位 ...
- 智能车浅谈——电机控制篇
文章目录 前言 运动控制系统 被控对象 执行机构 控制器 反馈环节 M法测速: T法测速 小结 直流调速系统 桥式可逆PWM变换器 (1)正向运行 (2)反向运行 总结 智能车系列文章汇总 前言 之前 ...
最新文章
- sklearn 归一化 和 标准化
- stm32 内部sram大小_STM32第三天
- 创维e900s用的什么芯片_MT41K512M16HA-125_苹果XR用的是什么闪存芯片
- 7-19下午刷题未知点集合
- 编译libav(ffmpeg)库
- ?????nested exception is org.apache.ibatis.reflection.ReflectionException: There is no getter for pr
- fun(n) Java_java程序员的kotlin课(N+2):suspending函数执行编排
- linux安装easy php,Linux php安装
- 国内Java面试总是问StringBuffer,StringBuilder区别是啥?档次为什么这么低?
- 比较从 vSphere 5.x 到 vSphere 6.5 的各个版本
- SitePoint播客#160:坐在树上的Adobe和HTML
- HDU 4512 吉哥系列故事——完美队形I(最长公共上升子序列 LCIS)
- 企业微信机器人python脚本执行报错-‘errcode‘: 40008, ‘errmsg‘: ‘Warning: wrong json format. invalid message type
- 百度图标html代码,css 画的百度LOGO
- P4556 [Vani有约会]雨天的尾巴 /【模板】线段树合并
- mc服务器物品给予,我的世界网易版给予物品指令1.12谢谢
- android xml sax解析,《android用SAX解析xml》
- xilinx官方pcie dma例程 -xapp859仿真环境搭建
- HTTPS、TLS连接
- 数据库视图的基本概念及作用
热门文章
- python - Django
- Atmega32最简单的按键程序
- 汽车维修管理系统C语言代码,大智慧汽车维修管理系统
- 隔壁女邻居半夜睡不着,我用python给她写了一个
- Android异常解决--A WebView method was called on thread 'JavaBridge'. All WebView methods must be called
- 区间划定最小值题解--单调队列
- vue3的撤销与重做
- 运维工程师怎么找兼职?什么样的兼职合适?
- 百度大脑开放日召开,安全生产智能视频监控解决方案用AI助力生产安全防控
- 嵌入式linux开发,openssl-0.9.8d移植