- Датчик силы или резистор, чувствительный к силе
- Необходимые компоненты
- Принципиальная схема и объяснение работы
В этом проекте мы будем разрабатывать забавную схему с использованием датчика силы и Arduino Uno. Эта схема генерирует звук, линейно связанный с силой, приложенной к датчику. Для этого мы собираемся соединить датчик FORCE с Arduino Uno. В UNO мы собираемся использовать 8-битный АЦП (аналого-цифровое преобразование) для выполнения этой работы.
Датчик силы или резистор, чувствительный к силе
Датчик FORCE - это преобразователь, который изменяет свое сопротивление при приложении давления к поверхности. Датчик FORCE доступен в различных размерах и формах. Мы собираемся использовать одну из более дешевых версий, потому что здесь нам не нужна большая точность. FSR400 - один из самых дешевых датчиков силы на рынке. Изображение FSR400 показано на рисунке ниже. Их также называют чувствительными к силе резисторами или FSR, поскольку их сопротивление изменяется в зависимости от приложенной к нему силы или давления. Когда к этому резистору, чувствительному к силе, прикладывается давление, его сопротивление уменьшается, то есть сопротивление обратно пропорционально приложенной силе. Поэтому, когда на него не оказывается давление, сопротивление FSR будет очень высоким.
Теперь важно отметить, что FSR 400 чувствителен по длине, сила или вес должны быть сконцентрированы на лабиринте посередине глаза датчика, как показано на рисунке. Если сила приложена в неправильное время, устройство может выйти из строя.
Еще одна важная вещь, которую следует знать, датчик может управлять токами высокого диапазона. Поэтому при установке помните о управляющих токах. Также датчик имеет ограничение по силе, равное 10 Ньютонам. Таким образом, мы можем использовать только 1 кг веса. При применении веса более 1 кг датчик может показывать некоторые отклонения. Если он увеличился более чем на 3 кг. датчик может необратимо повредиться.
Как говорилось ранее, этот датчик используется для определения изменений давления. Таким образом, когда груз прикладывается к датчику FORCE, сопротивление резко изменяется. Сопротивление FS400 избыточному весу показано на графике ниже.
Как показано на рисунке выше, сопротивление между двумя контактами датчика уменьшается с весом или проводимость между двумя контактами датчика увеличивается. Сопротивление чистого проводника определяется как:
Где, p- Удельное сопротивление проводника
l = длина проводника
A = Площадь проводника.
Теперь рассмотрим проводник с сопротивлением «R». Если немного надавить на проводник, площадь на проводе уменьшается, а длина проводника увеличивается в результате давления. Таким образом, по формуле сопротивление проводника должно увеличиваться, поскольку сопротивление R обратно пропорционально площади, а также прямо пропорционально длине l.
Таким образом, при этом для проводника под давлением или весом сопротивление проводника увеличивается. Но это изменение невелико по сравнению с общим сопротивлением. Для значительного изменения многие проводники сложены вместе. Вот что происходит внутри датчиков силы, показанных на рисунке выше. Присмотревшись, можно увидеть множество линий внутри датчика. Каждая из этих линий представляет собой проводник. Чувствительность датчика указывается номерами проводов.
Но в этом случае сопротивление будет уменьшаться с давлением, потому что используемый здесь материал не является чистым проводником. FSR - это устройства из прочной толстопленочной полимерной пленки (PTF). Итак, это устройства не из чистого проводящего материала. Они состоят из материала, сопротивление которого уменьшается с увеличением силы, приложенной к поверхности датчика. Этот материал показывает характеристики, как показано на графике FSR.
Это изменение сопротивления не принесет никакой пользы, если мы не сможем их прочитать. Контроллер под рукой может только считывать шансы напряжения и не меньше, для этого мы собираемся использовать схему делителя напряжения, с помощью которой мы можем получить изменение сопротивления при изменении напряжения.
Делитель напряжения представляет собой резистивную схему и показан на рисунке. В этой резистивной сети мы имеем одно постоянное сопротивление и другое переменное сопротивление. Как показано на рисунке, R1 здесь - постоянное сопротивление, а R2 - датчик FORCE, который действует как сопротивление. Измеряется середина ветви. С изменением R2 у нас есть изменения в Vout. Таким образом, у нас есть изменение напряжения с весом.
Теперь важно отметить, что входной сигнал, принимаемый контроллером для преобразования АЦП, составляет всего 50 мкА. Этот эффект нагрузки резистивного делителя напряжения важен, так как ток, потребляемый из Vout делителя напряжения, увеличивает процент ошибки, а пока нам не нужно беспокоиться об эффекте нагрузки.
Как проверить датчик FSR
Резистор измерения силы можно проверить с помощью мультиметра. Подключите два контакта датчика FSR к мультиметру, не прилагая усилий, и проверьте значение сопротивления, оно будет очень высоким. Затем приложите к его поверхности некоторую силу и посмотрите, как уменьшается значение сопротивления.
Применение датчика FSR
Чувствительные к силе резисторы в основном используются для создания "кнопок", чувствительных к давлению. Они используются в различных областях, таких как датчики присутствия в автомобиле, резистивные сенсорные панели, кончики пальцев роботов, протезы, клавиатуры, системы пронации стопы, музыкальные инструменты, встроенная электроника, испытательное и измерительное оборудование, комплекты для разработки OEM и портативная электроника, спорт.. Они также используются в системах дополненной реальности, а также для улучшения мобильного взаимодействия.
Необходимые компоненты
Аппаратное обеспечение: Arduino Uno, источник питания (5 В), конденсатор 1000 мкФ, конденсатор 100 нФ (3 штуки), резистор 100 кОм, зуммер, резистор 220 Ом, датчик силы FSR400.
ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ: Atmel studio 6.2 или Aurdino nightly
Принципиальная схема и объяснение работы
Схема подключения резистора, чувствительного к силе, и Arduino показана на схеме ниже.
Напряжение на датчике не является полностью линейным; это будет шумно. Для фильтрации шума на каждом резисторе в схеме делителя установлены конденсаторы, как показано на рисунке.
Здесь мы собираемся взять напряжение, обеспечиваемое делителем (напряжение, которое линейно представляет вес), и подать его в один из каналов АЦП UNO. После преобразования мы возьмем это цифровое значение (представляющее вес) и свяжем его со значением ШИМ для управления зуммером.
Итак, с весом у нас есть значение ШИМ, которое меняет свой коэффициент заполнения в зависимости от цифрового значения. Чем выше цифровое значение, тем выше коэффициент заполнения ШИМ, поэтому выше шум, создаваемый зуммером. Итак, мы связали вес со звуком.
Прежде чем идти дальше, давайте поговорим об АЦП Arduino Uno. ARDUINO имеет шесть каналов АЦП, как показано на рисунке. В них любой из них или все они могут использоваться как входы для аналогового напряжения. АЦП UNO имеет разрешение 10 бит (целочисленные значения от (0- (2 ^ 10) 1023)). Это означает, что он будет отображать входные напряжения от 0 до 5 вольт в целые значения от 0 до 1023. Таким образом, для каждого (5/1024 = 4,9 мВ) на единицу.
Здесь мы собираемся использовать A0 из UNO.
Нам нужно знать несколько вещей.
|
В первую очередь каналы UNO АЦП имеет опорное значение по умолчанию 5V. Это означает, что мы можем дать максимальное входное напряжение 5 В для преобразования АЦП на любом входном канале. Поскольку некоторые датчики обеспечивают напряжение от 0-2.5V, со ссылкой 5V мы получаем меньшую точность, поэтому у нас есть инструкция, которая позволяет нам изменить это значение ссылки. Итак, для изменения ссылочного значения у нас есть («analogReference ();»). А пока мы оставим его как.
По умолчанию мы получаем максимальное разрешение АЦП платы, равное 10 битам, это разрешение можно изменить с помощью инструкции («analogReadResolution (бит);»). В некоторых случаях это изменение разрешения может пригодиться. А пока оставим это как.
Теперь, если вышеуказанные условия установлены по умолчанию, мы можем прочитать значение из АЦП канала «0», напрямую вызвав функцию «analogRead (pin);», здесь «pin» представляет контакт, к которому мы подключили аналоговый сигнал, в данном случае это будет «A0». Значение от ADC можно принять в виде целого числа как «int SENSORVALUE = analogRead (A0); », По этой инструкции значение после АЦП сохраняется в целочисленном« SENSORVALUE ».
ШИМ Arduino Uno может быть реализован на любом из выводов, обозначенных на плате как «~». В UNO шесть каналов ШИМ. Мы собираемся использовать PIN3 для наших целей.
analogWrite (3, ЗНАЧЕНИЕ); |
Из вышеуказанного условия мы можем напрямую получить сигнал ШИМ на соответствующем выводе. Первый параметр в скобках предназначен для выбора номера вывода сигнала ШИМ. Второй параметр предназначен для записи коэффициента заполнения.
Значение PWM UNO может быть изменено от 0 до 255. При минимальном значении «0» на «255». При 255 в качестве коэффициента заполнения мы получим 5В на контакте 3. Если коэффициент заполнения равен 125, мы получим 2,5 В на контакте 3.
Теперь у нас есть значение 0-1024 как выход АЦП и 0-255 как коэффициент заполнения ШИМ. Таким образом, АЦП примерно в четыре раза больше ШИМ. Таким образом, разделив результат АЦП на 4, мы получим приблизительный коэффициент заполнения.
При этом у нас будет сигнал ШИМ, коэффициент заполнения которого изменяется линейно с весом. Учитывая это на зуммер, у нас есть звуковой генератор в зависимости от веса.