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

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

  [复制链接]
  • 打卡等级:常住居民II
  • 打卡总天数:93
  • 最近打卡:2025-06-14 13:12:15

74

主题

6088

回帖

1万

积分

超级版主

积分
12715
发表于 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转/秒
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:140
  • 最近打卡:2025-06-15 10:42:19

0

主题

112

回帖

830

积分

高级会员

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

点评

那我还是抽时间改一个吧。  详情 回复 发表于 7 天前
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:140
  • 最近打卡:2025-06-15 10:42:19

0

主题

112

回帖

830

积分

高级会员

积分
830
发表于 7 天前 | 显示全部楼层

//                                        if(pidTerm < 0)                j = 0;                 // 输出驱动PWM不能是负数
//                                        else                                j = (u16)pidTerm;
//                                        if(j > 1020)            j = 1020;                 // PWM最大值限制
//                                        PWM_Value = j;                                 //输出PWM控制       
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民II
  • 打卡总天数:93
  • 最近打卡:2025-06-14 13:12:15

74

主题

6088

回帖

1万

积分

超级版主

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

那我还是抽时间改一个吧。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:140
  • 最近打卡:2025-06-15 10:42:19

0

主题

112

回帖

830

积分

高级会员

积分
830
发表于 7 天前 | 显示全部楼层
谢谢梁工!期待修改后的程序。

点评

主楼程序已更新,请下载测试。  详情 回复 发表于 7 天前
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:140
  • 最近打卡:2025-06-15 10:42:19

0

主题

112

回帖

830

积分

高级会员

积分
830
发表于 7 天前 | 显示全部楼层
PID加入后,电机启动转1圈就停下来了,再启动仍然如此

点评

主楼程序已更新,请下载测试。  详情 回复 发表于 7 天前
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民II
  • 打卡总天数:93
  • 最近打卡:2025-06-14 13:12:15

74

主题

6088

回帖

1万

积分

超级版主

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

主楼程序已更新,请下载测试。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民II
  • 打卡总天数:93
  • 最近打卡:2025-06-14 13:12:15

74

主题

6088

回帖

1万

积分

超级版主

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

主楼程序已更新,请下载测试。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:140
  • 最近打卡:2025-06-15 10:42:19

0

主题

112

回帖

830

积分

高级会员

积分
830
发表于 5 天前 | 显示全部楼层
梁工您好!不知道怎么回事,这个程序经过调测,PID积分限幅调整在10000时,不管用电位器调整速度还是串口调整速度,都是电机一旦启动,就会上升到最高转速,中间无论怎么调速度都不受控制,只有调到停止才行,若把积分限幅设为1000时,电位器调速速度跟踪效果都不错,只是最高转速偏低,但是用串口发指令调整电机速度时存在的问题:在发送转速低时(比如:25可以启动,若发送转速50时就无法启动),电机在低速下启动后逐渐升高至50,没升高5转需要等待几秒时间,若是快速提升速度,电机就会停止在抖动状态,转不起来。若不加人PID时,电位器调速及串口发指令调速都正常,若不加人PID就是不能形成速度稳定,请梁工再给于指点。谢谢!

点评

你将曲线贴出看看。限幅只是限制幅度,避免溢出,如果失控,说明你的计算还是有问题,你是否修改了算法、PID参数?  详情 回复 发表于 5 天前
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民II
  • 打卡总天数:93
  • 最近打卡:2025-06-14 13:12:15

74

主题

6088

回帖

1万

积分

超级版主

积分
12715
发表于 5 天前 | 显示全部楼层
haimin*** 发表于 2025-6-11 09:15
梁工您好!不知道怎么回事,这个程序经过调测,PID积分限幅调整在10000时,不管用电位器调整速度还是串口调 ...

你将曲线贴出看看。限幅只是限制幅度,避免溢出,如果失控,说明你的计算还是有问题,你是否修改了算法、PID参数?
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-6-16 04:27 , Processed in 0.161859 second(s), 100 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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