Electromagnetic Tracking Smart Car based on STM32F401 or GD32F450ZGT6

news/2024/12/13 11:56:50/

Electromagnetic Smart Car1


基于梁山派的电磁循迹智能车的主控芯片来自立创梁山派板载的国产兆易创新GD32F450ZGT6,整车采用模块化开发,由电源模块、L298N驱动模块、电磁循迹模块、梁山派、调试模块和显示模块组成。
嵌入式软件开发环境是:Keil5+Stm32CubeMX。通过一个高级定时器的PWM Generation模式输出两路频率为1kHZ且占空比可调的方波给到L298N驱动模块的ENA和ENB引脚,经过L298N驱动芯片H桥调节给电机电流的方向和电压的大小,控制了两轮差速车体底盘左右电机牵引力的大小,实现了小车根据偏差实现灵活自如地转弯。

今年已是智能车竞赛举办的第十一届,电磁小车贯穿于很多组别之中,本次比赛中,我们小组参加的是电磁组,以电磁为主的控制思路搭建一辆电磁车。本文中,通过对小车设计制作整体思路、电路、算法、调试、车辆参数的介绍,最终为实现目标任务奠定基础。
硬件平台采用立创EDA环境,我们使用的嵌入式芯片是STM32系列,搭载HAL(Hardware Abstract Layer硬件抽象层)库函数进行编程。使用的开发环境是:Keil5+Stm32CubeMX,实现对控制系统的运动控制,通过一个高级定时器的PWM Generation模式输出两路频率为1kHZ且占空比可调的方波给到L298N驱动模块的ENA和ENB引脚,经过L298N驱动芯片H桥调节给电机电流的方向和电压的大小,控制了两轮差速车体底盘左右电机牵引力的大小,实现了小车根据偏差实现灵活自如地转弯。本文主要为了设计适用于室内赛道的自制车模,从硬件、软件、机械等方面进行设计实验。
在准备比赛的过程中,我们小组成员涉猎控制、传感技术、汽车电子、电气、计算机、机械等多个学科,这次磨练对我们的知识融合和实践动手能力的培养有极大的推动作用。 主要从系统设计、机械结构、软件设计等方面进行对本次比赛过程中所学所感的说明和总结。为了提高模型车的速度和稳定性,使用OLED屏、按键等调试工具,进行了大量硬件与软件测试。 实验结果表明,该系统设计方案确实可行。

在这里插入图片描述

目录
引 言 3
第一章 系统整体设计 5
1.1 系统概述 5
1.2 整车布局 6
第二章 机械系统设计及实现 7
2.1 车模重心 7
2.2 车模底盘高度 7
2.3电磁感应的搭设 7
2.4电池的固定 7
第三章 硬件系统设计及实现 8
3.1 硬件设计方案 8
3.2 传感器的选择 9
3.3 电路设计方案 10
3.3.1单片机最小系统板 11
3.3.2电源稳压电路 11
3.3.3电机驱动模块 12
第四章 软件系统设计及实现 13
4.1电磁处理 13
4.1.1电感传感器的原理 13
4.1.2磁传感器信号处理电路 14
4.1.3磁传感器的布局原理及改进 16
4.2电机控制 16
第五章 系统开发及调试工具 18
5.1 开发工具 18
5.2 调试模块 19
第六章 模型车的主要技术参数 20
结 论 21
附录 22

第一章 系统整体设计
1.1 系统概述
智能车系统的总体工作模式为:
根据竞赛规则相关规定,我们小组选用自制车模,以STM32F401CCU6作为核心控制器,在 KEIL开发环境中进行软件开发。赛车的主要位置信号由车体前方的电磁传感器采集,经内部 AD 进行模数转换后,输入到控制核心,用于赛车的运动主要控制决策。

图 1.1.1 系统框图
系统的框图如上图(1.1)所示,该系统总共包括STM32核心板,电源模块,调试模块,驱动模块,电磁循迹模块,显示模块。

  1. STM32F401CCU6单片机,作为整个小车的核心控制,负责接收信号和驱动相关模块,并能对信号进行及时的处理和反馈。
  2. 电源模块,电源模块为整块电路提供有效的直流电源,包括5V和12V稳压以及驱动电机的12v升压,为求高质量的电源,我们采用LM7805芯片。
  3. 调试模块,调试模块包括按键现场调参等以搭建一个友好的交互环境,及时掌握小车状态.
    4. 直流电机采用L298N驱动,单片机输出PWM。
    5. 电磁循迹模块通过工字电磁传感器采集,经内部 AD 进行模数转换后,输入到控制核心。
  4. 显示模块由一块OLED显示屏组成
    1.2 整车布局
  1. 用亚克力做底盘,采用万向轮差速转向。
  2. 电池用电池盒固定在底盘下方,降低重心。
  3. 所有传感线都缩短到合适长度,更适应信号的传递,也为了整洁美观,运用按键开关和OLED调节参数。

图 1.2.1 整车布局图
第二章 机械系统设计及实现
2.1 车模重心
车体的重心可以用吊线法测出,车体重心的位置对赛车加减速性能、转向性能和稳定性都有较大的影响,重心调整主要包括重心高度和前后位置的调整。 理论上,车体重心越低稳定性越好,重心低有利于赛车在高速转弯的贴地性,可以有效防止发生侧翻,因此在车体底盘高度、舵机安装、电路板的安装等上尽量使重心放低。
根据车辆运动学理论,车身重心前移,大部分重量压在前轮,转向负荷增大,会增加转向,对模型车的制动性能和操纵稳定性有益,但降低转向的灵敏度,同时降低后轮的抓地力;重心后移,会减少转向,但增大转向灵敏度,后轮抓地力也会增加。但综合起来看,重心应靠近后轴一点。
2.2 车模底盘高度
车模底盘的高度主要由赛道中的坡决定,本次比赛中不含坡道,所以底盘越低越好。这样会使得重心更低,赛车的稳定型更强。
2.3电磁感应的搭设
在电磁的选用中,经过不断试验,选用了尼龙杆作为支架,用来固定电感模块,而电感的放置位置也是经过测验。

2.4电池的固定
由于电池可以影响重心的位置,而且固定在板子上,要求是要易于拆卸,因此,我们采用扎带固定,可以保持稳定,而且在易于拆卸,便于操作。

图2.4.1

第三章 硬件系统设计及实现
3.1 硬件设计方案
我们主要从系统的稳定性、可靠性、高效性、实用性、简洁等方面来考虑硬件的整体设计。电源系统的稳压性能、纹波噪声的去处、功率的充足提供的可靠性等;主控系统的电路优化,减少电路元件的体积和用量,减少不稳定因素;动力系统的动力性能可靠性,如加速、制动等性能会有大幅度的改善,为整车的性能提升提供充足的保证;做好各部分的接地、屏蔽、滤波等工作,将高速数字电路与模拟电路分开,使本系统工作的可靠性达到了设计要求;传感器的性能稳定, 保证整车数据流的准确可靠;高效与实用性是指本系统的各模块能充分完美的实现相应的功能。
3.2 传感器的选择
3.2.1电感
我们采用的是10mH电感

3.2.2干簧管
干簧管是干式舌簧管的简称,是一种有触点的无源电子开关元件,具有结构简单,体积小便于控制等优点,其外壳一般是一根密封的玻璃管,管中装有两个铁质的弹性簧片电板,还灌有一种叫金属铑的惰性气体。平时,玻璃管中的两个由特殊材料制成的簧片是分开的。当有磁性物质靠近玻璃管时,在磁场磁力线的作用下,管内的两个簧片被磁化而互相吸引接触,簧片就会吸合在一起,使结点所接的电路连通。外磁力消失后,两个簧片由于本身的弹性而分开,线路也就断开了。因此,作为一种利用磁场信号来控制的线路开关器件,干簧管可以作为传感器用,用于计数,限位等等(在安防系统中主要用于门磁、窗磁的制作),同时还被广泛使用于各种通信设备中。在实际运用中,通常用永久磁铁控制这两根金属片的接通与否,所以又被称为“磁控管”。
在程控交换机、复印机、洗衣机、电冰箱、照相机、消毒碗柜、门磁、窗磁、电磁继电器、电子衡器、液位计、煤气表、水表中等等都得到了很好的应用。
产品参数:
工作电压:DC3.3-5V
接好VCC和GND,模块电源指示灯会亮,干簧管需要和磁铁配合使用,在感应到有一定的磁力的时候,会呈导通状态,模块输出低电平,无磁力时,呈断开状态,输出高电平,干簧管与磁铁的感应距离在1.5cm之内超出不灵敏或会无触发现象;模块 DO 输出端可以单片机 I/O 口直接相连,通过单片机可以检测干簧管的触发状态。

图3.2.2.1 电路图

图3.2.2.2 干簧管模块

3.3 电路设计方案
我们智能车控制系统电路由三部分组成:负责所有控制与驱动的STM32F401CCU6核心板、显示模块、调试模块。最小系统板组成了信号采集、信号处理、电机控制单元。为了减小电机驱动电路带来的电磁干扰,我们把控制单元部分和电机驱动部分分开来。 最小系统板引出了控制上所需要的引脚与接口。

3.3.1单片机最小系统板
STM32F401CCU6是一款32位256kB闪存高性能接入线微控制器单元,具有浮点单元单精度,支持所有ARM单精度数据处理指令和数据类型。它还实现了一套完整的DSP指令和一个内存保护单元,增强了应用程序的安全性。它结合了高速嵌入式存储器和范围广泛的增强型I/O和外围设备,它们连接到两条APB总线、两条AHB总线和一个32位多AHB总线矩阵。这提供了一个12位ADC、一个低功耗RTC、六个通用16位定时器,包括一个用于电机控制的PWM定时器和两个通用32位定时器,还具有标准和高级通信接口。 图 3.3.1 原理图

3.3.2电源稳压电路
首先了解一下不同电源的特点,电源分为开关电源和线性电源,线性电源的电压反馈电路是工作在线性状态,开关电源是指用于电压调整的管子工作在饱和和截至区即开关状态的。线性电源一般是将输出电压取样然后与参考电压送入比较电压放大器,此电压放大器的输出作为电压调整管的输入,用以控制调整管使其结电压随输入的变化而变化,从而调整其输出电压,但开关电源是通过改变调整管的开和关的时间即占空比来改变输出电压的。
从其主要特点上看:线性电源技术很成熟,制作成本较低,可以达到很高的稳定度,波纹也很小,而且没有开关电源具有的干扰与噪音,开关电源效率高、损耗小、可以降压也可以升压,但是交流纹波稍大些。电源模块对于一个控制系统来说极其重要,关系到整个系统是否能够正常工作,
因此在设计控制系统时应选好合适的电源模块,单片机系统等均需要 5V 电源,直流电机可以使用蓄电池直接供电,OLED 显示器用 3.3V 电源。
5V 电源模块用于为单片机系统、传感器模块。常用的电源有串联型线性稳压电源(LM2940、TPS 系列、7805 等)和开关型稳压电源(tps564201、LM2575、 AS1015 等)两大类。前者具有纹波小、电路结构简单的优点,但是效率较低,功耗大;后者功耗小,效率高,电流大,但电路却比较复杂,电路的纹波大。

