加入星计划,您可以享受以下权益:

  • 创作内容快速变现
  • 行业影响力扩散
  • 作品版权保护
  • 300W+ 专业用户
  • 1.5W+ 优质创作者
  • 5000+ 长期合作伙伴
立即加入

第六章-电机驱动和PWM-STM32f103c8t6最小系统板_STM32项目_嵌入式学习

06/18 11:44
2938
服务支持:
技术交流群

完成交易后在“购买成功”页面扫码入群,即可与技术大咖们分享疑惑和经验、收获成长和认同、领取优惠和红包等。

虚拟商品不可退

当前内容为数字版权作品,购买后不支持退换且无法转移使用。

加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论
放大
实物图
相关方案
  • 方案介绍
    • 第六章-电机驱动和PWM
  • 相关文件
  • 推荐器件
  • 相关推荐
  • 电子产业图谱
申请入驻 产业图谱

第六章-电机驱动和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);

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

联系:Q,1930299709

  • 联系方式.txt

推荐器件

更多器件
器件型号 数量 器件厂商 器件描述 数据手册 ECAD模型 风险等级 参考价格 更多信息
KSZ8864CNXI-TR 1 Microchip Technology Inc IC SWITCH 4 PORT MII/RMII 64QFN
$5.77 查看
SFH6106-3 1 Infineon Technologies AG Transistor Output Optocoupler, 1-Element, 5300V Isolation,
$1.14 查看
AFBR-57R5APZ 1 Agilent Technologies Inc Fiber Optic Device
$40.94 查看

相关推荐

电子产业图谱