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

【经验分享】STM32 2轮PID智能小车第一章驱动电机让小车动起来

[复制链接]
STMCU小助手 发布时间:2022-5-20 00:53
前言
本篇文章正式带大家学习STM32智能小车。这篇文章先带大家了解一下如何让小车动起来。

一、LM298N
1.LM298N模块接线原理图。
根据下图可知一个LM298N可以控制两个电机模块。
12V输入需要接入电源,电源地接GND。单片机IO口接到STM32的GPIO口。
4WP]$]B}X78IJY~~LH~]}CO.png

2.LM298N和STM32接线图及LM298N和电机接线图
将电机接到LM298N上,LM298N接到STM32上,通过STM32控制控制GPIO引脚的电平高低驱动电机转动。

~~~RFO2CRJYK$GX[P)90D[3.png

二、驱动电机模块
//硬件连接说明:
//PB0----PWMA 右电机PWM
//PB12----AIN2 控制右电机正反
//PB13----AIN1 控制右电机正反
//PB14----BIN1 控制左电机正反
//PB15----BIN2 控制左电机正反
//PB1----PWMB 左电机PWM
LM298N上面的ENA,ENB控制小车PWM调速,IN1,IN2,IN3,IN4控制电机的正转和反转。

电机的正转、反转、停转
1.首先实现电机的停转是最简单的只要将电机的两个GPIO口都设置为相同的电平。
代码:
停转

  1.   HAL_GPIO_WritePin(AIN1_GPIO_Port,AIN1_Pin,GPIO_PIN_RESET);  
  2.   HAL_GPIO_WritePin(AIN2_GPIO_Port,AIN2_Pin,GPIO_PIN_RESET);
复制代码

2.电机正转和反转将两个GPIO口设置为不同电平即可
正转
  1.   HAL_GPIO_WritePin(AIN1_GPIO_Port,AIN1_Pin,GPIO_PIN_SET);  
  2.   HAL_GPIO_WritePin(AIN2_GPIO_Port,AIN2_Pin,GPIO_PIN_RESET);
复制代码

反转
  1.   HAL_GPIO_WritePin(AIN1_GPIO_Port,AIN1_Pin,GPIO_PIN_RESET);  
  2.   HAL_GPIO_WritePin(AIN2_GPIO_Port,AIN2_Pin,GPIO_PIN_SET);
复制代码

二、cubeMX配置
让小车动起来只需配置如下引脚。

J)[PW7QDBL_P_PMM$(VXL_6.png

三、程序代码编写
Moto.c

  1. #include "Moto.h"

  2. //小车模式定义
  3. #define GO 0
  4. #define Back 1
  5. #define Stop 2

  6. /*
  7. 函数功能:小车电机初始化
  8. */
  9. void Moto_Iint(void)
  10. {
  11.     car_move(Stop);
  12. }

  13. /*
  14. 函数功能:左电机模式设置
  15. Mode:模式选择 GO:前进 Back:后退 Stop:停止
  16. */
  17. void Left_mode(char Mode)
  18. {
  19.   switch(Mode)
  20.   {
  21.     case GO:
  22.     {
  23.         BIN1_RESET();
  24.         BIN2_SET();
  25.     }
  26.     break;
  27.     case Back:
  28.     {
  29.         BIN2_RESET();
  30.         BIN1_SET();        
  31.     }
  32.     break;
  33.     case Stop:
  34.     {
  35.         BIN1_RESET();
  36.         BIN2_RESET();
  37.     }
  38.     break;
  39.   }
  40. }

  41. /*
  42. 函数功能:右电机模式设置
  43. Mode:模式选择 GO:前进 Back:后退 Stop:停止
  44. */
  45. void Rright_mode(char Mode)
  46. {
  47.   switch(Mode)
  48.   {
  49.     case GO:
  50.     {
  51.         AIN1_RESET();
  52.         AIN2_SET();        
  53.     }
  54.     break;
  55.     case Back:
  56.     {
  57.         AIN1_RESET();
  58.         AIN2_SET();        
  59.     }
  60.     break;
  61.     case Stop:
  62.     {
  63.         AIN1_RESET();
  64.         AIN2_RESET();
  65.     }
  66.     break;
  67.   }
  68. }

  69. /*
  70. 函数功能:小车移动
  71. Mode:模式选择 GO:前进 Back:后退 Stop:停止
  72. */
  73. void car_move(char Mode)
  74. {
  75.   switch(Mode)
  76.   {
  77.     case GO:
  78.     {
  79.         Left_mode(GO);
  80.         Rright_mode(GO);
  81.     }
  82.     break;
  83.     case Back:
  84.     {
  85.         Left_mode(Back);
  86.         Rright_mode(Back);        
  87.     }
  88.     break;
  89.     case Stop:
  90.     {
  91.         Left_mode(Stop);
  92.         Rright_mode(Stop);        
  93.     }
  94.     break;
  95.   }
  96. }
复制代码

Moto.h

  1. #ifndef _MOTO_H_
  2. #define _MOTO_H_


  3. #include "main.h"

  4. #define u8 unsigned char
  5. #define u16 unsigned short
  6. #define u32 unsigned int

  7. //电机IO定义

  8. //右电机
  9. #define AIN1_RESET() HAL_GPIO_WritePin(AIN1_GPIO_Port,AIN1_Pin,GPIO_PIN_RESET)
  10. #define AIN1_SET() HAL_GPIO_WritePin(AIN1_GPIO_Port,AIN1_Pin,GPIO_PIN_SET)

  11. #define AIN2_RESET() HAL_GPIO_WritePin(AIN2_GPIO_Port,AIN2_Pin,GPIO_PIN_RESET)
  12. #define AIN2_SET() HAL_GPIO_WritePin(AIN2_GPIO_Port,AIN2_Pin,GPIO_PIN_SET)

  13. //左电机
  14. #define BIN1_RESET() HAL_GPIO_WritePin(BIN1_GPIO_Port,BIN1_Pin,GPIO_PIN_RESET)
  15. #define BIN1_SET() HAL_GPIO_WritePin(BIN1_GPIO_Port,BIN1_Pin,GPIO_PIN_SET)

  16. #define BIN2_RESET() HAL_GPIO_WritePin(BIN2_GPIO_Port,BIN2_Pin,GPIO_PIN_RESET)
  17. #define BIN2_SET() HAL_GPIO_WritePin(BIN2_GPIO_Port,BIN2_Pin,GPIO_PIN_SET)



  18. void Moto_Iint(void);
  19. void car_move(char Mode);
  20. void Left_mode(char Mode);
  21. void Rright_mode(char Mode);


  22. #endif
复制代码

总结
本篇文章就介绍到这里,大家有什么问题可以留言或者私信。





收藏 评论0 发布时间:2022-5-20 00:53

举报

0个回答

所属标签

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版