Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Manufacturing Technology >> Productieproces

Meerpositie-temperatuursensorsysteem voor slimme thuisintegratie

Onderdelen en benodigdheden

Onderdeel Aantal
DS18B20 8
Schroeven 1
Arduino Nano R3 1
Experimenteerprint 1
Weerstand 4,7 kΩ 1
2-polige schroefklem 1
SparkFun RS232 Shifter - SMD 1
3D-geprinte behuizing 1
Draad 1

Nodige gereedschappen en machines

  • 3D-printer (algemeen)
  • Schroevendraaier

Apps en online diensten

  • Arduino IDE

Over dit project

Ik moest temperaturen op verschillende posities uitlezen. De temperatuur moest worden doorgegeven aan een domoticasysteem (Crestron/AMX). De oplossing mocht niet te duur zijn. Daarom koos ik voor DS18B20-sensoren omdat deze breed beschikbaar en relatief goedkoop zijn. Bovendien is het een bussysteem.

De sensoren zijn aangesloten op een Arduino Nano. De seriële uitgang van de Arduino (TTL) wordt omgezet naar RS232 om compatibel te zijn met het domoticasysteem.

Om het er netjes uit te laten zien, heb ik een behuizing ontworpen en geprint op mijn Zortrax M200 3D-printer.

Meerpositie-temperatuursensorsysteem voor slimme thuisintegratie
Meerpositie-temperatuursensorsysteem voor slimme thuisintegratie
Meerpositie-temperatuursensorsysteem voor slimme thuisintegratie

Vragen? Aarzel niet om te vragen!

Code

MultiTempSensor v1.0.0

/* MultiTempSensor code by WT040
The sensor code is based on the examples from Rik Kretzinger and some other snippets of code
History:
v0.1.1 27/11/2016
v0.1.5 04/12/2016 pre-release version
v1.0.0 04/12/2017 release version
*/
//Include's
#include <OneWire.h>
#include <DallasTemperature.h>

//Constants
#define SENSOR_PIN 12
#define READ_TIMER 10000 //10 seconds

// OneWire oneWire(SENSOR_PIN);
// Pass our oneWire reference to Dallas Temperature.
DallasTemperature sensors(&oneWire);

//Sensor Adresses
DeviceAddress Sensor1 = { 0x28, 0xFF, 0x89, 0x0F, 0x61, 0x16, 0x03, 0x40 };
DeviceAddress Sensor2 = { 0x28, 0xFF, 0xE2, 0x0F, 0x61, 0x16, 0x03, 0x21 };
DeviceAddress Sensor3 = { 0x28, 0xFF, 0x38, 0xB3, 0x60, 0x16, 0x03, 0xEA };
DeviceAddress Sensor4 = { 0x28, 0xFF, 0xA4, 0xBE, 0x60, 0x16, 0x03, 0xE1 };
DeviceAddress Sensor5 = { 0x28, 0xFF, 0xFE, 0x13, 0x61, 0x16, 0x03, 0x56 };
DeviceAddress Sensor6 = { 0x28, 0xFF, 0x89, 0xBA, 0x60, 0x16, 0x03, 0xFB };
DeviceAddress Sensor7 = { 0x28, 0xFF, 0xFA, 0xBC, 0x60, 0x16, 0x03, 0xD1 };
DeviceAddress Sensor8 = { 0x28, 0xFF, 0x57, 0xB1, 0x60, 0x16, 0x03, 0x93 };

int amountOfSensors = 8;
//variable to check amount of sensors on bus once in a while
int counterCheckBus = 0;

void setup() {
  // start serial port to show results
  Serial.begin(9600);
  //display_Running_Sketch();
  printProgramName();
  Serial.print("Initializing Temperature Control Library Version ");
  Serial.println(DALLASTEMPLIBVERSION);
  Serial.print("Searching for ");
  Serial.print(amountOfSensors);
  Serial.println(" sensors...");
  // Initialize the Temperature measurement library
  sensors.begin();
  // set the resolution to 10 bit (Can be 9 to 12 bits .. lower is faster)
  sensors.setResolution(Sensor1, 10);
  sensors.setResolution(Sensor2, 10);
  sensors.setResolution(Sensor3, 10);
  sensors.setResolution(Sensor4, 10);
  sensors.setResolution(Sensor5, 10);
  sensors.setResolution(Sensor6, 10);
  sensors.setResolution(Sensor7, 10);
  sensors.setResolution(Sensor8, 10);
  getSensorsOnBus();
  Serial.println("System initialized");
}

void loop() {
  counterCheckBus++;
  delay(READ_TIMER);
  Serial.println();
  if (counterCheckBus == 360) {
    getSensorsOnBus();
    counterCheckBus = 0;
  }
  sensors.requestTemperatures();
  Serial.print("Sensor 1: ");
  printTemperature(Sensor1);
  Serial.println();
  Serial.print("Sensor 2: ");
  printTemperature(Sensor2);
  Serial.println();
  Serial.print("Sensor 3: ");
  printTemperature(Sensor3);
  Serial.println();
  Serial.print("Sensor 4: ");
  printTemperature(Sensor4);
  Serial.println();
  Serial.print("Sensor 5: ");
  printTemperature(Sensor5);
  Serial.println();
  Serial.print("Sensor 6: ");
  printTemperature(Sensor6);
  Serial.println();
  Serial.print("Sensor 7: ");
  printTemperature(Sensor7);
  Serial.println();
  Serial.print("Sensor 8: ");
  printTemperature(Sensor8);
  Serial.println();
}

void printTemperature(DeviceAddress deviceAddress) {
  float tempC = sensors.getTempC(deviceAddress);
  if (tempC == -127.00) {
    Serial.print("Sensor error!");
  } 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("\nProgram version: ");
  Serial.println(programName);
}

void getSensorsOnBus() {
  Serial.print("Number of sensors found on bus: ");
  Serial.println(sensors.getDeviceCount());
}

CAD-bestanden

3D-printbare behuizing - onderkant
3D-printbare behuizing - bovenkant
3D-printbare behuizing - Sub-D 9 montage

Schema's

Basis schema, zonder RS232-module

Meerpositie-temperatuursensorsysteem voor slimme thuisintegratie

Productieproces

  1. Bouw Een Raspberry Pi Temperatuur Logger Met Een $5 I2C Sensor
  2. Een externe temperatuursensor bouwen met Raspberry Pi en Python – Stap-voor-stap handleiding
  3. Een Multi-sensor Temperatuur- & Lichtmonitoringssysteem Bouwen met Raspberry Pi & DS18B20
  4. Een Raspberry Pi thuistemperatuurmonitor bouwen met MCP9808, InfluxDB & Grafana
  5. DasFilisera Slimme Kweekkas: Geavanceerd Plantengroeimonitoringssysteem
  6. MotionSense: Slimme inbraakdetectie met Arduino en ESP8266
  7. 3D-Printer Brandpreventie: Slimme Sensor Veiligheidssysteem
  8. Arduino-gebaseerde Afstotende Magnetische Levitatie: Eenvoudige Schakeling & DIY Handleiding
  9. CoroFence Thermische Detector: Geavanceerde PIR-sensor & IoT-integratie
  10. Precisie lager temperatuursensor – Nauwkeurige detectie & monitoring
  11. DS18B20 Temperatuursensor – Precieze 1-Wire Digitale Thermometer voor Industriëel & Consumptief Gebruik