0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

第六章-电机驱动和PWM STM32项目

dfhjgfg 来源:dfhjgfg 作者:dfhjgfg 2024-08-21 16:46 次阅读

[]()功能介绍放开头, 使用便捷无需愁。

这是全网最详细、性价比最高的STM32实战项目入门教程,通过合理的硬件设计和详细的视频笔记介绍,硬件使用STM32F103主控资料多方便学习,通过3万字笔记、12多个小时视频、20多章节代码手把手教会你如何开发和调试。让你更快掌握嵌入式系统开发。

V3.3.0-STM32智能小车

视频:
https://www.bilibili.com/video/BV16x4y1M7EN/?spm_id_from=333.337.search-card.all.click

V3:HAL库开发、功能:PID速度控制、PID循迹、PID跟随、遥控、避障、PID角度控制、视觉控制、电磁循迹、RTOS等功能。

第六章-电机驱动和PWM

6.1-认识电机驱动

示波器、硬件仿真、软件仿真

项目使用电机驱动芯片为A4950、下面是电机驱动的相关介绍
在这里插入图片描述
我们按照这种使用方法
在这里插入图片描述
这我们使用一个图介绍

在这里插入图片描述
在这里插入图片描述

6.2-使用电机驱动(独立工程)

分析和编写代码

综合电机使用方法、C8T6单片机硬件资源、小车原理图我们要进行如下配置
PA11-TIM1_CH4 定时器PWM输出-PWMA 前面已经完成

PB13-GPIO输出-AIN1

PA8-TIM1_CH1 定时器PWM输出-PWMB 前面已经完成

PB3-GPIO输出-BIN1
在这里插入图片描述还有两个管脚没有初始化**
**在这里插入图片描述
生成代码

开始添加控制电机正反转与速度的代码,进行仿真和电机测试,示波器测量

添加AIN1、BIN1控制代码

在这里插入图片描述

HAL_GPIO_WritePin(AIN1_GPIO_Port,AIN1_Pin,GPIO_PIN_RESET);//设置AIN1 PB13为 低电平
HAL_GPIO_WritePin(BIN1_GPIO_Port,BIN1_Pin,GPIO_PIN_SET);  //设置BIN1 PB3为高电平
HAL_Delay(1000);
//两次会使得电机反向。
HAL_GPIO_WritePin(AIN1_GPIO_Port,AIN1_Pin,GPIO_PIN_SET);//设置AIN1 PB13为 高电平
HAL_GPIO_WritePin(BIN1_GPIO_Port,BIN1_Pin,GPIO_PIN_RESET);  //设置BIN1 PB3为低电平

仿真测试代码

使用软件仿真

检测是否软件仿真设置正确
在这里插入图片描述
开启仿真-添加PB13和PB3到逻辑分析仪
在这里插入图片描述
全速仿真运行
在这里插入图片描述

实物测试代码

如何让电机90%电压转速 旋转

烧录代码

6.3-编写电机转速开环控制函数(另外复制工程)

新建motor文件
在这里插入图片描述
包含文件并添加编译
在这里插入图片描述
为了方便移植和使用,我们GPIO电平控制写成宏
在这里插入图片描述

#define AIN1_RESET  HAL_GPIO_WritePin(AIN1_GPIO_Port,AIN1_Pin,GPIO_PIN_RESET)//设置AIN1 PB13为 低电平
#define AIN1_SET    HAL_GPIO_WritePin(AIN1_GPIO_Port,AIN1_Pin,GPIO_PIN_SET)//设置AIN1 PB13为 高电平#define BIN1_RESET HAL_GPIO_WritePin(BIN1_GPIO_Port,BIN1_Pin,GPIO_PIN_RESET)  //设置BIN1 PB3为低电平
#define BIN1_SET    HAL_GPIO_WritePin(BIN1_GPIO_Port,BIN1_Pin,GPIO_PIN_SET)//设置AIN1 PB13为 高电平

下面我们编写小车电机方向和速度控制

