stb988
发表于 2024-10-24 10:49:57
我也复刻了一个,很好!
芯远航
发表于 2024-10-24 13:13:32
这个例子,如果P00也做PWM输出(其它用途,调光),会不会冲突
梁工
发表于 2024-10-24 20:17:15
芯远航 发表于 2024-10-24 13:13
这个例子,如果P00也做PWM输出(其它用途,调光),会不会冲突
单片机的各种外设都是独立的,怎么会有冲突?只要安排好IO没有冲突即可。
vcakva
发表于 2024-10-26 11:37:28
本帖最后由 vcakva 于 2024-10-26 17:10 编辑
梁工 发表于 2023-4-28 11:47
正反转,步骤反过来就可以了。刹车,3个PWM同时输出,可以有踩刹车踏板的刹车效果,或者将3个下管同时导 ...
感谢梁工的程序,受益匪浅{:handshake:}
zwf33335
发表于 2024-10-26 15:16:44
本帖最后由 zwf33335 于 2024-10-26 15:18 编辑
梁工你好!我想按你的电路和开源程序做一个无霍尔的无刷直流电机控制器,画PCB时有什么特别注意的地方吗、麻烦老师指导一下,做中功率的,24V供电
梁工
发表于 2024-10-27 08:38:59
zwf33335 发表于 2024-10-26 15:16
梁工你好!我想按你的电路和开源程序做一个无霍尔的无刷直流电机控制器,画PCB时有什么特别注意的地方吗、 ...
注意大电流与小电流部分分开布板即可。
mark_lhm
发表于 2024-10-28 00:49:16
本帖最后由 mark_lhm 于 2024-10-28 00:51 编辑
梁工,您好~!
有两个问题请教一下:
一,例子里面为什么是设置为400?我在低速驱动的时候,有感觉到强起转闭环的时候会卡一下。不知道是不是因为换相时间和400 不匹配导致的。
if(!B_RUN && (PWW_Set >= D_STOP_PWM)) // 占空比大于设定值, 并且电机未运行, 则启动电机
{
B_start = 1; //启动模式
for(i=0; i<8; i++) PhaseTimeTmp = 400;
二,有看到您说 使用15W做过无30度换相的方案。能分享一下材料吗?
顺便多问一下,如果不使用30度,在比较器能识别到过零信号的情况下,直接过零换相,会不会更顺利的启动?从而可以避免盲起?
梁工
发表于 2024-10-28 10:11:26
本帖最后由 梁工 于 2024-10-28 10:14 编辑
mark_lhm 发表于 2024-10-28 00:49
梁工,您好~!
有两个问题请教一下:
一,例子里面为什么是设置为400?我在低速驱动的时候,有感觉到强起 ...
1、这是初始换相时间,仅仅用于计算刚进入闭环时的30度角延时,启动时速度慢,30度角误差大也不影响,设置较小值就等效于没有30度角延时。8次换相之后就能得到正确的30度角延时时间。设置为400,则30度角延时时间为100us,对于低速启动时,换相时间都在几个ms级别,100u的延时基本可以忽略,等效于没有30度角延时。
“感觉到强起转闭环的时候会卡一下”,应该是启动转速跟刚进入闭环时转速不一致导致,让启动占空比与刚进入闭环时占空比一直就不会出现。
2、参考上述描述。
大脸猫爱吃鱼
发表于 2024-10-31 19:31:36
梁工 发表于 2023-5-6 16:29
初始化程序,是移植(拷贝)过来的,初始化时,随便选一个通道都可以,因为这时候并没有启动ADC,所以选 ...
梁工你好,最近才开始按照你的图画了一个板子,程序这块我有两个问题请教一下,一是电机转动时,只需要在case 4这里采adc11的值吗?二是 adc11 = ((adc11 *7)>>3) + Get_ADC10bitResult(11)中,(adc11 *7)>>3是一种迭代的算法吗?
谢谢梁工
梁工
发表于 2024-10-31 21:46:57
大脸猫爱吃鱼 发表于 2024-10-31 19:31
梁工你好,最近才开始按照你的图画了一个板子,程序这块我有两个问题请教一下,一是电机转动时,只需要在 ...
因为比较器也使用了ADC输入端,为了避免竞争冲突,启动电机后在换相程序里做ADC,电机停止后在主程序做ADC。
adc11 = ((adc11 *7)>>3) + Get_ADC10bitResult(11);//这个是一阶数字低通滤波器,等效硬件的RC一阶低通滤波。