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

高压310V、1500瓦水泵电机驱动,请在这里讨论。

[复制链接]
  • 打卡等级:初来乍到
  • 打卡总天数:4
  • 最近打卡:2026-04-02 20:43:03
已绑定手机

0

主题

12

回帖

32

积分

新手上路

积分
32
发表于 2026-3-26 10:38:35 | 显示全部楼层
梁*** 发表于 2026-3-25 21:04
有正式的电路图后发一下,我好按你的电路修改程序。

已经修改好了,画好PCB 了,可以看看。

220无继电器1 (7).pdf

70.95 KB, 下载次数: 13

电路板 (1) (1).PcbDoc

1.31 MB, 下载次数: 6

回复

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:4
  • 最近打卡:2026-04-02 20:43:03
已绑定手机

0

主题

12

回帖

32

积分

新手上路

积分
32
发表于 2026-3-26 10:53:28 | 显示全部楼层
梁*** 发表于 2026-3-25 21:04
有正式的电路图后发一下,我好按你的电路修改程序。

您看看这个图

220无继电器1 (7).pdf

70.95 KB, 下载次数: 13

电路板 (1) (1).zip

620.33 KB, 下载次数: 5

点评

不加PFC电流大得吓人,另外电机的动力线会有很强的EMI干扰,如果布局不好估计加上扬程后反向电动势就识别不到了,还有一个发热问题。建议你FOC+IPM方案   发表于 2026-3-27 16:43
可以了,我改一个程序版本给你。  详情 回复 发表于 2026-3-26 14:48
回复

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:341
  • 最近打卡:2026-05-10 11:40:36

85

主题

7368

回帖

1万

积分

超级版主

积分
15917
发表于 2026-3-26 14:48:23 | 显示全部楼层

可以了,我改一个程序版本给你。
回复

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:4
  • 最近打卡:2026-04-02 20:43:03
已绑定手机

0

主题

12

回帖

32

积分

新手上路

积分
32
发表于 2026-3-26 19:20:04 | 显示全部楼层
梁*** 发表于 2026-3-26 14:48
可以了,我改一个程序版本给你。

好的板子已经发出去做了
回复

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:4
  • 最近打卡:2026-04-02 20:43:03
已绑定手机

0

主题

12

回帖

32

积分

新手上路

积分
32
发表于 2026-3-27 16:17:25 | 显示全部楼层
梁*** 发表于 2026-3-26 14:48
可以了,我改一个程序版本给你。

图已经发出去做了,等您的软件来进行测试

点评

/************* 功能说明 ************** 本程序试验使用STC8H1K28-LQFP32来驱动无传感器无刷三相直流电机. 关于无感三相无刷直流电机的原理, 用户自行学习了解, 本例不予说明. PWM占空比最大值为1000。 用户可以  详情 回复 发表于 2026-4-1 11:25
回复

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:341
  • 最近打卡:2026-05-10 11:40:36

85

主题

7368

回帖

1万

积分

超级版主

积分
15917
发表于 2026-4-1 11:25:23 | 显示全部楼层
hbut*** 发表于 2026-3-27 16:17
图已经发出去做了,等您的软件来进行测试

/*************        功能说明        **************
本程序试验使用STC8H1K28-LQFP32来驱动无传感器无刷三相直流电机.
关于无感三相无刷直流电机的原理, 用户自行学习了解, 本例不予说明.

PWM占空比最大值为1000。
用户可以在初始化程序里给定占空比用于上电就启动(比如水泵)。
本例支持串口发送字符0~5来调速,0为停止,1~5档对应PWM为200、400、600、800、1000,用户可以改为自己想要的调速方式。
启动时每走一步都返回一个字符,方便调试,程序调试好之后,可以将这些程序注释掉。
返回A:启动时未检测到电机转动,开始冷启动。
返回B:开始检测A相下降沿,用于顺风、逆风转动检测。
返回C:开始检测B相上升沿,用于顺风、逆风转动检测。
返回D:开始检测A相下降沿,用于顺风、逆风转动检测。
返回E:检测到逆风转动,开始刹车。
返回F:检测到顺风转动。
返回G:检测到顺风转动,但转速过低,开始刹车。
返回H:刹车时仍然检测到转动。

返回1:开始预定位。
返回2:预定位结束,开始SVPWM强拖启动。
返回3:SVPWM强拖启动结束,进入转动检测 或 直接进入闭环。

STC8H1K28-无感-串口调速-V5A1-SVPWM启动.c    SVPWM启动,启动前先检测是否在转动,如果是顺风转动超过一定速度则直接切换到闭环驱动,否则转刹车。
                                                       如果是逆风转动则刹车。刹车后或检测到停止则开始初始定位、SVPWM强拖,再转为检测转动或直接进入闭环。
                                                       对于惯性较大的风扇类,建议启动后进入转动检测,这样会非常可靠。

******************************************/

#define FOSC                24000000UL        //定义主时钟

/*************        电机参数设置宏说明        ************* */

#define        DIRECT_RUN       1                // 0:强拖启动结束后,进入转动检测以确定电机已启动成功。1:强拖启动结束后直接进入闭环驱动。对于惯性较大的风扇类,建议启动后进入转动检测,这样会非常可靠。
#define CMP_DIFF_VOL           2                // 比较器迟滞输入选择: 0: 0mV,  1: 10mV, 2: 20mV, 3: 30mV, 迟滞电压越低 低速性能越好, 越高稳定性越好
#define CONTEMPRATY           1                 // 1:使用互补PWM, 0:使用单端PWM。


#define        MPP                                  4            // 电机磁极对,  Magnetic Pole Pair,机械转速 = 电子转速 / 磁极对.
#define        ROLL_MinSpeed                60           // 启动时检测到低于这个转速则认为电机停止。 要求ROLL_MinSpeed*MPP >=22 以免计算溢出。
#define        PRE_STATE_TIME1            100         // 预定位时间1,ms, 最大值为2730ms。转动惯量越大,额定转速越低,第一个预定位时间就要越长。
#define        PRE_STATE_TIME2            70           // 预定位时间2,ms, 最大值为2730ms。第二个预定位时间要比第一个段,相当于预启动,转过30度电角度。
#define        PRE_STATE_TIME3            50           // 预定位时间3,ms, 最大值为2730ms。第三个预定位时间要比第一个段,相当于预启动,转过30度电角度。
#define        START_PWM_DUTY           200         // 启动时的占空比。不同电机、不同电压需要的启动占空比不同,占空比小了,启动不起来,大了,启动电流较大。
#define        BeginSpeed                      60           // 启动起始转速,转/分。启动时从这个转速开始启动,根据电机特性而定,转动惯量越大,额定转速越低,起始转速就越低。
#define        FinishSpeed                      480         // 启动完成转速,转/分。启动到这个转速则完成启动,根据电机特性而定,转动惯量越大,额定转速越低,完成转速就越低。
#define        D_StartTime                     1000       // 加速时间,单位ms,最大5461ms,一般500~3000。根据电机特性而定,转动惯量越大,额定转速越低,则启动时间越长。
#define        RollSpeedMin                    300         // 闭环转速最小值(RPM),用于判断异常.  转速RPM = 60/(T*MPP), 电周期 T(us) = 60*10^6/(RPM*MPP),  要求(RPM*MPP) >= 611 以免计算溢出。
#define        RollSpeedMax                   4200       // 闭环转速最大值(RPM),用于判断异常.  转速RPM = 60/(T*MPP), 电周期 T(us) = 60*10^6/(RPM*MPP),  要求(RPM*MPP) >= 611 以免计算溢出。

#define        PRE_PWM_DUTY            (START_PWM_DUTY/2)                          // 开始启动PWM占空比, 根据电机特性适当改变
#define        STOP_PWM_DUTY          (START_PWM_DUTY/2)                          // 停机占空比,PWM小于此站波比就停机, 根据电机特性适当改变
#define        RollPeriodMax                (10000000UL/(RollSpeedMin *MPP))        // 闭环电转速周期/6(即换相周期) 最大值 T(us) = 60*10^6/(RPM*MPP)/6 = 10^7/(RPM*MPP)
#define        RollPeriodMin                (10000000UL/(RollSpeedMax *MPP))        // 闭环电转速周期/6(即换相周期) 最小值 T(us) = 60*10^6/(RPM*MPP)/6 = 10^7/(RPM*MPP)

更新程序:2026-4-1
三相无刷电机驱动-STC8H1K28-无感-LQFP32.rar (178.12 KB, 下载次数: 9)




回复

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:4
  • 最近打卡:2026-04-02 20:43:03
已绑定手机

0

主题

12

回帖

32

积分

新手上路

积分
32
发表于 2026-4-2 20:43:03 | 显示全部楼层
梁*** 发表于 2026-4-1 11:25
/*************        功能说明        **************
本程序试验使用STC8H1K28-LQFP32来驱动无传感器无 ...

采用这样的软件方法驱动,在驱动螺杆泵的时候,正常阀门打开的时候是可以运行,但是只要阀门关死,这个系统就崩溃了,不能运行。螺杆泵阀门关死的时候,力矩变化太大,导致电流和比较器都会读错。

点评

我的程序是无感方波驱动,只合适用于启动力矩小的液泵、风扇、螺旋桨类,不合适驱动起始力矩大的场合,那要使用FOC驱动、带传感器的驱动才合适。  详情 回复 发表于 2026-4-3 11:07
回复

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:341
  • 最近打卡:2026-05-10 11:40:36

85

主题

7368

回帖

1万

积分

超级版主

积分
15917
发表于 2026-4-3 11:07:20 | 显示全部楼层
hbut*** 发表于 2026-4-2 20:43
采用这样的软件方法驱动,在驱动螺杆泵的时候,正常阀门打开的时候是可以运行,但是只要阀门关死,这个系 ...

我的程序是无感方波驱动,只合适用于启动力矩小的液泵、风扇、螺旋桨类,不合适驱动起始力矩大的场合,那要使用FOC驱动、带传感器的驱动才合适。
你的阀门关死后,需要大力矩启动,请使用上述后面的驱动方式。
回复

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2026-5-11 09:13 , Processed in 0.125549 second(s), 85 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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