《常用控制电路》学习笔记——数字控制直流电动机调速电路

书中该节讲述的电路通过ADC芯片将电位器的阻值转换为电压量,然后使用单片机输出PWM进行电路控制。本电路也可扩展应用至需要模拟量输入与输出的场合。

目录

一、系统设计思路

二、各模块电路分析

2.1电路构成

2.2工作状态分析

三、程序分析

3.1 变量定义

3.2 延时程序

3.3 ADC0809采集程序

3.4 主程序

3.5 模拟时钟

四、电路仿真结果

五、番外

5.1 关于此电路

5.2 ADC0809与逐次渐进式AD采样方法

参考资料


一、系统设计思路

书中使用的系统方案如图1-1所示:

图1-1 系统方案框图

系统使用了电位器->ADC采集电路->单片机PWM输出->电机驱动电路的方案。使用电位器的模拟量作为输入,用使用ADC芯片将之转换为数字信号,用ADC芯片采集后控制产生PWM波,最后使用电机驱动电路驱动电机工作。

二、各模块电路分析

模块电路如图2-1所示

图2-1 整体电路图

2.1电路构成

电路比较简单,由单片机、ADC芯片与电动机驱动电路构成。

51单片机的P1端口引脚与ADC芯片输出端相连,用于采集数字化后的模拟量。采集后再由P3.7引脚输出PWM波。由于仿真软件没有电位器和可调电阻这样的器件,所以书中使用了一个恒压源代替电位器做模拟输入。

驱动电路部分,书中使用了两级NPN三极管驱动电机。

2.2工作状态分析

电路工作是数据流向如下:

1、电位器调节产生的电压输入到ADC芯片的IN0端口

2、ADC采集芯片将模拟量转换为数字量并在OUT端输出

3、单片机采集转换后的数字信号

4、单片机根据数字信号产生PWM波,控制电机旋转

三、程序分析

3.1 变量定义

#include <reg51.h>
#include <stdio.h>sbit EOC = P2^6;
sbit START = P2^5;
sbit OE = P2^7;
sbit CLK = P2^4;
sbit PWM = P3^7;
unsigned char ad_data;

图3-1 程序头文件及变量定义

程序的变量定义如图3-1所示。程序使用ad_data存储采样后的值;sbit(位定义)配置的变量,名称和电路图中一致。此处不做赘述。

3.2 延时程序

void delay_ms(unsigned int z)
{unsigned int x,y;for(x=z;x>0;x--)for(y=110;y>0;y--){;}
}

图3-2 延时函数

延时子函数如图3-2所示。51单片机每12个时钟周期为一个机器周期,每10个时钟震荡为一个时钟周期。

对于书中采用的12M晶振,有1机器周期=12时钟周期=120时钟震荡;即1机器周期为1us。

C:0x0019    D3       SETB     C
C:0x001A    EF       MOV      A,R7
C:0x001B    9400     SUBB     A,#0x00
C:0x001D    EE       MOV      A,R6
C:0x001E    9400     SUBB     A,#0x00
C:0x0020    4014     JC       C:0036
C:0x0022    7D6E     MOV      R5,#0x6E
C:0x0024    7C00     MOV      R4,#0x00
C:0x0026    ED       MOV      A,R5
C:0x0027    1D       DEC      R5
C:0x0028    7001     JNZ      C:002B
C:0x002A    1C       DEC      R4
C:0x002B    ED       MOV      A,R5
C:0x002C    4C       ORL      A,R4
C:0x002D    70F7     JNZ      C:0026
C:0x002F    EF       MOV      A,R7
C:0x0030    1F       DEC      R7
C:0x0031    7001     JNZ      C:0034
C:0x0033    1E       DEC      R6
C:0x0034    80E3     SJMP     delay_ms(C:0019)
C:0x0036    22       RET      

图3-3 延时函数的汇编代码

