Mục lục:

Máy đếm nhịp dựa trên bộ điều khiển vi mô: 5 bước
Máy đếm nhịp dựa trên bộ điều khiển vi mô: 5 bước

Video: Máy đếm nhịp dựa trên bộ điều khiển vi mô: 5 bước

Video: Máy đếm nhịp dựa trên bộ điều khiển vi mô: 5 bước
Video: Arduino | Hệ thống đếm số lượng và phân loại sản phẩm theo màu sắc 2024, Tháng mười hai
Anonim
Image
Image

Máy đếm nhịp là một thiết bị đo thời gian được các nhạc sĩ sử dụng để theo dõi nhịp trong bài hát và phát triển cảm giác về thời gian ở những người mới bắt đầu học một nhạc cụ mới. Nó giúp duy trì cảm giác nhịp điệu rất quan trọng trong âm nhạc.

Máy đếm nhịp được xây dựng ở đây có thể được sử dụng để đặt số nhịp trên mỗi ô nhịp và số nhịp trên phút. Khi dữ liệu thiết lập này được nhập, nó sẽ phát ra tiếng bíp theo dữ liệu đi kèm với ánh sáng thích hợp bằng cách sử dụng đèn LED. Dữ liệu cài đặt được hiển thị trên màn hình LCD.

Bước 1: Các thành phần bắt buộc:

·

  • Vi điều khiển Atmega8A
  • · Màn hình LCD 16 * 2
  • · Piezo Buzzer
  • · Đèn LED (xanh, đỏ)
  • · Điện trở (220e, 330e, 1k, 5.6k)
  • · Nút ấn (2 * chống khóa, 1 * khóa)
  • · Pin di động đồng xu 3V CR2032 (* 2)
  • Giá đỡ pin đồng xu (* 2)
  • · Đầu nối 6pin Relimate (phân cực)

Bước 2: Tạo mạch

Thực hiện các kết nối mạch điện như trong hình trên một tấm veroboard và hàn các kết nối đúng cách

Bước 3: Các tính năng của Metronome

Giao diện của máy đếm nhịp chủ yếu chiếm bởi màn hình LCD. Bên trên nó là bộ vi điều khiển 8A được đặt chính giữa với các đèn LED và còi ở bên phải. Ba công tắc và đầu nối Relimate được đặt ở trên cùng.

Toàn bộ dự án chỉ được cung cấp năng lượng bởi hai pin di động đồng xu (dòng @ 6V 220mAh) với thời gian chạy ước tính từ 20 ngày đến 1 tháng (không liên tục). Do đó, nó có hiệu suất điện năng vừa phải và có yêu cầu hiện tại là 3 - 5 mA.

Công tắc tự khóa được đặt ở cực bên trái và là nút BẬT / TẮT. Nút ở giữa là nút Cài đặt và nút ở bên phải được sử dụng để thay đổi các giá trị cho bpm và nhịp (mỗi ô nhịp).

Khi nhấn công tắc BẬT / TẮT, màn hình LCD sẽ bật và hiển thị giá trị nhịp trên mỗi ô nhịp. Nó đợi 3 giây để người dùng thay đổi giá trị, sau đó nó lấy giá trị kết quả làm đầu vào. Giá trị này nằm trong khoảng 1/4, 2/4, 3/4, 4/4.

Sau đó, nó hiển thị nhịp mỗi phút (bpm) và lại đợi 3 giây để người dùng thay đổi giá trị mà sau đó nó đặt giá trị cụ thể. Thời gian chờ 3 giây này được hiệu chỉnh sau khi người dùng thay đổi giá trị. Các giá trị bpm có thể thay đổi từ 30 đến 240. Nhấn nút Cài đặt trong quá trình thiết lập bpm sẽ đặt lại giá trị của nó thành 30 bpm, điều này rất hữu ích trong việc giảm số lần nhấp vào nút. Các giá trị bpm là bội số của 5.

Sau khi thiết lập xong, đèn nền LCD sẽ tắt để tiết kiệm pin. Buzzer phát ra tiếng bíp một lần cho mỗi nhịp và các đèn LED nhấp nháy lần lượt luân phiên cho mỗi nhịp. Để thay đổi các giá trị, hãy nhấn nút Cài đặt. Khi làm điều đó, đèn nền LCD sẽ bật và dấu nhắc nhịp xuất hiện giống như đã đề cập trước đó với quy trình tương tự sau đó.

Bộ vi điều khiển Atmega8A bao gồm 500 byte EEPROM có nghĩa là bất kỳ giá trị nhịp và bpm nào được nhập vào, vẫn được lưu trữ ngay cả sau khi tắt máy đếm nhịp. Do đó, bật lại, làm cho nó tiếp tục với cùng dữ liệu đã được nhập trước đó.

Đầu nối Relimate thực sự là một tiêu đề SPI có thể được sử dụng cho hai mục đích. Nó có thể được sử dụng để lập trình lại bộ vi điều khiển Atmega8A để cập nhật phần sụn của nó và thêm các tính năng mới cho máy đếm nhịp. Thứ hai, nguồn điện bên ngoài cũng có thể được sử dụng để cung cấp năng lượng cho máy đếm nhịp cho những người dùng khó tính. Nhưng nguồn điện này không được lớn hơn 5,5 vôn và nó sẽ ghi đè lên công tắc BẬT / TẮT. Vì lý do an toàn, công tắc này PHẢI tắt để nguồn cung cấp bên ngoài không bị thiếu với pin có sẵn.

Bước 4: Mô tả

Dự án này được thực hiện bằng vi điều khiển Atmel Atmega8A được lập trình bằng Arduino IDE thông qua Arduino Uno / Mega / Nano được sử dụng làm Lập trình viên ISP.

Bộ vi điều khiển này là phiên bản ít tính năng hơn của Atmel Atmega328p được sử dụng rộng rãi trong Arduino Uno. Atmega8A bao gồm bộ nhớ lập trình 8Kb với RAM 1Kb. Nó là một vi điều khiển 8 bit chạy ở cùng tần số với 328p tức là 16Mhz.

Trong dự án này, vì mức tiêu thụ hiện tại là một khía cạnh quan trọng, nên tần số xung nhịp đã được giảm xuống và bộ dao động 1 Mhz bên trong được sử dụng. Điều này làm giảm đáng kể yêu cầu hiện tại xuống khoảng 3,5 mA @ 3,3V và 5mA @ 4,5V.

Arduino IDE không có cơ sở để lập trình vi điều khiển này. Do đó, một gói (plugin) “Minicore” đã được cài đặt để chạy 8A với bộ dao động bên trong của nó bằng cách sử dụng bộ nạp khởi động Optiboot. Người ta nhận thấy rằng yêu cầu về điện của dự án tăng lên khi điện áp ngày càng tăng. Do đó, để sử dụng năng lượng tối ưu, bộ vi điều khiển đã được thiết lập để chạy ở tốc độ 1 MHz với một pin đồng xu 3V duy nhất chỉ có 3,5mA. Nhưng quan sát thấy rằng màn hình LCD không hoạt động bình thường ở điện áp thấp như vậy. Do đó, quyết định sử dụng hai pin đồng xu mắc nối tiếp đã được áp dụng để tăng hiệu điện thế lên 6V. Nhưng điều này có nghĩa là mức tiêu thụ hiện tại tăng lên 15mA, đây là một nhược điểm lớn vì tuổi thọ pin sẽ rất kém. Ngoài ra nó còn vượt quá giới hạn điện áp an toàn là 5,5V của vi điều khiển 8A.

Do đó, một điện trở 330 ohm được kết nối nối tiếp với nguồn điện 6V để giải quyết vấn đề này. Về cơ bản, điện trở gây ra sụt áp trên chính nó để giảm mức điện áp trong 5,5V để chạy vi điều khiển một cách an toàn. Ngoài ra, giá trị 330 được chọn bằng cách xem xét các yếu tố khác nhau:

  • · Mục tiêu là chạy 8A ở điện áp càng thấp càng tốt để tiết kiệm điện.
  • · Quan sát thấy rằng màn hình LCD ngừng hoạt động dưới 3.2V mặc dù bộ vi điều khiển vẫn hoạt động
  • · Giá trị 330 này đảm bảo rằng điện áp giảm ở các cực chính xác để sử dụng đầy đủ pin đồng xu.
  • · Khi các tế bào đồng xu ở mức cực đại, điện áp vào khoảng 6,3V, với 8A nhận điện áp hiệu dụng 4,6 - 4,7 V (@ 5mA). Và khi pin gần như cạn kiệt, điện áp vào khoảng 4V với 8A và màn hình LCD chỉ nhận đủ điện áp tức là 3.2V để hoạt động chính xác. (@ 3,5mA)
  • · Dưới mức 4v của pin, chúng hoàn toàn vô dụng nếu không còn nước để cung cấp năng lượng cho bất cứ thứ gì. Điện áp giảm trên điện trở thay đổi trong toàn bộ thời gian kể từ khi mức tiêu thụ hiện tại của bộ vi điều khiển 8A và màn hình LCD giảm khi giảm điện áp, về cơ bản hỗ trợ tăng tuổi thọ pin.

Màn hình LCD 16 * 2 được lập trình bằng thư viện LiquidCrystal tích hợp của Arduino IDE. Nó sử dụng 6 chân dữ liệu của vi điều khiển 8A. Ngoài ra, độ sáng và độ tương phản của nó được kiểm soát bằng hai chân dữ liệu. Điều này đã được thực hiện để không sử dụng một thành phần phụ, tức là một chiết áp. Thay vào đó, chức năng PWM của chân dữ liệu D9 được sử dụng để điều chỉnh độ tương phản của màn hình. Ngoài ra, đèn nền LCD cũng cần phải tắt khi không cần thiết, vì vậy điều này sẽ không thể thực hiện được nếu không sử dụng chân dữ liệu để cấp nguồn cho nó. Một điện trở 220 ohm được sử dụng để giới hạn dòng điện qua đèn LED nền.

Buzzer và các đèn LED cũng được kết nối với các chân dữ liệu của 8A (mỗi chân một cái). Điện trở 5,6 k ohm được sử dụng để giới hạn dòng điện qua đèn LED màu đỏ trong khi đèn LED màu xanh lục 1k ohm được sử dụng. Các giá trị điện trở đã được chọn bằng cách thu được một điểm ngọt ngào giữa độ sáng và mức tiêu thụ hiện tại.

Nút BẬT / TẮT không được kết nối với chân dữ liệu và chỉ là một công tắc chuyển dự án. Một trong các thiết bị đầu cuối của nó kết nối với điện trở 330 ohm trong khi đầu kia kết nối với các chân Vcc của màn hình LCD và 8A. Hai nút khác được kết nối với chân dữ liệu được kéo bên trong để cung cấp điện áp thông qua phần mềm. Điều này là cần thiết cho hoạt động của các thiết bị chuyển mạch.

Ngoài ra, chân dữ liệu, nút Thiết lập kết nối với, là một chân Ngắt phần cứng. Quy trình dịch vụ ngắt (ISR) của nó được kích hoạt trong Arduino IDE. Điều này có nghĩa là bất cứ khi nào người dùng muốn chạy menu cài đặt, 8A sẽ tạm dừng hoạt động hiện tại của nó là hoạt động như một máy đếm nhịp và chạy ISR về cơ bản sẽ kích hoạt menu Cài đặt. Nếu không, người dùng sẽ không thể truy cập menu Cài đặt.

Tùy chọn EEPROM được đề cập trước đây đảm bảo rằng dữ liệu đã nhập vẫn được lưu trữ ngay cả sau khi bo mạch được tắt. Và tiêu đề SPI bao gồm 6 chân - Vcc, Gnd, MOSI, MISO, SCK, RST. Đây là một phần của giao thức SPI và như đã đề cập trước đây, một lập trình viên ISP có thể được sử dụng để lập trình lại 8A nhằm bổ sung các tính năng mới hoặc bất kỳ thứ gì khác. Chân Vcc được cách ly khỏi cực dương của pin và do đó Máy đo nhịp cung cấp tùy chọn sử dụng nguồn điện bên ngoài, lưu ý các hạn chế đã đề cập trước đây.

Toàn bộ dự án được xây dựng trong một tấm Veroboard bằng cách hàn các thành phần riêng lẻ và các kết nối thích hợp theo sơ đồ mạch.

Đề xuất: