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

发布者:码字狂徒最新更新时间:2023-09-05 来源: elecfans关键字:51单片机  直流电机  调速 手机看文章 扫描二维码
随时随地手机看文章

一、项目背景及目的

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

image-20230618190643215

image-20230618190706115

二、设计思路

(1)系统原理

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


(2)硬件设计

电机:使用24V直流电机实现实际转速控制。

驱动电路:使用四个寄生二极管三相全桥驱动电路控制电机,使电机可以正反转,并控制电机的速度。

51单片机:使用STC89C52单片机,作为控制核心。单片机通过捕捉外部信号和计算控制电压来实现对电机的转速控制。同时还需通过编写程序来控制电机的启动、停止等操作。

显示器:使用1602LCD显示屏,显示转速和其他操作信息。

电源:使用24V直流电源作为系统的电源。

(3)软件设计

采用C语言编写单片机程序进行控制。

实现PWM技术控制直流电机的转速。通过调整占空比来改变输出电压,从而达到控制直流电机转速的目的。

使用定时器模块实现计数来测量电机的转速,并通过显示器实时显示。

设定按键和旋钮控制,如启动、停止电机等。

三、设计代码

#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();          //显示电机状态

     }

 }


关键字:51单片机  直流电机  调速 引用地址:通过51单片机实现直流电机调速

上一篇:用51单片机来测试成分的含铁量
下一篇:分享一个51单片机交通信号灯仿真电路图

推荐阅读最新更新时间:2024-11-02 05:57

51单片机(六)—— GPIO控制多路LED
本文中,我们对多路LED进行控制,硬件电路如下图所示 在《51单片机(五)—— GPIO点亮一个LED》中,已经对这个电路做了详细介绍,这里不再详述。 在这个实验中,我们采用两种方法对多路LED进行控制,实验是需要把J21接口的8个引脚与单片机的P0口的8个引脚分别连接在一起。 方法一: 实现代码如下所示 #include reg52.h //包含头文件,一般情况不需要改动, sbit LED1=P0^0; //用sbit关键字 定义LED1到P00端口, sbit LED2=P0^1; sbit LED3=P0^2; sbit LED4=P0^3; sbit LED5=P0^4; sbit LED6=P0^5
[单片机]
<font color='red'>51单片机</font>(六)—— GPIO控制多路LED
51单片机定时器的应用
用51单片机定时器产生周期的8种不同频率的方波;其中定时器1控制频率时间,即每个波形4s;定时器0控制波形的频率; #include reg52.h #define uint unsigned int #define uchar unsigned char sbit p23=P2^3; uint frq,flag; void main() { TMOD=0x11; frq=50000; flag=0; TH0=(65536-frq)/256; TL0=(65536-frq)%256; //开始定时为50Ms TH1=(65536-50000)/256; TL1=(65536-50000)%256; //定时50ms
[单片机]
MCS-51单片机的时序单位
时序是用定时单位来描述的,MCS-51 单片机 的时序单位有四个,它们分别是节拍、状态、机器周期和指令周期,接下来我们分别加以说明。 ·节拍与状态: 我们把振荡脉冲的周期定义为节拍(为利便描述,用P表示),振荡脉冲经由二分频后即得到整个单片机工作系统的时钟信号,把时钟信号的周期定义为状态(用S表示),这样一个状态就有两个节拍,前半周期相应的节拍我们定义为1(P1),后半周期对应的节拍定义为2(P2)。 ·机器周期: MCS-51有固定的机器周期,划定一个机器周期有6个状态,分别表示为S1-S6,而一个状态包含两个节拍,那么一个机器周期就有12个节拍,我们可以记着S1P1、S1P2……S6P1、S6P2,一个机器周期共包含12个振荡
[单片机]
51单片机驱动 LCD1602液晶显示系统
废话不多说先上实物图 LCD1602+51单片机最小系统应用仿真及制作 好了,接下来正式进入制作环节: 第一步:仿真 绘制好原理图,仿真时单片机最小系统只放一个单片机就可以了,但实际电路中需要加上电源模块、复位模块。如下图: 原理图文件请在附件中找。 原理图绘制好后,编写代码并生成hex文件。参考代码如下: /*功能/ /使用外部中断INTO改变LED状态,并且用1602显示出其状态/ #include reg51.h #include intrins.h #define uint unsigned int #define uchar unsigned char uchar code table = H
[单片机]
<font color='red'>51单片机</font>驱动 LCD1602液晶显示系统
需要使用直流电机调速器的场合
需要使用直流电机调速器的场合有以下几种: 1.需要较宽的调速范围; 2.需要较快的动态响应速度; 3. 加、减速时需要自动平滑的过渡过程; 4.需要低速运转时大扭矩; 5.需要较好的动态硬特性,能将过载电流自动限止在设定电流范围内。 以上五点也是直流调速器的应用特点。
[嵌入式]
实验一:清零、移数、判断(80C51单片机汇编语言编程)
将片内30H~40H及片外0010H~0100H清零,然后将片内41H~47H的内容移到片外0041H~0047H,判断 1、若(0041H) 15,则求平方存放到0050H中,并将位00H置1 2、若(0041H)=15,则加15存放到0050H中,并将位01H置1 3、若(0041H) 15,则减15存放到0050H中,并将位02H置1 汇编程序: ORG 0000H;设置初始地址 MOV R0,#30H;对片内30H~40H清零 MOV R1,#11H CLR A CON1:MOV @R0,A INC R0 DJNZ R1,CON1 MOV
[单片机]
51单片机I/O端口的读写操作
MCS-51单片机通常有4个8位I/O端口, 向各端口的写数据均写入到对应端口的锁存器中, 但对各端口的读操作却有两个方式:读锁存器和读引脚 1 读-修改-写操作 Pn(指P0,P1,P2,P3)在51汇编语言中是特殊的标识符,既代表Pn端口引脚,又代表Pn锁存器(Pn SFR)。在MCS-51指令系统中有些指令读锁存器的值, 有些指令则读引脚上的值。读锁存器指令是从锁存器中读取一个值并进行处理, 把处理后的值(原值或已修改后的值)重新写入锁存器中。这类指令称为读-修改-写指令, 表1列举了有该功能的指令 当目的操作数是Pn端口或Pn端口的某一位时. 该指令读取锁存器的值. 这些指令的一个共同特点, 就是要先并行读
[单片机]
<font color='red'>51单片机</font>I/O端口的读写操作
正确使用直流电机调速器延长使用寿命
直流电机调速器就是调节直流电动机速度的设备, 由于直流电动机具有低转速大力矩的特点,是交流电动机无法取代的, 因此调节直流电动机速度的设备—直流调速器。 由于它的特殊性能、常被用于直流负载回路中、灯具调光或直流电动机调速、HW-1020型调速器、就是利用脉宽调制(PWM)原理制作的马达调速器、PWM调速器已经在:工业直流电机调速、工业传送带调速、灯光照明调解、计算机电源散热、直流电扇等、得到广泛应用。怎样才能提高调速器的使用寿命呢? 直流电机调速器的正确使用方法 1、将直流调速器机箱置于通风良好、无腐蚀性气体的场所。检查一下内部螺丝有无因运输而松动。 2、接入交流电源线,按正负接好励磁电压,否则会造成反转。 3、在主电枢电
[嵌入式]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved