Датчик растяжения ардуино

Содержание

Digitrode

цифровая электроника вычислительная техника встраиваемые системы

Датчик изгиба управляет сервомотором с помощью Arduino

Датчик изгиба является отличным средством преобразования прикладываемой физической силы в электрические сигналы. Он широко применяется в робототехнике и других подобных электротехнических проектах.

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

Датчик изгиба представляет собой гибкий резистор, который имеет два контакта. Когда вы его сгибаете, его сопротивление меняется. Его сопротивление минимально в расслабленном или прямом положении. И сопротивление оказывается максимальным при максимальном изгибе.

Здесь следует привести формулу удельного сопротивления: ρ = RA/l, где ρ = удельное сопротивление материала, R = сопротивление, A = Площадь материала, l = длина материала.

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

Запишите его сопротивление в нормальном состоянии, т.е. в прямом (угол изгиба = 0°).

Запишите его сопротивление при полном изгибе (угол изгиба = 180°).

Теперь пришло время подключить его к плате Arduino.

Поскольку датчик изгиба представляет собой переменный резистор, мы не можем подключить его напрямую к Arduino. Нам понадобится схема делителя напряжения. Первый резистор будет фиксированным. Значение резистора должно быть равно максимальному значению сопротивления датчика. Резистор фиксированного значения и датчик изгиба должны быть подключены последовательно. Резистор с фиксированным значением должен быть подключен к 5 В, тогда как датчик изгиба должен быть подключен к GND. Их разветвление должно быть подключено к выводу A0 платы.

Теперь подключим серводвигатель. Серводвигатель имеет три контакта – питание, заземление и сигнальный вывод. Питание и заземление необходимо подключить к контактам 5V и GND на плате соответственно. Сигнал может быть подключен к любому цифровому выводу.

Запишите значение аналогового входа, изогнув датчик от минимума до максимума. Серводвигателю нужен угол в градусах от 0° до 180°, но данные датчика могут иметь любое значение от 0 до 1024. Используйте приведенный ниже код, чтобы преобразовать значение датчика изгиба в пропорциональный угол серводвигателя.

Итак, теперь подключите все согласно полной схеме.

Загрузите в Arduino код проекта:

Теперь ваш двигатель должен вращаться пропорционально изгибу датчика. Это можно использовать для управления рукой робота или имитации жестов рук человека.

Источник

Digitrode

цифровая электроника вычислительная техника встраиваемые системы

Arduino и датчик изгиба

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

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

Запатентованная технология Flex-датчика основана на резистивных углеродных элементах. Благодаря тому, что это переменный печатный резистор, его можно сделать довольно длинным на тонкой гибкой подложке. Когда подложка согнута, на выходе датчика присутствует некоторое сопротивление, соответствующее с радиусу изгиба. Иными словами, гибкие датчики являются аналоговыми резисторами, которые работают в составе переменных аналоговых делителей напряжения. Обычно в конфигурации делителя напряжения и используется гибкий датчик, как это показано ниже.

Перед работой с датчиком следует учесть один момент. Хотя активная часть датчика (область между черными квадратами) достаточно прочная, ее выводы подвержена излому. Рекомендуется усилить или закрепить эту область (например, зажать или склеить датчик на черном квадрате, расположенном ближе к контактам), чтобы убедиться, что она не сгибается вместе с остальной частью датчика.

Для считывания данных с датчика подойдет обычная функция analogRead(). В данном проекте используются красный, зеленый и синий светодиоды, которые подключены к выводам Arduino под номерами 4, 3 и 2 соответственно. Они позволяют индицировать три уровня изгиба датчика. При отсутствии изгиба датчика светится только синий светодиод, тогда как небольшой изгиб зажигает зеленый светодиод. При большой степени изгиба загорается красный светодиод, а остальные два светодиода гаснут. Вывод с делителя напряжения подключается к линии A1 платы Arduino. Вся схема подключения показана на рисунке ниже.

Далее приведен код (скетч) для работы Arduino с датчиком изгиба.

Источник

Тензодатчики и НХ711. Руководство пользователя.

Общие сведения:

Тензодатчики (типа «мост» и типа «полу-мост») и микросхема HX711 — связка, которая позволит создавать устройства для измерения веса или давления, оказываемого на поверхность датчика, а затем передавать эти показания (с высокой точностью) на плату Arduino.

Видео:

Спецификация:

Спецификация HX711

  • Разрядность АЦП: 24 бит;
  • Коэффициент усиления:
    • Вход А: 64 или 128;
    • Вход В: 32;
  • Частота измерений: 10/80 Гц;
  • Напряжение питания: 5В;
  • Потребляемый ток: до 10 мА;
  • Размеры: 34мм х 21мм;

Спецификация тензодатчиков мостовых

  • Максимальный вес: 1/5/10/20 кг;
  • Отверстия под винты: M4/M5 (подходит под винт с потайной головкой);
  • Размеры: 14мм х 14мм х 80.5мм;

Спецификация тензодатчика полумостового

  • Максимальный вес: 50 кг;
  • Размеры: 34мм х 34мм х 9мм;

Подробнее о плате HX711:

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

Микросхема имеет 2 канала считывания показания счётчика: А и В:

  • Канал А имеет возможность выбора коэффициента усиления: 64 или 128.
  • Канал В имеет фиксированный коэффициент усиления, равный 32.

Это позволяет подключать к микросхеме HX711 до 2 независимых тензодатчиков! Однако, следует помнить, что чем выше коэффициент усиления, тем выше точность измерения показаний.

Подробнее о датчиках:

Тензорезистивные датчики предназначены для создания на их основе весов, датчиков давления или концевых датчиков.

В основе своей конструкции имеют тонкоплёночные резисторы, которые изменяют своё сопротивление при деформации.

Существует 2 версии данных датчиков:

  • 1 — те, в которых резисторы объединены в мост, подключённый непосредственно к АЦП, который фиксирует изменения значений резисторов. Датчики выполнены из алюминия, имеют форму бруска с 4 отверстиями на одной плоскости и особым сдвоенным отверстием на другой. При установке датчике в рабочее положение необходимо жёстко закрепить одну его сторону, а на вторую установить (при необходимости) платформу для завешивания грузов. Имеют на выходе из датчика 4 провода.

Схема устройства и подключения мостового датчика к микросхеме HX711:

Схема устройства и подключения полу-мостового датчика к микросхеме HX711:

Для 1 тензодатчика:

Для 4 тензодатчиков:

Обратите внимание на то, что если полученные значения имеют отрицательный знак, то вам следует поменять местами датчики, подключенные к выводам А+ и А —

Следует также отметить, что показания тензодатчиков зависят от температуры окружающей среды — при разных температурах показания могут отличаться. Помните это и используйте «тарирование» (обнуление значений датчика) каждый раз при резких перепадах температуры. Если же работа датчика предполагается в условиях перепада температур в известном диапазоне, то вы можете воспользоваться одним из датчиков температуры и создать таблицу зависимости калибровочного коэффициента ( calibration_factor ) от температуры.

Подключение:

Микросхема HX711

На плате есть два разъёма – P1 и P2, на которых имеются следующие обозначения:

Разъём P1

  • GND — земля;
  • VCC — питание 5В;
  • DT, SCK – информационные выводы;

Разъём P2

  • E– , E+ — питание тензорного моста;
  • A– , A+ — подключение канала А;
  • В– , В+ — подключение канала В;

Тензодатчик (мостовой)

У данного тензодатчика 4 выходных провода:

Провода тензодатчика Выводы микросхемы HX711
Красный провод E+
Чёрный провод E-
Зелёный провод A-
Белый провод A+

Тензодатчик (полумостовой)

У данного тензодатчика 3 выходных провода:

Провода тензодатчика Выводы микросхемы HX711
Красный провод E+
Чёрный провод E-
Белый провод A+
Провода тензодатчика Выводы микросхемы HX711
Зелёный провод A-

HX711

Данная плата подключается к Arduino по 4 проводам:

Выводы микросхемы HX711 Выводы Arduino
GND GND
VCC 5V
DT любой цифровой вывод (указывается в скетче)
SCK любой цифровой вывод (указывается в скетче)

Подключение HX711 к Arduino можно осуществить одним из 2 способов:

  1. Напрямую к плате Arduino/Piranha UNO:
  2. К одному из шилдов для подключения:

Питание:

Входное напряжение 5В, подаётся на выводы Vcc (V) и GND (G).

Источник

Подключение тензодатчика к плате Ардуино

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

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

Зачем все это необходимо

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

Пригодится аппарат и пасечникам — объединив весы с передатчиком Bluetooth или GSM-модемом можно контролировать «налет» веса пчел в различные периоды года. Достаточно знать чистую массу улья. Все что выше, как раз и будет воск, пчелы и мед.

Принцип работы тензодатчика

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

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

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

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

Для удобства монтажа преимущественно используют 4-х проводную схему подключения как более современную. При выборе тензодатчиков важно обращать внимание на метрологические характеристики. Для высокоточного весового оборудования используют класс точности не ниже C3. Чтобы быть уверенным в качестве продукции рекомендуем выбирать тензометрические датчики с гарантией. Для надёжной работы мы советуем купить тензодатчик Sierra.

На одной из граней обычно указан максимально допустимый вес нагрузки.

Характеристики оборудования, его настройка, примечания

Здесь начать стоит непосредственно с преобразователя аналогового сигнала в цифровой, а конкретно с платы-посредника между Arduino и тензодатчиками — HX711:

  • Частота обработки входящих сигналов: от 10 до 80 раз в секунду.
  • Питание: 2.5–5.5 В при 10 мА.
  • Минимальное напряжение на входе:

40мВ

  • Количество каналов: 2
  • Усиление по входящей линии A: 64, 128
  • Усиление по входящей линии B: 32
  • Разрядность исходящего канала: 24 бита.
  • Ширина на длину платы: 21×34 мм
  • Основное назначение устройства в конвертации объема поступающего тока в бинарный формат. Причем чувствительность аппарата непосредственно зависит от установленного режима усиления линии:

    Коэффициент Пиковый ток
    32 ± 80 мА
    64 ± 40 мА
    238 ± 20 мА

    В тех случаях, когда на вход АЦП поступает ток меньше нижней границы диапазона, на его выходе будет выдано 800000h, а если больше верхней — 7FFFFFh.

    К сожалению, есть у преобразователя HX711 определенные проблемы. К примеру, точность его работы сильно зависит от температуры окружающей среды. Дополнительно, даже в нормальном режиме, происходит изменение определяемых аналоговых значений. То есть, результирующие коды все время «бегают» в определенных, достаточно сильных пределах:

    Один из немногих дельных советов для таких случаев, выясненный при помощи интернет, — использовать для питания ровно 5 В в отношении датчиков и самого АЦП, а также снизить частоту определения до 10 Гц. Кроме того, пользователи названой платы применяют линейные фильтры на вводе и рекомендуют делать больший упор в конструкциях на канал B — он менее шумный. Также хорошим стабилизатором показаний будет опрос 10 значений и вывода среднего. Вариантом можно применить сборки на основе АЦП HX710A. Названый конвертер дополнительно оснащен сенсором температуры, корректирующим выходные данные.

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

    Arduino HX711
    5V VCC
    GND GND
    DT Цифровой вывод
    SCK Цифровой вывод

    Закончив с конвертером аналога в цифру для Ардуино, перейдем к характеристикам, которыми обладают сами тензодатчики:

    • Критичная измеряемая масса: 50 кг.
    • Размеры: 9×34×34 мм.

    На выходе полу мостового тензодатчика три провода, которыми он подключается к HX711. Классически они имеют следующее цветовое разделение:

    Контакт Цвет
    А+ Белый
    E- Черный
    E+ Красный
    • Предельный вес: 1–20 кг.
    • Габариты: 14×14×80.5 мм.

    У мостового детектора четыре исходящих контакта, имеющих следующую цветовую дифференциацию:

    Контакт Цвет
    А+ Белый
    E- Черный
    E+ Красный
    A- Зеленый

    На обоих видах резистивных детекторов присутствуют отверстия под крепежные болты M4/5.

    Схемы соединения и скетчи

    Сами тензодатчики подключаются по схеме в зависимости от их типа — полу-, или мостового, а также общего количества чувствительных элементов. На плате HX711 размещены два аналоговых входа, соответственно к АЦП можно присоединить или четыре половинчатых детектора или два полных.

    Соединение с единичным датчиком полумоста

    Соответственно скетч его калибрующий и опрашивающий:

    // Указываем соответствующие контакты, к которым присоединен сенсор
    #define pSCK 2
    #define pDT 3
    #include «HX711.h»
    HX711 HX711ctl; // создаем объект
    float CF = -0.6; // поправочный коэффициент подобранный к конкретным датчикам
    float UNC,GR; // Унции и граммы
    void setup() <
    Serial.begin(57600);
    HX711ctl.begin(pDT, pSCK); // инит детектора
    HX711ctl.set_scale(); // — //
    HX711ctl.tare(); // Очистка показаний детектора
    HX711ctl.set_scale(CF); // Настройка поправочного значения
    >
    void loop() <
    UNC = HX711ctl.get_units(10); // Делаем 10 проб и получаем усредненное значение
    GR = UNC * 0.035274; // Конвертация унция → грамм
    Serial.print(«Volume: «);
    Serial.print(GR);
    Serial.println(» Gr»);
    >

    Соединение с четырьмя полумостовыми тензодатчиками

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

    Соединение с одним мостовым тензодатчиком

    Опять же, и для представленной схемы скетч изменений не требует. Есть только у некоторых специалистов замечание, по вычислению и установке CF — переменной поправки:

    void setCF() <
    HX711ctl.set_scale(); // — //
    HX711ctl.tare(); // Очистка показаний датчика
    const WOS = 200; // вес платформы
    float CFM[10],CF=0,CR=0.035274;
    for (int j=0;j

    Соответственно изменится и остальной код:

    // Указываем соответствующие линии, к которым присоединен детектор
    #define pSCK 2
    #define pDT 3
    #include «HX711.h»
    HX711 HX711ctl;
    float UNC,GR; // Унции и граммы
    void setup() <
    Serial.begin(57600);
    HX711ctl.begin(pDT, pSCK); // инит детектора
    HX711ctl.set_scale(); // — //
    HX711ctl.tare(); // Очистка показаний датчика
    setCF(); // Настройка поправочного значения ← измененная часть
    >
    void loop() <
    UNC = HX711ctl.get_units(10); // Делаем 10 проб и получаем усредненное значение
    GR = UNC * 0.035274; // Конвертация унция → грамм
    Serial.print(«Volume: «);
    Serial.print(GR);
    Serial.println(» Gr»);
    >

    Библиотека HX711.h

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

    #define DT A0
    #define SCK A1
    #include «HX711.h»
    HX711 scale; // структура через которую будет идти обращение

    Название Параметры по порядку На выходе Описание
    begin() A1 — Вывод Ардуино, где DT,

    A3 — разрядность датчика 32(B), 64 или 128(A). По умолчанию 128

    Ничего Инициализация
    is_ready() Ничего True — готов, False — не готов Тест состояния АЦП
    set_gain() 32,64,128 Ничего Установка значения усиления
    read() Ничего Сырое значение АЦП Возвращает «чистый» ответ HX711 без поправочных сведений
    read_average() Сколько делать проб Возвращает среднюю цифру от выполненных проб (унция) Получить усредненные данные
    get_value() Сколько делать проб На выходе средняя масса (унция) без упаковки Получение поправленного значения без веса упаковки
    get_units() Сколько делать проб Усредненная поправленная масса (унция) Возвращает массу с учетом упаковки и поправочных значений.
    Tare() Сколько делать проб Масса упаковки (унция) Получение массы упаковки
    set_scale() Коэффициент Ничего Задание значения корректировки
    get_scale() Ничего Значение Получение текущего значения заданного set_scale()
    set_offset() Вес (унция) Ничего Ручная установка веса упаковки
    Get_offset() Ничего Масса (унция) Запрос установленного вручную параметра упаковки
    power_down() Ничего Ничего Перевести HX711 в состояние «сна»
    power_up() Ничего Ничего Вывод модуля АЦП из «сна»

    Проект электронных весов с управлением и экраном

    От простых схем, перейдем к более сложной и функциональной. Готовому решению по конструкции электронных весов с кнопками управления и жидкокристаллическим экраном. Понадобится:

    Наименование Количество
    Arduino UNO 1
    Экран 0.96 Oled Display с интерфейсом I2C 1
    Резисторы 10кОм 4
    Тактовые кнопки 4
    Плата HX711 1

    Подключение тензодатчиков к HX711 выполняется по одной из схем, описанных ранее, для остального применяют следующие соединения:

    Видео по теме

    Источник