Иногда бывает нужно иметь простое устройство для охлаждения какого-то блока или элемента конструкции. В моем случае это был узел SvxLink. В корпусе небольшого размера была размещена радиостанция,блок питания, микрокомпьютер Rapsberry Pi,узел VOX управления рацией....а так как большую часть времени данная конструкция находится в режиме приема,то нет необходимости это дело охлаждать...другой вопрос,когда начинаются задушевные многочасовые разговоры в системе эхолинк...и рация естественно постоянно находится на передаче...что существенно нагревает ее корпус. И т.к. все собрано в одном блоке,то удобнее всего включать вентилятор,только когда радиостанция существенно нагревается.
Для этих целей подойдет Arduino c термодатчиком DS18B20. Работает сей девайс очень просто. термодатчик крепится к радиатору радиостанции. Как только температура превышает допустимый предел,включается вентилятор охлаждения. И в обратную сторону...как только радиостанция остывает вентилятор отключается. Все просто.
Вот код.
- #include <OneWire.h>
- #include <DallasTemperature.h>
- #define ONE_WIRE_BUS 2 //термодатчик
- #define RELE 3
- #define temp 30 //темп-вкл-реле
- //--- переменные ---
- OneWire oneWire(ONE_WIRE_BUS);
- DallasTemperature sensors(&oneWire);
- word ok;
- //===============================
- //initi()-процедура инициализации
- //===============================
- //--- процедура инициализации ---
- void initi()
- {
- for(int i=2; i<=3; i++){
- pinMode(i, OUTPUT);
- digitalWrite(i,HIGH);
- }
- }
- //--- процедура программы ---
- void setup(void)
- {
- Serial.begin(9600);
- sensors.begin();
- initi();
- }
- void loop(void)
- {
- sensors.requestTemperatures(); // Send the command to get temp.
- Serial.println(sensors.getTempCByIndex(0));
- delay(1000);
- ok = 0;
- if (sensors.getTempCByIndex(0) >= temp) {
- Serial.println("overtemperature");
- ok = 1;
- }
- if (ok == 1) {
- digitalWrite(RELE,LOW);
- }
- else
- { digitalWrite(RELE,HIGH);}
- }
Не забудьте подключить библиотеки в ардуино.
Удачи в нашем хобби,друзья!