找回密码
 立即注册
查看: 694|回复: 3

关于无刷电调的奇妙问题(已解决)

[复制链接]
  • 打卡等级:初来乍到
  • 打卡总天数:2
  • 最近打卡:2024-08-06 20:01:46

4

主题

3

回帖

36

积分

新手上路

积分
36
发表于 2024-8-6 17:51:13 | 显示全部楼层 |阅读模式
一般大家都会在电调程序里写上电后放音乐的程序来检测电机和电调是否完好。

我们的程序也不例外,甚至浪漫主义地调了一首卡农。

但是卡农太久了,于是在制作新的电调时,我就裁掉了一部分音节:
#define MUSIC_NUM   8
uint16  frequency_spectrum[6] = {0, 523, 587, 659, 698, 783};
uint8   music_frequency[MUSIC_NUM] = {1,2,3,4,5};
uint16  music_wait_time = 250;


变成了上边这样。

新的电调焊好了,我下载程序,美美上电。

然后我就发现在电调响完五声之后,会莫名转动一下

https://www.stcaimcu.com/forum.php?mod=attachment&aid=NTMxMzl8NDI1ZTA0YmN8MTc0NjE0NzQwMnwwfA%3D%3D


(这是事后的场景复原)

为什么呢?

最开始我们怀疑是换相检测部分有问题

但是再三检查,重焊也还是会疯转,

又想会不会是芯片没焊好,重焊了几次也没效果。

那会不会是程序的问题呢?

于是我又看向了这我唯一修改过的部分

#define MUSIC_NUM   8

会不会是这里有问题?

但是按照程序逻辑,这里即使写20,也是只是会在

uint8   music_frequency[MUSIC_NUM] = {1,2,3,4,5};

后边多加几个 0 ,多播放一会儿空音节啊。

但我还是抱着将信将疑的态度,把 8 改成了 5

上电,问题解决了。

https://www.stcaimcu.com/forum.php?mod=attachment&aid=NTMxNDB8MDk5OTAzNmR8MTc0NjE0NzQwMnwwfA%3D%3D


为什么数组多个 0 会让电机疯转?

for(i = 0; i < MUSIC_NUM; i++)
    {
        pwm_init(PWMA_CH1P_P20, frequency_spectrum[music_frequency], beep_duty);
        
        delay_ms(music_wait_time);
    }

这响声程序看起来根本不具有这样的效果啊?

顺着0往下找,我注意到了

uint16  frequency_spectrum[6] = {0, 523, 587, 659, 698, 783};

频率数组这里,frequency_spectrum[0] = 0


众所周知,C语言里 0,很引人注目,也相对更容易出问题


所以我就尝试着,把 0 改成了 50


果然,不会疯转了,再疯转的地方取而代之的是音效。


看来问题就是 0


检测发现


在程序里写PWM频率为 0 时,会直接给电机输出 3.3V 电。


可能是STC芯片的问题


问了实验室的前辈,他们也表示遇到过这个情况


而且还说 “但是我们只有在张学长的电脑上运行才会出现这种情况”


真是玄学呢。












回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:423
  • 最近打卡:2025-05-02 07:55:56
已绑定手机

19

主题

3190

回帖

4870

积分

论坛元老

积分
4870
发表于 2024-8-6 18:40:28 来自手机 | 显示全部楼层
一个0引发的事故啊!
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:5
  • 最近打卡:2024-05-02 21:48:56

6

主题

48

回帖

614

积分

高级会员

积分
614
发表于 2024-8-6 21:06:46 | 显示全部楼层
一般来说硬件PWM写零不一定是高电平也可能是低电平,这个要看前一个电平状态是啥,就是说一旦发送PWM为0指令IO输出不管在高电平还是低电平都立即停止.
STC配置普通IO还好说直接IO = 0即可置低电平,32位MCU PWM输出GPIO要配置复用输出的话还需要临时配置GPIO为推挽或者可下拉模式再用指令置为低电平.
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:2
  • 最近打卡:2024-08-06 20:01:46

4

主题

3

回帖

36

积分

新手上路

积分
36
发表于 2024-8-6 22:59:51 | 显示全部楼层
qq6035*** 发表于 2024-8-6 21:06
一般来说硬件PWM写零不一定是高电平也可能是低电平,这个要看前一个电平状态是啥,就是说一旦发送PWM为0指令I ...

感谢
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-5-2 08:56 , Processed in 0.135825 second(s), 71 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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