Записи с меткой ‘I2c’

Делаем I2C — сканер адреса устройства на Arduino

Ограниченность количества портов ввода/вывода рано или поздно даст о себе знать. Решение данной проблемы может быть использование специализированных протоколов передачи данных: I2C,1-wire,SPI,USART. Сейчас речь пойдет об интерфейсе I2C. Данный интерфейс хорош тем, что по нему можно подключить до 127 устройств, при этом использовать только два порта ввода/вывода Arduino. Но как известно, у каждого устройства есть свой уникальный адрес. Так вот зная адрес, устройство можно легко идентифицировать и получать/принимать с него необходимые данные.

Вопрос в другом, где же этот адрес можно взять? Как правило, производитель указывает его в тех. документации. Но если нет возможности ее найти (такое бывает) или маркировка на корпусе частично затерта, можно воспользоваться платой Arduino UNO в качестве сканера адреса. Для осуществления данной задачи был написан небольшой скетч, который достаточно только залить в Arduino и подсоединить устройство с которого требуется считать адрес.

Пример программного кода:

На самом деле все достаточно просто, для большей ясности сделал много комментариев в коде. Заливайте, пробуйте, все работает!

Читать далее »

Цифровой вольтметр на Arduino и LCD

При конструировании устройств или разработке всевозможных исполнительных узлов нам приходится работать с напряжением. Но не всегда под рукой есть тестер или вольтметр для его мониторинга. Решить данную проблему можно с помощью платы Arduino UNO, LCD-дисплея, нескольких резисторов и конденсаторов в качестве обвязки. В предыдущей статье уже описывал подключение LCD к Arduino, поэтому проблем с этим возникнуть не должно.

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

mnvf7yaQJXk

Как видно из схемы, измеряемое напряжение подается не напрямую на порт ввода/вывода А0, а через резистивный делитель. Сделано это потому что с помощью аналогового входа Arduino можно измерить напряжение только в диапазоне от 0 до 5 В. Получается что воспользовавшись делителем напряжения, диапазон (0-5 Вольт) можно расширить до необходимого нам (0-55 Вольт). Делитель понижает измеряемое напряжение до необходимого для аналогового входа уровня. Затем идет оцифровка аналогового сигнала в цифровой код.

Читать далее »

Подключение LCD-дисплея к Arduino и вывод информации

При разработке устройств на микроконтроллерах часто приходиться сталкиваться с выводом информации. И не всегда получается ограничиться возможностями семи сегментных индикаторов или матриц. LCD-дисплеи на базе контроллера HD44780 — одни из самых простых и доступных на рынке. Их применяют как в простых, собранных самостоятельно, так и в промышленных устройствах (кофе машины, компостеры, и тд). В данной статье расскажу как подключить LCD-дисплей к Arduino и вывести на него информацию.

Распиновка выводов дисплея:

VSS — Питание контроллера (-)
VDD — Питание контроллера (+)
VO — Управления контрастом
RS — Выбор регистра
R/W — Чтение/запись
E — Еnable (строб)
DB0-DB3 — Младшая тетрада 8-битного интерфейса
DB4-DB7 — Старшая тетрада 8-битного интерфейса
A — Анод (+) подсветки дисплея
K — Катод (-) подсветки дисплея

4sNAzwsaLkg (1)

При стандартном подключении LCD-дисплея к Arduino приходиться использовать — 7 портов для 4-битного или же — 11 портов для 8-битного режима . Чтобы уменьшить количество использованных портов ввода/вывода Arduino при подключении к LCD, будем применять расширитель портов. При подключении LCD через I2C расширитель количество используемых портов сокращается до — 2 (линии — SCL, SDA) и две линии питания GND, VCC. Данные модули не дорогие, не требуют большого числа выводов и весьма доступны.

Gw8F3REHJEI.

Читать далее »

Модуль часов реального времени PCF8583 / PCF8593

       Зачастую в своих проектах приходится работать с отсчетом времени и даты. В системе где нужно вести лог событий или точный отсчет времени, пропадание напряжения питания равносильно выходу ее из строя. Так как в результате в показаниях данных будет каша, и ничего толкового с этого не выйдет. Во избежания этой беды используют, так называемые, часы реального времени (Real Time Clock). Они позволяют вести отсчет даже при пропадании напряжения питания, а при возобновлении мы получим необходимые нам данные без потерь.  Делать аппаратно на микроконтроллере это можно за счет наличия асинхронного таймера, но это уже другой разговор. Производители позаботились и выпустили целую линейку RTC — микросхем   DS1307 / PCF8583 / PCF8563 / PCF8593 и тд.  В основном они имеют схожие параметры, характеристики и даже корпуса.

Real Time Clock PCF8583

pcf8583

Небольшой 8- выводной корпус, на выбор DIP/ SO8/ HVQFN20. На борту имеет часы, календарь, таймер, будильник да в придачу еще 240 байт памяти под наши нужды. Общение с микроконтроллером происходит по I2C интерфейсу. Для подключения, из обвязки практически ничего не требует. Понадобится часовой кварц на 32.768 kHz, пару диодов, резисторов и батарейка.

Схема включения  PCF8583:

pcf8583_sh

Читать далее »

Модуль датчика температуры на LM75

Для контроля за температурой часто прибегают к аналоговым термометрам, они не дороги и весьма доступны. Но что делать если диапазон измерений будет не стандартный, а например от -50  до + 150 градусов. При этом еще должна соблюдаться точность до десятой градуса. Или к примеру нужно сделать термостат с выводом поточной температуры и состояния на LCD дисплей.  Бесспорно в этом случае лучше применить цифровой датчик температуры, с соответствующим диапазоном и точностью. В качестве датчика используем недорогую (по сравнению с остальными) и доступную на рынке — микросхему LM75AD.

Цифровой датчик температуры LM75

lm75

Датчик выполнен в 8 — выводном SOIC / VSSOP — корпусе. На борту имеет термометр и систему контроля температуры. Общение с микроконтроллером происходит через I2C интерфейс. При подключении, из обвязки потребуется: несколько резисторов и конденсатор.

Схема включения LM75

lm75_sh

Читать далее »