2022年遥控小车报告

上传人:公**** 文档编号:567464256 上传时间:2024-07-20 格式:PDF 页数:18 大小:4.94MB
返回 下载 相关 举报
2022年遥控小车报告_第1页
第1页 / 共18页
2022年遥控小车报告_第2页
第2页 / 共18页
2022年遥控小车报告_第3页
第3页 / 共18页
2022年遥控小车报告_第4页
第4页 / 共18页
2022年遥控小车报告_第5页
第5页 / 共18页
点击查看更多>>
资源描述

《2022年遥控小车报告》由会员分享,可在线阅读,更多相关《2022年遥控小车报告(18页珍藏版)》请在金锄头文库上搜索。

1、电子系统设计基于 STM32 的无线遥控小车课程设计电子信息科学与技术物理与电子科学学院2014年 05 月 2 日电工电子中心 2009 年 5 月绘制精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 1 页,共 18 页湖北师范学院电工电子实验教学省级示范中心电子版实验报告第2页,共 18页基于 STM32 的无线遥控小车一任务解析 1、电机驱动方案以及主控芯片选择 2、无线通信模块的驱动和调试 3、软件控制算法 4、STM32主控制板 PCB打样及调试二方案实施1 方案论证:1电机驱动方案选择:电机的常用驱动方式有两种:直流电压驱动,PWM 加

2、 H桥驱动。直流驱动实现简单,但是一般只能实现单向旋转,并且效率低。PWM 加 H 桥的驱动方式可以在一组电源的情况下方便实现正反转,H桥工作在开关状态下,效率高,故采用PWM 加 H桥的驱动方案。2主控芯片选择:一路电机需要两路PWM 信号来控制正反转以及转速,小车有四个独立的直流电机,所以需要8 路 PWM 。不管是传统51 单片机还是改良型的12 单片机都已经不能胜任此任务,这里采用意法半导体公司的STM32F103RBT6 芯片作为主控。 STM32F103RBT6 有 128K 的 FLASH ,20K 的 SRAM ,最高 72MHZ工作频率, 2 个 12 位 ADC(16个通道

3、 ) ,支持DMA 传输,多达 7 个定时器, 9 个通信接口。 强大的性能以及低廉的价格完全可以满足本设计的需求。精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 2 页,共 18 页湖北师范学院电工电子实验教学省级示范中心电子版实验报告第3页,共 18页2 无线模块的驱动和调试无线通信采用的是挪威NORDIC 公司的 NRF24L01+ 芯片。 nRF24L01+是一款高速低功耗集收发于一体的半双工芯片,最大传输速度可以到达2Mbps,工作在全球开放ISM 频段,最大0dBm发射功率,免许可证使用。 nRF24L01+集成了所有与RF协议相关的高

4、速信号处理部分,其通信接口采用标准的SPI 总线接口。用51 单片机驱动NRF24L01+ 的做法是软件模拟SPI 时序,但是软件模拟的时序存在部分问题:1 ,软件模拟时序速度慢,2稳定度不够高,STM32F103RBT6 芯片自带硬件双路 SPI, 最高速度可以到达18MBits/s , 此处的 NRF24L01+ 和 OLED都是通过硬件SPI 驱动的。硬件 SPI 配置的关键代码如下:SPI_InitTypeDef SPI_InitStructure;/声明 SPI 结构体RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);/使能复用

5、AFIO时钟,使用硬件SPI 必须先使能复用AFIO时钟RCC_APB2PeriphClockCmd(RCC_APB2Periph_SPI1,ENABLE); /使能 SPI1 时钟,使用外设时,必须先使能外设时钟SPI_Cmd(SPI1, DISABLE); /改变 MODE 前先禁止 SPI SPI_InitStructure.SPI_Direction =SPI_Direction_2Lines_FullDuplex; /设置为两线全双工模式 SPI_InitStructure.SPI_Mode =SPI_Mode_Master;/设置为主模式SPI_InitStructure.SPI_

