直流电机角度位置控制详解(附源码)

电机角度位置控制,指的是使电机转动特定所需角度。

常用于驱动齿轮组,涡轮蜗杆,丝杆滑块等执行机构。电机需带有编码盘反馈。

 

电机角度控制简单分为两层,内层电机速度环,外层电机角度环。

首先获取编码盘脉冲值,进行处理,得到实时反馈转速,然后通过PID控制器,形成速度内环。

https://blog.csdn.net/qq_40696002/article/details/103759101

对编码盘脉冲值处理,电机会获得绝对角度反馈。

void Motor_Angle_Cal(unsigned short int motor_num,float T)
{
	float  res1, res2;
	static float pos[MOTOR_MAX], pos_old[MOTOR_MAX];
	
	pos[motor_num] =MOTOR_FEEDBACK[motor_num].real_angle;
	motor.ANGLE[motor_num].eer=pos[motor_num] - pos_old[motor_num];
	
	if(motor.ANGLE[motor_num].eer>0) 	
	{
		res1=motor.ANGLE[motor_num].eer-T;//反转,自减周期T(我取360)
		res2=motor.ANGLE[motor_num].eer;
	}
	else
	{
		res1=motor.ANGLE[motor_num].eer+T;//正转,自加周期T
		res2=motor.ANGLE[motor_num].eer;
	}
	
	if(ABS(res1)<ABS(res2)) //不管正反转,肯定是转的角度小的那个是真的
	{
		motor.ANGLE[motor_num].eer_eer = res1;
	}
	else
	{
		motor.ANGLE[motor_num].eer_eer = res2;
	}
	
	motor.ANGLE[motor_num].POS_ABS += motor.ANGLE[motor_num].eer_eer;
	pos_old[motor_num]  = pos[motor_num];
}

用手顺时针拨动三圈,电机会获得反馈+1080度,然后通过PID控制器,至此,角度环形成。

过程分析,当前绝对角度反馈为 motor_angle[moto_num].pos_abs,目标位置角度motor_angle[moto_num].pos_goal输入角度环pid计算。
角度环pid的输出pid.motor_pos[moto_num].out做为速度环的输入,

与速度反馈 abs_err[moto_num]做差,通过速度环pid输出给电机pwm占空比或can信号,驱动电机。

经过微小震荡(超过位置会反转),最终电机稳定停止在目标位置,此时系统稳定。

宏观现象来看,电机连接的齿轮转动给定圈数,达成控制目标。

void Motor_Auto_Run(void)
{
	unsigned short int moto_num;
        float abs_err[MOTOR_MAX];
	static float abs_err_old[MOTOR_MAX];
	for (moto_num=0;moto_num<=1;moto_num++)
	{
	    Motor_Angle_Cal(moto_num,360);	
	    PID_Cal_Limt(&pid.motor_pos[moto_num],  motor_angle[moto_num].pos_abs,motor_angle[moto_num].pos_goal);
		
	    abs_err[moto_num] = motor_angle[moto_num].pos_abs - abs_err_old[moto_num];
		
	    PID_Cal_Limt(&pid.motor_speed[moto_num],  abs_err[moto_num],pid.motor_pos[moto_num].out);
		
	    abs_err_old[moto_num] = motor_angle[moto_num].pos_abs;
	}
		
        PWM_OUT_Control(pid.motor_speed[MOTOR1].out,pid.motor_speed[MOTOR2].out);

}

先随便写点,有空接着弄,知乎是同人。

  • 27
    点赞
  • 256
    收藏
    觉得还不错? 一键收藏
  • 31
    评论
BLDC直流无刷电机是一种采用电子换向器而不是传统电刷的电机。相比于有刷电机,它具有以下优点:没有电刷火花和磨损、重量轻、转速快等。然而,BLDC直流无刷电机的转矩较小,功率不能太大。一般而言,100KW以上的应用仍然使用有刷电机,因为BLDC直流无刷电机的价格相对较高,开发也更加复杂。\[1\] BLDC直流无刷电机的基本转动原理可以参考《基于霍尔传感器的无刷直流电机控制原理》、《基于反电动势过零检测法的无刷直流电机控制原理》、《以GD32F30x为例定时器相关功能详解》与《无刷直流电机位置传感器三段式启动法详细介绍及代码分享》等资料。这些资料详细介绍了BLDC直流无刷电机的控制原理和相关技术。\[2\] 总的来说,电机开发中常见的两种类型是BLDC直流无刷电机和永磁同步电机(PMSM)。BLDC直流无刷电机的反电动势为梯形波,而PMSM的反电动势为正弦波。这两种类型的电机需要采用不同的控制策略。\[3\] #### 引用[.reference_title] - *1* *3* [直流无刷电机详解](https://blog.csdn.net/chengcao123/article/details/122192725)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [【零基础玩转BLDC系列】无刷直流电机闭环控制与软件架构](https://blog.csdn.net/qq_30095921/article/details/126229728)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 31
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值