1、 PWM原理

2、调制器设计思想

3、具体实现设计

一、 PWM(脉冲宽度调制Pulse Width Modulation)原理:

脉冲宽度调制波通常由一列占空比不同的矩形脉冲构成,其占空比与信号的瞬时采样值成比例。图1所示为脉冲宽度调制系统的原理框图和波形图。该系统有一个比较器和一个周期为Ts的锯齿波发生器组成。语音信号如果大于锯齿波信号,比较器输出正常数A,否则输出0。因此,从图1中可以看出,比较器输出一列下降沿调制的脉冲宽度调制波。

通过图1b的分析可以看出,生成的矩形脉冲的宽度取决于脉冲下降沿时刻t k时的语音信号幅度值。因而,采样值之间的时间间隔是非均匀的。在系统的输入端插入一个采样保持电路可以得到均匀的采样信号,但是对于实际中tk-kTs<

 (1)

其中,x{t}是离散化的语音信号;Ts是采样周期;

 是未调制宽度;m是调制指数。

然而,如果对矩形脉冲作如下近似:脉冲幅度为A,中心在t = k Ts处,

 在相邻脉冲间变化缓慢,则脉冲宽度调制波xp(t)可以表示为:

 (2)

其中,

 。无需作频谱分析,由式(2)可以看出脉冲宽度信号由语音信号x(t)加上一个直流成分以及相位调制波构成。当

 时,相位调制部分引起的信号交迭可以忽略,因此,脉冲宽度调制波可以直接通过低通滤波器进行解调。

二、 数字脉冲宽度调制器的实现:

实现数字脉冲宽度调制器的基本思想参看图2。

图中,在时钟脉冲的作用下,循环计数器的5位输出逐次增大。5位数字调制信号用一个寄存器来控制,不断于循环计数器的输出进行比较,当调制信号大于循环计数器的输出时,比较器输出高电平,否则输出低电平。循环计数器循环一个周期后,向寄存器发出一个使能信号EN,寄存器送入下一组数据。在每一个计数器计数周期,由于输入的调制信号的大小不同,比较器输出端输出的高电平个数不一样,因而产生出占空比不同的脉冲宽度调制波。

图3

为了使矩形脉冲的中心近似在t=kTs处,计数器所产生的数字码不是由小到大或由大到小顺序变化,而是将数据分成偶数序列和奇数序列,在一个计数周期,偶数序列由小变大,直到最大值,然后变为对奇数序列计数,变化为由大到小。如图3例子。

奇偶序列的产生方法是将计数器的最后一位作为比较数据的最低位,在一个计数周期内,前半个周期计数器输出最低位为0,其他高位逐次增大,则产生的数据即为偶数序列;后半个周期输出最低位为1,其余高位依次减小,产生的数据为依次减小的偶序列。具体电路可以由以下电路图表示:

三、 8051中的PWM模块设计:

应该称为一个适合语音处理的PWM模块,输出引脚应该外接一积分电路。输出波形的方式适合作语音处理。设计精度为8位。

PWM模块应包括:

1、 比较部分(Comp):

2、 计数部分(Counter):

3、 状态及控制信号寄存/控制器(PWM_Ctrl);

1) 状态积寄存器:(Flags),地址:E8H ;

①EN: PWM模块启动位,置位为‘1’将使PWM模块开始工作;

②(留空备用)

③④解调速率标志位:00 – 无分频;01 – 2分频;10 – 10分频;11 – 16分频。 (RESET后为00)

⑤(留空备用)

⑥(留空备用)

⑦(留空备用)

⑧(留空备用)

注意:该寄存器可以位操作情况下可写,不可读;只能在字节操作方式下读取。

2) 数据寄存器(DataStore),地址:F8H;

注意:该寄存器值不可读,只可写。

4、 端口:

1) 数据总线(DataBus);(双向)

2) 地址总线(AddrBus);(IN)

3) PWM波输出端口(PWMOut);(OUT)

4) 控制线:

① CLK:时钟;(IN)

② Reset:异步复位信号;(IN 低电平有效)

③ WR:写PWM RAM信号;(IN 低电平有效);

④ RD:读PWM RAM信号;(IN 低电平有效)

⑤ DONE:接受完毕反馈信号;(OUT 高电平有效)

