tag 标签: DS18B20

相关帖子
相关博文
  • 热度 4
    2024-6-26 12:28
    505 次阅读|
    0 个评论
    之前通过 STC 单片机和 DS18B20 实现了环境温度采集并串口显示,后面进一步想要实现温度的实时监测和数据记录保存,因此编写了 LabVIEW 程序,修改了部分单片机程序代码。经过实验验证,该项目可以实现 LabVIEW 上位机对 MCU 发送指令,MCU 通过 DS18B20 温度传感器获取环境温度,并通过串口将数据反馈给上位机,上位机实时记录数据,并将日期和各个时刻的温度数据保存至文件。 LabVIEW上位机前面板设置如图所示 程序面板如下图所示 需要注意的是单片机发送字符串给上位机、上位机接收均是一位一位传递,因此需要考虑判定截止符号,并将字符串转化为一定精度的数值才能显示到LabVIEW图表。 实物连接如下图所示 LabVIEW和程序代码见 。
  • 热度 8
    2022-6-2 09:08
    1389 次阅读|
    0 个评论
    用DS18B20温度传感器和STM32蓝丸板实现远程测温
    这可能是最简单的STM32项目了,整个BOM只有DS18B20温度传感器、STM32蓝丸板和一个最平常的4.7k电阻器,外加一款面包板和几根杜邦线。也许有人说这简直就是浪费STM32资源,我说这是入门砖,了解了基本原理后面就是缤纷世界。 DS18B20智能型防水温度传感器 DS18B20是一款智能型防水温度传感器,用于测量-55 to 125°C之间液体温度。由于每个DS18B20包含一个独立IP序列号,多个DS18B20可共用同一条1-Wire总线。 DS18B20可以分别在93.75ms和750ms内完成9位和12位的数字量,信息读出或写入仅需要一根口线(单线接口)读写,温度变换功率来源于数据总线,总线本身也可以向所挂接的DS18B20供电,而无需额外电源。 DS18B20传感器带有电缆和防水功能,可用来方便的测量潮湿环境,即使远距离测量也不会导致信号衰减,测量精度可达±0.5°C。DS18B20集成有12 bits ADC,可通过一个简单的数字引脚与任何MCU接口。 DS18B20传感器的不足之处是采用的Dallas 1-Wire协议有些复杂,需要较多代码才能通信。使用中,还要采用一个4.7k电阻器从VCC对数据进行上拉。 DS18B20与STM32F103C接口 DS18B20与STM32F103C蓝丸板的接口电路很简单,传感器由STM32蓝丸的3.3V引脚供电,GND引脚与蓝丸GND连接。数字引脚经过4.7K电阻器上拉后,连接于蓝丸板的PA8引脚。 DS18B20数字温度计提供9-12位(可编程设备温度读数)。由于DS18B20是单线通信,与STM32F103C MCU连接只有一条线,读写以及温度转换所需能量也可以从数据线本身获得。 DS18B20 -STM32代码 让STM32蓝丸板读取DS18B20感测的温度信息,可以各种方法上传如下代码,例如使用USB-TTL转换器模块以串口上传。 int DSPIN = PA8; void setup() { // put your setup code here, to run once: Serial.begin(115200); } void loop() { // put your main code here, to run repeatedly: double temp = TempRead(); temp = temp * 0.0625; // conversion accuracy is 0.0625 / LSB Serial.print("Temperature: "); Serial.print(temp); Serial.println(" °C"); Serial.println(""); delay(500); } boolean DS18B20_Init() { pinMode(DSPIN, OUTPUT); digitalWrite(DSPIN, HIGH); delayMicroseconds(5); digitalWrite(DSPIN, LOW); delayMicroseconds(750);//480-960 digitalWrite(DSPIN, HIGH); pinMode(DSPIN, INPUT); int t = 0; while (digitalRead(DSPIN)) { t++; 60) return false; delayMicroseconds(1); } t = 480 - t; pinMode(DSPIN, OUTPUT); delayMicroseconds(t); digitalWrite(DSPIN, HIGH); return true; } void DS18B20_Write(byte data) { pinMode(DSPIN, OUTPUT); for (int i = 0; i < 8; i++) { digitalWrite(DSPIN, LOW); delayMicroseconds(10); if (data & 1) digitalWrite(DSPIN, HIGH); else digitalWrite(DSPIN, LOW); = 1; delayMicroseconds(50); digitalWrite(DSPIN, HIGH); } } byte DS18B20_Read() { pinMode(DSPIN, OUTPUT); digitalWrite(DSPIN, HIGH); delayMicroseconds(2); byte data = 0; for (int i = 0; i < 8; i++) { digitalWrite(DSPIN, LOW); delayMicroseconds(1); digitalWrite(DSPIN, HIGH); pinMode(DSPIN, INPUT); delayMicroseconds(5); = 1; if (digitalRead(DSPIN)) data |= 0x80; delayMicroseconds(55); pinMode(DSPIN, OUTPUT); digitalWrite(DSPIN, HIGH); } return data; } int TempRead() { if (!DS18B20_Init()) return 0; DS18B20_Write (0xCC); // Send skip ROM command DS18B20_Write (0x44); // Send reading start conversion command if (!DS18B20_Init()) return 0; DS18B20_Write (0xCC); // Send skip ROM command DS18B20_Write (0xBE); // Read the register, a total of nine bytes, the first two bytes are the conversion value int temp = DS18B20_Read (); // Low byte temp |= DS18B20_Read () << 8; // High byte return temp; } 上述代码上传后,Serial Monitor就开始显示被测环境的的温度数值。
  • 热度 20
    2014-12-1 20:06
    1425 次阅读|
    1 个评论
    很久之前做的,在stc89c52rc上调试通过。实测比较好用,大家完全可以自己去做一个,当然电机驱动可以用nmos搭电路。
  • 热度 13
    2014-1-16 22:44
    1719 次阅读|
    0 个评论
           以前在个人博客上公布过一次《基于51单片机及DS18B20温度传感器的数字温度计程序及详细注释》及源码下载,为了使更多有需要的朋友可以借鉴,这次我把大学时候做的一个课程设计完全公布出来,包括论文、原理图、实物图、实物程序及仿真和仿真程序。程序开发软件使用的是keil for 51,仿真软件使用的是proteus 7.7 sp2。         论文目录如图1所示: 图1           原理图如图2所示: 图2          实物图如图3所示: 图3        仿真图如图4所示: 图4         打包下载:见附件。         更多资源请到个人博客www.zicreate.com‘智笔记’下载。
  • 热度 18
    2013-11-6 09:41
    1643 次阅读|
    0 个评论
    点击:原文 这个教程会为你讲解: *连接一个DS18B20温度传感器到Arduino *用单线接口从传感器读取数据 *直接通过Arduino发送数据至xively.com *在网络上查看到结果图 http://xively.com是一个物联网主机,可以基于你提供的数据来生成图片。 在这个例子中我会去监控我房间里的温度。 第一步:材料清单 * 带以太网插板的Arduino 我有一个Arduino Uno clone 和一个WIZnet W5100 插板    * 电源供给(可以通过一个USB口) 我很幸运因为我的路由器上有USB端口可以提供5V的输出,这意味着无论路由器在哪都可以给Arduino供电。 * DS18B20温度传感器   * RJ45 网线连接Arduino和你的路由器 步骤2:原理图   * Arduino gnd接地端 接DS18B20两个外部引脚 * Arduino 5V 接4.7k 电阻 * 4.7k电阻的另一个引脚接DS18B20中间引脚 * Arduino 数字引脚2接DS18B20 中间引脚 * RJ45电缆连接Arduino和路由器 * Arduino电源线(通过USB或电源插头,我用USB接的路由器) 步骤3:预备知识 要求的Arduino的三个库: onewire 库来自 http://www.pjrc.com/teensy/td_libs_OneWire.html (尤其是 http://www.pjrc.com/teensy/arduino_libraries/OneWire.zip) httpclient库来自 https://github.com/amcewen/HttpClient(https://github.com/amcewen/HttpClient/archive/master.zi) Xively来自https://github.com/xively/xively_arduino(https://github.com/xively/xively_arduino/archive/master.zip) 在你的Arduino/库目录中安装这些库 一个在http://xively.com上申请的账户(之前的pachebe.com和cosm.com) 在https://xively.com/get_started/上申请一个免费开发者账户 选择一个用户名,密码,设置你的地址和时区等等。你会收到一个确认邮件,点击激活链接激活你的账户。你可以选择test drive测试驱动来学习xively或者跳过,这完全取决于你。 步骤4:在Xively上增加一个新的设备   你现在应该在xively的开发设备页。这是兴趣的开始。 点击+ADD Device给新设备名称如ArduinoDS18B20温度记录器。 填写关于这个设备的描述,他的位置如我的创客空间。我喜欢在这加一个我家的网页链接,尽管在之后的指令里有一个专用的web地址区域。选择数据是否公开。 步骤5:你新设备的xively 界面,以及所有的访问代码   你现在的页面有大量的信息,不要有压力。 步骤6:Arduino代码 点击: 代码浏览 步骤7:欢迎来到物联网的世界   一旦你上传代码到Arduino,你应该能在请求日志部分看到数据,还有在图片上出现的数据点。 有数以万计的可能监控的事物,看看你的周围就可以了。 这里可以看我的创客空间,卧室:  https://xively.com/feeds/1238358657 当前温度是26.5摄氏度,应该是秋天了。 国内用户推荐使用:Yeelink     乐为物联
相关资源