打印
[MCU]

BLDC的速度离奇变化

[复制链接]
2070|13
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
单模先声|  楼主 | 2017-10-26 20:48 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 单模先声 于 2017-10-26 21:26 编辑

工程只有BLDC和ad转换,设置好速度后,加上串口发送,电机每转一圈串口就发送一个字节,速度就慢了。关闭串口发送之后速度就恢复了。这有可能是哪里的问题?串口发送完再启动电机程序的

相关帖子

沙发
dirtwillfly| | 2017-10-26 21:15 | 只看该作者
串口操作的时候控制bldc的pwm可能停了

使用特权

评论回复
板凳
单模先声|  楼主 | 2017-10-26 21:25 | 只看该作者
dirtwillfly 发表于 2017-10-26 21:15
串口操作的时候控制bldc的pwm可能停了

不是啊,我是串口发送完再启动电机程序的

使用特权

评论回复
地板
单模先声|  楼主 | 2017-10-26 21:25 | 只看该作者
串口发送完再启动电机程序的

使用特权

评论回复
5
单模先声|  楼主 | 2017-10-27 09:07 | 只看该作者

使用特权

评论回复
6
autolog| | 2017-10-27 10:24 | 只看该作者
串口也要时间的,可以大幅度提高波特率,或者改为DMA传送

使用特权

评论回复
7
单模先声|  楼主 | 2017-10-27 10:59 | 只看该作者
autolog 发表于 2017-10-27 10:24
串口也要时间的,可以大幅度提高波特率,或者改为DMA传送

我感觉是我的程序问题啊,打印一个字节速度就下来了,难道整个系统只能弄一个电机?

使用特权

评论回复
8
QuakeGod| | 2017-10-27 11:10 | 只看该作者

使用特权

评论回复
9
QuakeGod| | 2017-10-27 11:34 | 只看该作者
真不知道你的程序是咋写的。估计是学院派学生党的水平吧。
要修改成真正能用的程序,估计程序架构要完全重写,搞不好连硬盘都要格式化,说起来话就太长了。
先说一个简单的办法吧。
你用的printf,通过串口输出,其实它是轮询方式的,发一个字符都会阻塞。而且直到串口发完,程序才会继续运行,所以尽量不要使用这个方式。
如果你非要用这个,可以将putc函数重载,然后自己用中断方式发送字符。
你可以搜一下,做一个缓冲队列,然后用中断的方式完成串口发送。就基本上不会影响程序的执行了。
当然,还跟你的波特率有关,如果波特率比较低,而你发送的内容又比较多,那么缓冲区也会很快填满,造成程序阻塞。
所以串口的波特率越高越好,不限于115200,甚至可以用230400或460800甚至921600,
当然,电脑本身的硬串口UART是不支持这么高的波特率的,但是很多USB转串口或者转TTL的芯片是支持到921600的。
当然你的上位机软件也要支持。有些超级终端支持这么高的波特率。比如SecureCRT等。如果是你自己编写上位机程序,也比较容易实现。

另外,如果做BLDC控制,换相时机非常重要。尤其是高转速的电机,每步时间也就几个mS,这个地方需要用中断来做,减少延迟。否则严重影响电机性能和效率。

使用特权

评论回复
10
单模先声|  楼主 | 2017-10-27 12:17 | 只看该作者
QuakeGod 发表于 2017-10-27 11:34
真不知道你的程序是咋写的。估计是学院派学生党的水平吧。
要修改成真正能用的程序,估计程序架构要完全重 ...

我的串口发送是只执行到SBUF=X,之后就继续运行别的了,串口中断会自己处理的,所以应该不会存在堵塞的问题吧?      我的单片机中断不够用,我只能不断地读取三个io的值变化,变化了就立刻换相,这个影响大吗?

使用特权

评论回复
11
GetItDone| | 2017-10-27 13:16 | 只看该作者
单模先声 发表于 2017-10-26 21:25
不是啊,我是串口发送完再启动电机程序的

问题就出在这里,串口发送与电机程序必须是并行的。不能是哪个做完再做哪个的结构

使用特权

评论回复
12
dog_xin| | 2017-10-27 13:43 | 只看该作者
中断运行时间过长也会影响其他中断的可靠执行的。

使用特权

评论回复
13
单模先声|  楼主 | 2017-10-27 13:48 | 只看该作者
dog_xin 发表于 2017-10-27 13:43
中断运行时间过长也会影响其他中断的可靠执行的。

我的中断也没做什么,就几个变量在递减而已

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

82

主题

550

帖子

1

粉丝