maxon motor 471486电机

关于maxon motor 471486电机的探索记录

最近工作遇到了这款maxon motor 471486的电机,记录一下折腾他的成果

电机结构

maxon motor 471486这款电机分为三个部分,分别是齿轮箱,电机与编码器。

要写控制代码主要看种传感器【MR 编码器, M 型, 32 线, 2 通道】

驱动方式与参数

找到该编码器的文档(只有一个目录页……不知道本体在哪……)查看接线引脚

由上图所示,VCC与接地是编码器的电源,VCC范围在2.7~5.5V。电机+与电机(下文称为电机-)引脚为电机的控制引脚,电压只要看电机的文档,这里我给的是5V左右。电机的方向靠电机+与电机-来决定,两边相同电压时就停止,当电压差为正时则正传,负电压是为反转。

 正转反转停止停止
电机+1011
电机-0111

通道A、通道B则为反馈引脚,当电机转动的时候通道AB会产生高低电平变化

所以,使用外部中断即可判断电机转了多少度。当电机停止后,通道A和通道B会保持一种状态,这个需要自己上示波器测量看是低电平还是高电平。

以下附上以上点击的相关代码,希望能帮助到大家

sbit motor_1=P2^6;//电机控制脚1
sbit motor_2=P2^7;//电机控制脚2
sbit motor_feedback=P3^2;//电机脉冲反馈【外部中断,获取】
sbit motor_direction=P3^3;//电机前进后退反馈【1为前进,0为后退】
uint motor_pulse_count=0;//脉冲计数变量
uchar motor_direction_sign=0;//前进后退标志位
/*****************************************************************
函数名	:Motor_Action
函数输入:
返回		:无
函数作用:
		电机设置函数,控制电机前进、后退与速度
*******************************************************************/
void Motor_Action(){
	switch(motor_direction_sign){
		case 1:{//动作-前进
			P_SW2 = 0x80;//设置初值
			
			PWM6T1= 0;//在计数值为XX地方输出高电平
			PWM6CR= 0x80;//使能PWM0输出
			PWM7T1= motor_speed*100+700;//在计数值为XX地方输出高电平
			PWM7CR= 0x80;//使能PWM0输出
			
			P_SW2 = 0; 
		}break;
		case 2:{//动作-后退
			P_SW2 = 0x80;//设置初值
			
			PWM6T1= motor_speed*100+700;//在计数值为XX地方输出高电平
			PWM6CR= 0x80;//使能PWM0输出
			PWM7T1= 0;//在计数值为XX地方输出高电平
			PWM7CR= 0x80;//使能PWM0输出
			
			P_SW2 = 0;
		}break;
		default :{//动作停止
			P_SW2 = 0x80;//设置初值
			
			PWM6T1= 200;//在计数值为XX地方输出高电平
			PWM6CR= 0x80;//使能PWM0输出
			PWM7T1= 200;//在计数值为XX地方输出高电平
			PWM7CR= 0x80;//使能PWM0输出
			
			P_SW2 = 0; 
		}
	}
}
/*****************************************************************
函数名	:Motor_One_Action
函数输入:无
返回		:无
函数作用:
	电机推针一次【定时器中运行】
*******************************************************************/
void Motor_One_Action(){
	unsigned int jjj;//缓存步进数
	if(execute_one_motor_operation==1){
		motor_direction_sign=1;//开启电机前进
		if(motor_pulse_count>5000){//当标志位值1后
			
			motor_direction_sign=0;//停止电机前进
			dms++;if(dms>2000){ttt=1;dms=0;}//计时语句
			if(ttt==1){//当ttt暂停标志为置一后,结束一推流程
				jjj=motor_pulse_count;//将该次的步进数存入jjj
				motor_pulse_count=0;//脉冲计数清零,准备下一次计数
				Used_pricknum++;Used_pricknum_sign=1;//更新已打次数
				execute_one_motor_operation=0;//结束标志
				ttt=0;
			}
		}
	}
	if(motor_direction==1){
		//前进了几步
		motor_scope=motor_scope+jjj;
	}else{
		//后退了几步
		motor_scope=motor_scope-jjj;
	}

}

以上即是基于STC8A4K16S2A12主控对maxon motor 471486电机的控制代码。

如有错误的地方,烦请纠正,谢谢!

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值