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

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

3天内不再提示

通过51单片机实现直流电机调速

DS小龙哥-嵌入式技术 来源:DS小龙哥-嵌入式技术 作者:DS小龙哥-嵌入式技 2023-06-29 09:14 次阅读

一、项目背景及目的

随着各种工业生产设备和机械设备的广泛使用,直流电机调速技术的研究和应用越来越受到人们的重视,具有广泛的应用前景。本项目通过51单片机实现直流电机调速功能,为实际工程应用提供一个可靠和有效的调速方案。

image-20230618190643215

image-20230618190706115

二、设计思路

(1)系统原理

本系统采用PWM(脉冲宽度调制)技术对直流电机进行调速控制。通过改变输出信号的占空比,实现对直流电机的转速控制。系统中包括51单片机、直流电机、电路板以及控制程序。

(2)硬件设计

  1. 电机:使用24V直流电机实现实际转速控制。
  2. 驱动电路:使用四个寄生二极管三相全桥驱动电路控制电机,使电机可以正反转,并控制电机的速度。
  3. 51单片机:使用STC89C52单片机,作为控制核心。单片机通过捕捉外部信号和计算控制电压来实现对电机的转速控制。同时还需通过编写程序来控制电机的启动、停止等操作。
  4. 显示器:使用1602LCD显示屏,显示转速和其他操作信息
  5. 电源:使用24V直流电源作为系统的电源。

(3)软件设计

  1. 采用C语言编写单片机程序进行控制。
  2. 实现PWM技术控制直流电机的转速。通过调整占空比来改变输出电压,从而达到控制直流电机转速的目的。
  3. 使用定时器模块实现计数来测量电机的转速,并通过显示器实时显示。
  4. 设定按键和旋钮控制,如启动、停止电机等。

三、设计代码

#include < reg52.h >
 ​
 sbit MotorP = P1^0;      //定义电机正极口
 sbit MotorN = P1^1;      //定义电机负极口
 float V_motor = 0;       //定义电机控制电压
 unsigned int speed = 0;  //定义电机转速//初始化函数
 void Init()
 {
     //定时器计数器及工作模式设置
     TMOD |= 0x01;         //T0定时器模式1
     TH0 = 0xfc;           //定时计数最大值,控制PWM频率
     TL0 = 0x00;           //初值为0
     TR0 = 1;              //启动T0定时器//ADC设置
     ADC_CONTR = 0x84;     //启动AD转换器
 }
 ​
 //ADC采样函数
 float ADConvert()
 {
     ADC_CONTR &= 0xEF;    //清除AD转换结束标志位
     ADC_CONTR |= 0x40;    //启动AD转换
     while(!(ADC_CONTR & 0x10));  //等待转换完成
     return ADC_RES;       //返回转换结果
 }
 ​
 //计算电机控制电压函数
 void ControlMotor()
 {
     unsigned int value = ADConvert();  //采集电位器输出
     V_motor = (value / 1023.0) * 5;    //根据电压分压公式计算电机控制电压
 }
 ​
 //控制电机函数
 void DriveMotor()
 {
     if(V_motor >= 2.5)       //当电位器输出电压大于2.5V时电机正转,当小于2.5V时电机反转
     {
         MotorP = 1;
         MotorN = 0;
     }
     else if(V_motor < 2.5)
     {
         MotorP = 0;
         MotorN = 1;
     }
 ​
     speed = 60 * 1000 / (3 * TH0 * 12);   //根据定时器计数值计算电机转速
 }
 ​
 //显示函数
 void Display()
 {
     //将电机转速和状态信息显示在LCD显示屏上
 }
 ​
 //主函数
 void main()
 {
     Init();       //初始化函数while(1)
     {
         ControlMotor();     //计算电机控制电压
         DriveMotor();       //控制电机运行
         Display();          //显示电机状态
     }
 }
 ​

审核编辑 黄宇

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

    关注

    6035

    文章

    44554

    浏览量

    634635
  • 直流电机
    +关注

    关注

    36

    文章

    1710

    浏览量

    70156
  • 调速
    +关注

    关注

    1

    文章

    139

    浏览量

    21960
