สารบัญ:

Multi-Timer พร้อมการควบคุมภายนอก: 13 ขั้นตอน
Multi-Timer พร้อมการควบคุมภายนอก: 13 ขั้นตอน

วีดีโอ: Multi-Timer พร้อมการควบคุมภายนอก: 13 ขั้นตอน

วีดีโอ: Multi-Timer พร้อมการควบคุมภายนอก: 13 ขั้นตอน
วีดีโอ: การใช้งาน Timer สำหรับ PLC Board 2024, กรกฎาคม
Anonim
Multi-Timer พร้อมระบบควบคุมภายนอก
Multi-Timer พร้อมระบบควบคุมภายนอก

โปรเจ็กต์ Instructable นี้สร้างขึ้นจากตัวจับเวลาหลายฟังก์ชัน

ตัวจับเวลานี้สามารถทำงานเป็น:

  1. นาฬิกาปลุกเอนกประสงค์ที่สามารถเลือกเวลาได้ตั้งแต่ 1 วินาทีถึง +90 ชั่วโมง มีการนับถอยหลังพร้อมเสียงเตือนและ/หรือการควบคุมอุปกรณ์ภายนอกจนเสร็จ จากนั้นจึงนับเวลานับตั้งแต่การเตือน
  2. ตั้งเวลางีบได้ 7 ครั้ง นับถอยหลังและปลุกเมื่อเสร็จสิ้น
  3. ตัวจับเวลาทำสมาธิที่สามารถเลือกได้ 4 ครั้ง โดยมีการนับถอยหลังและเสียงร้องสั้นๆ เมื่อเสร็จสิ้น นับขึ้นพร้อมกับอีก 5 นาทีหลังจากนั้น

โครงการนี้อาจสร้างอีเทอร์ตามที่อธิบายไว้ที่นี่หรือแก้ไขให้เหมาะสม ก่อนหน้านี้ฉันสร้างตัวจับเวลาด้วยฟังก์ชันนี้และใช้ใน Instructable แรกของฉันเพื่อควบคุมกล่องรับแสง UV

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

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

ขั้นตอนที่ 1: ภาพรวมองค์ประกอบฮาร์ดแวร์

อุปกรณ์นี้ใช้พลังงานจากแบตเตอรี่ AAA 4 ก้อนและควบคุมโดย Arduino Pro Mini 5V

เสียงกริ่ง/ลำโพงขนาดเล็กจะส่งเสียงเตือน

รีเลย์ขนาดเล็ก 5v ให้แรงดันไฟฟ้าควบคุมกับอุปกรณ์ภายนอก แหล่งที่มาของเอาต์พุตแรงดันควบคุมนี้ให้ความยืดหยุ่น

เครื่องเข้ารหัสแบบโรตารี่พร้อมปุ่มกดช่วยให้สามารถเลือกเมนูได้

จอแสดงผล OLED และสวิตช์เริ่ม/หยุดชั่วขณะทำให้อินเทอร์เฟซผู้ใช้สมบูรณ์

ฮาร์ดแวร์อิเล็กทรอนิกส์เพิ่มเติมประกอบด้วยสวิตช์เปิดปิด SPDT และแจ็คโทรศัพท์ขนาดเล็กเพื่อเชื่อมต่อกับอุปกรณ์ภายนอก

นอกจากนี้ยังมีไฟล์ที่จะช่วยคุณในโครงการนี้:

ไฟล์ STL สำหรับกรณีโครงการที่พิมพ์ 3 มิติ

ภาพหน้ากากทองแดงและบัดกรีสำหรับการแกะสลักและการตกแต่งแผงวงจรควบคุมและเครื่องเข้ารหัสแบบหมุน

ภาพแผนผังและบอร์ดเป็นข้อมูลอ้างอิงสำหรับผู้ที่ต้องการแก้ไขการออกแบบของฉัน

คุณอาจต้องการทบทวนคำแนะนำของฉันเกี่ยวกับการสร้างแผงวงจรสองด้านเป็นตัวอย่างของวิธีการผลิตแผงวงจร

ขั้นตอนที่ 2: ภาพรวมซอฟต์แวร์

นอกจากไฟล์ต้นทางของ Arduino แล้ว ยังมีข้อมูลเพิ่มเติมที่อาจเป็นประโยชน์..

ไลบรารีการควบคุมฮาร์ดแวร์จะใช้เมื่อพร้อมใช้งาน (ปุ่มดีบักซ์, การควบคุม OLED, การอ่านตัวเข้ารหัสแบบหมุน)

โปรแกรมใช้เครื่องสถานะ จำกัด อย่างง่าย (FSM) เพื่อควบคุมการเรียกใช้โค้ดเป็นคำสั่งสวิตช์ในฟังก์ชันลูป

มีการกำหนดคลาสเมนูเพื่อให้สามารถเลือกตัวเลือกที่แสดงบน OLED และการเลือกโดยใช้ตัวเข้ารหัสแบบหมุนได้

อินพุตถูกนำไปใช้โดยการทำโพลโดยตรง (ขับเคลื่อนโดยไม่ขัดจังหวะ) เนื่องจากไม่ใช่เวลาวิกฤติและทำให้โค้ดชัดเจนขึ้น

พิมพ์คำสั่งไปยัง Serial เพื่อช่วยในการติดตามการเรียกใช้โค้ดและการดีบัก

องค์ประกอบโครงสร้างโปรแกรมประเภทต่างๆ ได้แก่:

  • แท็บโค้ดหลายแท็บเพื่อแยกฟังก์ชันและตัวแปรควบคุมฮาร์ดแวร์บางส่วน
  • สลับคำสั่งเพื่อตั้งค่าสถานะ (FSM) และตัวแปรควบคุม
  • คำจำกัดความของโครงสร้าง
  • การแจงนับเพื่อให้สามารถกำหนดค่าสถานะเป็นข้อความได้
  • #define คำจำกัดความของโปรเซสเซอร์ล่วงหน้าสำหรับพินฮาร์ดแวร์และค่ามาตรฐาน

ขั้นตอนที่ 3: รายการชิ้นส่วน

สร้างสิ่งที่แนบมา
สร้างสิ่งที่แนบมา

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

ฉันพิมพ์ชิ้นส่วนทั้งหมดโดยใช้เส้นพลาสติก PLA สีหนึ่งสำหรับด้านบนและด้านล่างของกล่อง และอีกสีหนึ่งตัดกันสำหรับปุ่มและกรอบ (ซึ่งติดอยู่ด้านบน) ฉันจะไม่ระบุการตั้งค่าตัวแบ่งส่วนข้อมูลทั้งหมดของฉัน แต่ใช้ Tri - เติมหกเหลี่ยมอย่างน้อย 35% เพื่ออนุญาตให้แตะสกรูมุมและการตั้งค่า "ไม่รองรับ" สำหรับการอ่านตัวอักษรที่มีรอยบาก ฉันพิมพ์กล่องโดยใช้ความสูงของเลเยอร์ "ปกติ" ของเครื่องพิมพ์

ขั้นตอนที่ 9: ออกแบบและเขียนโค้ด

ขั้นตอนนี้เป็นทางเลือก แต่แนะนำเพื่อความเข้าใจที่ดีขึ้น

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

ความคิดเห็นต่อไปนี้อาจเป็นประโยชน์ในการทำความเข้าใจกระบวนการนี้

  • ความคิดเห็น- แสดงความคิดเห็นอย่างกว้างขวางในขณะที่คุณไป - ฉันมักจะเขียนความคิดเห็นก่อนที่จะเขียนโค้ด
  • แบ่งและพิชิต - ใช้ฟังก์ชัน คลาส และโมดูล (แท็บ) ใช้คอมไพล์บ่อย (ตรวจสอบ) เพื่อตรวจสอบไวยากรณ์ ดีบัก - ใช้คำสั่งพิมพ์เพื่อตรวจสอบโฟลว์และค่าทดสอบและอินเทอร์เฟซฮาร์ดแวร์ อย่ากลัวที่จะจัดการกับปัญหาที่เกิดขึ้น เพราะไม่มีใครเขียนโค้ดที่ปราศจากข้อผิดพลาด!
  • ค่าคงที่ - #define คำแนะนำก่อนคอมไพเลอร์กำหนดชื่อให้กับหมายเลขพิน คำจำกัดความตัวแปร Const พร้อมความคิดเห็นจะลดหรือกำจัดตัวเลข "วิเศษ" การใช้ค่าคงที่ที่จุดเริ่มต้นของโปรแกรมหรือฟังก์ชันช่วยให้สามารถเปลี่ยนพารามิเตอร์ได้โดยไม่ต้องเขียนโค้ดใหม่
  • ไลบรารีที่กำหนดไว้ล่วงหน้า - การใช้ไลบรารีที่กำหนดไว้ล่วงหน้าช่วยลดภาระในการเขียนโปรแกรมและเวลาในการดีบัก
  • Design Blocks - สร้างโดยใช้ฟังก์ชัน การแยกโค้ดในแท็บแยกกัน (โปรแกรมที่เกี่ยวข้อง &.hfiles) การแจงนับ คลาส และโครงสร้าง มุ่งความสนใจไปที่แต่ละรายการเพื่อทำความเข้าใจวิธีการทำงานที่เกี่ยวข้องกับโค้ดที่เหลือ
  • State Machine (s) - นี่คือรูปแบบการเขียนโปรแกรมที่ทำงานได้ดีกับ Arduinos หรือโปรแกรมใดๆ ที่ใช้ในการควบคุมเอาต์พุตหรือตอบสนองอินพุต มีหลายรสชาติของเครื่องของรัฐ รหัสนี้ใช้เครื่องสถานะตามคำสั่งสวิตช์ในฟังก์ชันลูป แบบฟอร์มนี้เข้าใจง่ายและแก้ไขข้อบกพร่อง
  • จอแสดงผลและเมนู - เอาต์พุต OLED นั้นสั้น แต่ให้ข้อเสนอแนะที่เพียงพอสำหรับผู้ใช้ทั่วไปและรองรับการเลือกตัวเลือก มันรวมเข้ากับเครื่องของรัฐได้ดี (เกือบทุกสถานะมีหน้าจอ OLED ที่เกี่ยวข้อง) คลาสเมนูมีประโยชน์ในการแยกรหัสเพื่อแสดงและเลือกตัวเลือกเมนู

โปรดอ่านโปรแกรมหลาย ๆ ครั้ง ช่วยในการใช้หนึ่งฟังก์ชันหรือส่วนในแต่ละครั้ง ฉันมักจะไม่เข้าใจรหัสที่ฉันเขียนเว้นแต่ฉันจะอ่านมันอย่างน้อยสองครั้ง!

ขั้นตอนที่ 10: ติดตั้งโปรแกรม

คัดลอกไฟล์ที่แนบมาไปยังคอมพิวเตอร์ของคุณ จากนั้นแตกไฟล์ลงในไดเร็กทอรี Sketches

เชื่อมต่อ Arduino กับคอมพิวเตอร์ของคุณและดาวน์โหลดรหัสโปรแกรมในลักษณะปกติ เปิดมอนิเตอร์อนุกรม Arduino IDE เพื่อตรวจสอบว่าโปรแกรมกำลังทำงานและช่วยในการดีบัก

ขั้นตอนที่ 11: ประกอบตัวจับเวลา

ประกอบตัวจับเวลา
ประกอบตัวจับเวลา
ประกอบตัวจับเวลา
ประกอบตัวจับเวลา
ประกอบตัวจับเวลา
ประกอบตัวจับเวลา
ประกอบตัวจับเวลา
ประกอบตัวจับเวลา

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

  1. OLED และสายเคเบิล
  2. สวิตช์สตาร์ท/หยุดและสายไฟ
  3. เครื่องเข้ารหัสโรตารี่และสายเคเบิล
  4. ลำโพง / Buzzer และสายไฟ
  5. แจ็คควบคุมภายนอกและสายไฟ
  6. สวิตช์เปิด/ปิดแบบสไลด์และการเดินสายไฟ (ตรวจสอบการวางแนวอีกครั้งเพื่อให้เปิดอยู่ในทิศทางที่คุณต้องการ

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

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

ด้านล่างของตัวเครื่องเชื่อมต่อกับด้านบนโดยใช้สกรูหัวกลม 4-40 ตัว หนึ่งตัวในแต่ละมุม สี่รูที่ด้านบนควรถูกต๊าปด้วยการต๊าป 4/40 หรือถ้าคุณใช้เม็ดมีดเกลียว 4-40 คุณจะต้องเจาะรูเพื่อรับรู ต้องเจาะรู 4 รูสำหรับติดตั้งแผงวงจรหลักที่ด้านล่างด้วย แนบบอร์ดนี้เข้ากับตัวยึดแบตเตอรี่แบบสแน็ปอินและทำเครื่องหมายตำแหน่งของรู เจาะตามความเหมาะสมกับสกรูยึดของคุณ

ขั้นตอนที่ 12: การทดสอบการรวม

การทดสอบบูรณาการ
การทดสอบบูรณาการ
การทดสอบบูรณาการ
การทดสอบบูรณาการ
การทดสอบบูรณาการ
การทดสอบบูรณาการ

การทดสอบขั้นสุดท้าย (การรวมระบบ) ทำได้โดยลองใช้ตัวเลือกเมนูทั้งหมดและตรวจสอบว่าใช้งานได้กับฮาร์ดแวร์ตามที่ออกแบบไว้ สำหรับรหัสที่ฉันให้ไว้นั่นน่าจะเพียงพอแล้ว หากคุณเขียนโค้ดของคุณเองหรือแก้ไขเหมือง การทดสอบของคุณจะต้องครอบคลุมมากกว่านี้ ฉันไม่เชื่อว่าการเลือกเวลาทั้งหมดจำเป็นต้องใช้ แต่คุณต้องลองตัวเลือกการเตือนมาตรฐานทั้งหมด และตรวจสอบการเตือนการงีบหลับและการทำสมาธิทำงานตามที่ออกแบบไว้

ขั้นตอนที่ 13: ความคิดสุดท้าย

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

ขอขอบคุณที่สละเวลาดูและ/หรือสร้างโครงการนี้

แนะนำ: