Найти в Дзене
РАДИОканальчик

Простой термодатчик на Arduino

Иногда бывает нужно иметь простое устройство для охлаждения какого-то блока или элемента конструкции. В моем случае это был узел SvxLink. В корпусе небольшого размера была размещена радиостанция,блок питания, микрокомпьютер Rapsberry Pi,узел VOX управления рацией....а так как большую часть времени данная конструкция находится в режиме приема,то нет необходимости это дело охлаждать...другой вопрос,когда начинаются задушевные многочасовые разговоры в системе эхолинк...и рация естественно постоянно находится на передаче...что существенно нагревает ее корпус. И т.к. все собрано в одном блоке,то удобнее всего включать вентилятор,только когда радиостанция существенно нагревается.

Для этих целей подойдет Arduino c термодатчиком DS18B20. Работает сей девайс очень просто. термодатчик крепится к радиатору радиостанции. Как только температура превышает допустимый предел,включается вентилятор охлаждения. И в обратную сторону...как только радиостанция остывает вентилятор отключается. Все просто.

Вот код.

  1. #include <OneWire.h>
  2. #include <DallasTemperature.h>
  3. #define ONE_WIRE_BUS 2 //термодатчик
  4. #define RELE 3
  5. #define temp 30 //темп-вкл-реле
  6. //--- переменные ---
  7. OneWire oneWire(ONE_WIRE_BUS);
  8. DallasTemperature sensors(&oneWire);
  9. word ok;
  10. //===============================
  11. //initi()-процедура инициализации
  12. //===============================
  13. //--- процедура инициализации ---
  14. void initi()
  15. {
  16. for(int i=2; i<=3; i++){
  17. pinMode(i, OUTPUT);
  18. digitalWrite(i,HIGH);
  19. }
  20. }
  21. //--- процедура программы ---
  22. void setup(void)
  23. {
  24. Serial.begin(9600);
  25. sensors.begin();
  26. initi();
  27. }
  28. void loop(void)
  29. {
  30. sensors.requestTemperatures(); // Send the command to get temp.
  31. Serial.println(sensors.getTempCByIndex(0));
  32. delay(1000);
  33. ok = 0;
  34. if (sensors.getTempCByIndex(0) >= temp) {
  35. Serial.println("overtemperature");
  36. ok = 1;
  37. }
  38. if (ok == 1) {
  39. digitalWrite(RELE,LOW);
  40. }
  41. else
  42. { digitalWrite(RELE,HIGH);}
  43. }

Не забудьте подключить библиотеки в ардуино.

Удачи в нашем хобби,друзья!