6、DataSize=SPI_DataSize_8b;/ 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 3 页,共 18 页湖北师范学院电工电子实验教学省级示范中心电子版实验报告第4页,共 18页设置为 8 位数据帧模式 SPI_InitStructure.SPI_CPOL =SPI_CPOL_Low; /CPOL=0 时钟悬空低 SPI_InitStructure.SPI_CPHA =SPI_CPHA_1Edge; / 数据捕获于第1 个上升沿 SPI_InitStructure.SPI_NSS =SPI_NSS_Soft; / NSS 软件控制

7、SPI_InitStructure.SPI_BaudRatePrescaler=SPI_BaudRatePrescaler_2; /SPI时钟 2 分频 ,72M/2=36MHZ =SPI_FirstBit_MSB; /MSB/高位在前发送 SPI_InitStructure.SPI_CRCPolynomial =7; / 用来设置 CRC校验多项式,提高通信可靠性,大于 1 即可SPI_Init(SPI1,&SPI_InitStructure); / 根据指定的参数初始化SPI1 SPI_Cmd(SPI1, ENABLE); /使能 SPI1 2,软件控制算法1 ,8 路 PWM 的产生这里

8、采用PWM加 H 桥驱动有刷直流电机,一路电机需要两路PWM ,来控制正反转以及转速,小车有四个独立的直流电机,所以需要 8 路 PWM 。STM32 的每一个 TIME 有四个通道, 每个通道可以独立的配置为PWM 输出或者输入CAP 模式,这里采用 TIM2精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 4 页,共 18 页湖北师范学院电工电子实验教学省级示范中心电子版实验报告第5页,共 18页和 TIM4 的 8 个通道来产生需要的8 路 PWM 。经过实际的测试发现,在相同的占空比下,PWM 频率为 100HZ 左右时电机的转速以及扭力均大

9、于1KHZ ,10KHZ 。TIM2 和 TIM4 属于挂接在低速时钟总线 APB1 的外设,在预分频不等于1 时, TIM2 和 TIM4 的时钟源为 72MHZ 系统时钟为72MHZ 的情况下。无线模块接收的数据为04095,在这里对应0%100%的占空比,所以在频率为100HZ时,预分频系数选择176 分频,重装载值为4095,72MHZ/176/4096=100HZ 。硬件 PWM 配置关键代码如下:GPIO_Config(PA,Pin(0)|Pin(1)|Pin(2)|Pin(3),AF_PP,Speed_50M); / GPIOA 通道 0,1,2,3设定为复用推挽输出模式GPIO

10、_Config(PB,Pin(6)|Pin(7)|Pin(8)|Pin(9),AF_PP,Speed_50M); / GPIOB 通道 6,7,8,9设定为复用推挽输出模式 TIM_BaseConfig(TIME2,4095,175,TIM_72M,Mode_Up); / 72M/(175+1)/(4095+1)=100Hz,设定 TIM2 四路 PWM 频率为 100HZ TIM_BaseConfig(TIME4,4095,175,TIM_72M,Mode_Up); / 72M/(175+1)/(4095+1)=100Hz, 设定 TIM4 四路 PWM 频率为 100HZ for(CHx=

11、1;CHx2048) /如果方向值大与2048 DirL=1.0; /设置左轮油门比例系数为1 DirR=(4096-Direction)/2048.0;/右轮油门比例系数随着方向值增大而减小 Else /如果方向值小与2048 DirL=Direction/2048.0; /左轮油门比例系数随着方向值减小而减小 DirR=1.0; /设置右轮油门比例系数为1 TIM_SetCompare1(TIM4,0); /设定 TIM4 通道 CHx占空比为0,即为低电平,此时为正转,小车前进 TIM_SetCompare2(TIM4,0); TIM_SetCompare3(TIM4,0); TIM_S

