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

Для того, чтобы научиться создавать сложные приводные системы с использованием датчика изгиба, для начала следует изучить азы подобного принципа управления. Поэтому в рамках данного проекта мы реализуем управление сервомотором с помощью датчика изгиба и Arduino.
Датчик изгиба представляет собой гибкий резистор, который имеет два контакта. Когда вы его сгибаете, его сопротивление меняется. Его сопротивление минимально в расслабленном или прямом положении. И сопротивление оказывается максимальным при максимальном изгибе.
Здесь следует привести формулу удельного сопротивления: ρ = RA/l, где ρ = удельное сопротивление материала, R = сопротивление, A = Площадь материала, l = длина материала.

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

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

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

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

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

Запишите значение аналогового входа, изогнув датчик от минимума до максимума. Серводвигателю нужен угол в градусах от 0° до 180°, но данные датчика могут иметь любое значение от 0 до 1024. Используйте приведенный ниже код, чтобы преобразовать значение датчика изгиба в пропорциональный угол серводвигателя.
int const min_flex_val= 159 // при прямом датчике
int const max_flex_val= 511 // при полностью согнутом датчике
float flex_value = analogRead(A0);
float y= ((flex_value - min_flex_val)/(max_flex_val-min_flex_val));
int angle=(y*180);
Итак, теперь подключите все согласно полной схеме.

Загрузите в Arduino код проекта:
#include <Servo.h>
Servo m;
void setup()
{
pinMode(13, OUTPUT);
pinMode(A0,INPUT);
m.attach(7);
Serial.begin(9600);
}
void loop()
{
float x=analogRead(A0);
float y= ((x-159)/352);
int angle=(y*180);
Serial.println(angle);
m.write(angle);
}
Теперь ваш двигатель должен вращаться пропорционально изгибу датчика. Это можно использовать для управления рукой робота или имитации жестов рук человека.
© digitrode.ru