反汇编程序如图3-3所示。其中SETB置位指令耗时1机器周期;MOV指令在有寄存器Rn或累加器A参与时耗时1周期,含有立即数时耗时两周期;SUBB减法指令耗时1周期;DEC减1指令耗时1周期条件跳转指令JC和JNE均耗时2周期;位或运算指令ORL耗时2周期;SJUM跳转指令耗费2周期;此外调用程序时的LCALL和返回时的RET指令各耗费2周期。

故可算出延时函数最内层循环总共占用了单片机的周期数,即0x0026~0x0024地址程序的执行一次占用的周期数为9周期,循环110次即为990周期,再加上外层for循环必定执行的两次带立即数的MOV,一次使用寄存器的MOV,一次DEC自减指令,一次ORL或指令,一次条件跳转JNZ,共占用了9周期。和预期延时1ms基本一致。

3.3 ADC0809采集程序

void ADC0809()
{OE = 0;START = 0;START = 1;START = 0;delay_ms(1);while(!EOC);OE = 1;ad_data = P1;OE = 0;
}

图3-4 ADC0809采集程序

采集程序相对简单。给START(P2^5)一个正脉冲后延时1ms,等待EOC(end-of-conversion)的转换完毕(此时EOC由芯片内部电路置1),随后将输出使能OE置1,将P1输入存入8位变量ad_data,最后将输出使能置0,完成采集。

3.4 主程序

