历史上的今天
返回首页

历史上的今天

今天是:2024年09月24日(星期二)

正在发生

2021年09月24日 | 【STM32平衡小车】电磁巡线归一化算法(二)

2021-09-24 来源:eefocus

一、归一化的概念

归一化处理,由于各个电感的性能特性存在很大差异特别是电压波动范围相差较大。因此为了给算法制定统一的标准给数据处理带来方便须对 A/D传感器采集来的信号做归一化处理。此设计中的具体方法是通过公式将各传感器电压值都处理成相对该传感器最大电压和最小电压使得传感器输出电压值都保持在 0到 100之间。


归一化之后的传感器数据如图所示横坐标表示距离中心线的距离单位是毫米,纵轴是电压值。

在这里插入图片描述

二、归一化的原因

假设不用归一化处理时,距离中线零偏差时,电感A的值是1000,偏离赛道20厘米时,电感A值是200.当赛道电源不准时,比如输出电流由100ma变成了120ma,这时,电感A在零偏差的值和偏离赛道20厘米时候的值都会变大,设分别变成了1200和240,这时,你设定的阈值会出问题了。比如,你设置在电感A值小于等于200的时候(偏差20cm)判定丢线,电流变大之后,偏差为20cm,A电感值为240,大于了200,这时本来该判丢线,却没法判丢线了,车辆路径就相应会变化了(当然,阈值判定的不一定是丢线,具体看个人算法)。如果用归一化处理,按上例的数据,当电流100ma时,偏差时,记录下电感A的“最大值”(这里不一定最大,不过把零偏差当做最大,具体不细说)为1000,把车移到偏差为20cm时,记录下“最小值”(跟最大同理,只是选个参考点)为200,这时,归一化公式算出值为0到1(即“归一”),偏差为零是,电感A归一值为1((1000-200)/(1000-200)),偏差20cm时,电感A归一值为0((200-200)/(1000-200)),这时,如同前例,你只需要设置阈值的归一值为0,则判定丢线,那么在赛道电源电流是120ma时,采用同样的处理,在偏差为20cm的时候,电感A归一值也为0((240-240)/(1200-240)),即电源变化对你的阈值已经没有影响了(这是理想化情况,实际考虑其他各种因素,会有很微弱的影响)。


这样的处理算法,其本质其实就是在每次车跑之前,重新快速校准偏差和电感值的对应关系。


通过归一化处理,能保证电磁车有更强的适应性,适应更宽的赛道电源电流参数,而路径将不容易受电源的不同而影响。


三、归一化步骤

将 AD值做归一化处理,即根据各个传感器接收赛道的最高电压和最低电压,计算出各个传感器的相对值,最后来计算黑线位置。


信号归一化的方法如下:

求取电压值最大的传感器位置,然后和它周围两个传感器采样值进行加权计算即可求得小车的偏差。


网上的一个参考例程

Sensor_Left =   analogRead(1);    //左边电感采集值

Sensor_Middle = analogRead(2);    //中间电感采集值

Sensor_Right =  analogRead(3);    //右边电感采集值

if (Sensor_Left + Sensor_Middle + Sensor_Right > 25)

{

sum = Sensor_Left * 1 + Sensor_Middle * 50 + Sensor_Right * 99; //归一化处理

Sensor = sum / (Sensor_Left + Sensor_Middle + Sensor_Right);    //求偏差

}

Velocity = 35;                                                    //电磁巡线模式下的速度

Bias = Sensor - 50;                                               //提取偏差

Angle =Bias * 0.65 + (Bias - Last_Bias) * 0.1;                    //方向PID

//Angle = abs(Bias)*Bias * 0.02 + Bias * 0.074 + (Bias - Last_Bias) * 1;

Last_Bias = Bias; //上一次的偏差


一些帖子记录

归一化是纵向处理(即对各个探头的处理),差比和是横向处理(即对探头之间的处理)


差比和同样可以消除放大率的影响 基础放大倍数已经约掉 这一点和归一化没有区别。但是却不能消除不对称


每次把归一值和实际偏差从新对应,从而保证在不同电源下计算实际偏差误差小。


跑前测。最大最小只是参考点,只要每次在固定的实际偏差时测,就可以保证准确性。


我说的这种方法是本质是每次跑之前都重测电压值与实际偏离赛道的距离的对应,通过归一抵消掉电感值(电感值不再参加控制部分数据处理),使之适应不同的赛道电源。


差和比应该在电感信号对称一致的前提下,意义才更大。


就像给尺子标刻度,你不需要一直重标刻度吧?你的0刻度也不一定要标在尺子最边缘吧?我们需要的只是一个准确的相对刻度。


运动过程的归一,除了两个电感范围之间的差比和,还没其他思路。


这篇贴的方法只是数据的调零和归一,相当于现场快速标定。左边最大时,右边距离中线25cm,右边最大时,左边距离中线25cm,设计一个方法校准就行了。竖着的就把车横过来再扫。


这里说的归一化采值是指传感器数据自动标定(校准),过程是归一的方法。差比和是跟这里的归一采值是可以并存的;差值与和值,都包含一个放大倍率,不考虑精度的情况下,分子分母把放大倍率约掉了;差比和不能解决不对称,因为传感器本身可能不对称,重新标定后,能极大的改善对称性。


参考:


1、http://www.znczz.com/thread-220290-1-1.html


2、http://www.znczz.com/thread-213532-1-2.html

推荐阅读

