找回密码
 立即注册
楼主: 梁工

三相无刷电机驱动-32G系列-无HALL-PID控制-OLED显示-串口绘图 启动改进版本

  [复制链接]
  • 打卡等级:初来乍到
  • 打卡总天数:4
  • 最近打卡:2025-05-06 01:44:39
已绑定手机

3

主题

9

回帖

79

积分

注册会员

积分
79
发表于 2025-5-5 22:58:01 | 显示全部楼层
回复

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:208
  • 最近打卡:2025-09-16 15:18:31

0

主题

139

回帖

1198

积分

金牌会员

积分
1198
发表于 2025-5-10 16:38:01 | 显示全部楼层
梁工您好!我有一台电机电机转子极对数为4对,没有霍尔传感器,但是带了个磁编码器,磁编码器输出分辨率为10位,也就是角度分辨率为0.35°,这个电机能否用BLDC六步换相来驱动,怎样才能把编码器的信号融入换相中。

点评

带磁编码器的更合适使用FOC驱动。实在要使用方波驱动,则要先测试出(或者电机厂家提供)电角度与编码器角度的对应关系,就可以正确的换相了。 使用FOC驱动可以参考下面的帖子: FOC@Ai8051U横空出世,可控制7万5千  详情 回复 发表于 2025-5-10 18:41
回复

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:181
  • 最近打卡:2025-09-15 11:00:40

76

主题

6717

回帖

1万

积分

超级版主

积分
14127
发表于 2025-5-10 18:41:26 | 显示全部楼层
haimin*** 发表于 2025-5-10 16:38
梁工您好!我有一台电机电机转子极对数为4对,没有霍尔传感器,但是带了个磁编码器,磁编码器输出分辨率为1 ...

带磁编码器的更合适使用FOC驱动。实在要使用方波驱动,则要先测试出(或者电机厂家提供)电角度与编码器角度的对应关系,就可以正确的换相了。

使用FOC驱动可以参考下面的帖子:
FOC@Ai8051U横空出世,可控制7万5千转的电机!系统成本6元
https://www.stcaimcu.com/thread-17266-1-1.html
(出处: 国芯技术交流网站)
回复

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:208
  • 最近打卡:2025-09-16 15:18:31

0

主题

139

回帖

1198

积分

金牌会员

积分
1198
发表于 2025-6-8 20:48:26 | 显示全部楼层
梁工您好!请问PID中设置的位置值是根据什么来的
        SamplePeriod = 8;                // PID采样周期, 取值1~65535, 单位ms.
        SetPosition  = 12.0;        // 设置的位置(这个12.0的值是依据什么设定的,设定大小时会影响到哪些方面)
        position     = 0;                // 当前位置
        LastPosition = 0;        // 前一个位置

点评

SetPosition = 12.0; //设置的位置值,这里就是要设置的目标转速值,初值给个12.0,你可以根据你的要求设置初值,在本例子设置的初值没有使用。 运行时,目标转速可以用电位器调速: SetPosition = (float)VR /10  详情 回复 发表于 2025-6-8 23:59
回复

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:181
  • 最近打卡:2025-09-15 11:00:40

76

主题

6717

回帖

1万

积分

超级版主

积分
14127
发表于 2025-6-8 23:59:41 | 显示全部楼层
haimin*** 发表于 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[1]*10; //使用串口设置的目标速度, 设计者值为0~200,对应转速0.0~200.0转/秒
回复

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:208
  • 最近打卡:2025-09-16 15:18:31

0

主题

139

回帖

1198

积分

金牌会员

积分
1198
发表于 2025-6-9 07:58:11 | 显示全部楼层
梁工您好!我将您的V2版启动加入程序后,将这部分屏蔽掉用电位器调整或串口发送指令电机都能启动运行,要是打开这部分电机就不能启动运行,是怎么回事?这种情况这种情况下怎么修改相关参数。

点评

那我还是抽时间改一个吧。  详情 回复 发表于 2025-6-9 10:01
回复

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:208
  • 最近打卡:2025-09-16 15:18:31

0

主题

139

回帖

1198

积分

金牌会员

积分
1198
发表于 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控制       
回复

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:181
  • 最近打卡:2025-09-15 11:00:40

76

主题

6717

回帖

1万

积分

超级版主

积分
14127
发表于 2025-6-9 10:01:16 | 显示全部楼层
haimin*** 发表于 2025-6-9 07:58
梁工您好!我将您的V2版启动加入程序后,将这部分屏蔽掉用电位器调整或串口发送指令电机都能启动运行,要是 ...

那我还是抽时间改一个吧。
回复

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:208
  • 最近打卡:2025-09-16 15:18:31

0

主题

139

回帖

1198

积分

金牌会员

积分
1198
发表于 2025-6-9 11:52:42 | 显示全部楼层
谢谢梁工!期待修改后的程序。

点评

主楼程序已更新,请下载测试。  详情 回复 发表于 2025-6-9 14:42
回复

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:208
  • 最近打卡:2025-09-16 15:18:31

0

主题

139

回帖

1198

积分

金牌会员

积分
1198
发表于 2025-6-9 12:58:22 | 显示全部楼层
PID加入后,电机启动转1圈就停下来了,再启动仍然如此

点评

主楼程序已更新,请下载测试。  详情 回复 发表于 2025-6-9 14:42
回复

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-9-16 19:05 , Processed in 0.188900 second(s), 95 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表