Hx710b arduino схема подключения

2 Схемы

Принципиальные электросхемы, подключение устройств и распиновка разъёмов

Датчик давления: подключение модуля к Ардуино

В этом материале проведём тестирование модуля, способного измерять давление. Это небольшой и недорогой датчик давления HX710B. Модуль имеет диапазон измерения 0-5,8 фунтов на квадратный дюйм. Единица PSI – это британская система мер, которая означает фунты на квадратный дюйм. Если PSI преобразовать в Паскаль, то диапазон измерения составляет 0-40 кПа (1 PSI равен примерно 6895 Паскаля).

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

В основе маленького модуля находится датчик давления MPS20N0040D-S. Внутри 6-контактный датчик представляет собой мост Уитстона, предназначенный для работы с регулируемым источником питания 5 В постоянного тока.

Почему производители назвали его HX710B? Второй компонент в модуле – HX710B, который представляет собой прецизионный 24-битный аналого-цифровой преобразователь (АЦП). Далее представлена типичная блок-схема приложения HX710B IC, доступная в 8-выводном корпусе.

Микросхема HX710B предназначена для весов и устройств управления и имеет непосредственный интерфейс с мостовым датчиком. Её входной малошумящий усилитель (PGA) имеет фиксированное усиление 128, что соответствует полномасштабному дифференциальному входному напряжению ± 20 мВ, когда опорное напряжение 5 В подключено к выводу VREF. Встроенный генератор обеспечивает работу таймера без каких-либо внешних компонентов. Помимо встроенной схемы включения питания при сбросе (POR), упрощается инициализация цифрового интерфейса. Далее радиосхема модуля HX710B, это очень простая и понятная схема, поэтому не требуется пояснений.

В некоторых модулях чип HX710B заменен другим – TM7711.

Модуль датчика давления имеет 4 точки подключения, а именно VCC (+5 В), GND (0 В), OUT (Данные) и SCK (Таймер). Для внутренних регистров микросхемы HX710B нет необходимости в программировании, потому что все управление осуществляется через контакты. Тем не менее, самая сложная часть – это выяснить протокол связи, поскольку цифровой интерфейс не относится к типу I2C.

Последовательный интерфейс: контакты PD_SCK и DOUT используются для извлечения данных, выбора входа, выбора скорости выходных данных и управления отключением питания. Когда выходные данные не готовы для извлечения, на цифровом выходном выводе DOUT высокий уровень. Последовательный тактовый вход PD_SCK должен быть низким. Когда DOUT становится низким это означает, что данные готовы к извлечению. При подаче 25

27 положительных тактовых импульсов на вывод PD_SCK данные смещаются с вывода DOUT. Каждый импульс PD_SCK сдвигает на один бит, начиная с бита MSB первым, до тех пор, пока не будут сдвинуты все 24 бита. 25-й импульс на входе PD_SCK вернет вывод DOUT в высокий уровень. Выбор входа и выбор скорости выходных данных контролируется количеством входных импульсов PD_SCK. Тактовых импульсов PD_SCK не должно быть меньше 25 или больше 27 в течение одного периода преобразования.

PD_SCK ИМПУЛЬСЫ Вход Скорость передачи данных
25 Дифференциальный 10 Гц
26 DVDD-AVDD 40 Гц
27 Дифференциальный 40 Гц

На рисунке показаны синхронизация вывода, ввода и выбора скорости передачи данных, а также управление HX710B.

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

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

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

Для простоты будем использовать специальную библиотеку HX710 Arduino. Возможно стоит попробовать библиотеку HX711 Arduino и для HX710, поскольку оба чипа используют идентичную систему последовательного интерфейса.

В аппаратной настройке, помимо соединений источника питания (5V и GND), вывод SCK модуля HX710B подключен к A0 Arduino Uno, а вывод OUT – к A1.

Датчик давления можно проверить различными способами, в зависимости от потребностей. Один из них – прикрепить вход датчика непосредственно к шприцу. Затем датчик давления использовать для измерения давления при перемещении поршня шприца (смотрите фото из заголовка).

По результатам проверки модуль работает удовлетворительно, но конечно для лучшей точности нужно будет подготовить индивидуальный код и библиотеку, чтобы продолжить работу с модулем датчика давления.

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

Источник

Ардуино подключение аналогового датчика давления

2 Схемы

Принципиальные электросхемы, подключение устройств и распиновка разъёмов

Датчик давления: подключение модуля к Ардуино

В этом материале проведём тестирование модуля, способного измерять давление. Это небольшой и недорогой датчик давления HX710B. Модуль имеет диапазон измерения 0-5,8 фунтов на квадратный дюйм. Единица PSI – это британская система мер, которая означает фунты на квадратный дюйм. Если PSI преобразовать в Паскаль, то диапазон измерения составляет 0-40 кПа (1 PSI равен примерно 6895 Паскаля).

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

В основе маленького модуля находится датчик давления MPS20N0040D-S. Внутри 6-контактный датчик представляет собой мост Уитстона, предназначенный для работы с регулируемым источником питания 5 В постоянного тока.

Почему производители назвали его HX710B? Второй компонент в модуле – HX710B, который представляет собой прецизионный 24-битный аналого-цифровой преобразователь (АЦП). Далее представлена типичная блок-схема приложения HX710B IC, доступная в 8-выводном корпусе.

Микросхема HX710B предназначена для весов и устройств управления и имеет непосредственный интерфейс с мостовым датчиком. Её входной малошумящий усилитель (PGA) имеет фиксированное усиление 128, что соответствует полномасштабному дифференциальному входному напряжению ± 20 мВ, когда опорное напряжение 5 В подключено к выводу VREF. Встроенный генератор обеспечивает работу таймера без каких-либо внешних компонентов. Помимо встроенной схемы включения питания при сбросе (POR), упрощается инициализация цифрового интерфейса. Далее радиосхема модуля HX710B, это очень простая и понятная схема, поэтому не требуется пояснений.

В некоторых модулях чип HX710B заменен другим – TM7711.

Модуль датчика давления имеет 4 точки подключения, а именно VCC (+5 В), GND (0 В), OUT (Данные) и SCK (Таймер). Для внутренних регистров микросхемы HX710B нет необходимости в программировании, потому что все управление осуществляется через контакты. Тем не менее, самая сложная часть – это выяснить протокол связи, поскольку цифровой интерфейс не относится к типу I2C.

Последовательный интерфейс: контакты PD_SCK и DOUT используются для извлечения данных, выбора входа, выбора скорости выходных данных и управления отключением питания. Когда выходные данные не готовы для извлечения, на цифровом выходном выводе DOUT высокий уровень. Последовательный тактовый вход PD_SCK должен быть низким. Когда DOUT становится низким это означает, что данные готовы к извлечению. При подаче 25

27 положительных тактовых импульсов на вывод PD_SCK данные смещаются с вывода DOUT. Каждый импульс PD_SCK сдвигает на один бит, начиная с бита MSB первым, до тех пор, пока не будут сдвинуты все 24 бита. 25-й импульс на входе PD_SCK вернет вывод DOUT в высокий уровень. Выбор входа и выбор скорости выходных данных контролируется количеством входных импульсов PD_SCK. Тактовых импульсов PD_SCK не должно быть меньше 25 или больше 27 в течение одного периода преобразования.

PD_SCK ИМПУЛЬСЫ Вход Скорость передачи данных
25 Дифференциальный 10 Гц
26 DVDD-AVDD 40 Гц
27 Дифференциальный 40 Гц

На рисунке показаны синхронизация вывода, ввода и выбора скорости передачи данных, а также управление HX710B.

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

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

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

Для простоты будем использовать специальную библиотеку HX710 Arduino. Возможно стоит попробовать библиотеку HX711 Arduino и для HX710, поскольку оба чипа используют идентичную систему последовательного интерфейса.

В аппаратной настройке, помимо соединений источника питания (5V и GND), вывод SCK модуля HX710B подключен к A0 Arduino Uno, а вывод OUT – к A1.

Датчик давления можно проверить различными способами, в зависимости от потребностей. Один из них – прикрепить вход датчика непосредственно к шприцу. Затем датчик давления использовать для измерения давления при перемещении поршня шприца (смотрите фото из заголовка).

По результатам проверки модуль работает удовлетворительно, но конечно для лучшей точности нужно будет подготовить индивидуальный код и библиотеку, чтобы продолжить работу с модулем датчика давления.

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

Подключение аналоговых датчиков к Ардуино, считывание показаний датчиков

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

Соответственно датчики делят на две группы:

Для считывания цифровых значений могут использоваться как цифровые, так и аналоговые входы микроконтроллера, в нашем случае авр на плате Arduino. Аналоговые же датчики должны подключаться через аналогово-цифровой преобразователь (АЦП). ATMEGA328, именно он установлен в большинстве плат АРДУИНО (подробнее об этом на сайте есть статья), содержит в своей схеме встроенный АЦП. На выбор доступно целых 6 аналоговых входов.

Если вам этого не хватает, вы можете с помощью дополнительного внешнего АЦП подключить к цифровым входам, но это усложнит код и увеличит его объём, из-за добавления алгоритмов обработки и управление АЦП. Тема аналогово-цифровых преобразователей достаточно широка что можно сделать о них отдельную статью или цикл. Проще использовать плату с их большим количеством или мультиплексоры. Давайте рассмотрим, как подключить аналоговые датчики к Arduino.

Общая схема аналоговых датчиков и их подключения

Датчиком может быть даже обычный потенциометр. По сути – это резистивный датчик положения, на таком принципе реализуют контроль уровня жидкостей, угла наклона, открытия чего-либо. Его можно подключить к ардуино двумя способами.

Схема выше позволит считывать значения от 0 до 1023, благодаря тому, что всё напряжение падает на потенциометре. Здесь работает принцип делителя напряжения, в любом положении движка напряжение распределяется по поверхности резистивного слоя линейно или в логарифмическом масштабе (зависит от потенциометра) на вход попадает та часть напряжения, которая осталась между выводом ползунка (скользящего контакта) и землёй (gnd). На макетной плате такое соединение выглядит так:

Второй вариант подключен по схеме классического резистивного делителя, здесь напряжение в точке максимального сопротивления потенциометра зависит от сопротивления верхнего резистора (на рисунке R2).

Вообще резистивный делитель очень важен не только в области работы с микроконтроллерами, но и в электронике в целом. Ниже вы видите общую схему, а также расчётные соотношения для определения значения напряжения на нижнем плече.

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

Ниже приведена простейшая схема подключения терморезистора, в принципе, на его базе можно сделать термометр. Но точность его показаний будет зависеть от точности таблицы перевода сопротивления в температуру, стабильности источника питания и коэффициентов изменения сопротивлений (в т.ч. резистора верхнего плеча) под действием той же температуры. Это можно минимизировать путем подбора оптимальных сопротивлений, их мощности и рабочих токов.

Таким же образом можно подключить фотодиоды, фототранзисторы как датчик освещенности. Фотоэлектроника нашла применения в датчиках определяющих расстояние и наличие предмета, один из таких мы рассмотрим позже.

Рисунок показывает подключение фоторезистора к ардуино.

Программная часть

Прежде чем рассказать о подключении конкретных датчиков, я решил рассмотреть программные средства для их обработки. Все аналоговые сигналы считываются с таких же портов с помощью команды analogRead(). Стоит отметить, что у Arduino UNO и других моделей на 168 и 328 атмеге 10-разрядный АЦП. Это значит, что микроконтроллер видит входной сигнал в виде числа от 0 до 1023 – итого 1024 значения. Если учесть, что напряжение питания 5 вольт, то чувствительность входа:

То есть при значении 0 на входе, напряжение равно 0, а при значении 10 на входе – 48 мВ.

В отдельных случаях для преобразования значений до нужного уровня (например для передачи в шим выход) 1024 делят на число, а в результате деления должно должен получится необходимый максимум. Более наглядно работает функция map(источник, нч, вч, внч, ввч), где:

нч – нижнее число до преобразования функцией;

внч – нижнее число после обработки функцией (на выходе);

Практическое применение для преобразования функцией входного значения для передачи в ШИМ (максимальное значение 255, для преобразования данных из ацп в выход шим 1024 делят на 4):

// будет получено число от 0 до 1023

// делим его на 4, получится целое число в от 0 до 255 analogWrite(led, x);

Вариант 2 – функция MAP – открывает более широкие возможности, но об этом позже.

analogWrite(led, map(val, 0, 1023, 0, 255))

Далеко не у всех датчиков на выходе присутствует 5 Вольт, т.е. число 1024 не всегда удобно делить для получения тех же 256 для ШИМа (или любых других). Это может быть и 2 и 2.5 вольта и другие значения, когда максимумом сигнала будет, например 500.

Научитесь разрабатывать устройства на базе микроконтроллеров и станьте инженером умных устройств с нуля: Инженер умных устройств

Популярные аналоговые датчики

Общий вид датчика для ардуино и его подключение изображено ниже:

Обычно есть три выхода, может присутствовать четвертый – цифровой, но это особенности.

Расшифровка обозначения выводов аналогового датчика:

G – минус питания, общая шина, земля. Может обозначаться как GND, «-»;

V – плюс питания. Может обозначаться как Vcc, Vtg, «+»;

S – выходной сигнал, возможные обозначения – Out, SGN, Vout, sign.

Новички для освоения считывания значения датчиков выбирают проекты всевозможных термометров. Такие датчики бывают в цифровом исполнении, например DS18B20, и в аналоговом – это всевозможные микросхемы типа LM35, TMP35, TMP36 и другие. Вот пример модульного исполнения такого датчика на плате.

Погрешность датчика от 0.5 до 2 градуса. Построен на микросхеме TMP36, как и её многие аналоги его выходные значения равняются 10 мВ/°С. При 0° выходной сигнал – 0 В, а дальше прибавляется по 10 мВ на 1 градус. То есть при 25.5 градусах напряжение – 0.255 В, возможно отклонение в пределах погрешности и собственного нагрева кристалла ИМС (до 0.1°С).

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

Однако, для качественного термометра нельзя просто считать значения и вывести их на LCD индикатор или последовательный порт для связи с ПК, для стабильности выходного сигнала всей системы в целом нужно усреднять значения с датчиков, как аналоговых, так и цифровых в определенных пределах, при этом, не ухудшая их быстродействие и точность (всему есть предел). Это связано с наличием шумов, наводок, нестабильных контактов (для резистивных датчиков на основе потенциометра, см. неисправности датчика уровня воды или топлива в баке автомобиля).

Коды для работы с большинством датчиков довольно объёмны, поэтому я их приводить все не буду, их легко найти в сети по запросу «название датчик + Arduino».

Следующий датчик, который часто используют ардуинщики-роботостроители – это датчик линии. Он основан на фотоэлектронных приборах, типа фототранзисторов.

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

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

Дополню смежным датчиком – датчик расстояния от фирмы Sharp, тоже используется в робототехнике, а также в условиях контроля положения предметов в пространстве (с соответствующей ТХ погрешностью).

Работает на том же принципе. Библиотеки и примеры скетчей и проектов с ними в большом количестве есть на сайтах посвященных Arduino.

Пошаговое обучение программированию и созданию устройств на микроконтроллерах AVR: Программирование микроконтроллеров для начинающих

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

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

Цифровая схемотехника как таковая уменьшает необходимость отстройки и наладки схемы после сборки. Это даёт вам возможность на одном исходном коде собрать несколько одинаковых устройств, детали которых будут выдавать одинаковые сигналы, с резистивными датчиками такое случае редко.

Источник

Adblock
detector