Posted on Leave a comment

การปิด Auto Focus ของกล้อง ELP Camera ผ่านโปรแกรม AMCAP

การปิด Auto Focus ของกล้อง ELP ผ่านโปรแกรม AMCAP

สำหรับกล้อง ELP รุ่นที่ใช้เลนส์ Auto Focus (AF Lens) สามารถปิดการทำงานของระบบโฟกัสอัตโนมัติและปรับโฟกัสแบบ Manual ได้ผ่านโปรแกรม AMCAP ตามขั้นตอนดังนี้

  1. เปิดโปรแกรม AMCAP
  2. ไปที่เมนู Options → Video Capture Filter
  3. เลือกแท็บ Camera Control
  4. ที่รายการ Focus ให้ ยกเลิกเครื่องหมายถูก (✓) ในช่อง Auto
  5. หลังจากปิด Auto แล้ว จะสามารถเลื่อนแถบ Focus เพื่อปรับระยะโฟกัสด้วยตนเอง (Manual Focus) ได้
  6. หากต้องการควบคุมความสว่างด้วยตนเองเพิ่มเติม สามารถยกเลิกเครื่องหมายถูกในช่อง Auto ของ Exposure แล้วปรับค่า Exposure เองได้

หมายเหตุ

  • เมื่อเปิด Auto Focus กล้องจะปรับโฟกัสเองตลอดเวลา ซึ่งอาจทำให้ภาพสั่นหรือโฟกัสเปลี่ยนเมื่อมีวัตถุเคลื่อนที่ในภาพ
  • สำหรับงาน Machine Vision, OCR, Barcode, AOI หรือการตรวจสอบชิ้นงานในตำแหน่งคงที่ แนะนำให้ ปิด Auto Focus และตั้งค่า Focus แบบ Manual เพื่อให้ได้ภาพที่คมชัดและมีความเสถียรมากที่สุด
  • กล้อง ELP บางรุ่นอาจไม่รองรับการปรับ Focus ผ่าน UVC Driver ของ Windows ทำให้ตัวเลือก Focus หรือ Auto Focus ไม่ปรากฏใน AMCAP

ภาพตัวอย่าง: ในภาพที่แสดง ลูกศรชี้ไปที่ช่อง Auto ของ Focus และ Exposure ซึ่งหากเอาเครื่องหมายถูกออก จะเป็นการปิดการทำงานแบบอัตโนมัติและเปลี่ยนเป็นการปรับค่าด้วยตนเอง (Manual Control) แทน.

Posted on

ทำไม BLDC Motors ถึงหมุน?

ข้อดีของมอเตอร์ Brushless DC (BLDC) เมื่อเทียบกับมอเตอร์ DC แบบแปรงถ่าน

มอเตอร์กระแสตรงไร้แปรงถ่าน (BLDC) เป็นมอเตอร์ที่ให้ ประสิทธิภาพสูง ควบคุมได้แม่นยำ และเหมาะกับงานสมัยใหม่ มากกว่ามอเตอร์ DC แบบแปรงถ่าน โดยมีข้อดีหลักดังนี้

  • ประสิทธิภาพสูงกว่า
    ไม่มีการสูญเสียพลังงานจากการเสียดสีของแปรงถ่าน ทำให้แปลงพลังงานไฟฟ้าเป็นพลังงานกลได้ดีกว่า

  • ให้แรงบิดสูงอย่างสม่ำเสมอในช่วงการทำงาน
    มอเตอร์ BLDC สามารถรักษาแรงบิดสูงได้ต่อเนื่องตลอดช่วงความเร็ว
    ในขณะที่มอเตอร์ DC แบบแปรงถ่านให้แรงบิดสูงสุดเฉพาะบางจุดของการหมุนเท่านั้น
    ผลลัพธ์คือ มอเตอร์ BLDC ขนาดเล็กสามารถให้กำลังได้สูงกว่าที่คาด

  • ควบคุมแรงบิดและความเร็วได้อย่างแม่นยำ
    สามารถใช้งานร่วมกับระบบป้อนกลับ (Feedback) เช่น Hall Sensor หรือ Encoder
    เพื่อควบคุมแรงบิดและความเร็วให้ตรงตามที่ต้องการได้อย่างแม่นยำ

  • ใช้พลังงานอย่างมีประสิทธิภาพ และเกิดความร้อนต่ำ
    การควบคุมที่แม่นยำช่วยลดการสูญเสียพลังงาน ลดความร้อนสะสม และเพิ่มอายุการใช้งานของมอเตอร์

  • เหมาะกับระบบใช้แบตเตอรี่
    เนื่องจากกินไฟน้อยกว่าและมีประสิทธิภาพสูง
    ทำให้ อายุการใช้งานแบตเตอรี่ยาวนานขึ้นอย่างชัดเจน

  • สัญญาณรบกวนทางไฟฟ้าต่ำ และไม่มีประกายไฟ
    ไม่มีแปรงถ่าน จึงไม่เกิดประกายไฟจากการสัมผัส
    ลด EMI และเหมาะกับงานอิเล็กทรอนิกส์หรืออุปกรณ์ความแม่นยำสูง

  • บำรุงรักษาน้อย อายุการใช้งานยาว
    ไม่มีชิ้นส่วนที่สึกหรอง่ายอย่างแปรงถ่าน
    เหมาะกับงานที่ต้องทำงานต่อเนื่องหรือเข้าถึงซ่อมยาก

  • ใช้งานแพร่หลายในหลายอุตสาหกรรม
    เช่น ออโตเมชัน หุ่นยนต์ ยานยนต์ไฟฟ้า เครื่องมือแพทย์ พัดลมอุตสาหกรรม และระบบขับเคลื่อนต่าง ๆ


ทำไมมอเตอร์ BLDC ถึงหมุนได้โดยไม่มีแปรงถ่าน?

เนื่องจาก โรเตอร์เป็นแม่เหล็กถาวร
จึงไม่จำเป็นต้องใช้แปรงถ่านในการส่งกระแสไฟฟ้าเหมือนมอเตอร์ DC แบบดั้งเดิม

การจ่ายกระแสไฟฟ้าไปยังขดลวดสเตเตอร์จะถูก ควบคุมจากภายนอกโดยไดรเวอร์อิเล็กทรอนิกส์
ซึ่งทำหน้าที่สลับเฟสกระแสอย่างแม่นยำ ทำให้เกิดสนามแม่เหล็กหมุนและขับให้โรเตอร์หมุนตาม

แนวคิดนี้ช่วยให้:

  • ควบคุมการหมุนได้ละเอียดกว่า
  • ลดการสูญเสียทางกล
  • เพิ่มประสิทธิภาพและความทนทานของระบบโดยรวม

สรุป:

มอเตอร์ BLDC จึงเป็นตัวเลือกที่เหมาะสำหรับงานที่ต้องการ ความแม่นยำ, ประสิทธิภาพสูง, และการทำงานต่อเนื่อง เช่น ยานยนต์ไฟฟ้า, หุ่นยนต์, เครื่องใช้ไฟฟ้า และโดรน ซึ่งเหนือกว่ามอเตอร์ DC แบบแปรงที่เหมาะกับงานง่าย ๆ และต้นทุนต่ำกว่า

อ้างอิงข้อมูลเชิงเทคนิคจาก Renesas
(Engineer School – Brushless DC Motor Overview)

https://www.renesas.com/us/en/support/engineer-school/brushless-dc-motor-01-overview

Posted on

SLAM (Simultaneous Localization and Mapping)

SLAM (Simultaneous Localization and Mapping)
คือเทคโนโลยีที่ทำให้ หุ่นยนต์สามารถสร้างแผนที่ของพื้นที่ (Mapping) และ รู้ตำแหน่งของตัวเองบนแผนที่นั้น (Localization) ได้ พร้อมกันแบบ Real-time โดยไม่ต้องมีแผนที่ล่วงหน้า

ทำงานอย่างไร:

  • ใช้เซ็นเซอร์ เช่น Lidar, กล้อง หรือ IMU → ตรวจจับสิ่งรอบตัว
  • ประมวลผลข้อมูล → สร้างแผนที่พื้นที่ที่หุ่นยนต์กำลังเคลื่อนที่อยู่
  • คำนวณตำแหน่งปัจจุบันของตัวเองบนแผนที่นั้น
  • นำผลที่ได้ไปใช้ในการวางแผนเส้นทาง (Navigation) และหลบหลีกสิ่งกีดขวาง (Obstacle Avoidance)

ข้อดีของระบบ SLAM

  • พาหุ่นยนต์เดินได้เองในที่ที่ไม่เคยไป ไม่ต้องติดแท็กหรือ Marker ใดๆ
  • ใช้ได้ทั้งภายในอาคารและพื้นที่ซับซ้อน
  • เคลื่อนที่ได้แม่นยำ ลดการชน ลดการหลงทาง
  • เป็นหัวใจของ AGV, AMR, Robot Delivery, หุ่นยนต์ทำความสะอาด ฯลฯ

สรุป

SLAM คือสมองที่ช่วยให้หุ่นยนต์ “สร้างแผนที่” และ “รู้ตำแหน่งของตัวเอง” เพื่อเดินนำทางได้แบบอัตโนมัติ ไม่ต้องมีคนบังคับ

Posted on

IMU (Inertial Measurement Unit)

IMU (Inertial Measurement Unit) คือ เซ็นเซอร์วัดการเคลื่อนที่ที่ประกอบด้วยชุดตรวจจับ 3 แกนหลัก ได้แก่

  • Gyroscope Sensor → วัดการหมุน (Angular Rate / องศาการหมุน)
  • Accelerometer Sensor → วัดความเร่ง/ทิศทางการเคลื่อนที่
  • Magnetometer Sensor → วัดทิศทางสนามแม่เหล็กโลก (ใช้สำหรับบอกทิศทาง/Heading)

เมื่อรวมกันทั้ง 3 ส่วน จะกลายเป็น IMU 9-axis (9 แกน) ซึ่งสามารถระบุตำแหน่งเชิงมุม (Orientation), การเคลื่อนที่ (Motion), และทิศทาง (Heading) ของวัตถุได้อย่างแม่นยำ นิยมใช้ในหุ่นยนต์, โดรน, รถอัตโนมัติ, AR/VR, โทรศัพท์มือถือ และระบบนำทางต่างๆ

Posted on

Node-RED เบื้องต้น

🔧 Node-RED คืออะไร?

Node-RED คือเครื่องมือแบบ Visual Programming (ลากเส้นต่อกล่อง) สำหรับการทำงานกับ IoT, Automation, API และอื่นๆ โดยเขียนด้วย Node.js ใช้งานผ่านเว็บเบราว์เซอร์


🚀 เริ่มต้นใช้งาน Node-RED

1. ติดตั้ง Node.js

Node-RED ต้องการ Node.js ในระบบก่อน:

  • ไปที่ https://nodejs.org และดาวน์โหลดเวอร์ชัน LTS
  • ติดตั้งตามปกติ

2. ติดตั้ง Node-RED

เปิด Terminal หรือ Command Prompt แล้วพิมพ์:

bash
npm install -g --unsafe-perm node-red

3. เปิด Node-RED

ใน Terminal พิมพ์:

bash
node-red

จะเห็นข้อความประมาณว่า:

arduino
Server now running at http://127.0.0.1:1880/

เปิดเว็บเบราว์เซอร์ไปที่ http://localhost:1880


🧱 หน้าตา Node-RED

ส่วนประกอบหลัก:

  1. Nodes (กล่อง): ฟังก์ชันต่างๆ เช่น input, output, logic
  2. Flow (ผังงาน): หน้ากระดานที่เราลากกล่องมาต่อกัน
  3. Deploy: ปุ่มสำหรับบันทึกและเริ่มใช้งาน flow

✨ ตัวอย่างแรก: เปิด-ปิดไฟด้วย Switch

ลาก Node ตามนี้:

  1. [inject] ➡️ [debug]

  2. ดับเบิ้ลคลิก inject แล้วตั้งค่าดังนี้:

    • Payload: string

    • ค่า: "เปิดไฟ"

  3. ดับเบิ้ลคลิก debug แล้วเลือกแสดง msg.payload

กดปุ่ม Inject ➡️ ดูค่าที่แสดงใน debug ด้านขวา

Tip: ลาก Node switch, function, mqtt, http มาใช้ต่อได้ เช่น เชื่อมกับไฟ LED หรือ API


📦 ตัวอย่าง Nodes ยอดนิยม

Node ใช้งานสำหรับ
inject ส่งค่าเริ่มต้นเข้า flow
debug แสดงค่าที่ปลายทาง
function เขียน JavaScript เพิ่มเติม
mqtt เชื่อมต่อกับ IoT
http ส่งหรือรับ API
rpi gpio ควบคุม Raspberry Pi GPIO

✅ ตัวอย่าง

  • Node-RED เชื่อมกับเซนเซอร์
  • Node-RED อ่านค่าจาก MQTT
  • Node-RED สั่ง Relay
  • Node-RED เชื่อมกับ PLC หรือ SCADA

Node-RED เชื่อมกับเซนเซอร์

🧩 แนวทางการเชื่อม Node-RED กับเซนเซอร์

📍 1. เซนเซอร์ต่อกับ Arduino / ESP32 / NodeMCU

เช่น:

  • Arduino อ่านค่าจากเซนเซอร์
  • ส่งค่าผ่าน Serial / MQTT / HTTP ไปยัง Node-RED

✅ ตัวอย่าง 1: Arduino + DHT11 ส่งค่าอุณหภูมิผ่าน Serial มา Node-RED

🔌 อุปกรณ์:

  • Arduino UNO
  • เซนเซอร์ DHT11
  • สาย USB ต่อกับคอม

🔧 Sketch ใน Arduino:

#include <DHT.h>
DHT dht(2, DHT11); // ต่อที่ขา D2

void setup() {
  Serial.begin(9600);
  dht.begin();
}

void loop() {
  float t = dht.readTemperature();
  float h = dht.readHumidity();

  if (!isnan(t) && !isnan(h)) {
    Serial.print("T:");
    Serial.print(t);
    Serial.print(",H:");
    Serial.println(h);
  }

  delay(2000);
}

🌐 Node-RED ตั้งค่า:

1.เพิ่ม Node serial in

  • พอร์ต: COMx (ตามที่ Arduino ต่อ)
  • Baudrate: 9600

2.ต่อกับ Node function (แปลงข้อมูล):

let data = msg.payload.trim(); // ตัวอย่าง: "T:25.4,H:60.2"
let parts = data.split(',');
let t = parseFloat(parts[0].split(':')[1]);
let h = parseFloat(parts[1].split(':')[1]);
msg.payload = { temperature: t, humidity: h };
return msg;

3. ต่อกับ Node debug หรือ ui_gauge หากทำ Dashboard

📍 2. เซนเซอร์ต่อกับ Raspberry Pi

  • ใช้ Node rpi-gpio in/out ใน Node-RED ควบคุมหรืออ่านค่า GPIO ได้เลย
  • ใช้ Python script หรือ Bash แล้วส่งค่าผ่าน MQTT หรือ exec

📍 3. ใช้โปรโตคอล MQTT (นิยมมาก)

  • ใช้ Node mqtt in เพื่อรับค่าจากเซนเซอร์ที่ publish มาผ่าน MQTT broker เช่น Mosquitto
  • Node-RED ฟังค่าผ่าน topic เช่น sensor/temp
Posted on

ตัวอย่างการควบคุม สเต็ปปิ้งมอเตอร์ขนาด 3 แอมป์ ด้วย Arduino + ไมโคร Step Driver TB6600 เบื้องต้น

ตัวอย่างการควบคุม สเต็ปปิ้งมอเตอร์ขนาด 3 แอมป์ ด้วย Arduino + ไมโคร Step Driver TB6600 เบื้องต้น

Linear_Slide_LSSX05_TB6600 https://drive.google.com/drive/folders/1YALYYlV6PUrQz-IYNR843RhyF7twXqQ4?usp=sharing

สเต็ปปิ้งมอเตอร์ขนาด 3 แอมป์ ปรับตั้ง ดิฟต์สวิตช์ของไมโคร Step Driver TB6600 ดังนี้

  • DIP Switch S1 S2 S3 ตั้งเป็น On Off On
  • DIP Switch S4 S5 S6 ตั้งเป็น On Off On
#include <AccelStepper.h>
// The X Stepper pins
#define PUL_PIN 2  // PUL_PIN
#define DIR_PIN 3  // DIR_PIN

AccelStepper stepper(AccelStepper::DRIVER, PUL_PIN, DIR_PIN);
 
void setup()
{
    stepper.setMaxSpeed(3500.0);     // ปรับความเร็ว หน่วยเป็น พัลส์ต่อวินาที steps per second
    stepper.setAcceleration(5500.0); // ปรับความเร่ง หน่วยเป็น พัลส์ต่อวินาทีกำลังสอง steps per second per second
    stepper.setCurrentPosition(0);           //เซตค่าตำแหน่งเริ่มเท่ากับ 0 ก่อนเข้าลูป
}
void loop()
{    
    stepper.runToNewPosition(0); //เริ่มต้นที่ตำแหน่ง 0
    delay(500);
    stepper.runToNewPosition(1500); // ระยะการเคลื่อนที่ไปทางบวก ด้านขวา จำนวน พัลส์
    delay(500);
    
    stepper.runToNewPosition(0);
    delay(500);
    stepper.runToNewPosition(-1500); // ระยะการเคลื่อนที่กลับ ทางลบ ด้านซ้าย จำนวน พัลส์
    delay(500);
}

 

 

Posted on

ตัวอย่างการสั่งงานด้วย Arduino Code สำหรับทดสอบการทำงานบอลสกรู

ตัวอย่างการควบคุม สเต็ปปิ้งมอเตอร์ขนาด 3 แอมป์ ด้วย Arduino + ไมโคร Step Driver TB6600 เบื้องต้น

Linear_Slide_LSSX05_TB6600

https://drive.google.com/drive/folders/1YALYYlV6PUrQz-IYNR843RhyF7twXqQ4?usp=sharing

สเต็ปปิ้งมอเตอร์ขนาด 3 แอมป์ ปรับตั้ง ดิฟต์สวิตช์ของไมโคร Step Driver TB6600 ดังนี้

  • DIP Switch S1 S2 S3 ตั้งเป็น ON OFF ON 400 P/R 2/A
  • DIP Switch S4 S5 S6 ตั้งเป็น ON OFF OFF 2.0A

ตัวอย่างการควบคุม สเต็ปปิ้งมอเตอร์ขนาด 3 แอมป์ ด้วย Arduino + ไมโคร Step Driver TB6600 เบื้องต้น

ตัวอย่างโปรแกรมควบคุมรางสไลด์ แบบไป-กลับ ตามตำแหน่งที่กำหนด

ซอร์สโค้ดเพื่อควบคุมการทำงาน ได้ตามวีดิโอด้านบน

 

 

#include <AccelStepper.h>
 //12V full step 200 pulse/rev,       1.5A
 //    S1 S2 S3                    S4  S5  S6
 //    NO NO OFF                   NO  OFF NO
 
// The X Stepper pins
#define STEPPER1_DIR_PIN 3
#define STEPPER1_STEP_PIN 2

AccelStepper stepper1(AccelStepper::DRIVER, STEPPER1_STEP_PIN, STEPPER1_DIR_PIN);

 int MaxAcc = 10000;
 int MaxSpd = 800;
 int State = 0;
 int Step = 0;
void setup()
{  
    stepper1.setMaxSpeed(MaxSpd);
    stepper1.setAcceleration(MaxAcc);
    stepper1.setCurrentPosition(0);
    stepper1.moveTo(1000);
    Serial.begin(9600);
    delay(2000);
    Serial.println("Power ON ");
    Serial.print("State = ");
    Serial.print(State);
    Serial.print("t position = ");
    Serial.println(stepper1.currentPosition());
    delay(2000);
}
void loop()
{
 //Serial.println(stepper1.currentPosition());
  switch (State) 
  {
    case 0:    // 
      if (stepper1.distanceToGo() == 0)
      {
        State =1;
        Serial.print("State = ");
        Serial.print(State);
        Serial.print("t position = ");
        Serial.println(stepper1.currentPosition());
        delay(1000);
        stepper1.moveTo(0);
      }
      break;
    case 1:    // your hand is close to the sensor
      if (stepper1.distanceToGo() == 0)
      {
        State = 2;
        Serial.print("State = ");
        Serial.print(State);
        Serial.print("t position = ");
        Serial.println(stepper1.currentPosition());
        delay(1000);
        stepper1.moveTo(2500);
      }
      break;
    case 2:    // your hand is a few inches from the sensor
      if (stepper1.distanceToGo() == 0)
      {
        State=3;
        Serial.print("State = ");
        Serial.print(State);
        Serial.print("t position = ");
        Serial.println(stepper1.currentPosition());
        delay(1000);
        stepper1.moveTo(0);
      }
      break;
    case 3:    // your hand is nowhere near the sensor
      if (stepper1.distanceToGo() == 0)
      {
        State = 4;
        Serial.print("State = ");
        Serial.print(State);
        Serial.print("t position = ");
        Serial.println(stepper1.currentPosition());
        delay(1000);
        stepper1.moveTo(-1000);       
      }
      break;
    case 4:    // your hand is nowhere near the sensor
      if (stepper1.distanceToGo() == 0)
      {
        State = 5;
        Serial.print("State = ");
        Serial.print(State);
        Serial.print("t position = ");
        Serial.println(stepper1.currentPosition());
        delay(1000);
        stepper1.moveTo(0);       
      }
      break;
    case 5:    // your hand is nowhere near the sensor
      if (stepper1.distanceToGo() == 0)
      {
        State = 0;
        Serial.print("State = ");
        Serial.print(State);
        Serial.print("t position = ");
        Serial.println(stepper1.currentPosition());
        delay(1000);
        stepper1.moveTo(-2000);       
      }
      break;
  }
  
stepper1.run();
}

เอาต์พุตแสดงตำแหน่ง ที่เคลื่อนที่ไป โดยจะทำงานวนไปตั้งแต่ stateที่ 0 ถึง state 5

การต่อสายสัญญาณ ระหว่างบอร์ดอาดูโน่ และ ไดร์ฟเวอร์ สเต็ปเปอร์มอเตอร์

การตั้งค่าตัวไดร์ฟเวอร์ ขับสเต็ปเปอร์ ความละเอียด 200 สเต็ปต่อรอบ ตั้งค่ากระแส1.0 แอมป์

 

ตัวอย่างการสั่งงานด้วย Arduino Code

  •  กระแสที่ 3 แอมป์
  • Micro Step = 4, PPR = 800

ตัวอย่างการสั่งงานด้วย Arduino Code สำหรับทดสอบการทำงานเบื้องต้น

  • กระแสที่ 3 แอมป์
  • Micro Step = 4, PPR = 800

Linear_Slide_LSSX05_TB6600

#include <AccelStepper.h>
 
// The X Stepper pins
#define PUL_PIN 2  // PUL_PIN
#define DIR_PIN 3  // DIR_PIN

AccelStepper stepper(AccelStepper::DRIVER, PUL_PIN, DIR_PIN);
 
void setup(){
    stepper.setMaxSpeed(10000.0);     // ปรับความเร็ว
    stepper.setAcceleration(10000.0); // ปรับความเร่ง
}
void loop(){    
    stepper.runToNewPosition(0);
    delay(500);
    stepper.runToNewPosition(10000); // ระยะการเคลื่อนที่ไป
    delay(500);
    stepper.runToNewPosition(0);
    delay(500);
    stepper.runToNewPosition(-10000); // ระยะการเคลื่อนที่กลับ
    delay(500);
}

ตัวอย่างการสั่งงานด้วย Arduino Code แบบมี Home Limit Switch

#include <AccelStepper.h>
 
// The X Stepper pins
#define STEPPER1_DIR_PIN 3
#define STEPPER1_STEP_PIN 2
AccelStepper stepper(AccelStepper::DRIVER, STEPPER1_STEP_PIN, STEPPER1_DIR_PIN);
 const int buttonPin = 7; //home switch
 int state = 0;
 int buttonState = 0; 
 int MaxAcc = 6000;
 int MaxSpd = 4000;
void setup()
{
     Serial.begin(9600);
     pinMode(buttonPin, INPUT_PULLUP);
    stepper.setMaxSpeed(MaxSpd); // ทดลองปรับความเร็ว
    stepper.setAcceleration(MaxAcc); // ทดลองปรับความเร่ง
}
void loop()
{    
    //Serial.println(state);
    buttonState = digitalRead(buttonPin);
    if((buttonState == HIGH)&&(state == 0))//
    {
        stepper.setMaxSpeed(MaxSpd); // หมุนช้าเข้าหาสวิตช์ Home
        stepper.setAcceleration(MaxAcc);
        stepper.setSpeed(-500);
        stepper.runSpeed();
        
    }
    else if ((buttonState == LOW) &&(state == 0))
    {
          stepper.setMaxSpeed(MaxSpd); 
          stepper.setAcceleration(MaxAcc);
          stepper.setCurrentPosition(0);
          state = 1;
          delay(1000);
    } 
    if(state ==1 )
    {
      stepper.runToNewPosition(12000);
      delay(1000);
      stepper.runToNewPosition(0);
      delay(1000);
    }
}

 

Posted on

Free Drive Protocol USB Video Class (UVC) คืออะไร?

Free Drive Protocol USB Video Class (UVC) คืออะไร?
  • *UVC free driver, Plug & Play
  • Free Drive Protocol USB Video Class (UVC) เป็นมาตรฐานการสื่อสารแบบโอเพ่นซอร์สสำหรับอุปกรณ์วิดีโอ USB ช่วยให้อุปกรณ์วิดีโอสามารถเชื่อมต่อและทำงานกับคอมพิวเตอร์โดยไม่ต้องติดตั้งไดรเวอร์พิเศษ

UVC มีข้อดีหลายประการ ดังนี้:

  • ใช้งานง่าย: ผู้ใช้ไม่จำเป็นต้องติดตั้งไดรเวอร์พิเศษเพื่อใช้อุปกรณ์ UVC กับคอมพิวเตอร์
  • เข้ากันได้: อุปกรณ์ UVC เข้ากันได้กับระบบปฏิบัติการ Windows, macOS และ Linux
  • ราคาไม่แพง: อุปกรณ์ UVC มักมีราคาไม่แพงกว่าอุปกรณ์วิดีโอแบบดั้งเดิม
  • ใช้งานหลากหลาย: อุปกรณ์ UVC สามารถใช้กับแอปพลิเคชันวิดีโอที่หลากหลาย เช่น การสนทนาทางวิดีโอ การถ่ายภาพ และการสตรีมวิดีโอ

ประเภทของอุปกรณ์ UVC

อุปกรณ์ UVC มีหลายประเภท ดังนี้:

  • เว็บแคม: เว็บแคม UVC มักใช้สำหรับการสนทนาทางวิดีโอและการถ่ายภาพ
  • กล้องวิดีโอ: กล้องวิดีโอ UVC มักใช้สำหรับการบันทึกวิดีโอ
  • การ์ดจับภาพ: การ์ดจับภาพ UVC ช่วยให้คุณสามารถจับภาพวิดีโอจากแหล่งต่างๆ เช่น เครื่องเล่น DVD หรือกล้องวิดีโอแอนาล็อก
  • อุปกรณ์อื่นๆ: ยังมีอุปกรณ์ UVC อื่นๆ อีกมากมาย เช่น ไมโครโฟนและลำโพง

วิธีใช้ Free Drive Protocol USB Video Class (UVC)

  • การใช้ Free Drive Protocol USB Video Class (UVC) นั้นง่ายมาก เพียงทำตามขั้นตอนต่อไปนี้:
  1. เชื่อมต่ออุปกรณ์ UVC กับคอมพิวเตอร์ของคุณ
  2. รอให้คอมพิวเตอร์ของคุณตรวจจับอุปกรณ์
  3. เปิดแอปพลิเคชันวิดีโอที่คุณต้องการใช้
  4. เลือกอุปกรณ์ UVC ของคุณจากรายการอุปกรณ์วิดีโอ

ตัวอย่างการใช้งาน Free Drive Protocol USB Video Class (UVC)

  • Free Drive Protocol USB Video Class (UVC) สามารถใช้กับแอปพลิเคชันวิดีโอที่หลากหลาย ดังนี้:
  • การสนทนาทางวิดีโอ: คุณสามารถใช้เว็บแคม UVC สำหรับการสนทนาทางวิดีโอผ่าน Skype, Zoom หรือ Google Meet
  • การถ่ายภาพ: คุณสามารถใช้กล้อง UVC สำหรับการถ่ายภาพด้วยแอปพลิเคชันเช่น Windows Camera หรือ Photo Booth
  • การสตรีมวิดีโอ: คุณสามารถใช้กล้อง UVC สำหรับการสตรีมวิดีโอผ่าน Twitch หรือ YouTube
  • การจับภาพวิดีโอ: คุณสามารถใช้การ์ดจับภาพ UVC สำหรับการจับภาพวิดีโอจากแหล่งต่างๆ เช่น เครื่องเล่น DVD หรือกล้องวิดีโอแอนาล็อก

สรุป

  • Free Drive Protocol USB Video Class (UVC) เป็นมาตรฐานการสื่อสารที่มีประโยชน์สำหรับอุปกรณ์วิดีโอ USB ช่วยให้อุปกรณ์วิดีโอสามารถเชื่อมต่อและทำงานกับคอมพิวเตอร์โดยไม่ต้องติดตั้งไดรเวอร์พิเศษ UVC ใช้งานง่าย เข้ากันได้ ราคาไม่แพง และใช้งานหลากหลาย

Posted on

ตัวอย่างการคำนวณ เซนเซอร์วัดอุณหภูมิและความชื้น Calculation example Temperature Humidity Sensor Voltage Output 0-10V

1. การคำนวณอุณหภูมิ 

สมการหา อุณหภูมิ (℃) = (TV – V0) / Vr * Tr + T0

เมื่อ

  • TV : คือแรงดันไฟขาออก, หน่วย V
  • V0: คือค่าแรงดันไฟฟ้าขั้นต่ำ หน่วย V ตัวอย่างเช่น 0 – 10V ใช้ค่า V0 = 0
  • Vr: คือช่วงแรงดันไฟฟ้า หน่วย V เช่น 0 -10V ใช้ค่า Vr = 10
  • Tr: คือช่วงอุณหภูมิ หน่วย °C เช่น -20 ~ 80°C ใช้ค่า Tr = 80
  • T0: คือค่าอุณหภูมิต่ำสุด หน่วย ℃ เช่น -20~80℃, ใช้ค่า T0 = -20

ตัวอย่างการคำนวณ

  • แรงดันไฟฟ้าที่ TV คือ 5V
  • ช่วงคือ -20 ~ 80
  • จากนั้นอุณหภูมิ ℃ = (TV – V0) / Vr*Tr + T0
  • จากนั้นอุณหภูมิ ℃ = (5-0) / 10*80 + -20 = 20℃

2. การคำนวณ Humidity 

สมการหา Humidity (%RH) = (HV – V0) / Vr*Hr + H0

  • HV: แรงดันเอาต์พุต, หน่วย V
  • V0: ค่าแรงดันไฟฟ้าขั้นต่ำ หน่วย V ตัวอย่างเช่น 0-10V, V0 = 0
  • Vr: ช่วงแรงดันไฟฟ้า หน่วย V เช่น 0 – 10V, Vr = 10
  • Hr : ช่วงความชื้น หน่วย %RH เช่น 0~100%RH จากนั้น Hr =100 H0: ค่าความชื้นขั้นต่ำ หน่วย %RH เช่น 0~100°C, H0=0

ตัวอย่างการคำนวณ

  • แรงดันไฟฟ้าที่ HV คือ 5V
  • ช่วงคือ 0 ~ 100%RH
  • จากนั้นความชื้น = 5/10*100 = 50%RH

แรงดันไฟฟ้าขาออกสูงสุดคือไม่เกินแรงดันไฟฟ้าของแหล่งจ่ายไฟ -2V  เพื่อให้ได้เอาต์พุต 10V ที่อุณหภูมิสูงหรือความชื้นสูงแนะนำให้จ่ายไฟอย่างน้อย 12V