单片机控制无刷电机初步调试成果和学习经历

发布者:Leishan最新更新时间:2019-11-27 来源: 51hei关键字:单片机控制  无刷电机  51单片机 手机看文章 扫描二维码
随时随地手机看文章

调了一天多的无刷电机,用的无刷电调,其实本来应该是用32做的,但是不知道原理,  于是用了比较熟悉的51单片剂一下来进行调试 一下,查询的资料,还是蛮简单的,但是实际操作并没有那么容易, 在网上查也没有能用的程序,尤其是51,因为基本用无刷的都是无人机 四六轴。所以今天贴上我的程序,分享给大家,希望能对各位减少时间学习,快速上手,本程序实现的功能是在第一次给无刷电机上电后,首先拉高油门,然后降低油门,最后满开油门,注意,,,,注意,,,,注意,一定不要用带螺旋桨的无刷电机来实验,危险,开机后会全速运行,我开全速是为了用涵道,所以全速,,
 

废话不多说,贴程序
51单片机源程序如下:

/**************************************************************************/


          //-----------------直流电机PWM调速实验程序----------------//


//测试单片机:STC89C52


//晶振:11.0592M (外部)


//复位方式:内部复位

                    

//调试环境:KEIL3


//硬件测试环境:使用“清翔电子”单片机开发板测试通过


//程序功能: PWM也就是脉宽调制,是指在周期脉冲信号频率不变的情况下,改变高电平

//

//                         和低电平的比例,也就是改变占空比。PWM在灯具调光,直流电机调速方面

//

//                         有着广泛的应用。程序使用定时器0中断模拟PWM定时,S2、S3 两个独立按 

//

//                         键控制电机速度,为使演示结果明显,PWM输出

//

//                     到整个P1接口,通过板上的LED灯可以看到亮度的变化。

//

/****************************************************************************/        


#include


typedef unsigned char uint8;

typedef unsigned int  uint16;


sbit down = P3^0;

sbit up = P3^1;


uint8 t = 0;

uint8 PWM_T = 0;   //占空比控制变

uint8 pwm_init_ready;

void delay_1ms(uint16 t)

{

        uint16 x,y;

        for(x=t;x>0;x--)

                for(y=120;y>0;y--);

}



          

/****************************************************

                  主程序

****************************************************/

void main(void)      

{


        TMOD = 0x02;   //定时器0,工作模式2,8位定时模式

        TH0=(65536-20000)/256;// ?????11.0592,???????46080,?????50000?????????

        TL0=(65536-20000)%256;//46080???,?50000*11.0592/12

        TR0=1;       //启动定时器

        ET0=1;       //允许1定时器0中断

        EA=1;        //允许总中断

        P1=0xff;          //初始化P1,输出端口


                PWM_T=19;

                delay_1ms(1000);

    PWM_T=11;

         while(1)              

         { // delay_1ms(3000);

                         PWM_T=48;         

    /*  if(!up)

                  {

                                if(PWM_T<200)

                                        {

                                          PWM_T++;

                                        }

                                        while(!up);

                                delay_1ms(10);

                  }

                 if(!down)

                         {

                                if(PWM_T>0)

                                        {

                                          PWM_T--;

                                        }

                                while(!down);

                                delay_1ms(10);

                        }*/


        

         }      

}

timer0() interrupt 1  

{         

         t++;    //每次定时器溢出加1

         TH0=(65536-20000)/256;// ?????11.0592,???????46080,?????50000?????????

   TL0=(65536-20000)%256;//46080???,?50000*11.0592/12

         if(t==200)   //PWM周期 100个单位

                 {

                          t=0;  //使t=0,开始新的PWM周期

                          P1=0xff;  //输出端口

                 }

         

         if(t==PWM_T)  //按照当前占空比切换输出为高电平

……………………



关键字:单片机控制  无刷电机  51单片机 引用地址:单片机控制无刷电机初步调试成果和学习经历

上一篇:基于单片机的电子密码锁全套设计
下一篇:基于51单片机的八路抢答器仿真设计

小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved