Министерство Высшего и среднего специального образования республики узбекистан


Download 1.19 Mb.
bet9/9
Sana24.10.2020
Hajmi1.19 Mb.
#136259
1   2   3   4   5   6   7   8   9
Bog'liq
Диплом Бакиров тайёр 30.05


Рис.3.13

Микроконтроллеры ATmega168 и ATmega328 поставляются с записанным загрузчиком, облегчающим запись новых программ без использования внешних программаторов. Связь осуществляется оригинальным протоколом STK500.

Имеется возможность не использовать загрузчик и запрограммировать микроконтроллер через выводы блока ICSP (внутрисхемное программирование).

Автоматическая (программная) перезагрузка

Nano разработана таким образом, чтобы перед записью нового кода перезагрузка осуществлялась самой программой, а не нажатием кнопки на платформе. Одна из линий FT232RL, управляющих потоком данных (DTR), подключена к выводу перезагрузки микроконтроллеров ATmega168 или ATmega328 через конденсатор 100 нФ. Активация данной линии, т.е. подача сигнала низкого уровня, перезагружает микроконтроллер. Программа Arduino, используя данную функцию, загружает код одним нажатием кнопки Upload в самой среде программирования. Подача сигнала низкого уровня по линии DTR скоординирована с началом записи кода, что сокращает таймаут загрузчика.

Функция имеет еще одно применение. Перезагрузка Nano происходит каждый раз при подключении к программе Arduino на компьютере с ОС Mac X или Linux (через USB). Следующие полсекунды после перезагрузки работает загрузчик. Во время программирования происходит задержка нескольких первых байтов кода во избежание получения платформой некорректных данных (всех, кроме кода новой программы). Если производится разовая отладка скетча, записанного в платформу, или ввод каких-либо других данных при первом запуске, необходимо убедиться, что программа на компьютере ожидает в течение секунды перед передачей данных.

3.1.2. Основы программирования в среде C – ARDUINO


Язык программирования устройств Arduino основан на C/C++. Он прост в освоении, и на данный момент Arduino — это, пожалуй, самый удобный способ программирования устройств на микроконтроллерах.

3.1.2.1. Справочник языка Arduino


Язык Arduino можно разделить на три раздела. Они приведены в тбл.3.1.

Таблица 3.1.


Операторы

setup()

loop()

Управляющие операторы

if

if...else

for

switch case

while

do... while

break

continue

return

goto

Синтаксис

; (semicolon)

{} (curly braces)

// (single line comment)

/* */ (multi-line comment)
Арифметические операторы

= (assignment)

+ (addition)

- (subtraction)

* (multiplication)

/ (division)

% (modulo)

Операторы сравнения

== (equal to)

!= (not equal to)

< (less than)

> (greater than)

<= (less than or equal to)

>= (greater than or equal to)

Логические операторы

&& (И)

|| (ИЛИ)

! (Отрицание)

Унарные операторы

++ (increment)

-- (decrement)

+= (compound addition)

-= (compound subtraction)

*= (compound multiplication)

/= (compound division)

Данные

Константы

HIGH | LOW

INPUT | OUTPUT

true | false

Целочисленные константы

Константы с плавающей запятой

Типы данных

boolean

char

byte

int

unsigned int

word

long

unsigned long

float

double

string - массив символов

String - объект класса

массив (array)

void

Преобразование типов данных

char()

byte()

int()

long()

float()

Область видимости переменных и квалификаторы

Область видимости

static

volatile

const

Функции

Цифровой ввод/вывод

pinMode()

digitalWrite()

digitalRead()

Аналоговый ввод/вывод

analogRead()

analogReference()

analogWrite()

Дополнительные фунции ввода/вывода

tone()

noTone()

shiftOut()

pulseIn()

Работа со временем

millis()

micros()

delay()

delayMicroseconds()

Математические функции

min()

max()

abs()

constrain()

map()

pow()

sq()

sqrt()

Тригонометрические функции

sin()

cos()

tan()

Генераторы случайных значений

randomSeed()

random()

Внешние прерывания

attachInterrupt()

detachInterrupt()

Функции передачи данных

Serial


3.1.2.2. Библиотеки Arduino


