กลับไปหน้ารวมไฟล์
interfacing-arduino-with-flex-sensor-and-servo-motor-2cd595.md

การเชื่อมต่อ Flex Sensor กับ Arduino และ Servo Motor

สำหรับคำอธิบายโดยละเอียด รับชมวิดีโอนี้

เกี่ยวกับ Flex Sensor

Flex sensor คือตัวต้านทานแบบยืดหยุ่น มีสองขา เมื่อใดก็ตามที่คุณงอ Flex sensor ค่าความต้านทานของมันจะเปลี่ยนไป ค่าความต้านทานของมันจะต่ำสุดเมื่อมันคลายตัวหรือเหยียดตรง และค่าความต้านทานจะสูงสุดเมื่องอ

มันเป็นไปตามหลักความต้านทานไฟฟ้า

ρ = RA/l

โดยที่ ρ = ความต้านทานไฟฟ้าของวัสดุ

R = Resistance

A = พื้นที่ของวัสดุ

l = ความยาวของวัสดุ

Flex Sensor

การวัดค่า Resistance ของ Sensor

เชื่อมต่อ Flex sensor เข้ากับมัลติมิเตอร์ และตั้งค่ามัลติมิเตอร์ไปที่โหมด Resistance

Flex Sensor เชื่อมต่อกับ Multimeter

จดค่า Resistance ของมันเมื่ออยู่ในสภาวะปกติ คือ เหยียดตรง (มุมงอ = 0°)

การวัดค่า Resistance เมื่อเหยียดตรง

จดค่า Resistance ของมันเมื่องอเต็มที่ (มุมงอ = 180°)

การวัดค่า Resistance เมื่องอ

ถึงเวลาเชื่อมต่อมันเข้ากับบอร์ด Arduino แล้ว

การเชื่อมต่อ Flex Sensor กับ Arduino

การเชื่อมต่อกับ Arduino

เนื่องจาก Flex sensor เป็น Variable Resistor เราจึงไม่สามารถเชื่อมต่อโดยตรงกับ Arduino ได้ เราต้องการวงจร Voltage Divider Resistor ตัวแรกจะเป็นแบบ Fixed Resistor โดยค่าของ Resistor นี้จะต้องเท่ากับค่า Max Resistance ของ Flex sensor Fixed Resistor และ Flex sensor จะต้องเชื่อมต่อแบบอนุกรม Fixed Resistor ต้องเชื่อมต่อกับ 5V ในขณะที่ Flex sensor ต้องเชื่อมต่อกับ GND จุดเชื่อมต่อของทั้งสองจะต้องเชื่อมต่อกับ Pin A0 ของบอร์ด

การเชื่อมต่อ Servo Motor

การเชื่อมต่อกับ Servo Motor

Servo Motor มีสามขาได้แก่ Power, Ground และ Signal ขา Power และ Ground จะต้องเชื่อมต่อกับ Pin 5V และ GND ของบอร์ดตามลำดับ ขา Signal สามารถเชื่อมต่อกับ Digital Pin ใดก็ได้

บันทึกค่า Analog Input โดยการงอ Sensor ตั้งแต่ค่าต่ำสุดไปจนถึงสูงสุด

Servo Motor ต้องการค่ามุมเป็นองศาตั้งแต่ ถึง 180° แต่ข้อมูล Sensor สามารถเป็นค่าใดก็ได้ตั้งแต่ 0 ถึง 1024

ใช้โค้ดด้านล่างเพื่อแปลงค่า Flex sensor ให้เป็นค่ามุม Servo Motor ที่เป็นสัดส่วนกัน

int const min_flex_val= 159 // analog input value for straight sensor
int const max_flex_val= 511 // analog input value for totally bended sensor
float flex_value = analogRead(A0);
float y= ((flex_value - min_flex_val)/(max_flex_val-min_flex_val));
int angle=(y*180); //angle value will be in the range 0 to 180

เมื่อทำตามขั้นตอนข้างต้น มอเตอร์ของคุณควรหมุนตามสัดส่วนการงอของ Sensor

สิ่งนี้สามารถนำไปใช้ในการควบคุมมือของหุ่นยนต์ หรือเลียนแบบท่าทางมือของมนุษย์ได้

รายละเอียดทางเทคนิคเพิ่มเติม

อินเทอร์เฟซจลนศาสตร์ชีวกลศาสตร์

โปรเจกต์นี้เลียนแบบการเคลื่อนไหวของนิ้วหรือแขนขาของมนุษย์ โดยการแมปการงอทางกายภาพของ Flex sensor ไปยังตำแหน่งเชิงมุมของ Servo Motor

  • การรับค่าด้วย Resistive Voltage-Divider: ค่า Resistance ของ Flex sensor จะเปลี่ยนไปเมื่อมันงอ Arduino จะรับค่านี้ผ่าน 10-bit ADC โดยการแมปสัญญาณ Analog 0-5V ให้เป็น "Bend Factor" แบบ Discrete
  • การแมป Actuator แบบเป็นสัดส่วน: เฟิร์มแวร์ใช้ฟังก์ชัน map() เพื่อแปลงค่าช่วง Raw ของ Sensor (โดยทั่วไปคือ 20k - 100k ohms) ให้เป็นการกวาด Servo 0-180 องศา

ความแม่นยำ

  • การหาค่าเฉลี่ยสัญญาณรบกวน ADC: มีฟิลเตอร์ "Running Average" ในซอฟต์แวร์ การหาค่าเฉลี่ย 5 ค่าล่าสุดจะช่วยให้ Arduino ป้องกันไม่ให้ Servo "Jittering" อันเนื่องมาจากสัญญาณรบกวนทางไฟฟ้าที่มีอยู่ใน Resistive Sensor

ข้อมูล Frontmatter ดั้งเดิม

title: "Interfacing Arduino With Flex Sensor and Servo Motor"
description: "Getting Started with flex sensor and connecting it with arduino. Actuating servo motor as per the bending of flex sensor."
author: "RoboticsEveryDay"
category: ""
tags:
  - "tinkercad simulations"
  - "flex sensor"
  - "servo motor"
views: 12107
likes: 1
price: 1499
difficulty: "Easy"
components:
  - "1x Jumper wires (generic)"
  - "1x Flex Sensor"
  - "1x Arduino UNO"
  - "1x Resistor 163K Ω"
tools: []
apps:
  - "1x Arduino IDE"
downloadableFiles: []
documentationLinks: []
passwordHash: "515bc8e095bf9ae592d939b08dac8daf7bfb79001f6db4a0684ef2a52c54181b"
encryptedPayload: "U2FsdGVkX1/k184nQY+MXqh4S+rxoiPBmGn4tJYCacvhTkj2+sXiILROUzYadaXgqdD5lyO76ztu+JWtwt3pFtahnk1PqHF8+GzQtsUUtMY="
seoDescription: "Interface a Flex Sensor with Arduino to control a Servo Motor based on bending. Ideal for robotics and wearable DIY projects."
videoLinks:
  - "https://www.youtube.com/embed/OZwxh_u1geE"
heroImage: "https://cdn.jsdelivr.net/gh/bigboxthailand/arduino-assets@main/images/projects/interfacing-arduino-with-flex-sensor-and-servo-motor-2cd595_cover.jpg"
lang: "th"