基于STM32的直流电机调速系统


基于STM32的直流电机调速系统

功能:
1.通过LCD屏幕显示实时两个电机的占空比
2.通过按键调整电机1和2的加减速
3.通过L298N驱动两个直流电机完成调速

一、原理图

在这里插入图片描述

二、部分代码

#include "delay.h"
#include "sys.h"
#include "usart.h"
#include "lcd1602.h"
#include "key.h"
#include "dht11.h"
#include "stdio.h"
#include "timer.h"


#define RELAY_ON GPIO_SetBits(GPIOA, GPIO_Pin_8)
#define RELAY_OFF GPIO_ResetBits(GPIOA, GPIO_Pin_8)

extern unsigned int Motor1_Pwm;
extern unsigned int Motor2_Pwm;

unsigned char Flag;
unsigned int key_value;
unsigned char buffer1[15];
unsigned char buffer2[15];


void Relay_Init(void)
{
		GPIO_InitTypeDef GPIO_InitStructure;
		
		RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);

		GPIO_InitStructure.GPIO_Pin =  GPIO_Pin_8;
		GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
		GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
		GPIO_Init(GPIOA, &GPIO_InitStructure);
		RELAY_OFF;
}





int main(void)
{   
		LCD_init();
		KEY_Init();
		TIM_Config();
		Relay_Init(); 
		NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); 
		while(1)
		{

			sprintf((char*)buffer1, "Motor1_Pwm:%d %%  ", Motor1_Pwm/10);
			LCD_write_string(0, 0, (char*)buffer1);
			
			sprintf((char*)buffer2, "Motor2_Pwm:%d %%  ", Motor2_Pwm/10);
			LCD_write_string(0, 1, (char*)buffer2);
			
			
			key_value = KEY_Scan(0);
			if(key_value == 1)      {if(Motor1_Pwm <= 900) Motor1_Pwm+=100;}
			else if(key_value == 2) {if(Motor1_Pwm >= 100) Motor1_Pwm-=100;}
			else if(key_value == 3) {if(Motor2_Pwm <= 900) Motor2_Pwm+=100;}
			else if(key_value == 4) {if(Motor2_Pwm >= 100) Motor2_Pwm-=100;}
			else if(key_value == 5) 
			{
				if(Flag == 0)
				{
					Flag = 1;
					RELAY_ON;
				}
				else if(Flag == 1)
				{
					Flag = 0;
					RELAY_OFF;
				}
			}
		}
}

三、视频演示

哔哩哔哩视频演示链接跳转,请直接点击!

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
基于stm32f103的直流电机调速控制系统主要包括STM32F103单片机、直流电机、电机驱动模块、速度传感器和控制算法等。 首先,STM32F103单片机作为系统的核心处理器,负责控制整个电机调速过程。它具有高性能的处理能力和多种接口,用于连接其他外设。通过编程实现脉冲宽度调制(PWM)信号的产生,控制电机的电源开启时间和关闭时间,从而达到调速的目的。 其次,直流电机是被控制的对象,通过控制电机的电源开启和关闭时间来改变电机的转速。直流电机可以通过旋钮、键盘等来控制,将控制信号传递给STM32F103单片机。 另外,电机驱动模块是用来将STM32F103单片机产生的PWM信号转换成适合电机驱动的电压和电流的模块。它具有过流、过热等保护功能,保证电机的正常工作和安全性。 还有,速度传感器用于检测电机的转速,并将检测到的信号传递给STM32F103单片机单片机根据接收到的转速信号与设定的目标速度进行比较,通过控制PWM信号的占空比来调整电机的转速。 最后,控制算法是基于电机的数学模型和控制理论,通过算法计算出需要的电机转速,并将计算结果传递给STM32F103单片机单片机根据算法的计算结果来调整电机的转速,实现精确的调速控制。 综上所述,基于stm32f103的直流电机调速控制系统通过STM32F103单片机、直流电机、电机驱动模块、速度传感器和控制算法等组成,实现了对直流电机的精确调速控制。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值