⑥ INT:中断申请信号;(OUT 低电平有效)

⑦ IntResp:中断响应信号;(In低电平有效)

⑧ ByteBit:字节/位操作控制信号(IN 1-BYTE 0-BIT);

⑨⑩

中断占用相当于MCU8051的外部中断2,则可保证在5个指令周期之内,“读取数据”中断必定得到响应。

PWM模块使用方法:因为占用了8051外部中断1,所以在不使用该模块时,应该把外部中断2屏蔽。而PWM模块产生的中断请求可以看作是“能接受数据”的信号。中断方法如后“中断读取数据过程”。使用PWM模块,应该先对内部地址8FH的数据寄存器写入数据,然后设置地址8EH的状态寄存器最低位(0)为‘1’,即PWM模块开始工作并输出PWM调制波(如TIMER模块)。在输出PWM调制波过程中,应及时对PWM写入下一个调制数据,保证PWM连续工作,输出波形连续。 (待改进)

中断读取数据过程: PWM模块可以读取数据,申请中断信号INT置位为‘0’,等待8051响应; 8051接受到中断申请后,作出中断响应,置位IntResp信号线为‘0’; PWM模块收到IntResp信号后,把中断申请信号INT复位为‘1’,等待8051通知读取数据WR信号; 8051取出要求数据放于数据总线(DataBus)上,并置WR信号为‘0’; PWM模块发现WR信号为‘0’,由数据总线(DataBus)上读取数据到内部数据寄存器,将DONE位置位为‘1’; 8051发现DONE信号的上跳变为‘1’,释放数据总线; PWM模块完成当前输出周期,复位DONE为‘0’,从此当前数据寄存器可以再次接受数据输入。

注意事项:

1)输出的PWM信号中的高电平部分必须处于一个输出周期的中间,不能偏离,否则输出语音经过低通后必定是一失真严重的结果。

2)对于8位精度的PWM,每个输出周期占用256(28)个机器周期,但是包含256个机器周期至少有22个指令周期,亦即264(22*12)个机器周期,由于语音信号的连续性,256与264之间相差的8个机器周期是不能由之丢空的,否则也会使输出信号失真。如果将须输出数字量按256/264的比例放大输出,亦不可行,因为如此非整数比例放大,放大倍数很小,则经过再量化后小数部分亦会被忽略掉,产生失真。举例:输出数字量为16,按比例放大后为16.5,更会产生难以取舍的问题。

故采取以下办法:该模块以时钟周期为标准,而与TMBus无关,即基本上与8051部分异步工作。读取数据方式为每次读取足够数据段储存于模块内的RAM内(暂定每次读取8字节),储存字节数必须能保证PWM输出该段数据过程中,有足够时间从RAM处继续读取数据。由于占用了8051的外部中断2,中断申请在3个指令周期(36个时钟周期)内必定能得到响应,而PWM模块处理一个数据需要固定耗时256个时钟周期,故能保证PWM模块顺序读取数据中断能及时得到响应,不会影响调制信号的连续性。

3)RD RAM过程是异步过程。

4)输出后数据寄存器不自动清零。因为可以通过把Flags(0)写‘0’而停止PWM模块继续工作。

