梁工
发表于 2025-6-8 23:59:41
haiming8685 发表于 2025-6-8 20:48
梁工您好!请问PID中设置的位置值是根据什么来的
SamplePeriod = 8; // PID采样周期, 取值1~65535 ...
SetPosition= 12.0;//设置的位置值,这里就是要设置的目标转速值,初值给个12.0,你可以根据你的要求设置初值,在本例子设置的初值没有使用。
运行时,目标转速可以用电位器调速:
SetPosition = (float)VR /10; //VR给定转速11位, 0~2047代表转速0.0~204.7转/秒
也可以用串口设置:
COM_VR = tmp*10; //使用串口设置的目标速度, 设计者值为0~200,对应转速0.0~200.0转/秒
haiming8685
发表于 2025-6-9 07:58:11
梁工您好!我将您的V2版启动加入程序后,将这部分屏蔽掉用电位器调整或串口发送指令电机都能启动运行,要是打开这部分电机就不能启动运行,是怎么回事?这种情况这种情况下怎么修改相关参数。
haiming8685
发表于 2025-6-9 07:58:21
// if(pidTerm < 0) j = 0; // 输出驱动PWM不能是负数
// else j = (u16)pidTerm;
// if(j > 1020) j = 1020; // PWM最大值限制
// PWM_Value = j; //输出PWM控制
梁工
发表于 2025-6-9 10:01:16
haiming8685 发表于 2025-6-9 07:58
梁工您好!我将您的V2版启动加入程序后,将这部分屏蔽掉用电位器调整或串口发送指令电机都能启动运行,要是 ...
那我还是抽时间改一个吧。
haiming8685
发表于 2025-6-9 11:52:42
谢谢梁工!期待修改后的程序。
haiming8685
发表于 2025-6-9 12:58:22
PID加入后,电机启动转1圈就停下来了,再启动仍然如此
梁工
发表于 2025-6-9 14:42:14
haiming8685 发表于 2025-6-9 11:52
谢谢梁工!期待修改后的程序。
主楼程序已更新,请下载测试。
梁工
发表于 2025-6-9 14:42:29
haiming8685 发表于 2025-6-9 12:58
PID加入后,电机启动转1圈就停下来了,再启动仍然如此
主楼程序已更新,请下载测试。
haiming8685
发表于 2025-6-11 09:15:40
梁工您好!不知道怎么回事,这个程序经过调测,PID积分限幅调整在10000时,不管用电位器调整速度还是串口调整速度,都是电机一旦启动,就会上升到最高转速,中间无论怎么调速度都不受控制,只有调到停止才行,若把积分限幅设为1000时,电位器调速速度跟踪效果都不错,只是最高转速偏低,但是用串口发指令调整电机速度时存在的问题:在发送转速低时(比如:25可以启动,若发送转速50时就无法启动),电机在低速下启动后逐渐升高至50,没升高5转需要等待几秒时间,若是快速提升速度,电机就会停止在抖动状态,转不起来。若不加人PID时,电位器调速及串口发指令调速都正常,若不加人PID就是不能形成速度稳定,请梁工再给于指点。谢谢!
梁工
发表于 2025-6-11 09:51:08
haiming8685 发表于 2025-6-11 09:15
梁工您好!不知道怎么回事,这个程序经过调测,PID积分限幅调整在10000时,不管用电位器调整速度还是串口调 ...
你将曲线贴出看看。限幅只是限制幅度,避免溢出,如果失控,说明你的计算还是有问题,你是否修改了算法、PID参数?
页:
2
3
4
5
6
7
8
9
10
11
[12]
13
14