找回密码
 立即注册

QQ登录

只需一步,快速开始

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

两路电机驱动 H桥L9110 含单片机源代码+电路图

[复制链接]
跳转到指定楼层
楼主
电路原理图如下:


单片机源程序如下:
  1. #include <reg52.h>

  2. //LMD298输入控制端定义
  3. sbit IN1 = P1^0;
  4. sbit IN2 = P1^1;        
  5. sbit IN3 = P1^2;        
  6. sbit IN4 = P1^3;

  7. sbit ENA = P1^4;        
  8. sbit ENB = P1^5;

  9. sbit CW = P3^0;                //正转运行按键
  10. sbit STOP = P3^1;        //停止运行按键
  11. sbit CCW = P3^2;        //反转运行按键
  12. sbit ADJ = P3^3;        //调速运行按键

  13. bit Run_Status;                //运行状态位标志,
  14.                                         //=0表示电机在停止状态,可以按键正转、反转均可
  15.                                         //=1表示电机在运行状态,不支持正反转按键,只有先停止。防止强行换向带来的电流过大。

  16. unsigned char CYCLE; //周期变量
  17. unsigned char DUTY; //占空比变量,对应于调速运行时按键次数,调速时每按一次调速键速度比上次变化10%

  18. /********************************/
  19. /*      延时函数               */
  20. /********************************/
  21. void Delay(unsigned int cnt)
  22. {
  23.          while(--cnt);
  24. }
  25. /********************************/
  26. /*      主函数                             */
  27. /********************************/
  28. main()
  29. {
  30.         TMOD |=0x01;        //定时器设置 1ms in 12M crystal
  31.         TH0=(65536-1000)/256;
  32.         TL0=(65536-1000)%256;//定时1mS
  33.         IE= 0x82;                  //打开中断        
  34.         
  35.         Run_Status=0;
  36.         IN1=1;
  37.         IN2=1;
  38.         IN3=1;
  39.         IN4=1;
  40.         ENA=0;
  41.         ENB=0;

  42.         CYCLE=10;         //周期10ms
  43.         DUTY=0;         //占空比=0

  44.         while(1)
  45.           {
  46.                 if(!STOP)                        //任何时候按停止键,电机停止运行
  47.                 {        
  48.                         Delay(12000);        //延时去抖动
  49.                         if(!STOP)                        
  50.                         {               
  51.                                 //实际运用中,自由停车或制动刹车可以任选。
  52.                                 Run_Status=0;        //电机正在停止的状态标志
  53.                                 IN1=1;                        //IN1=IN2时,电机1制动刹车
  54.                                 IN2=1;                        
  55.                                 ENA=0;                        //ENA=0时,电机1自由运行到停止
  56.                                 IN3=1;                        //IN3=IN4时,电机2制动刹车
  57.                                 IN4=1;                        
  58.                                 ENB=0;                        //ENB=0时,电机2自由运行到停止
  59.                                 TR0=0;
  60.                         }
  61.                 }
  62.                 if(!CW&&!Run_Status)//按正转键同时电机不是正在运行时,电机正转运行
  63.                 {
  64.                         Delay(12000);        //延时去抖动
  65.                         if(!CW&&!Run_Status)                        
  66.                         {        
  67.                                 Run_Status=1;        //电机正在运行的状态标志
  68.                                 IN1=1;                        
  69.                                 IN2=0;                        
  70.                                 ENA=1;        
  71.                                 IN3=1;                        
  72.                                 IN4=0;                        
  73.                                 ENB=1;        
  74.                         }
  75.                 }
  76.                   if(!CCW&&!Run_Status)//按反转键同时电机不是正在运行时,电机反转运行
  77.                 {
  78.                         Delay(12000);        //延时去抖动
  79.                         if(!CCW&&!Run_Status)                        
  80.                         {        
  81.                                 Run_Status=1;        //电机正在运行的状态标志
  82.                                 IN1=0;                        
  83.                                 IN2=1;                        
  84.                                 ENA=1;        
  85.                                 IN3=0;                        
  86.                                 IN4=1;                        
  87.                                 ENB=1;        
  88.                         }
  89.                 }
  90.                    if(!ADJ)
  91.                 {
  92.                         Delay(15000);        //延时去抖动
  93.                         if(!ADJ)
  94.                         {        
  95.                                 TR0=1;
  96.                                 if(DUTY<CYCLE)        DUTY+=1;        //增加占空比
  97.                                 else                        DUTY=0;
  98.                                 Run_Status=1;
  99.                                 //这里是正转调速,反转调速可以自己试着编写
  100.                                 IN1=1;                        
  101.                                 IN2=0;                        
  102.                                 ENA=0;        
  103.                                 IN3=1;                        
  104.                                 IN4=0;                        
  105.                                 ENB=0;        
  106.                          }
  107.                 }
  108.    }
  109. }
  110. /********************************/
  111. /*      定时器0中断服务函数     */
  112. /********************************/
  113. void Timer0(void) interrupt 1 using 1
  114. {
  115.         static unsigned char Cnt;

  116.         TH0=(65536-1000)/256;
  117.         TL0=(65536-1000)%256;//定时1mS
  118.         
  119.         if(DUTY==0)                                {Cnt=0;        TR0=0;Run_Status=0;}        //占空比=0时 停止中断 可以按正转或反转
  120.         else if(DUTY==CYCLE)        Cnt=CYCLE;
  121.         else                                        Cnt++;
  122.         if(Cnt==DUTY)                //高电平时间到
  123.         {
  124.                  ENA = 0;
  125.                 ENB = 0;
  126.         }
  127.         if(Cnt == CYCLE)        //低电平时间到
  128.         {
  129.                 ENA = 1;
  130.                 ENB = 1;
  131.             Cnt=0;
  132.         }
  133. }
复制代码

全部资料51hei下载地址:
直流电机驱动程序.zip (94.85 KB, 下载次数: 31)
电机模块.pdf (105.48 KB, 下载次数: 35)
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:724172 发表于 2020-10-10 09:36 | 只看该作者
有实物图吗,我小白一个
回复

使用道具 举报

板凳
ID:1018833 发表于 2022-4-16 10:52 | 只看该作者
想要你的电机原理图
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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