- 讲师:刘萍萍 / 谢楠
- 课时:160h
- 价格 4580 元
特色双名师解密新课程高频考点,送国家电网教材讲义,助力一次通关
配套通关班送国网在线题库一套
【摘 要】在嵌入式开发过程中,对传感器采集数据时常常使用浮点数据以提高精度,但是浮点数据在计算机内部有别于其他类型的数据存储并且在传输的过程中存在丢包的现象,因此需要在上位机和下位机之间制定好一定的通讯机制,以避免使整个数据采集系统处于故障状态而无法运行[1]。为了去除传感器各种噪声的干扰,使用了卡尔曼滤波的方法对获取的数据进行滤波,整个传感器采集系统获得了较好的效果。
【Abstract】In the process of embedded development, floating-point data is often used to improve the accuracy of the sensor data acquisition, but the floating point data is different from other types of data storage inside the computer and there exists packet loss in the process of transmission. Therefore, a good communication mechanism between the upper monitor and the lower computer is needed, so as to avoid the failure of the entire data acquisition system and can not operate[1]. In order to remove the interference of various noises of the sensor, the method of Kalman filtering is
used to filter the obtained data, and the whole sensor acquisition system has achieved good results.
【关键词】串口通讯;传感器;数据采集
【Keywords】 serial communication; sensor; data acquisition
【中图分类号】TP391 【文献标志码】A 【文章编号】1673-1069(2018)09-0123-02
1 引言
在嵌入式应用开发中,常常需要对传感器的数据进行采集。为保证传感器采集数据的精度,必须使用单精度或双精度浮点数进行采集,但是浮点数据在计算机内部存储的结构有别于其他类型的数据,同时由于传输的过程中存在丢包和干扰现象,为实现在上位机和下位机之间浮点数据的采集,本文使用STM32位处理器作为下位机主控,对PC上位机和下位机之间的通讯机制进行了初步研究。
2 下位机设计
有刷直流电机[2]调速系统由有刷直流电机、电机驱动模块、STM32F103C8T6最小开发板模块、霍尔编码器构成。在使用开发版板串口时,首先对相关寄存器初始化设置,以使串口发送接收数据。同时在实际应用时为了保证一定的精度,传感器采集的数据通常是浮点数据[3],串口发送接收时需要对浮点数据进行处理:发送时将浮点数据转换成字节数据,接收数据时将字节数据转换成浮点数据[4]。
2.1下位机串口硬件初始化
下位机硬件串口和上位机串口属性设置类似,具体代码如下:
RCC->APB2ENR|=1CRH&=0XFFFFFF0F;
GPIOA->CRH|=0X000000B0;//设置PA口输入输出模式
RCC->APB2RSTR|=1APB2RSTR&=~(1BRR=mantissa; //设置串口波特率
USART1->CR1|=0X200C; //一位停止位,无校验
USART1->CR1|=1CR1|=1 在程序中使用Read()方法读取缓冲区的数据,发送数据使用serialPort2.Write()方法,为了实时观察传感变化的情况,上位机软件需要须用到chart控件,使用时应在程序开头部分引用下列语句:System.Windows.Forms.DataVisualization.Charting
需对chart控件的ChartAreas["ChartArea1"].AxisY属性的MajorTickMark、MinorTickMark进行设置,添加点使用chart1.Series["Series1"].Points的AddXY()方法。
4 通信控制�O计
由于需要传递的数据大部分是浮点数据,而浮点数据在内存中占用4个字节,并且在STM32F103C8T6和PC中都是小端存储模式,所以PC上位机和下位机之间通讯封装了7个字节的数据包,其格式是:
FF M f1 f2 f3 f4 0A
FF代表数据包开始,M代表传送数据类型,f1-f4代表4个字节浮点数据,0A表示数据结束。上位机发送7个字节的数据包,下位机串口接收到数据进行中断响应,在单片机内部中断响应的过程如下:首先对接收到的数据进行解包,如果数据封装完整,单片就把设置好的数据发送给上位机,如果单片机中断响应没有正确获得数据包,直接进行丢包处理。上位机接收到数据,产生接收数据事件触发响应,上位机响应后检查设置的数据是否一致,如果一致,就在上位机上相应控件显示,并且生成日志,以便查看参数设置记录,上位机检查如果发现设置参数不一致,再重新发送。
5 结论
综上所述,在嵌入式应用开发中,上位机和下位机之间通过串口进行通讯时,由于传感器存在各种干扰因素,需要对获取的数据进行滤波,在本文中使用卡尔曼滤波的方法进行滤波,获得了较好的效果。同时由于整个通讯过程存在数据丢失时或者干扰的可能,需对数据进行封装和丢包处理,以便能够正确解析通讯数据。
【参考文献】
【1】曾华, 冯浩, 赵浩. 有刷直流电机振动转矩的解析与实验研究[J]. 轻工机械, 2014, 32(1):70-74.
【2】王安阳, 刘欢. 直流有刷电机传导发射特性和外置滤波电路数值试验研究[J]. 小型内燃机与车辆技术, 2017(6):18-23.
【3】顾万里, 张森, 胡云峰,等. 有刷直流电机非线性控制系统设计[J]. 吉林大学学报(工学版), 2017, 47(3):900-907.
【4】顾万里, 胡云峰, 张森,等. 有刷直流电机自适应滑模控制器设计与实验[J]. 西安交通大学学报, 2017, 51(9):112-117.
【5】李宗俐, 许芳, 梁�E男,等. 有刷直流电机约束预测控制器设计及实现[J]. 吉林大学学报(信息科学版), 2017, 35(4):363-369.
【6】苏坚坚, 陈少斌. 基于最小二乘测速方法的有刷直流电机调速[J]. 机电技术, 2017(6):59-61.
【7】武立, 周云山, 张容川. 基于卡尔曼滤波的光电式扭矩传感器研究[J]. 计算机仿真, 2017(11):275-279.
责编:荣秀
下一篇:网络虚拟财产的继承
课程专业名称 |
讲师 |
课时 |
查看课程 |
---|
课程专业名称 |
讲师 |
课时 |
查看课程 |
---|
点击加载更多评论>>