STM32——遥控小车从设计到实现详细记录

本文详细记录了一次STM32遥控小车的设计与实现过程,涉及主控板设计、电机与舵机控制、PID算法、NRF24L01无线通信模块的配置和调试,以及数据发送接收的实现。在开发过程中遇到了MOS驱动、PWM控制和无线通信的挑战,并逐一解决。最终完成了遥控小车的制作,体验了从设计到成品的完整过程。
摘要由CSDN通过智能技术生成

这次边做边写,基本上把做proj的整个步骤记录下来,包括中间的思考过程,也挺有意思的


小车主控板思路

  • 主控板需要完成的功能:
    1.接受传输过来的数据
    2.根据数据控制电机PWM
    3.根据数据控制舵机PWM

  • 控制电机的PWM实现:
    1.一个函数,两个参数:move(dir,speed)
    2.dir控制前后,speed控制pwm.
    3.如果方向改变需要延迟一定时间

  • 控制舵机的pwm实现:
    1.一个函数,两个参数:turn(dir,value)
    2.dir控制左右,value是设定值控制pwm
    3.value需要配合PID算法写好
    两个电机控制需要两个tim的pwm,需要四个管脚输出控制正反转.
    PID算法实现的时候,舵机有反馈线反馈现在所在的角度.反馈用ADC采样读取

PS: 未测试NRF24L01通信模块前自己留一个串口,使用蓝牙调PID


程序步骤

  1. 开启时钟(GPIO,TIM, ADC,USART,AFIO)
  2. 写move函数
  3. 写PID算法
  4. 写turn函数
  5. 配置蓝牙串口
  6. 调试PID

开启时钟

ABP1和APB2对应的外设见下表
这里写图片描述

这里写图片描述


使用TIM生成PWM波

这里使用TIM生成的PWM是为了让PWM更加稳定可靠

  • 原理解释
    通用定时器可以利用GPIO引脚进行脉冲输出,在配置为比较输出、PWM输出功能时,捕获/比较寄存器TIMx_CCR被用作比较功能,下面把它简称为比较寄存器。

    这里直接举例说明定时器的PWM输出工作过程:若配置脉冲计数器TIMx_CNT为向上计数,而重载寄存器TIMx_ARR被配置为N,即TIMx_CNT的当前计数值数值X在TIMxCLK时钟源的驱动下不断累加,当TIMx_CNT的数值X大于N时,会重置TIMx_CNT数值为0重新计数。

    而在TIMxCNT计数的同时,TIMxCNT的计数值X会与比较寄存器TIMx_CCR预先存储了的数值A进行比较,当脉冲计数器TIMx_CNT的数值X小于比较寄存器TIMx_CCR的值A时ÿ

评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值