ตัวจับเวลาเป็นคุณสมบัติที่สำคัญของไมโครคอนโทรลเลอร์ช่วยให้คุณสามารถทำงานในช่วงเวลาที่แม่นยำโดยไม่ต้องพึ่งพาความล่าช้า Arduino UNO มีตัวจับเวลาฮาร์ดแวร์ในตัวสามตัว (Timer0, Timer1 และ Timer2) ที่สามารถกำหนดค่าสำหรับฟังก์ชั่นต่าง ๆ เช่นการสร้างสัญญาณ PWM เหตุการณ์เวลาหรืองานกำหนดเวลา บทช่วยสอนนี้จะแนะนำคุณผ่านการทำความเข้าใจและใช้ตัวจับเวลา Arduino
สิ่งที่คุณต้องการ
- Arduino Uno (หรือคณะกรรมการที่เข้ากันได้)
- LED และตัวต้านทาน 220 โอห์ม (สำหรับตัวอย่างตามเวลา)
- เครื่องหั่นขนมปังและสายจัมเปอร์
- Arduino IDE ติดตั้งบนคอมพิวเตอร์ของคุณ
ขั้นตอนที่ 1: ทำความเข้าใจกับตัวจับเวลา Arduino
ไมโครคอนโทรลเลอร์ ATMEGA328P ของ Arduino UNO มีตัวจับเวลาฮาร์ดแวร์สามตัว:
ตัวจับเวลา | ความละเอียดบิต | การใช้งานหลัก |
---|---|---|
ตัวจับเวลา 0 | 8 บิต | Millis (), micros (), PWM บนพิน 5, 6 |
ตัวจับเวลา 1 | 16 บิต | Servo Library, PWM บน Pins 9, 10 |
ตัวจับเวลา 2 | 8 บิต | ฟังก์ชั่น Tone (), PWM บนพิน 3, 11 |
คุณสมบัติที่สำคัญของตัวจับเวลา
- ตัวจับเวลาสามารถสร้างสัญญาณ PWM
- ตัวจับเวลาสามารถกระตุ้นการขัดจังหวะ
- ตัวจับเวลาถูกใช้ภายในโดยฟังก์ชั่น Arduino เช่น
delay()
และmillis()
.
ขั้นตอนที่ 2: สร้างสัญญาณ PWM อย่างง่าย
สัญญาณ PWM (การปรับความกว้างพัลส์) มักใช้เพื่อควบคุมความสว่างของ LED หรือความเร็วมอเตอร์ มาใช้ Timer0 เพื่อสร้างสัญญาณ PWM
รหัสตัวอย่าง: การควบคุมความสว่างของ LED ด้วย PWM
ขั้นตอนที่ 3: การใช้ตัวจับเวลาที่มีการขัดจังหวะ
คุณสามารถกำหนดค่าตัวจับเวลาเพื่อกระตุ้นการขัดจังหวะในช่วงเวลาปกติ ตัวอย่างเช่น Timer1 สามารถตั้งค่าเพื่อสลับ LED ทุกวินาที
รหัสตัวอย่าง: Timer1 interrupt
ขั้นตอนที่ 4: การวัดเวลาด้วยตัวจับเวลา
คุณสามารถใช้ตัวจับเวลาเพื่อวัดระยะเวลาที่แม่นยำ Timer2 เหมาะสำหรับช่วงเวลาเล็ก ๆ เพราะเป็นตัวจับเวลา 8 บิต
ตัวอย่างรหัส: Timer2 สำหรับการวัดเวลา
ขั้นตอนที่ 5: การใช้ไลบรารีตัวจับเวลา
เพื่อให้การทำงานกับตัวจับเวลาง่ายขึ้นคุณสามารถใช้ไลบรารีได้เช่น timerone หรือ Timerthree.
ใช้ไลบรารี Timerone
- ติดตั้งไลบรารี Timerone ใน Arduino IDE
- ใช้เพื่อกำหนดเวลางานได้อย่างง่ายดาย:
แอปพลิเคชันของตัวจับเวลา
- สร้างสัญญาณ PWM ที่แม่นยำสำหรับการควบคุมมอเตอร์
- การกำหนดตารางเวลาโดยไม่ต้องปิดกั้นรหัส (เช่นมัลติทาสก์)
- การวัดช่วงเวลาสำหรับเหตุการณ์
- การสร้างความล่าช้าอย่างแม่นยำโดยไม่ต้องใช้
delay()
- การจัดการการกระทำเป็นระยะเช่น LED กระพริบหรือส่งข้อมูล
การแก้ไขปัญหา
- ตัวจับเวลาความขัดแย้ง: ตรวจสอบให้แน่ใจว่าคุณไม่ได้ใช้ตัวจับเวลาเดียวกันสำหรับหลายฟังก์ชั่น (เช่นไลบรารีเซอร์โวและ PWM)
-
ขัดจังหวะไม่ทำงาน: ตรวจสอบว่าเปิดใช้งานการขัดจังหวะด้วย
interrupts()
. - พฤติกรรมที่ไม่คาดคิด: ตรวจสอบ prescaler สองครั้งและเปรียบเทียบค่าการจับคู่สำหรับเวลาที่ถูกต้อง
บทสรุป
คุณได้เรียนรู้วิธีการใช้ตัวจับเวลา Arduino สำหรับสร้างสัญญาณ PWM จัดการการขัดจังหวะและเวลาในการวัด การควบคุมตัวจับเวลาปลดล็อคคุณสมบัติที่มีประสิทธิภาพสำหรับการสร้างโครงการ Arduino ที่มีประสิทธิภาพและแม่นยำ ทดลองกับการกำหนดค่าที่แตกต่างกันและใช้ตัวจับเวลาเพื่อเพิ่มประสิทธิภาพโครงการต่อไปของคุณ!