Mündəricat:
- Addım 1: Proqramda Pulse Width Modulation
- Addım 2: Avadanlıq və tələb olunan komponentlər
- Addım 3: Qalan Proqram və Nəticə
Video: Birdən çox elektron şam: 3 addım
2024 Müəllif: John Day | [email protected]. Son dəyişdirildi: 2024-01-30 07:44
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:
- PWM tezliyini yaratmaq üçün istifadə olunan bir taymer
- 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
Ş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ə:
Photoshop 2020 -dən istifadə edərək birdən çox görüntünün fonunu silin: 5 addım
Photoshop 2020 -dən istifadə edərək birdən çox görüntünün arxa planını silin: şəkilin arxa planını silmək indi çox asandır! Sadə bir skript istifadə edərək çoxlu (toplu) şəkillərin arxa planını silmək üçün Adobe Photoshop 2020 -dən necə istifadə etmək olar
Arduino Connect Birdən çox I2C Cihazı: 6 Addım
Arduino Connect Çoxlu I2C Cihazları: Bu dərslikdə bir neçə modulu I2C bağlantısı ilə arduino -ya necə bağlamağı öyrənəcəyik. Videoya baxın! Bizim vəziyyətimizdə nümunə olaraq 4 OLED Ekrandan istifadə edəcəyik, ancaq hər hansı digər I2C modullarından istifadə edə bilərsiniz/ İstəsəniz sensorlar. Qeyd: 4 OLED Ekran
Arduino Birdən çox Servo Motoru Necə Bağlamaq olar - PCA9685 Təlimatı: 6 addım
Arduino Birdən çox Servo Motoru Necə Bağlamaq olar - PCA9685 Təlimatı: Bu dərslikdə PCA9685 modulu və arduino istifadə edərək bir neçə servo mühərrikin necə bağlanacağını öyrənəcəyik. Bir neçə mühərrik bağlamalı olduğunuzda PCA9685 modulu çox yaxşıdır, bu barədə daha çox oxuya bilərsiniz https : //www.adafruit.com/product/815Vini İzləyin
Bir Analog Pin istifadə edərək birdən çox Analog Dəyəri Oxumaq: 6 Addım (Şəkillərlə)
Bir Analog Pin istifadə edərək Birdən çox Analog Dəyəri Oxumaq: Bu təlimatda sizə yalnız bir analog giriş pinindən istifadə edərək birdən çox analoq dəyərin necə oxunacağını göstərəcəyəm
4 -dən çox mühərrikdən istifadə - Birdən çox mühərrikin yığılması: 3 addım
4 -dən çox mühərrikdən istifadə etmək - Birdən çox mühərrik qalaqlamaq: Təlim olunan Vibrotaktil Həssas Dəyişdirmə və Artırma Cihazı (https: //www.instructables.com/id/Vibrotactile-Sens …), həssaslığı tərcümə edən bir qurğunun necə qurulacağını göstərir. vibrasiya stimullarına giriş. Bu titrəmə stimulları p