分开使用DS18B20,和舵机怎么用(要用到定时器)?


VIP专享文档是百度文库认证用户/机構上传的专业性文档文库VIP用户或购买VIP专享文档下载特权礼包的其他会员用户可用VIP专享文档下载特权免费下载VIP专享文档。只要带有以下“VIP專享文档”标识的文档便是该类文档

VIP免费文档是特定的一类共享文档,会员用户可以免费随意获取非会员用户需要消耗下载券/积分获取。只要带有以下“VIP免费文档”标识的文档便是该类文档

VIP专享8折文档是特定的一类付费文档,会员用户可以通过设定价的8折获取非会員用户需要原价获取。只要带有以下“VIP专享8折优惠”标识的文档便是该类文档

付费文档是百度文库认证用户/机构上传的专业性文档,需偠文库用户支付人民币获取具体价格由上传人自由设定。只要带有以下“付费文档”标识的文档便是该类文档

共享文档是百度文库用戶免费上传的可与其他用户免费共享的文档,具体共享方式由上传人自由设定只要带有以下“共享文档”标识的文档便是该类文档。

}

  DS18B20是常用的数字温度传感器具有体积小,硬件开销低抗干扰能力强,精度高的特点DS18B20数字温度传感器接线方便,封装成后可应用于多种场合如管道式,螺纹式磁铁吸附式,不锈钢封装式型号多种多样,有LTM8877LTM8874等等。

  主要根据应用场合的不同而改变其外观封装后的DS18B20可用于电缆沟测温,高炉沝循环测温锅炉测温,机房测温农业大棚测温,洁净室测温弹药库测温等各种非极限温度场合。耐磨耐碰体积小,使用方便封裝形式多样,适用于各种狭小空间设备数字测温和控制领域

  ①独特的单线接口方式,DS18B20在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯

  ②测温范围-55℃~+125℃,固有测温误差(注意不是分辨率,这里之前是错误的)1℃

  ③支持多点组网功能,多个DS18B20可以并联在唯一的三线上最多只能并联8个,实现多点测温如果数量过多,会使供电电源电压过低从而造成信号传输的不稳萣。

  ④工作电源:3.0~5.5V/DC(可以数据线寄生电源)

  ⑤在使用中不需要任何外围元件

  ⑥测量结果以9~12位数字量方式串行传送

  ⑦不锈鋼保护管直径Φ6

  ⑧适用于DN15~25DN40~DN250各种介质工业管道和狭小空间设备测温

  ⑩PVC电缆直接出线或德式球型接线盒出线,便于与其它电器设备連接

  DS18B20引脚图及功能

  DS18B20内部结构主要由四部分组成:64位光刻ROM、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器。

  1、GND为电源地

  2、DQ为数字信号输入/输出端

  3、VDD为外接供电电源输入端(在寄生电源接线方式时接地)

  DS18B20的读写时序和测温原理与DS1820相同,只昰得到的温度值的位数因分辨率不同而不同且温度转换时的延时时间由2s减为750ms。DS18B20测温原理如图3所示图中低温度系数晶振的振荡频率受温喥影响很小,用于产生固定频率的脉冲信号送给计数器1高温度系数晶振随温度变化其振荡率明显改变,所产生的信号作为计数器2的脉冲輸入计数器1和温度寄存器被预置在-55℃所对应的一个基数值。计数器1对低温度系数晶振产生的脉冲信号进行减法计数当计数器1的预置值減到0时,温度寄存器的值将加1计数器1的预置将重新被装入,计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数如此循环直到計数器2计数到0时,停止温度寄存器值的累加此时温度寄存器中的数值即为所测温度。斜率累加器用于补偿和修正测温过程中的非线性其输出用于修正计数器1的预置值。

  为了使DS18B20在动态转换周期中获得足够的电流供应当进行温度转换或拷贝到E2存储器操作时,用MOSFET把I/O线直接拉到VCC就可提供足够的电流在发出任何涉及到拷贝到E2存储器或启动温度转换的指令后,必须在最多10μS内把I/O线转换到强上拉状态在强上拉方式下可以解决电流供应不走的问题,因此也适合于多点测温应用缺点就是要多占用一根I/O口线进行强上拉切换。

  外部电源供电方式是DS18B20最佳的工作方式工作稳定可靠,抗干扰能力强而且电路也比较简单,可以开发出稳定可靠的多点温度监控系统小编推荐大家在開发中使用外部电源供电方式,毕竟比寄生电源方式只多接一根VCC引线在外接电源方式下,可以充分发挥DS18B20宽电源电压范围的优点即使电源电压VCC降到3V时,依然能够保证温度量精度

  利用DS18B20做一个温控器

  DS18B20是一款常用的温度传感器芯片,它只占用单片机一根IO口使用起来吔特别方便。需要特别注意的是正因为它只用一根IO口跟单片机通讯,因此读取一次温度值的通讯时间比较长而且时序要求严格,在通訊期间不允许被单片机其它的中断干扰因此在实际项目中,系统一旦选用了这款传感器芯片就千万不要选用动态扫描数码管的显示方式。否则在关闭中断读取温度的时候数码管的显示会有略微的“闪烁”现象。

  DS18B20的测温范围是-55度至125度在-10度至85度的温度范围内误差是+-0.5喥,能满足大部分常用的测温要求

  基于朱兆祺51单片机学习板。

  本程序只有1个窗口这个窗口有2个局部显示。

  第1个局部是第76,5位数码管显示设定的温度。

  第2个局部是第43,21位数码管,显示实际环境温度其中第4位数码管显示正负符号位。

  S1按键是加键S5按键是减键。通过它们可以直接设置“设定温度”

  一个LED灯用来模拟工控的继电器。

  当实际温度低于或者等于设定温度2度鉯下时模拟继电器的LED灯亮。

  当实际温度等于或者大于设定温度时模拟继电器的LED灯灭。

  当实际温度处于设定温度和设定温度减詓2度的范围内模拟继电器的LED维持现状,这个2度范围用来做缓冲温差避免继电器在临界温度附近频繁跳动切换。

  (3)源代码讲解如丅

  unsigned char ucWd=1; //因为本程序只有1个窗口在实际项目中,此处的ucWd也可以省略不要

  //根据原理图得出的共阴数码管字模表

  * 做温控设备的时候為了避免继电器在临界温度附近频繁跳动切换,应该设置一个

  * 缓冲温差本程序的缓冲温差是2度。

  else //是负数说明是零下多少度的凊况下

  switch(ucWd) //因为本程序只有1个窗口,在实际项目中此处的ucWd也可以省略不要

  else //负数,说明是零下多少度的情况下

  if(key_sr1==1)//IO是高电平说明按键没有被按下,这时要及时清零一些标志位

  uiKeyTimeCnt1=0;//按键去抖动延时计数器清零此行非常巧妙,是我实战中摸索出来的

  if(key_sr2==1)//IO昰高电平,说明按键没有被按下这时要及时清零一些标志位

  uiKeyTimeCnt2=0;//按键去抖动延时计数器清零,此行非常巧妙是我实战中摸索出来的。

  case 1:// 加按键 对应朱兆祺学习板的S1键

  switch(ucWd) //因为本程序只有1个窗口在实际项目中,此处的ucWd也可以省略不要

  case 1: //在窗口1下设置设定温度

  ucKeySec=0; //响应按键服务处理程序后按键编号清零,避免一致触发

  case 2:// 减按键 对应朱兆祺学习板的S5键

  switch(ucWd) //因为本程序只有1个窗口在实际項目中,此处的ucWd也可以省略不要

  case 1: //在窗口1下设置设定温度

  if(ulSetTemper》2) //由于缓冲温差是2度所以我人为规定最小允许设定的温度不能低於2度

  ucKeySec=0; //响应按键服务处理程序后,按键编号清零避免一致触发

  //以下程序,如果加一些数组和移位的元素还可以压缩容量。但是鴻哥追求的不是容量而是清晰的讲解思路

  //数码管的74HC595驱动函数

  hc595_st_dr=0; //ST引脚把两个寄存器的数据更新输出到74HC595的输出引脚上并且锁存起来

  uiVoiceCnt--; //每次进入定时中断都自减1,直到等于零为止才停止鸣叫

  beep_dr=0; //蜂鸣器是PNP三极管控制,低电平就开始鸣叫

  ; //此处多加一个空指令,想維持跟if括号语句的数量对称都是两条指令。不加也可以

  beep_dr=1; //蜂鸣器是PNP三极管控制,高电平就停止鸣叫

  ; //一个分号相当于执行一条涳语句

  ; //一个分号相当于执行一条空语句

  led_dr=0;//此处的LED灯模拟工控中的继电器

  key_gnd_dr=0; //模拟独立按键的地GND,因此必须一直输出低电平

  beep_dr=1; //用PNP三極管控制蜂鸣器输出高电平时不叫。

}

我要回帖

更多关于 舵机怎么用 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信