基于STM32单片机直流电机控制加减速正反转系统proteus仿真原理图程序

这篇具有很好参考价值的文章主要介绍了基于STM32单片机直流电机控制加减速正反转系统proteus仿真原理图程序。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

功能:
0.本项目采用STM32F103C8T6作为单片机系统的控制MCU
1.通过按键可以控制电机,正转、反转、加速、减速、停止。
2.总共六个功能按键可实现正转、反转、加速、减速、停止。
3.启停和正反转均有指示灯,测试采用的霍尔传感器方案
4.采用DC002作为电源接口可直接输入5V给整个系统供电

原理图:
stm32电机正反转,单片机,stm32,proteus

PCB :
stm32电机正反转,单片机,stm32,proteus

主程序:

#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.bilibili.com/video/BV1s44y1D7Xj/文章来源地址https://www.toymoban.com/news/detail-532684.html

到了这里,关于基于STM32单片机直流电机控制加减速正反转系统proteus仿真原理图程序的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • [proteus]STM32F103单片机直流电机PID算法PWM波电机调速正反转Proteus仿真

    1、实现功能: (1)、基于STM32F103单片机PID算法PWM控制直流电机正反转调速,LCD1602显示转速等。可通过“加速”、“减速”按键修改“目标转速”并实时测量“实际转速”送到LCD1602上显示。 (2)、“启动”按键控制电机启动,默认启动电机是正转(示波器上的黄色PWM波)。 (3)、“

    2024年02月06日
    浏览(45)
  • 基于单片机串口控制直流电机调速

    一、系统方案 (2)本设计采用STC89C5单片机作为主控器,串口控制直流电机调速,串口助手发送1-8,改变电机速度,数码管显示对应速度。 二、硬件设计 原理图如下: 三、单片机软件设计 1、首先是系统初始化 TMOD=0x21;//定时器0工作方式1 ET1=0; SM0=0; SM1=1; REN=1; EA=1; ES=1; 2、数码管

    2024年02月12日
    浏览(46)
  • 【32单片机学习】(3)霍尔编码器减速直流电机控制及测速

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 目录 前言 1.实验现象 2.实验接线及原理图 接线图 原理图  电机接线图 3.代码部分 1.主函数  main.c 2.按键部分   key.c  key.h pwm代码   pwm.c  pwm.h 电机驱动   motor.c   motor.h  OLED显示 oled.c oled.h  编码器

    2024年02月11日
    浏览(54)
  • 基于51单片机直流电机PWM调速液晶1602显示设计

    一、系统方案 本文主要研究了利用MCS-51系列单片机控制PWM信号从而实现对直流电机转速进行控制的方法。本文中采用了三极管组成了PWM信号的驱动系统,并且对PWM信号的原理、产生方法以及如何通过软件编程对PWM信号占空比进行调节,从而控制其输入信号波形等均作了详细的

    2024年02月11日
    浏览(46)
  • 基于51单片机的直流电机转速显示+加速减速启停

    做了一个实战项目,这个实战项目主要是实现对直流电机转速的控制,可以实现电机加速,减速,报警、启停以及显示转速。在本电路的基础上也可以进行一些拓展改变电机正反转的状态,只需要外加一个按键和修改部分程序即可,在文章的最后会对拓展进行一个说明。基础

    2023年04月27日
    浏览(45)
  • 基于51单片机直流电机转速数码管显示控制系统

    一、系统方案 本文主要研究了利用MCS-51系列单片机控制PWM信号从而实现对直流电机转速进行控制的方法。本文中采用了三极管组成了PWM信号的驱动系统,并且对PWM信号的原理、产生方法以及如何通过软件编程对PWM信号占空比进行调节,从而控制其输入信号波形等均作了详细的

    2024年02月12日
    浏览(47)
  • 基于51单片机的PWM控制直流电机设计( proteus仿真+程序+报告+讲解视频)

    仿真图proteus 7.8及以上 程序编译器:keil 4/keil 5 编程语言:C语言 设计编号:S0031 基于51单片机的PWM控制直流电机设计 1.设计要求 采用51单片机作为核心控制器,控制直流电机的正转,反转,制动,停止。 2.功能要求 1)数码管显示当前转动方向和当前的PWM占空比0~100%。 2)电机

    2023年04月25日
    浏览(48)
  • 【单片机】11-步进电机和直流电机

    电能转换为动能 (1) 交流电机【大功率】 :两相【200W左右】,三相【1000W左右】 (2) 直流电机【小功率】 :永磁【真正的磁铁】,励磁【电磁铁】 (3) 步进电机【精确控制功率】,伺服电机【非常精确功率】 (1)外观 (2)接线和工作原理 在电池位置有VCC和GND (3)

    2024年02月03日
    浏览(41)
  • 【毕业设计】2-基于单片机控制的直流电机调速系统设计(原理图+仿真+答辩论文+答辩PPT)

    包含此题目毕业设计全套资料: 原理图工程 仿真工程 源代码工程 答辩论文,配套设计参考设计说明书,字数:18077 答辩PPT 主要研究内容: 1.单片机;2.直流电机,液晶显示器LCD。 设计思路: 查阅相关文献资料学习单片机、直流电机,液晶显示器LCD,编程实现单片机控制的直

    2024年02月03日
    浏览(56)
  • 【【51单片机直流电机调速】】

    PWM的生成方法 先用户设定一个比较值,然后计数器定时自增。 当计数器比较值,输出0 当计数器比较值,输出1

    2024年02月15日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包