找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3658|回复: 12
打印 上一主题 下一主题
收起左侧

BLDC直流无刷电机的单片机驱动程序 只能正转不能反转

[复制链接]
跳转到指定楼层
楼主
用Protuse仿真,只能正转,好像不能反转........到底是什么问题呀

#include<reg51.h>                            //STC15W系列单片机。晶振12MHZ
#include <INTRINS.H>
#define uint unsigned int                    //宏命令,声明uint替代unsignde int
#define uchar unsigned char


uchar zkb,pwm,num,mod,zhuan;        //占空比。频率计数,周期,转向

sbit a=P2^0;                                     //输出IO口A相
sbit b=P2^1;                                     //输出IO口A相
sbit c=P2^2;                                     //输出IO口A相


void main()                                         //主程序
{
    P2=0;
        zkb=50;                                        //占空比设置为50%
        zhuan=0;                                        //设置为正转
        
        while(1)                                        //主循环
  {
         pwm++;                                           //计数+
         if(pwm>100){num++;pwm=0;}           //到100为一个周期
         if(num>2){num=0;}                           //如果三相都输出后循环
        if(zhuan==0)                                    //在正转下
        {
        switch(num)
   {
         case  0 : if(pwm<zkb){a=1;} else{a=0;} break;           //如果计数小于占空比,输出为高,否则为低。
         case  1 : if(pwm<zkb){b=1;} else{b=0;} break;           //如果计数小于占空比,输出为高,否则为低。
         case  2 : if(pwm<zkb){c=1;} else{c=0;} break;           //如果计数小于占空比,输出为高,否则为低。
   }
   }
   if(zhuan==1)                                                                                   //反转
   {
           switch(num)
   {
         case  0 : if(pwm<zkb){c=1;} else{c=0;} break;          //跟正转输出时序相反 。
         case  1 : if(pwm<zkb){b=1;} else{b=0;} break;
         case  2 : if(pwm<zkb){a=1;} else{a=0;} break;
   }
   }
  }

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:718536 发表于 2021-6-18 12:24 | 只看该作者
图片这个是不同占空比输出波形图。

51hei图片_20210618122036.png (53.56 KB, 下载次数: 75)

100%占空比

100%占空比

51hei图片_20210618122023.png (51.42 KB, 下载次数: 57)

50%占空比

50%占空比
回复

使用道具 举报

板凳
ID:718536 发表于 2021-6-18 12:26 | 只看该作者
A.B.C.三相均采用2104驱动IC驱动功率管。

51hei图片_20210618122243.png (124.98 KB, 下载次数: 64)

A.B.C.三相方波采用2104驱动

A.B.C.三相方波采用2104驱动
回复

使用道具 举报

地板
ID:298123 发表于 2021-6-18 14:12 | 只看该作者
zhuan的变化在哪里?
回复

使用道具 举报

5#
ID:96682 发表于 2021-6-18 14:19 来自手机 | 只看该作者
明显是仿真图有问题
回复

使用道具 举报

6#
ID:934353 发表于 2021-6-18 14:20 | 只看该作者
你的zhuan没有做过判断呐,zhuan一直是等于0的,当然不会反转
回复

使用道具 举报

7#
ID:56665 发表于 2021-6-18 14:43 | 只看该作者
无感驱动,这里面怎么没有看到6步换相动作。
回复

使用道具 举报

8#
ID:718536 发表于 2021-6-18 15:23 | 只看该作者
hz_dyg 发表于 2021-6-18 14:12
zhuan的变化在哪里?

没有,外部变化没做。我是在程序里面写1.但还是正转,写0也是正转。写1也是正转。
回复

使用道具 举报

9#
ID:718536 发表于 2021-6-18 15:24 | 只看该作者
wc86110 发表于 2021-6-18 14:19
明显是仿真图有问题

仿真图有啥问题呀.....帮我提个醒咯
回复

使用道具 举报

10#
ID:718536 发表于 2021-6-18 15:25 | 只看该作者
开心就好hhhh 发表于 2021-6-18 14:20
你的zhuan没有做过判断呐,zhuan一直是等于0的,当然不会反转

问题是就算我在程序里把zhuan写1.仿真出来还是正转啊
回复

使用道具 举报

11#
ID:718536 发表于 2021-6-18 15:26 | 只看该作者
m182892 发表于 2021-6-18 14:43
无感驱动,这里面怎么没有看到6步换相动作。

因为我没分上下桥臂呀。所以直接120度角。三部曲。
回复

使用道具 举报

12#
ID:56665 发表于 2021-6-18 16:20 | 只看该作者
suqianfu 发表于 2021-6-18 15:26
因为我没分上下桥臂呀。所以直接120度角。三部曲。

位置确定是怎么实现的
回复

使用道具 举报

13#
ID:718536 发表于 2021-6-18 17:29 | 只看该作者
m182892 发表于 2021-6-18 16:20
位置确定是怎么实现的

不接霍尔传感器。不需要确定位置啊。我的思路是这样的。因为电机转子就是一个永磁体。我外部提供一个旋转磁场就可以了启动了啊。仿真确实可以启动的。证明思路没错。
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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