Дипломная работа: Разработка циклического преобразователя модулированных по фазе выходных сигналов электромагнитного датчика угловых перемещений вала в код

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

Atmega 328 выделяется из семейства megaAVR в первую очередь простотой реализации и низкой ценой. Микроконтроллер используется в основном в автономных проектах, где не требуется высокая вычислительная мощность. Atmega 328содержит8-битный процессор, 23 линии ввода-вывода, 32 регистра памяти, 3 таймера, шестиканальный PWM, интерфейс I2C. Atmega 328 работает при напряжении питания от 1,8 до 5,5 вольт. Пропускная способность приближается к 1 MIPS на МГц. [4]

Рис. 20. Выводы микроконтроллера Atmega 328

В табл. 4. представлено описание назначений выводов микроконтроллера Atmega 328 [5].

Таблица 4

Описание назначений выводов микроконтроллера Atmega 328

Номер выхода

Обозначение

Назначение

1

PC6

Перезапуск

2

PD0

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

3

PD1

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

4

PD2

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

5

PD3

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

6

PD4

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

7

Vcc

Положительное напряжение

8

GND

Земля

9

XTAL 1

Кварцевый генератор

10

XTAL 2

Кварцевый генератор

11

PD5

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

12

PD6

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

13

PD7

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

14

PB0

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

15

PB1

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

16

PB2

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

17

PB3

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

18

PB4

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

19

PB5

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

20

AVcc

Положительное напряжение для АЦП

21

Aref

Опорное напряжение

22

GND

Земля

23

PC0

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

24

PC1

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

25

PC2

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

26

PC3

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

27

PC4

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

28

PC5

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

2.4.3 Схемотехническое моделирование преобразователя на микроконтроллере

Для разработки преобразователя на микроконтроллере была использована плата Arduino Uno и 3 дополнительных компонента:

Плата расширения Trema Shield;

Инкрементальный энкодер (Trema-модуль);

Символьный дисплей LCD1602 IIC/I2C.

Инкрементальный энкодер в системе будет играть роль датчика угла поворота вала. Использование энкодера, а не электромагнитного датчика, обусловлено исследовательской, а не производственной целью работы. Плата Trema Shield подсоединяется к Arduino Uno и используется для подсоединения сразу двух компонентов (энкодера и экрана) по цифровым входам выходами интерфейсу I2C. LCD экран необходим для визуальной демонстрации работы преобразователя.

Trema Shield имеет 13 цифровых входов/выходов и 6 аналоговых выходов для подключения дополнительных модулей.

Рис. 21. Устройство Trema Shield

Инкрементальный энкодер является модулем для подключения к Trema Shield. Модуль содержит пять выводов:

· выводы A и B для считывания поворота энкодера,

· вывод S для тактовой кнопки,

· выводы питания Vи G.

Оборот инкрементального энкодера приводит к подаче импульсов на вывод A или B в зависимости от направления поворота. Количество импульсов на выводе при обороте вала всегда будет одинаковым, импульсы подаются дискретно при каждом обороте.

Рис. 22. Подключение модуля энкодера к Trema Shield

Сравнения количество импульсов на выводах энкодера позволяют определить направление поворота. Полный оборот вала энкодера разбит на 20 дискретных участков по 18° на каждый, значит при полном обороте вала энкодера, на выходе каждого вывода модуля сформируется по 20 импульсов [6].

Таблица 5

Технические характеристики модуля инкрементального энкодера

Входное напряжение питания

Потребляемый ток

Не более 3А

Допустимый ток на выходах

Не более 10мА

Сопротивление контактов

Меньше 3 Ом

Количество циклов вращения

Меньше 30000

Количество циклов переключения

Меньше 20000

Рабочая температура

-30 .. 70°C

Длина вала

12 мм

Диаметр вала

6 мм

Габариты

30x30x38 мм

Рис. 23. Устройство дисплея LCD1602 IIC/I2C

Рис. 24. Подключение дисплея LCD1602 IIC/I2C к Trema Shield

LCD дисплей используется для визуального представления результата работы преобразователя. Экран также будет подключен к плате Trema Shield с использованием аппаратной шины I2C для передачи данных. Питание дисплея происходит при подаче напряжения 5В на выводы VCCи GND.

Таким образом, разработка функциональной схемы преобразователя на микроконтроллере, заключается в соединении Arduino Uno и трех дополнительных модулей по уже указанным выводам.

2.4.4 Разработка программного модуля индикации угла для микроконтроллера

Поворот вала инкрементального энкодера на один шаг, формирует заранее известное количество импульсов на одном из выходов A и B (в зависимости от направления поворота). Аппаратный счетчик подсчитывает количество получаемых импульсов, по которому можно определить угол поворота вала.

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

При разработке импульсного метода индикации угла необходимо определить скачок фазы гармонического сигнала. Для этого необходимо получать данные с выводов d12 и d13, к которым подключены выводы энкодера A и B.

Рис. 25. Схема инкрементального энкодера

Для индикации сдвига фаз сигналов нужно провести сравнение импульсных сигналов выводов d12 и d13 с сигналом на выводе, без подключенных модулей, используем d11. Сравнение реализуется циклическим выполнением операции XOR над значениями, получаемыми с выводов d11, d12, d13. Необходимо упростить алгоритм, заранее узнав направление поворота вала, таким образом, нужно будет провести сравнение только двух сигналов.

Рис. 26. Обработка сигналов с энкодера в библиотеке iarduino_Encoder_tmr

Библиотека для работы с инкрементальными энкодерами iarduino_Encoder_tmr [7] является свободно распространяемым программным решением и значительно упрощает работу с энкодером. Возможности использования данной библиотеки позволяют получать значения в зависимости от поворота энкодера, не подключаясь напрямую к цифровым портам.

2.4.5 Разработка программного модуля преобразования фазы в код для микроконтроллера

Задача преобразования фазы в код на микроконтроллере значительно упрощена по сравнению с моделированием преобразователя на основе логических элементов. Получив значение сдвига фазы в определенный момент времени, необходимо преобразовать полученное значение количества импульсов в значение угла с точностью до минуты. Максимальное значение угла равно 359 градусов и 59 минут. Счетчик угла создается при помощи логического оператора if для проверки разряда значения угла на предельное значение. Если приращение угла равно одной угловой минуте, а значение на счетчике равно 59 секундам, то разряды секунд обнуляются, а разряд единиц градусов увеличивается на один. Аналогично для остальных разрядов с условием ограничения:

Разряд сотен угловых градусов 3;

Разряд десятков угловых градусов 3 при разряде сотен угловых градусов равном 3;

Разряд десятков угловых минут5.

После преобразования фазы в код, значение угла увеличивается в зависимости от шага поворота, определенного на этапе разработки устройства. Последний этап программной части разработки преобразователя -- вывод значения угла поворота на LCD дисплей. Для этого, используется библиотека LiquidCrystal_I2C_V112. Данная библиотека доступна в открытом доступе [8].

Рис. 27. Программная реализация счетчика градусов и минут

Средства библиотеки позволяют инициализировать экран как объект класса библиотеки и выводить символы на дисплей, используя команду print.

Рис. 28. Использование библиотеки LiquidCrystal_I2C_V112 при подключении LCD экрана по шине I2C.

2.4.6 Сборка и настройка макетного образца преобразователя

Первый этап схемотехнического моделирования преобразователя на микроконтроллере -- подсоединение платы Trema Shield по цифровым портам. Модуль энкодера подключается к цифровым выводам d12 и d13 платы Trema Shield, входы соответствуют аналогичным выводам Arduino Uno. Дисплей LCD подключается к шине I2C платы Trema Shield. Питание можно подключить через USB-порт.

Рис. 29. Алгоритм работы преобразователя при использование инкрементального энкодера

Рис. 30. Рабочий макет преобразователя

3. Экспериментальные исследования преобразователя

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

1. Переход значения 59 угловых минут в 1 градус.

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

3. Предельные значение 0 градусов, 0 угловых минут.

4. Предельное значение 359 градусов, 59 угловых минут.

Экспериментальное исследование проводилось вращением вала энкодера в соответствующие условию стороны. Данные продемонстрированы на LCD дисплее. Результаты экспериментальных исследований приведены в табл.5.

Таблица 5

Результаты экспериментальных исследований

Значение угла до поворота вала

Шаг

Ожидаемое значение угла после поворота вала

Значение угла после поворота вала

0 градусов, 0 угл. минут

1 угл. минута

0 градусов, 1 угл. минута

0 градусов, 1 угл. минута

0 градусов, 59 угловых минут

1 угл. минута

1 градус, 0 угл. минут

1 градус, 0 угловых минут

99 градусов, 59 угл. минут

1 угл. минута

100 градусов, 0 угл. минут

100 градусов, 0 угл. минут

359 градусов, 59 угл. минут

11 угл. минута

359 градусов, 59 угл. минут

359 градусов, 59 угл. минут

359 градусов, 59 угл. минут

10угл. минут

359 градусов, 59 угл. минут

359 градусов, 59 угл. минут

1 градус, 0 угл. минут

-1 угл. минута (поворот в обратную сторону)

0 градусов, 59 угл. минут

0 градусов, 59 угл. минут

0 градусов, 0 угл. минут

-10 угл. минут (поворот в обратную сторону)

0 градусов, 0 угл. минут

0 градусов, 0 угл. минут

Заключение

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

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