İçindekiler:
- Adım 1: Yazılımda Darbe Genişliği Modülasyonu
- 2. Adım: Donanım ve Gerekli Bileşenler
- 3. Adım: Kalan Yazılım ve Sonuç
Video: Çoklu Elektronik Mumlar: 3 Adım
2024 Yazar: John Day | [email protected]. Son düzenleme: 2024-01-30 13:18
Elektronik mumlar Instructables'a birçok kez gönderildi, peki neden bu?
Evde LED içgörüsü ve küçük bir pili olan bu küçük yarı saydam Noel evlerim var. Bazı evlerde mum efektli LED'ler, bazılarında ise sadece yanan LED'ler var. Küçük piller nispeten hızlı boşalır ve tüm evlerde mum etkisi yapmak istediğim için bunu bir PIC projesi yapmaya karar verdim. Elbette bunu bir Arduino projesine de dönüştürebilirsiniz.
Peki bu elektronik mumu özel yapan nedir? PIC ve Arduino'nun hepsinde, bir LED kullanarak bir mum efekti oluşturmak için kullanılabilen, gemide Darbe Genişlik Modülasyonu (PWM) donanımı var, ancak benim durumumda bir denetleyici kullanarak 5 bağımsız elektronik mum olmasını istedim ve bu yok, en azından yok bildiğim kapalı. Kullandığım çözüm bu beş bağımsız PWM sinyalini tamamen yazılım içinde yapmak.
Adım 1: Yazılımda Darbe Genişliği Modülasyonu
Darbe Genişliği Modülasyonu birkaç kez açıklanmıştır, örn. bu Arduino Makalesinde:
PIC ve Arduino, bu PWM sinyalini oluşturmayı kolaylaştıran özel PWM donanımına sahiptir. Yazılımda bir veya daha fazla PWM sinyali yapmak istiyorsak iki zamanlayıcıya ihtiyacımız var:
- PWM frekansını oluşturmak için kullanılan bir zamanlayıcı
- PWM görev döngüsünü oluşturmak için kullanılan bir zamanlayıcı
Her iki zamanlayıcı da tamamlandığında üretir ve kesintiye uğrar ve böylece PWM sinyalinin işlenmesi tamamen kesintiye dayalı olarak yapılır. PWM frekansı için PIC'nin 0 zamanlayıcısını kullanıyorum ve taşmasına izin veriyorum. 8 MHz'lik bir dahili osilatör saati ve 64'lük bir ön ölçek ile formül şöyledir: Fosc/4 / 256 / 64 = 2.000.000 / 256 / 64 = 122 Hz veya 8, 2 ms. Frekans, insan gözünün algılayamayacağı kadar yüksek olmalıdır. Bunun için 122 Hz'lik bir frekans yeterli. Bu zamanlayıcı kesme rutininin yaptığı tek şey, yeni bir PWM döngüsü için görev döngüsünü kopyalamak ve tüm LED'leri açmaktır. Bunu 5 LED'in tümü için bağımsız olarak yapar.
PWM görev döngüsünü işlemek için zamanlayıcının değeri, mum etkisini nasıl yaptığımıza bağlıdır. Yaklaşımımda, LED'in parlaklığını artırmak için görev döngüsünü 3 değeriyle artırarak ve LED'in parlaklığını azaltmak için 25 değeriyle azaltarak bu etkiyi simüle ediyorum. Bu şekilde mum benzeri bir etki elde edersiniz. Minimum 3 değerini kullandığım için bir bayt ile tam görev döngüsünü kontrol etmek için adım sayısı 255 / 3 = 85'tir. Bu, PWM görev döngüsü zamanlayıcısının frekansın 85 katı bir frekansta çalışması gerektiği anlamına gelir. 85 * 122 = 10.370 Hz olan PWM frekans zamanlayıcı.
PWM görev döngüsü için PIC'nin zamanlayıcı 2'sini kullanıyorum. Bu, otomatik yeniden yüklemeli bir zamanlayıcıdır ve aşağıdaki formülü kullanır: Dönem = (Yeniden Yükleme + 1) * 4 * Tosc * Zamanlayıcı2 ön ölçek değeri. 191 yeniden yükleme ve 1 ön ölçek ile (191 + 1) * 4 * 1/8.000.000 * 1 = 96 us veya 10.416 Hz'lik bir süre elde ederiz. PWM görev döngüsü kesinti rutini, görev döngüsünün geçip geçmediğini kontrol eder ve görev döngüsünün tamamlandığı LED'i kapatır. Görev döngüsü geçilmezse, görev döngüsü sayacını 3 ile azaltır ve rutini bitirir. Bunu tüm LED'ler için bağımsız olarak yapar. Benim durumumda bu kesme rutini yaklaşık 25 bizi alıyor ve her 96 us'de bir çağrıldığından, yazılımdaki PWM görev döngüsünü yönetmek için CPU'nun zaten %26'sı kullanılıyor.
2. Adım: Donanım ve Gerekli Bileşenler
Şematik diyagram nihai sonucu gösterir. Sadece 5 LED'i bağımsız olarak kontrol etmeme rağmen, diğer 5 LED'den biriyle birlikte çalışan 6. bir LED ekledim. PIC, bir port pininde iki LED'i çalıştıramadığı için bir transistör ekledim. Elektronik aksam, 6 volt / 100 mA DC adaptör ile beslenir ve sabit bir 5 Volt yapmak için düşük bir voltaj düşürme regülatörü kullanır.
Bu proje için aşağıdaki bileşenlere ihtiyacınız var:
- 1 adet PIC mikrodenetleyici 12F615
- 2 Seramik kapasitör: 2 * 100nF
- Dirençler: 1*33k, 6*120 Ohm, 1*4k7
- 6 Turuncu veya Sarı LED, yüksek parlaklık
- 1 BC557 transistör veya eşdeğeri
- 1 Elektrolitik kondansatör 100 uF / 16 V
- 1 adet düşük voltaj regülatörü LP2950Z
Devreyi bir breadboard üzerine kurabilirsiniz ve resimde görüldüğü gibi fazla yer gerektirmez.
3. Adım: Kalan Yazılım ve Sonuç
Yazılımın kalan kısmı ana döngüdür. Ana döngü, görev döngüsünü rastgele ayarlayarak LED'lerin parlaklığını artırır veya azaltır. Sadece 3 değeriyle artırıp 25 değeriyle eksilttiğimiz için eksiltmelerin artışlar kadar sık olmamasına dikkat etmemiz gerekiyor.
Herhangi bir kitaplık kullanmadığım için doğrusal bir geri besleme kaydırma yazmacı kullanarak rastgele bir jeneratör yapmak zorunda kaldım, bakınız:
en.wikipedia.org/wiki/Linear-feedback_shif…
Mum etkisi, PWM görev döngüsünün ne kadar hızlı değiştiğinden etkilenir, bu nedenle ana döngü yaklaşık 10 ms'lik bir gecikme kullanır. Mum efektini ihtiyaçlarınıza göre değiştirmek için bu süreyi ayarlayabilirsiniz.
Ekli video, efekti iyileştirmek için LED üzerinde bir kapak kullandığım son sonucu gösteriyor.
Bu proje için programlama dili olarak JAL kullandım ve kaynak dosyayı ekledim.
Bunu Eğitilebilir hale getirerek ve tepkilerinizi ve sonuçlarınızı dört gözle beklerken eğlenin.
Önerilen:
Arduino Çoklu I2C Cihazlarını Bağlayın: 6 Adım
Arduino Çoklu I2C Cihazlarını Bağlayın: Bu eğitimde, I2C bağlantısı olan birkaç modülü arduino'ya nasıl bağlayacağımızı öğreneceğiz.Videoyu İzleyin!Bizim durumumuzda örnek olarak 4 OLED Ekran kullanacağız, ancak başka herhangi bir I2C modülünü kullanabilirsiniz/ Dilerseniz sensörler.Not: 4 adet OLED Ekran birlikte
Çoklu Sigortalı USB Lityum Yeniden Şarj Edilebilir DT830 Multimetre: 5 Adım
USB Lityum Yeniden Şarj Edilebilir Çoklu Sigortalı DT830 Multimetre: ■ Bu sayaçla ilgili hoşuma giden şey Bu DT830LN dijital multimetre (DMM) şunları sunar▪ Kompakt boyut▪ 10A akım ölçüm aralığı▪ Arkadan aydınlatmalı ekran▪ Düşük maliyet DT830D modeli aynıdır ve daha yaygın olarak bulunur, ancak arkadan aydınlatmalı ekrana sahip değil.■ Ne
Herhangi Bir Android Telefonda Çoklu Pencere Nasıl Etkinleştirilir: 6 Adım
Herhangi Bir Android Telefonda Çoklu Pencere Nasıl Etkinleştirilir: Çoklu pencere modu, Android 6.0 Marshmallow'da gizli veya beta modudur. Bu özellik tüm mobil cihazlarda mevcut değildir. Ancak Android 6.0 Marshmallow'da çoklu pencere modunu etkinleştirmek için bir teknik vardır. Gereksinimler:1. Telefon rootlu olmalıdır.2. Android sürümü
Bir Analog Pin Kullanılarak Çoklu Analog Değerler Nasıl Okunur: 6 Adım (Resimlerle)
Bir Analog Pin Kullanarak Çoklu Analog Değerler Nasıl Okunur: Bu derste, size sadece bir analog giriş pini kullanarak çoklu analog değerleri nasıl okuyacağınızı göstereceğim
Bireysel "mumlar" ile Işıklı Hanuka Kazak: 7 Adım (Resimlerle)
Bireysel "mumlar" ile Işıklı Hanuka Kazak: Tatil partisi sezonu ve bu yıl ışıklı bir menora kazak ile partinin parlayan yıldızı olabilirsiniz! Bu, çevrimiçi olarak ve zanaat mağazasında kolayca bulunabilen nispeten ucuz malzemeleri kullanan dikilmiş bir devre projesidir. Daha iyi