Introduction: Mimicking the Motion of Flex Senser With a Servo
In this project, we will create a simple project that imitates the movement of a flexible sensor with a servo. It is an excellent project for beginners to learn about servos and flexible sensors.
Supplies
Parts
Tools
- Glue gun
- Soldering iron
- 3d printer
- soldering kit
- small gauge wire
- Wire stripper
Step 1: How the Flux Sensor Works
Flex sensors, also known as bend sensors, measure the degree of bending or deflection in an object. They operate by altering the sensor element's resistance when the surface is bent, with the resistance being directly proportional to the amount of bend.
Step 2: Modelling in Autodesk Fusion 360 and 3D Printing
My project was planned and designed using Fusion 360. The main body is designed to hold all of the electronics and servo motors. This device is powered by USB. All design files are attached below.
Step 3: Uploading Code to XIAO
I always like to upload the code to the microcontroller before assembly. Here we are using a tiny Xiao SAMD21 from the Seeedstudio
If you need to learn more about Xiao SAMD21 here is a use full video
Seeeduino XIAO - 32-bit Arduino-compatible Microcontroller
Code
// Include the servo library to add servo-control functions:
#include <Servo.h>
// Create a servo "object", called servo1. Each servo object
// controls one servo (you can have a maximum of 12):
Servo servo1;
// Define the analog input pin to measure flex sensor position:
const int flexpin = 0;
void setup()
{
// Use the serial monitor window to help debug our sketch:
Serial.begin(9600);
// Enable control of a servo on pin 9:
servo1.attach(9);
}
void loop()
{
int flexposition; // Input value from the analog pin.
int servoposition; // Output value to the servo.
// Read the position of the flex sensor (0 to 1023):
flexposition = analogRead(flexpin);
// Because the voltage divider circuit only returns a portion
// of the 0-1023 range of analogRead(), we'll map() that range
// to the servo's range of 0 to 180 degrees. The flex sensors
// we use are usually in the 600-900 range:
servoposition = map(flexposition, 600, 900, 90, 0);
servoposition = constrain(servoposition, 0, 90);
// Now we'll command the servo to move to that position:
servo1.write(servoposition);
// Because every flex sensor has a slightly different resistance,
// the 600-900 range may not exactly cover the flex sensor's
// output. To help tune our program, we'll use the serial port to
// print out our values to the serial monitor window:
Serial.print("sensor: ");
Serial.print(flexposition);
Serial.print(" servo: ");
Serial.println(servoposition);
// Note that all of the above lines are "print" except for the
// last line which is "println". This puts everything on the
// same line, then sends a final carriage return to move to
// the next line.
// After you upload the sketch, turn on the serial monitor
// (the magnifying-glass icon to the right of the icon bar).
// You'll be able to see the sensor values. Bend the flex sensor
// and note its minimum and maximum values. If you replace the
// 600 and 900 in the map() function above, you'll exactly match
// the flex sensor's range with the servo's range.
delay(20); // wait 20ms between servo updates
}
Step 4: Wiring Diagram
wiring
Step 5: Assembly and Wiring
Step 5.1
We need to cut the servo wires to the appropriate length. Then, proceed to solder the wires into the Xiao microcontroller.
Step 5.2
Please cut the soldering terminals of the flex sensor.
Step 5.3
Solder 10k resistor into the flex terminal and bend it to 180 degrees.Solder rest of the wires from the flex sensor
Step 5.4
Shoulder all the wires from the flex sensor into the Xiao
Step 5.5
Put the server into the 3d printed slot
Step 5.6
Push the into the 3D print. Also, make sure to align the USB-C port. Xiao will snap in place
Step 5.7
Place the flex sensor into the side wall of the 3d print with the flex sensor guard. And glow the sensor guard with a glue gun.
Step 5.8
Put the top cap on top the 3d print and glue it
Step 5.9
Screw the mimic arm into the servo with the screw that is included in the package of the servo.
We just completed the assembly
Step 6: Test
Power it up with usb power source
Now try to move the flex sensor left and right the servo will mimic this motion