- การปรับความกว้างพัลส์:
- วัสดุที่จำเป็น
- แผนภูมิวงจรรวม
- รหัสและคำอธิบาย
- การควบคุมความเร็วของมอเตอร์กระแสตรงโดยใช้ Arduino
มอเตอร์กระแสตรงเป็นมอเตอร์ที่ใช้มากที่สุดในโครงการหุ่นยนต์และอิเล็กทรอนิกส์ สำหรับการควบคุมความเร็วของมอเตอร์กระแสตรงเรามีวิธีการต่างๆเช่นความเร็วสามารถควบคุมได้โดยอัตโนมัติตามอุณหภูมิ แต่ในโครงการนี้จะใช้วิธี PWM ในการควบคุมความเร็วของมอเตอร์กระแสตรง ใน โครงการ Arduino Motor Speed Control นี้ความเร็วสามารถควบคุมได้โดยการหมุนลูกบิดของโพเทนชิออมิเตอร์
การปรับความกว้างพัลส์:
PWM คืออะไร? PWM เป็นเทคนิคโดยใช้เราสามารถควบคุมแรงดันไฟฟ้าหรือพลังงาน เพื่อให้เข้าใจง่ายขึ้นถ้าคุณใช้ 5 โวลต์ในการขับเคลื่อนมอเตอร์จากนั้นมอเตอร์จะเคลื่อนที่ด้วยความเร็วบางส่วนตอนนี้ถ้าเราลดแรงดันไฟฟ้าที่ใช้ลงด้วย 2 หมายความว่าเราใช้ 3 โวลต์กับมอเตอร์ความเร็วของมอเตอร์ก็จะลดลงเช่นกัน แนวคิดนี้ใช้ในโครงการควบคุมแรงดันไฟฟ้าโดยใช้ PWM เราได้อธิบาย PWM โดยละเอียดในบทความนี้ ตรวจสอบวงจรนี้ด้วยที่ใช้ PWM เพื่อควบคุมความสว่างของ LED: 1 Watt LED Dimmer
% รอบการทำงาน = (TON / (TON + TOFF)) * 100โดยที่ T ON = เวลาสูงของคลื่นสี่เหลี่ยม T OFF = เวลาต่ำของคลื่นสี่เหลี่ยม
ตอนนี้ถ้าสวิตช์ในรูปปิดอย่างต่อเนื่องในช่วงเวลาหนึ่งมอเตอร์จะเปิดอย่างต่อเนื่องในช่วงเวลานั้น หากสวิตช์ปิดเป็นเวลา 8ms และเปิดเป็นเวลา 2ms ในรอบ 10ms มอเตอร์จะเปิดเฉพาะในเวลา 8ms เท่านั้น ตอนนี้เทอร์มินัลเฉลี่ยตลอดช่วงเวลา 10ms = เวลาเปิดเครื่อง / (เวลาเปิดเครื่อง + เวลาปิดเครื่อง) เรียกว่า รอบการทำงาน และเท่ากับ 80% (8 / (8 + 2)) ดังนั้นค่าเฉลี่ย แรงดันขาออกจะเท่ากับ 80% ของแรงดันแบตเตอรี่ ตอนนี้ตามนุษย์มองไม่เห็นว่ามอเตอร์เปิดอยู่ 8ms และปิดเป็นเวลา 2ms ดังนั้นจะดูเหมือนว่า DC Motor กำลังหมุนด้วยความเร็ว 80%
ในกรณีที่สองสวิตช์จะปิดเป็นเวลา 5ms และเปิดเป็นเวลา 5ms ในช่วงเวลา 10ms ดังนั้นแรงดันไฟฟ้าขั้วเฉลี่ยที่เอาต์พุตจะเท่ากับ 50% ของแรงดันแบตเตอรี่ บอกว่าแรงดันไฟฟ้าของแบตเตอรี่เป็น 5V หรือไม่และรอบการทำงานเท่ากับ 50% ดังนั้นแรงดันไฟฟ้าขั้วเฉลี่ยจะเท่ากับ 2.5V
ในกรณีที่สามรอบการทำงานเท่ากับ 20% และแรงดันไฟฟ้าขั้วเฉลี่ยเท่ากับ 20% ของแรงดันแบตเตอรี่
เราใช้PWM กับ Arduinoในหลายโครงการของเรา:
- Arduino LED Dimmer โดยใช้ PWM
- พัดลมควบคุมอุณหภูมิโดยใช้ Arduino
- DC Motor Control โดยใช้ Arduino
- การควบคุมความเร็วพัดลม AC โดยใช้ Arduino และ TRIAC
คุณสามารถเรียนรู้เพิ่มเติมเกี่ยวกับ PWM ได้โดยทำตามโครงการต่างๆที่อิงจาก PWM
วัสดุที่จำเป็น
- Arduino UNO
- มอเตอร์กระแสตรง
- ทรานซิสเตอร์ 2N2222
- โพเทนชิออมิเตอร์ 100k โอห์ม
- ตัวเก็บประจุ 0.1uF
- เขียงหั่นขนม
- กระโดดสายไฟ
แผนภูมิวงจรรวม
แผนภาพวงจรสำหรับ Arduino DC Motor Speed Control โดยใช้ PWM อยู่ด้านล่าง:
รหัสและคำอธิบาย
รหัสที่สมบูรณ์สำหรับArduino DC Motor Controlโดยใช้โพเทนชิออมิเตอร์จะได้รับในตอนท้าย
ในด้านล่างของรหัสที่เราได้เริ่มต้น c1 ตัวแปรและ c2 และได้รับมอบหมาย A0 ขาอนาล็อกสำหรับการส่งออกมิเตอร์และ 12 TH Pin สำหรับ 'PWM'
int pwmPin = 12; หม้อ int = A0; int c1 = 0; int c2 = 0;
ตอนนี้ในรหัสด้านล่างการตั้งค่าพิน A0 เป็นอินพุตและ 12 (ซึ่งเป็นพิน PWM) เป็นเอาต์พุต
การตั้งค่าเป็นโมฆะ () { pinMode (pwmPin, OUTPUT); // ประกาศพิน 12 เป็นพิน โหมด เอาต์พุต(pot, INPUT); // ประกาศพิน A0 เป็นอินพุต}
ตอนนี้ใน void loop () เรากำลังอ่านค่าอนาล็อก (จาก A0) โดยใช้ analogRead (pot) และบันทึกลงในตัวแปร c2 จากนั้นลบค่า c2 จาก 1024 และบันทึกผลลัพธ์ใน c1 จากนั้นสร้าง PWM พิน 12 thของ Arduino HIGH จากนั้นหลังจากการหน่วงเวลาของค่า c1 ทำให้พินนั้น LOW อีกครั้งหลังจากความล่าช้าของค่า c2 ลูปจะดำเนินต่อไป
เหตุผลในการลบค่าอนาล็อกจาก 1024 คือArduino Uno ADC มีความละเอียด 10 บิต (ดังนั้นค่าจำนวนเต็มตั้งแต่ 0 - 2 ^ 10 = 1024 ค่า) ซึ่งหมายความว่ามันจะจับคู่แรงดันไฟฟ้าอินพุตระหว่าง 0 ถึง 5 โวลต์เป็นค่าจำนวนเต็มระหว่าง 0 ถึง 1024 ดังนั้นหากเราคูณอินพุต anlogValue เป็น (5/1024) เราจะได้ค่าดิจิตอลของแรงดันอินพุต เรียนรู้วิธีใช้อินพุต ADC ใน Arduino ที่นี่
โมฆะ loop () { c2 = analogRead (pot); c1 = 1024-c2; digitalWrite (pwmPin, สูง); // กำหนดพิน 12 HIGH delayMicroseconds (c1); // รอ c1 uS (high time) digitalWrite (pwmPin, LOW); // ตั้งค่าพิน 12 LOW delayMicroseconds (c2); // รอ c2 uS (เวลาน้อย) }
การควบคุมความเร็วของมอเตอร์กระแสตรงโดยใช้ Arduino
ในวงจรนี้สำหรับการควบคุมความเร็วของมอเตอร์กระแสตรงเราใช้โพเทนชิออมิเตอร์ 100K โอห์มเพื่อเปลี่ยนรอบการทำงานของสัญญาณ PWM โพเทนชิออมิเตอร์ 100K โอห์มเชื่อมต่อกับพินอินพุตอะนาล็อก A0 ของ Arduino UNO และมอเตอร์กระแสตรงเชื่อมต่อกับขา12 thของ Arduino (ซึ่งเป็นพิน PWM) การทำงานของโปรแกรม Arduino นั้นง่ายมากเนื่องจากอ่านแรงดันไฟฟ้าจากขาอะนาล็อก A0 แรงดันไฟฟ้าที่ขาอะนาล็อกจะแปรผันโดยใช้โพเทนชิออมิเตอร์ หลังจากทำการคำนวณที่จำเป็นแล้วรอบการทำงานจะถูกปรับตามนั้น
ตัวอย่างเช่นหากเราป้อนค่า 256 ไปยังอินพุตแบบอะนาล็อกเวลา HIGH จะเป็น 768ms (1024-256) และเวลา LOW จะเท่ากับ 256ms ดังนั้นจึงหมายความว่ารอบการทำงานคือ 75% ตาของเราไม่สามารถมองเห็นการสั่นความถี่สูงดังกล่าวได้และดูเหมือนว่ามอเตอร์จะเปิดอย่างต่อเนื่องด้วยความเร็ว 75% นั่นคือวิธีการที่เราสามารถดำเนินการ ควบคุมมอเตอร์ความเร็วโดยใช้ Arduino