使用51单片机驱动航模无刷电机

使用51单片机驱动航模无刷电机话不多说直接上图 nbsp nbsp nbsp 使用的是 89c52rc 单片机 电调驱动使用 50 500Hz 的脉冲 我用的 400Hz 脉冲 P2 0 作为输出 电调驱动脉冲高电平时间 0 7 1 9ms 开始做一个油门行程 输出 1 9ms 高电平脉冲 听到电机 哔哔 两声 然后输出 0 7ms 高电平脉冲 听到电机 哔 的一声 表示它准备好了 然后就可以转啦 输出 0 7ms 高电平电机停止 往上加 电机转得就越

话不多说直接上图:使用51单片机驱动航模无刷电机

使用51单片机驱动航模无刷电机

      使用的是89c52rc单片机,电调驱动使用50~500Hz的脉冲 , 我用的400Hz脉冲 P2.0作为输出,电调驱动脉冲高电平时间0.7~1.9ms , 开始做一个油门行程,输出1.9ms高电平脉冲,听到电机“哔哔”两声,然后输出0.7ms高电平脉冲,听到电机“哔~~”的一声,表示它准备好了,然后就可以转啦~~~~输出0.7ms高电平 电机停止,往上加,电机转得就越来越快~

经过测试最大高电平时间在0.7ms及以下电机不转,0.7ms以上开始转。。1.9ms达到最高速,1.9模式以上电机转速可能会降低,不会在加快了~~

程序代码如下:LSA LSB LSC 为驱动数码管的引脚

使用51单片机驱动航模无刷电机

使用51单片机驱动航模无刷电机

使用51单片机驱动航模无刷电机

使用51单片机驱动航模无刷电机

使用51单片机驱动航模无刷电机

我的keil5用的Unicode编码,所以中文注释在文本下会是乱码

程序:

#include

/
µçµ÷Çý¶¯Âö³å50HZ~500HZ    ÓÃ400HZÇý¶¯

×îС¸ßµçƽʱ¼ä 0.7ms
×î´ó¸ßµçƽʱ¼ä 1.9ms

*/

#define MAX 19
#define MIN 7

sbit spin=P2^0;
sbit k1=P3^2;
sbit k2=P3^3;

sbit LSA=P2^2;
sbit LSB=P2^3;
sbit LSC=P2^4;

char code smgduan[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//ÏÔʾ0~FµÄÖµ
int j;

 void InitTimer0(void)
{

    TMOD = 0x01;
    TH0 = 0x0FF;    //0.1ms
    TL0 = 0x9C;
    EA = 1;
    ET0 = 1;
    TR0 = 1;
}

void delay(int i)
{

  while(i–);
}

void main()
{

int x;
InitTimer0();

x=0;

//ÓÍÃÅÐгÌÉèÖÃ
 j=MAX;

while(1)
{

LSA=0;
LSB=0;
LSC=0;
P0=smgduan[15];
if(k1==0)
{

delay(1000);
if(k1==0)
{


while(k1==0);
break;
}
}
}
  j=MIN;


//ÔËÐк¯Êý

while(1)
{

  if(k1==0)
{

delay(100);
if(k1==0)
{if(j

while(k1==0);

}

if(k2==0)
{

delay(100);
if(k2==0)
{if(j>MIN) {j–;x–;}}
while(k2==0);
}


//ÊýÂë¹ÜÏÔʾ
  LSA=0;
LSB=0;
LSC=0;
P0=0x00;
P0=smgduan[x%10];
delay(100);
LSA=1;
LSB=0;
LSC=0;
P0=0x00;
P0=smgduan[x/10];
delay(100);
}

}

void Timer0Interrupt(void) interrupt 1
{   
static int i=0;

    TH0 = 0x0FF;
    TL0 = 0x9c;
    i++;
if(i<=j) spin=1;                   //pwmÂö³å·¢Éú
else spin=0;

if(i>=25) i=0;                  //0.0025ms   1/0.0025=400Hz












































































































































}

程序开始会把pwm设置为1.9ms高电平脉冲(做油门行程),按下P3.2端口对应的k1,pwm拉倒最低,等电机哔得一声,就可以继续按k1加速了,按k2减速;

程序使用了数码管显示当前档位,我设置的是0~12挡,也就是0.7~1.9ms高电平时间,

电调信号线 红VCC 黑GND 白信号线;

电调接上11.1V电源,和电机,红线VCC悬空不接,黑线GND接单片机GND,白线信号线接P2.0(我使用的pwm端口);

电机在有负载的情况下,电流会达到好几十安 我用的40A电调,,我5A的稳压源,无法使它加上螺旋桨达到最大速度,但是空转可以达到最大速度!!!!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/177792.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月26日 下午6:44
下一篇 2026年3月26日 下午6:44


相关推荐

  • cdrecord光盘烧录工具

    cdrecord光盘烧录工具

    2021年8月24日
    71
  • 线程的notify方法_forkjoinpool默认线程数量

    线程的notify方法_forkjoinpool默认线程数量从源码角度剖析notify/notifyAll方法到底做了些什么,线程是如何唤醒的。

    2025年10月6日
    3
  • 时间卷积网络(TCN):结构+pytorch代码

    时间卷积网络(TCN):结构+pytorch代码文章目录 TCNTCN 结构 1 DFCN 的结构因果卷积 CausalConvol 膨胀因果卷积 DilatedCausa 膨胀非因果卷积 DilatedNon CausalConvol 残差块结构 pytorch 代码讲解 TCN TCN TemporalConv 是由 ShaojieBaiet

    2026年3月26日
    2
  • 全国计算机考试python 培训

    全国计算机考试python 培训很多同学想考python的证书,想知道Python有哪些含金量高的证书?一、全国计算机等级考试Python程序语言设计;二、PythonInstitute资格认证初级PCEP;三、PythonInstitute资格认证初级PCEP中级PCAP;四、PythonInstitute资格认证初级PCEP高级PCPP;五、工信部Python技术应用工程师专项技术证书;六、百度技术认证深度学习工程师。现在比较热门的有全国计算机等级考试Python程序语言设计、工信部Python技术应用工程师专项技术证书、百度技

    2025年9月23日
    6
  • 银行家算法 C语言实现 带注释

    银行家算法 C语言实现 带注释银行家算法C语言实现带注释加粗样式****在这里插入代码片#include<stdio.h>#defineM100#defineN50///定义M个进程,N类资源voidInit();boolcheckSecurity(int);voidshow();intBank(int);intAvailable[M];///可利用资源数组intMax[N][M];///最大需求矩阵intAllocation[N][M];///

    2022年5月10日
    44
  • tcplayer 源码改造第二弹 -> 加入倍速播放

    tcplayer 源码改造第二弹 -> 加入倍速播放前序简介主要介绍了基于 tcplayer 的源码改造 加入倍速播放功能不涉及 tcplayer 的使用以及框架如何调用 详情请看腾讯云点播文档源码解析中有些注释是笔者加的 如需定位 请不要复制注释以下示例的代码为重新混淆压缩过 与原来的 tcplayer js 函数名不同 不可直接复制使用 请务必跟着笔者一步步执行人群不想自己写播放器而使用 tcplayer 但是又受限于播放器本身不带有倍速

    2026年3月18日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号