Mündəricat:

Birdən çox elektron şam: 3 addım
Birdən çox elektron şam: 3 addım

Video: Birdən çox elektron şam: 3 addım

Video: Birdən çox elektron şam: 3 addım
Video: Samir Ilqarli ft Vusal Soz - Sair Ayriliqdan Denen (Yeni 2022) 2024, Noyabr
Anonim
Birdən çox elektron şam
Birdən çox elektron şam

Elektron şamlar Instructables -da dəfələrlə yerləşdirilib, bəs niyə bu?

Evdə LED anlayışı və kiçik bir batareyası olan bu kiçik yarı şəffaf Milad evlərim var. Bəzi evlərdə şam effektli LEDlər, bəzilərində isə yanan LEDlər var. Kiçik batareyalar nisbətən tez boşalır və bütün evlərdə şam effekti yaratmaq istədiyim üçün bunu PIC layihəsi etmək qərarına gəldim. Əlbəttə ki, bunu bir Arduino layihəsinə də çevirə bilərsiniz.

Bəs bu elektron şamı xüsusi edən nədir? PIC və Arduinonun hamısında bir LED istifadə edərək şam effekti yaratmaq üçün istifadə edilə bilən Pulse Width Modulation (PWM) aparatı var, amma mənim vəziyyətimdə bir nəzarətçi istifadə edərək 5 müstəqil elektron şam almaq istəyirdim və bu heç olmasa tanıdığım. İstifadə etdiyim həll, bu beş müstəqil PWM siqnalını tamamilə proqram təminatına daxil etməkdir.

Addım 1: Proqramda Pulse Width Modulation

Pulse Width Modulation bir neçə dəfə təsvir edilmişdir, məsələn. bu Arduino məqaləsində:

PIC və Arduino, bu PWM siqnalını yaratmağı asanlaşdıran xüsusi PWM aparatına malikdir. Proqramda bir və ya daha çox PWM siqnalı yaratmaq istəyirsinizsə, iki taymerə ehtiyacımız var:

  1. PWM tezliyini yaratmaq üçün istifadə olunan bir taymer
  2. PWM iş dövrü yaratmaq üçün istifadə olunan bir taymer

Hər iki taymer tamamlandıqda yaradır və kəsir, buna görə PWM siqnalının idarə edilməsi tam fasilə ilə aparılır. PWM tezliyi üçün PIC -in timer 0 -dan istifadə edirəm və daşmasına icazə verirəm. Daxili osilator saatı 8 MHz və 64 -ə qədər bir ön qiymət ilə formula: Fosc / 4 /256 /64 = 2.000.000 / 256 /64 = 122 Hz və ya 8, 2 ms. İnsan gözü onu aşkar edə bilməyəcək qədər tezlik kifayət qədər yüksək olmalıdır. Bunun üçün 122 Hz tezliyi kifayətdir. Bu taymerin kəsmə rejiminin etdiyi yeganə şey, yeni bir PWM dövrü üçün iş dövrünü kopyalamaq və bütün LEDləri yandırmaqdır. Bunu müstəqil olaraq bütün 5 LED üçün edir.

PWM iş dövrünü idarə etmək üçün taymerin dəyəri şam effektini necə yaratmağımızdan asılıdır. Mənim yanaşmamda, LED -in parlaqlığını artırmaq üçün iş dövrünü 3 -ə artırmaqla və LED -in parlaqlığını azaltmaq üçün 25 -ə endirməklə bu təsiri simulyasiya edirəm. Bu şəkildə şam kimi bir effekt əldə edirsiniz. Minimum 3 dəyərindən istifadə etdiyim üçün bir baytla tam iş dövrünü idarə etmək üçün addımların sayı 255/3 = 85 -dir. Bu o deməkdir ki, PWM iş dövrü taymerinin işləmə tezliyinin 85 dəfə çox olması lazımdır. 85 * 122 = 10.370 Hz olan PWM tezlik taymeridir.

