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

Блок управления УМ на ГИ-7Б

Предлагаю Вашему вниманию блок управления УМ на ГИ- 7Б.

Что умеет данный блок управления:

1. При передачи переключает реле с пониженного напряжения на 220 в. при питании вентилятора охлаждения ламп ГИ-7Б. Т.е при приеме вентилятор работает на несколько меньших оборотах...как только передача нажата,то скорость вентилятора увеличивается,соответственно обдув ламп усиливается.

2. При отключении электропитания из сети включается дополнительный вентилятор на 12 вольт, который питается от отдельного аккумулятора и лампы охлаждаются согласно заданным температурам. Как только охлаждение ламп осуществлено...выключается дополнительный вентилятор.

3. Контроль заряда аккумуляторной батареи и ее температуры в процессе заряда...как только батарея заряжена,то отключается зарядка.

4. Индикация прием - передача, авария,и отключение заряда батареи.

Все сделано на ардуино и реле и термодатчиках.

Блок управления
Блок управления

/*

-------------------------------------------------------------------------------------------
Программа для управления усилителем мощности на ГИ-7Б

-------------------------------------------------------------------------------------------
1 - управление скоростью вращения ветилятора
1-пониженные обороты (RX)(110v)
2-повышенные обороты (TX)(220v)
-------------------------------------------------------------------------------------------
2 - управление дополнительным вентилятором
1-включение вентилятора для охлажлдения ламп после отключения питания или в случае аварии
2-включение вентилятора в случае перегрева ламп
-------------------------------------------------------------------------------------------
3 - световая индикация перехода режима прием-передача
1-зеленый светодиод - TX
2-красный светодиод - RX
-------------------------------------------------------------------------------------------
4 - cветовая индикация аварийного режима
-------------------------------------------------------------------------------------------

*/

//подключаем библиотеки
//для работы датчика температуры
#include <DallasTemperature.h>
#include <OneWire.h>

//устанавливаем константы
//----- блок реле -----
#define rele_1 2 //реле_1 //главный вентилятор
#define rele_2 3 //реле_2 //дополнительный вентилятор
#define rele_3 4 //реле_3 //сигнализация прием-передача
#define rele_4 5 //реле_4 //сигнализация аварии

//----- параметры термодатчика -----
#define term 8 //пин-термодатчиков
#define temp 40 //температура-вкл-реле
#define t_air 25 //температура-отк-охлаждения
#define max_temp_bat 50 //максимальная температура зарядки АКБ
#define v_off 15.5

OneWire oneWire(term); //настройка объекта oneWire для связи с любым устройством OneWire
DallasTemperature sensors(&oneWire);
float measured_t[2] = {0,0}; //измеренная температура

//контроль прием-передача (RX-TX)
#define rx_tx 6

//контроль отключнения электропитания
#define off_power 7

//==========================================
//===== ПРОЦЕДУРЫ ======
//initpin - инициализация пинов ардуино
//measurement - измерение температуры
//RxTx - скорость основного вентил.
//PowerKuler - включение дополн. кулера
//Voltage - отключение от зарядки АКБ
//==========================================



//===== процедура инициализации пинов =====
void initpin() {
//инициализируем выходные пины для управления реле
for(int i=2; i<=5; i++)
{
pinMode(i,OUTPUT);
digitalWrite(i,HIGH);
}
//pinMode(8,OUTPUT);
//digitalWrite(8,HIGH);

//инициализируем входные пины
pinMode(term,INPUT);
pinMode(rx_tx,INPUT);
pinMode(off_power,INPUT);
pinMode(A6,INPUT);
//линейка светодиодов
for (int i=9; i<=12; i++){
pinMode(i,OUTPUT);
}
}



//===== процедура измерения темперутуры =====
void measurement(float mas[2]) {
float T_GI7B = 0.0;
float T_bat = 0.0;
//T_GI7B = 0; T_bat = 0;
sensors.requestTemperatures();
//delay(1000);
Serial.println("========");
T_GI7B = sensors.getTempCByIndex(1);
//delay(500);
Serial.print("GI-7B:");
Serial.println(T_GI7B);
T_bat = sensors.getTempCByIndex(0);
//delay(500);
Serial.print("B-A-T:");
Serial.println(T_bat);
mas[0] = T_GI7B;
mas[1] = T_bat;
}


//===== процедура изменеия скорости вращения вентилятора =====
void RxTx(){
int rt_x = 0;
rt_x = digitalRead(rx_tx);
Serial.print("TX/RX = ");
Serial.println(rt_x);
if ((rt_x == 1)||(measured_t[0] >= temp)) // превышение предельно-допустимой температуры
// или произошло выключение питания
{
digitalWrite(rele_1,LOW); //переключить вентилятор на 220 вольт
}
else
{
digitalWrite(rele_1,HIGH); //переключить вентилятор на 110 вольт
rt_x = 0;
}
}



//===== включение дополнительного вентилятора в случае выключения питания =====
void PowerKuler(){
digitalWrite(11,LOW);
digitalWrite(rele_2,HIGH); //изначально выключен
if ((measured_t[0] >= temp)||(digitalRead(off_power) == 0)){
digitalWrite(rele_2, LOW); //включить дополнительный вентилятор
digitalWrite(11, HIGH);
}
//if (measured_t[0] <= temp){
// digitalWrite(rele_2, HIGH); //отключить дополнительный вентилятор
//}
}

//===== сигнализация приема-передачи =====
void RedGreen(){
if (digitalRead(rx_tx) == 1){
digitalWrite(rele_3, LOW);
digitalWrite(9,HIGH); //LED TX
digitalWrite(10,LOW); //LED RX
}
else
{
digitalWrite(rele_3, HIGH);
digitalWrite(10,HIGH); //LED RX
digitalWrite(9,LOW); //LED TX
}
}

//===== Контроль заряда батареи =====
void Voltage(){
float input_volt = 0.0;
float tmp = 0.0;
float r1 = 100000.0;
float r2 = 10000.0;
int analogvalue = 0.0;

analogvalue = analogRead(A6);
tmp = (analogvalue*5.0)/1024.0;
input_volt = tmp/(r2/(r1+r2));
if (input_volt < 0.9){
input_volt = 0.0;
}
Serial.print("V = ");
Serial.println(input_volt);
//Разрываем цепь зарядки аккумулятора
if ((input_volt >= v_off)||(measured_t[1] > max_temp_bat)){
digitalWrite(rele_4, LOW);
digitalWrite(12,HIGH); //LED AKB
}
else {
digitalWrite(rele_4,HIGH);
digitalWrite(12,LOW); //LED AKB
}
}

//init
void setup() {
initpin(); //инициализация пинов ардуино
Serial.begin(9600); //Инициализация монитора порта
sensors.begin(); //инициализация термодатчика
}

//--main
void loop(){
measurement(measured_t); //измеряем температуру
RxTx();
PowerKuler();
RedGreen();
Voltage();
//delay(5000);
}

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