历史上的今天
返回首页

历史上的今天

今天是:2024年11月09日(星期六)

正在发生

2019年11月09日 | 基于单片机PWM的直流电机调速系统+H桥驱动电路驱动原理图

2019-11-09 来源:51hei

本设计以单片机AT89C51为核心,通过软件编程利用其定时器产生PWM信号从而实现对直流电机转速控制。硬件设计主要包括按键电路模块、电机驱动模块、测速模块和转速显示模块。其中采用独立式键盘通过按键将命令输入到单片机,改变PWM信号占空比,再将单片机输出的信号通过光电耦合器和由IGBT组成的H型桥式功率放大驱动电路,根据不同占空比的PWM信号达到电机启停、正反转和加减速控制。测速模块采用非接触式的霍尔传感器对直流电机的转速进行测量,将测得的转速传送到单片,再通过LCD显示出来。本论文主要介绍了直流电机调速系统的原理和方案设计,单片机如何产生PWM信号,H桥驱动电路设计,硬件电路图的设计与连接,实现功能的流程图和程序,系统的仿真和调试。
 
单片机程序源码:

#include

#define uchar unsigned char

#define uint unsigned int 

void displaym();

sbit en=P2^5;                //1602  6管脚

sbit rs=P2^7;         //1602端口        4管脚

sbit rw=P2^6;//lcd1602控制端口 5管脚

sbit num1=P1^0;                                                //占空比加1

sbit num2=P1^1;                                                                   //占空比减一

sbit num3=P1^2;                                                                                           //正传

sbit num4=P1^3;                                                                                                         //反转

sbit num5=P1^4;                                                                                                                   //开始停止切换


sbit out=P3^4;                                                         //PWM输出用于正传

sbit out1=P3^7;                        //PWM输出用于反转


uint zhuansu,flag,z1,z2,m,flag_1,zheng,fan,kai;





void delay(uint z)//延时1ms函数

{


uint x,y;

for(x=0;x     for(y=0;y<110;y++);

}




void write_com(uchar com)//向1602写一字节(控制指令)

{

  rs=0;

  P0=com;

  delay(5);

  en=0;

  delay(10);

  en=1;

}

void write_data(uchar date)//向1602写一字节(数据)

{

  rs=1;

  P0=date;

  delay(5);

  en=0;

  delay(5);

  en=1;

}

void init()//初始化函数

  en=0;

  rw=0;

  write_com(0x01);         //lcd初始化

  write_com(0x38);                                           //5X7显示

  write_com(0x0c);                         //关闭光标

  TMOD=0x01;               //定时器方式1           

  TH0=0xdc;

  TL0=0x00;                //定时器装入初值 

  EA=1;                    //开总中断 

  ET0=1;                   //定时器0开中断

  TR0=1; 

  EX1=1;

IT1=1;                 //定时器启动  

TH1=0xfc;

  TL1=0x66;//定时100us

  ET1=1;                   //定时器1开中断

  TR1=1;

  write_com(0x80);

  write_data('V');

  write_data(':');

  write_com(0x87);                 //第一行显示转速

  write_data('r');

  write_data('p');

  write_data('m');

  write_com(0xc0); 

  write_data('z');

  write_data('h');

  write_data('a');

  write_data('n');

  write_data('k');

  write_data('o');

  write_data('n');

  write_data('g');

  write_data('b');

  write_data('i');          //在第二行显示zhankongbi:

  write_data(':');

  displaym();

}

void keyscan()  //键盘扫描函数

  if(num1==0)     

  {

    delay(5);      //消除抖动

         if(num1==0)

         {

                if(m<=199)

                 m++;

                        displaym();                                                                  //设定占空比加一

     }

  }

  if(num2==0)

  {

    delay(5);

         if(num2==0)

         {

                  if(m>=1)

                m--;

                        displaym();                                        //设定占空比减一

        

         }

  }

    if(num3==0)

  {

    delay(5);

         if(num3==0)

         {

          zheng=1;                //正传标志置1

          fan=0;          // 反转标志置0

        

         }

  }

      if(num4==0)

  {

    delay(5);

         if(num4==0)

         {

          zheng=0;                 //正传标志置0

          fan=1;          // 反转标志置1

        

         }

  }

      if(num5==0)

  {

    delay(5);

         if(num5==0)

         {

         while(num5==0)         ;

          kai=1-kai;

         }

  }

}

void display()

{

  write_com(0x82);

  zhuansu=zhuansu*30;          //将两秒内的计数乘以30得到转每分


  if(zhuansu/10000!=0)

   write_data(zhuansu/10000+0x30);                                                  //如果转速的万位不为0        正常显示否则显示空格

   else

   write_data(' ');


  if(zhuansu/1000==0)

  write_data(' ');

  else 

  write_data(zhuansu%10000%1000+0x30);                                                                //如果转速小于1000 千位为空格 否则正常显示

  

  if(zhuansu/100==0)

  write_data(' ');

  else

  write_data(zhuansu%10000%1000/100+0x30);                                           //如果转速小于100 百位为空格 否则正常显示


    if(zhuansu/10==0)

  write_data(' ');

  else

  write_data(zhuansu%10000%1000%100/10+0x30);                                  //如果转速小于10 十位为空格 否则正常显示


  write_data(zhuansu%10000%1000%100%10+0x30);

  write_com(0xd0);                          //如果没有这句,当中断内的显示函数执行完,就会在转速的位置显示占空比数据,导致乱码

}

void displaym()

{

write_com(0xcb);

   if(m/200%10!=0)

  write_data(m/200%10+0x30);                           //如果占空比百位不为0则显示百位否则显示空格

  else 

  write_data(' ');

  

  if(m/200%10==0&&m/20%10==0)

  write_data(' ');

  else

  write_data(m/20%10+0x30);                                 //如果占空比小于10 十位正常显示  否则显示空格

  

  write_data(m/2%10+0x30);                                 //显示个位

}

void main()

