Сапожников Пояснительная записка (1230236), страница 5
Текст из файла (страница 5)
- блочной диаграммы, описывающей логику работы виртуального прибора;
- лицевой панели, описывающей внешний интерфейс виртуального прибора.
Лицевая панель виртуального прибора содержит средства ввода-вывода: кнопки, переключатели, светодиоды, верньеры, шкалы, информационные табло и т. п. Блочная диаграмма содержит функциональные узлы, являющиеся источниками, приемниками и средствами обработки данных.
5.2 Программное обеспечение устройства
С использованием программного обеспечения NI LabVIEW была разработана программа для инициализации, конфигурации и опроса двух акселерометров ADXL 345, а также разработана программа, вычисляющая время распространения ударной волны между двумя смежными вагонами.
Для работы с различными целевыми устройствами в LabVIEW есть возможность создания проектов – файл с расширением .lvproj, который включает в себя ссылки на файлы проекта, информацию сборке приложения, о конфигурации, развертывании.
В данной работе также создан такой проект, который содержит одну библиотеку и три виртуальных прибора, два из которых выполняются на компьютере оператора, а один непосредственно на контроллере NI MyRIO. Окно с проектом представлен на рисунке 5.1.
Рисунок 5.1 – Проект
Недостатком NI MyRIO является отсутствие элемента питания, который отвечает за отсчет системного времени контроллера, что приводит к сбрасыванию времени при отключении внешнего питания. Для автоматической настройки времени был разработан виртуальный прибор «Get and Set Time», который устанавливает время компьютера в контроллер. Лицевая панель и блок-диаграмма, программы настройки времени представлена на рисунках 5.2 и 5.3 соответственно.
Рисунок 5.2 – Блок-схема
Рисунок 5.3 – Лицевая панель
Для настройки времени в окне «Устройство» необходимо выбрать котроллер, на котором необходимо произвести настройки даты и времени. В окнах «Имя пользователя» и «Пароль» ввести данные для разрешения доступа к настройке устройства. Строка «Часовой пояс» заполняется при необходимости, а в графе с названием «Новое время» вводится дата и время, которые нужно установить на MyRIO. В эту графу информация вводится тогда, когда необходимо установить время, отличное от системного времени компьютера оператора, если такой необходимости нет, то вводить ничего не нужно.
Для инициализации, конфигурации и опроса акселерометра ADXL 345 создан другой виртуальный прибор, который выполняется непосредственно самим контроллером. Управление и сбор данных с датчиков производится с помощью протокола I2C.
I2C – двухпроводной интерфейс, разработанный корпорацией Philips. Максимальная скорость передачи данных составляет 1Мбит/с. К одной шине I2C могут быть подключены устройства с различными скоростями доступа, если скорость передачи данных будет удовлетворять требованиям самого низкоскоростного устройства.
Протокол передачи данных по шине I2C разработан таким образом, чтобы гарантировать надежный качественный прием/передачу данных. При передаче данных одно устройство является «Ведущим», которое инициирует передачу данных и формирует сигналы сигнализации. Другое устройство «Ведомое», которое может начать передачу данных только по команде ведущего шины. Каждое устройство на шине I2C имеет уникальный адрес. Когда ведущий инициирует передачу данных, то сначала передаётся адрес устройства, к которому выполняется обращение. Остальные устройства проверяют переданный ведущим адрес. В состав байта адреса устройства входит бит направления передачи данных.
В программе имеется две одинаковые структуры Stacked Sequence (сложенная последовательность), в которых происходит установление связи с акселерометром и настройка его к работе для этого использованы функциональные блоки опроса, каждая из этих структур настраивает свой акселерометр.
Структура Stracked Sequence располагает кадры один над другим, поэтому отображается только один кадр. Кадры исполняются в последовательном порядке начиная с нулевого. В разработанной программе у структур имеется 8 кадров. Внутри каждого кадра имеется виртуальный прибор для работы с протоколом I2C, который, передает данные ведомому устройству, а также 2 поля ввода настроек датчика. В верхнее поле вводятся биты адреса, которые даны в инструкции к датчику, а в нижнее непосредственно значения битов настройки.
В нулевом кадре производится включение или отключение функции самотестирования. Когда функция самотестирования включена (через SELF_TEST бит в регистре DATA_FORMAT, значение 1 включает самопроверку, 0 отключает), к механическому датчику прикладывается электростатическое усилие. Это электростатическое усилие перемещает чувствительный элемент таким же образом, как ускорение.
Также в этом кадре производится настройка диапазона измеряемых значений акселерометра. Допустимые диапазоны и значения необходимые для установки этого значения представлены в таблице 5.1.
Таблица 5.1 – Установки диапазона измеряемых ускорений
| Установки | Диапазон ускорений, g | ||
| D1 | D0 | ||
| 0 | 0 | ± 2 | |
| 0 | 1 | ± 4 | |
| 1 | 0 | ± 8 | |
| 1 | 1 | ± 16 | |
В следующем кадре производится настройка режима энергопотребления. Акселерометр автоматически регулирует энергопотребление в зависимости от скорости передачи данных. Если необходимо дополнительное энергосбережение, то для входа в режим пониженного энергопотребления, нужно установить LOW_POWER бит (бит 4) в BW_RATE регистре. В этом режиме внутренняя частота дискретизации снижается, что позволяет снизить потребление энергии в диапазоне скоростей передачи данных от 12,5 Гц до 400 Гц за счет несколько большего шума. Дополнительная мощность может быть сохранена, если ADXL345 автоматически переключается в режим сна во время простоя. Для работы при еще более низкой мощности, можно использовать режим ожидания. В этом режиме потребление тока снижается до 0,1 мкА, измерения не производятся. Для ввода акселерометра в этот режим необходимо очистить бит D3 в реестре POWER_CTL. Настройки представлены в таблице 5.2.
Таблица 5.2 – Установки режима энергопотребления и частоты выхода данных
| Частота выходных данных, Гц | Биты настроек | Потребляемый ток, мкА |
| 3200 | 1111 | 140 |
| 1600 | 1110 | 90 |
| 800 | 1101 | 140 |
| 400 | 1100 | 140 |
| 200 | 1011 | 140 |
| 100 | 1010 | 140 |
| 50 | 1001 | 90 |
| 25 | 1000 | 60 |
| 12,5 | 0111 | 50 |
| 6,25 | 0110 | 45 |
| 3,13 | 0101 | 40 |
| 1,56 | 0100 | 34 |
| 0,78 | 0011 | 23 |
| 0,39 | 0010 | 23 |
| 0,20 | 0001 | 23 |
| 0,10 | 0000 | 23 |
В кадре с номером два производится настройка включений и отключений датчика. Здесь возможно задать условия, когда датчик должен работать, а когда переходить в спящий режим.
В следующих трех кадрах производится калибровка смещения осей измерения ускорений. Настройка каждой оси измерений производится в отдельном кадре. Здесь задаётся установленное смещение с масштабным коэффициентом 15,6 mg / LSB (то есть, 0x7F = 2 g). Значения, которые хранятся в регистрах, автоматически добавляются к измеренным ускорениям, и полученное значение сохраняется в выходных данных. Структура представлена на рисунке 5.4.
Рисунок 5.4 – Структура управления и настройки акселерометра
Также в программе имеется структура «While Loop». Структура «While Loop», повторно выполняет под-диаграмму до тех пор, пока удовлетворяется некоторое условие. В разработанной программе остановка производится путём нажатия кнопки Stop. Внешний вид цикла представлен на рисунке 5.4
Считывание данных с датчиков производится с помощью виртуальных приборов, предназначенных для работы с протоколом I2C, которые настроены на приём данных. Виртуальный прибор считывает массив, где зашифрованы значения измеряемых ускорений всех трех осей. К каждой оси относится две строки. Оси Х соответствует нулевая и первая строка, оси Y – вторая и третья, а оси Z – четвертая, пятая. При помощи функции «Index Array» из массива приходящих данных извлекаются необходимые строки. Далее, при помощи функции «Join Number», значения двух строк склеиваются в одно значение, которое далее переводится из двоичной системы счисления в десятеричную. Максимальное значение, которое выдает датчик равно 512, что соответствует значению ускорения равному 2 g. Если 2 g равняется 512, появляется необходимость рассчитать коэффициент, умножив на который значение ускорения сразу выводилось в единицах g. Для его определения максимально возможное количество g, то есть 2, делится на 512 получается 0,00390625, что и является необходимым коэффициентом. После чего производится фильтрация результата при помощи виртуального прибора «Mean PtByPt VI». Он вычисляет среднее значение в наборе входных точек данных, длина которого задается. Для того чтобы не было существенного искажения данных, длина сглаживаемого образца взята равной пяти.
Описанные блоки помещаются в цикл «For Loop». Структура «For Loop» (цикл с заданным числом итераций), выполняет содержащиеся в нем блоки заданное число раз, в данном случае задано 2000 раз с задержкой 500 мкс. На выходе цикла образуется массив размером 2000 строк, в нем содержатся все значения ускорении данной оси, измеренные за последнюю секунду. Визуализация измеренных ускорений производится с помощью виртуальных осциллографов.
Для корректной записи в память измеренных данных каждому значению ускорения необходимо соотнести точное время. Для этого используется функциональный блок «Build Waveform», который объединяет текущее время, временной шаг и измеренные значения. Он помещен за пределы цикла «While Loop». Для создания сигнала, который помимо измеренных значений должен нести в себе и временные параметры, к блоку «Build Waveform» подключен нулевой массив, нули которого будут заменены на измеренные значения, блок «Get Date/Time In Seconds Details», который на выходе дает текущее время и дату, и число секунд, которое является шагом отсчета времени. Внутри структуры «While Loop» сигнал, образуемый блоком «Build Waveform», связывается с массивами, полученными в цикле «For Loop».