Servo — библиотека управления сервоприводами.
EERPOM — чтение и запись энергонезависимой памяти микроконтроллера.
SPIбиблиотека, реализующая передачу данных через интерфейс SPI.
Stepper — библиотека управления шаговыми двигателями.

Для осуществления поставленных задач применялись такие элементы среды как подключение библиотеки RF24-master, подключение последовательного порта, отсчет времени по наработке микроконтроллера и другие.

3.1.2.3. Основные команды


Для написания программ в среде Arduino требуется соблюдение синтаксиса. Несоблюдение правил оформления кода, по крайней мере, приведет к ошибке компиляции, с указанием в нижнем окне, которое можно увидеть на Рис. 3.14. на позицию ошибки.



Рис.3.14.

25:17 в данном сообщении об ошибке обозначает, что ошибка находится в двадцать пятой строке, пятнадцатом символе строки кода программы.

Программа, написанная для работы нашего устройства, содержит 3 логические части кода. Первая – объявления переменных и постоянных, конфигурирование и ассоциирование устройств. Вторая часть – это команды, выполняемые лишь один раз. В синтаксисе Arduino C именуемая void setup. Третья часть является циклической, и будет выполнятся беспрерывно, после завершения предыдущих двух. Для работы в цикле код помещается в рамки void loop.
Для корректной работы программы использовались разные типы данных. Они приведены в таблице

Таблица 3.2. Использованные типы данных

Тип

Размер байт

Диапазон

char (символ)

1

-128 ... 127

unsigned char (символ без знака)

1

0 ... 255

int (целое)

2

-32768 ... 32767

unsigned int (целое без знака)

2

0 ... 65535

long (длинное целое)

4

-2147483648 ...2147483647

unsigned long (длинное целое без знака)

4

0 ... 4294967295

float (с плавающей точкой)

4

±3,4028235е-38... ±3,4028235е38



Одной из основных команд также является команда delay. Delay – это задержка исполнения команд в миллисекундах. Синтаксис написания: delay(ms).

    1. Разработка алгоритма выполнения программы контроля и обработки информации.

Алгоритм контроля вводом/выводом и обработкой информации будем строить согласно принципа построения и работы микропроцессорного устройство измерения влажности хлопка-сырца.

Принцип работы микропроцессорного устройство измерения влажности хлопка-сырца осуществляется согласно следующей последовательности:

  1. Установка режима работы рабочих регистров микроконтроллера;

  2. Прием информации из измерительного преобразователя;

  3. Организация проведения калибровки микропроцессорного устройства;

  4. Организация прерывания и задержки;

  5. Обработка и хранение информации;

  6. Выдача калибровочной частоты на дисплей.

  7. Сравнение калибровочной частоты с заданным значением и введение калибровочного коэффициента;

  8. Вычисление влажности хлопка-сырца и выдача данных на дисплей.

Каждый этап состоит из отдельных подпрограмм. Блок схема обобщенного алгоритма работы микропроцессорного устройства контроля и обработки данных приведена на рис. 4.1.

При включении питания микроконтроллер реализует подпрограмму инициализации (инициализация регистров ввода/вывода, таймера счетчика и других регистров). При нажатии кнопки «Калибровка» передается логический сигнал «0» на 2-ой вывод микроконтроллера (PD0) и запускается подпрограмма приема информации. Во время выполнения подпрограммы счет и обработка поступающих импульсов осуществляется в течение 10 секунд. После этого полученная информация записывается в регистр TCNT1 и осуществляется расчет калибровочного коэффициента. Значение полученного коэффициента записывается в регистр для проведения дальнейших расчетов. Значение калибровочной частоты выдается на дисплей. Процесс калибровки продолжает в течение 10 секунд. С этим устройства будут готово к измерению. Следующим этапом является процесс измерения. При нажатии кнопки «Измерения» передается логический сигнал «0» на 28-ой вывод микроконтроллера (PС5). Полученная информация из измерительного преобразователя записывается в регистр TCNT1 и осуществляется поправка с помощью полученного коэффициента калибровки. После всего этого вычисленное значение сравнивается с эталонным значением влажности хлопка-сырца и выбранное значение влажности выводится на дисплей. Процесс измерения продолжается в течение 10 секунд.

