2.2 Разработка функциональной схемы преобразователя
Для разработки алгоритма работы преобразователя была разработана схема, включающая в себя несколько модулей:
1. Преобразователь входных гармонических сигналов, получаемых с датчиков.
2. Формирователь служебных сигналов.
3. Модуль подсчета тактовых импульсов и индикации результата преобразования.
Функциональная схема преобразования представлена на рис. 6.
Рис. 6. Функциональная схема преобразователя
Первый этап работы преобразователя заключается в преобразовании входных гармонических сигналов, получаемых с электромагнитных датчиков измерения угла, в прямоугольные импульсные. Далее необходимо выделить разность фаз в полученных после преобразования прямоугольных импульсных сигналах, тем самым получить интервалы времени со значением лог. 1, которые будут называться «окнами». Для подсчета длительность временного интервала «окон» будет использоваться генератор импульсов. Импульсы генератора заполнят «окна» и будут подсчитаны счетчиками.
На втором этапе формируются два служебных импульса: очистки и записи. Данные импульсы необходимы, так как работа преобразователя происходит непрерывно. Сигнал записи подается на буферы, когда заканчивается подсчет импульсов с «окнах». Сигнал очистки подается на счетчики по завершении обработки входных сигналов, это позволит работать преобразователю непрерывно и выдавать корректные результаты.
Третий этап работы преобразователя заключается в подсчете тактовых импульсов при помощи пяти счетчиков, записи результатов в буферы, а также индикация итогового результата.
2.3 Моделирование преобразователя
Для моделирования преобразователя синусоидальных аналоговых сигналов в код была использована программа MicroCAP. В преобразовании сигналов можно выделить 3 основных этапа:
1. Преобразование двух синусоидальных аналоговых сигналов в прямоугольные импульсные, и выделение временного интервала между их фронтами.
2. Создание двух импульсных сигналов для очистки счетчиков и для записи в буфер.
3. Преобразование временного интервала между фронтами в код при помощи счетчиков и индикация результата.
Подробнее каждый этап будет описано ниже.
Рис. 7. Пример схемы первого этапа преобразования сигналов в MicroCAP
Для имитации сигналов, которые поступают от электромагнитного датчика, были использованы два генератора синусоидальных сигналов. Частота сигналов равна 100 Гц, а фазовый сдвиг у одного из генераторов равен 30 угловым градусам, что в дальнейшем будет являться результатом измерения. Данный пример значений сигналов генератора использовался для демонстрации работы модели в программе MicroCAP. Параметры сигналов генераторов, которые задавались при моделировании, представлены на рис.8 и рис. 9.
Рис. 8. Параметры первого генерируемого сигнала
Рис. 9. Параметры второго генерируемого сигнала
Первым этапом работы схемы является преобразование синусоидальных аналоговых сигналов в прямоугольные импульсные двумя компараторами.
Выделение временного интервала, соответствующего совпадению высоких уровней импульсов, выполняется логической схемой исключающее или (XOR), которая в дизъюнктивной нормальной форме (ДНФ) представляется в виде:
.
преобразователь сигнал фаза код микроконтроллер
Таблица 3
Таблица истинности логической схемы XOR
|
A |
B |
AXORB |
|
|
0 |
0 |
0 |
|
|
0 |
1 |
1 |
|
|
1 |
0 |
1 |
|
|
1 |
1 |
0 |
Данная обработка поможет выделить разность фаз двух сигналов, тем самым получить интервалы времени со значением лог. 1, которые в дальнейшем будут называться «окном». Необходимо измерить длительность полученных «окон». Обработанный логической операцией значение подается на вход схемы логического умножения AND вместе с импульсами генератора с частотой 21,6 КГц. Генерация специальных импульсных сигналов задавалась в программе MicroCAP при помощи следующего кода:
.define _2KHzClk
+0ns 0
+label=start
+231.5n 1
+463n 0
+694.5n gotostart -1 times
Таким образом, число импульсов, которое помещается в «окно» пропорционально длительности «окна». В свою очередь, длительность «окна» пропорциональна сдвигу фаз между сигналами датчика, поступающими на вход преобразователя.
Временные диаграммы сигналов в логических схемах преобразователя представлены на рис. 10.
Рис. 10. Временные диаграммы преобразования входных сигналов
На 1 и 2 диаграммах (рис.10) представлены сигналы, поступающие в преобразователь с датчика угла, а также импульсные сигналы, сформированные компараторами. Временные «окна», предназначенные для заполнения их эталонными импульсами, сформированы логическими схемами XOR. На 4 диаграмме изображены импульсные сигналы генератора, которые в дальнейшем будут использоваться для подсчета изменения угла, из-за того, что частота сигналов генератора значительно больше частоты входных синусоидальных сигналов, становится проблематично при одном масштабе вывести на диаграмму каждый импульс сигнала генератора. На 5 диаграмме представлен результат логической операции, вследствие которой импульсы генератора считаются только в «окнах». Именно значения сигнала, изображенного на 5 диаграмме, будет подаваться на вход счетчиков на следующем этапе.
Второй этап обработки сигналов заключается в формировании двух служебных импульсов: отчистки и записи в буфер.
Служебные импульсы формируются схемой, построенной на четырех триггерах (по два на каждый импульс), двумя инверторами и двумя логическими умножениями AND, для импульса очистки логическое умножение имеет инвертированный выход.
Рис. 11. Пример схемы для формирования служебных сигналов в MicroCAP
Для обработки и дальнейшего формирования импульсов используются сигналы генератора и сигнал, несущий «окна». Это необходимо для того, чтобы импульсы для очистки и записи в буфер формировались из тактовой последовательности, а начинались со значения лог. 1 в сигналах, в которых присутствуют «окна».
Рис. 12. Временные диаграммы формирования служебных сигналов
На 1 и 2 диаграммах (рис.12) изображены сигналы, которые были взяты из предыдущего этапа для дальнейшей обработки. На диаграмме 3 изображен итоговый сигнал, который содержит число импульсов, предназначенных для подсчета при формировании выходного кода. Импульсы для очистки и записи в буфер, которые необходимо было получить в данном этапе, показаны на 4 и 5 диаграммах соответственно. Примечательно, что полярность и логические уровни импульсов отличаются из-за инвертора на выходе логического умножения AND у импульса для очистки.
Завершающий этап заключается в подсчете количества импульсов, содержащихся в «окнах», а также отчистки и записи в буферы кодов, полученных в счетчиках. Буферизация результатов преобразований позволяет обеспечить индикацию значений последних измерений во время нового цикла работы счетчиков.
Рис. 13. Пример схемы индикации измерений в MicroCAP
На вход схемы преобразования и индикации (рис.13) подается три служебных сигнала:
1. Input - для подсчета количества импульсов, каждый из которых имеет вес одной угловой минуты, данные о которым были получены в первом этапе.
2. Clear - для очистки JK-триггеров, которые используются в счетчиках, после каждого цикла измерения.
3. Record - для записи значений в буфер и дальнейшего вывода результата на семисегментный индикатор.
Вследствие того, что моделируемая схема имеет разрешающую способность измерения в одну угловую минуту, в преобразователе необходимо иметь возможность вывода пяти десятичных разрядов: два разряда для отображения количества минут, три - для градусов.
Количество минут в градусах равно 60, а значение градусов не превышает значения 360, из-за чего возникла необходимость смоделировать счетчики-делители на 6 и 4 (рис.14 и рис.15 соответственно).
Рис. 14. Пример схемы счетчика-делителя на 6 в MicroCAP
Рис. 15. Пример схемы счетчика-делителя на 4 в MicroCAP
Коды с выходов счетчиков записываются в буферы, каждый их которых выполнен на 4-разрядныхрегистрах с тремя электрическими состояниями выходов. Запись в буферы выполняется импульсом, сформированном в ранее описанной схеме.
В завершении работы преобразователя сигналы из буфера, который хранит значения вычислений, через дешифраторы передаются на входы семисегментных индикаторов. Итоговый результат работы созданной модели выводится на семисегментные индикаторы, расположенные в соответствии с разрядами конечного результата.
Таким образом, в программе MicroCAP была смоделирована система, которая имитирует два синусоидальных аналоговых сигнала с датчиков измерения угла, подсчитывает разность фаз между этими сигналами и выводит значение угла на индикаторы.
Тестирование схемы выполнялось для нескольких значений сдвига фаз входных сигналов:
1. Сдвиг фаз равен 0. Задается подачей на входы преобразователя одного и того же сигнала. Фиксируется показание индикаторов.
2. Задается сдвиг фаз средствами программы MicroCAP, соответствующие углу 11° 11'. Фиксируется показание индикаторов.
3. Задается сдвиг фаз равный углу 359° 59'. Фиксируется показание индикаторов.
Выполненное тестирование подтвердило корректность показаний преобразователя.
2.4 Разработка принципиальной схемы преобразователя на микроконтроллере
Большинство современных технических реализаций преобразователей угла поворота вала в код выполнены на микроконтоллерных системах. Создание преобразователя на микроконтроллере существенно упрощает задачу перед разработчиками и увеличивает универсальность таких преобразователей.
Задача разработки преобразователя на микроконтроллере заключается в разработке принципиальной схемы преобразователя на микроконтроллере и программном воспроизведении методов индикации угла и преобразования фазы, описанные в пунктах разработки функциональной схемы и моделирования преобразователя.
2.4.1 Типы программируемых плат
В настоящие время существует множество готовых решений для разработки встраиваемых приложений, в виде программируемых плат. Выбор платы должен быть основан на соответствии критериям:
· Доступность схемотехнических компонентов для платы;
· Наличие USB порта;
· Поддержка языка программирования C++;
· Не менее 2 цифровых выходов.
Среди нескольких, подходящих по критериям решений, выделяют тринаиболее популярные на настоящий момент платы:
· Arduino Uno
· Raspberry PI
· BeagleBone
Данные модели не случайно были выбраны для сравнения. Выделенные платы доступны из-за своей невысокой стоимости, достаточно компактны, а также универсальны для создания различных цифровых устройств.
Плата Arduino Uno является наиболее популярным решением реализации встраиваемых приложений (рис. 16). Платы Arduino на данный момент доступны в различных форм-факторах, с различным набором периферии. Arduino Uno в качестве представителя своей линейки была выбрана не случайно. Для Arduino Uno доступна достаточно простая среда разработки, а также большая база наработок и программных решений, что существенно облегчает создание приложений.
Рис. 16. Плата Arduino Uno
Плата Raspberry Pi является относительно новым решением среди плат для разработки приложений. Raspberry Pi, которая позиционирует себя на рынке как недорогое решение для начинающих разработчиков, представляет собой одноплатный компьютер (рис. 17).
Рис. 17. Плата Raspberry Pi
Плата BeagleBone является наименее известной из представленных. Несмотря на это широкие возможности этой платы она позволяет создавать множество встраиваемых приложений. Плата представляет собой мощный Linux-компьютер компактных размеров, который способен поддерживать работу с такими ОС, как Ubuntu и Android (рис. 18).
Рис. 18. Плата BeagleBone
Каждая из трех плат имеют уникальный функционал и набор периферии. Основываясь на плюсах и минусах в характеристиках платы (рис.19), можно сделать вывод о том, какую плату необходимо использовать для разработки.
Рис. 19. Сравнение плат Arduino Uno, Raspberry Pi и BeagleBone
По данным параметрам была выбрана плата серии Arduino Uno. Данная плата хоть и не обладает вычислительной мощью, сравнимой с конкурентами, но зато является открытой платформой, имеет значительное количество встраиваемых библиотек, компонентов и более низкую цену.
2.4.2 Особенности микроконтроллера Atmega 328
Arduino Uno выполнен на базе микроконтроллере Atmega 328.Микроконтроллеры серии megaAVR хорошо подходят для приложений с большим количеством кода, помимо этого они примечательны своим быстродействием, которое достигает 20 млн. операций в секунду. Самопрограммирование, которое поддерживают все устройства megaAVR, позволяет быстро и безопасно выполнять внутрисхемное программирование. Еще одно преимуществ данных устройств заключается в возможности обновления флеш-памяти без остановки системы.