аналого-цифрового преобразователя А^шпо,выход которого анализируется циклически выполняющейся программой сравнения. При фиксации превышения порога сигнала определённого уровня, мы получаем информацию о моменте выстрела. При этом начало временного промежутка запоминается в специальной переменной при помощи функции millis(). Окончание временного промежутка фиксируется таким же образом, только в другой переменной. Разность значений переменных позволяет получить величину искомого временного интервала между выстрелами. Выполняя описанный выше алгоритм можно получить информацию о временных промежутках между произвольным количеством выстрелов. Результат измерений и произведённых вычислений выдаётся в виде строковой информации на ЖК дисплей.
Программа, управляющая микроконтроллером и реализующая процедуру измерениявремени выстрела (серии выстрелов) написана на языке C++.
В программе используются две стандартные функции loop и setup.
В функции setup задаются значения скорости передачи данных равные 9600 бит/с. Затем, задаётся размер (количество столбцов и строк) экрана и устанавливается курсор. Программа сообщает пользователю о готовности к работе, выводя на экран «READY»
Существующая реализация проекта была опробована в процессе тренировки спортсменами страйкбольного клуба «Горный» г. Горно-Алтайска.
Библиографический список:
1. Кондрух, А. И. Организация и проведение соревнований по практической стрельбе в России [Текст] / А. И. Кондрух. - Москва : Sport, 2016. - 134 с.
2. Arduino? [Электронный ресурс]. - URL : http://arduino.ru/ (11.05.2018).
УДК 378.02
ПРОГРАММНО-АППАРАТНЫЙ КОМПЛЕКС «КУРВИМЕТР» «KURVIMETR» SOFTWARE AND HARDWARE COMPLEX
Сафонова В. Ю., студент Рахманов Д. Е., студент Неустроев С. А., студент
ФГБОУ ВО «Горно-Алтайский государственный университет» Физико-математический и инженерно-технологический институт Россия, Республика Алтай, г. Горно-Алтайск
Аннотация. В данной статье описан программно-аппаратный комплекс «Курвиметр», функционирующий на базе аппаратной платформы Arduino.
Ключевые слова: курвиметр, измерения, Ардуино
Abstract. The article describes a hardware and software complex "Kurvimetr", which operates on the basis of the Arduino hardware platform.
Key words: ^i^meter, measurements, Arduino.
Для улучшения качества урожая необходимо контролировать не только показатели окружающей среды, но и линейные параметры различных частей растений: корней, стеблей, листьев и т. Д. Традиционно, замеры осуществляются вручную, при помощи механических приборов (линейки или рулетки), но существует вероятность допустить погрешность в измерениях, а также процесс измерений занимает достаточно большое количество времени. В данной работе предлагается автоматизировать данный процесс при помощи программно-аппаратного комплекса «Курвиметр», функционирующего на базе аппаратной платформы Arduino.
Блок-схема аппаратной части данного проекта представлена на рисунке 1 и состоит из микроконтроллера ArduinoUNO, подключённого к ПК по последовательному USB-интерфейсу (UniversalSerial Bus), коммутационно-логической платы, используемой для размещения контактных соединений внешних датчиков с микроконтроллером, блока питания, измерительного прибора - датчика, представляющего собой энкодер угла
поворота измерительного колеса, кнопки управления, динамика, сигнализирующего о начале измерений [1].
Рисунок 1 - Блок-схема аппаратной части проекта «Курвиметр»
Сигнал с измерительного датчика поступает на коммутационно-логическую плату, откуда передаётся на цифровой вход микроконтроллера, сконфигурированный для обработки прерываний по спаду входного импульса. Датчик, схема которого представлена на рисунке 2, представляет собой оптический энкодер, состоящего из двух оптопар и колёсика. Светодиодом одной оптопары излучается световой поток, наличие или отсутствие которого, затем фиксируется фотодиодом. Вторая оптопара определяет направление вращения колёсика. Так же к коммутационной плате подключена кнопка управления, сигнал с которой передаётся на цифровой порт микроконтроллера. Динамик, подающий сигнал о начале измерений, подключен через коммутационную плату к порту и управляется функцией tone.
Рисунок 2 - Схема измерительного датчика
Программа, управляющая микроконтроллером и реализующая процедуру интерактивного измерения морфологических параметров растений написана на языке C++.
В программе используются две стандартные функции loop и setup, а также дополнительная функция для обработки прерываний schet_x.
В функции setup задаются значения скорости передачи данных равные 9600 бит/с. Затем, устанавливаются для переменной sSound, отвечающей за звук, значение OUTPUT, т. Е. выход, а для переменной button, отвечающей за работу кнопки, значение INPUT, т. Е. вход. Программа здоровается с пользователем, выводя на экран «Hello» (см. рис. 3).
void setup () {
// put i'cur setup code here, tc run once: Serial.begin(9600); pinHode(a Sound,OUTPUT); pinHode (but t с n,INPUT); Serial .printlr. ("Hello") ;
attachlnterrupt (0, schet_it, FALLING) ;
}
Рисунок 3 - Функция setup
Далее, при изменении значения с HIGH на LOW, начинает работать функция прерывания attach I nterrupt, которая вызывает функцию schet_x. Данная функция отменяет прерывание и сравнивая состояние пятого пина с нулём, добавляет единицу к значению переменной ccL или ccR (см. рис. 4).
void 3chet_it()
{
dstachlntsrrupt(G); if(digitalRead(5J ==G) ccR— ; else ccL— ;
Ettachlntsr-Eupt (0, schet_^, FALLING-) г
}
Рисунок 4 - Функция schet_x
В функции loop реализована возможность обнуления данных при помощи кнопки: в переменную b, типа bool при помощи функции digitalRead считываем значение с кнопки. Затем, при помощи условного оператора, сравниваем значение переменной b с нулём. В случае выполнения условия, обнуляем переменные ccR, ccL, ccR_old, ccL_old типа unsigned int. Для пользователя на экран выводится сообщение «New» и издаётся характерный звук. Далее, сравниваем старые переменные ccR_old, ccL_old с соответствующими им новыми ccR, ccL и если они не равны, то на экран выводится значения ccR, ccL, умноженные на коэффициент k, типа double. Данный коэффициент мы определили опытным путём, произведя замеры в нескольких повторностях и сравнив результаты с контрольными данными, полученными при помощи линейки. Затем, посчитав математическое ожидание, вычислили коэффициент k. В конце данного блока, приравниваем старые переменные ccR_old, ccL_old к соответствующим им новым ccR, ccL (см. рис. 5).
void 1сср() {
// put ycur main code here, tc run repeatedly: b=:lyitalRead(buttcn) ; if (b==0) {ccR=0; ccL=0; ccR_cld=0; ccL_cld=0;
tone (aScund, 261, 3(3) ; Serial .printlr. ("New") • delay(30); tane(aScund,Q,20); delay(20); tane(aScund,294,60);
delay(60); tane(aScund,0,40); delay(40);J
i =(GGR_Qld!=CCR I GGL_Qld!=CCL) {
Serial.print(ccRTk); Serial.print(" "); Serial .printli: ;
ccR_cld=ccR;
}
delay(400); }
Рисунок 5 - Функция loop
На рисунке 6 изображена фотография пилотной реализации устройства, апробированного в процессе контрольных испытаний. Данная реализация пока не является мобильной и используется только для проведения лабораторных стационарных измерений и выполнения учебно-исследовательских работ по курсу «Микроконтроллерные системы управления». В дальнейшем планируется
модернизировать устройство для обеспечения записи экспериментальных данных на SDMMC карту, подключенную к микроконтроллеру.
Рисунок 6 - Аппаратное средство проекта
Существующая реализация проекта была опробована в процессе проведения морфологических измерений экспериментального куста помидор, выращенного в исследовательской теплице ФМИТИ ГАГУ. Оценка точности измерений составила 97%.
Библиографический список:
1. Датчики угла поворота (энкодеры) [Электронный ресурс]. - URL : https://www.prst.ru/encoder/ (28.05.2018).