DRV8818步进电机一种应用场景及实现思路

一、应用场景

        步进电机带动齿轮旋转,齿轮过孔和托盘孔重合之后,停止旋转,保证每次齿轮和托盘的过孔重合之后再停止工作。适用于齿轮下药装置。

二、分析

        1.步进电机有3个控制脚:PUL脉冲、电机正反转、电源开关

        2.电机旋转起始和停止位置,考虑失步情况

        3.加一个霍尔开关传感器(DH627)用于校准起始位置和控制停止位置,解决失步问题

三、实现思路

        齿轮上盖加开槽一个霍尔开关,齿轮开孔加一个磁铁,当霍尔开关和磁铁距离1cm以内时,输入脚(DH627_OnOff)为高电平,反之,则低电平。

        1.上电校准

        每次上电检测霍尔开关输入脚是否为高电平,如果为低电平则开启电机旋转(正转、反转根据需求),直到检测到DH627_OnOff为高电平,则校准完成,即为起始位置。

        2.开始工作

        启动电机:开启电源(高电平)--输入方向(0或1)--PUL脉冲(低电平),开启定时器,加一个电机开始标志位(MONTOR_START_FLAG),这时候先让电机脱离霍尔感应区域再判断DH627_OnOff是否为高电平,高则停止旋转,这里是一个小逻辑,用来解决电机工作之后判断停止位置。代码如下:(这一段代码放在定时器中)

		if(Start_Motor_Calibration)								  //开机回归原点检测
		{
			if(DH627_OnOff)
			{			
				GPIO_ResetBits(GPIO_MOTOR_PUL,GPIO_Pin_MOTOR_PUL);//PUL脉冲
				GPIO_ResetBits(GPIO_MOTOR_DIR,GPIO_Pin_MOTOR_DIR);//方向
				MOTOR_POWER_OFF;                                  //关闭步进电机电源   															  
				TIM_ITConfig(TIM3,TIM_IT_Update,DISABLE);         //关闭定时器3中断	
				Start_Motor_Calibration=0;
			}
		}
		if(MONTOR_START_FLAG)                                     //电机开启
		{
			if(!DH627_OnOff)
			{
				MONTOR_START_FLAG=0;
				MONTOR_LEAVE_FLAG=1;
			}
		}
		if(MONTOR_LEAVE_FLAG)
		{
			if(DH627_OnOff)
			{
				MONTOR_LEAVE_FLAG=0;
				GPIO_ResetBits(GPIO_MOTOR_PUL,GPIO_Pin_MOTOR_PUL);
				GPIO_ResetBits(GPIO_MOTOR_DIR,GPIO_Pin_MOTOR_DIR);
				MOTOR_POWER_OFF;                                 //关闭步进电机电源															
			}
		}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值