สารบัญ:

เครื่องเมตรอนอมที่ใช้ไมโครคอนโทรลเลอร์: 5 ขั้นตอน
เครื่องเมตรอนอมที่ใช้ไมโครคอนโทรลเลอร์: 5 ขั้นตอน

วีดีโอ: เครื่องเมตรอนอมที่ใช้ไมโครคอนโทรลเลอร์: 5 ขั้นตอน

วีดีโอ: เครื่องเมตรอนอมที่ใช้ไมโครคอนโทรลเลอร์: 5 ขั้นตอน
วีดีโอ: EP1/1 บทที่1 เริ่มต้นใช้งานไมโครคอนโทรลเลอร์ Arduino 2024, กรกฎาคม
Anonim
Image
Image

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

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

ขั้นตอนที่ 1: ส่วนประกอบที่จำเป็น:

·

  • ไมโครคอนโทรลเลอร์ Atmega8A
  • · จอ LCD 16*2 จอ
  • · Piezo Buzzer
  • · ไฟ LED (เขียว แดง)
  • · ตัวต้านทาน (220e, 330e, 1k, 5.6k)
  • · ปุ่มกด (2* ป้องกันการล็อค, 1* ล็อค)
  • · แบตเตอรี่เซลล์แบบเหรียญ 3V CR2032 (*2)
  • ที่ใส่แบตเตอรี่แบบเหรียญ (*2)
  • · ขั้วต่อ Relimate (โพลาไรซ์) 6 พิน

ขั้นตอนที่ 2: การสร้างวงจร

ทำการเชื่อมต่อวงจรตามที่แสดงในภาพบนเวโรบอร์ดและประสานการเชื่อมต่ออย่างถูกต้อง

ขั้นตอนที่ 3: คุณสมบัติของเครื่องเมตรอนอม

อินเทอร์เฟซของเครื่องเมตรอนอมส่วนใหญ่ถูกครอบครองโดยหน้าจอ LCD ด้านบนเป็นไมโครคอนโทรลเลอร์ 8A วางตรงกลางพร้อมไฟ LED และออดทางด้านขวา สวิตช์สามตัวและขั้วต่อ Relimate อยู่ที่ด้านบน

ทั้งโครงการใช้พลังงานจากแบตเตอรี่เซลล์แบบเหรียญสองก้อนเท่านั้น (ในซีรีส์ @6V 220mAh) โดยมีระยะเวลาใช้งานโดยประมาณ 20 วัน ถึง 1 เดือน (ไม่ต่อเนื่อง) ดังนั้นจึงมีประสิทธิภาพด้านพลังงานปานกลางและมีความต้องการกระแสไฟ 3 – 5 mA

สวิตช์ล็อคตัวเองอยู่ที่ด้านซ้ายสุดและเป็นปุ่มเปิด/ปิด ปุ่มที่อยู่ตรงกลางคือปุ่มตั้งค่า และปุ่มทางด้านขวาใช้เพื่อเปลี่ยนค่า bpm และ beats (ต่อบาร์)

เมื่อกดสวิตช์เปิด/ปิด จอ LCD จะเปิดขึ้นและแสดงค่าของจังหวะต่อบาร์ รอ 3 วินาทีเพื่อให้ผู้ใช้เปลี่ยนค่าหลังจากนั้นจะใช้ค่าผลลัพธ์เป็นอินพุต ค่านี้อยู่ในช่วงระหว่าง 1/4, 2/4, 3/4, 4/4

จากนั้นจะแสดงจังหวะต่อนาที (bpm) และรออีกครั้งเป็นเวลา 3 วินาทีเพื่อให้ผู้ใช้เปลี่ยนค่าหลังจากนั้นจะตั้งค่าเฉพาะ เวลารอ 3 วินาทีนี้จะถูกปรับเทียบหลังจากที่ผู้ใช้เปลี่ยนค่า ค่า bpm สามารถเปลี่ยนแปลงได้ตั้งแต่ 30 ถึง 240 การกดปุ่มตั้งค่าระหว่างการตั้งค่า bpm จะรีเซ็ตค่าเป็น 30 bpm ซึ่งมีประโยชน์ในการลดจำนวนการคลิกปุ่ม ค่า bpm เป็นทวีคูณของ 5

