Mục lục:

Nhiều nến điện tử: 3 bước
Nhiều nến điện tử: 3 bước

Video: Nhiều nến điện tử: 3 bước

Video: Nhiều nến điện tử: 3 bước
Video: Vào lệnh với ĐỌC NẾN mà không cần PHÂN TÍCH NHIỀU 2024, Tháng mười một
Anonim
Nhiều nến điện tử
Nhiều nến điện tử

Nến điện tử đã được đăng nhiều lần trên Các vật hướng dẫn vậy tại sao lại là nến này?

Ở nhà tôi có những ngôi nhà Giáng sinh bán trong suốt nhỏ này có đèn LED chiếu sáng và một cục pin nhỏ. Một số ngôi nhà có đèn LED với hiệu ứng ngọn nến và một số ngôi nhà có đèn LED chỉ sáng. Pin nhỏ cạn tương đối nhanh và vì tôi muốn có hiệu ứng ngọn nến trong tất cả các ngôi nhà nên tôi quyết định biến nó thành một dự án PIC. Tất nhiên bạn cũng có thể biến nó thành một dự án Arduino.

Vậy điều gì đã làm nên sự đặc biệt của loại nến điện tử này? PIC và Arduino đều có phần cứng điều biến độ rộng xung (PWM) trên bo mạch có thể được sử dụng để tạo hiệu ứng nến bằng đèn LED nhưng trong trường hợp của tôi, tôi muốn có 5 nến điện tử độc lập sử dụng một bộ điều khiển và điều đó không có, ít nhất là không mà tôi biết. Giải pháp tôi đã sử dụng là làm cho năm tín hiệu PWM độc lập này hoàn toàn trong phần mềm.

Bước 1: Điều chế độ rộng xung trong phần mềm

Điều chế độ rộng xung đã được mô tả nhiều lần, ví dụ: trong Bài viết Arduino này:

PIC và Arduino có phần cứng PWM đặc biệt trên bo mạch giúp việc tạo tín hiệu PWM này trở nên đơn giản. Nếu chúng ta muốn tạo một hoặc nhiều tín hiệu PWM trong phần mềm, chúng ta cần hai bộ định thời:

  1. Một bộ đếm thời gian được sử dụng để tạo tần số PWM
  2. Một bộ đếm thời gian được sử dụng để tạo chu kỳ nhiệm vụ PWM

Cả hai bộ định thời tạo ra và ngắt khi hoàn thành và do đó việc xử lý tín hiệu PWM được thực hiện hoàn toàn theo hướng ngắt. Đối với tần số PWM, tôi sử dụng bộ định thời 0 của PIC và để nó tràn. Với xung nhịp bộ dao động bên trong là 8 MHz và tỷ lệ đặt trước là 64, công thức là: Fosc / 4/256/64 = 2.000.000 / 256/64 = 122 Hz hoặc 8, 2 ms. Tần số phải đủ cao để mắt người không thể phát hiện ra nó. Tần số 122 Hz là đủ cho điều đó. Điều duy nhất mà quy trình ngắt hẹn giờ này làm là sao chép chu kỳ nhiệm vụ cho một chu kỳ PWM mới và bật tất cả các đèn LED. Nó thực hiện điều này cho tất cả 5 đèn LED một cách độc lập.

Giá trị của bộ đếm thời gian để xử lý chu kỳ nhiệm vụ PWM phụ thuộc vào cách chúng ta tạo hiệu ứng nến. Trong cách tiếp cận của mình, tôi mô phỏng hiệu ứng này bằng cách tăng chu kỳ nhiệm vụ với giá trị 3 để tăng độ sáng của đèn LED và giảm với giá trị 25 để giảm độ sáng của đèn LED. Bằng cách này, bạn sẽ có được một hiệu ứng giống như ngọn nến. Vì tôi sử dụng giá trị tối thiểu là 3, nên số bước để điều khiển chu kỳ nhiệm vụ hoàn chỉnh với một byte là 255/3 = 85. Điều này có nghĩa là bộ định thời chu kỳ nhiệm vụ PWM phải chạy với tần số gấp 85 lần tần số của Bộ hẹn giờ tần số PWM là 85 * 122 = 10.370 Hz.

Đối với chu kỳ nhiệm vụ PWM, tôi sử dụng bộ định thời 2 của PIC. Đây là bộ đếm thời gian có tự động tải lại và nó sử dụng công thức sau: Giai đoạn = (Nạp lại + 1) * 4 * Tosc * Giá trị tỷ lệ đặt trước của Timer2. Với tải lại là 191 và tỷ lệ đặt trước là 1, chúng tôi nhận được khoảng thời gian là (191 + 1) * 4 * 1 / 8.000.000 * 1 = 96 chúng tôi hoặc 10.416 Hz. Quy trình ngắt chu kỳ nhiệm vụ PWM kiểm tra xem chu kỳ nhiệm vụ đã trôi qua chưa và tắt đèn LED mà chu kỳ nhiệm vụ đã hoàn thành. Nếu chu kỳ nhiệm vụ không được thông qua, nó sẽ giảm bộ đếm chu kỳ nhiệm vụ bằng 3 và kết thúc quy trình. Nó thực hiện điều này cho tất cả các đèn LED một cách độc lập. Trong trường hợp của tôi, quy trình ngắt này chiếm khoảng 25 chúng tôi và vì nó được gọi là cứ 96 chúng tôi, nên 26% CPU đã được sử dụng để quản lý chu kỳ nhiệm vụ PWM trong phần mềm.

Bước 2: Phần cứng và các thành phần cần thiết

Phần cứng và các thành phần bắt buộc
Phần cứng và các thành phần bắt buộc

Sơ đồ giản đồ cho thấy kết quả cuối cùng. Mặc dù tôi chỉ điều khiển 5 đèn LED độc lập, nhưng tôi đã thêm đèn LED thứ 6 chạy cùng với một trong 5 đèn LED khác. Vì PIC không thể điều khiển hai đèn LED trên một chân cổng nên tôi đã thêm một bóng bán dẫn. Thiết bị điện tử được cấp nguồn bằng bộ chuyển đổi DC 6 volt / 100 mA và sử dụng bộ điều chỉnh điện áp rơi thấp để tạo ra mức ổn định 5 Volt.

Bạn cần các thành phần sau cho dự án này:

  • 1 vi điều khiển PIC 12F615
  • 2 tụ gốm: 2 * 100nF
  • Điện trở: 1 * 33k, 6 * 120 Ohm, 1 * 4k7
  • 6 đèn LED màu cam hoặc vàng, độ sáng cao
  • 1 bóng bán dẫn BC557 hoặc tương đương
  • 1 Tụ điện 100 uF / 16 V
  • 1 bộ điều chỉnh điện áp rơi thấp LP2950Z

Bạn có thể xây dựng mạch trên một breadboard và không cần nhiều không gian, như bạn có thể thấy trong hình.

Bước 3: Phần mềm còn lại và kết quả

Phần còn lại của phần mềm là vòng lặp chính. Vòng lặp chính tăng hoặc giảm độ sáng của đèn LED bằng cách điều chỉnh chu kỳ nhiệm vụ một cách ngẫu nhiên. Vì chúng ta chỉ tăng với giá trị 3 và giảm với giá trị 25, nên chúng ta phải đảm bảo rằng sự giảm dần không xảy ra thường xuyên như khi tăng.

Vì tôi không sử dụng bất kỳ thư viện nào nên tôi phải tạo một bộ tạo ngẫu nhiên bằng cách sử dụng thanh ghi dịch chuyển phản hồi tuyến tính, hãy xem:

en.wikipedia.org/wiki/Linear-feedback_shif…

Hiệu ứng nến bị ảnh hưởng bởi tốc độ thay đổi của chu kỳ nhiệm vụ PWM, do đó, vòng lặp chính sử dụng độ trễ khoảng 10 ms. Bạn có thể điều chỉnh thời gian này để thay đổi hiệu ứng nến theo nhu cầu của bạn.

Video đính kèm cho thấy kết quả cuối cùng mà tôi đã sử dụng nắp che đèn LED để cải thiện hiệu ứng.

Tôi đã sử dụng JAL làm ngôn ngữ lập trình cho dự án này và đính kèm tệp nguồn.

Chúc bạn vui vẻ khi làm bài này có thể hướng dẫn và mong nhận được phản ứng cũng như kết quả của bạn.

Đề xuất: