多温度传感器
组件和用品
| | × | 8 | |
| | × | 1 | |
 | | × | 1 | |
| | × | 1 | |
| | × | 1 | |
| | × | 1 | |
 | | × | 1 | |
| | × | 1 | |
| | × | 1 | |
关于这个项目
我需要读出几个位置的温度。温度应解析为 domotica 系统 (Crestron/AMX)。该解决方案不应花费太多。通过这种方式,我决定使用 DS18B20 传感器,因为这些传感器广泛可用且相当便宜。最后但并非最不重要的是,它是一个总线系统。
传感器连接到 Arduino Nano。 Arduino(ttl)的串口输出转为RS232,兼容domotica系统。
为了让这一切看起来更漂亮,我设计了一个保护壳并在我的 Zortrax M200 3D 打印机上打印出来。
问题?随意问!
代码
MultiTempSensor v1.0.0Arduino
Arduino Code/*MultiTempSensor code by WT040The sensor code is based from the examples from Rik Kretzinger and some other snippets of codeHistory:v0.1.1 27/11/2016v0.1.5 04/12/2016 pre-release versionv1.0.0 04 /12/2017 发布版本*///Include's#include #include //Constants#define SENSOR_PIN 12#define READ_TIMER 10000 //10 秒//OneWire oneWire(SENSOR_PIN);//将我们的 oneWire 引用传递给达拉斯温度。 , 0x61, 0x16, 0x03, 0x21 };DeviceAddress Sensor3 ={ 0x28, 0xFF, 0x38, 0xB3, 0x60, 0x16, 0x03, 0xEA };DeviceAddress Sensor4 ={ 0x28, 0x,6A,100xE,0xE,10 };DeviceAddress Sensor5 ={ 0x28, 0xFF, 0xFE, 0x13, 0x61, 0x16, 0x03, 0x56 };DeviceAddress Sensor6 ={ 0x28, 0xFF, 0x89, 0xBA, 0x60, Address 0x03, {0x7 Sensor };0x7 Sensor 0xFF、0xFA、0xB C, 0x60, 0x16, 0x03, 0xD1 };DeviceAddress Sensor8 ={ 0x28, 0xFF, 0x57, 0xB1, 0x60, 0x16, 0x03, 0x93 };int amountOfSensors =8;//在总线上检查传感器数量的变量whileint counterCheckBus =0;void setup(){ // 启动串口显示结果 Serial.begin(9600); //display_Running_Sketch();打印程序名称(); Serial.print("初始化温控库版本"); Serial.println(DALLASTEMPLIBVERSION); Serial.print("正在搜索"); Serial.print(amountOfSensors); Serial.println("传感器..."); // 初始化温度测量库sensors.begin(); // 将分辨率设置为 10 位(可以是 9 到 12 位。越低越快)sensors.setResolution(Sensor1, 10); sensor.setResolution(Sensor2, 10); sensor.setResolution(Sensor3, 10); sensor.setResolution(Sensor4, 10); sensor.setResolution(Sensor5, 10); sensor.setResolution(Sensor6, 10); sensor.setResolution(Sensor7, 10); sensor.setResolution(Sensor8, 10); getSensorsOnBus(); Serial.println("系统初始化");}void loop(){ counterCheckBus++;延迟(READ_TIMER); Serial.println(); if (counterCheckBus ==360) { getSensorsOnBus(); counterCheckBus =0;传感器.requestTemperatures(); Serial.print("传感器1:");打印温度(传感器 1); Serial.println(); Serial.print("传感器2:");打印温度(传感器 2); Serial.println(); Serial.print("传感器3:");打印温度(传感器 3); Serial.println(); Serial.print("传感器4:");打印温度(传感器 4); Serial.println(); Serial.print("传感器5:");打印温度(传感器 5); Serial.println(); Serial.print("传感器6:");打印温度(传感器 6); Serial.println(); Serial.print("传感器7:");打印温度(传感器 7); Serial.println(); Serial.print("传感器8:");打印温度(传感器 8); Serial.println();}void printTemperature(DeviceAddress deviceAddress){ float tempC =sensors.getTempC(deviceAddress); if (tempC ==-127.00) { Serial.print("传感器错误!"); } else { Serial.print("C:"); Serial.print(tempC); }}void printProgramName() { String path =__FILE__; int slash =path.lastIndexOf('\\'); String programName =path.substring(slash + 1); int dot =programName.lastIndexOf('.'); programName =programName.substring(0, dot); Serial.print("\n程序版本:"); Serial.println(programName);}void getSensorsOnBus() { Serial.print("在总线上找到的传感器数量:"); Serial.println(sensors.getDeviceCount());}
定制零件和外壳
3D 打印外壳 - 底部 3D 打印外壳 - 顶部 3D 打印外壳 - sub-d 9 mount 示意图
基本原理图,不含 rs232 模块