12、etCompare4(TIM4,0); if(Nflag!=Oflag) / 当 Nflag!=oldflag车换向时时,设置死区延时,防止同一侧两个开关管同时导通烧坏芯片 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 7 页,共 18 页湖北师范学院电工电子实验教学省级示范中心电子版实验报告第8页,共 18页 delay_ms(50); TIM_SetCompare1(TIM2,(u32)Thr*DirR); /设定通道CH1占空比,占空比的值由油门值以及油门比例系数共同决定 TIM_SetCompare2(TIM2,(u32)Thr*DirR

13、);/同上 TIM_SetCompare3(TIM2,(u32)Thr*DirL); TIM_SetCompare4(TIM2,(u32)Thr*DirL); 3 在实际的测试过程中发现当遥控的油门减小前就突然断电了,小车会保持之前的状态继续运动,这样就会失去控制,很容易出问题。后来在此基础上想到了看门狗,如果在规定时间里没有向看门狗寄存器里写入特定的数据,就会产生系统复位,当复位后, 初始状态下车是停止的, 这样一旦接收不到遥控的发来的数据就停止喂狗,系统处于一直复位状态,知道接收到遥控发送的数据,这样就保证了系统的稳定工作。具体实现代码如下:IWDG_Config(IWDG_2K5,250

14、0); /配置独立看门狗时钟为2.5K ,计数值为 2500,1/2500*2500=1s ,在 1s 内喂狗不会产生系统复位if(STATE=1&flag!=0xff) /判断接收标志位,当遥控突然断电后,用串口发现依然能够接收到0XFF的标志位,原因暂时不详 IWDG_Feed(); / 接受到数据后喂狗, 1S内没接收到数据产生系统复位精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 8 页,共 18 页湖北师范学院电工电子实验教学省级示范中心电子版实验报告第9页,共 18页 Throttle=RxBuf0*256+RxBuf1; /获得油门值

15、 Direction=RxBuf2*256+RxBuf3;/获得方向值 flag=RxBuf4; /获得正 / 反转标志位值 printf(%d %d %drn,Throttle,Direction,flag);/串口打印接收到的数据,便于系统调试 STATE=0; /清空接收标志位 为了清晰的观察, 系统是否处在复位状态下,这里加了指示灯加以指示,当系统复位时,会观察到灯以1S 左右的周期闪烁,当系统正常工作时,灯处于长亮状态。具体代码如下:LED=1; /初始复位,状态指示灯不亮delay_ms(500); / 当硬件一直复位时,形成状态灯以1s 周期闪烁的效果 while(1) LED=

16、0; /当系统正常工作时,状态指示灯长亮3,STM32主控制板PCB打样及调试1)在进行 PCB打样之前,先得进行原理的验证,这块板子的原理图参考了周兆丰老师以及正点原子的MiniSTM32 开发板,在他们的基础上有所增减。当然, 这不是一块纯粹的小车控制板,是一个完整的 STM32开发板。里面的模块很多, 这里就只介绍其中一部分。精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 9 页,共 18 页湖北师范学院电工电子实验教学省级示范中心电子版实验报告第10页,共 18页原理图部分如下:图 2:串口 /USB选择当 1 和 3,2 和 4 相连是,

17、 是串口的功能, 当 3 和 5,4 和 6 相连时,是 USB功能,这里相对正点原子的少了两个排针,3,4 可以作为公用的,减少了排针数目。图 3:一键下载电路当然,这个电路不是我原创的啦,是正点原子的, 觉得很经典,在这里说明一下。下载的时候选择DTR的低电平复位, RTS的高电平进 BootLoard 。一键下载电路的具体实现过程:首先,mcuisp 控制 DTR输出低电平,则 DTR_N 输出高,然后RTS置高,则 RTS_N输出低,这样Q2导通了, BOOT0 被拉高,即实现设置BOOT0 为 1,同时 Q1也会精选学习资料 - - - - - - - - - 名师归纳总结 - -

18、- - - - -第 10 页,共 18 页湖北师范学院电工电子实验教学省级示范中心电子版实验报告第11页,共 18页导通, STM32的复位脚被拉低,实现复位。然后,延时100ms后,mcuisp 控制 DTR为高电平,则 DTR_N 输出低电平, RTS维持高电平,则 RTS_N继续为低电平,此时STM32的复位引脚,由于Q1不再导通,变为高电平,STM32结束复位,但是BOOT0 还是维持为1,从而进入 ISP 模式,接着mcuisp 就可以开始连接STM32 ,下载代码了,从而实现一键下载。图 4:通用 OELD 模块接口我的这个 OLED 排母有 9 个引脚,可能你会觉得奇怪,本来S

19、PI 驱动模式的 OLED (128*64) 市面上常用的一般都只有6 个引脚,多的也才 7 个引脚,为什么要多此一举多弄两个电源引脚呢?仔细观察之后,你也许会明白, 这样做是为了兼容性,当你顺着看的时候可以完全兼容6 脚或者 7 脚的 OLED ,那么 IIC 驱动模式的呢,对了,当你从下往上看的时候,会发现正好就是4 脚 IIC 驱动模式的OLED ,而且蛮巧的, 正好硬件 IIC 的引脚和硬件SPI 的引脚是挨着的,这样在方便布线的同时保证兼容市面上所有接口类型的OLED( 单指 128*64 点) ,并且在程序上都可以采用硬件功能驱动,精选学习资料 - - - - - - - - -

20、名师归纳总结 - - - - - - -第 11 页,共 18 页湖北师范学院电工电子实验教学省级示范中心电子版实验报告第12页,共 18页可以更快速的显示动态画面。图 5:TFT彩屏以及正点原子OLED 接口彩屏接口是照着正点原子的原理图画的,因为对彩屏不是太熟悉,加之中等容量的STM32没有 FSMC ,只能用模拟时序的方式去驱动彩屏,并且在正点原子的TFT程序功能已经如此丰富的情况下,贸然去大幅度更改会造成不必要的麻烦。这里也可以兼容正点原子的OLED ,他是采用模拟时序的方式驱动的,虽然他的驱动方式灵活8080,SPI,IIC可选 ,但是在速度上就比不上硬件驱动了上几张整体效果图:精选

21、学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 12 页,共 18 页湖北师范学院电工电子实验教学省级示范中心电子版实验报告第13页,共 18页精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 13 页,共 18 页湖北师范学院电工电子实验教学省级示范中心电子版实验报告第14页,共 18页精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 14 页,共 18 页湖北师范学院电工电子实验教学省级示范中心电子版实验报告第15页,共 18页三结果展示精选学习资料 - - -

22、 - - - - - - 名师归纳总结 - - - - - - -第 15 页,共 18 页湖北师范学院电工电子实验教学省级示范中心电子版实验报告第16页,共 18页精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 16 页,共 18 页湖北师范学院电工电子实验教学省级示范中心电子版实验报告第17页,共 18页四经验总结这次做遥控小车,是源于大二时的想法,当时还没接触到STM32 ,用来用去都是51,一想到 8 路 PWM 就立马感觉无可奈何了。其实当时也只是一时觉得好玩,想趁着考研之前做点玩的,顺便也挑战一下自己,深入学习一下STM32 。做之前也

23、没想那么多,找到有意愿想做的,一番简单商量之后就开始开工了。在做的过程中,不断发现问题,一个一个解决问题。STM32开发板我是自己打了两版的,第一版没有一键下载电路,下载程序不能一键下载,需要通过短路帽选择启动区。当时画 PCB因为不明白那是一键下载电路,就给省掉了。后来想着既然做,就做的像个样子,于是经过修改调整之后才有了现在这一版。在小车最后调试阶段,在全速时突然换向,结果导致电机驱动板烧坏,刚开始以为是全速换向瞬时电流太大导致的。后来换了一块新驱动板,精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 17 页,共 18 页湖北师范学院电工电子实

24、验教学省级示范中心电子版实验报告第18页,共 18页在低速下换向,发现还是烧了。经过测试,全速换向时,瞬时电流也远没有到达800MA ,愣是没想明白问题在哪。我仔细研究了一下H桥驱动方案,突然发现原来还是程序问题。因为没有采用悬浮驱动的方式,在换向的时候必须设定死区时间,如果没有设置死区时间,换向时就会导致同侧的功率管同时处于开启状态,由于功率管导通电阻很小,相当于将电源直接短接,流过功率管电流过大,导致芯片烧坏。东西还是自己亲身做了才会有深刻体会,这次从头到尾做下来也花了不少钱,如果在大二想到花这么多钱去做一件事,想想估计就不会去做了。现在想想也觉得这点东西不算什么,一是为了好玩,二是为了学点东西,收获也还是蛮丰富的,做东西的时候要考虑周到,多多思考怎么将作品做的更加完美。精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 18 页,共 18 页

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号