使用HAL库基于STM32F103VET6遥控车(持续更新中,未完待续!)

目录

前言:

控制方案

方案一:

方案二:

器件准备

1、SPT5410HV-180舵机

2、GB37-520减速电动机

3、STM32F103VET6开发板

4、HC-05无线蓝牙模块

 5.电源模块(后续制作)

开始制作

一、小小驱动一下舵机

舵机基本资料

STM32ClueMX配置


前言:

从做一个遥控车,做一个项目中,一步步学习,这篇文章将持续更新,是遥控车保姆级教程,将从一开始的方案测试到后续车板原理图、PCB绘制、软件调试。

使用HAL库,使用STM32CubeMX配置

PCB使用立创EDA专业版绘制(使用立创EDA才能免费开板)

控制方案

后续将逐渐从方案一到方案二,后续会做升级

方案一:

初始调试使用一个蓝牙模块通信,使用手机控制

方案二:

增加遥控器,实现遥控器控制遥控车行走

器件准备

1、SPT5410HV-180舵机

SPT5410HV-180/10kg舵机

2、GB37-520减速电动机

37GB520减速电动机

3、STM32F103VET6开发板

注:博主使用的是野火STM32F103开发板,此处只是用于验证方案(野火开发板贵)

野火 STM32F103VET6开发板

4、HC-05无线蓝牙模块

HC-05无线蓝牙模块

 5.电源模块(后续制作)

开始制作

一、小小驱动一下舵机

舵机基本资料

图1.0 舵机SPT5410HV-180资料

舵机SPT5410HV-180资料中,显示:

  • 棕线:GND
  • 红线:VCC
  • 黄线:PWM(信号线)
  • 周期(Cycle):20ms  “同mg996r舵机”
  • 电机电压范围(Voltage Range):4.8V/6.0V/8.4V
  • 脉宽范围 500-2500us Angle:180°/PWM
  • PWM信号周期:             20000us 
  • 0度时,高电平时长:     500us
  • 180度时, 高电平时长:   2500us
  • 每增加1 °,需增加高电平时长:(2500-500)÷180 = 11.1us
  • 某角度值A,需要的总高电平时长:(A x11.1 +500)us 

180度舵机为例:

0.5ms-------2.5%---------0度;

1ms ----------5%-------45度;

1.5ms--------7.5%--------90度;

2ms ----------10%-------135度;

2.5ms --------12.5-------180度;

STM32ClueMX配置

定时器

        STM32的通用定时器是一个通过可编程预分频器(Prescaler)驱动的16位自动重装主计数器(counter period)构成。可以对内部时钟或触发源以及外部时钟或者触发源进行计数。

        基本工作原理:定时器时钟信号送入16位可编程预分频器(prescaler),该分频器系数是0~65535之间的任意数值。预分频器溢出后,会向16位的主计数器发出一个脉冲信号。

        预分频器本质上是一个加法计数器,预分频系数实际上就是加技术的溢出值。

        定时器发生中断时间的计算方法:

定时时间=(Prescaler + 1)× (Counter Period + 1)× 1                                                                                                     定时器时钟频率

开启定时器3的通道1,APB1上的时钟频率为72Mhz。 

图1.1 STM32CubeMX配置

 图1.1下方

  • Prescaler (PSC-16 bits value)                                                                                                  预分频器(PSC-16位值):72-1
  • Counter Mode                                                                                                                            计数器模式:up
  • Counter Period(AutoReload Register - 16 bits value)                                                                计数器周期(自动重载寄存器):20000-1
  • Internal Clock Division (CKD)                                                                                                  内部时钟部(CKD):No Division
  • auto-reload preload                                                                                                                  自动重载预加载:Disable

72M/72=1Mhz,即在1s内计数一百万次,我们需要设定20ms,则重装载值应为20000。

图1.2 Clock Configuration配置

软件程序:

    __HAL_TIM_SET_COMPARE(&htim3,TIM_CHANNEL_1,600);
    HAL_Delay(1000);
    __HAL_TIM_SET_COMPARE(&htim3,TIM_CHANNEL_1,1350); 
    HAL_Delay(1000);
    __HAL_TIM_SET_COMPARE(&htim3,TIM_CHANNEL_1,1900);
    HAL_Delay(1000);

未完待续!

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

派大星只有五根触手

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值