找回密码
 立即注册

QQ登录

只需一步,快速开始

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

用单片机输出PWM驱动无刷电调,请问该如何设置中位启动来激活电刷呢?

[复制链接]
跳转到指定楼层
楼主
本帖最后由 明日香 于 2021-1-6 11:11 编辑

这个无刷电调不需要设置最大最小行程,但需要中位启动,我用单片机该如何设置呢?店家说频率是50HZ,那周期就是20ms也就是20000us了,中位启动是指PWM高电平时间1500us吗?占空比只有7.5%?



这是我写的单片机IO口P21输出PWM波的源程序:高电平时间为1500us
烧录后电调发出了“噔噔蹬”的声音,但螺旋桨没有旋转
#include <stc12c5a.h>
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define uchar unsigned char
#define uint  unsigned int
/*用定时器T0来控制频率,定时器T1来控制占空比*/
/*T0中断让一个IO口输出高电平,T1让IO口输出低电平*/
/*改变T0初值就可以改变频率,改变T1初值就可以改变占空比*/
/*机器周期为1us,设定频率为50HZ,则周期为20ms
要定时20ms,设置中断基准为0.02ms,中断1000次为一个周期
0.02ms/1us=20,初始值65535-20+1=FFEC*/

sbit PWM=P2^1; //P21输出PWM波   
uchar time;   //占空比

void main()
{
  TMOD=0x01;//打开定时器0,工作方式1:16位定时器
        TH0=0xff;       //
  TL0=0xec;
        EA=1;//开总中断
        ET0=1;//开定时器0中断
        TR0=1;//启动定时器0
        while(1)
        {
        }
}

void time0() interrupt 1
{
  TR0=0;//定时器关闭
        TH0=0xff;       //
  TL0=0xec;
  TR0=1;//打开定时器
         time++;
         if(time>=1000)
                 time=0;
         if(time<=75)//占空比为7.5%,高电平时间1500us
                 PWM=1;
         else PWM=0;
}






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

使用道具 举报

沙发
ID:46241 发表于 2021-1-5 20:05 来自手机 | 只看该作者
我也想学习下,等高手解答。
回复

使用道具 举报

板凳
ID:872791 发表于 2021-1-5 21:53 | 只看该作者
void time0() interrupt 1
{
  TH0=0xff;       //
  TL0=0x38;
  time++;
  if(time>=100)
     {  time=0;}
  if(time<=30)//占空比为30%
     { PWM=1;}
  else
      {PWM=0;}
         
}//////普通的直流电机,频率不能太快了,把定时调长一点,电流不至于把电机驱动。和步进电机不一样。

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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