单片机控制PWM的直流电机调速系统的设计

这篇具有很好参考价值的文章主要介绍了单片机控制PWM的直流电机调速系统的设计。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


单片机控制PWM的直流电机调速系统的设计 

摘 要:在国民生产中,随着现代技术的发展,电力电子技术已得到了全面的发展,其技术已应用到各个领域。在各类机电系统中,由于直流电机具有良好的启动、制动和调速性能,直流电机调速系统已广泛运用于工业、航天领域的各个方面,最常用的直流调速技术是脉宽调制(PWM)直流调速技术,具有调速精度高、响应速度快、调速范围宽和损耗低的特点.而利用计算机数字控制也成了直流调速的一种手段,数字控制系统硬件电路的标准化程度高,控制软件能够进行复杂运算,可以实现不同于一般线性调节的最优化、自适应、非线性、智能化等控制规律,此外还拥有信息存储、数据通信和故障诊断等模拟系统无法实现的功能


关键字:AT89C51单片机 ;PWM技术;编码器;直流电动机

The Design Of PWM Controlled DC Motor Speed Control System Based On Single Chip 
Abstract:In the national production, along with the development of modern technology, electronic technology has been a comprehensive development, the technology has been applied in various fields. In all kinds of mechanical system, due to the dc motor has a good start, brake and the performance of speed, dc motor control system has been widely used in industry, spaceflight, most commonly used dc speed control technology is a pulse width modulation (PWM) dc speed control technology, which has a high precision, fast response time, high speed range and width of the low loss characteristics  and use of computer digital control has become a kind of method of dc speed control system, the hardware circuit of a high degree of standardization, control software to carry out complex operation can be realized, different from the general linear optimization and adjustment of the adaptive, nonlinear, intelligent control law, also have information storage, data communication and fault diagnosis cannot achieve such simulation system


Keywords: AT89C51 microcontroller; PWM technology; encoder; DC Motor

目   录
1.引言    1
2.系统方案论证    2
2.1 系统总方案论证与选择    2
2.2设计模块方案比较与分析    3
2.2.1   电机调速控制模块    3
2.2.2   PWM调速工作方式    4
3 硬件部分    4
3.1   单片机的选型    4
3.2 PWM控制技术    8
3.3 驱动电路    9
3.3.1 芯片IR2110性能及特点    9
3.3.2 IR2110的引脚图以及功能    9
3.4 PWM 控制H桥双极性主电路    11
3.5检测回路    13
3.5.1光电编码盘    14
3.6 键盘及显示电路    15
3.6.1键盘/显示芯片8279简介    15
3.6.3显示器设计    16
4模块的原理与应用    17
4.1  PWM调脉宽方式    17
4.2定时器/计数器    17
4.3直流电机调速原理    18
4.4 PWM基本原理及实现方法    18
4.5 PWM在直流调速中的应用    18
4.6桥式可逆PWM变换器    19
4.7  M/T法测速原理    21
5软件部分    22
5.1主程序及系统初始化模块    22
5.2模块程序设计    23
5.2.1外部中断0模块设计    23
5.2.2外部中断1模块设计    23
5.2.3内部定时器T0溢出中断设计    23
5.3 中断子程序模块    24
5.4键盘/显示模块设计    24
5.5数字PID流程图    26
5.6源程序    29
谢  辞    35
参考文献    36


1.引言
在电气传动领域中,随着各项技术水平的不断提高,使得传统工艺有了深层次的提高,对人类的生产与生活,产生了深刻且深远的影响,已经与我们息息相关。
由于直流电动机具有良好的起动、制动性能,适宜在大范围内平滑调速,因此在许多需要调速或快速正反向的电力拖动系统中得到了广泛的应用。而且,从控制的角度来看,直流调速还是交流调速,都用到拖动系统的基础。早期直流电动机的控制均以模拟电路为基础,由运算放大器、非线性集成电路以及少量的数字电路组成,控制系统的硬件部分非常复杂,功能单一,而且系统非常不灵活、调试困难, 触发精度易受电网电压波动的影响,触发脉冲不对称度较大,调节器中的运算放大器,因网压和温度变化引起的漂移会产生运算误差,模拟器件老化也会引起运算误差,甚至使已经整定好的系统性能变差,这些都阻碍了直流电动机控制技术的发展和应用范围的推广。随着单片机技术的日新月异,使许多控制功能及算法可以采用软件技术来完成,不但为直流电动机的控制提供了更大的灵活性,而且使系统能达到了更高的性能,从而大大节约了人力资源,降低了系统成本,有效地提高了工作效率。
因为单片机具有小巧灵活、成本低、易于产品化、可靠性好、适应温度范围宽、易扩展、控制功能强等优点,用单片机取代模拟电路作为电动机的控制器,使电路更简单,模拟电路为了实现控制逻辑需要许多电子元件,使电路复杂,使用单片机微处理器后,绝大多数控制逻辑可通过软件实现可以实现较复杂的控制,单片机有更强的逻辑功能,运算速度和精度高、有大容量的存储单元,因此有能力实现复杂的控制灵活性和适应性强,单片机的控制方式是由软件完成的,如果需要修改控制规律,一般不必改变系统的硬件电路,只需修改程序即可,在系统调试和升级时,可以不断尝试选择最优参数,非常方便无零点漂移,控制精度高、数字控制不会出现模拟电路中经常遇到的零点漂移问题,无论被控量的大小,都可以保证足够的控制精度可提供人机界面,多机联网工作等优点。所以在电气传动实时控制系统中受到重视和普遍应用。利用单片机逻辑功能强和软件灵活的优点,不仅可使很多控制硬件软件化,便于参数的设定和调整,而且可以同时对系统工作中的各种信息数据进行诊断、检测和及时处理,加强了实时维护和提高了控制系统的可靠性。它的发展趋势将是向大容量、高性能化、外围电路内装化等方面发展。
2.系统方案论证
2.1 系统总方案论证与选择
方案一:直接加直流电源来控制电机的转动速度;根据电动机在其额定电压时,电动机有一定的额定转速。根据其输入电压的减小,其转动速度也相应的减小。从而在传统的改变电动机的转速问题中,就是利用所给电动机的电压的不同,而达到人们所需要的大约速度。
方案二:以单片机AT89C51为中心通过D/A转换器,将单片机数字量转换为模拟量,从而起到控制电动机的转速问题。其中在单片机控制部分通过按键直接从程序中调出所需要速度的值,同时输到数码显示部分和D/A转换部分以实现电动机的调速。


图1 电路组成框图
方案三:采用AT89C51单片机进行控制。本设计需要使用的软件资源比较简单,只需要完成编码器采样部分、键盘控制部分以及显示输出功能。采用AT89C51进行控制比较简单、易控制、可靠性高、抗干扰能力强、精度高且体积大大减小。输出速度的调节是通过键操作,显示速度。AT89C51是一种带4K字节闪烁可编程可擦除只读存储器的低电压,高性能CMOS8位微处理器.具有4K字节可编程闪烁存储器,可擦除的的只读存储器(PEROM), ATMEL的AT89C51是一种高效微控制器. AT89C51单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案. 三级程序存储器锁定、128*8位内部RAM、32可编程I/O线、两个16位定时器/计数器、5个中断源、可编程串行通道、低功耗的闲置和 电模式、片内振荡器和时钟电路:
电路框图如图2   

图2  电路组成框图
方案分析:方案一只能以减小所给电压值而能使电动机的转速有相应的减小,此方案操作性差且不安全。方案二不能及时的从电动机那里得到相应的转动速度,而是直接从程序哪儿调用相应的数值给数码显示。所以,此处的电路在速度的显示上失去了其真实性。方案三在可操作性与实时性方面都都结合了本专业特点,从控制理论与控制技术出发,充分发挥与应用本学科特点。所以,设计采用方案三。
2.2设计模块方案比较与分析:
2.2.1   电机调速控制模块:
方案一:采用电阻网络或数字电位器调整电动机的分压,从而达到调速的目的。但是电阻网络只能实现有级调速,而数字电阻的元器件价格比较昂贵。更主要的问题在于一般电动机的电阻很小,但电流很大;分压不仅会降低效率,而且实现很困难。
方案二:采用继电器对电动机的开或关进行控制,通过开关的切换对电机的速度进行调整。这个方案的优点是电路较为简单,缺点是继电器的响应时间慢、机械结构易损坏、寿命较短、可靠性不高。
方案三:采用由达林顿管组成的H型PWM电路。用单片机控制达林顿管使之工作在占空比可调的开关状态,精确调整电动机转速。这种电路由于工作在管子的饱和截止模式下,效率非常高;H型电路保证了可以简单地实现转速和方向的控制;电子开关的速度很快,稳定性也极佳,是一种广泛采用的PWM调速技术。
兼于方案三调速特性优良、调整平滑、调速范围广、过载能力大,因此本设计采用方案三。
2.2.2   PWM调速工作方式:
方案一:双极性工作制。双极性工作制是在一个脉冲周期内,单片机两控制口各输出一个控制信号,两信号高低电平相反,两信号的高电平时差决定电动机的转向和转速。
方案二:单极性工作制。单极性工作制是单片机控制口一端置低电平,另一端输出PWM信号,两口的输出切换和对PWM的占空比调节决定电动机的转向和转速。
由于单极性工作制中,应用相对简单易于实现与操作,所以我们采用了单极性工作制。
3 硬件部分
3.1   单片机的选型:
 AT89S51是一个低功耗,高性能CMOS 8位单片机,片内含4k Bytes ISP(In-system programmable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISP Flash存储单元,功能强大的微型计算机的AT89S51可为许多嵌入式控制应用系统提供高性价比的解决方案。
3.1.1主要特性:  
·  8031 CPU与MCS-51 兼容 
· 4K字节可编程FLASH存储器(寿命:1000写/擦循环) 
全静态工作:0Hz-24KHz · 三级程序存储器保密锁定 · 128*8位内部RAM  
· 32条可编程I/O线  
· 两个16位定时器/计数器 
· 6个中断源  
· 可编程串行通道  
· 低功耗的闲置和掉电模式  
· 片内振荡器和时钟电路    
·
图3单片机芯片
3.1.2.管脚说明:  
      VCC:供电电压。  
      GND:接地。  
      P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。  
      P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。  
      P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。  
      P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。  
P3口也可作为AT89C51的一些特殊功能口,如下表所示: 口管脚 备选功能  
P3.0 RXD(串行输入口)  
P3.1 TXD(串行输出口)  
P3.2 /INT0(外部中断0) P3.3 /INT1(外部中断1) P3.4 T0(记时器0外部输入)  
P3.5 T1(记时器1外部输入) P3.6 /WR(外部数据存储器写选通)  
P3.7 /RD(外部数据存储器读选通)  
P3口同时为闪烁编程和编程校验接收一些控制信号。  
 

I/O口的内部结构如图4:   

图4内部结构
I/O口作为输入口时有两种工作方式即所谓的读端口与读引脚读端口时实际上并不从外部读入数据而
是把端口锁存器的内容读入到内部总线经过某种运算或变换后再写回到端口锁存器只有读端口时才真正地把外部的数据读入到内部总线上面图中的两个三角形表示的就是输入缓冲器CPU将根据不同的指令分别发出读端口或读引脚信号以完成不同的操作这是由硬件自动完成的不需要我们操心   读引脚时也就是把端口作为外部输入线时首先要通过外部指令把端口锁存器置1然后再实行读引脚操作否则就可能读入出错为什么看上面的图如果不对端口置1端口锁存器原来的状态有可能为0Q端为0Q^为1加到场效应管栅极的信号为1该场效应管就导通对地呈现低阻抗,此时即使引脚上输入的信号为1也会因端口的低阻抗而使信号变低使得外加的1信号读入后不一定是1若先执行置1操作则可以使场效应管截止引脚信号直接加到三态缓冲器中实现正确的读入由于在输入操作时还必须附加一个准备动作所以这类I/O口被称为准双向口89C51的P0/P1/P2/P3口作为输入时都是准双向口接下来让我们再看另一个问题从图中可以看出这四个端口还有一个差别除了P1口外P0P2P3口都还有其他的功能     RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。    /PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。     /EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。     XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。     XTAL2:来自反向振荡器的输出。 
3.1.3振荡器特性:     XTAL1和XTAL2分别为反向放大器的输入和输出。该反向放大器可以配置为片内振荡器。石晶振荡和陶瓷振荡均可采用。如采用外部时钟源驱动器件,XTAL2应不接。有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。 3.1.4芯片擦除:     整个PEROM阵列和三个锁定位的电擦除可通过正确的控制信号组合,并保持ALE管脚处于低电平10ms 来完成。在芯片擦操作中,代码阵列全被写“1”且在任何非空存储字节被重复编程以前,该操作必须被执行。  
此外,AT89C51设有稳态逻辑,可以在低到零频率的条件下静态逻辑,支持两种软件可选的掉电模式。在闲置模式下,CPU停止工作。但RAM,定时器,计数器,串口和中断系统仍在工作。在掉电模式下,保存RAM的内容并且冻结振荡器,禁止所用其他芯片功能,直到下一个硬件复位为止。 
3.2 PWM控制技术
PWM是Pulse Width Modulation的缩写,即脉冲宽度调制,是通过对一系列脉冲的宽度进行调制,来等效地获得所需要波形(含形状和幅值). 
调速可分为直流调速和交流调速。尽管直流电机比交流电机结构复杂、成本较高、维修保养贵,但是其调速性能好,所以在调速传动领域中一直占主导地位。
3.3 驱动电路
该驱动电路采用了IR2110集成芯片,该集成电路具有较强的驱动能力和保护功能。
3.3.1 芯片IR2110性能及特点
IR2110是美国国际整流器公司利用自身独有的高压集成电路以及无闩锁CMOS技术,于1990年前后开发并且投放市场的,IR2110是一种双通道高压、高速的功率器件栅极驱动的单片式集成驱动器。它把驱动高压侧和低压侧MOSFET或IGBT所需的绝大部分功能集成在一个高性能的封装内,外接很少的分立元件就能提供极快的功耗,它的特点在于,将输入逻辑信号转换成同相低阻输出驱动信号,可以驱动同一桥臂的两路输出,驱动能力强,响应速度快,工作电压比较高,可以达到600V,其内设欠压封锁,成本低、易于调试。高压侧驱动采用外部自举电容上电,与其他驱动电路相比,它在设计上大大减少了驱动变压器和电容的数目,使得MOSFET和IGBT的驱动电路设计大为简化,而且它可以实现对MOSFET和IGBT的最优驱动,还具有快速完整的保护功能。与此同时,IR2110的研制成功并且投入应用可以极大地提高控制系统的可靠性。降低了产品成本和减少体积。
3.3.2 IR2110的引脚图以及功能
引脚1(LO)与引脚7(HO):对应引脚12以及引脚10的两路驱动信号输出端,使用中,分别通过一电阻接主电路中下上通道MOSFET的栅极。
引脚2(COM):下通道MOSFET驱动输出参考地端,使用中,与引脚13(Vss)直接相连,同时接主电路桥臂下通道MOSFET的源极。
引脚3(Vcc):直接接用户提供的输出极电源正极,并且通过一个较高品质的电容接引脚2。
引脚5(Vs):上通道MOSFET驱动信号输出参考地端,使用中,与主电路中上下通道被驱动MOSFET的源极相通。
与引脚6(VB):通过一阴极连接到该端阳极连接到引脚3的高反压快恢复二极管,与用户提供的输出极电源相连,对Vcc的参数要求为大于或等于—0.5V,而小于或等于+20V。
引脚9(VDD):芯片输入级工作电源端,使用中,接用户为该芯片工作提供的高性能电源,为抗干扰,该端应通过一高性能去耦网络接地,该端可与引脚3(Vcc)使用同一电源,也可以分开使用两个独立的电源。
引脚10(HIN)与引脚12(LIN):驱动逆变桥中同桥臂上下两个功率MOS器件的驱动脉冲信号输入端。应用中,接用户脉冲形成部分的对应两路输出,对此两个信号的限制为Vss-0.5V至Vcc+0.5V,这里Vss 与Vcc分别为连接到IR2110的引脚13(Vss)与引脚9(VDD)端的电压值。
引脚11(SD):保护信号输入端,当该引脚为高电平时,IR2110的输出信号全部被封锁,其对应的输出端恒为低电平,而当该端接低电平时,则IR2110的输出跟随引脚10与12而变化。
引脚13(Vss):芯片工作参考地端,使用中,直接与供电电源地端相连,所有去耦电容的一端应接该端,同时与引脚2直接相连。
引脚8、引脚14、引脚4:为空引脚。 

图7 IR2110管脚图

IR2110采用HVIC和闩锁抗干扰CMOS工艺制作,具有独立的高端和低端输出通道;逻辑输入与标准的CMOS输出兼容;浮置电源采用自举电路,其工作电压可达500V,du/dt=±50V/ns,在15V下的静态功耗仅有1.6mW;输出的栅极驱动电压范围为10~20V,逻辑电源电压范围为5~15V,逻辑电源地电压偏移范围为-5V~+5V。IR2110采用CMOS施密特触发输入,两路具有滞后欠压锁定。推挽式驱动输出峰值电流≥2A,负载为1000pF时,开关时间典型值为25ns。两路匹配传输导通延时为120ns,关断延时为94ns。IR2110的脚10可以承受2A的反向电流。 

图8   IGBT驱动电路


3.4 PWM 控制H桥双极性主电路
从上面的原理可以看出,产生高压侧门极驱动电压的前提是低压侧必须有开关的动作,在高压侧截止期间低压侧必须导通,才能够给自举电容提供充电的通路。因此在这个电路中,Q1、Q4或者Q2、Q3是不可能持续、不间断的导通的。我们可以采取双PWM信号来控制直流电机的正转以及它的速度。
将IC1的HIN端与IC2的LIN端相连,而把IC1的LIN端与IC2的HIN端相连,这样就使得两片芯片所输出的信号恰好相反。
在HIN为高电平期间,Q1、Q4导通,在直流电机上加正向的工作电压。其具体的操作步骤如下:
当IC1的LO为低电平而HO为高电平的时候,Q2截止,C1上的电压经过VB、IC内部电路和HO端加在Q1的栅极上,从而使得Q1导通。同理,此时IC2的HO为低电平而LO为高电平,Q3截止,C3上的电压经过VB、IC内部电路和HO端加在Q4的栅极上,从而使得Q4导通。
电源经Q1至电动机的正极经过整个直流电机后再通过Q4到达零电位,完成整个的回路。此时直流电机正转。
在HIN为低电平期间,LIN端输入高电平,Q2、Q3导通,在直流电机上加反向工作电压。其具体的操作步骤如下:
当IC1的LO为高电平而HO为低电平的时候,Q2导通且Q1截止。此时Q2的漏极近乎于零电平,Vcc通过D1向C1充电,为Q1的又一次导通作准备。同理可知,IC2的HO为高电平而LO为低电平,Q3导通且Q4截止,Q3的漏极近乎于零电平,此时Vcc通过D2向C3充电,为Q4的又一次导通作准备。
电源经Q3至电动机的负极经过整个直流电机后再通过Q2到达零电位,完成整个的回路。此时,直流电机反转。
因此电枢上的工作电压是双极性矩形脉冲波形,由于存在着机械惯性的缘故,电动机转向和转速是由矩形脉冲电压的平均值来决定的。
设PWM波的周期为T,HIN为高电平的时间为t1,这里忽略死区时间,那么LIN为高电平的时间就为T-t1。HIN信号的占空比为D=t1/T。设电源电压为V,那么电枢电压的平均值为:
Vout= [ t1 - ( T - t1 ) ] V / T
   = ( 2 t1 – T ) V / T
   = ( 2D – 1 )V
定义负载电压系数为λ,λ= Vout / V, 那么 λ= 2D – 1 ;当T为常数时,改变HIN为高电平的时间t1,也就改变了占空比D,从而达到了改变Vout的目的。D在0—1之间变化,因此λ在±1之间变化。如果我们联系改变λ,那么便可以实现电机正向的无级调速。
当λ=0.5时,Vout=0,此时电机的转速为0;
当0.5<λ<1时,Vout为正,电机正转;
当λ=1时,Vout=V,电机正转全速运行。

图9 电机驱动电路
3.5检测回路
检测回路利用光电编码器将转速直接转换成数字信号送入单片机进行处理。
编码器是把角位移或直线位移转换成电信号的一种装置。前者成为码盘,后者称码尺.按照读出方式编码器可以分为接触式和非接触式两种.接触式采用电刷输出,一电刷接触导电区或绝缘区来表示代码的状态是“1”还是“0”;非接触式的接受敏感元件是光敏元件或磁敏元件,采用光敏元件时以透光区和不透光区来表示代码的状态是“1”还是“0”。
    按照工作原理编码器可分为增量式和绝对式两种。增量式编码器是将位移转换成周期性的电信号,再把这个电信号转变成计数脉冲,用脉冲的个数表示位移的大小。绝对式编码器的每一个位置对应一个确定的数字码,因此它的示值只与测量的起始和终止位置有关,而与测量的中间过程无关。

图5    光电编码器实物图
3.5.1光电编码盘
光电编码盘是将测得的角位移转换成为相应的电脉冲信号输出的数字传感器,本设计采用增量式光电编码器来采样转速信号,如图8所示。增量式编码器是专门了用来测量转动角位移的累计量。这里以三相编码器为例来介绍增量式编码器的工作原理及其结构。


图6  编码器原理图
增量式光电编码器在圆盘上有规则地刻有透光和不透光的线条,在圆盘两侧安放发光元件和光敏元件。当圆盘随电机旋转时,光敏元件接受的光增量随透光线条同步变化,光敏元件输出波形经过整形后变成脉冲。码盘上有向标志,每转一圈z相输出一个脉冲。此外,为判断旋转方向,码盘还提供相位相差90°的两路脉冲信号。将A、B两相脉冲中任何一相输入计数器中,均可使计数器进行计数。编码盘输出的z相脉冲用于复位计数器,每转一圈复位一次计数器。
编码盘的旋转方向可以通过D触发器的输出信号Q来判断。整形后的A、B两相输出信号分别接到D触发器的时钟端和D输入端,D触发器的CLK端在A相脉冲的上升沿触发。由于A、B两相的脉冲相位相差90°,当电机正转时,B相脉冲超前A相脉冲90°,触发器总是在B脉冲为高电平时触发,这时D触发器的输出端Q输出为高电平。当电机反转时,A相脉冲超前B相脉冲90°,则D触发器总是在B脉冲为低电平时触发,这时Q输出端输出为低电平,由此确定电机的转动方向。
  转速检测的精度和快速性对电机调速系统的静、动态性能影响极大。为了在较宽的速度范围内获得高精度和快速的数字测速,本设计使用每转1024线的光电编码器作为转速传感器,它产生的测速脉冲频率与电机转速有固定的比列关系,微机对该频率信号采用M/T法测速处理。
3.6 键盘及显示电路
键盘在单片机应用系统中能实现向单片机输入数据、传诵命令等功能,是人工干预单片机的主要手段.单片机应用系统中,键盘扫描只是CPU的工作内容之一。CPU在忙于各项工作任务时,如何兼顾键盘的输入,取决于键盘的工作方式。键盘的工作方式的选取应根据实际应用系统中CPU工作的忙、闲情况而定。其原则是既要保证能及时响应按键操作,又要不过多占用CPU的工作时间。
3.6.1键盘/显示芯片8279简介
Intel公司的8279是键盘/显示模块的核心控制器。如图10所示。它是一种实现键盘输入和段式数码显示控制的专用智能芯片。采用该芯片,可以大大简化单片机控制系统的软硬件设计,并且减轻CPU的负担。简单地说,它有以下一些功能: 
    与微处理器接口简单;
    能自动实现按键的“去抖”和重键处理;
    能以中断或查询两种方式工作;
    能按FIFO(先进先出)方式实现8个键值的缓冲;
    常规情况下,能同时管理64个物理键和16个八段数码管。
其引脚定义如下:
    DB0~DB7:双向数据总线
    /RD、/WR:读写选通信号
    /CS:片选信号
    RESET:复位信号
    CLK:时钟信号                         
 A0:命令/状态或数据识别信号A=1,为写命令或读状态; A=0,为数据                                               
    IRQ:中断请求信号
    SL0~SL3: 矩阵扫描线
    RL0~RL7: 检测输入线
    /BD: 显示消隐信号
    SHIFT: 扩展键位的换档信号,带上拉电阻
    CTRL/STB: 控制键输入/选通信号输入,带上拉电阻 
3.6.2键盘设计
采用4*4式键盘,分数字部分和控制部分,如图下表所示。数字部分用来输入给定转速,控制部分用来控制电机的运行。

0    1    2    3
4    5    6    7
8    9    取消    确认
测速            停车


图10  显示器图
输入给定转速时应注意的几个问题:(1)转速不足四位时,在前面加拨0凑够四位;(2)转速输入错误时,按取消键,显示器清空,重新输入值;(3)转速输入完成后,按确认键。
3.6.3显示器设计                                
采用共阴极的发光二极管构成可以显示4位十进制的显示器,运行中显示当前的实际转速值。如上图示。8279与单片机、键盘和显示器的外围总接线如图11示。
                        
                            图 11显示器/键盘驱动电路
4模块的原理与应用
4.1  PWM调脉宽方式
调脉宽的方式有三种:定频调宽、定宽调频和调宽调频。我们采用了定频调宽方式,因为采用这种方式,电动机在运转时比较稳定;并且在产生PWM脉冲的实现上比较方便。
4.2定时器/计数器
由于PWM信号软件实现的核心是单片机内部的定时器,而不同单片机的定时器具有不同的特点,即使是同一台单片机由于选用的晶振不同,选择的定时器工作方式不同,其定时器的定时初值与定时时间的关系也不同。因此,首先必须明确定时器的定时初值与定时时间的关系。如果单片机的时钟频率为f,定时器/计数器为N位,则定时器初值与定时时间的关系为:

式中,TW—定时器定时初值;
N—一个机器周期的时钟数。
N随着机型的不同而不同。在应用中,应根据具体的机型给出相应的值。这样,我们可以通过设定不同的定时初值TW,从而改变占空比,进而达到控制电机转速的目的。
4.3直流电机调速原理
根据励磁方式不同,直流电机分为自励和他励两种类型。不同励磁方式的直流电机机械特性曲线有所不同。对于直流电机来说,人为机械特性方程式为:

分析(1)式可得.当分别改变UN、和Rad时,可以得到不同的转速n,从而实现对速度的调节。由于Ф=F(If),当改变励磁电流If时,可以改变磁通量Ф的大小,从而达到变磁通调速的目的。但由于励磁线圈发热和电动机磁饱和的限制,电动机的励磁电流If,和磁通量Ф只能在低于其额定值的范围内调节,故只能弱磁调速。而对于调节电枢外加电阻Rad时,会使机械特性变软,导致电机带负载能力减弱。
理想空载转速n0随电枢电压升降而发生相应的升降变化。不同电枢电压的机械特性曲线相互平行,说明硬度不随电枢电压的变化而改变,电机带负载能力恒定。当我们平滑调节他励直流电机电枢两端电压时,可实现电机的无级调速.
4.4 PWM基本原理及实现方法
其方法是通过改变电机电枢电压接通时间与通电周期的比值即占空比来控制电机速度这种方法称为脉冲宽度调制,简称PWM.调速原理如图所示通过控制脉冲占空比来改变电机的电枢电压.
Vd=Vmax*D                     (2)
由公式(2)可见,当我们改变占空比D=t1/T时,就可以得到不同的电机平均速度Vd,从而达到调速的目的。严格地讲,平均速度与占空比Vd并不是严格的线性关系,在一般的应用中,可以将其近似地看成线性关系。
4.5 PWM在直流调速中的应用
PWM广泛应用于直流调速系统,例如,以往普遍应用的晶闸管相控整流—直流电机调压调速系统,现在也发展了全波步控整流PWM斩波—直流电压调速系统,开关磁阻电动机也是有直流斩波器供电的。PWM控制技术是利用半导体开关器件的导通与关断把直流电压变成电压脉冲序列,并通过控制电压脉冲宽度或周期以达到变压目的,或者控制电压脉冲宽度和脉冲序列的周期以达到变压变频目的的一种控制技术。直流电动机转速n的表达式为:
n= Ua-IaΣRa∕Ce-φ(r/min)
式中 Ua—电枢端电压(V)
Ia—电枢电流(Α)
ΣRa—电枢电路总电阻(Ω)
Φ—每级磁通量(Wb)
Ce—与电机结构有关的常数
由式可知,直流电动机转速n的控制方法可分为两类,即励磁控制法与电枢电压控制法。励磁控制法控制励磁通Φ,其控制功率虽然小,但低速时受到磁极饱和的限制,高速时受到换向火花和换向器结构强度的限制。而且由于励磁线圈电感较大,动态响应较差。所以常用的是电枢电压控制法。Ua=Ud-IaR,虽然调节电阻R即可改变端电压达到调速目的,但这种方法效率很低。随着电力电子技术的进步,可由PWM斩波器进行斩波调压。本文主要介绍PWM实现的直流调速系统。
4.6桥式可逆PWM变换器
脉宽调制器的作用是:用脉冲宽度调制的方法,把恒定的直流电源电压调制成频率一定宽度可变的脉冲电压序列,从而平均输出电压的大小,以调节电机转速。
桥式可逆PWM变换器电路如图12所示。这是电动机M两端电压的极性随开关器件驱动电压的极性变化而变化。


图12桥式可逆PWM变换器电路
双极式控制可逆PWM变换器的四个驱动电压波形如图6所示。

图13   PWM变换器的驱动电压波形
他们的关系是:。在一个开关周期内,当时,晶体管、饱和导通而、截止,这时。当时,、截止,但、不能立即导通,电枢电流经、续流,这时。在一个周期内正负相间,这是双极式PWM变换器的特征,其电压、电流波形如图2所示。电动机的正反转体现在驱动电压正、负脉冲的宽窄上。当正脉冲较宽时,,则的平均值为正,电动机正转,当正脉冲较窄时,则反转;如果正负脉冲相等,,平均输出电压为零,则电动机停止。
双极式控制可逆PWM变换器的输出平均电压为

如果定义占空比,电压系数
则在双极式可逆变换器中

调速时,的可调范围为0~1相应的。当时,为正,电动机正转;当时,为负,电动机反转;当时,,电动机停止。但电动机停止时电枢电压并不等于零,
而是正负脉宽相等的交变脉冲电压,因而电流也是交变的。这个交变电流的平均值等于零,不产生平均转矩,徒然增大电动机的损耗这是双极式控制的缺点。但它也有好处,在电动机停止时仍然有高频微震电流,从而消除了正、反向时静摩擦死区,起着所谓“动力润滑”的作用。
双极式控制的桥式可逆PWM变换器有以下优点:
1)电流一定连续。
2)可使电动机在四象限运行。
3)电动机停止时有微震电流,能消除静摩擦死区。
4)低速平稳性好,每个开关器件的驱动脉冲仍较宽,有利于保证器件的可靠导通。
4.7  M/T法测速原理
  M/T法测速原理是在对光电编码器输出的测速脉冲数m1进行计数的同时对时钟脉冲的个数m2也进行计数。原理如图14:

图14   M/T法测速原理
测速时间Td由测速脉冲来同步,即由图8电路实现Td等于整m1个脉冲周期。设从图9上a点开始,计数器分别对m1和m2计数,到达b点,预计的测速时间Tc到,微机发出停机指令,但因为Tc不一定恰好等于整数个编码输出脉冲周期,所以计数器仍对时钟脉冲计数,直到c点时,可以利用下一个转速脉冲上升沿(即c点)触发数字测速硬件电路使计数器停止计数。这样,m2代表了m1个测速脉冲周期的时间。设时钟脉冲频率为f0,光电编码器每转发出p个脉冲,则电机转速的计算公式为:
    n=(60*m1*f0)/(z*m2)
5软件部分
5.1主程序及系统初始化模块
主程序——完成实时性要求不高的功能,完成系统初始化后,实现键盘处理、刷新显示、与上位计算机和其他外设通信等功能,如图15。
初始化子程序——完成硬件器件工作方式的设定、系统运行参数和变量的初始化等,如图16。

图15  主程序流程图                      图16  初始化子程序 
主程序主要完成键盘/显示芯片8279、内部定时/计数器T0、T1测速和变量的初始化。
此程序共有2个中断源:外部中断0,用于电机故障处理;外部中断1,用于键盘输入处理。 
5.2模块程序设计
5.2.1外部中断0模块设计
外部中断0是故障中断,优先级最高。当电机出现问题时向CPU申请中断。响应中断后封锁PWM输出,使电机停转。
5.2.2外部中断1模块设计
外部中断1是键盘输入中断,高优先级。当键盘有输入值时,8279向CPU申请中断。读取键值,按其实际功能进行操作。
5.2.3内部定时器T0溢出中断设计
转速测定为M/T式编码盘测速,要通过测取给定时间内的编码盘输出的脉冲数。T0用来定时,T1用来计数,T0和T1均工作与方式1。
T0定时50ms,单片机的时钟频率为12MHz,机器周期为1us,
5.3 中断子程序模块
中断服务子程序完成实时性强的功能,如故障保护、PWM生成、状态检测和数字PID调节等,中断服务子程序由相应的中断源提出申请,CPU实时响应。
                                  
图17 转速调节中断子程序框图             图18 故障保护中断子程序框图
当故障保护引脚的电平发生跳变时申请故障保护中断,而转速调节采用定时中断。两种中断服务中,故障保护中断优先级别最高,,转速调节中断级别次之。 
5.4键盘/显示模块设计
键盘/显示模块核心控制器件是8279,由软件设置为8字符显示,左端送入,编码扫描键盘,双键互锁,内部时钟频率设置为100KHz。按键操作由终端导入,静态显示方式。


图19 显示子程序


                图20测速子程序
5.5数字PID流程图
数字PID控制算法可以分为位置式PID和增量式PID控制算法。
将模拟的PID算式

用求和的方式代替积分;用增量的方式代替微分.则可作如下近似
   (k=0, 1 ,2,……..)
 
       
进行离散处理有                                                                                          
   
这便是增量式PID算式,由于它的每次输出均与过去有关,计算时要对Ek进行累加,故工作量特别大。因此一般不用位置式PID。对三式稍作推导即可得到下式。
  
式中   
      B=
               
由式看出,如果计算机采用恒定的采样周期T,一旦确定了ABC只要使用前三次测量值的偏差,就可以由式求出控制增量。如图21所示.

                                                                        


                   
  

图21  PID流程图


图22 调速软件系统框图

5.6源程序
///*************************************************************************
///直流电机的pwm控制程序
///功能:直流电机的速度控制,速度测试,速度显示。
///*************************************************************************
#include<reg51.h>                ///包含头文件
#include<absacc.h>
#define gw DBYTE[0X40]            ///定义显示缓冲区 个位
#define sw DBYTE[0X41]            //十位
#define bw DBYTE[0X42]            //百位
#define qw DBYTE[0X43]            //千位
#define unint unsigned int        ///自定义变量
#define uchar unsigned char
sbit in1=P3^0;                    ///控制位定义
sbit in2=P3^1;
sbit ena=P3^7;
uchar code zm[12]={0X3F,0X06,0X5B,0X4F,0X66,0X6D,0X7D,0X07,0X7F,0X6F,0x73,0x71};///在程序存储区定义字型码表
uchar code wm[4]={0xfe,0xfd,0xfb,0xf7};///在程序存储区定义字位控制码表
uchar a=8;                        ///占空比控制字
uchar n=1;                        ///速度增减量一
uchar m=2;                        ///速度增减量二
unint speedbuf=0;                ///速度值
uchar zc=0;
unint ys=0;
key();                            ///子函数声明
display();
control();
delays();
speedcan();
///*************************************************************************************************************
///主函数
///*************************************************************************************************************
main()    
{
    gw=sw=bw=qw=0;                ///显示初始化
    P0=0xc0;                    
    P2=0;
    in1=0;                        ///电机控制的初始化
    in2=0;
    ena=1;
    TMOD=0X15;                    ///定时器1为定时模式,使用方式2;定时器0为计数模式,使用方式2
    TH1=0Xfa;                    ///装定时器初值
    TL1=0X24;
    TH0=0;                        ///装计数器初值
    TL0=0;
    EA=1;                        ///开总中断
    ET0=1;                        ///允许定时器0中断
    ET1=1;                        ///允许定时器1中断
    TR0=1;                        ///开计数器
    TR1=1;                        ///开定时器
    while(1)                    ///无限循环
    {
        key();                    ///调用按键扫描程序
        control();                ///调用电机控制程序
        display();                ///调用显示程序
        speedcan();                ///调用速度处理程序
    }
}
///*************************************************************************
///中断处理程序,实现输出方波占空比控制
///*************************************************************************
timer_1() interrupt 3 using 1    ///定时器1中断,使用寄存器组1
{
    TR1=0;                        ///停止定时
    zc++;                        ///中断次数加1
    ys++;
    control();                    
    speedcan();
    TH1=0Xfa;                    ///重装定时初值
    TL1=0X24;
    TR1=1;
}
///*************************************************************************
///脉宽控制程序,实现PWM的输出
///*************************************************************************
control()
{
    if(zc==a)
    {
        ena=0;
    }
    if(zc==15)
    {
        zc=0;
        ena=1;
    }
}
///*************************************************************************
///显示子函数,显示当前电机的速度
///*************************************************************************
display()
{
    uchar i;
    gw=speedbuf%10;                    ///求速度个位值送各位显示缓冲
    sw=(speedbuf/10)%10;                    ///求速度十位值送十位显示缓冲
    bw=(speedbuf/100)%10;                ///求速度百位值送百位显示缓冲
    qw=speedbuf/1000;                ///求速度千位值送千位显示缓冲
    for(i=0;i<4;)                    ///循环选中数码管的每一位
    {
        P2=wm[i];
        if(i==0)                    ///显示个位
        {
            P0=zm[gw];
            delays();
        }
            else if(i==1)            ///显示十位
            {
                P0=zm[sw];
                delays();
            }
              else if(i==2)        ///显示百位
                { 
                    P0=zm[bw];
                    delays();
                }
                    else if(i==3)    ///显示千位
                    {
                        P0=zm[qw];
                        delays();
                    }        
        i++;
    }

}
///*************************************************************************
///读速度值子函数,从计数器0中读计数值,经过计算,求出当前速度值
///*************************************************************************
speedcan()
{
    if(ys==500)
    {
        TR0=0;                        ///停止计数
        speedbuf=((TH0*256+TL0)*8)/3;///读计数器
        ys=0;
        TH0=0;                        ///重装计数初值
        TL0=0;
        TR0=1;                        ///开计数器
    }
}
///*************************************************************************
///延时子函数
///*************************************************************************
delays()
{
    uchar i;
    for(i=80;i>0;i--);
}
///*************************************************************************
///键盘扫描子函数,实现电机的方向 速度的控制
///*************************************************************************
key()
{
    uchar i;
    P1=0xff;                        ///拉高P1口的电平
    i=P1;                            ///读P1口
     if(i==0xfe)                        ///第一个键按下
    {    delays();                    ///延时去抖动
        if(i==0xfe)                    ///再判断按键是否按下
        {
            in1=0;                    ///电机顺时针转动
            in2=1;    
        }
    }
    if(i==0xfd)                        ///第二个键是否按下
    {
        delays();                    ///延时去抖动
        if(i==0xfd)                    ///再判断按键是否按下    
        {
            in1=1;                     ///电机逆时针转动
            in2=0;
        }
    }
    if(i==0xfb)                        ///第三个键是否按下
    {
        delays();
        if(i==0xfb)
        {
            a=a+n;                    ///速度加((慢速)
            if(a>=15)                 
                a=15;
        }
    }
    if(i==0xf7)                        
    {
        delays();
        if(i==0xf7)
        {
            if(a>3)                    ///速度减(慢速)
                a=a-n;
            else 
                a=3;
        }
    }
    if(i==0xef)
    {
        delays();
        if(i==0xef)
        {
            a=a+m;                    ///速度加,(快速)
            if(a>=15)
                a=15;
        }
    }
    if(i==0xdf)
    {
        delays();
        if(i==0xdf)
            if(a>3)                    ///速度减,(快速)
                a=a-m;
            else
                a=3;
    }
    if(i==0xbf)
    {
        delays();
        if(i==0xbf)
        {
            in1=0;                    ///停止转动
            in2=0;
        }
    }
    if(i==0x7f)
    {
        delays();
        if(i==0x7f)
            a=5;                    ///回到中间速度
    }
    while(P1!=0xff);                ///等待按键放下
}

                  谢  辞
经过这次毕业设计我感受颇多,在正式进行设计之前,我参考了一些网上的资料,通过对这些设计方案来开拓自己的思路,最后终于有了自己的思路。
此次毕业设计不仅是对前面所学电力电子技术和运动控制理论的一种检验,更是对所学知识大融合,站在新的高度看待新的问题,而且也是对自己运用所学知识的能力的一种提高。通过这次毕业设计使我明白了自己原来知识还比较欠缺,自己要学习的东西还太多。以前老是觉得自己什么东西都会,什么东西都懂,有点眼高手低。通过这次课程设计,我才明白学习是一个长期积累的过程,在以后的工作、生活中都应该不断的学习,努力提高自己知识和综合素质。 
本设计在硬件上采用了基于PWM技术的H型桥式驱动电路,解决了电机马驱动的效率问题,在软件上也采用较为合理的系统结构及算法,提高了单片机的使用效率,且更有效的控制电机。
本设计的执行总过程如下:通过键盘给单片机输入转速值,单片机经过PID算法经软件控制输出脉冲,进入驱动电路,驱动电动机(根据占空比的不同使电机正传或反转来调节转速),由光电编码器测得电动机的转速传送给单片机(由定时器与计数器根据输入脉冲来测速),再由单片机输送到显示器,同时由单片机将送来的转速与给定值进行比较,再交由单片机控制输出脉冲的占空比。
这次毕设使我深感要注重理论知识,注重理论联系实际。以前一直觉得理论知识离我们很远,理论只是大谈空谈,这才发现理论的重要性,这才发现理论知识与生活的联系的重要性。
最后,我要感谢老师对我这次毕业设计的大力支持,使我不仅在知识方面有了更深一步的了解,并且在我设计东西的思路与逻辑方面有更深刻的影响,使我知道了设计思路与逻辑的重要性,让我获益匪浅。