/*******************
*  @brief  设置两个电机转速和方向
*  @param  motor1:电机B设置参数、motor2:设置参数
*  @param  motor1: 输入1~100 对应控制B电机正方向速度在1%-100%、输入-1~-100 对应控制B电机反方向速度在1%-100%、motor2同理
*  @return  无
*
*******************/
void Motor_Set (int motor1,int motor2)
{
//根据参数正负 设置选择方向
if(motor1 < 0) BIN1_SET;
   else      BIN1_RESET;
if(motor2 < 0) AIN1_SET;
else      AIN1_RESET;

//motor1 设置电机B的转速
if(motor1 < 0)
{
if(motor1 < -99) motor1 = -99;//超过PWM幅值
//负的时候绝对值越小  PWM占空比越大
//现在的motor1      -1   -99
//给寄存器或者函数  99  1 
 __HAL_TIM_SET_COMPARE(&htim1, TIM_CHANNEL_1, (100+motor1));//修改定时器1 通道1 PA8 Pulse改变占空比
}
else{
if(motor1 > 99) motor1 = 99;
//现在是   0 1  99
//我们赋值 0 1 99
 __HAL_TIM_SET_COMPARE(&htim1, TIM_CHANNEL_1, motor1);//修改定时器1 通道1 PA8 Pulse改变占空比
}

//motor2 设置电机A的转速
if(motor2 < 0)
{
if(motor2 < -99) motor2 = -99;//超过PWM幅值
//负的时候绝对值越小  PWM占空比越大
//现在的motor2      -1   -99
//给寄存器或者函数   99  1 
__HAL_TIM_SET_COMPARE(&htim1, TIM_CHANNEL_4, (100+motor2));//修改定时器1 通道4 PA11 Pulse改变占空比
}
else{
if(motor2 > 99) motor2 = 99;
//现在是   0 1 99
//我们赋值 0 1 99
 __HAL_TIM_SET_COMPARE(&htim1, TIM_CHANNEL_4, motor2);//修改定时器1 通道4 PA11 Pulse改变占空比
​
}
​
}

然后我们连接电机主函数进行测试

HAL_Delay(500);
Motor_Set(0,0);

本章结束兄弟们
下章继续-编码器测速部分

审核编辑 黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • PWM
    PWM
    +关注

    关注

    114

    文章

    5114

    浏览量

    213077
  • STM32
    +关注

    关注

    2264

    文章

    10852

    浏览量

    354173
  • 电机驱动
    +关注

    关注

    60

    文章

    1190

    浏览量

    86541
收藏 人收藏

    评论

    相关推荐

    数据采集光盘实例第一第六章

    数据采集光盘实例第一第六章
    发表于 06-28 21:02

    数据采集光盘实例第六章至第十二

    数据采集光盘实例第六章至第十二
    发表于 06-28 21:17

    【ALIENTEK 战舰STM32开发板】STM32开发指南--第六章 跑马灯实验

    第六章 跑马灯实验STM32最简单的外设莫过于IO口的高低电平控制了,本章将通过一个经典的跑马灯程序,带大家开启STM32之旅,通过本章的学习,你将了解到STM32的IO口作为输出使用
    发表于 01-10 15:50

    求王庆利《单片机设计标准教程》第六章的一个函数!!

    在做一个设计,急需《单片机设计标准教程》里第六章 的I2C总线函数 #include“IIClib.h” 谁有帮忙拍张图片传一下
    发表于 05-05 21:20

    《测控电路》习题完整参考答案(第六章

    《测控电路》习题完整参考答案(第六章
    发表于 05-07 11:36

    脉冲波形发生器与整形电路 第六章

    脉冲波形发生器与整形电路 第六章 555定时器及其应用集成和其它单稳态触发器集成施密特触发器其它多谐振荡器电路脉冲产生与整形电路的应用
    发表于 04-22 14:05 42次下载

    三相电路(第六章)

    三相电路(第六章) 一、 三相电源及其连接若三个电压源的电压uA,uB,uC的最大值相等,频率相同,相位互差120°,则此三个电压源的组合称为对称
    发表于 05-23 15:17 38次下载

    高频电子线路第六章答案

    高频电子线路第六章答案.
    发表于 06-05 10:41 41次下载

    PCB布线设计经验谈附原理图(第六章)

    PCB布线设计经验谈附原理图(第六章)   对于12位传感系统的布线,应用的电路是一负载单元电路,该电路可精确测量传感器上施加的
    发表于 10-28 09:30 1000次阅读
    PCB布线设计经验谈附原理图(<b class='flag-5'>第六章</b>)

    《测控电路》习题完整参考答案(第六章

    《测控电路》习题完整参考答案(第六章
    发表于 02-07 15:17 0次下载

    数字信号处理 第六章

    数字信号处理 第六章
    发表于 10-19 09:34 4次下载
    数字信号处理 <b class='flag-5'>第六章</b>

    静噪基础第六章_EMI静噪滤波器

    静噪基础第六章,EMI静噪滤波器
    发表于 01-24 16:25 4次下载

    STM8S BLDC电机第六章工程的stm8选项字节配置

    STM8S BLDC电机第六章工程的stm8选项字节配置
    发表于 03-05 15:07 8次下载

    电力系统继电保护第六章-变压器保护(课件)下载.ppt

    继电保护第六章-变压器保护(课件)
    发表于 04-28 09:45 0次下载
    电力系统继电保护<b class='flag-5'>第六章</b>-变压器保护(课件)下载.ppt

    计算机网络第六章应用层资源下载

    计算机网络第六章应用层资源下载
    发表于 05-17 10:25 0次下载