Назад в библиотеку

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

Автор: Плахин С.В., Краснокутский В.А.
Источник: Плахин С.В., Краснокутский В.А. Вопросы организации аппаратного и программного обеспечения струевых методов исследования быстрых химических реакций / Информатика, управляющие системы, математическое и компьютерное моделирование – 2017 в рамках в рамках III Международного Научного форума Донецкой Народной Республики (ИУСМКМ-2017): 24–25 мая 2017, г.Донецк: / Донец. национал. техн. ун-т; сост.: К.Н.Маренич (председатель) и др. – Донецк: ДонНТУ, 2017.

Аннотация

Плахин С.В., Краснокутский В.А. Вопросы организации аппаратного и программного обеспечения струевых методов исследования быстрых химических реакций Рассмотрены ос обенности аналого-цифрового преобразования на базе Arduino Nano и возможность реализации обработки полезного сигнала, полученного струевыми методами исследования быстрых реакций. Приведен вариант программы аналого-цифрового преобразования сигнала. Предложена структура устройства, которое целесообразно реализовать на базе Arduino Nano.

Общая постановка проблемы

Обычные методы исследования стационарной кинетики не позволяют наблюдать за самыми быстрыми стадиями ферментативного процесса. Их применение обоснованно только в том случае, если время полупревращения для реакции превышает 10 с. Для измерения скоростей реакций со временами полупревращения до 1 с были разработаны несколько методов, в число которых и входят струевые методы исследования [1]

Широкое применение нашел метод остановленной струи, который основан на быстром смешивании двух растворов за интервал времени, составляющий всего 1-2 мс. Струю создают и останавливают посредством плунжера, который приводит в движение два медицинских шприца. Оба раствора поступают в смеситель и далее к кювету, где после остановки струи измеряется поглощение света [1]. Метод остановленной струи позволяет изучать быстрые жидкофазные реакции с временами превращения до 10-3 сек, например, по изменению оптической плотности в ультрафиолетовой или в видимой области спектра. Главной особенностью является то, что метод требует быстрой регистрации. Для измерения поглощения света используют специальный фотоумножитель, подсоединенный к осциллографу. Изменения поглощения, происходящие за доли секунды, регистрируют на экране осциллографа и полученный «след» кривой фотографируют.

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

Появляется необходимость в разработке недорогого и эффективного устройства, обладающего достаточным быстродействием и возможностью синхронизации с персональным компьютером для дальнейшей визуализации и обработки данных. Устройство должно выполнять оцифровку сигнала амплитудой до 1 В и иметь достаточную точность и быстродействие, позволяющее регистрировать апериодичное изменение сигнала длительностью от 10 мс до 30 мс. Для этой цели целесообразно использовать платы линейки Arduino, в частности модель Arduino Nano.

Пути решения проблемы

Для выполнения аналого-цифрового преобразования можно использовать АЦП на базе микроконтроллеров Arduino. В линейке представлены несколько моделей, которые удовлетворяют требованиям поставленной задачи. Одним из них является Arduino Nano на микроконтроллере Atmega328.

Плата отличается компактными размерами, все контакты выведены на две линейки с шагом 2,54 мм, расстояние между линейками 15 мм. Встроенный bootloader и преобразователь USB <> COM на базе микросхемы CH340 позволяет обновлять прошивку без использования программатора единственным нажатием кнопки на компьютере. Преимуществом является создание виртуального COM порта на компьютере при подсоединении через USB, что исключает использование стороннего преобразователя

Микроконтроллер Atmega328 имеет в своем распоряжении 32 КБайт Flash памяти программ с возможностью самопрограммирования, а также 2 КБайта ОЗУ и 1 Кбайт постоянной памяти EEPROM. Максимальная частота ядра доходит до 20 МГц. В состав микроконтроллера входят два 8-битных и один 16-битный таймер [2]

Аналого-цифровой преобразователь Atmega328

Для решения поставленной задачи в микроконтроллере используется 8-канальный 10-разрядный АЦП. Плата Arduino включает в себя 6 аналоговых входов. Напряжение, поданное на аналоговый вход, лежит в пределах от 0 до 5 вольт и будет преобразовано в значение от 0 до 1023, это 1024 шага с разрешением 0.0049 вольт [3]. Дополнительным преимуществом является установка опорного напряжения 1,1 вольта, что позволяет повысить точность аналого-цифрового преобразователя. Также можно использовать внешний ИОН. Недостатком можно назвать достаточно долгую работу стандартной функции библиотеки Arduino. Время преобразования в среднем занимает до 100 мкс.

Пример программы аналого-цифрового преобразования

Среда разработки Arduino IDE состоит из встроенного текстового редактора программного кода, области сообщений, окна вывода текста (консоли), панели инструментов с кнопками часто используемых команд и нескольких меню. Для загрузки программ и связи среда разработки подключается к аппаратной части Arduino. Помимо стандартных библиотек пользователь имеет возможность подключать сторонние и создавать свои собственные. Дополнительным преимуществом является наличие встроенной программы мониторинга последовательной шины (Serial Monitor). Она отображает данные, посылаемые через последовательный порт.

Оболочка Arduino IDE позволяет выполнять программирование АЦП как через регистры и команды ассемблера, так и при помощи функций стандартных библиотек. Загрузка программы в плату Arduino осуществляется при помощи специального загрузчика – небольшой программы, прошитой в памяти микроконтроллера. Она позволяет загружать в него код без внешних аппаратных средств. Загрузчик активизируется на несколько секунд после сброса устройства, после чего он запускает на выполнение последнюю загруженную в контроллер программу. При запуске загрузчика будет мигать встроенный светодиод, подключенный к 13 ножке контроллера.

Микроконтроллер оснащён тремя таймерами-счётчиками с номерами 0, 1 и 2. Таймеры 0 и 2 имеют разрешение в 8 бит, то есть их счётный диапазон от 0 до 255. Таймер 1 – 16–битный, его счётный диапазон от 0 до 65535 [4]. Для последовательной выборки с определенным шагом используется Таймер 1 микроконтроллера. Он генерирует прерывание через определенный период. Этот параметр измеряется в микросекундах и указывается в специальной функции Timer1.initialize. После этого происходит запуск таймера и каждый раз, когда он переполняется, осуществляется прерывание. Непосредственно в обработчике прерывания происходит считывание аналогового сигнала с входа и его преобразование посредством стандартной функции analog.Read. В качестве порта указывается номер входа на плате Arduino. После этого выполняется запись считанного значения в память и контроль количества выполненных операций.

После записи данных в память по готовности выполняется побайтная передача на персональный компьютер через последовательный порт. Предварительно полученное значение int преобразовывается в два байтовых значения типа char. Функция Serial.flush выполняет проверку окончания передачи байта данных функцией Serial.Print..

Фрагмент листинга тестовой программы:

//.........................//
pinMode(A3, INPUT); // инициализируем пин как вход
Serial.begin(9600); // инициализируем порт, скорость 9600
//.........................//
Timer1.initialize(clk_int); // установка переполнения таймера
Timer1.start(); // старт таймера 1
Timer1.attachInterrupt(Timer1_action); // привязка функции прерывания
//.........................//
// Обработчик прерывания таймера 1
void Timer1_action()
{
inputCod= analogRead(A3); // чтение напряжения на входе A3
DATA[j] = inputCod; // запись данных в память
j++;
if (j==n) { // проверка количества считанных данных
Timer1.stop(); // остановка таймера
flag=1;
// флаг готовности данных
}}
//.........................//
for (int i=0; i { char LOWBYTE = (byte)(DATA[i] & 0xff); // младший байт
char HIGHBYTE = (byte)(DATA[i] >> 8); // старший байт = 0
Serial.print(LOWBYTE);
Serial.flush();
Serial.print(HIGHBYTE);
Serial.flush();
}

Структурная схема разработанного аппаратного блока

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

Рисунок 1 - Структурная схема разработанного аппаратного блока

Рисунок 1 – Структурная схема разработанного аппаратного блока

В среде MATLAB был разработан пользовательский интерфейс, который позволяет задавать начальные параметры. Пользователь имеет возможность задать шаг измерения в микросекундах и время длительности процесса, также измеряемое в микросекундах.

Выводы

Была рассмотрена организация аппаратного и программного обеспечения струевых методов исследования быстрых химических реакций. Предложена структура разрабатываемого устройства и разработан пользовательский интерфейс, позволяющий взаимодействовать с системой. Проведенные исследования позволяют утверждать, что Arduino Nano с микроконтроллером Atmega328 удовлетворяют требованиям и могут использоваться для дальнейшей реализации поставленной задачи.

Список использованной литературы

1. Мецлер Д. Биохимия. Химические реакции в живой клетке. Том 1 / Мецлер Д. – М.: Мир, 1980. – 609 с.
2. Arduino Nano v3.0 [Электронный ресурс]. – Режим доступа: http://radiodetalki.narod.ru/pribory/arduino_nano_v3.pdf.
3. ATmega328/P [Электронный ресурс]. – Режим доступа:http://www.atmel.com/Images/Atmel-42735-8-bit-AVR-Microcontroller-ATmega328-328P_Datasheet.pdf.
4. Таймеры-счётчики Arduino [Электронный ресурс]. – Режим доступа:https://sites.google.com/site/vanyambauseslinux/arduino/tajmery-sceetciki-arduino.