功能:
0.本项目采用STM32F103C8T6作为单片机系统的控制MCU
1.通过按键可以控制电机,正转、反转、加速、减速、停止。
2.总共六个功能按键可实现正转、反转、加速、减速、停止。
3.启停和正反转均有指示灯,测试采用的霍尔传感器方案
4.采用DC002作为电源接口可直接输入5V给整个系统供电
原理图:
PCB :
主程序:
#include "gpio.h"
#include "delay.h"
#include "sys.h"
#include "usart.h"
#include <stdio.h>
#include "timer.h"
#include "key.h"
unsigned char pwmRigh = 30; // pwm调整
unsigned char djs = 200;
char dis0[16]; // 暂存
char dis1[16]; // 暂存
unsigned char rekey = 0; // 按键防止抖动
unsigned char contNum = 0; // 循环计数
unsigned char motorFlag = 0;
unsigned char motorDir = 1;
int main(void)
{
delay_init(); // 延时函数初始化
// uart_init(9600); // 串口初始化为9600
// uart2_init(9600) ;
TIM3_Int_Init(9, 7199); // 2ms
GPIO_LED_MOTOR_Init(); // 初始化与LED连接的硬件接口
KEY_Init();
MOTOR_INA = 1;
MOTOR_INB = 1;
LED_START = 1;
LED_STOP = 0;
LED_F = 0;
LED_R = 1;
pwmRigh = 30; // pwm调整
delay_ms(100);
while (1)
{
if ((KEY_START == 0) || (KEY_STOP == 0) || (KEY_F == 0) || (KEY_R == 0) || (KEY_ADD == 0) || (KEY_SUB == 0)) // 检测到按键按下
{
delay_ms(10); // 小抖动
if (rekey == 0)
{
if (KEY_START == 0) //启动键
{
LED_START = 0;
LED_STOP = 1;
rekey = 1;
motorFlag = 1;
}
else if (KEY_STOP == 0) //停止键
{
LED_START = 1;
LED_STOP = 0;
rekey = 1;
motorFlag = 0;
}
else if (KEY_F == 0) //正转键
{
LED_F = 0;
LED_R = 1;
rekey = 1;
motorDir = 1;
MOTOR_INA = 1;
MOTOR_INB = 1;
}
else if (KEY_R == 0) //反转键
{
LED_F = 1;
LED_R = 0;
rekey = 1;
motorDir = 0;
MOTOR_INA = 1;
MOTOR_INB = 1;
}
else if (KEY_ADD == 0) //加速键
{
rekey = 1;
if (pwmRigh < 50)
pwmRigh = pwmRigh + 5; // pwm 调速
}
else if (KEY_SUB == 0) //减速键
{
rekey = 1;
if (pwmRigh > 30)
pwmRigh = pwmRigh - 5; // pwm 调速
}
}
}
else
{
rekey = 0; // 防止重复检测到按键
}
delay_ms(100);
}
}
void pwmCtrl(void)
{
static unsigned char countRigh;
if (motorFlag == 1)
{
countRigh++;
if (motorDir == 0)
{
if (countRigh < pwmRigh) // 占空比调节
{
MOTOR_INA = 0;
}
else if (countRigh <= 50) // 关闭时间段
{
MOTOR_INA = 1;
if (countRigh == 50)
countRigh = 0;
}
}
else
{
if (countRigh < pwmRigh) // 占空比调节
{
MOTOR_INB = 0;
}
else if (countRigh <= 50) // 关闭时间段
{
MOTOR_INB = 1;
if (countRigh == 50)
countRigh = 0;
}
}
}
else
{
MOTOR_INA = 1;
MOTOR_INB = 1;
}
}
仿真演示视频:
https://www.bilibili.com/video/BV1Sg411p7VN/文章来源:https://www.toymoban.com/news/detail-532684.html
实物演示视频:
https://www.bilibili.com/video/BV1s44y1D7Xj/文章来源地址https://www.toymoban.com/news/detail-532684.html
到了这里,关于基于STM32单片机直流电机控制加减速正反转系统proteus仿真原理图程序的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!