- การมอดูเลตความกว้างพัลส์ (PWM)
- การเขียนโปรแกรม ATtiny13 โดยใช้ Arduino
- ส่วนประกอบที่จำเป็น
- แผนภาพวงจรและการทำงาน
เซอร์โวมอเตอร์ทำงานบนหลักการของPulse Width Modulation (PWM) และมุมของการหมุนจะถูกควบคุมโดยระยะเวลาของพัลส์ที่ใช้กับพินควบคุม ในบทช่วยสอนนี้เราจะควบคุมเซอร์โวมอเตอร์ด้วยไมโครคอนโทรลเลอร์ ATtiny13โดยใช้เทคนิค PWM ก่อนอื่นเราจะมาเรียนรู้เกี่ยวกับPWM, Servo Motor และวิธีการเขียนโปรแกรม ATtiny13 กับ Arduino Boardก่อน
การมอดูเลตความกว้างพัลส์ (PWM)
Pulse Width Modulation (PWM) หมายถึงวิธีการสร้างสัญญาณแอนะล็อกโดยใช้แหล่งดิจิตอล สัญญาณ PWM ประกอบด้วยสององค์ประกอบหลัก - รอบการทำงานและความถี่ ส่วนประกอบเหล่านี้กำหนดพฤติกรรมของมัน รอบการทำงานอธิบายระยะเวลาที่สัญญาณอยู่ในสถานะสูง แสดงเป็นเปอร์เซ็นต์ของเวลาทั้งหมดที่ใช้ในหนึ่งรอบ
Duty Cycle = เปิดเวลา / (เปิดเวลา + ปิดเวลา)
ความถี่เป็นตัวกำหนดความเร็วของ PWM ที่ทำให้วงจรสำเร็จและความเร็วของสัญญาณจะสลับระหว่างสถานะสูงและต่ำ ความถี่ 100Hz หมายถึง 100 รอบต่อวินาที ด้วยการเปิดและปิดสัญญาณดิจิตอลในอัตราที่รวดเร็วและด้วยรอบการทำงานที่แน่นอนเอาต์พุตจะปรากฏเป็นสัญญาณอนาล็อกแรงดันคงที่ ประโยชน์อย่างหนึ่งของ PWM คือการสูญเสียพลังงานนั้นน้อยมาก
เซอร์โวมอเตอร์ทั้งหมดทำงานโดยตรงกับแหล่งจ่าย + 5V แต่เราต้องระวังปริมาณกระแสไฟฟ้าที่มอเตอร์จะใช้ หากเราใช้เซอร์โวมอเตอร์มากกว่าสองตัวควรออกแบบแผงป้องกันเซอร์โวที่เหมาะสม
ก่อนที่จะ เชื่อมต่อ Servo กับ Attiny13คุณสามารถทดสอบเซอร์โวของคุณด้วยความช่วยเหลือของวงจรทดสอบเซอร์โวมอเตอร์นี้ ที่นี่เราได้เชื่อมต่อเซอร์โวมอเตอร์กับไมโครคอนโทรลเลอร์หลายตัว:
- การเชื่อมต่อเซอร์โวมอเตอร์กับ ARM7-LPC2148
- การเชื่อมต่อเซอร์โวมอเตอร์กับ MSP430G2
- การควบคุมเซอร์โวมอเตอร์หลายตัวด้วย Arduino
- การเชื่อมต่อเซอร์โวมอเตอร์กับไมโครคอนโทรลเลอร์ PIC โดยใช้ MPLAB และ XC8
- การควบคุมเซอร์โวมอเตอร์ด้วย Raspberry Pi
- การควบคุมเซอร์โวมอเตอร์ด้วย Arduino Due
- การเชื่อมต่อเซอร์โวมอเตอร์กับไมโครคอนโทรลเลอร์ AVR Atmega16
การเขียนโปรแกรม ATtiny13 โดยใช้ Arduino
Attiny13 สามารถตั้งโปรแกรมโดยใช้ Arduino Uno หรือบอร์ด Arduino อื่น ๆ เชื่อมต่อ Attiny13 กับ Arduino Uno ดังแสดงในรูปด้านล่าง
- Arduino 5V - ATtiny13 พิน 8
- Arduino GND - ATtiny13 พิน 4
- Arduino พิน 13 - ATtiny13 พิน 7
- Arduino พิน 12 - ATtiny13 พิน 6
- Arduino พิน 11 - ATtiny13 พิน 5
- Arduino พิน 10 - ATtiny13 พิน 1
Arduino ถูกตั้งค่าให้เป็นโปรแกรมเมอร์เพื่อเขียนโปรแกรม ATtiny13 ทำได้โดยการอัพโหลด ArduinoISP sketch ไปยัง Arduino ร่าง Arduino นี้มีอยู่ในตัวอย่างใน Arduino IDE เปิด Arduino IDE และไปที่ ไฟล์> ตัวอย่าง> ArduinoISP
ตอนนี้โปรแกรมสำหรับ ArduinoISP จะปรากฏขึ้น อัปโหลดโปรแกรมไปยัง Arduino Uno
Arduino Uno พร้อมที่จะเขียนโปรแกรม Attiny13 แล้ว แต่เราต้องตั้งค่า Attiny โดยการติดตั้งไฟล์หลัก โดยไปที่ File >> Preferences ใน Arduino IDE
จากนั้นหน้าต่างใหม่จะปรากฏขึ้น และใน " URL ของ Board Manager เพิ่มเติม " ให้เพิ่มลิงก์ด้านล่างแล้วคลิก "ตกลง"
“
ตอนนี้ใน Arduino IDE ของคุณไปที่ Tools >> Board >> Boards Manager
จากนั้นหน้าต่างอื่นจะปรากฏขึ้นโดยที่ในช่องค้นหาพิมพ์ "Attiny" จากนั้นคุณจะได้รับ "DIY ATtiny" จากนั้นคลิกที่ปุ่ม "ติดตั้ง" (ฉันติดตั้งแล้วนั่นคือสาเหตุที่ปุ่มติดตั้งเป็นสีเทา)
ในการเริ่มการเขียนโปรแกรม ATtiny 13 เราต้องเบิร์น Bootloader ลงไป สำหรับสิ่งนั้นไปที่ Tools> Board> ATtiny13
ตอนนี้ไปที่ เครื่องมือ> เวอร์ชัน โปรเซสเซอร์ และตรวจสอบว่าได้เลือก ATtiny เวอร์ชันที่ถูกต้องหรือไม่ เลือก ATtiny13 หรือ ATtiny13a ขึ้นอยู่กับชิปของคุณ
จากนั้นคลิกปุ่ม Burn bootloader ที่ด้านล่างของเมนู Tools
หลังจากเบิร์น bootloader ตอนนี้ ATtiny ก็พร้อมที่จะตั้งโปรแกรมแล้ว ตอนนี้คุณสามารถอัปโหลดโปรแกรมของคุณ
ส่วนประกอบที่จำเป็น
- ไมโครคอนโทรลเลอร์ ATtiny13
- เซอร์โวมอเตอร์
- โพเทนชิออมิเตอร์
- + แบตเตอรี่ 5V
- Arduino IDE
- การเชื่อมต่อสายไฟ
แผนภาพวงจรและการทำงาน
แผนภาพวงจรควบคุมเซอร์โวมอเตอร์โดยใช้หม้อที่มี ATtiny13 แสดงไว้ด้านล่าง
ด้านล่างนี้คือการเชื่อมต่อ
- เชื่อมต่อขาควบคุมเซอร์โวมอเตอร์กับขา 5 ของ ATtiny13
- ต่อกราวด์ของเซอร์โวมอเตอร์เข้ากับพิน 4 ของ ATtiny13
- เชื่อมต่อ VCC ของเซอร์โวมอเตอร์เข้ากับพิน 8 ของ ATtiny13
- เชื่อมต่อพินกลางของโพเทนชิออมิเตอร์กับพิน 7 ของ ATtiny13
- เชื่อมต่อพินที่หนึ่งและสามของโพเทนชิออมิเตอร์กับ VCC และ GND
- เชื่อมต่อขั้วบวกของแบตเตอรี่ + 5V เข้ากับขา 8 ของ ATtiny13
- เชื่อมต่อขั้วลบของแบตเตอรี่ + 5V เข้ากับขา 4 ของ ATtiny13
โพเทนชิออมิเตอร์เชื่อมต่อกับพิน 7 (PB2) ของ ATtiny13 และสายควบคุมของเซอร์โวมอเตอร์เชื่อมต่อกับพิน 5 (PB0)
ที่นี่ค่าโพเทนชิออมิเตอร์จะถูกอ่านและจะถูกแปลงเป็นค่าระหว่าง 0 ถึง 180 จากนั้นค่าของมุมนี้จะถูกแปลงเป็นไมโครวินาทีและพัลส์จะถูกกำหนดให้กับพินควบคุมของเซอร์โวมอเตอร์ด้วยความล่าช้าในระดับไมโครวินาทีที่คำนวณได้ ตอนนี้เซอร์โวมอเตอร์จะหมุนตามค่าของโพเทนชิออมิเตอร์ตามที่แสดงในวิดีโอด้านล่าง