Mục lục:

Bộ đếm thời gian Arduino: 8 Dự án: 10 Bước (có Hình ảnh)
Bộ đếm thời gian Arduino: 8 Dự án: 10 Bước (có Hình ảnh)

Video: Bộ đếm thời gian Arduino: 8 Dự án: 10 Bước (có Hình ảnh)

Video: Bộ đếm thời gian Arduino: 8 Dự án: 10 Bước (có Hình ảnh)
Video: Top 10 Dự án Arduino HOT nhất 2023 - Tự học lập trình Arduino | Top 10 Arduino projects 2024, Tháng sáu
Anonim
Bộ hẹn giờ Arduino: 8 dự án
Bộ hẹn giờ Arduino: 8 dự án

Arduino Uno hoặc Nano có thể tạo ra tín hiệu kỹ thuật số chính xác trên sáu chân chuyên dụng bằng cách sử dụng ba bộ định thời tích hợp. Chúng chỉ yêu cầu một số lệnh để thiết lập và không sử dụng chu kỳ CPU để chạy!

Việc sử dụng bộ hẹn giờ có thể đáng sợ nếu bạn bắt đầu từ biểu dữ liệu đầy đủ ATMEGA328, có 90 trang dành riêng cho mô tả của chúng! Một số lệnh Arduino tích hợp sẵn đã sử dụng bộ định thời, ví dụ: millis (), delay (), tone (), AnalogWrite () và thư viện servo. Nhưng để sử dụng toàn bộ sức mạnh của chúng, bạn sẽ cần thiết lập chúng thông qua sổ đăng ký. Tôi chia sẻ ở đây một số macro và chức năng để làm cho việc này dễ dàng và minh bạch hơn.

Sau khi tổng quan rất ngắn gọn về bộ hẹn giờ, hãy theo dõi 8 dự án thú vị dựa vào việc tạo tín hiệu với bộ hẹn giờ.

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

Các thành phần bắt buộc
Các thành phần bắt buộc

Để thực hiện tất cả 8 dự án, bạn sẽ cần:

  • Arduino Uno hoặc tương thích
  • Một tấm chắn nguyên mẫu với bảng điều khiển mini
  • 6 cáp jumper breadboard
  • 6 dây nối ngắn breadboard (tự làm từ dây hookup lõi rắn 10cm)
  • 2 đầu cá sấu
  • 1 đèn LED 5mm màu trắng
  • một điện trở 220 Ohm
  • một điện trở 10kOhm
  • chiết áp 10kOhm
  • 2 tụ gốm 1muF
  • 1 tụ điện 10muF điện phân
  • 2 điốt, 1n4148 hoặc tương tự
  • 2 động cơ servo micro SG90
  • 1 loa 8Ohm
  • 20m dây tráng men mỏng (0,13mm)

Bước 2: Tổng quan về bộ định thời gian Arduino để tạo tín hiệu

Timer0 và timer2 là bộ định thời 8 bit, có nghĩa là chúng có thể đếm tối đa từ 0 đến 255. Timer1 là một bộ định thời 16 bit, vì vậy nó có thể đếm đến 65535. Mỗi bộ định thời có hai chân đầu ra liên kết: 6 và 5 cho bộ định thời0, 9 và 10 cho bộ định thời1, 11 và 3 cho bộ định thời2. Bộ đếm thời gian được tăng lên ở mỗi chu kỳ đồng hồ Arduino hoặc ở tốc độ được giảm bởi hệ số tỷ lệ đặt trước, là 8, 64, 256 hoặc 1024 (32 và 128 cũng được phép cho timer2). Bộ định thời đếm từ 0 đến ‘TOP’ và sau đó lặp lại (PWM nhanh) hoặc xuống (PWM đúng pha). Giá trị của ‘TOP’ do đó xác định tần số. Các chân đầu ra có thể đặt, đặt lại hoặc lật theo giá trị của Thanh ghi so sánh đầu ra, do đó chúng xác định chu kỳ làm việc. Chỉ timer1 mới có khả năng đặt tần số và chu kỳ nhiệm vụ một cách độc lập cho cả hai chân đầu ra.

Bước 3: Đèn LED nhấp nháy

Image
Image
Đèn LED nhấp nháy
Đèn LED nhấp nháy
Đèn LED nhấp nháy
Đèn LED nhấp nháy

Tần số thấp nhất có thể đạt được với bộ định thời 8 bit là 16MHz / (511 * 1024) = 30, 6Hz. Vì vậy, để làm cho một đèn LED nhấp nháy với tần số 1Hz, chúng ta cần timer1, có thể đạt tần số nhỏ hơn 256 lần, 0,12 Hz.

Kết nối một đèn LED với cực dương (chân dài) của nó với chân 9 và kết nối cực âm của nó với điện trở 220 Ohm với đất. Tải lên mã. Đèn LED sẽ nhấp nháy ở chính xác 1Hz với chu kỳ nhiệm vụ là 50%. Hàm loop () trống: bộ đếm thời gian được khởi tạo lúc setup () và không cần chú ý thêm.

Bước 4: Bộ điều chỉnh độ sáng LED

Image
Image
LED Dimmer
LED Dimmer
LED Dimmer
LED Dimmer

Điều chế độ rộng xung là một cách hiệu quả để điều chỉnh cường độ của đèn LED. Với một trình điều khiển thích hợp, nó cũng là phương pháp ưa thích để điều chỉnh tốc độ của động cơ điện. Vì tín hiệu được bật 100% hoặc tắt 100% nên không có năng lượng nào bị lãng phí trên điện trở nối tiếp. Về cơ bản, nó giống như nhấp nháy đèn LED nhanh hơn mức mắt có thể theo dõi. Về nguyên tắc, 50Hz là đủ, nhưng nó có thể vẫn nhấp nháy một chút và khi đèn LED hoặc mắt di chuyển, có thể tạo ra một 'vệt' không liên tục khó chịu. Sử dụng tỷ lệ đặt trước là 64 với bộ đếm thời gian 8 bit, chúng tôi nhận được 16MHz / (64 * 256) = 977Hz, phù hợp với mục đích. Chúng tôi chọn timer2, để timer1 vẫn khả dụng cho các chức năng khác và chúng tôi không can thiệp vào hàm Arduino time (), sử dụng timer0.

Trong ví dụ này, chu kỳ làm việc, và do đó cường độ, được điều chỉnh bởi một chiết áp. Đèn LED thứ hai có thể được điều chỉnh độc lập với cùng một bộ đếm thời gian ở chân 3.

Bước 5: Bộ chuyển đổi Digital-to-Analog (DAC)

Image
Image
Bộ chuyển đổi Digital-to-Analog (DAC)
Bộ chuyển đổi Digital-to-Analog (DAC)
Bộ chuyển đổi Digital-to-Analog (DAC)
Bộ chuyển đổi Digital-to-Analog (DAC)

Arduino không có đầu ra tương tự thực sự. Một số mô-đun lấy điện áp tương tự để điều chỉnh một tham số (độ tương phản hiển thị, ngưỡng phát hiện, v.v.). Chỉ với một tụ điện và điện trở, timer1 có thể được sử dụng để tạo ra một điện áp tương tự với độ phân giải 5mV hoặc tốt hơn.

Một bộ lọc thông thấp có thể "trung bình" tín hiệu PWM thành điện áp tương tự. Một tụ điện được nối thông qua một điện trở vào chân PWM. Các đặc tính được xác định bởi tần số PWM và các giá trị của điện trở và tụ điện. Độ phân giải của bộ định thời 8 bit sẽ là 5V / 256 = 20mV, vì vậy chúng tôi chọn Timer1 để có độ phân giải 10 bit. Mạch RC là một bộ lọc thông thấp bậc nhất và nó sẽ có một số gợn sóng. Thang thời gian của mạch RC nên lớn hơn nhiều so với chu kỳ của tín hiệu PWM để giảm độ gợn sóng. Khoảng thời gian chúng ta nhận được độ chính xác 10 bit là 1024 / 16MHz = 64mus. Nếu chúng ta sử dụng một tụ điện 1muF và một điện trở 10kOhm, RC = 10ms. Ripple từ đỉnh đến đỉnh cao nhất là 5V * 0.5 * T / (RC) = 16mV, ở đây được coi là đủ.

Lưu ý rằng DAC này có trở kháng đầu ra rất cao (10kOhm), vì vậy điện áp sẽ giảm đáng kể nếu nó hút dòng điện. Để tránh điều đó, nó có thể được đệm bằng opamp, hoặc có thể chọn sự kết hợp khác của R và C, ví dụ 1kOhm với 10muF.

Trong ví dụ, đầu ra DAC được điều khiển bằng một chiết áp. Một kênh DAC độc lập thứ hai có thể được chạy với timer1 trên chân 10.

Bước 6: Máy đếm nhịp

Image
Image
Máy đếm nhịp
Máy đếm nhịp
Máy đếm nhịp
Máy đếm nhịp

Máy đếm nhịp giúp theo dõi nhịp điệu khi chơi nhạc. Đối với các xung rất ngắn, đầu ra bộ đếm thời gian arduino có thể được đưa trực tiếp đến loa, sẽ tạo ra các tiếng lách cách rõ ràng. Với một chiết áp, tần số nhịp có thể được điều chỉnh từ 40 đến 208 nhịp mỗi phút, trong 39 bước. Timer1 là cần thiết cho độ chính xác cần thiết. Giá trị của ‘TOP’, xác định tần số, được sửa đổi bên trong hàm loop () và điều đó cần chú ý! Bạn thấy ở đây rằng chế độ WGM khác với các ví dụ khác có tần số cố định: chế độ này, với TOP được thiết lập bởi thanh ghi OCR1A, có bộ đệm kép và bảo vệ khỏi việc thiếu TOP và gặp trục trặc lâu dài. Tuy nhiên, điều này có nghĩa là chúng ta chỉ có thể sử dụng 1 chân đầu ra.

Bước 7: Quang phổ âm thanh

Image
Image
Quang phổ âm thanh
Quang phổ âm thanh
Quang phổ âm thanh
Quang phổ âm thanh

Con người có thể nghe thấy hơn 3 bậc độ lớn của tần số âm thanh, từ 20Hz đến 20kHz Ví dụ này tạo ra toàn phổ bằng một chiết áp. Một tụ điện 10muF được đặt giữa loa và Arduino để chặn dòng điện một chiều. Timer1 tạo ra một sóng vuông. Chế độ tạo dạng sóng ở đây là PWM đúng pha. Trong chế độ đó, bộ đếm bắt đầu đếm ngược khi nó đạt đến đỉnh, dẫn đến các xung có giá trị trung bình cố định, ngay cả khi chu kỳ nhiệm vụ thay đổi. Tuy nhiên, nó cũng dẫn đến một khoảng thời gian (gần như) gấp đôi, và nó chỉ xảy ra rằng với tỷ lệ đặt trước 8, timer1 bao phủ toàn bộ phổ âm thanh mà không cần phải thay đổi tỷ lệ đặt trước. Cũng ở đây, vì giá trị của TOP đang được thay đổi khi đang di chuyển, nên việc sử dụng OCR1A làm đầu sẽ giảm sự cố.

Bước 8: Động cơ Servo

Image
Image
Động cơ Servo
Động cơ Servo
Động cơ Servo
Động cơ Servo

Có các thư viện servo mạnh mẽ, nhưng nếu bạn chỉ có hai servo để lái, bạn cũng có thể làm điều đó trực tiếp với timer1, do đó giảm sử dụng CPU, bộ nhớ và tránh bị gián đoạn. Servo SG90 phổ biến nhận tín hiệu 50Hz và độ dài xung mã hóa vị trí. Lý tưởng cho bộ đếm thời gian1. Tần số được cố định, vì vậy cả hai đầu ra trên chân 9 và chân 10 đều có thể được sử dụng để điều khiển các servo một cách độc lập.

Bước 9: Bộ nhân đôi điện áp và biến tần

Bộ nhân đôi điện áp và biến tần
Bộ nhân đôi điện áp và biến tần
Bộ nhân đôi điện áp và biến tần
Bộ nhân đôi điện áp và biến tần
Bộ nhân đôi điện áp và biến tần
Bộ nhân đôi điện áp và biến tần

Đôi khi dự án của bạn yêu cầu điện áp cao hơn 5V hoặc điện áp âm. Nó có thể là chạy MOSFET, chạy phần tử piezo, cấp nguồn cho opamp hoặc đặt lại EEPROM. Nếu dòng điện đủ nhỏ, lên đến ~ 5mA, một máy bơm sạc có thể là giải pháp đơn giản nhất: chỉ cần 2 điốt và hai tụ điện được kết nối với tín hiệu xung từ bộ đếm thời gian cho phép tăng gấp đôi arduino 5V lên 10V. Trong thực tế, có 2 diode giảm, do đó, nó sẽ giống như 8,6V trong thực tế cho bộ phân tần, hoặc -3,6V cho biến tần.

Tần số của sóng vuông phải đủ để bơm đủ điện tích qua các điốt. Một tụ điện 1muF dịch chuyển 5muC thay đổi khi điện áp thay đổi trong khoảng từ 0 đến 5V, do đó để có dòng điện 10mA thì tần số ít nhất phải là 2kHz. Trong thực tế, tần số cao hơn sẽ tốt hơn, vì nó làm giảm gợn sóng. Với timer2 đếm từ 0 đến 255 mà không có tỷ lệ đặt trước, tần số là 62,5kHz, hoạt động tốt.

Bước 10: Truyền nguồn không dây

Image
Image
Truyền điện không dây
Truyền điện không dây
Truyền điện không dây
Truyền điện không dây

Không có gì lạ khi sạc đồng hồ thông minh mà không cần dây cáp, nhưng điều tương tự có thể dễ dàng là một phần của dự án Arduino. Một cuộn dây có tín hiệu tần số cao có thể truyền điện cho một cuộn dây khác gần đó thông qua cảm ứng, mà không cần tiếp xúc điện.

Đầu tiên chuẩn bị các cuộn dây. Tôi dùng một cuộn giấy có đường kính 8,5cm và dây tráng men có đường kính 0,13mm để làm 2 cuộn dây: cuộn sơ cấp có 20 vòng, cuộn thứ cấp có 50 vòng. Độ tự cảm của loại cuộn dây này với N cuộn dây và bán kính R là ~ 5muH * N ^ 2 * R. Vì vậy, với N = 20 và R = 0,0425 cho L = 85muH, điều này đã được xác nhận bằng máy thử linh kiện. Chúng tôi tạo ra một tín hiệu có tần số 516kHz, dẫn đến trở kháng là 2pi * f * L = 275Ohm. Đây là mức đủ cao để Arduino không bị quá dòng.

Để chạy cuộn dây hiệu quả nhất, chúng tôi muốn sử dụng nguồn xoay chiều thực. Có một thủ thuật có thể được thực hiện: hai đầu ra của bộ đếm thời gian có thể chạy ngược pha nhau, bằng cách đảo ngược một trong các đầu ra. Để làm cho nó giống với sóng sin hơn, chúng tôi sử dụng PWM đúng pha. Bằng cách này, giữa chân 9 và chân 10, điện áp luân phiên giữa cả hai 0V, chân 9 + 5V, cả 0V, chân 10 + 5V. Hiệu ứng được hiển thị trong hình từ dấu vết phạm vi (với tỷ lệ đặt trước 1024, phạm vi đồ chơi này không có nhiều băng thông).

Kết nối cuộn sơ cấp với chân 9 và 10. Kết nối một đèn LED với cuộn thứ cấp. Khi đưa cuộn thứ cấp lại gần cuộn sơ cấp thì đèn LED sáng rõ.

Đề xuất: