Блок-схема алгоритма работы

Введение

Целью курсовой работы является закрепление теоретических знаний и формированиепрактических навыков по разработке микроконтроллерной системы управления мехатронным устройством.

По варианту задания спроектировать микроконтроллерную систему управления. Приэтом можно использовать любые микроконтроллеры AVR, их отладочные платы, а также дополнительное оборудование (в соответствии с заданием).

 

 


1.

1. Исходное задание
Регулятор работы вентилятора

Устройство состоит из микроконтроллера, датчика температуры, датчика освещенности (фоторезистор), вентилятора на двигателе постоянного тока (микромоторчик) с необходимой электрической частью и батареи питания электродвигателя. Устройство должно определять температуру, и если температура выше заданной (указана внутри программы) более чем на 2 градуса, - подавать сигнал на управление вентилятором по П-закону управления. Кроме того, если появляется освещенность заданного уровня, независимо от температуры вентилятор должен включаться на постоянную работу с половинной мощностью и выключаться через 30с после наступления темноты. Текущее значение температуры передавать по линии связи на ПК и наблюдать на его мониторе.


 

Выбор микроконтроллера

В качестве отладочной платы выбираем ARDUINO с микроконтроллером ATmega-328P, которая содержит:

ОЗУ 2Кб,

EEPROM 1Кб

тактовую частоту 20МГц

рабочее напряжение 5в

входное напряжение (рекомендуемое) 7-12в

входное напряжение (предельное) 6-20в

цифровые Входы/Выходы 14 (6 из которых могут использоваться как выходы ШИМ)

 


 

Принципиальная электрическая схема

 

Рисунок 1 – Принципиальная схема

 

 

Блок-схема алгоритма работы

Рисунок 2 – блок- схема алгоритма главной программы

Рисунок 3 – блок- схема алгоритма управления красным сигналом

Рисунок 4 – блок- схема алгоритма управления желтым сигналом

Рисунок 5 – блок- схема алгоритма управления зеленым сигналом

Листинг программы

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

DHTdht(4, DHT11);

uint8_tzadana_t=26; // заданая температура

uint16_tzadana_r=450; // заданая световая

uint8_ttime_zad=1; //время работы после темноты (задаётся в сикундах)

uint8_tPWM; // шим сигнал

uint32_ttiem; // заместоdelay

//uint8_t хранит в себе от 0 до 255

//uint16_t хранит в себе от 0 до 65535

 

uint8_tizmer; // измеряемая температура изменяюшаяся только при смени градуса

int16_ttem; // ответ п ригулятора

uint16_trezist; // фоторезистор

uint8_tkp=9; // кофицыент для п ригулятора

booloo; // значения для работы от датчика температуры

//int16_t хранит в себе от -32767 до 32767

//bool хранит 0 и 1

 

voidsetup() {

dht.begin(); //включения датчика

Serial.begin(9600); // работа с Serial на скорости 9600

 

}

 

voidloop() {

 

if (izmer!= dht.readTemperature()) {izmer = dht.readTemperature(); Serial.print("Temperature "); Serial.print (izmer); Serial.print(" C"); Serial.println (PWM); }// вывод данных только когда изменения даные датчика и вывод данных в Serial

tem=(izmer-zadana_t)*kp;// крутые расшеты п ригулятора(надо zadana_t-izmer, но для работы не с отрицытельнымичисламы мы поменяли)

 

rezist=analogRead(A0);//запись данных с фоторезистора

if (rezist>zadana_r){oo=0; tiem=(millis()+time_zad*1000);} //когда значения с датчика(rezist) больше значения задонова(zadana_r) вклучаем {выклучениярабоут от температуры(oo=0) и запуск таймера (используется замена delay)}

else {oo=1;} // если нет, то вклучаем работу от температуры

 

if (tiem>millis()) { oo=0; PWM=126;}// если время вклучения таймера больше то {выклучаем работу от температуры и вклучаем вентилятор в пол силы }

else {oo=1;}// если нет, то вклучаем работу от температуры

 

if(oo==1)//если равно 1, то вклучаем работу от датчика температуры

{ PWM=0; // сбрасываем скорость вентилятора на 0

if (tem>=0){PWM=map(tem,0,50,0,255);}}; // командой tem>=0 убираем отрицательные значения П ригулятора, командой map преобразуем значения П ригулятора в подходяшие значения мотора

analogWrite(11,PWM); // вывод шим на 11 пор

}


6.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: