Широтно-импульсная модуляция 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Широтно-импульсная модуляция



Для вывода данных с Arduino традиционно применяется двоичная система с применением логических значений 0 и 1. С этой задачей превосходно справляется управление портами вывода, имеющееся у большинства микроконтроллеров от производителей микросхем. Но не всегда схемотехнику необходимо значение нуля или единицы.

С помощью PWM (ШИМ), изображенного на рисунке 44.6, позволяет создать сигнал, который имеет определенное напряжение и продолжительность. В зависимости от временного промежутка между импульсами на выходе выдается нужное значение, так называемый параметр скважности импульса. Скважность – это один из классификационных признаков импульсных систем, определяющий отношение его периода следования (повторения) к длительности импульса.

Микроконтроллер Arduino поддерживает восьмибитную ШИМ, что позволяет выбрать переменную в широком диапазоне значений от 0 до 256.

В качестве примера использования ШИМ можно использовать плавное включение и выключение светодиода, подключенному к 3 пину. При этом постепенно подается напряжение от 0 до 5В. Как видно на картинке ниже, при разном значении переменной мы получаем разное напряжение для светодиода: 5V, 2.5V, 1,25V, 3.75V.

Так же с помощью пьезоизлучателя и ШИМ можно воспроизводить звуки неплохого качества.

 

Рисунок 44.6

АЦП: пины A0–A5

АНАЛОГОВЫЕ ВХОДЫ: КОНТАКТЫ A0, A1, A2, A3, A4, A5

6 аналоговых входов, каждый из которых может представить аналоговое напряжение в виде 10-битного числа (1024 значений). Разрядность АЦП — 10 бит.

Arduino Uno имеет на своей платформе 6 аналоговых входов с разрешением 10 Бит на каждый вход. Данное разрешение говорит нам о том, что сигнал, приходящий на него, можно оцифровать в диапазоне от 0 до 1024 условных значений.

Считывать значения с данных контактов можно функцией analogRead(), а передавать значения – функцией analogWrite().

Так как Arduino Uno обладает пятивольтовой логикой, то и значение будет находиться в диапазоне от 0 до 5 вольт, однако при помощи функции analogReference() можно изменять верхний предел.

 


TWI/I²C: пины SDA и SCL

Для общения с периферией по синхронному протоколу, через 2 провода. При помощи данных контактов к Arduino можно подключать внешние цифровые устройства, умеющие общаться по протоколу I2C. Для реализации интерфейса в среде Arduino IDE присутствует библиотека Wire.

SPI: пины 10(SS), 11(MOSI), 12(MISO), 13(SCK).

Через эти пины осуществляется связь по интерфейсу SPI. Для работы — используйте библиотеку SPI. С помощью данных контактов происходит подключение периферии, работающей через интерфейс SPI.

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

Для обмена информацией SPI использует четыре линии:

- тактовый сигнал от ведущего устройства Serial Clock (сокращенно SCK, SCLK или CLK), подключаемый к 13-му пину Arduino;

- линия выбора ведомого Slave Select, подключаемая к 10-му пину Arduino. Используются следующие сокращения и обозначения: SS, STE, CS, CSN, nCS, nSS. CSB;

- передача данных от ведомого устройства к ведущему устройству MISO, подключаемая к пину 12. Используемые сокращения – SO, SDO и DO;

- линия данных от ведущего устройства к ведомому MOSI, подключаемая к 11-му пину Arduino, имеющая обозначения SI, SDI, DI.

Линия SS у каждого подключаемого устройства традиционно своя, но при необходимости существует возможность подключения ведомых каскадом к одной Slave Select как показано на рисунке 44.7.

.

 

Рисунок 44.7 – Каскадное подключение к Slave Select

 

Шина SPI способна передавать информацию сразу в двух направлениях, стандартная скорость обмена данными от 1 до 50 МГц. Встретить это изделие инженеров Motorola можно в профессиональных и бытовых электронных устройствах от датчиков разного назначения до радиомодулей.

Последовательность действий, изображенная на рисунке 44.8, при работе шины следующая:

1) На линии SS ведущим устройством задается низкий уровень.

2) Изменяемый тактовый сигнал задается ведущим устройством по линии Serial Clock, при этом каждое изменение выставляет требуемый уровень на линии MOSI, передавая с каждым тактом по одному биту ведомому устройству.

3) Ведомое устройство передает бит информации за такт по линии SCLK, выставляя необходимые уровень по линии MISO.

4) Завершается передача информации установкой на линии SS максимального уровня.

Рисунок 44.8 – Последовательность работы нины SPI

Режимы обмена информацией

В зависимости от фазы синхронизации (CPHA) и тактового сигнала (CPOL) шина последовательного интерфейса может работать в четырех режимах обмена информацией.

Высокий уровень на тактовой лини в начале и при завершении передачи – 1, а низкий уровень – 0. Соответственно режимы имеют следующую конфигурацию:

1) фаза синхронизации = 1, тактовый сигнал = 0, считывание бита идет на спаде от 1 к 0, а запись при переходе от 0 к 1.

2) фаза синхронизации = 0, тактовый сигнал = 0, считывание бита идет при переходе от 0 к 1 на фронте CPOL, а запись при переходе от 1 к 0.

3) фаза синхронизации = 0, тактовый сигнал = 1, считывание бита идет на спаде от 1 к 0, а запись при переходе от 0 к 1.

4) фаза синхронизации = 1, тактовый сигнал = 1, считывание бита идет при переходе от 0 к 1 на фронте CPOL, а запись при переходе от 1 к 0.

По умолчанию, данные для Arduino передаются старшим битом вперед, но могут и наоборот – передаваться вперед и младшим битом. Эта специфика отражается в документации микроконтроллера.

Библиотека для работы с шиной SPI

Библиотека SPI характеризуется небольшим количеством используемых функций. Она использует для работы с Arduino возможности AVR и делает это в режиме ведущего устройства.

К основным функциям библиотеки относятся:

begin() – инициализация работы с шиной;

end() – завершение работы с шиной;

setBitOrder(order) – определение порядка отправки битов информации, MSBFIRST – все начинается со старшего бита, LSBFIRST – старт с младшего бита;

setClockDivider(divider) – установка делителя тактов в зависимости от основной частоты;

setDataMode(mode) – определения одного из четырех режимов работы шины;

transfer(value) – функция двусторонней передачи данных.

 

UART: пины 0(RX) и 1(TX)

Эти выводы соединены с соответствующими выводами микроконтроллера ATmega16U2, выполняющей роль преобразователя USB-UART. Используется для коммуникации платы Arduino с компьютером или другими устройствами через класс Serial.

Контакт RX используется для получения данных, а контакт TX – для их отправки. Эти выводы подключены к соответствующим контактам последовательной шины схемы ATmega8U2 USB-to-TTL, выступающей в данном контексте в роли программатора.

 


Светодиодная индикация

Обозначение светодиодной индикацииотображено в таблице 44.2.

 

Таблица 44.2 - Светодиодная индикация

Имя светодиода Назначение
RX и TX Мигают при обмене данными между Arduino Uno и ПК.
L Светодиод вывода 13. При отправке значения HIGH светодиод включается, при отправке LOW – выключается.
ON Индикатор питания на плате.

 

Для проверки создаваемого кода по ходу его написания, самый удобный способ индикации – встроенный светодиод. Подав значение HIGH на 13 контакт, он загорается на плате красным цветом, тем самым показывая, что условие вашей программы выполнилось (или наоборот, что-то пошло не так). 13 контакт удобно использовать в коде программы для проверки ошибок и отладки.

Последовательно к контакту 13 подключен резистор на 220 Ом, поэтому не стоит использовать его для вывода питания устройств.



Поделиться:


Последнее изменение этой страницы: 2021-02-07; просмотров: 207; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.191.171.20 (0.008 с.)