อะไรคือความแตกต่างระหว่าง Arduino Potentiometer และ Rotary Encoder

Xari Khux Khwam Taek Tang Rahwang Arduino Potentiometer Laea Rotary Encoder



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

โพเทนชิออมิเตอร์คืออะไร

โพเทนชิออมิเตอร์เป็นรีโอสแตทหรือเราเรียกมันว่าตัวต้านทานแบบปรับค่าได้ ค่าความต้านทานจะแตกต่างกันไปตามการหมุนของเพลาของโพเทนชิออมิเตอร์ โพเทนชิออมิเตอร์สามารถหมุนเป็นระยะทางที่กำหนดเท่านั้น มีทั้งโพเทนชิออมิเตอร์แบบอะนาล็อกและดิจิตอล แต่เกือบจะคล้ายกัน โพเทนชิโอมิเตอร์แบบอะนาล็อกสามารถเชื่อมต่อกับไมโครคอนโทรลเลอร์บน Arduino, Raspberry Pi และอุปกรณ์อื่นๆ โพเทนชิออมิเตอร์มีสามพินที่เป็นพินแรงดันอินพุต Vcc, กราวด์พิน GND และพินสัญญาณอินพุต ขาสัญญาณให้อินพุตกับ Arduino









ตัวเข้ารหัสแบบหมุนคืออะไร

ตัวเข้ารหัสแบบโรตารีจะรับรู้ตำแหน่งเชิงมุมของปุ่มแบบหมุนและส่งสัญญาณไปยังไมโครคอนโทรลเลอร์หรืออุปกรณ์อื่นๆ ที่เชื่อมต่ออยู่ มีแผ่นดิสก์ที่มีพื้นที่สัมผัสที่เว้นระยะเท่าๆ กันซึ่งเชื่อมต่อกับพินทั่วไป เครื่องเข้ารหัสแบบโรตารียังมีปุ่มกดในตัวหรือสวิตช์แบบหมุนที่ให้สัญญาณเปิดและปิดตามความต้องการเฉพาะ







Pinout Diagram และคำอธิบาย Pin ของ Rotary Encoder

แผนภาพด้านล่างแสดงพินของตัวเข้ารหัสแบบหมุน พินเหล่านี้อธิบายไว้ดังนี้:

ออก B หรือ CLK



พินนี้ให้ผลลัพธ์ของจำนวนครั้งที่ลูกบิดหรือตัวเข้ารหัสแบบหมุนหมุน แต่ละครั้งที่หมุนปุ่ม CLK จะเสร็จสิ้นรอบสูงและต่ำ นับเป็นหนึ่งรอบ

ออก A หรือ DT

นี่คือเอาต์พุตขาที่สองของตัวเข้ารหัสแบบหมุนที่กำหนดทิศทางการหมุน มันล่าช้ากว่าสัญญาณ CLK 90° ดังนั้น หากสถานะไม่เท่ากับสถานะของ CLK ทิศทางการหมุนจะเป็นตามเข็มนาฬิกา มิฉะนั้น จะทวนเข็มนาฬิกา

สวิตช์

ขาสวิตช์ใช้เพื่อตรวจสอบว่าปุ่มกดถูกกดหรือไม่

วีซีซี

พินนี้เชื่อมต่อกับแหล่งจ่ายไฟ 5V

จีเอ็นดี

พินนี้เชื่อมต่อกับกราวด์

ความแตกต่างระหว่างโพเทนชิออมิเตอร์และโรตารี่เอ็นโค้ดเดอร์

ข้อมูลจำเพาะ โพเทนชิออมิเตอร์ ตัวเข้ารหัสแบบหมุน
การหมุน โพเทนชิออมิเตอร์สามารถหมุนได้ในทิศทางเดียวเท่านั้น และหมุนได้สามในสี่ของวงกลมด้วย ตัวเข้ารหัสแบบหมุนสามารถหมุนได้ 360° อย่างต่อเนื่องทั้งในทิศทางตามเข็มนาฬิกาและทวนเข็มนาฬิกา
อุปกรณ์อนาล็อกหรือดิจิตอล โพเทนชิออมิเตอร์ส่วนใหญ่เป็นอุปกรณ์อินพุตแบบอะนาล็อกที่วัดการเปลี่ยนแปลงตำแหน่งผ่านการเปลี่ยนแปลงค่าของตัวต้านทาน ตัวเข้ารหัสแบบหมุนเป็นอุปกรณ์อินพุตแบบดิจิทัลที่ตรวจจับตำแหน่งเชิงมุมและให้ค่าแบบดิจิทัล

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

การตั้งค่าโพเทนชิออมิเตอร์ด้วย Arduino

โพเทนชิออมิเตอร์ติดตั้งกับ Arduino ได้ง่ายกว่าตัวเข้ารหัสแบบหมุน โพเทนชิออมิเตอร์มีเพียงสามพิน VCC, GND และพิน INPUT ที่เชื่อมต่อกับ Arduino การเชื่อมต่อโพเทนชิออมิเตอร์กับ Arduino แสดงไว้ด้านล่าง:

การเขียนโปรแกรมโพเทนชิออมิเตอร์ใน Arduino นั้นง่ายกว่าโปรแกรมเข้ารหัสแบบหมุน รับด้านล่างเป็นตัวอย่างรหัสไวยากรณ์สำหรับทั้งสอง

รหัสตัวอย่างสำหรับโพเทนชิออมิเตอร์

หม้อ int = A0; // ประกาศขาอินพุต
การตั้งค่าเป็นโมฆะ ( ) {
   พินโหมด ( หม้อ, INPUT ) ; // ค่าติดตั้งที่นำมาจากโพเทนชิออมิเตอร์ เช่น ป้อนข้อมูล
Serial.begin ( 9600 ) ;
}
วนเป็นโมฆะ ( ) {
int potValue = อะนาล็อกอ่าน ( หม้อ ) ; // อ่านค่าอินพุตที่ใช้โดยโพเทนชิออมิเตอร์
แผนที่ ( ค่าหม้อ, 0 , 1023 , 0 , 255 ) ; // ปรับขนาดค่าอินพุตให้ตรงกัน 8 -นิดหน่อย
Serial.println ( ค่าหม้อ ) ; // พิมพ์ค่าที่ป้อนไปยังโพเทนชิออมิเตอร์
ล่าช้า ( 100 ) ;
}

รหัสโพเทนชิออมิเตอร์นั้นง่ายและเรียบง่ายมาก ขาอินพุตแบบอะนาล็อกของ Arduino นั้นประกาศไว้เพื่อรับอินพุตจากโพเทนชิออมิเตอร์ จากนั้นจึงใช้ฟังก์ชัน analogRead() และ map() เพื่ออ่านและให้ค่าที่แน่นอนของการอ่านจากโพเทนชิออมิเตอร์

การเชื่อมต่อโรตารีเอ็นโค้ดเดอร์กับ Arduino

ตัวเข้ารหัสแบบหมุนมีห้าพิน VCC และ GND ของโรตารีเอ็นโค้ดเดอร์เชื่อมต่อกับ Arduino พินที่เหลือ CLK, DT และ SW เชื่อมต่อกับพินอินพุตดิจิทัลของ Arduino

รหัส Arduino สำหรับตัวเข้ารหัสแบบหมุน

// อินพุตตัวเข้ารหัสแบบหมุน
#กำหนด CLK_PIN 2
#กำหนด DT_PIN 3
#กำหนด SW_PIN 4
ตัวนับ int = 0 ;
int ปัจจุบันCLKState;
int สุดท้ายCLKState;
สตริงปัจจุบันทิศทาง = '' ;
ไม่ได้ลงนาม long lastButtonPressTime = 0 ;
การตั้งค่าเป็นโมฆะ ( ) {
// ตั้งค่าพินตัวเข้ารหัส เช่น อินพุต
    โหมดพิน ( CLK_PIN, อินพุต ) ;
    โหมดพิน ( DT_PIN, อินพุต ) ;
    โหมดพิน ( SW_PIN, INPUT_PULLUP ) ;
// ตั้งค่าการตรวจสอบแบบอนุกรม
Serial.begin ( 9600 ) ;
// อ่านสถานะเริ่มต้นของ CLK
lastCLKState = digitalRead ( CLK_PIN ) ;
}
วนเป็นโมฆะ ( ) {
// อ่านสถานะปัจจุบันของ CLK
currentCLKState = ดิจิตอลอ่าน ( CLK_PIN ) ;
// ถ้า ล่าสุด และสถานะปัจจุบันของ CLK นั้นแตกต่างกัน แล้ว ชีพจรเกิดขึ้น
// ตอบโต้เท่านั้น 1 เปลี่ยนสถานะเพื่อหลีกเลี่ยงการนับซ้ำ
ถ้า ( ปัจจุบันCLKSสถานะ ! = CLKS สถานะล่าสุด && ปัจจุบันCLKSสถานะ == 1 ) {
// หากสถานะ DT แตกต่างจากสถานะ CLK แล้ว
// ตัวเข้ารหัสจะหมุนทวนเข็มนาฬิกา ดังนั้นค่าจะลดลง
ถ้า ( ดิจิตอลอ่าน ( DT_PIN ) ! = ปัจจุบัน CLKState ) {
เคาน์เตอร์--;
ทิศทางปัจจุบัน = 'คสช.' ;
} อื่น {
// ตัวเข้ารหัสกำลังหมุนตามเข็มนาฬิกา ดังนั้น เพิ่มขึ้น
เคาน์เตอร์ ++;
ทิศทางปัจจุบัน = 'ซีดับบลิว' ;
}
Serial.print ( 'ทิศทางการหมุน: ' ) ;
Serial.print ( ทิศทางปัจจุบัน ) ;
Serial.print ( ' | มูลค่าเคาน์เตอร์: ' ) ;
Serial.println ( เคาน์เตอร์ ) ;
}
// จำไว้ว่า ล่าสุด สถานะ CLK
lastCLKState = ปัจจุบันCLKState;
// อ่านสถานะของปุ่ม
int buttonState = digitalRead ( SW_PIN ) ;
// หากเราตรวจพบสัญญาณต่ำ ปุ่มจะถูกกด
ถ้า ( buttonState == ต่ำ ) {
// หากผ่านไป 50ms นับตั้งแต่ ล่าสุด ชีพจรต่ำก็หมายความว่า
// ปุ่มถูกกด ปล่อย และกดอีกครั้ง
ถ้า ( มิลลิวินาที ( ) - เวลากดปุ่มสุดท้าย > ห้าสิบ ) {
Serial.println ( 'กดปุ่ม!' ) ;
}
// จำไว้ว่า ล่าสุด เหตุการณ์การกดปุ่ม เวลา
lastButtonPressTime = มิลลิวินาที ( ) ;
}
// ใส่ ใน ความล่าช้าเล็กน้อย ช่วย ทำให้เสียการอ่าน
ล่าช้า ( 1 ) ;
}

ในรหัสที่ระบุข้างต้น สถานะของขา CLK จะถูกตรวจสอบในฟังก์ชัน loop() หากไม่เท่ากับสถานะก่อนหน้า แสดงว่าปุ่มหมุนหมุนแล้ว ตอนนี้เพื่อตรวจสอบทิศทางการหมุนของลูกบิด สถานะปัจจุบันของ CLK จะเปรียบเทียบกับสถานะของ DT หากทั้งสองสถานะไม่เท่ากัน แสดงว่าปุ่มหมุนตามเข็มนาฬิกาและค่าเพิ่มขึ้นตามเคาน์เตอร์เพื่อแสดงตำแหน่งของปุ่มหมุน ในกรณีตรงข้าม การลดลงที่สวนทางกัน

แอพพลิเคชั่น

ส่วนใหญ่จะใช้โพเทนชิออมิเตอร์เมื่อต้องการฟังก์ชันควบคุม ใช้ในการควบคุมระดับเสียง, การควบคุมความสว่างของ LED ในทางกลับกัน เครื่องเข้ารหัสแบบโรตารีมีการใช้งานที่หลากหลาย ใช้ในวิทยาการหุ่นยนต์ อุปกรณ์ทางการแพทย์ ระบบอัตโนมัติ และเกม

บทสรุป

โพเทนชิออมิเตอร์และโรตารีเอ็นโค้ดเดอร์เป็นอุปกรณ์ที่มีประโยชน์อย่างยิ่งในด้านอิเล็กทรอนิกส์ ตัวเข้ารหัสแบบโรตารีนั้นล้ำหน้าเมื่อเทียบกับโพเทนชิออมิเตอร์ เนื่องจากสามารถหมุนได้อย่างต่อเนื่องถึง 360° ในทำนองเดียวกัน มีการใช้งานมากขึ้นในอุปกรณ์อิเล็กทรอนิกส์สมัยใหม่ และใช้งานยากกว่าโพเทนชิออมิเตอร์เล็กน้อย .