史海拾趣

E-T-A Circuit Breakers公司的发展小趣事

进入21世纪后,E-T-A公司继续加大在研发和技术创新方面的投入,推出了一系列智能电路保护解决方案。这些解决方案结合了先进的传感器技术、数据分析和人工智能技术,能够实时监测电气系统的运行状态,预测潜在风险,并提供智能化的保护和控制策略。这些创新产品不仅提高了电气系统的安全性和可靠性,也为客户带来了更高的经济效益和社会效益。

Bergquist Company公司的发展小趣事

在60年代,Bergquist Company作为一家私人拥有的美国公司,在明尼苏达州的一个小城市诞生。创立初期,公司面临着资金短缺、市场竞争激烈等诸多困难。然而,创始人凭借着对导热材料行业的深刻洞察和坚定信念,带领公司一步步走过了创业初期的艰难岁月。他们不断研发新产品,提升产品质量,逐渐在市场上获得了一席之地。

ENTRELECUK公司的发展小趣事

ENTRELEC UK深知品质对于企业的重要性,因此公司始终坚持严格的质量管理体系。从原材料采购到产品制造,再到售后服务,每一个环节都经过严格把关。这种对品质的执着追求使ENTRELEC UK赢得了客户的信任和好评。公司还建立了完善的客户服务体系,确保客户在使用产品过程中得到及时、有效的支持。

Bombardier Inc公司的发展小趣事

随着全球航空市场的不断变化,庞巴迪公司在商用航空领域也取得了显著成就。其生产的CRJ系列区域喷气客机和Q系列涡桨飞机在全球范围内广受欢迎。这些飞机配备了先进的电子设备和系统,提供了更高的安全性和舒适性。庞巴迪还推出了C系列单通道中距客机,该机型以其环保、经济和人性化的设计赢得了市场的广泛认可。

Fedco_Batteries公司的发展小趣事

在快速发展的同时,Fedco_Batteries始终关注社会责任。公司积极参与公益事业,捐款捐物支持灾区重建、教育扶贫等项目。同时,公司还注重环保和可持续发展,致力于研发环保型电池产品,减少对环境的影响。这种关注社会责任的企业精神,让Fedco_Batteries在社会上树立了良好的形象。

Carlisle Interconnect Technologies公司的发展小趣事

1959年,对于Carlisle Interconnect Technologies来说是一个里程碑式的年份。这一年,公司正式成为Carlisle Companies Incorporated的一部分,这标志着公司从一个小型创业企业迈入了大型跨国公司的行列。这一转变为公司带来了更多的资源和机会,也使其能够更好地满足主要电子OEM的需求,专注于提供增值解决方案。

问答坊 | AI 解惑

IC设计工程师的高手进阶之路

随着中国IC设计产业渐入佳境,越来越多的工程师加入到这个新兴产业中。从一个初学者成长到主持大型设计的IC设计专家,这是每个IC设计工程师的理想。在这个新兴的领域里,IC设计工程师需要领路的"师傅",但是没有"师傅",该怎么提高?近日, ...…

查看全部问答>

建筑工地也要建立远程安全监控系统

随着社会的不断进步,安全生产的概念已经深入人心,人们对安全生产的要求也越来越高。在事故多发的建筑行业,如何保证施工人员的人身安全,以及工地的建筑材料、设备等财产的保全是施工单位关心的头等大事。而几起坍塌事故的发生又将工地安全生产推 ...…

查看全部问答>

请问dma与通道方式有何不同

请问dma与通道方式有何不同?通道方式的优点在那里?谢谢…

查看全部问答>

2440实现IPHONE特效,运行KJAVA游戏

我的最新作品: 2440实现IPHONE特效,运行KJAVA游戏 http://www.tudou.com/programs/view/ZrtZX_KtcG0/ 有兴趣的话,请联系我…

查看全部问答>

高分急求:vs2003编译的C#程序在wince5上没法运行

各位高人,我用vs2003编译的C#程序,通过和系统一起打包的方式放进wince5系统,但是点击它一点反应都没有,也不报错。不知道是什么原因? 我的程序非常简单,只是弹出一个对话框,同时保证wince里面已经将.net支持环境加入进来了…

查看全部问答>

ISP下载20次能成功1次!

ISP下载20次能成功1次!难道USB转的串口这么不稳定啊,好象STM32 ISP时用的内部震荡器,是不是有关啊…

查看全部问答>

MSP430F449低功耗模式3也有200UA的电流啊!???

进入低功耗模式3时,同时也把SMCLK时钟关闭,把没有使用的IO设置为输出,使用的IO设置为输入,发现还是有200UA左右的电流。请教版主有什么方法解决??…

查看全部问答>

CCS 编译优化 o2 o3

使用CCS时,开启o2,o3选项可能会引入一些问题,请问有什么方法可以避免此类问题,同时又允许使用o2,o3。特别是从C语言编码的角度来说?…

查看全部问答>

Quartus 11的安装过程

第一步下载安装文件:下载Quartus II 11.0 正式版 地址Windows版本:ftp://ftp.altera.com/outgoing/release/11.0_quartus_windows.exe      1.01GBftp://ftp.altera.com/outgoing/release/11.0_devices_windows.exe ...…

查看全部问答>

我想问下DS1302 burst模式,写入数据时,最后还要写入0x00,为什么

我想问下DS1302 burst模式,写入数据时,最后还要写入0x00,为什么…

查看全部问答>