0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

浅谈基于H桥电路的控制电机的正反转和PWM调速

电子设计 作者:工程师飞燕 2018-10-16 08:17 次阅读

搭了个H桥电路,控制电机的正反转和PWM调速,程序是网上的,改改引脚就能用,电路和源程序如下:

浅谈基于H桥电路的控制电机的正反转和PWM调速

功能:P1.1按键停止,P1.2左转,P1.3右转,P1.0调速

#include
#define uchar unsigned char
#define uint   unsigned int
sbit PW1=P0^0 ;
sbit PW2=P0^1 ;     //控制电机的两个输入
sbit accelerate=P1^0 ;   //调速按键
sbit stop=P1^1 ;    //停止按键
sbit left=P1^2 ;     //左转按键
sbit right=P1^3 ;    //右转按键
           
#define right_turn PW1=0;PW2=1    //顺时针转动
#define left_turn PW1=1;PW2=0    //逆向转动
#define end_turn   PW1=1;PW2=1    //停转
uint t0=25000,t1=25000;   //初始时占空比为50%
uint a=25000;      //   设置定时器装载初值   25ms     设定频率为20Hz
uchar flag=1;      //此标志用于选择不同的装载初值
uchar dflag;      //左右转标志
uchar count;     //用来标志速度档位
void keyscan();     //键盘扫描
void delay(uchar z);
void time_init();    //定时器的初始化
void adjust_speed();   //通过 调整占空比来调整速度
//**********************************//
void main()
{
    time_init();     //定时器的初始化
while(1)
{
   
   keyscan();    //不断扫描键盘程序,以便及时作出相应的响应
}
}
//*************************************//
void timer0()   interrupt 1 using 0
{
   
if(flag)
    {
    flag=0;
    end_turn;
    a=t0;    //t0的大小决定着低电平延续时间
    TH0=(65536-a)/256;
    TL0=(65536-a)%256;   //重装载初值
    }
    else
    {
    flag=1;    //这个标志起到交替输出高低电平的作用
        if(dflag==0)
        {
         right_turn;   //右转
        }
         else
        {
      left_turn; //左转
        }
        a=t1;   //t1的大小决定着高电平延续时间
        TH0=(65536-a)/256;
        TL0=(65536-a)%256;   //重装载初值
   }
}
void time_init()
{
TMOD=0x01; //工作方式寄存器    软件起动定时器 定时器功能 方式1 定时器0
TH0=(65536-a)/256;
TL0=(65536-a)%256;   //装载初值
ET0=1;       //开启定时器中断使能
EA=1;         // 开启总中断
TR0=0;
}
//****************************************//
void delay(uchar z)    //在12M下延时z毫秒
{
uint x,y;
for(x=z;x>0;x--)
   for(y=110;y>0;y--);
}
//******************************//
void keyscan()
{
 
if(stop==0)
   {
   TR0=0;        //关闭定时器0    即可停止转动
   end_turn;
   }
if(left==0)
   {
       TR0=1;
       dflag=1;     //转向标志置位则左转
   }
if(right==0)
   {
     TR0=1;
     dflag=0;    //转向标志复位则右转
   }
if(accelerate==0)
   {
     delay(5) ; //延时消抖
   if(accelerate==0)
   {
     while(accelerate==0) ;   //等待松手
      count++;
    if(count==1)
     {
        t0=20000;
         t1=30000;   //占空比为百分之60
     }
    if(count==2)
     {
        t0=15000;
         t1=35000;    //占空比为百分之70
     }
    if(count==3)
     {
        t0=10000;
         t1=40000;    //占空比为百分之80
     }
     if(count==4)
     {
        t0=5000;
         t1=45000;    //占空比为百分之90
     }
    if(count==5)
     {
       count=0;
     }
   }
    
   }
}

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 51单片机
    +关注

    关注

    273

    文章

    5697

    浏览量

    123128
  • PWM调速
    +关注

    关注

    2

    文章

    33

    浏览量

    10906
  • 控制电机
    +关注

    关注

    0

    文章

    234

    浏览量

    18076