Для приема и обработки информации выбран язык программирования С, отличающиеся минимализмом. Код на С можно легко писать на низком уровне абстракции, почти как на ассемблере. Иногда С называют «универсальным ассемблером» или «ассемблером высокого уровня», что отражает различие языков ассемблера для разных платформ и единство стандарта С, код которого может быть скомпилирован без изменений практически на любой модели компьютера. С часто называют языком среднего уровня или даже низкого уровня, учитывая то, как близко он работает к реальным устройствам. Однако, в строгой классификации, он является языком высокого уровня.

В процессе написания программы использовался язык разметки для языка программирования CProcessing. Для обеспечения корректной работы некоторых компонентов устройства использовались программные библиотеки, такие как:

EERPOM — для чтения и записи в энергонезависимую память микроконтроллера.

DHT — для обеспечения работоспособности датчика влажности и температуры.

LiquidCrystal — для обеспечения работоспособности жидкокристаллического дисплея.

Подпрограмма калибровки

Получение корректных данных – одна из основных задач во всех датчиках. Частично эту задачу решает калибровка. Для калибровки используется алгоритм определения минимума и максимума сигнала:

int sensorValue = 0;

int sensorMin = 1023;

int sensorMax = 0;

void setup() {

// калибровка осуществляется в течении 5 секунд

while (millis() < 5000) {

sensorValue = analogRead(sensorPin);

if (sensorValue > sensorMax) {

sensorMax = sensorValue;

}

if (sensorValue < sensorMin) {

sensorMin = sensorValue;

}

}

digitalWrite(13, LOW);

}

void loop() {

sensorValue = analogRead(sensorPin);

sensorValue = map(sensorValue, sensorMin, sensorMax, 0, 255);

sensorValue = constrain(sensorValue, 0, 255);

analogWrite(ledPin, sensorValue);

}

Калибровка осуществляется на этапе отладки устройства.

Программа и описание:

Блок-схема программы



Текст программы и описание к ней приведены ниже:

#include // Подключение библиотеки EEPROM

#include // Подключение библиотеки LCD

#include "DHT.h" // Подключение библиотеки сенсора DHT11

#define DHTPIN A1 // Создание ассоциации между выводом

//соединенным с датчиком DHT11 и переменной DHTPIN

#define DHTTYPE DHT11 // Определение типа датчика

DHT dht(DHTPIN, DHTTYPE); // Настройка датчика

LiquidCrystal lcd(7, 5, 4, 3, 2, 1); // Задание выводов дисплея

void setup() { // Часть программы, выполняемая один раз

lcd.begin(16, 2); // Настройка и включение LCD

dht.begin(); // Настройка и включение датчика DHT

lcd.println("Zdravstvujte"); // Вывод на экран приветствия

// В данном случае используется латиница, но при необходимости возможно отображение и кириллических символов.

pinMode(A0, INPUT); // Задание вывода A0 как вход

pinMode(10, INPUT); // Задание вывода 10 как вход

}