3.3.3电机驱动模块
常用的电机驱动有两种方式:一、采用集成电机驱动芯片;二、采用 N 沟道MOSFET 和专用栅极驱动芯片设计。
L298N就是L298的立式封装,源自意法半导体集团旗下品牌产品,是一款可接受高电压、大电流双路全桥式电机驱动芯片,工作电压可达46V,输出电流最高可至4A,采用Multiwatt 15脚封装,接受标准TTL逻辑电平信号,具有两个使能控制端,在不受输入信号影响的情况下通过板载跳帽插拔的方式,动态调整电路运作方式,有一个逻辑电源输入端,通过内置的稳压芯片78MO5,使内部逻辑电路部分在低电压下工作,也可以对外输出逻辑电压5V,为了避免稳压芯片损坏,当使用大于12V驱动电压时,务必使用外置的5V接口独立供电。
L298N通过控制主控芯片上的I/O输入端,直接通过电源来调节输出电压,即可实现电机的正转、反转、停止,由于电路简单,使用方便,通常情况下L298N可直接驱动继电器(四路)、螺线管、电磁阀、直流电机(两台)以及步进电机(一台两相或四相)。
主要特点是:

  1. 发热量低
  2. 抗干扰能力强
  3. 驱动能力强 (高电压、大电流)
  4. 可靠性高 (使用大容量滤波电容,续流保护二极管可过热自断和反馈检测)
  5. 工作电压高 (最高可至46V)
  6. 输出电流大 (瞬间峰值电流可达3A,持续工作电流为2A)
  7. 额定功率25W(电压 X 电流)

图3.3.3.1 L298N电路图

第四章 软件系统设计及实现
4.1电磁处理
4.1.1电感传感器的原理
根据电磁学,我们知道在导线中通入变化的电流(如按正弦规律变化的电流),则导线周围会产生变化的磁场,且磁场与电流的变化规律具有一致性。如果在此磁场中置一由线圈组成的电感,则该电感上会产生感应电动势,且该感应电动势的大小和通过线圈回路的磁通量的变化率成正比。由于在导线周围不同位置,磁感应强度的大小和方向不同,所以不同位置上的电感产生的感应电动势也应该是不同。据此,则可以确定电感的大致位置。
4.1.2磁传感器信号处理电路
确定使用电感作为检测导线的传感器,但是其感应信号较微弱,且混有杂波,所以要进行信号处理。要进行以下三个步骤才能得到较为理想的信号:信号的滤波,信号的放大,信号的检波。
1) 信号的滤波
比赛选择 20kHz 的交变磁场作为路径导航信号,在频谱上可以有效地避开周围其它磁场的干扰,因此信号放大需要进行选频放大,使得 20kHz 的信号能够有效的放大,并且去除其它干扰信号的影响。使用 LC 并联谐振电路来实现选频电路(带通电路),如图 3.7 所示。

图 4.1 LC 并联电路 

其中,E 是感应线圈中的感应电动势,L 是感应线圈的电感值,R0
是电感的内阻,C 是并联谐振电容。

已知感应电动势的频率 f=20kHz,感应线圈电感为 L=10mH,可以计算出谐振电容的容量为 C=6.33×10-9 F 。通常在市场上可以购买到的标称电容与上述容值最为接近的电容为 6.8nF,所以在实际电路中选用 6.8nF 的电容作为谐振电容。

2) 信号的检波
测量放大后的感应电动势的幅值 E 可以有多种方法。最简单的方法是使用二极管检波电路将交变的电压信号检波形成直流信号,然后再通过单片机的AD采集获得正比于感应电压幅值的数值。
3) 采样算法
if(a){}如果a是布尔型,则a的值为true执行{},false不执行{}。
if(a){}如果a是数值型(如int),则if(a){}等价于 if(a!=0){}
abs和fabs都是表示求取绝对值。
abs定义在stdlib.h头文件中。fabs定义在cmath头文件中。
abs是表示对整数求取绝对值。fabs是对精度较高的浮点数比如:float或者double型数据求取绝对值。
在浮点数和“零”进行比较的过程中,不能用“==”来判断是否为0,可以用:
if( fabs(num) < 0.0000001f )
这种方式的比较来判断是否为零。

只有一个OLED,所以片选CS管脚默认接地

D0 - SPI_SCLK
D1 - SPI_MOSI
为了采样精准,我把转换时间Sampling Time 设到最大了480 Cycles,480+12=492 转换周期就是492*(1/10.5MHz) = 46.86us
我们用的是84MHZ主频的MCU
84MHz的HCLK经2分频得到PCLK2最大42MHz
ADC_Set Clock Prescaler_PCLK2 divided by 4(分频系数=4)
ADC_Clock = 42/4 = 10.5MHz
12位ADC最低转换周期 = 3(min Sampling Time)+12=15个周期 = 15*(1/10.5MHz) = 1.43us > 0.42us(最小转换周期)
12位ADC最高转换速率 = 1/1.43us = 0.70MSPS < 2.4MSPS(ADC最高转换速率)
我们的最小系统版上的MCU是F401CCU6,片上共1个ADC,最高12位ADC,最高转换速率2.4MSPS(最小转换周期0.42us)
AD转换周期=采样时间+转化时间
AD转换速率=转换周期的倒数

4.1.3磁传感器的布局原理及改进
对于直导线,当装有小车的中轴线对称的两个线圈的小车沿其直线行驶, 即两个线圈的位置关于导线对称时,则两个线圈中感应出来的电动势大小应相同、且方向亦相同。若小车偏离直导线,一边的感值会变小,两个线圈关于导线不对称时,则通过两个线圈的磁通量是不一样的。这时,距离导线较近的线圈中感应出的电动势应大于距离导线较远的那个线圈中的。根据这两个不对称的信号的大小比较,即可调整小车的方向,引导其沿直线行驶。
对于弧形导线,即路径的转弯处,由于弧线两侧的磁力线密度不同,则当载有线圈的小车行驶至此处时,两边的线圈感应出的电动势是不同的。具体的就是,弧线内侧线圈的感应电动势大于弧线外侧线圈的,据此信号可以引导小车拐弯。
另外,当小车驶离导线偏远致使两个线圈处于导线的一侧时,两个线圈中感应电动势也是不平衡的。距离导线较近的线圈中感应出的电动势大于距离导线较远的线圈。由此,可以引导小车重新回到导线上。
4.2电机控制
4.2.1数字PID算法的选择
我们智能车控制系统使用的是数字 PID,其控制规律是:简单说
来,PID 控制器各校正环节的作用如下:
比例环节:及时成比例地反映控制系统的偏差信号,偏差一旦产生,控制器立即产生控制作用,以减少偏差。
积分环节:主要用于消除静差,提高系统的无差度。积分作用的强弱取决于积分时间常数,越大,积分作用越弱,反之则越强。
微分环节:能反映偏差信号的变化趋势(变化速率),并能在该偏差信号变得太大之前,在系统中引入一个有效的早期修正信号,从而加快系统的动作速度,减小调节时间。
数字 PID 控制算法通常分为位置式 PID 控制算法和增量式 PID 控制算法。
位置式 PID 中,由于计算机输出的 u (k) 直接去控制执行机构(如阀门),u(k) 的值和执行机构的位置(如阀门开度)是一一对应的,所以通常称公式(4.2)为位置式 PID控制算法。
位置式 PID 控制算法的缺点是:由于全量输出,所以每次输出均与过去的状态有关,计算时要对过去 e(k)进行累加,计算机工作量大;而且因为计算机输出的 u(k)对应的是执行机构的实际位置,如计算机出现故障,u(k)的大幅度变化,会引起执行机构位置的大幅度变化,这种情况往往是生产实践中不允许的,在某些场合,还可能造成严重的生产事故。因而我们选择了增量式 PID 控制算法,所谓增量式 PID是指数字控制器的输出只是控制量的增量 u(k)。

增量式 PID 具有以下优点:
(1) 由于计算机输出增量,所以误动作时影响小,必要时可用逻辑判断的方法关掉。
(2) 手动/自动切换时冲击小,便于实现无扰动切换。此外,当计算机发生故障时,由于输出通道或执行装置具有信号的锁存作用,故能保持原值。
(3) 算式中不需要累加。控制增量 u(k)的确定仅与最近 k 次的采样值有关,所以较容易通过加权处理而获得比较好的控制效果。
但增量式 PID 也有其不足之处:积分截断效应大,有静态误差;溢出的影响大。
使用时,常选择带死区、积分分离等改进 PID 控制算法。

Electromagnetic Smart Car3

Electromagnetic Smart Car2


http://www.ppmy.cn/news/1554751.html

相关文章

加速合并,音频与字幕的探讨

因上一节。合并时速度太慢了。显卡没用上。所以想快一点。1分钟的视频用了5分钟。 在合并视频时,进度条中的 now=None 通常表示当前处理的时间点没有被正确记录或显示。这可能是由于 moviepy 的内部实现细节或配置问题。为了加快视频合并速度并利用 GPU 加速,可以采取以下措…

香橙派Zero3搭建1Panel管理面板并轻松实现远程服务器管理

前言&#xff1a;今天给大家带来一个超实用的神器组合——如何在CasaOS轻NAS系统的香橙派Orange Pi Zero3上使用Docker本地部署1Panel开源Linux服务器运维管理面板&#xff0c;并结合cpolar内网穿透实现浏览器远程访问。想象一下&#xff0c;即使你没有公网IP或复杂的路由器设置…

Python+OpenCV系列:滤波器的魔力

滤波器是图像处理领域中不可或缺的工具。无论是去除噪声、锐化图像还是提取特征&#xff0c;滤波器都扮演着重要角色。本篇将从简单到复杂&#xff0c;带你快速掌握 PythonOpenCV 中的滤波器使用技巧。 什么是滤波器&#xff1f; 滤波器是一种对图像像素值进行计算、平滑或增强…

Android系统(android app和系统架构)

Android LinuxFrameworkJVM 在Linux/Java上做了个二次开发&#xff1f;并不完全是&#xff1a;Android定义了应用模型 支持Java是一个非常高瞻远瞩的决定QualcommMSM7201 ARMv6指令集 528MHz1CPU&#xff0c;顺序八级流水线 TSMC 90nm“跑个地图都会卡” 但摩尔定律生效了&a…

3D 生成重建029-Turbo3D一个让3D生成大模型更快的思路

3D 生成重建029-Turbo3D一个让3D生成大模型更快的思路 文章目录 0 论文工作1 论文方法2 实验结果 0 论文工作 提出了Turbo3D&#xff0c;一个超快速文本到三维系统&#xff0c;能够在不到一秒钟内生成高质量的 Gaussian splatting 模型。Turbo3D 采用了一个快速的四步四视图扩…

信奥赛CSP-J复赛集训(bfs专题)(5):洛谷P3395:路障

信奥赛CSP-J复赛集训&#xff08;bfs专题-刷题题单及题解&#xff09;&#xff08;5&#xff09;&#xff1a;洛谷P3395&#xff1a;路障 题目描述 B 君站在一个 n n n\times n nn 的棋盘上。最开始&#xff0c;B君站在 ( 1 , 1 ) (1,1) (1,1) 这个点&#xff0c;他要走到 …

OpenCV图片添加水印

函数效果图&#xff1a; 本来只有蓝色背景&#xff0c;这两个人物是水印添加上去的 原理&#xff1a; 本实验中添加水印的概念其实可以理解为将一张图片中的某个物体或者图案提取出来&#xff0c;然后叠加到另一张图片上。具体的操作思想是通过将原始图片转换成灰度图&#x…

软考-软件设计师-基础知识Chapter01-计算机系统

第一章 计算机系统 计算机系统基础知识 计算机系统硬件基本组成 计算器的基本硬件系统由运算器、控制器、存储器、输入设备、输出设备的5大部件组成。 中央处理单元 中央处理单元&#xff08;CPU&#xff09; 是计算机系统的核心部件&#xff0c;它负责获取程序指令、对指…