{

    flag_1=0;

        m=100;                                                         //占空比为100

        zhuansu=0;                                           //转速初值0

        flag=0;

        zheng=1;                                  //初始化电机正转动

推荐阅读

史海拾趣

ACL staticide公司的发展小趣事

ACL Staticide是一家专业生产静电控制产品的公司,以下是该公司发展的五个相关故事:

  1. 公司成立和起步阶段: ACL Staticide成立于1971年,总部位于美国伊利诺伊州,是一家专注于静电控制产品的制造商。公司最初致力于研发和生产静电消除剂、清洁剂和防静电地板涂层等产品,用于解决静电问题带来的种种困扰,如静电放电、静电积聚等。

  2. 技术创新和产品拓展: 随着市场对静电控制需求的增长,ACL Staticide不断进行技术创新,并拓展了产品线。公司推出了一系列静电控制产品,包括静电消除器、清洁剂、防静电地板涂层、静电测试仪器等,以满足各种不同行业的需求。

  3. 市场拓展和国际合作: ACL Staticide积极开拓国内外市场,与全球各地的客户建立了合作关系。公司的产品被广泛应用于电子制造、半导体、医疗、航空航天、汽车等领域,赢得了客户的信赖。同时,ACL Staticide与国际知名企业合作,共同推动静电控制技术的发展。

  4. 持续投入研发和质量控制: ACL Staticide不断加大研发投入,致力于产品质量和技术创新。公司设立了专门的研发团队和实验室,不断改进现有产品,并开发新的静电控制解决方案,以满足客户不断变化的需求。

  5. 未来发展展望: ACL Staticide将继续致力于静电控制产品的研发和应用,不断推出更先进、更可靠的产品和解决方案,以满足客户在各个领域的需求。公司将加强国际市场拓展,提升自身在全球市场的竞争力,为行业的发展做出更大的贡献。

Global Specialties公司的发展小趣事

近年来,创客文化在全球范围内兴起,Global Specialties迅速抓住了这一趋势。公司推出了一系列创客/DIY产品,包括各种模块化的电子元件和工具,旨在帮助创客们实现他们的创意和想法。通过举办线上线下的创客活动,Global Specialties不仅促进了创客之间的交流与合作,还进一步扩大了自己的品牌影响力。

E. Dold & Söhne KG公司的发展小趣事

在追求经济效益的同时,E. Dold & Söhne KG公司也高度重视环保和可持续发展。公司积极引进环保技术和设备,降低生产过程中的能耗和废弃物排放。此外,公司还倡导绿色采购和绿色供应链管理,推动整个产业链向环保和可持续方向发展。这种对环保和可持续发展的关注使得E. Dold & Söhne KG公司在行业内树立了良好的社会形象。

超霸(GP)公司的发展小趣事

绿索超容深知技术创新是企业发展的核心动力。因此,公司积极与东南大学、南京大学等高校开展合作,引入具有自主知识产权的独特技术和工艺,成功开发出GS系列有机双电层超级电容及模组。这些产品不仅在性能上达到了国际领先水平,还获得了多项技术专利。技术上的突破,不仅提升了绿索超容的市场竞争力,也为其赢得了业界的广泛认可。

Allied Wire & Cable Inc公司的发展小趣事

Allied公司成立于XXXX年,起初是一家小型电线电缆供应商。在创业初期,公司创始人凭借对电线电缆行业的深刻理解和丰富的行业经验,成功开发出了一系列质量上乘、性能稳定的电线电缆产品。通过不懈的努力和优质的客户服务,Allied公司逐渐在市场中树立起了良好的口碑,为后续的发展奠定了坚实的基础。

Clulite公司的发展小趣事
  1. 创业初期
    • 描述Clulite公司的创始人或核心团队如何识别电子行业中的某个市场机遇。
    • 讲述他们是如何筹集初始资金,设立公司,并开发出第一款产品或解决方案的。
    • 可以提及公司在初创阶段面临的挑战,如技术难题、市场竞争等。
  2. 技术创新
    • 讲述Clulite如何通过研发创新,推出了一款颠覆性的产品或技术,从而获得了市场认可。
    • 详细描述这一创新过程,包括研发团队的努力、关键技术的突破等。
    • 提及这一创新如何帮助公司在市场上取得了竞争优势。
  3. 市场拓展
    • 描述Clulite如何逐步扩大市场份额,从地区市场走向全国乃至国际市场。
    • 可以讲述公司如何建立销售网络、与合作伙伴建立合作关系,以及参与行业展会等活动来推广品牌和产品。
    • 提及公司在市场拓展过程中遇到的挑战和应对策略。
  4. 品质管理
    • 讲述Clulite如何注重产品质量和客户体验,通过严格的质量控制流程来提升产品可靠性。
    • 描述公司如何建立完善的售后服务体系,为客户提供及时、专业的支持。
    • 提及这些举措如何帮助公司赢得了客户的信任和口碑。
  5. 可持续发展
    • 讲述Clulite如何关注环境保护和社会责任,推动公司的可持续发展。
    • 描述公司如何采取环保措施,减少生产过程中的污染排放。
    • 提及公司如何参与社会公益事业,回馈社会。

请注意,这些故事需要根据Clulite公司的实际情况进行调整和补充。如果你需要更具体的内容,建议查阅Clulite公司的官方网站、新闻报道或行业分析报告,以获取更详细的信息和数据。

问答坊 | AI 解惑

pll

PLL,,,ADF4108…

查看全部问答>

proteus ARES 画PCB视频教程

点击进入下载-proteus_ARES视频教程.rar 附件太大,放在网盘…

查看全部问答>

适合 DIY显存8M的单片机显卡的开源操作系统RT-THREAD

网址:http://www.rt-thread.org 内核及组件 实时线程操作系统(RT-Thread) 是一款主要由中国开源社区主导开发的开源实时操作系统(许可证GPLv2)。实时线程操作系统不仅仅是一个单一的实时操作系统内核,它也是一个完整的应用 系统,包含了 ...…

查看全部问答>

nand Flash 问题

本人初学nand  flash,有几个问题不太明白, 1.nand flash中chip,die, bank ,zone,block,page等概念之间什么关系,以及它们的具体含义! 2.nand flash  spec资料一般那里找。      …

查看全部问答>

fft函数库的问题

对一个正弦波进行FFT,第0组数据应该是直流分量,第1组数据应该是基波吧?直流分量取模应该是有效值的一半,基波取模就是有效值吧?对吗?…

查看全部问答>

XDS510 USB2.0 , CCS2.2连接f2812出错

前一段时间用ccs连接该DSP开发板一直都没有什么问题, 但是最近怎么都连不上同一块开发板了, 报错为Can\'t Initialize target cpu: 1. Target initialization failed< -1294>; 2. Check target power, and JTAG connection 重装了系统, 重新 ...…

查看全部问答>

Google高空热气球项目Project Loon

北京时间6月25日消息,据国外媒体报道,Google官方近日公布了数张Project Loon项目的动态图片。 上周,Google宣布了高空热气球项目Project Loon,该项目旨在为难以构建高速互联网的偏远地区提供价格低廉的网络服务。Project Loon官方网站称,高空热 ...…

查看全部问答>

ADI设计问答:为什么我精心设计的有源滤波器未能达到其技术指标要求?

回答:这是因为许多有源滤波器软件忽略了“实际的”放大器特性。 最近,我度假去红海潜水。临行之前,我把自己的手机和计算机都留在了家里,并把所有的工作都暂时抛在一边。但是,我却犯了一个愚蠢的错误,那就是用带有\"Analog Devices\"字样的帆 ...…

查看全部问答>

[PCB] 关于PCB设计要点分析

[PCB] 关于PCB设计要点分析 当前社会,大量的电子产品广泛的应用在我们的日常工作、生活当中,所以他们的可靠性需要保证,而绝大多数通过印制电路板的电子系统、设备,必须要有合理的设计原理图,正确的印制电路板,才可以从根本上提高他们的可靠 ...…

查看全部问答>

艾曼第四代四代图像处理采集识别检测fpga开发板套件

去年淘宝买来做毕业设计,现闲置无用,九成九新,附送所有资料,以及关于视频图像的研究生论文。有意者QQ:471293219! 淘宝店家资料:http://item.taobao.com/item.htm? ... 4034&_u=u2b1kmce065 …

查看全部问答>