void main(void){ // Write your code hereEA = 1;TMOD=0x02;TH0 = 216;TL0 = 216;TR0 = 1;ET0 = 1;while (1){ADC0809();PWM = 1;delay_ms(ad_data);PWM = 0;delay_ms(255-ad_data);}}

图3-5 主程序

主程序循环读取ADC采样值,根据采样值模拟出PWM波。显然程序的PWM频率较低。

3.5 模拟时钟

void t0() interrupt 1 using 0
{CLK = ~CLK;
}

图3-6 时钟模拟程序

本电路使用单片机的管脚P2^4作为ADC芯片时钟信号输入,时钟模拟电路在每次timmer0中断执行时给CLK变量取反,即翻转P2^4的输出。

四、电路仿真结果

电路仿真结果如图4-1到图4-4四图,可知电位器产生的电压确能控制程序PWM波(若周老师书中的PWM是使用定时器产生,频率将会更高,控制性能也会更好)。

图4-1 500mV电压模拟输出结果

图4-2 1V电压模拟输出结果 

图4-3 3V电压模拟输出结果 

图4-4 5V电压模拟输出结果

五、番外

5.1 关于此电路

此电路是典型的使用模拟量输入控制数字量(PWM)输出的电路实例。虽然现在已经很少见到51单片机作为实际使用,现在的芯片也基本都可以直接使用管脚进行AD采样,但本电路仍十分具有代表意义。

5.2 ADC0809与逐次渐进式AD采样方法

ADC0809芯片是一款8位逐次逼近式模数转换器,8位意为其采样分辨率为2^8次方,即分辨率是256

 图5-1 ADC0809说明

逐次渐进式AD采样方法如图5-1所示。逐次渐进式比较电路共有256个内部电阻,内部数字开关由SAR(successive approximation register)逐次逼近寄存器控制。当电压变化时,SAR控制内部电路开关,利用电阻的分压完成模/数转换。

图中Figure 4和5分别是A/D转换曲线和A/D绝对精度曲线,读者可在数据手册中找到详细介绍,此处不做赘述。

参考资料

[1] 周润景,谢亚楠.常用控制电路设计及应用[M].北京:电子工业出版社,2017:9

[2] ADC0808/ADC0809 8-Bit μP Compatible A/D Converters with 8-Channel Multiplexer[M].Texas Instruments,SNAS535H–OCTOBER 1999–REVISED MARCH 2013:9

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/558309.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

《常用控制电路》学习笔记——数控直流恒流源电路

书中该项目内容设计了一个从交流220V市电作为供电电源的恒流源电路&#xff0c;并且此电路可由加减计数器74LS193控制输出的电流大小。 目录 一、系统方案 二、各模块电路分析 整流滤波及稳压电路 数字量控制电路 数模转换电路 数控恒流源产生电路 三、电路仿真结果 四…

图像太宽无法输出请裁剪图像或降低分辨率然后重试_真·无监督!延世大学提出图像到图像无监督模型,实验结果超SOTA...

作者 | 蒋宝尚编辑 | 丛 末图像翻译目的是用模型将源域图像转换到目标域图像&#xff0c;通常涉及标签图到场景图的转换、图像风格、人脸的属性变换、标签图到场景图的转换。图像翻译任务自生成对抗网络提出就得到了快速发展&#xff0c;例如经典的pix2pix、CycleGAN、StarGAN。…

php serialize和json_encode哪个更快_世界 10 大编程语言,Java 不是第一,PHP 才第五...

来源&#xff1a;toutiao.com/a6764554659349676557/如果你是软件开发领域的新手&#xff0c;那么你会想到的第一个问题是“如何开始&#xff1f;”编程语言有数百种可供选择&#xff0c;但是你怎么发现哪个最适合你&#xff0c;你的兴趣和职业目标又在哪里呢&#xff1f;选择最…

tomcat7.0支持什么版本的jdk_恭喜你喜提JDK,那你知道JDK是什么吗?先来看看吧

点击蓝字关注一行JDK 大家都知道电脑的操作系统是由汇编和C语言写出&#xff0c;因此操作系统无法直接识别其他语言。这时我们就需要为我们写的Java程序配备一名翻译官 ----- 编译环境&#xff0c;将Java程序翻译成电脑可以识别的程序&#xff0c;C或者汇编。 那么对于这个…

我的python 入门 安装 -- hello world

我的python 安装–>“hello world” 最近老听到关于python的声音&#xff0c;而且越来越强烈。就好奇下载了下&#xff0c;在win10 的应用商店下载的 够傻瓜了吧 环境变量也不用配置 直接上手 hello world了 cmd 窗口 输入 python -v 正常显示 显示版本号 不能正常显示…

记录spring、springboot集成apollo配置中心

一, spring集成apollo&#xff0c;前提是apollo配置中心服务端已经在运行中 上面是我在阿里云服务搭建的apollo配置中心服务端&#xff0c;登录后的样子。没有搭建服务端的小伙伴&#xff0c;请先搭建好apollo的服务端 然后点击‘创建项目’&#xff0c;新建测试用的项目 填…

基本农田卫星地图查询_发现谷歌地图替代网站,卫星地图街景功能都能用

众所周知&#xff0c;由于谷歌地图&#xff08;Google Maps&#xff09;在国内不能访问&#xff0c;很多人就没有办法通过谷歌地图来获得服务。谷歌地图是目前全球最受欢迎的世界地图网站&#xff0c;在2005年以前&#xff0c;谷歌地图就收录了美国、英国、加拿大三个国家的地图…

记录 Linux crontab 的使用

记录一次简单的Linux定时任务----》每周定时备份数据库结构及数据 环境&#xff1a;阿里云服务器 vim 命令&#xff1a;输入i/a 进入输入模式&#xff0c;输入完成后&#xff0c;esc键&#xff0c;退出输入模式&#xff0c;确定无误后&#xff0c;输入“:wq”,保存退出 Linux 环…

python random函数_Python随机函数random使用详解

在python中用于生成随机数的模块是random,在使用前需要import, 下面看下它的用法。1、random.randomrandom.random()用于生成一个0到1的随机符点数: 0 < n < 1.0注意&#xff1a; 以下代码在Python3.5下测试通过&#xff0c; python2版本可稍加修改描述random() 方法返回…

Graphicsmagick linux 中文水印乱码-new

文章目录Graphicsmagick linux 中文水印l乱码&#xff08;中文显示成正方形&#xff09;本人在Windows上安装Graphicsmagick 并使用Graphicsmagick 添加中文水印成功&#xff0c;但是在Linux下一直乱码&#xff0c;现将解决办法分享给有需要的朋友。 1.Linux下默认安装Graphic…

postman 使用_Postman使用方法

一 Postman背景介绍用户在开发或者调试网络程序或者是网页B/S模式的程序的时候是需要一些方法来跟踪网页请求的&#xff0c;用户可以使用一些网络的监视工具比如著名的Firebug等网页调试工具。今天给大家介绍的这款网页调试工具不仅可以调试简单的css、html、脚本等简单的网页基…

bool python 运算_python基础知识和pycharm安装

昨天大家对我(Python)有了一定的了解&#xff0c;那么今天带大家更加系统化的认识一下我&#xff0c;已经了解我的工作方式先说一下如果让我去做一件事情得需要那些“配置”&#xff0c;其实很简单的&#xff0c;不要把我想的太复杂&#xff0c;毕竟还是个单纯的孩子。让我做事…

视频显示边缘空白的真相

在多媒体开发过程中&#xff0c;难免会使用到video这一类型。但一直有部分开发者或产品人员总提出 “视频画面没有充满”其给定的窗口&#xff0c;其原因在于对视频不了解&#xff0c;想当然的去认为要“充满”。被问到此问题只能苦笑一声&#xff0c;哭笑不得。 先看下几个效果…

word公式编辑器_毕业论文里面的各种公式该如何编辑

毕业论文中很多专业都会需要书写很多公式&#xff0c;而对于对Word使用不够熟练的朋友肯定会在编辑公式上很苦恼了&#xff0c;Word自带的公式编辑器又不够方便&#xff0c;本节给大家介绍一种很方便的公式编辑方法&#xff0c;而且更改公式后公式序号会自动跟着变。安装好后打…

Gensee移动SDK之(二)协议

首先&#xff0c;对于协议而言&#xff0c;有标准的&#xff0c;也有私有的&#xff0c;就看具体使用场景的修饰与更改情况了。部分朋友在接触SDK的时候会提出此疑问&#xff0c;只能说“各怀鬼胎”。第一&#xff0c;即便我们告知我们使用的协议&#xff0c;该用sdk的时候&…

vs点击方法跳不到对于的地方_内脏脂肪怎么测?这个方法也太方便了!| EASD 2020...

我马上开始减肥还不行么&#xff1f;秋天——丰收的日子&#xff0c;看着肥美的鱼蟹&#xff0c;软糯的栗蓉&#xff0c;甜美的桂花糕&#xff0c;不认真贴秋膘都对不起这么丰盛的美食&#xff01;等等&#xff0c;别想了&#xff0c;看看肚子上层层叠起的肥肉&#xff0c;量量…

Android DDMS的打开以及查看手机页面布局层次

ddms 查看android的界面布局层次 有时候看到一个比较好的界面或体验好的界面&#xff0c;就忍不住想看看其实现结果&#xff0c;那么可以通过DDMS工具来看相连设备层次以及使用哪些view。 上图是查看微信布局展现。说明&#xff0c;这里查看的就是显示在当前屏幕上的界面&am…

fft之后求模值和相位_如何利用相位噪声测量表征时钟抖动来加速设计验证过程...

随着数据速率的提高&#xff0c;时钟抖动分析的需求也在与日俱增。在高速串行数据链路中&#xff0c;时钟抖动会影响发射机、传输线和接收机的数据抖动。时钟质量保证的测量方法也在不断发展。目前的重点是针对比特误码率(BER) 建立时钟性能和系统性能之间的直接联系。今天我们…

Android Studio 内存不足

android studio 4.2.2 编译的项目的时候&#xff0c;出现的内存不足问题&#xff0c;实际上android studio会有引导设置内存大小&#xff0c;可能都不太在意在哪个地方&#xff0c;设置完就完事了&#xff0c;在不提示的情况下可能找不到在哪设置&#xff0c;在此记录一笔。 出…

监控mysql锁定状态_企业实战Mysql不停机维护主从同步

实战环境&#xff1a;Mysql-5.7Xtrabackup-2.4Xtrabackup 介绍&#xff1a;Percona XtraBackup是一款基于MySQL的服务器的开源热备份实用程序&#xff0c;在备份过程中不会锁定数据库。它可以备份来自MySQL5.1&#xff0c;5.5&#xff0c;5.6和5.7服务器上的InnoDB&#xff0c;…