收藏 人收藏

    评论

    相关推荐

    直流电机正反转控制电路的工作原理

     直流电机正反转控制可以通过改变电机的电流方向来实现。常用的正反转控制电路包括
    发表于 03-27 15:28 1.5w次阅读
    直流<b class='flag-5'>电机</b><b class='flag-5'>正反转</b><b class='flag-5'>控制电路</b>的工作原理

    求助,H电路PWM控制电机转速时MOS管烧毁!

    自己做的一个H电路,想控制电机正反转以及转速,给控制
    发表于 12-27 21:15

    PWM控制ULN2003怎么实现正反转

    现在在整个控制直流电机的样品,能实现正反转,还可以调速?哪位兄弟有好的方法啊,说说吧,多谢!我准备用MOS管组成H
    发表于 04-23 06:35

    PWM调速原理分享,如何实现电机的正转反转调速

    ,就可以改变直流电机两端的平均电压,从而实现直流电机调速。前文说过,改变电机两端的电源极性可以改变电机的转速,那么
    发表于 12-10 11:06

    Proteus仿真H控制电机正反转是怎样支持pwm调速

    Proteus仿真H控制电机正反转,支持pwm调速
    发表于 06-28 13:07

    MS管搭建的H电路如何去实现电机正反转控制

    直流有刷电机有哪些优缺点?步进电机有哪些优缺点?直流减速电机驱动该如何去设计?MS管搭建的H电路
    发表于 09-03 07:13

    PWM如何实现电机正反转以及调速

    直流电机调速原理是什么?PWM信号调速的原理是什么?PWM如何实现电机
    发表于 09-23 07:31

    Proteus仿真H是怎样控制电机正反转

    Proteus仿真H是怎样控制电机正反转的?求解答
    发表于 10-14 06:47

    h电路控制电机正反转能用差分分电路代替吗?

    h电路控制电机正反转能用差分分电路代替吗?
    发表于 04-25 15:04

    H电机正反转控制电路

    所谓的H 电路就是控制电机正反转的。下图就是一种简单的H
    发表于 05-16 10:18 1.9w次阅读
    <b class='flag-5'>H</b><b class='flag-5'>桥</b>式<b class='flag-5'>电机</b><b class='flag-5'>正反转</b>换<b class='flag-5'>控制电路</b>图

    2路直流电机驱动模块正反转PWM调速+双H步进电机迷你电机驱动

    2路直流电机驱动模块正反转PWM调速+双H步进电机
    发表于 07-21 08:48 90次下载

    pwm控制电机正反转PWM直流电机调速程序

    PWM调速开关控制方式控制电机,广泛应用于玩具、小车、机器人等项目,通过串口预设正反转速度,可以
    发表于 10-30 15:00 2w次阅读

    使用单片机实现直流电机正反转PWM调速控制的C语言实例

    本文档的主要内容详细介绍的是使用单片机实现直流电机正反转PWM调速控制的C语言实例
    发表于 03-31 17:24 68次下载

    用PMOS跟NMOS做H控制直流电机正反转

      大家好,今天讲解用PMOS跟NMOS做H控制直流电机正反转
    的头像 发表于 11-11 17:10 5706次阅读
    用PMOS跟NMOS做<b class='flag-5'>H</b><b class='flag-5'>桥</b><b class='flag-5'>控制</b>直流<b class='flag-5'>电机</b>的<b class='flag-5'>正反转</b>

    h驱动电路使电机正反转原理

    H驱动电路使电机正反转的原理是一个在电子和电机控制
    的头像 发表于 10-06 14:53 688次阅读
    <b class='flag-5'>h</b><b class='flag-5'>桥</b>驱动<b class='flag-5'>电路</b>使<b class='flag-5'>电机</b><b class='flag-5'>正反转</b>原理