Trong bài viết này, chúng ta sẽ tìm hiểu về cảm biến uốn cong, cách hoạt động của loại cảm biến này, cách giao tiếp cảm biến Flex Sensor với Arduino và cuối cùng là điều khiển các thiết bị như LED và động cơ servo với cảm biến Flex Sensor và Arduino.
Cảm biến Flex Sensor là gì?
Cảm biến Flex Sensor còn được gọi là cảm biến uốn cong (Bend sensor) là một thiết bị đo lượng uốn cong hoặc độ lệch góc. Thông thường, cảm biến Flex Sensor được tạo thành từ một bề mặt có điện trở thay đổi và lượng điện trở thay đổi bằng cách uốn cong cảm biến.
Cảm biến Flex Sensor được sử dụng trong bài hướng dẫn này được thấy trong hình dưới đây. Chiều rộng của cảm biến khoảng 0,6cm và chiều dài 8cm (bao gồm cả hai đầu nối).
Vì cảm biến uốn cong về cơ bản là một điện trở (có giá trị điện trở thay đổi tùy thuộc vào độ uốn cong của nó), nên nó có hai cực (hay đầu dây). Ở trạng thái bình thường (không bị uốn cong) cảm biến có giá trị điện trở khoảng 60KΩ.
Khi tôi uốn cong cảm biến như các bạn thấy ở hình ảnh bên dưới, điện trở của cảm biến tăng khi góc uốn cong tăng.
Với góc uốn cong khoảng 45o, điện trở của cảm biến flex sensor đã tăng lên 65kΩ và khi tôi tiếp tục uốn cong nó với góc 900, điện trở tiếp tục tăng lên 70kΩ. Nếu tôi tiếp tục uốn cong nó theo một góc 1800, điện trở của cảm biến uốn cong sẽ lên đến khoảng 75KΩ.
Các loại cảm biến Flex Sensor
Tùy thuộc vào loại vật liệu điện trở được sử dụng trên bề mặt của cảm biến, có thể có các loại cảm biến Flex Sensor khác nhau. Một số trong số đó là:
- Cảm biến Flex điện trở carbon
- Cảm biến Flex điện dung
- Cảm biến Flex sợi quang
- Cảm biến Flex mực dẫn điện
Cảm biến Flex loại điện trở carbon, đôi khi được gọi là cảm biến Velostat Flex Sensor, là loại cảm biến thường được sử dụng bởi những người tự chế và có sở thích thiết kế mạch.
Mạch cảm biến Flex sensor đơn giản
Vì cảm biến uốn cong cũng chính là một điện trở có giá trị thay đổi được nên bạn có thể dễ dàng đoán được mạch cảm biến Flex Sensor cơ bản có thể được thiết kế như thế nào. Nó là một mạch phân áp đơn giản.
Hình ảnh sau đây cho thấy mạch cảm biến uốn cong cơ bản bao gồm một bộ chia điện áp (được tạo bởi chính cảm biến uốn cong và điện trở 10KΩ) và một bộ khuếch đại thuật toán (Op-Amp).
Giao tiếp cảm biến Flex Sensor với Arduino
Bây giờ các bạn đã hiểu một chút về cảm biến uốn cong là gì và cách hoạt động của cảm biến, bây giờ chúng ta sẽ tiến hành giao tiếp cảm biến với board Arduino UNO.
Tôi sẽ thiết kế hai mạch ứng dụng đơn giản dùng flex sensor và Arduino, trong đó mạch đầu tiên chỉ là hướng dẫn kết nối cơ bản giữa cảm biến với Arduino.
Trong mạch thứ hai, sử dụng giao tiếp tương tự giữa cảm biến uốn cong và Arduino, tôi sẽ điều khiển động cơ servo TowerPro SG90. Chúng ta cùng bắt đầu các bạn nhé.
Linh kiện cần thiết
- Arduino UNO
- Cảm biến Flex Sensor
- Động cơ servo TowerPro SG90
- Điện trở 10kΩ
- LED
- Điện trở 1kΩ
- Breadboard
- Dây cắm breadboard
Hướng dẫn kết nối cảm biến với Arduino
Hình dưới đây cho thấy mạch đầu tiên trong số hai mạch mà tôi sẽ thực hiện. Đây là một mạch đơn giản cho thấy cách kết nối cảm biến với Arduino.
Như tôi đã đề cập trong phần mạch cảm biến flex sensor cơ bản rằng cảm biến này không có gì ngoài một điện trở thay đổi được giá trị và nó có thể được cấu hình theo kiểu mạch phân áp cùng với một điện trở khác để đo điện áp tương tự.
Một đầu của cảm biến uốn cong được kết nối đất trong khi đầu kia được kết nối với đầu vào chân Analog A0 của Arduino. Một điện trở 10kΩ được nối giữa A0 và + 5V. Kết nối này có nghĩa là cảm biến uốn cong và điện trở 10kΩ tạo thành một bộ chia điện áp.
Chỉ để hiển thị một số đầu ra, tôi đã kết nối một đèn LED (tất nhiên là cùng với điện trở giới hạn dòng điện) với chân I/O digital 7 của Arduino UNO.
Chương trình sau được sử dụng để đọc dữ liệu tương tự từ cảm biến và hiển thị nó trên serial monitor của Arduino. Ngoài ra, nếu giá trị điện trở của cảm biến vượt quá một giá trị nhất định thì đèn LED nối với chân số 7 của Arduino sẽ phát sáng.
Chương trình
const int flexPin = A0;
const int ledPin = 7;
void setup()
{
Serial.begin(9600);
pinMode(ledPin,OUTPUT);
}
void loop()
{
int flexValue;
flexValue = analogRead(flexPin);
Serial.print(“sensor: “);
Serial.println(flexValue);
if(flexValue>890)
digitalWrite(ledPin,HIGH);
else
digitalWrite(ledPin,LOW);
delay(20);
}
Điều khiển động cơ Servo
Trong mạch thứ hai, có thể được coi là phần mở rộng của mạch thứ nhất, tôi sẽ điều khiển động cơ Servo TowerPro SG90 bằng cách sử dụng dữ liệu thu được sau khi giao tiếp cảm biến Flex Sensor với Arduino.
Hình bên dưới cho thấy sơ đồ mạch điều khiển động cơ Servo sử dụng cảm biến và Arduino
Thiết kế mạch
Phần mạch cảm biến uốn cong cũng giống như mạch trước đó. Ngoài ra, động cơ servo (hay đúng hơn là chân điều khiển của nó – dây màu cam hoặc màu vàng) được kết nối với chân I/O digital 11 của Arduino UNO.
Chương trình để điều khiển động cơ servo sử dụng cảm biến Flex Sensor và Arduino được đưa ra bên dưới. Thông qua chương trình này, tùy thuộc vào độ uốn cong của cảm biến mà động cơ servo sẽ thay đổi góc của nó.
Chương trình
#include <Servo.h>
Servo myServo;
const int flexPin = A0;
void setup()
{
myServo.attach(11);
}
void loop()
{
int flexValue;
int servoPosition;
flexValue = analogRead(flexPin);
servoPosition = map(flexValue, 800, 900, 0, 180);
servoPosition = constrain(servoPosition, 0, 180);
myServo.write(servoPosition);
delay(20);
}
Ứng dụng của cảm biến uốn cong
Cảm biến uốn cong có thể được thực hiện với nhiều hình dạng và kích thước khác nhau. Chúng có thể được sử dụng trong các ứng dụng cần đo chính xác sự chuyển động hoặc góc của thiết bị.
Một số ứng dụng của cảm biến được đề cập dưới đây:
- Thiết bị đo lường độ dịch chuyển góc
- Làm cách tay robot
- Ô-tô
- Thiết bị y tế
- Điều khiển công nghiệp
- Thiết bị thực tế ảo VR (VR – Virtual Reality)
- Thiết bị ngoại vi máy tính
- Điều khiển chuyển động
- Vật lý trị liệu
- Nhạc cụ
- Thiết bị tập thể dục