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

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

  [复制链接]
  • 打卡等级:初来乍到
  • 打卡总天数:6
  • 最近打卡:2025-09-25 01:13:28
已绑定手机

4

主题

10

回帖

28

积分

新手上路

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

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:243
  • 最近打卡:2025-11-01 11:26:57

0

主题

143

回帖

656

积分

高级会员

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

点评

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

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:216
  • 最近打卡:2025-10-31 11:24:48

83

主题

6818

回帖

1万

积分

超级版主

积分
14626
发表于 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
  • 打卡总天数:243
  • 最近打卡:2025-11-01 11:26:57

0

主题

143

回帖

656

积分

高级会员

积分
656
发表于 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
回复

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:216
  • 最近打卡:2025-10-31 11:24:48

83

主题

6818

回帖

1万

积分

超级版主

积分
14626
发表于 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
  • 打卡总天数:243
  • 最近打卡:2025-11-01 11:26:57

0

主题

143

回帖

656

积分

高级会员

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

点评

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

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:243
  • 最近打卡:2025-11-01 11:26:57

0

主题

143

回帖

656

积分

高级会员

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

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:216
  • 最近打卡:2025-10-31 11:24:48

83

主题

6818

回帖

1万

积分

超级版主

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

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

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:243
  • 最近打卡:2025-11-01 11:26:57

0

主题

143

回帖

656

积分

高级会员

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

点评

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

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:243
  • 最近打卡:2025-11-01 11:26:57

0

主题

143

回帖

656

积分

高级会员

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

点评

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

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-11-2 13:50 , Processed in 0.134655 second(s), 100 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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