void loop() { // Циклически повторяемая часть программы

if (analogRead(A0) > 5) { // Проверка активности кнопок

if (analogRead(A0) > 960){ // Чтение второй кнопки

lcd.clear(); // Очистка экрана

}

else{ // В случае невыполнения предыдущиго условия

// выполняются следующие команды

if (analogRead(A0) < 935) { // Чтение третьей кнопки

lcd.clear();

lcd.setCursor(1, 0); // Установка курсора

lcd.print("TEXT"); // Вывод на экран текста

lcd.setCursor(5, 1);

lcd.print("107-13");

}

}

}

if (digitalRead(10) == HIGH){ // Проверка состояния первой кнопки.

// В случае, если она активна запускается следующий код.

do{ // Данная команда предпологает выполнение входящей

// в нее части программы до тех пор,

// пока не будет выполнено условие while

if (millis() > 1000);{ // ожидание пока датчик произведет замеры

// Чтение температуры и влажности занимает около 250 миллисекунд

// Показания сенсора, так же, могут устареть к моменту прочтения на 2 секунды, в результате медленной работы данного сенсора.

float h = dht.readHumidity();

// Чтение температуры в градусах Целсия

float t = dht.readTemperature();

// Проверка всех показаний на ошибки и принудительный сброс в случае их обнаружения.

// Метод isNaN пытается преобразовать переданный параметр в число. Если параметр не может быть преобразован, возвращает true, иначе возвращает false.

if (isnan(h) || isnan(t)) {

lcd.setCursor(0, 0);

lcd.println("Failed to read "); // Вывод сообщения об ошибке

lcd.setCursor(0, 1);

lcd.println("from DHT sensor!");

return;

float hic = dht.computeHeatIndex(t, h, false); // Вычисление температурного индекса

// Вывод данных на дисплей

lcd.clear();

lcd.setCursor(0, 0);

lcd.print("Vlajnost’: ");

lcd.setCursor(9, 0);

lcd.print(h);

lcd.setCursor(15, 0);

lcd.print(" % ");

lcd.setCursor(0, 1);

lcd.print("Temperatura: ");

lcd.setCursor(9, 1);

lcd.print(t);

lcd.setCursor(15, 1);

lcd.print(" *C ");

if (analogRead(A0) > 960){ // чтение второй кнопки

lcd.setCursor(0, 1);

lcd.print("Indx vlj: ");

lcd.setCursor(12, 1);

lcd.print(hic);

lcd.setCursor(15, 1);

lcd.print(" *C ");

do {

delay(100);

} while (analogRead(A0) < 500);

}

}

}

} while (digitalRead(10) == HIGH);

lcd.clear();

}

}

ЗАКЛЮЧЕНИЕ


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

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

  2. Установлены преимущества и недостатки известных методов и средств контроля влажности различных материалов, в результате которого предложено разработать и изготовить микропроцессорное устройство экспресс - метода контроля влажности хлопка - сырца основанного на диэлькометрическом методе измерения.

  3. Разработана структурная схема блока контроля и обработки микропроцессорного устройства экспресс-метода измерения влажности хлопка - сырца, отличающаяся простотой структуры, компактностью, наглядностью отображение информации, удобством эксплуатации и минимальной потребляемой мощностью.

  4. Разработаны принципиальная и монтажная схемы блока контроля и обработки измеряемых величин.

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

Спроектированное и собранное в ходе работы устройство позволяет с достаточной точностью мгновенно оценить влажность сыпучих материалов. Использование прибора не требует от измеряющего дополнительных специальных навыков и знаний, имеет практичную и простую конструкцию и является доступным по цене даже предприятиям малого бизнеса.

Таким образом, первоначальная цель настоящей работы достигнута.

Список литературы:


  1. Берлинер М.А. Электрические изменения, автоматический контроль и регулирование влажности. – М.: Энергия, 1965. – 345с;

  2. Ахмедов Б.М., Ахмедов Б.Б. Вопросы влагометрии в пищевой промышленности. Под.ред. проф. Исматуллаев П.Р., МЧЖ «НАШР-ХА», 2006. 104 с.

  3. Исматуллаев П.Р. Влагометрия хлопка и хлопковых материалов // Изд. Фан, Ташкент, 1985. –с.47.

  4. Новицкий П.В., Зограф И.А. Оценка погрешностей результатов измерений. — Л.: Энергоатомиздат, 1991.

  5. Махмаражабов М.Б. Диссертационная работа. Синтез автоматизированного устройства для измерения влажности хлопка-сырца на основе экспресс-метода. Тошкент. 2014.

  6. Сайт разработка программы CodeVisionAVR – компании HPInfo Tech S.R.L.: http://www/hpinfotech.ru.

  7. Сайт производителя микроконтроллеров AVR – компании Atmel: www.atmel.com.

  8. Сайт разработчика программы Proteus VSM – компании Labcenter Electronics: http://www.amctools.com/.

  9. Сайт производителя LCD дисплеев–компании МЭЛТ: http://www.melt.aha.ru.

  10. Сайт производителя LCD дисплеев–компании Data Vision: http://www.datavision.com.tw/.

  11. www.PromPortal.su

  12. www.kipexpert.ru

  13. www.avr123.nm.ru

  14. www.atmel.com/literature

  15. http://www.microchip.ru/

Download 1.19 Mb.

Do'stlaringiz bilan baham:
1   2   3   4   5   6   7   8   9




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling