你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

【经验分享】STM32CubeIDE自平衡小车教程5.直流电机转速开环控制

[复制链接]
STMCU小助手 发布时间:2022-3-15 22:00
1.打开上一节的文件,进入我们上一小节修改过的文件夹,找到并打开.cproject 文件,双击.ioc 文件,双击打开工程。0 E8 d( l5 O( q& S

+ t, V  @+ P% c2.在左侧 Pinout&Configuration 界面中的 Timers 下拉中点击TIM2,然后在TIM2 的 Mode and Configuration 的 Mode中将Channel3 选择为 PWM Generation CH3;将Channel4 选择为 PWM Generation CH4。" i1 U6 I/ u, ?* C8 j9 f$ ]
5 S. i9 x1 h( p4 U: ~
SS`Z}]2NHA{DECD4T1KSK.png
! F5 [/ I- D4 h* x# M$ {2 Z; N( ]( I+ ^" ?5 Q! S' Y
3.在下方的参数设置选项卡中将 Prescaler 设为 72,即预分频系数(TIMx_PSC)设为 72;Counter Period 设为 100,即计数周期(自动加载值 TIMx_ARR)设为 100;Pulse 设为 100,即占空比设置为 100%。
9 N7 U( k6 s! y( b4 G$ O4 S* B) X+ O  T, p. E, {+ D
`213A4JL$L07M(CLKCT2~GR.png ' J: H3 I6 M4 G
) V! \" n6 c6 s8 ?" ?
4.在右侧界面的芯片中分别点击 PB12、PB13、PB14、PB15,并将其配置为 GPIO_Output。
( u8 D( n$ f+ v2 z- s2 Q) _0 v" @
LTW`_EEDOB7_31]1_Z}6YS3.png
$ `# |; Z  E6 }  X* |1 f, S/ B% h, @7 P: M! x7 I' a: T& _! U! F$ `6 b
5.在 System Core 下拉菜单中选择 GPIO,然后在左侧的System Core 下拉菜单中选择 GPIO,然后在 GPIO Mode and Configuration 中对 PB12、PB13、PB14、PB15 引脚进行配置。6 m3 f6 ^" o7 z6 @; b* R5 N' V
, V* b7 k1 N+ x0 ]- i
E(OAJ7~}@)00NVM~]VT_IO3.png ! F2 d4 X1 C' b  N- E! _
, R) s$ S) V7 U
6. GPIO output level代表 GPIO 默认输出电平,在这里设置为低电平;GPIO mode 代表 GPIO 引脚模式,在这里设置为推挽输出;GPIO Pull-up/Pull-down 即 GPIO 上拉或下拉,在这里设置为既不上拉也不下拉;Maximum output speed 即 最大输出速度,在这里设置为低速。(默认设置即可)
* C, {5 n. K3 }) h) q6 S' f0 v; y) T4 r5 L9 C
User Label 即用户标签,在这里将PB12 改为 BIN2,PB13 改为 BIN1; PB14 改为 AIN1,PB15 改成AIN2。
4 h5 V  A. R! {; m$ ?, W# c+ i% c6 F8 Y% R# p$ r
7YGA}]IVJ~OJG@F`_JC7NWO.png % U+ b( e: s% a: h1 X
) s1 K/ k& X1 U; j  z( q
7.点击生成代码,打开工程左侧 gpio.c 源文件,双击打开,可以看到HAL_GPIO_Init() 函数里面已经有BIN1_Pin|BIN2_Pin 的相关初始化代码。
. N/ k6 w# H% ^$ `+ d2 Q  t" ^: }/ I
WRK2YFEGIEBU3F)~C9O5P3V.png . j, v, k# a( c/ \) f2 |( W/ R

0 [' _) W) f+ ^3 U) F3 F& D' d8.在  /* USER CODE BEGIN 2 */ 和   /* USER CODE END 2 */ 中加入以下代码
8 r( P% V: R: Z1 W8 B
  1.   HAL_TIM_PWM_Start(&htim2,TIM_CHANNEL_3);//开启 TIM2_CH3 的 PWM 输出
    1 I! W# I$ U: w* S8 n$ S2 ]+ ?
  2.   HAL_TIM_PWM_Start(&htim2,TIM_CHANNEL_4);//开启 TIM2_CH4 的 PWM 输出" L$ ]+ t* z$ n$ f4 \" K. M

  3. : l: J; h- S' {+ c3 q' m
  4.   HAL_GPIO_WritePin(BIN1_GPIO_Port, BIN1_Pin, GPIO_PIN_SET);//初始化BIN1引脚为低电平(左 轮)
    + C7 k. k5 L* m
  5.   HAL_GPIO_WritePin(BIN2_GPIO_Port, BIN2_Pin, GPIO_PIN_RESET);//初始化 BIN2 引脚为高电平(左轮)
    ' Y7 [, T5 }. d4 g2 x& ~
  6.   HAL_GPIO_WritePin(AIN1_GPIO_Port, AIN1_Pin, GPIO_PIN_SET);//初始化 AIN1 引脚为低电平(右轮)# E+ [& J. s& e) T! @: s" \: c. |
  7.   HAL_GPIO_WritePin(AIN2_GPIO_Port, AIN2_Pin, GPIO_PIN_RESET);//初始化 AIN2 引脚为高电平(右轮)
    " m& h  l9 t3 V; f; J! X

  8.   m+ k3 S7 M" ~" A& B
  9.   __HAL_TIM_SET_COMPARE(&htim2, TIM_CHANNEL_3, 100);//控制小车转速(右轮). h$ O  d/ [# i) [) R* ?9 m
  10.   __HAL_TIM_SET_COMPARE(&htim2, TIM_CHANNEL_4, 100);//控制小车转速(左轮)
复制代码
5 d6 s0 x" |4 }2 k# m
4 M9 U, _( i" O) T
45MHCN_2XORE~1_$UQB$VIN.png 1 b9 M" {; Y$ v1 v2 u! p8 s

- {: _) K' x8 S& p其中 __HAL_TIM_SET_COMPARE(&htim2, TIM_CHANNEL_4, 100)里的100是用来控制PWM占空比的大小的。在配置IOC文件时,我们设置的最大PWM值为100,如果需要调整转速,可以设置0~100的PWM数值来控制车轮转速。9 {) K$ @0 B% O4 k5 {5 v; D$ A
2 n6 C6 u3 P6 m: ?
9.点击编译烧录,开启小车电源开关,完成转速的开环控制。
3 M; S% j1 z  q* U; b9 l1 Q' }5 o; B% J; q9 R( V

* X) u& j- M: F, Q2 I2 W+ O. S% d9 g1 i& Z: V: B9 A
赞 收藏 评论0 发布时间:2022-3-15 22:00

举报

0个回答

所属标签

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版