pwm调速流程图小车_求智能小车 PWM调速?相关推荐

  1. 树莓派视觉跟踪小车_树莓派智能小车结合摄像头opencv进行物体追踪

    在开发树莓派智能小车的路上已经走了一年多时间了,起初做了以下简单的远程控制和避障功能,后来慢慢加入黑线循迹以及语音识别,物体识别的功能.前段时间在刷新闻头条的时候,偶然看到一外国大牛做的树莓派目标追踪 ...

  2. 智能循迹小车_校园智能车障碍断路方案浅谈

    点击上方蓝字 关注小黑记事本 小黑提要: 华软嵌协举办的第十届校园智能车比赛即将开赛,组委会今年在赛道元素上进行了一次大创新,加入了没有出现过的障碍与断路新元素,对于参赛的选手是一个不小的挑战,而选手 ...

  3. 太原工业学院单片机课程设计_单片机智能小车毕业设计论文

    一.单片机智能小车毕业设计论文 已录入:205499篇 热门排序 推荐排序 此频道包含与小车和单片机和毕业设计相关的例文,免费为你学单片机毕业设计论文提供有关参考文献. [小车语音](沈阳师范大学物理 ...

  4. stm32项目_stm32f103c8t6项目_循迹避障小车完整制作过程_智能小车设计_STM32智能小车教程-循迹-避障-蓝牙遥控-跟随

    [硬件] 元件选型 照片上传出问题了,改天补上,着急的可以看视频 视频链接在这里 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sKjJGMXv-16463139639 ...

  5. 循迹智能小车 循黑线 智能小车 红外循迹传感器 单片机

    循迹智能小车 循黑线 文章目录 循迹智能小车 循黑线 硬件菜单 硬件使用 硬件组装 程序设计前的理解 程序代码 个人原创博客: 点我浏览 硬件菜单 单片机型号:STC16F40K128 4路红外循迹模 ...

  6. 自动跟随小车c语言,智能小车跟随系统的设计与制作.doc

    本科毕业论文(设计) 题目: 智能小车跟随系统的设计与制作 学院: 物理与电子科学学院 班级: 姓名: 指导教师: 职称: 完成日期: 年 月 日 PAGE \* MERGEFORMAT PAGE \ ...

  7. pwm调速流程图小车_51单片机智能小车《pwm调速按键控制小车动作》

    //P1.0-P1.7分别对应小车1N1-1N8. #include           //头文件 #define uint unsigned int  //宏定义 #define uchar un ...

  8. 基于avr atmega16单片机 1602显示,pwm控制电机,电压采集,智能小车程序外部中断等。

    前言 最近写avr时候发现网上教程太少,本着为各位的学习提供帮助的心理,把自己写的程序发出来,一起探讨学习,希望我们共同努力,为梦想奋斗. 功能 在AVR开发板上模拟一台吊车的操作控制和状态显示功能. ...

  9. 水星怎么设置网速最快_水星无线路由器如何设置网速限制 水星路由器怎么让别人网速限制方法...

    我们在应用电脑上的情况下,一直会碰到许多 的电脑上难点.在我们在碰到了水星路由器如何设置速度限制的情况下,那麼大家应当怎么办呢?今日就一起来追随专业知识屋的我看一下怎么解决的吧. 水星路由器如何设置速 ...

最新文章

  1. 什么是 Spring?
  2. wxWidgets:wxAccessible类用法
  3. 发布订阅之direct
  4. 第三次学JAVA再学不好就吃翔(part29)--代码块
  5. [ js处理表单 ]:动态赋值
  6. Android开发经典笔试面试题汇总(持续更新中)
  7. kubernetes实战篇之helm示例yaml文件文件详细介绍
  8. Docker 容器遇到的乱码问题
  9. DB2造数据存储过程
  10. python计算密集型提速_揭秘Numpy“高效使用哲学”,数值计算再提速10倍!
  11. 李洪强iOS经典面试题30-一个区分度很大的面试题
  12. 渗透杂记-2013-07-13 关于SMB版本的扫描
  13. apache 软件历史版本查询
  14. C语言冒泡排序法及代码
  15. [配套工具] 【新手福音】最简单的大漠插件注册方法 只需四行代码 每行附有详细说明
  16. 记一次企业邮官网SEO优化
  17. proj4,七参数与坐标转换原理
  18. JAVA生成热点图,JAVA 后端生成热力图图片返回
  19. Windows10 LTSC 64位企业版
  20. 为什么我从PR里面导出来的视频,在电脑上可以正常播放,但是上传到天猫、淘宝、抖音、微信等平台后就变的模糊,类似于重影的效果

热门文章

  1. 竞技时代引领VR电竞,WVA2018全新出发!
  2. Unity 3D模型展示之webGL平台展现
  3. ImageMagick被爆存在零日漏洞 或导致重要信息被窃取
  4. scanf可以输入负数吗_在excel表格中输入负数应该怎样输
  5. 引爆5G市场,场景为王?
  6. 流程引擎之Flowable简介
  7. Pyspark回归--IsotonicRegression
  8. 纯小白适合了解的3D游戏建模科普知识,通过培训能入行吗?
  9. Spring源码解析【完整版】--【bilibili地址:https://www.bilibili.com/video/BV1oW41167AV】
  10. 在蓝图中设置人物动作 教程