18340262113
发表于 2023-5-12 16:21:04
梁工 发表于 2023-5-11 13:43
到下面连接的帖子下载,里面有例程,修改切换即可。
STC8H系列-高级PWM范例程序下载
谢了梁工{:4_196:}
fisholive
发表于 2023-5-22 19:53:43
梁工,好!
我按照您的建议改成3N+3P mos管驱动, 烧录后发现有时IO电平不受控制,大概每隔17s,蜂鸣器&红灯,黄灯同时响或亮3s,我一直没有找到原因。我直接用你的原始无霍尔程序烧录进去,发现烧录后蜂鸣器和红,黄灯长亮。应该都是持续高电平。这个可能第一次手板双N mos管烧机原理,我自己研究了一下,双N mos, N+P控制逻辑应该都是相同,高电平打开 电源的mos管,低电平关掉。
这个外围电路用在STC15W408AS 验证过很多次没有问题,可能会是哪里问题会是持续高电平或间接不受控制,外围电路的影响吗?
不胜感激!
梁工
发表于 2023-5-22 22:27:48
fisholive 发表于 2023-5-22 19:53
梁工,好!
我按照您的建议改成3N+3P mos管驱动, 烧录后发现有时IO电平不受控制,大概每隔17s,蜂鸣 ...
如果按照我的电路打的板,不应该有问题,我打板测试过多种电机的,也有好多人打板测试过的。
你没有说直接下载我的程序电机驱动的情况,如果你用别的IO,由于我的程序没有用到,输出高电平是正常的。
dong97512
发表于 2023-5-26 13:41:49
梁工,有个新案子,无霍尔,需要计数转动圈 数,好计算吗
梁工
发表于 2023-5-26 13:58:51
dong97512 发表于 2023-5-26 13:41
梁工,有个新案子,无霍尔,需要计数转动圈 数,好计算吗
无感无刷,方波PWM驱动,启动之后进入闭环才能精确计数圈数,启动时无法精确计数。使用FOC方式可以的,但是这个我还么有例子。
dong97512
发表于 2023-5-30 10:49:43
本帖最后由 dong97512 于 2023-6-1 21:51 编辑
twttwt1 发表于 2023-4-27 20:23
能实现正反转、刹车吗
梁工,你好!正反转数字调整,上升,下降沿更换好就行了。看到后面有个程序段没理解,帮忙介绍一下不?
{
adc11 = ((adc11 *7)>>3) + Get_ADC10bitResult(11); //为何要*7 移3位,最终结果是啥?
}
j = adc11;
if(j != adc11) j = adc11;
PWW_Set = (u8)(j >> 5); //油门是8位的 //ADC 是10位数据的吗?为何要移5位?
谢谢!
fisholive
发表于 2023-6-13 09:08:05
梁工,好~
我用STC8H不太熟练, 手上还剩余几千个STC15F408芯片,我就把STC8H 程序移植到 408as上面,修改前电路我用0.1uf 做比较器滤波电容,能正常启动。
现在改为10nf 滤波电容。T0做为换相计数用,T2作为延迟30度换相。但是修改后,一致不能启动,颤动很大。换相30度T2 和 比较器波形也奇怪(中断内部都放入一个LED测试波形,如 Yell_LED=~Yell_LED;)
帮忙看下会是什么问题,不甚感激。
梁工
发表于 2023-6-13 15:57:09
fisholive 发表于 2023-6-13 09:08
梁工,好~
我用STC8H不太熟练, 手上还剩余几千个STC15F408芯片,我就把STC8H 程序移植到 408as上面, ...
波形明显不对,可能是你换相的时机不对。下面是正常驱动时某一相的驱动波形。低电平是拉低时间为2t,第一个高脉冲是电机电感突然断开驱动的反电动势时间(俗称退磁时间)t,之后上升区间是反电动势叠加PWM的波形,时间为t,接着是PWM驱动波形,时间为2t,然后下降区间是反电动势叠加PWM的波形,最后是拉低,另一个换相周期开始。
fisholive
发表于 2023-6-15 14:23:04
梁工,我的起始波形非常奇怪,正常应该其实step=0;位置不能重复进去比较器中断(定义初始位置),但是我的起始时间重复进入比较器中断,然后有时就启动不起来。
即使前面有 DISABLE_CMP_INT; 这句话禁止比较器中断。 但是运行完Step = 0; StepXL():
调用switch 语句中,case 0:;语句仍然再次会打开比较中断 CMPCR1 = 0x9C;
延迟10ms时间 仍然会重复进入比较器中断,波形就很乱。
u8 StartMotor(void)
{
u16 timer,i;
DISABLE_CMP_INT; // 禁止比较器中断
PWM_Value = 30; // 初始占空比=16/256=6%
Step = 0;
StepXL(); // 初始位置
Delay_n_ms(5);//delay_ms(5);
timer = 300;
梁工
发表于 2023-6-15 15:38:29
fisholive 发表于 2023-6-15 14:23
梁工,我的起始波形非常奇怪,正常应该其实step=0;位置不能重复进去比较器中断(定义初始位置),但是我 ...
换相函数最后有一句:
if(B_start) CMPCR1 = 0x8C; // 启动时禁止下降沿和上升沿中断
页:
1
2
3
4
[5]
6
7
8
9
10
11
12
13
14