[参考文献]

[1] 王兆安等.电力电子技术[M]. 北京.机械工业出版社.2000年.
[2] 周渊深.交直流调速系统与MATLAB仿真[M].北京.中国电力出版社,2007年.
[3] 陈伯时.运动控制系统[M]. 北京.机械工业出版社.2003年.
[4] 黄家善等.电力电子技术[M]. 北京.机械工业出版社.2007年.
[5]孙立志.PWM与数字化电动机控制技术应用[M].北京.中国电力出版社.2008年.
[6] 杨素行.模拟电子技术基础[M].高等教育出版社. 2003年.  
[7] 陈明荧. 8051单片机基础教程[M].科学出版社. 2003年.      
[8] 康华光.电子技术基础数字部分[M].高等教育出版社. 2004年.
[9] 李广第.单片机基础 [M].北京航空航天大学出版社. 1999年.


宝鸡文理学院本科毕业设计任务书

课题条件:
1.通过几年自动化专业系统的学习、实践,使知识构造较为完整,能够运用本专业知识解决一些实际问题。
2. 运用学校图书馆资料室丰富的藏书和期刊资料作为本设计理论与资料基础;借助网路寻找有利于自己确定和设计方案的资料。


毕业设计主要内容:
本设计是借助当前比较流行的单片机来控制人们长期使用的直流电动机,通过方案改进使得传统工艺有了很大空间的提升,大大提高了电动机的效率。运用单片机控制的直流电机系统使其满足生产中对速度各种性能的要求。
本设计通过PID算法,根据差值算出PWM应该输出的占空比,以此来驱动电动机使其达到预定速度,再由光电编码器对直流电机的转速进行测量,将测得的脉冲输入到单片机,由定时器将其转化为转速并显示,再通过PID算法进行调节,从而实现了对直流电机速度的控制。

注:课题性质分为①理论型②实践应用型。下同。
主要参考文献:
[1] 王兆安等.电力电子技术[M]. 北京.机械工业出版社.2000年.
[2] 周渊深.交直流调速系统与MATLAB仿真[M].北京.中国电力出版社,2007年.
[3] 陈伯时.运动控制系统[M]. 北京.机械工业出版社.2003年.
[4] 黄家善等.电力电子技术[M]. 北京.机械工业出版社.2007年.
[5]孙立志.PWM与数字化电动机控制技术应用[M].北京.中国电力出版社.2008年.
[6] 杨素行.模拟电子技术基础[M].高等教育出版社. 2003年.  
[7] 陈明荧. 8051单片机基础教程[M].科学出版社. 2003年.      
[8] 康华光.电子技术基础数字部分[M].高等教育出版社. 2004年.
[9] 李广第.单片机基础 [M].北京航空航天大学出版社. 1999年.文章来源地址https://www.toymoban.com/news/detail-767120.html

到了这里,关于单片机控制PWM的直流电机调速系统的设计的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【微机原理课设protues-汇编】基于8086四种波形发生器仿真设计-基于8086数码管矩阵键盘控制设计-基于8086微机原理直流电机控制系统-基于单片机PWM直流电机控制系统设计汇编

    文章转自电设屋,资料百度网盘下载地址  https://www.aiesst.cn/share.html 目录 1207基于8086四种波形发生器仿真设计-微机原理汇编仿真资料 1202基于8086数码管矩阵键盘控制设计-全套资料 1218基于8086智能汽车控制系统设计-微机原理课设 1209基于8086微机原理直流电机控制系统-设计资料

    2024年02月12日
    浏览(65)
  • 【51单片机】直流电机的驱动和PWM调速

    51单片机驱动直流电机与 PWM 调速是通过使用 51 单片机来控制直流电机的转速和方向。51 单片机通过控制电机的电流来实现驱动,并通过生成 PWM 信号来调节电机的转速。使用 PWM 调速可以使得直流电机的转速精确可控,并且减少了电机的功率损耗。在 51 单片机的控制系统中,

    2023年04月09日
    浏览(41)
  • 基于51单片机直流电机PWM调速液晶1602显示设计

    一、系统方案 本文主要研究了利用MCS-51系列单片机控制PWM信号从而实现对直流电机转速进行控制的方法。本文中采用了三极管组成了PWM信号的驱动系统,并且对PWM信号的原理、产生方法以及如何通过软件编程对PWM信号占空比进行调节,从而控制其输入信号波形等均作了详细的

    2024年02月11日
    浏览(49)
  • 基于单片机串口控制直流电机调速

    一、系统方案 (2)本设计采用STC89C5单片机作为主控器,串口控制直流电机调速,串口助手发送1-8,改变电机速度,数码管显示对应速度。 二、硬件设计 原理图如下: 三、单片机软件设计 1、首先是系统初始化 TMOD=0x21;//定时器0工作方式1 ET1=0; SM0=0; SM1=1; REN=1; EA=1; ES=1; 2、数码管

    2024年02月12日
    浏览(50)
  • 单片机控制直流电机(风扇)电路详解

    单片机引脚为什么无法直接控制电机或风扇?         我们在使用单片机去控制+5V的直流电机或者散热风扇时,可能会有一种疑惑,51单片机的引脚电压为+5V,为什么不直接用单片机引脚去驱动电机或者风扇?         实际上单片机的控制引脚,不管是51单片机或者s

    2024年01月16日
    浏览(92)
  • 基于STM32单片机的直流电机PWM调速(数码管显示)(Proteus仿真+程序)

          由 STM32单片机+数码管显示模块+键盘模块+L298N电机驱动模块+直流电机 1、采用STM32F103单片机为主控制器 2、四个按键,分别为启动/暂停、方向切换、加速、减速功能 3、数码管显示PWM占空比和电机转动方向(0正转,1反转) 注意:proteus8.11版本才能打开   24、基于STM32单

    2024年02月11日
    浏览(62)
  • [proteus]STM32F103单片机直流电机PID算法PWM波电机调速正反转Proteus仿真

    1、实现功能: (1)、基于STM32F103单片机PID算法PWM控制直流电机正反转调速,LCD1602显示转速等。可通过“加速”、“减速”按键修改“目标转速”并实时测量“实际转速”送到LCD1602上显示。 (2)、“启动”按键控制电机启动,默认启动电机是正转(示波器上的黄色PWM波)。 (3)、“

    2024年02月06日
    浏览(50)
  • 基于51单片机直流电机转速数码管显示控制系统

    一、系统方案 本文主要研究了利用MCS-51系列单片机控制PWM信号从而实现对直流电机转速进行控制的方法。本文中采用了三极管组成了PWM信号的驱动系统,并且对PWM信号的原理、产生方法以及如何通过软件编程对PWM信号占空比进行调节,从而控制其输入信号波形等均作了详细的

    2024年02月12日
    浏览(49)
  • 【32单片机学习】(3)霍尔编码器减速直流电机控制及测速

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 目录 前言 1.实验现象 2.实验接线及原理图 接线图 原理图  电机接线图 3.代码部分 1.主函数  main.c 2.按键部分   key.c  key.h pwm代码   pwm.c  pwm.h 电机驱动   motor.c   motor.h  OLED显示 oled.c oled.h  编码器

    2024年02月11日
    浏览(58)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包