หลังจากตั้งค่าเสร็จแล้ว ไฟหน้าจอ LCD จะดับลงเพื่อประหยัดแบตเตอรี่ Buzzer จะส่งเสียงบี๊บหนึ่งครั้งสำหรับทุกจังหวะ และไฟ LED จะกะพริบทีละครั้งสลับกันสำหรับแต่ละจังหวะ หากต้องการเปลี่ยนค่า ให้กดปุ่มตั้งค่า เมื่อทำเช่นนั้นไฟแบ็คไลท์ LCD จะเปิดขึ้นและพรอมต์จังหวะจะปรากฏขึ้นตามที่กล่าวไว้ก่อนหน้านี้ด้วยขั้นตอนเดียวกันหลังจากนั้น

ไมโครคอนโทรลเลอร์ Atmega8A ประกอบด้วย EEPROM ขนาด 500 ไบต์ ซึ่งหมายความว่าจะป้อนค่าของบีตและ bpm ใดก็ตาม จะยังคงจัดเก็บไว้แม้หลังจากปิดเครื่องเมตรอนอม ดังนั้นการเปิดใช้อีกครั้ง ทำให้กลับมาทำงานต่อด้วยข้อมูลเดิมที่ป้อนไว้ก่อนหน้านี้

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

ขั้นตอนที่ 4: คำอธิบาย

โปรเจ็กต์นี้สร้างขึ้นโดยใช้ไมโครคอนโทรลเลอร์ Atmel Atmega8A ซึ่งตั้งโปรแกรมโดยใช้ Arduino IDE ผ่าน Arduino Uno/Mega/Nano ที่ใช้เป็นโปรแกรมเมอร์ ISP

ไมโครคอนโทรลเลอร์นี้เป็น Atmel Atmega328p รุ่นที่มีคุณลักษณะน้อยกว่าซึ่งใช้กันอย่างแพร่หลายใน Arduino Uno Atmega8A ประกอบด้วยหน่วยความจำที่ตั้งโปรแกรมได้ 8Kb พร้อม RAM 1Kb เป็นไมโครคอนโทรลเลอร์ 8 บิตที่ทำงานด้วยความถี่เดียวกับ 328p เช่น 16Mhz

ในโครงการนี้ เนื่องจากการบริโภคในปัจจุบันเป็นสิ่งสำคัญ ความถี่สัญญาณนาฬิกาจึงลดลง และใช้ออสซิลเลเตอร์ภายใน 1 เมกะเฮิรตซ์ ซึ่งลดความต้องการในปัจจุบันลงอย่างมากเหลือประมาณ 3.5 mA @3.3V และ 5mA @ 4.5V

Arduino IDE ไม่มีสิ่งอำนวยความสะดวกในการเขียนโปรแกรมไมโครคอนโทรลเลอร์นี้ ดังนั้นจึงมีการติดตั้งแพ็คเกจ “Minicore” (ปลั๊กอิน) เพื่อเรียกใช้ 8A ด้วยออสซิลเลเตอร์ภายในโดยใช้ Optiboot bootloader สังเกตว่าความต้องการพลังงานของโครงการเพิ่มขึ้นตามแรงดันไฟฟ้าที่เพิ่มขึ้น ดังนั้นเพื่อการใช้พลังงานที่เหมาะสม ไมโครคอนโทรลเลอร์จึงถูกตั้งค่าให้ทำงานที่ 1 MHz โดยใช้แบตเตอรี่แบบเหรียญ 3V เพียง 3.5mA แต่สังเกตได้ว่าจอ LCD ทำงานไม่ถูกต้องเมื่อใช้แรงดันไฟต่ำเช่นนี้ ดังนั้น การตัดสินใจใช้แบตเตอรีแบบเหรียญสองก้อนในอนุกรมจึงถูกนำไปใช้กับแรงดันไฟที่ 6V แต่นี่หมายความว่าการบริโภคในปัจจุบันเพิ่มขึ้นเป็น 15mA ซึ่งเป็นข้อเสียเปรียบอย่างมากเนื่องจากอายุการใช้งานแบตเตอรี่จะต่ำมาก นอกจากนี้ยังเกินขีดจำกัดแรงดันไฟฟ้าที่ปลอดภัยที่ 5.5V ของไมโครคอนโทรลเลอร์ 8A

ดังนั้นตัวต้านทาน 330 โอห์มจึงเชื่อมต่อแบบอนุกรมกับแหล่งจ่ายไฟ 6V เพื่อกำจัดปัญหานี้ โดยทั่วไปแล้วตัวต้านทานจะทำให้แรงดันไฟฟ้าตกคร่อมตัวเองเพื่อลดระดับแรงดันไฟฟ้าภายใน 5.5V เพื่อให้ไมโครคอนโทรลเลอร์ทำงานอย่างปลอดภัย นอกจากนี้ยังเลือกค่า 330 โดยคำนึงถึงปัจจัยต่างๆ ดังนี้

  • · เป้าหมายคือการเรียกใช้ 8A ที่แรงดันไฟฟ้าต่ำที่สุดเท่าที่จะทำได้เพื่อประหยัดพลังงาน
  • · พบว่า LCD หยุดทำงานต่ำกว่า 3.2V แม้ว่าไมโครคอนโทรลเลอร์จะยังคงทำงานอยู่ก็ตาม
  • · ค่า 330 นี้ช่วยให้แน่ใจว่าแรงดันไฟตกที่จุดสุดขั้วนั้นแม่นยำทุกประการเพื่อใช้งานแบตเตอรี่แบบเหรียญได้อย่างเต็มที่
  • · เมื่อเซลล์เหรียญอยู่ที่จุดสูงสุด แรงดันไฟฟ้าจะอยู่ที่ประมาณ 6.3V โดยที่ 8A ได้รับแรงดันไฟฟ้าที่มีประสิทธิภาพ 4.6 – 4.7 V (@ 5mA) และเมื่อแบตเตอรี่ใกล้จะหมด แรงดันไฟฟ้าอยู่ที่ประมาณ 4V โดยที่ 8A และจอ LCD ได้รับแรงดันไฟฟ้าที่เพียงพอ นั่นคือ 3.2V เพื่อให้ทำงานได้อย่างถูกต้อง (@3.5mA)
  • · ต่ำกว่าระดับ 4v ของแบตเตอรี่ พวกมันไร้ประโยชน์อย่างมีประสิทธิภาพโดยไม่มีน้ำผลไม้เหลือให้พลังงาน แรงดันไฟฟ้าตกคร่อมตัวต้านทานจะแปรผันตลอดเวลาเนื่องจากการใช้กระแสไฟของไมโครคอนโทรลเลอร์ 8A และจอ LCD จะลดลงด้วยแรงดันไฟฟ้าที่ลดลงซึ่งจะช่วยยืดอายุการใช้งานแบตเตอรี่ได้

LCD ขนาด 16*2 ถูกตั้งโปรแกรมโดยใช้ไลบรารี LiquidCrystal ในตัวของ Arduino IDE ใช้หมุดข้อมูล 6 ตัวของไมโครคอนโทรลเลอร์ 8A นอกจากนี้ ความสว่างและคอนทราสต์ยังถูกควบคุมโดยใช้หมุดข้อมูลสองตัว สิ่งนี้ทำเพื่อไม่ให้ใช้ส่วนประกอบพิเศษเช่นโพเทนชิออมิเตอร์ แต่กลับใช้ฟังก์ชัน PWM ของ data pin D9 เพื่อปรับความคมชัดของหน้าจอแทน นอกจากนี้ จำเป็นต้องปิดไฟแบ็คไลท์ LCD เมื่อไม่ต้องการ ดังนั้นจึงไม่สามารถทำได้โดยไม่ต้องใช้ดาต้าพินเพื่อจ่ายไฟ ใช้ตัวต้านทาน 220 โอห์มเพื่อจำกัดกระแสไฟ LED แบ็คไลท์

Buzzer และไฟ LED ยังเชื่อมต่อกับหมุดข้อมูลของ 8A (อย่างละอัน) ตัวต้านทาน 5.6 k ohm ถูกใช้เพื่อจำกัดกระแสไฟ LED สีแดงในขณะที่ 1k ohm ใช้สำหรับสีเขียว ค่าตัวต้านทานได้รับเลือกโดยการหาจุดที่เหมาะสมระหว่างความสว่างและการใช้กระแสไฟ

ปุ่มเปิด/ปิดไม่ได้เชื่อมต่อกับดาต้าพิน และเป็นเพียงสวิตช์ที่เปลี่ยนโปรเจ็กต์ เทอร์มินัลหนึ่งเชื่อมต่อกับตัวต้านทาน 330 โอห์ม ในขณะที่อีกขั้วหนึ่งเชื่อมต่อกับพิน Vcc ของ LCD และ 8A ปุ่มอีกสองปุ่มเชื่อมต่อกับหมุดข้อมูลซึ่งถูกดึงขึ้นภายในเพื่อจ่ายแรงดันไฟผ่านซอฟต์แวร์ นี่เป็นสิ่งจำเป็นสำหรับการทำงานของสวิตช์

นอกจากนี้ หมุดข้อมูล ปุ่มตั้งค่าที่เชื่อมต่อคือพินฮาร์ดแวร์ขัดจังหวะ รูทีนบริการขัดจังหวะ (ISR) ถูกเปิดใช้งานใน Arduino IDE สิ่งนี้หมายความว่าเมื่อใดก็ตามที่ผู้ใช้ต้องการเรียกใช้เมนูการตั้งค่า 8A จะหยุดการทำงานปัจจุบันของการทำงานเป็นเครื่องเมตรอนอม และเรียกใช้ ISR ซึ่งโดยทั่วไปจะเปิดใช้งานเมนูการตั้งค่า มิฉะนั้น ผู้ใช้จะไม่สามารถเข้าถึงเมนูตั้งค่าได้

ตัวเลือก EEPROM ที่กล่าวถึงก่อนหน้านี้ช่วยให้แน่ใจว่าข้อมูลที่ป้อนจะยังคงถูกจัดเก็บไว้แม้ว่าจะปิดบอร์ดแล้วก็ตาม และส่วนหัว SPI ประกอบด้วย 6 พิน – Vcc, Gnd, MOSI, MISO, SCK, RST นี่เป็นส่วนหนึ่งของโปรโตคอล SPI และดังที่ได้กล่าวไว้ก่อนหน้านี้ โปรแกรมเมอร์ ISP สามารถใช้เพื่อตั้งโปรแกรม 8A อีกครั้งเพื่อเพิ่มคุณสมบัติใหม่หรืออย่างอื่น พิน Vcc ถูกแยกออกจากขั้วบวกของแบตเตอรี่ ดังนั้นเครื่องเมตรอนอมจึงมีตัวเลือกในการใช้แหล่งจ่ายไฟภายนอกโดยคำนึงถึงข้อจำกัดที่กล่าวถึงก่อนหน้านี้

โครงการทั้งหมดถูกสร้างขึ้นใน Veroboard โดยการบัดกรีส่วนประกอบแต่ละส่วนและการเชื่อมต่อที่เหมาะสมตามแผนภาพวงจร

แนะนำ: