dd418890434
发表于 2025-5-5 22:58:01
https://www.stcaimcu.com/forum.php?mod=attachment&aid=OTczOTF8M2U0MmQ3YjR8MTc0NjQ1NzAwMnwzMjIxMXwxNzU0MA%3D%3D¬humb=yes
haiming8685
发表于 2025-5-10 16:38:01
梁工您好!我有一台电机电机转子极对数为4对,没有霍尔传感器,但是带了个磁编码器,磁编码器输出分辨率为10位,也就是角度分辨率为0.35°,这个电机能否用BLDC六步换相来驱动,怎样才能把编码器的信号融入换相中。
梁工
发表于 2025-5-10 18:41:26
haiming8685 发表于 2025-5-10 16:38
梁工您好!我有一台电机电机转子极对数为4对,没有霍尔传感器,但是带了个磁编码器,磁编码器输出分辨率为1 ...
带磁编码器的更合适使用FOC驱动。实在要使用方波驱动,则要先测试出(或者电机厂家提供)电角度与编码器角度的对应关系,就可以正确的换相了。
使用FOC驱动可以参考下面的帖子:
FOC@Ai8051U横空出世,可控制7万5千转的电机!系统成本6元
https://www.stcaimcu.com/thread-17266-1-1.html
(出处: 国芯技术交流网站)
haiming8685
发表于 2025-6-8 20:48:26
梁工您好!请问PID中设置的位置值是根据什么来的
SamplePeriod = 8; // PID采样周期, 取值1~65535, 单位ms.
SetPosition= 12.0; // 设置的位置(这个12.0的值是依据什么设定的,设定大小时会影响到哪些方面)
position = 0; // 当前位置
LastPosition = 0; // 前一个位置
梁工
发表于 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圈就停下来了,再启动仍然如此
页:
1
2
3
4
5
6
7
8
9
10
[11]
12
13