收藏 人收藏

    评论

    相关推荐

    基于单片机的AT89C51直流电机PWM调速系统

    基于单片机的AT89C51直流电机PWM调速系统文章设计了以单片机AT89C51和L298控制
    发表于 12-07 16:34

    51单片机控制直流电机调速电路的方法

    51单片机控制直流电机调速电路(含C语言源程序)51单片机控制
    发表于 07-14 06:44

    如何去实现直流电机调速

    控制电动机电枢电压,实现调速。目前已有许多文献介绍直流电机调速,宋卫国等用89C51单片机
    发表于 07-14 06:12

    怎样去设计基于51单片机的霍尔直流电机PWM调速系统

    基于51单片机的霍尔直流电机PWM调速系统有哪些具体功能?怎样去设计基于51单片机的霍尔
    发表于 10-19 08:53

    MCS-51单片机直流电机闭环调速系统中的应用

    摘要:针对目前直流电机闭环调速系统的成本和控制精度问题,通过探讨MCS-51系列单片机的通用性和易用性,提出了一种采用该系列
    发表于 09-19 22:42 210次下载

    直流电机调速

    51单片机直流电机进行调速,可以调频率和调占空比,可以测直流电机的速度
    发表于 05-23 17:03 20次下载

    基于AVR单片机实现直流电机PWM调速控制器

    基于AVR单片机实现直流电机PWM调速控制器
    发表于 10-15 10:19 28次下载
    基于AVR<b class='flag-5'>单片机</b><b class='flag-5'>实现</b>的<b class='flag-5'>直流电机</b>PWM<b class='flag-5'>调速</b>控制器

    基于AT89C51单片机直流电机PWM调速程序分享

    这是一款AT89C51单片机直流电机PWM调速程序,程序可以直接用于AT89C52、AT89S51、AT89S
    发表于 10-19 16:03 1.7w次阅读

    基于51单片机直流电机PWM调速程序

    这是一款AT89C51单片机直流电机PWM调速程序,程序可以直接用于AT89C52、AT89S51、AT89S
    的头像 发表于 10-24 15:56 4.9w次阅读
    基于<b class='flag-5'>51</b><b class='flag-5'>单片机</b><b class='flag-5'>直流电机</b>PWM<b class='flag-5'>调速</b>程序

    使用51单片机实现PWM直流电机调速的程序和注释详细资料免费下载

    本文档的主要内容详细介绍的是使用51单片机实现PWM直流电机调速的程序和注释详细资料免费下载.
    发表于 11-05 18:05 83次下载
    使用<b class='flag-5'>51</b><b class='flag-5'>单片机</b><b class='flag-5'>实现</b>PWM<b class='flag-5'>直流电机</b><b class='flag-5'>调速</b>的程序和注释详细资料免费下载

    使用51单片机控制直流电机调速的程序免费下载

    本文档的主要内容详细介绍的是使用51单片机控制直流电机调速的程序免费下载,通过P1.0口来控制直流电机
    发表于 06-13 17:45 48次下载
    使用<b class='flag-5'>51</b><b class='flag-5'>单片机</b>控制<b class='flag-5'>直流电机</b><b class='flag-5'>调速</b>的程序免费下载

    使用51单片机控制直流电机的代码免费下载

    本文档的主要内容详细介绍的是使用51单片机控制直流电机的代码免费下载包括了:点动控制两个直流电机正反转电位器调速,分别控制两个
    发表于 06-24 08:00 25次下载
    使用<b class='flag-5'>51</b><b class='flag-5'>单片机</b>控制<b class='flag-5'>直流电机</b>的代码免费下载

    51单片机实现PWM直流电机调速(注释详细)

    51单片机实现PWM直流电机调速(注释详细)(电源技术投稿)-51
    发表于 09-24 14:58 250次下载
    <b class='flag-5'>51</b><b class='flag-5'>单片机</b><b class='flag-5'>实现</b>PWM<b class='flag-5'>直流电机</b><b class='flag-5'>调速</b>(注释详细)

    51单片机步进电机测试程序&直流电机测试程序

    51单片机步进电机测试程序&直流电机测试程序(通信电源技术 期刊查稿)-51单片机步进
    发表于 09-24 15:53 110次下载
    <b class='flag-5'>51</b><b class='flag-5'>单片机</b>步进<b class='flag-5'>电机</b>测试程序&<b class='flag-5'>直流电机</b>测试程序

    使用单片机实现直流电机的PWM调速控制原理图

    使用单片机实现直流电机的PWM调速控制
    发表于 12-10 15:29 0次下载