PWM iş dövrü üçün PIC -in timer 2 -dən istifadə edirəm. Bu avtomatik yenidən yüklənmiş bir taymerdir və aşağıdakı düsturu istifadə edir: Dövr = (Yenidən yüklə + 1) * 4 * Tosc * Timer2 ilkin dəyər. 191 -in yenidən yüklənməsi və 1 -in qabaqcadan ölçülməsi ilə (191 + 1) * 4 * 1/8.000.000 * 1 = 96 bizi və ya 10.416 Hz -ni əldə edirik. PWM iş dövrü fasiləsi, iş dövrünün keçdiyini yoxlayır və iş dövrünün başa çatdığı LED -i söndürür. Vəzifə dövrü keçilməzsə, iş dövrü sayğacını 3 ilə azaldır və rutini bitirir. Bunu müstəqil olaraq bütün LEDlər üçün edir. Mənim vəziyyətimdə, bu fasilə rejimi təxminən 25 bizi alır və hər 96 nəfər olaraq adlandırıldığından, CPU -nun 26% -i proqramda PWM vəzifə dövrünü idarə etmək üçün istifadə olunur.

Addım 2: Avadanlıq və tələb olunan komponentlər

Avadanlıq və tələb olunan komponentlər
Avadanlıq və tələb olunan komponentlər

Şematik diaqram son nəticəni göstərir. Yalnız 5 LED -i müstəqil idarə etsəm də, digər 5 LED -dən biri ilə birlikdə işləyən 6 -cı LED əlavə etdim. PIC bir port pinində iki LED idarə edə bilmədiyi üçün bir tranzistor əlavə etdim. Elektronika 6 volt / 100 mA DC adapterlə qidalanır və sabit 5 Volt etmək üçün aşağı düşmə gərginliyi tənzimləyicisindən istifadə edir.

Bu layihə üçün aşağıdakı komponentlərə ehtiyacınız var:

  • 1 PIC mikro nəzarətçi 12F615
  • 2 Seramik kondansatör: 2 * 100nF
  • Rezistorlar: 1 * 33k, 6 * 120 Ohm, 1 * 4k7
  • 6 Narıncı və ya Sarı LED, yüksək parlaqlıq
  • 1 BC557 transistoru və ya ekvivalenti
  • 1 elektrolitik kondansatör 100 uF / 16 V
  • 1 aşağı düşmə gərginliyi tənzimləyicisi LP2950Z

Dövrü bir çörək taxtası üzərində qura bilərsiniz və şəkildən göründüyü kimi çox yer tələb etmir.

Addım 3: Qalan Proqram və Nəticə

Proqramın qalan hissəsi əsas döngədir. Əsas döngə, iş dövrünü təsadüfi olaraq tənzimləyərək LED -lərin parlaqlığını artırır və ya azaldır. Yalnız 3 və 25 dəyərində azalma etdiyimiz üçün azalmaların artımlar qədər tez -tez baş vermədiyinə əmin olmalıyıq.

Heç bir kitabxanadan istifadə etmədiyim üçün xətti geribildirim dəyişmə reyestrindən istifadə edərək təsadüfi bir generator yaratmalı oldum, baxın:

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

Şam effekti, PWM vəzifə dövrünün nə qədər tez dəyişdiyindən təsirlənir, buna görə əsas döngə təxminən 10 ms gecikmə istifadə edir. Şam effektini ehtiyaclarınıza uyğun olaraq dəyişdirmək üçün bu vaxtı tənzimləyə bilərsiniz.

Əlavə edilmiş videoda, effekti yaxşılaşdırmaq üçün LED üzərində bir başlıq istifadə etdiyim son nəticə göstərilir.

JAL -ı bu layihə üçün proqramlaşdırma dili olaraq istifadə etdim və mənbə faylını əlavə etdim.

Bunu Təlimatlandırmaqla əylənin və reaksiyalarınızı və nəticələrinizi gözləyin.

Tövsiyə: