Essays.club - Получите бесплатные рефераты, курсовые работы и научные статьи
Поиск

Сигнализация превышения температуры

Автор:   •  Май 19, 2023  •  Лабораторная работа  •  1,841 Слов (8 Страниц)  •  124 Просмотры

Страница 1 из 8

Цель работы: 

Разработка схемы сигнализации превышения температуры, с возможностью проверки работоспособности системы оповещения с помощью кнопки.

Вариант: №5

Исходные данные: 

Организовать  При превышении предаварийного значения температуры (+40) подать звуковой сигнал длительностью 20 секунд, включить мигание светодиода (10с\10с) до возвращения температуры к нормальным значениям. При превышении аварийного значения температуры (+50) включить звуковой сигнал типа короткие гудки (5с\5с), включить непрерывное свечение светодиода, до выхода температуры из области аварийных значений. При нажатии кнопки первый – раз имитировать превышение предаварийного значения, при нажатии – второй раз имитировать превышение аварийного значения, на третье нажатие – отключать сигнализацию.

Состав комплектующих для выполнения работы:

Наименование компонента

Тип

Количество

1

Микропроцессорный контроллер

Arduino Uno R3

1

2

Датчик температуры

TMP36

1

3

Кнопка

1

4

Резистор

2

5

Пьезоэлемент

1

6

Светодиод (красный)

1

7

Макетная плата

1

[pic 1]

Рисунок 1 – список элементов, сгенерированный средствами Tinkercad

[pic 2]

Рисунок 2 – элементы и их соединения в среде Tinkercad

[pic 3]

Рисунок 3 – электрическая принципиальная схема

Листинг программного кода:        

int led = 4;              

int btm = 2;                

int spk = 11;                  

int regim = 0;                

int flag = 0;                

int i = 0;  

const int sensorPin = A0;    

void setup() {

  pinMode(led, OUTPUT);

  pinMode(spk, OUTPUT);                          

  pinMode(btm, INPUT);    

}

void loop() {

    if (digitalRead(btm) == HIGH && flag==0) {

        regim++;                            

        flag=1;

        if (regim>3) {

            regim=1;                          //  Возвращение на режим 1

            noTone(spk);                      //  Выключение звукового сигнала

            digitalWrite (led, LOW);          //  Выключение светового сигнала

            delay(10000);                     //  Задержка

        }

       

    }

    if (digitalRead(btm) == LOW && flag == 1) {

        flag=0;

    }

    int reading = analogRead(sensorPin);  

    float voltage = (reading / 1024.0) * 5.0;

    float temperature = (voltage - 0.5) * 100;    

    if (temperature >= 40 && temperature <= 49.9) {

                tone(spk,50);              //  Включение звукового сигнала

                digitalWrite (led, HIGH);  //  Включение светового сигнала

                delay(10000);            

                digitalWrite (led, LOW);  

                delay(10000);            

                noTone(spk);            

                digitalWrite (led, HIGH);    

                delay(10000);                    

                digitalWrite (led, LOW);

                delay(10000);              

            }

 

    if (temperature >= 50) {

        tone(spk, 50);                  

        delay(1000);                                    

        noTone(spk);                    

        delay(1000);

        digitalWrite (led, HIGH);        

        delay(1000);                    

    }

 

    if (regim==1) { //  Нажатие на кнопку первый раз

        for (int i=0; i==0; i++) {

            tone(spk,50);                    

            digitalWrite (led, HIGH);        

            delay(10000);                    

            digitalWrite (led, LOW);        

            delay(10000);                    

            noTone(spk);                    

            digitalWrite (led, HIGH);        

            delay(10000);                    

            digitalWrite (led, LOW);        

            delay(10);                      

        }

       

    }

    if (regim==2) { //  Нажатие на кнопку второй раз

        for (int i=0; i==0; i++) {

            tone(spk, 50);                  

            delay(1000);                                    

            noTone(spk);                    

            delay(1000);

            digitalWrite (led, HIGH);        

            delay(1000);  

        }

    }

    if (regim==3) { // Нажатие на кнопку третий раз раз

        for (int i=0; i==0; i++) {

            noTone(spk);                    

            digitalWrite (led, LOW);

            delay(10000);            

        }

    }

}

...

Скачать:   txt (7.7 Kb)   pdf (331.9 Kb)   docx (241.3 Kb)  
Продолжить читать еще 7 страниц(ы) »
Доступно только на Essays.club