【Proteus仿真】【32单片机】步进电机控制系统

 目录

一、主要功能

二、使用步骤

三、硬件资源

四、软件设计

五、实验现象

一、主要功能

1、LCD显示当前挡位、方向等;
2、按键控制步进电机挡位、方向等。
3、步进电机的机械结构

        28BYJ-48(减速步进电机):

                步距角:5.625° → 经1:64减速箱后 0.087°/步

                4相5线单极电机(ULN2003驱动)

        NEMA17(工业级电机):

                步距角:1.8°(200步/转)

                双极电机(需A4988/TB6600驱动)

        当定子绕组按A→B→C→D→A顺序通电时,转子磁极被吸引旋转。STM32通过相应脉冲信号(STEP)相应控制步数,相应方向信号(DIR)相应控制相位顺序

二、使用步骤

系统运行后,LCD1602显示当前挡位、方向;
通过按键控制步进电机转动速度、方向。

三、硬件资源

1、32单片机核心模块
2、按键模块
3、ULN2003A驱动模块
4、LCD1602显示模块

四、软件设计

#include "delay.h"
#include "sys.h"
#include "1602.h"
#include "key.h"
#include "step.h"
#include "exti.h"

u8 Key_num=0;//按键值
bool turn_flag=true;//转向
u16   Shift_num=0;//挡位
u16   Star_flag=0;//启动标志位
void key_san(void);//按键判断函数

void Delay(int num)
{
	while(num--) ;
}
void display_data(void)///显示
{	
	LcdWriteCom(0x0C);	  		                            //取消光标闪烁	
	LcdWriteCom(0x80+6); //第一行
  LcdWriteData((Shift_num+1)+0x30);
	LcdWriteCom(0x80+15); //第一行
	if(turn_flag==true)	
		LcdWriteData('Z');
	else
		LcdWriteData('F');
	
	LcdWriteCom(0x80+0x40+7); //第二行
	if(Star_flag==0)	
		LcdWritestr("stop");
	else
		LcdWritestr("star");
}

int main()
{	
	delay_init();	    	 //延时函数初始化
	LCD1602_Init();      //lcd函数初始化
	KEY_Init();        //按键函数初始化
	Step_Motor_GPIO_Init();
	NVIC_Configuration(); 	 //设置NVIC中断分组2:2位抢占优先级,2位响应优先级 
	EXTIX_Init();//外部中断初始化 
	while(1) 
	{	
		if(Star_flag==0)
			MOTOR_STOP();//停止
		else
			motorNcircle(Shift_num,turn_flag);//n为步进电机转动的挡位,position为正转或者反转		
	}	  
}



五、实验现象

演示视频:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值