Подключение i2c к компьютеру
Все началось с того, что мне надо было подключиться к одному устройству по USART. Я сразу взял адаптер USB to UASRT (ибо в ноутбуке COM порт не предусмотрен) на AtTiny2313 (рекламой заниматься не буду, схема легко находится в интернете), подключил, запустил и внезапно понял, что у адаптера фиксированная скорость 9600, а у девайса, к которому требовалось подключиться, скорость 57600. Дело, естественно, было поздним вечером, и купить что-нибудь вроде FT232 возможности не было. Поэтому после непродолжительного раздумья, было решено изменить скорость UASRT в адаптере обычной перепрошивкой. В итоге соединение было успешно налажено. Но согласитесь - это ведь не выход, программатора может под рукой не оказаться, да и неудобно каждый раз с прошивкой шаманить. В следствие этого я серьезно задумался о создании нормального адаптера, с регулируемой скоростью (и не только).
Конечно, самый простой вариант – купить FT232, но сравнив ее стоимость со стоимостью Mega8, я пришел к выводу, что этот вариант мне не подходит. Поэтому было решено сделать адаптер на МК. А раз он на МК, то делать только USART как-то не рационально. Поэтому неплохо было бы в этот адаптер засунуть еще несколько интерфейсов, если уж делать, то что-то универсальное и полезное. Почти сразу в памяти всплыли “приятные” воспоминания об установке драйверов для адаптера на Tiny2313 (для Windows7 x64 это довольно мучительно). А это значит, что от устройства “виртуальный COM” придется отказаться, следовательно, надо будет написать программу для ПК, иначе работа с устройством будет невозможна. В общем, после обдумывания в течение некоторого времени, сформировалась окончательная идея девайса. Функционал получился вот таким:
- адаптер USB->USART;
- адаптер USB->SPI;
- адаптер USB->I 2 C;
- при этом устройство должно быть HID (Human Interface Device), чтобы не морочить голову с установкой драйверов.
Объектом издевательств стал МК Mega8, т.к. в TQFP корпусе он занимает совсем мало места (намного меньше, чем AtTiny2313) и обладает целыми 8 Кб. памяти. Сначала планировалось сделать все интерфейсы программными, но после разводки платы пришлось отказаться от аппаратного I 2 C, т.к. на односторонней плате вывести его никак не получалось (в будущем все-таки надо будет решить этот вопрос, может отдельно вывести сбоку платы). Поэтому его функциональность несколько ограничена, но USART и SPI остались полнофункциональными. Для связи с ПК была применена библиотека V-USB.
Схема устройства получилась вот такой:
Как видно, ничего сложного в ней нет. МК питается напряжением 5 В., согласование уровней для USB выполнено при помощи делителей напряжения резистор 68 Ом. + стабилитрон 3.3 В.. Тактовая частота МК – 12 МГц. Это минимальная частота для работы с шиной USB. Так же в схеме присутствуют три светодиода для индикации режимов работы. Один из светодиодов показывает, какой режим работы включен, а два других индицируют прием/передачу данных. Никаких кнопок и переключателей в устройстве не предусмотрено, и все настройки выполняются программно, прямо с ПК. Да, на все выводы, используемые для работы интерфейсов включены резисторы на 68 Ом. для защиты МК от КЗ. Как уже было отмечено выше, устройство представляется ПК как HID и не требует установки драйверов. VID и PID были выбраны из предоставляемых V-USB: VID - 0x16c0, PID - 0x05df. В противном случае пришлось бы отдать кругленькую сумму за покупку индивидуального идентификатора для USB устройства. Но т.к. проект Open Source и некоммерческий, совершенно свободно можно использовать идентификаторы, предложенные V-USB.
Плата получилась вот такая:
А в спаянном виде:
Это был тестовый образец да еще и разведенный с ошибками. Я почему-то посчитал, что вывод CE выводить не стоит. Ну ничего, все уже исправлено и к статье приложена правильная плата.
Итак, со схемой все понятно, он простая до предела и паяется за один вечер. Но, как было сказано выше, получившееся устройство определяется ПК как HID, т.е. ОС подбирает под него драйвер из своей базы. Проще говоря, Windows думает, что работает с устройством ввода. Это делает возможным работу на любом ПК без мороки с драйверами. Но с этим связана одна небольшая проблема, ни одна из существующих программ для обмена данными через USART работать с этим устройством не будет. А значит нужна какая-то специальная программа для работы с модулем, иначе он никакой ценности из себя не представляет. Поэтому я открыл свой любимый C++ Builder (нынче его обозвали CodeGear RAD Studio, что в прочем не меняет смысла), версия 2007, и написал вот такую программу:
Ничего особо сложного в ней нет, для каждого интерфейса присутствует некоторое количество настроек. Да, одновременно несколько интерфейсов работать не могут, только по одному. Работает все это дело очень просто, при подключении устройства к ПК в окне программы активизируются кнопки, нажатие на которые запускает соответствующий интерфейс. Потом достаточно написать данные в поле ввода в определенном формате и нажать кнопку "Send". Для каждого интерфейса свой формат данных. Сейчас рассмотрим их более подробно:
USART: (прием данных идет все время, пока активен режим, так сказать, на автомате)
SPI:
- для отправки данных устройству формат строки такой: Адрес (кому передавать и в какую ячейку памяти) А (а) и Данные D (d). Например: aa3 dfa;
- для запроса данных с устройства: Адрес (от кого принимать и из какой ячейки памяти) и идентификатор чтения R (r). Например: aa3 r
I 2 C:
- для отправки данных устройству: Адрес устройства (бит чтения в 0) А (а) Адрес ячейки памяти M (m) Данные D (d). Например аа2 m03 d15
- запрос данных выглядит вот так: Адрес устройства (бит чтения в 0) А (а) Адрес ячейки памяти M (m) Адрес устройства (бит чтения в 1) А (а) Идентификатор чтения с количеством ячеек памяти для чтения R (r). Например: aa2 m03 aa3 r1
Для SPI в режиме Slave никаких команд не предусмотрено, просто сидим и ждем, пока нам что-нибудь пришлют. Для работы с девайсом подключаем его к ПК, ждем некоторое время, пока ОС не сообщит, что драйвера успешно найдены и установлены, запускаем программу и начинаем обмен данными. Все предельно просто, ведь простота и была одним из критериев при создании устройства.
Да, кстати, программа совместима со всеми версиями Windows, начиная с Windows XP и заканчивая Windows 8, и не требует для работы различной экзотики, типа NetFramework и т.п. Как, впрочем, и сам модуль.
Вот, собственно, и все, программа, плата и исходники прилагаются.
Фьюзы выставляются для работы от внешнего кварца с высокой частотой. Выглядят вот так:
На картинке LOW фьюзы в 1, когда не отмечены, и в 0, когда отмечены. HIGH фьюзы наоборот. В шестнадцатеричном виде это выглядит вот так: HIGH: D9, LOW: FF.
Ну и конечно же видео, т.к. лучше один раз увидеть, чем. (USART работает в режиме эхотест (Rx и Tx соединены), а SPI и I 2 C тестируются с микросхемой PCA2129T, статья о ней тут)
Вы здесь: Home Железо Прочее I2C-USB переходник Превращаем программатор USBasp в I2C-USB переходник:
Если Вы уже знакомы с USBasp программатором,то вы знаете,что это очень простое и дешевое устройство для программирования м/к ATmega,но оказывается программатор , используя проект i2c tiny usb можно превратить в полноценный дешевый переходник I2C to USB.
В итоге мы получаем возможность подключать разные устройства I2C к компьютеру всего за 100 рублей (3$).Например мы можем подключить датчик давления BMP085 или микросхемы ввода/вывода MCP23017 для подключения кнопок или управления нагрузкой через реле.
USBasp прошивается стандартно как при обновлении прошивки и прошивается так же через arduino как программатор или используя другой USBasp программатор .Для программирования используются те же выводы SCK,MISO,MOSI ,RESET ,но прошивка идет через утилиту avrdude ,а не из среды Arduino IDE.
Порядок действий для прошивки через arduino:
1. Подключаем выводы SCK,MISO,MOSI ,RESET к Arduino согласно инструкции .
2. Установавливаем перемычку self programming (на фото обозначена как JP2),обычно место для перемычки не распаяно.
3. Качаем скомпилированную прошивку под USBasp тут и кидаем в папку путь_к_папке_ардуины_/hardware/tools/ .
4. Перейдем в консоль (cmd или bash) Вашей операционной системы в папку через команду cd путь_к_папке_ардуины_/hardware/tools/ и далее вводим команды для Windows,не забывем указать верный порт,на котором подключена Arduina:
avrdude -C avrdude.conf -c avrisp -P COM1 -b 19200 -p m8 -v
avrdude -C avrdude.conf -c avrisp -P COM1 -b 19200 -p m8 -U flash:w:i2c_tiny_usb.hex -U lfuse:w:0x9f:m -U hfuse:w:0xc9:m
Для прошивки из Linux все аналогично, заменяется часть строки:
./avrdude -C avrdude.conf -c avrisp -P /dev/ttyUSB0 .
Порядок действий для прошивки через другую USBasp:
Подключаем выводы SCK,MISO,MOSI ,RESET один в один.Можно просто подключить через шлейф,идущий в комплекте с программатором.
Указываем опцию -c usbasp вместо -c avrisp
После успешной прошивки устройство опознается как i2c-tiny-usb и выводы программатора будут иметь другое назначение: SDA и SDL ,к которым мы можем уже подключать I2C устройства согласно справочной информации.
Работа переходника I2C-USB в Linux:
Драйвера в Linux не требуются ,но по умолчанию модуль i2c-dev не загружен и его необходимо установить в автозагрузку выполнив команду echo "i2c-dev" >>/etc/modules или/и загрузить модуль немедленно командой modprobe i2c-dev .В папке /dev/ Вы увидите возможно несколько устройств вида -i2c-X,наше скорее всего будет последним.Зная номер сейчас можно работать с устройствами подключенные на данной шине согласно примеров и инструкций к устройствам.Рекомдуется установить пакет программ i2c-tools (через управление ПО Вашей операционной системы) -поможет для поиска I2C устройств командой i2cdetect -y Х ,где Х - это номер i2c шины:
Приложения с данным переходником i2c_tiny_usb могут работать как с USB устройством -в этом случае загрузка модуля i2c-dev не нужна.
Работа переходника I2C-USB в Windows:
Для работы переходника требуются драйвера i2c_tiny_usb .В windows приложения работают только как с USB устройством,а не с шиной I2C.
Материалы и ссылки:
Прошивка i2c_tiny_usb.hex.
Страничка проекта i2c_tiny_usb.
Home`s Smart © 2013-2016. г.Киров.
Цитирование материалов возможно только со ссылкой на сайт. Использование фотоматериалов только с разрешения авторов.
Иногда, особенно при изучении особенностей той или иной микросхемы или отладке устройства на ее основе, бывает удобно подключить линии интерфейса I2С к компьютеру.
Поскольку компьютеры таким интерфейсом не оборудованы, для этого необходим адаптер, преобразующий передаваемые сигналы в приемлемый для одного из стандартных портов компьютера вид.
Принципиальная схема
Устройство представляет собой преобразователь уровней сигналов интерфейса RS-232 (СОМ-порта компьютера) в уровни сигналов шины I2С и обратно. Число элементов в адаптере крайне мало: одна микросхема, два транзистора и по четыре резистора и конденсатора.
Рис.1. Принципиальная схема адаптера i2c - RS232.
На рис. 1 представлена схема адаптера. Микросхема MAX232ACSE(DA1) - широко распространенный двунаправленный преобразователь уровней интерфейса RS-232 в уровни ТТЛ.
Конденсаторы С1-С4 - стандарт ная "обвязка" этой микросхемы. Инверторы на транзисторах VT1, VT2 обеспечивают адаптеру необходимые для шины I2C выходы с открытым коллектором, а резисторы R3, R4 поддерживают высокий уровень на линиях шины при закрытых транзисторах.
Конструкция и детали
Монтаж выполнен на двусторонней печатной плате, изображенной на рис. 2. Она рассчитана на установку элементов для поверхностного монтажа (резисторы и конденсаторы - типоразмера 0805) и размещение внутри корпуса розетки XS1, подключаемой непосредственно к вилке СОМ-порта компьютера. В отверстия с точками в центре необходимо вставить проволочные перемычки, пропаяв их с обеих сторон.
Рис. 2. Печатная плата адаптера.
Вместо микросхемы MAX232ACSE можно применить ADM232AARN и другие ее аналоги, но необходимо убедиться, что они предназначены для работы с конденсаторами С1-С4 емкостью 0,1 мкФ.
В противном случае нужно заменить их конденсаторами емкостью, указанной в описании микросхемы.
Транзисторы ВС850 можно заменить любыми другими маломощными структуры п-р-п, имеющими статический коэффициент передачи тока не менее 50. Напряжение питания 5 В должно быть подано на адаптер от устройства с интерфейсом I2C, с которым он работает.
Правильно собранный адаптер не нуждается в налаживании. При необходимости его можно проверить с помощью программы, описанной в [2]. Она позволяет изменять логические уровни сигналов на выходах СОМ-порта и наблюдать за состоянием его входов. Программу можно скачать здесь: tcom.zip (0,2кБ).
Рис. 3. Окно программы i2cWin.
Чтобы вручную управлять устройством, подключенным через адаптер к компьютеру, была написана программа i2cWin, окно которой изображено на рис. 3. Для нее необходимы операционная система Windows 2000/XP/Vista, 2 Мбайт свободного пространства на жестком диске, свободный порт RS-232.
Суть и вообще предназначение Ардуино состоит в быстрой и удобной разработке электронных устройств. Это универсальный контроллер, на базе которого можно сделать законченный девайс (от англ. Device – устройство, прибор) абсолютно произвольного назначения, от полезного (часы-будильник, реле времени с кучей настроек и дисплеем, автоматизацию теплицы, умный дом…) до бесполезного, но забавного или интересного (самонаводящийся вентилятор, машинка на радиоуправлении с пушкой, робот с большим количеством функций и так далее). Для достижения этих целей к Ардуино подключаются различные внешние устройства, с которыми она может взаимодействовать.
Начнем с мира цифрового, в котором устройства общаются друг с другом при помощи цифровых сигналов, так называемых логических, то есть имеющих два простейших состояния: правда и ложь, да и нет, 1 и 0. В большинстве цифровых устройств эти два состояния передаются напряжением 0 и 5 Вольт, но бывает и 0 и 3.3 Вольта. Таким образом микроконтроллер по сути может измерить цифровой сигнал (что подаётся на ногу, 0 или 5 Вольт), или выдать со своей ноги 0 и 5 Вольт соответственно. Закодированный цифровой сигнал выглядит примерно вот так: скачки 0 и 5 (или 3.3) Вольт с разной продолжительностью.
Совокупность правил и длин участков 5 и 0 Вольт называют интерфейсом связи.
Распиновка Nano
- GPIO – базовый порт ввода-вывода. Может читать и выдавать цифровой сигнал (только 0 и 5 Вольт).
- PWM – может аппаратно генерировать ШИМ сигнал.
- ANALOG – пин АЦП, аналогово-цифрового преобразователя. Может измерять напряжение.
- UART – выводы аппаратного UART для подключения модулей с таким же интерфейсом.
- I2C– выводы аппаратной шины I2C для подключения модулей с таким же интерфейсом.
- SPI – выводы аппаратной шины SPI для подключения модулей с таким же интерфейсом.
Простые цифровые датчики
К простым цифровым можно отнести любые датчики, имеющие пин с логическим выходом, то есть напряжение на этом пине может быть только 0 или 5 Вольт в зависимости от показания датчика. Это например ИК датчик движения, кнопка, датчик линии, энкодер, а также практически все остальные датчики с пинами питания и выходом, помеченным как DO, OUT или S.
Такие модули подключаются в любые GPIO пины.
Интерфейсы
Некоторые датчики имеют цифровой выход, но выдают не просто 0 и 5V, а передают данные по цифровому интерфейсу связи. Сигнальные пины таких датчиков могут быть подписаны как SCK, SDA, SCL, MISO, MOSI, SS и прочими аббревиатурами. Для работы с такими датчиками нужно обязательно смотреть примеры или документацию. По сути любой такой датчик можно подключить на любой GPIO пин и программно эмулировать нужный интерфейс связи, что сложно и будет отбирать лишнее процессорное время. Arduino Nano поддерживает несколько интерфейсов аппаратно, то есть позволяет работать с ними очень быстро и эффективно.
UART – пины D0 (RX) и D1 (TX). По нему чаще всего подключаются Bluetooth, GPS и GSM модули. В общем случае поддерживает подключение только одного модуля. Пины на модуле называются обычно RX и TX. Подключение к модулю осуществляется “наоборот” – RX->TX и TX->RX, так как RX принимает сигналы (Receiver), а TX – передаёт (Transmitter). Для подключения нескольких UART модулей или одновременной работы модуля и “монитора порта” используют программный UART при помощи встроенной библиотеки SoftwareSerial.
I2C (Wire)
I2C – пины A4 (SDA) и A5 (SCL). Данный интерфейс является шиной, то есть к нему можно подключить параллельно сразу несколько (до 128) устройств с уникальными адресами.
Варианты маркировки и подключение к аппаратному I2C:
- A4 < SDA (D) – линия данных, Serial DAta
- A5 < SCL (C, SCK) – линия синхронизации, Serial CLock
SPI – пины D11 (MOSI), D12 (MISO) и D13 (SCLK), иногда добавляется D10 (SS). Данный интерфейс также является шиной, причём высокоскоростной, и поддерживает подключение по сути неограниченного количества модулей: у модуля есть пин CS (Chip Select), который прижимается микроконтроллером к GND для выбора данного модуля в качестве устройства приёма и передачи данных в текущий момент. SPI – очень распространённый и простой интерфейс, очень часто датчики и модули подключают к любым GPIO пинам и используют программную отправку и приём данных через встроенные функции shiftIn() и shiftOut(). “Сложные” датчики и датчики с большим объёмом и высокой скоростью передаваемых данных (карта памяти, NFC модуль) нужно подключать к аппаратной шине SPI микроконтроллера.
Варианты маркировки и подключение к аппаратному SPI:
- D11 < MOSI (SDI, DI, DIN, SI) – линия данных от Ардуино к модулю
- D12 < MISO (SDO, DO, DON, SO) – линия данных от модуля к Ардуино
- D13 < SCLK (SCK, CLK, SPC) – линия синхронизации
- D10 < SS (SCK, CLK, SPC) – используется в случаях, когда Ардуино является “датчиком”
- GPIO < CS (SS, RCK) – выбор текущего модуля прижатием этого пина к GND
Другие
Помимо этих трёх популярных интерфейсов существуют и другие (CAN, 1-wire и прочее), но так как у нас есть сила микроконтроллера, мы можем эмулировать практически любой протокол и интерфейс связи, так называемый software <название интерфейса> (softwareSerial, softwareI2C…). И тут на помощь приходит комьюнити ардуино, которое уже написало библиотеки для всего что можно, и можно без проблем общаться практически с любой железкой, поддерживающей какой-либо популярный протокол связи. По той же CAN шине можно подключиться к мозгам своего автомобиля и делать с ним всякое. Куча микросхем различного назначения без особых проблем и телодвижений подключаются к ардуино и позволяют собой управлять. Всяческие усилители, драйверы, сдвиговые регистры, ЦАПы, АЦПы, мультиплексоры, цифровые резисторы и сотни других интересных штук.
Аналоговый сигнал
Второй тип связи – аналоговый, работает только “на приём”. Микроконтроллер может измерять напряжение, которое подаётся ему на АЦП (аналогово-цифровой преобразователь), диапазон измерения ограничен вплоть до опорного напряжения или напряжения питания микроконтроллера, то есть максимум, что может измерить микроконтроллер без дополнительного железа – от 0 до 5 вольт, или от 0 до 3.3 вольт для 3.3 вольтовых моделей. К этому мы ещё вернёмся.
Благодаря наличию АЦП (чтение аналогового сигнала) ардуино может считывать показания любых аналоговых датчиков: термисторы, термопары, фоторезисторы, потенциометры, напряжение шунта и прочее прочее из мира аналоговой электроники. По сути можно подключить всё что угодно без особых навыков, было бы желание и готовая библиотека. Ну и умение читать.
К аналоговым относятся модули и датчики, сигнал с которых выходит в виде напряжения от 0 до 5 Вольт, но меняется “плавно” в зависимости от показания с датчика. Это например микрофон, термистор, фоторезистор, датчик влажности, потенциометр и прочее. Многие аналоговые датчики имеют пины, подписанные так же, как цифровые. Как отличить цифровой датчик от аналогового? Либо по описанию, либо методом “тыка” – подключить в аналоговый пин и вывести сигнал. Некоторые модули имеют цифровой и аналоговый выход одновременно (датчики звука, линии, холла и некоторые другие), пины у них обычно подписаны как DO – цифровой выход и AO – аналоговый. Также аналоговый выход может быть маркирован как OUT или S.
Такие модули подключаются в любые ANALOG пины.
Резюмируя
Теперь по сути дела: датчики, их куча кучная, измерять можно ну просто всё, что вообще измеряется. Электроника: напряжение, ток, сопротивление, работа с переменным током, поля. Параметры микроклимата: температура, влажность, давление, содержание газов, скорость ветра, освещенность, что угодно. Интересных модулей тоже очень много: Bluetooth, сотовая связь, GPS, дисплеи различных типов и размеров, датчики присутствия, как ИК, так и микроволновые, модули для беспроводной связи ардуинок и многое другое.
Можно управлять абсолютно любой железкой, которая выполняет свою функцию просто при подаче питания: лампочка, светодиодная лента, электронагреватель, мотор или любой электропривод, электромагнит, соленоид-толкатель, и это все с любым напряжением питания. Но тут нужно кое что понять: Ардуино (точнее микроконтроллер) – логическое устройство, то есть по-хорошему она должна только отдавать команды другим устройствам, или принимать их от них. Это я к тому, что напрямую от ардуино не работают ни лампочки, ни моторчики, ни нагреватели, ни- ху че-го. Максимум – светодиод. С пониманием этого идём дальше. Чтобы ардуино включила или выключила (подала питание) на другое устройство, нужно устройство – посредник, например реле или транзистор. Ардуино управляет реле, а реле в свою очередь включает любую нужную нагрузку с любым напряжением питания и все такое, подробнее об этом поговорим отдельно.
Как суть всего выше написанного – возможности Ардуино по подключению и управлению различными железками практически безграничны, можно воплотить любую идею, даже самую безумную. Датчики что то измеряют, исполнительные устройства что то контролируют, в это же время ведётся отсылка данных куда-нибудь, что-то отображается на дисплее и контролируется при помощи кнопок. Романтика!
У меня в каталоге ссылок на Ардуино-компоненты можно найти практически все существующие датчики, модули и прочие железки для Ардуино, и практически у каждого есть ссылка на статью с примером и библиотекой. Пользуйтесь!
Этот модуль позволяет измерять постоянное напряжение в широком диапазоне и ток (со значением зависящим от используемого измерительного резистора). Считывание результатов возможно через интерфейс I2C, что позволяет использовать модуль совместно с Raspberry Pi, Arduino, STM32 и так далее. В основе модуля лежит микросхема LTC4151, внутренняя схема которой показана на рисунке. Это специализированный трехканальный 12-разрядный преобразователь АЦП со встроенными схемами измерения напряжения и тока.
Назначение устройства - контролировать параметры мощности или нагрузки в положительной силовой шине. Диапазон измерения напряжения 7 - 80 В, а сила тока зависит от внешнего шунта Rs (полный диапазон измеряемого напряжения 82 мВ). Третий универсальный канал ADIN используется для измерения внешнего напряжения, которое должно находиться в диапазоне 0 - 2 В.
Электрическая схема модуля
Схема модуля представлена на рисунке. Внешний источник питания подключается к клеммам 1 и 2 разъема PWR. Благодаря встроенному в U1 делителю напряжения диапазон измерения составляет 7 - 80 В, а разрешение - 25 мВ.
Технические параметры
- диапазон измерения напряжения: 7 - 80 В с разрешением 25 мВ,
- диапазон измерения тока: до 2 А с разрешением 0,5 мА,
- диапазон измерения тока зависит от внешнего шунта и может быть изменен,
- есть третий универсальный канал измерения напряжения в диапазоне 0 - 2 В,
- связь через интерфейс I2C.
Нагрузка подключается к клеммам 2 и 3 разъема измерения тока PWR. Ток нагрузки измеряется косвенно, путем измерения падения напряжения на резисторах RS1 и RS2. Максимальное падение напряжения на измерительных резисторах может составлять 82 мВ, что соответствует разрешающей способности 20 мкВ. Тут используется резистор 40 мОм, который устанавливает диапазон измерения тока 2 А с разрешением 0,5 мА.
Для обеспечения максимальной точности измерения следует использовать неиндуктивные резисторы соответствующей мощности и допуском не более 1%. Изменяя значения RS1 и RS2, можно настроить диапазон измерения тока в соответствии с требованиями приборов, место для двух резисторов облегчает их возможный выбор. В случае измерения более высоких токов и, следовательно, больших потерь мощности, шунт следует размещать за пределами печатной платы.
Дополнительный канал VIN преобразователя доступен на разъеме J1. Контакт SHDN, доступный на разъеме J2, активный в низком состоянии, позволяет схеме перейти в режим пониженного энергопотребления.
Шина I2C выведена на разъемы I2C / I2CA типа EH и JST 1 мм, а также на разъемы J1 и J2. Схема работает с шиной I2C с напряжениями в диапазоне 3,3 - 5 В. Для включения измерительной части U1 необходимо постоянное наличие напряжения источника Vs1. Перемычки A0 и A1, выполненные в виде полей на печатной плате, позволяют выбрать один из адресов, как показано в таблице.
Резистор RP поляризует управляющие сигналы, светодиод LD показывает наличие питания.
Микросхема LTC4151 имеет один неизменяемый адрес глобального вызова, который упрощает настройку и одновременное преобразование, когда несколько микросхем взаимодействуют в устройстве (аналогично некоторым драйверам светодиодов I2C). Конфигурация и считывание результатов измерений осуществляется обработкой регистров по определенным косвенным адресам в соответствии с другой таблицей.
Чип LTC4151 позволяет работать в двух режимах: однократном (моментальный снимок), где выбирается однократное преобразование в определенном канале (SENSE / VIN / ADIN), или непрерывном (автономный режим), при котором каналы измерения обновляются последовательно с частотой 6 - 9 Гц. Состояние преобразования выбранного канала сигнализируется состоянием бита B3 в регистрах B, D, F соответственно.
Конфигурация осуществляется записью регистра CONTROL (0x06), значение битов следующее:
- B7: выбор режима преобразования, 1 = снимок, 0 = автономная работа,
- B6, B5: выбор канала в режиме моментального снимка, 00 = Sense, 01 = Vin, 10 = ADIN,
- B4: 1 = тестовый режим, возможна запись в регистры AD, 0 = работа,
- B3: 1 = включить, 0 = отключить пейджинг (чтение / запись),
- B2: 1 = включено, 0 = отключено Таймер сброса шины I2C отключен,
- B1, B0: 00, зарезервировано.
Модуль смонтирован на двусторонней печатной плате, чертеж которой вместе с расположением элементов представлен на рисунке.
Механическая конструкция модуля позволяет без проблем работать с различными макетами плат, рекомендуем использовать длинные (30 . 40 мм) SIP-коннекторы, впаянные так, чтобы выводы выступали с обеих сторон печатной платы. Такой способ установки позволяет удобно использовать контакты, облегчая вывод сигналов и расширение шины I2C.
Настройка модуля I2C
Для быстрой проверки работы модуль можно подключить к шине I2C Raspberry Pi, а источник питания и нагрузку можно подключить к разъему PWR. Используя библиотеку i2ctools, после установки базового адреса с помощью перемычек A1 и A0 (по умолчанию A1, A0 = LL, address = 0x6F) модуль должен быть видимым после чтения шины с помощью команды i2cdetect -y 1.
Результат команды показан на рисунке, установленный 7-битный базовый адрес - 0x6F, а видимый фиксированный глобальный адрес - 0x66.
Схема настроена на работу в непрерывном режиме командой:
i2cset -y 1 0x6f 0x06 0x04
Можем читать регистры с обработанными значениями с помощью команды:
i2cdump -y -r 0x00-0x06 1 0x6f
Вот результат образца:
$ i2cdump -y -r 0x00-0x06 1 0x6f
Размер не указан (с использованием доступа к байтовым данным)
0 1 2 3 4 5 6 7 8 9 a b c d e f 0123456789abcdef
00: 00 00 13 d0 7f c0 04 .
Значения конвертируются по формуле:
Для пар регистров 0/1, 2/3, 4/5 и с учетом коэффициентов преобразования получаем значение тока и напряжения питания и значение вспомогательного канала ADIN. Применяя Arduino можете использовать библиотеку LTC4151-master.
Изучение принципа действия и параметров кварцевого генератора, выбор КГ для различных устройств.
Описание нового Блютус протокола беспроводной связи - Bluetooth Mesh.
Медицинские устройства для контроля параметров здоровья человека. Примеры современных микросхем снятия и обработки сигналов тела.
Лазерные светодиоды, люминисцентные и диоды для накачки твердотельных лазеров DPSSL.
Читайте также: