具体实现功能
系统由STC89C52单片机、LCD1602液晶显示屏、霍尔测速传感器、3V直流电机、按键模块构成。
具体功能:
1、采用霍尔传感器非接触式测电机转速;
2、LCD1602液晶显示当前的转速(单位为转/分(RPM))和当前的PWM占空比0~100%;
3、电机转速可以通过按键调整,也可以开始暂停,正转和反转;
4、按键可实现加速、减速、正转、反转、开始/暂停等功能。
使用说明:
液晶屏第一行显示电机转速,第二行显示占空比,占空比数值越大,电机转速越快。
系统一共有6个按键,单片机附近的独立按键是系统的复位按键,按下单片机会复位。
下面一排是控制按键:
1键:加速键,可以短按,占空比加1,也可长按,占空比连续加;
2键:减速键,可以短按,占空比减1,也可长按,占空比连续减;
3键:正转切换键,按下后电机正转;
4键:反转切换键,按下后电机反转;
5键:开始暂停键,按一下开始,再按一下暂停。
设计背景
在现代电子产品中,自动控制系统,电子仪器设备、家用电器、电子玩具等等方面,直流电机都得到了广泛的应用。大家熟悉的录音机、电唱机、录相机、电子计算机等,都不能缺少直流电机。所以直流电机的控制是一门很实用的技术。直流电机,大体上可分为四类:几相绕组的步进电机、永磁式换流器直流电机、伺服电机、 两相低电压交流电机
直流电机的特点是启动转矩大,最大转矩大,转速控制容易,调速后效率很高。与交流调速相比,直流电机结构复杂,生产成本高,维护工作量大。随着大功率晶体管的问世以及矢量控制技术的成熟,使得矢量控制变频技术获得迅猛发展,从而研制出各种类型、各种功率的变频调速装置,并在工业上得到广泛应用。适用范围:直流调速器可以应用在造纸印刷、纺织印染、光缆设备、电工技术设备、食品加工机械、橡胶加工机械、生物制药设备、电路板设备、实验器材 、特种加工、轻工业、 输送设备 车辆工程、医疗设备、通讯设备、雷达设备 等行业中。高性能的交流传动应用比重逐年上升,在工业部门中,用可调速交流传动取代直流传动将成为历史的必然。
硬件设计
本系统采用STC89C51控制输出数据,由单片机IO口产生PWM信号,送到直流电机,直流电机通过测速电路将实时转速送回单片机,进行转速显示,从而实现对电机速度和转向的控制,达到直流电机调速的目的。
软件设计
调速采用PWM(Pulse Width Modulation)脉宽调制,工作原理:通过产生矩形波,改变占空比,以达到调整脉宽的目的。PWM的定义:脉宽调制(PWM)是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术,广泛应用在从测量、通信到功率控制与变换的许多领域中。模拟信号的值可以连续变化,其时间和幅度的分辨率都没有限制。
原理图
本系统原理图设计采用Altium Designer19,具体如图。
程序
本设计利用KEIL5软件实现程序设计,具体如图。
仿真实现
本设计利用protues8.7软件实现仿真设计,具体如图。
关键字:51单片机 直流电机 PWM调速
引用地址:
基于51单片机直流电机PWM调速设计
推荐阅读最新更新时间:2024-11-11 11:25
基于51单片机的呼吸灯
原理: 由于人眼的视觉残留特性:人眼在观察景物时,光信号传入大脑神经,需经过一段短暂的时间,光的作用结束后,视觉形象并不立即消失,这种残留的视觉称“后像”,视觉的这一现象则被称为“视觉暂留”。 举例: 我们家里使用的灯是50Hz,一秒钟会亮灭50次,但是我们觉得灯是一直亮着的。 但是亮和暗的程度取决于发光和不发光所占时间的长短比例,但是亮和灭的持续时间不能超过1/24秒(视觉残留最长时间) 程序设计: #include reg52.h typedef unsigned int u16; typedef unsigned char u8; sbit LED=P2^0; //LED void delay(u
[单片机]
51单片机的i2c多字节的读写24c02
使用Keil的编译环境下载,确实能够下载,但是入口的地址是如下黄色的那行显示所示,如果单步执行(F11)或全速运行(F5),程序始终在原位置不动(0x1FFF4252),如果强制的将PC指针的值和SP的值修改为0x8000000与0x2000000,然后在点击运行,则能够跑到main()函数,再全速运行,能够看到客户板子上的LED灯的闪烁。 但是如果不强制修改PC和SP指针的值,则程序不执行。 所以问题就变成为什么程序下载进去后的地址是0x1FFF4252?0x1FFF4252又是什么地址呢?查阅相应的手册,发现0x1FFF4252是处在了Systemmemory区域。 用万用表测量了客户板上的Boot0引脚的电平,发现电平
[单片机]
51单片机12M晶振的延时程序
这是本人慢慢调出来的参数,有误差是必须的,除非用汇编才会精确,后续我会更新修改,尽量精确。 调试环境:Keil V4.02 源代码如下: #include reg52.h #include intrins.h //--延时0.2*n(ms)函数,若需延时1ms,则*5。适合延时50ms以下或左右的--// void DelayMSx02(unsigned char n) { unsigned char x, y; for(x=n; x 0; x--) for(y=96; y 0; y--); //for循环中的 -- 位置前后都可以 } //--延时t*2+5(us)函数 --// void DelayUS
[单片机]
51单片机实现printf
printf函数在格式化输出时,向下调用了char putchar(char c);这个函数,在“stdio.h”里可以发现有这个函数,所以我们需要自己构造一个这样的函数,即通过串口putchar(),代码如下: char putchar(char c)//重定向 { Uart_SendChar(c); return c; } void Uart_SendChar(unsigned char dat) { SBUF = dat; while(!TI); TI = 0; } 然后串口初始化之后,将 stdio.h 头文件包含,就可以使用printf函数了。 NOTE: 使用stdio库中的pr
[单片机]
51单片机电子时钟程序
这是用单片机仿真软件做的一个电子时钟程序 电路图在下面: #include reg52.h #include intrins.h #include stdlib.h #define uint unsigned int #define uchar unsigned char sbit RS=P2^0; sbit RW=P2^1; sbit E=P2^2; sbit BF=P0^7; sbit d=P2^3; unsigned char code string ={ Test Result }; unsigned char code digit ={ 0123456789 }; void delay1ms() { un
[单片机]
51单片机中XTYBE的使用及外围设备扩展地址编址的方法
XTYBE 说法一: 2楼: ABSACC.h,XBYTE的定义是这样的, #define XBYTE ((unsigned char volatile xdata *) 0),XBYTE就相当于一个指向外部数据区的无符号字符型变量的指针(的名称,且当前的指针指向外部RAM的0地址),而在C里面指针一般和数组是可以混用的。这样也就相当于存在 一个定义在外部数据存储器的数组XBYTE ,直接使用下标就可访问其中的每个单元。 【从其它嵌入式的C带来的习惯,一直使用*(unsigned char volatile xdata *)(0x2000)=0xFF这类的方式来进行对外部绝对地址的字节访问。 】 5楼: 呵呵,倒过来写都行...
[单片机]
51单片机双机通讯
//两个单片机通讯,使用中断法 #include reg51.h #define uchar unsigned char #define uint unsigned int #define key_port P1 #define dis_port P2 void main (void) { uchar key_in=0xff; SCON=0x50; //MODER1,REN=1; TMOD=0x20; //TIMER1 MODER2; TH1=0xf3; //bode=2400 TL1=0xf3; ET1=1; TR1=1; EA=1; ES=1; while(1) { if (key_in
[单片机]
基于89C51单片机、RAM和8251实现无线电台通信卡的设计
当今信息时代,人们需要多种多样的通信手段和设备,常见的不论是有线电话还是无线电台,都为模拟信道,适合传送模块话音信号。目前,通过公用电话网进行计算机通信的技术已经成熟。而无线电台特点是老式电台,在我国使用范围很广,拥有量很大,但其功能单一,不能适应当前数据通信的要求,如何对其进行技术改造,增加数据能信功能,就显得尤为必要。为此,研究设计了无线电台用智能数据通信卡(以下简称通信卡),通过该卡,可给以模拟方式作为话通信的无线电台增加数据通信功能,大大提高了老式电台的性价比。该卡体积小,成本低,可放置于电台内部。 1、通信卡的设计思想 从电台实际工作情况考虑,给电台增加数据通信功能后,应注意解决以下问题: ·不能影响原话音通信功能。
[单片机]