Saya perlu membaca suhu pada beberapa posisi. Suhu harus diuraikan ke sistem domotika (Crestron/AMX). Solusinya seharusnya tidak terlalu mahal. Dengan cara ini saya memutuskan untuk menggunakan sensor DS18B20 karena ini tersedia secara luas dan cukup murah. Terakhir, ini adalah sistem bus.
Sensor terhubung ke Arduino Nano. Output Serial Arduino (ttl) diubah menjadi RS232 agar kompatibel dengan sistem domotika.
Agar semuanya terlihat bagus, saya mendesain kasing dan mencetaknya di printer 3D Zortrax M200 saya.
Kode
MultiTempSensor v1.0.0Arduino
Kode Arduino/*Kode MultiTempSensor oleh WT040Kode sensor didasarkan pada contoh dari Rik Kretzinger dan beberapa cuplikan kode lainnyaSejarah:v0.1.1 27/11/2016v0.1.5 04/12/2016 versi pra-rilisv1.0.0 04 /12/2017 versi rilis*///Include#include #include //Constants#define SENSOR_PIN 12#define READ_TIMER 10000 //10 detik//OneWire oneWire(SENSOR_PIN);// Teruskan referensi oneWire kami ke Dallas Temperature.DallasTemperature sensor(&oneWire);//Sensor Adresses DeviceAddress Sensor1 ={ 0x28, 0xFF, 0x89, 0x0F, 0x61, 0x16, 0x03, 0x40 };DeviceAddress Sensor2 ={ 0x28, 0xFF, 0xE2, 0x0x , 0x61, 0x16, 0x03, 0x21 };DeviceAddress Sensor3 ={ 0x28, 0xFF, 0x38, 0xB3, 0x60, 0x16, 0x03, 0xEA };DeviceAddress Sensor4 ={ 0x28, 0xFF, 0xA4, 0xBE, 0x60, 0x16, 0x103 };DeviceAddress Sensor5 ={ 0x28, 0xFF, 0xFE, 0x13, 0x61, 0x16, 0x03, 0x56 };DeviceAddress Sensor6 ={ 0x28, 0xFF, 0x89, 0xBA, 0x60, 0x16, 0x03, 0xFB };DeviceAddressSensor 0xFF, 0xFA, 0xB C, 0x60, 0x16, 0x03, 0xD1 };DeviceAddress Sensor8 ={ 0x28, 0xFF, 0x57, 0xB1, 0x60, 0x16, 0x03, 0x93 };int numberOfSensors =8;//variabel untuk memeriksa jumlah sensor pada bus sekali dalam a whileint counterCheckBus =0;void setup(){ // mulai serial port untuk menampilkan hasil Serial.begin(9600); //display_Running_Sketch(); printNamaProgram(); Serial.print("Inisialisasi Versi Pustaka Kontrol Suhu "); Serial.println(VERSI DALLASTEMPLIB); Serial.print("Mencari "); Serial.print(jumlahSensor); Serial.println("sensor..."); // Inisialisasi sensor perpustakaan pengukuran suhu.begin(); // atur resolusi menjadi 10 bit (Bisa 9 hingga 12 bit .. lebih rendah lebih cepat) sensor.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("Sistem diinisialisasi");}void loop(){ counterCheckBus++; tunda(READ_TIMER); Serial.println(); if (counterCheckBus ==360) { getSensorsOnBus(); counterCheckBus =0; } sensor.requestTemperatures(); Serial.print("Sensor 1 :"); printSuhu(Sensor1); Serial.println(); Serial.print("Sensor 2 :"); printSuhu(Sensor2); Serial.println(); Serial.print("Sensor 3 :"); printSuhu(Sensor3); Serial.println(); Serial.print("Sensor 4 :"); printSuhu(Sensor4); Serial.println(); Serial.print("Sensor 5:"); printSuhu(Sensor5); Serial.println(); Serial.print("Sensor 6:"); printTemperature(Sensor6); Serial.println(); Serial.print("Sensor 7 :"); printSuhu(Sensor7); Serial.println(); Serial.print("Sensor 8:"); printSuhu(Sensor8); Serial.println();}void printTemperature(DeviceAddress deviceAddress){ float tempC =sensor.getTempC(deviceAddress); if (tempC ==-127.00) { Serial.print("Sensor error!"); } else { Serial.print("C:"); Serial.print(tempC); }}void printProgramName() { Jalur string =__FILE__; int slash =path.lastIndexOf('\\'); String namaprogram =path.substring(garis miring + 1); int dot =namaprogram.lastIndexOf('.'); namaprogram =namaprogram.substring(0, titik); Serial.print("\nVersi program:"); Serial.println(programName);}void getSensorsOnBus() { Serial.print("Jumlah sensor yang ditemukan di bus:"); Serial.println(sensors.getDeviceCount());}
Suku cadang dan penutup khusus
Kasing yang dapat dicetak 3D - kasing yang dapat dicetak 3D bawah - kasing yang dapat dicetak atas3D - dudukan sub-d 9 Skema
skema dasar, tanpa modul RS232