OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 8148|回复: 3

无刷电机控制问题

[复制链接]

9

主题

38

帖子

0

精华

新手上路

积分
48
金钱
48
注册时间
2018-2-8
在线时间
20 小时
发表于 2018-6-8 16:52:59 | 显示全部楼层 |阅读模式
15金钱
有没大牛做过无刷电机控制问题,我在测试一个无刷电机驱动板子,用的是drv8332芯片。我给定pwm的,我在不断试不同的,但是我发现给的pwm和转速不成线性变化。而且满占空比时候速度也不快,也就额定的三分之一

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

9

主题

38

帖子

0

精华

新手上路

积分
48
金钱
48
注册时间
2018-2-8
在线时间
20 小时
 楼主| 发表于 2018-6-9 09:29:19 | 显示全部楼层
换了个电机,反转又不行
回复

使用道具 举报

1

主题

13

帖子

0

精华

新手上路

积分
45
金钱
45
注册时间
2019-12-18
在线时间
8 小时
发表于 2020-6-19 11:44:31 | 显示全部楼层
单片机_PWM输出原理详解
理论篇
  博主自己的经历告诉我,PWM波的理解和应用确实还是挺重要的,这里专门花一期详细介绍一下

什么是PWM?

 &#8195WM,英文名Pulse Width Modulation,是脉冲宽度调制缩写,它是通过对一系列脉冲的宽度进行调制,等效出所需要的波形(包含形状以及幅值),对模拟信号电平进行数字编码。
  通俗的说,就是控制在一个周期内,控制高电平多长时间,低电平多长时间(前面文章种有说过IO口就只有两种状态,0和1,对应就是0和5V或者0和3.3V)。也就是说通过调节高低电平时间的变化来调节信号、能量等的变化。

  图为周期4毫秒的PWM波形

两个重要的概念,频率、占空比

  频率是指每秒钟信号从高电平到低电平再回到高电平的次数,为一个PWM波周期的倒数。上图中频率=1/(0.003+0.001)=250 HZ
  占空比是指高电平持续时间比一个周期持续的时间。上图中占空比=1/(1+3)=25%,所以可以通过控制占空比,来控制输出的等效电压。
  所以对于方波的话,频率和占空比就确定了一个波。

怎么能产生一个PWM波?

  方法1:利用芯片内部模块输出PWM信号,STM32 的定时器除了 TIM6 和 7。其他的定时器都可以用来产生 PWM 输出。其中高级定时器 TIM1 和 TIM8 可以同时产生多达 7 路的 PWM 输出。而通用定时器也能同时产生多达 4路的 PWM 输出,这样, STM32 最多可以同时产生 30 路 PWM 输出!  但是!!!同一个定时器TIM只能产生一个频率的PWM波,你只能改变占空比。 具体例程见一下实战篇STM32部分。
  方法2:利用IO口高低电平转变输出PWM信号,比如上图中先把电平置1,维持1ms,然后将电平拉低,维持3ms,再将电平置高,如此循环往复下去,就可以产生一个周期4毫秒占空比为25%的PWM波了。具体方法就是给IO口加一个定时器,用定时器中断来实现及时切换高低电平。  具体历程见以下51单片机部分。

定时器

  要想使用51单片机来产生一路PWM,根据上述的方法2,首先你应该知道什么是定时器?定时器是怎么工作的?
  定时器:和计数器说的是一个东西,因为它既能计时也能计数。定时器的实质是,由机器频率向一个16位寄存器累加,累加满溢出时触发中断。为了产生一个我们想要的时间间隔。比如说1s,所以我们要在这个寄存器里设定一个初值,以至于让它在这个初值上累加可以产生一个1s的倍数。这样我们就得到了稳定的时间间隔。
  这个寄存器分为TH(高八位)和TL(低八位)。所以我们需要把计算好的初值分成两部分分别放入TH和TL。
  过程
  首先,我们通过单片机的晶振频率得知其时钟周期,再尤其乘以12得到机器周期。每一个机器周期在寄存器内+1,直到加满溢出产生中断。
  举例说明
  若单片机频率为12Mhz,其时钟周期就是1/12μs,机器周期为1μs,也就是每1μs寄存器+1。16位的寄存器加到溢出最多需要(2^16)-1=65535μs,溢出也需要一个机器周期,所以总共要65536μs。但这个值太别扭,和我们要的1s没什么关系。我们最好让它记50000μs产生一次中断,所以其初值就设为65536-50000=15536。但我们还要将这个值分别放在高八位和低八位,所以要将这个十进制数,转换为4位十六进制数再分开赋值。十进制计算法:TH = 15536/256; TL = 15536%256;,进制计算问题这里不细讨论。这样的话,每50ms就会产生一次中断。我们只要用程序判断其中断20次就记1s。
  定时器部分摘自:https://www.jianshu.com/p/90ea43a7b4fd

PWM的应用

1 输出模拟电压(通过电压的高低来控制如LED的亮度,直流电机的速度等)
 &#8195WM对模拟信号电平进行数字编码的方法,计算机只能输出0或5V的数字电压值而不能输出模拟电压,而我们如果想获得一个模拟电压值(介于0 - 5V的电压值),则需通过使用高分辨率计数器,改变方波的占空比来对一个模拟信号的电平进行编码。电压是以一种连接(1)或断开(0)的重复脉冲序列被夹到模拟负载上去的,连接即是直流供电输出,断开即是直流供电断开。通过对连接和断开时间的控制,只要带宽足够,可以输出任意不大于最大电压值的模拟电压。
  输出电压=(接通时间/脉冲时间)*最大电压值12

   PWM输出等效电压
回复

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
4
金钱
4
注册时间
2019-11-13
在线时间
0 小时
发表于 2020-7-12 08:22:58 | 显示全部楼层
电机转速无法升高,可能主要是电机反向电动势已经达到的线电压相等,进入饱和区间了,如果想提速,必须降低反向电动势,可通过降低励磁电流的方式降低励磁磁场,从而降低反向电动势,即进入弱磁区间,提高转速,但扭矩会相应降低。
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-22 17:20

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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