Mündəricat:

8 Kanallı Programlanabilir Zamanlayıcı: 13 Addım
8 Kanallı Programlanabilir Zamanlayıcı: 13 Addım

Video: 8 Kanallı Programlanabilir Zamanlayıcı: 13 Addım

Video: 8 Kanallı Programlanabilir Zamanlayıcı: 13 Addım
Video: 16F628A ile 1-7 Kanal Haftalık Zamanlayıcı devresi yapımı 2024, Iyul
Anonim
8 Kanallı Proqramlaşdırıla bilən Taymer
8 Kanallı Proqramlaşdırıla bilən Taymer
8 Kanallı Proqramlaşdırıla bilən Taymer
8 Kanallı Proqramlaşdırıla bilən Taymer
8 Kanallı Proqramlaşdırıla bilən Taymer
8 Kanallı Proqramlaşdırıla bilən Taymer

Giriş

1993 -cü ildən bəri layihələrim üçün Microchip -in PIC mikro nəzarətçisindən istifadə edirəm və Microchip MPLab IDE -dən istifadə edərək bütün proqramlarımı montajçı dilində etdim. Layihələrim sadə svetoforlardan və yanıb -sönən LED -lərdən, R/C modelləri üçün USB joystick interfeyslərinə və sənayedə istifadə olunan keçid qurğu analizatorlarına qədər dəyişdi. İnkişaf bir neçə gün çəkdi və bəzən minlərlə sətirlik assambler kodu aldı.

Matrix Multimedia Flowcode 4 Professional -ı aldıqdan sonra proqrama çox şübhə ilə yanaşırdım. İnanmaq çox asan görünürdü. Bir cəhd etməyə qərar verdim və bütün fərqli komponent Makrolarını sınadım, hamısı böyük uğurla. Flowcode istifadə etməyin ən yaxşı tərəfi, sadə layihələrin bir gecədə kodlaşdırıla bilməsi idi. I²C və DS1307 real vaxt saatı ilə oynadıqdan sonra Flowcode istifadə edərək 8 Kanal Taymeri dizayn etmək qərarına gəldim. Kiçik və asan bir layihə olmadığım üçün özümə Flowcode öyrətmək üçün əla bir layihə olacağına inanırdım.

Mikroprosessor və digər komponentlərin seçilməsi

Tələb olunan I/O pinlərinin sayına görə 40 pinli bir cihaza ehtiyac olacağı aydın idi. PIC 18F4520, əsasən 32K proqram yaddaşı və 1536 bayt məlumat yaddaşı üçün seçildi. İstifadə olunan bütün komponentlər standart delikli qurğulardır və lazım olduqda Vero lövhəsində dövrə qurmağa imkan verir. Bu da bir çörək taxtasının inkişafına kömək etdi.

Addım 1: Layihənin Məqsədləri

Layihənin Məqsədləri
Layihənin Məqsədləri

Məqsədlər

- Batareya ehtiyatı ilə dəqiq vaxt saxlama.

- Bütün proqramlar və məlumatlar güc itirildikdən sonra da saxlanılacaq.

- Sadə istifadəçi interfeysi.

- Proqramlaşdırma elastikliyi.

Vaxt saxlama

Elektrik kəsilmələrinə meylli bir ərazidə yaşamaq, elektrik xətlərindən standart 50/60Hz dəqiq vaxt saxlamaq üçün kifayət etməyəcək. Real vaxt saatı vacib idi və bir neçə RTC çipini sınadıqdan sonra sadə osilatoru və batareyanın ehtiyat konfiqurasiyası sayəsində DS1307-ni seçdim. DS1307 -yə qoşulmuş yalnız 32.768 kHz kristal istifadə edərək olduqca dəqiq vaxt əldə edildi. Dəqiqlik, 4 fərqli marka kristal istifadə edərək, 2 aylıq sınaq müddəti ərzində 2 saniyə ərzində idi.

Məlumat saxlama

Bütün zamanlayıcı proqram məlumatları, hətta elektrik kəsilməsi zamanı da saxlanılmalıdır. 100-ə qədər fərqli proqram və müxtəlif konfiqurasiya məlumatları ilə, PIC-in 256 baytlıq EEPROM-un kifayət qədər böyük olmayacağı məlum oldu. Bütün proqramlaşdırma məlumatlarını saxlamaq üçün 24LC256 I²C EEPROM istifadə olunur.

Sadə istifadəçi interfeysi

İstifadəçi interfeysi yalnız 2 elementdən, LED arxa işığı olan 16 x 4 sətirli LCD displeydən və 4 x 3 klaviaturadan ibarətdir. Bütün proqramlaşdırma yalnız bir neçə düyməni basmaqla edilə bilər. Arayüzə əlavələr səsli piezo səs siqnalı və vizual olaraq yanan LCD arxa işığıdır.

Addım 2: Proqramlaşdırma Esnekliği

Proqramlaşdırma Elastikliyi
Proqramlaşdırma Elastikliyi

Kifayət qədər proqram elastikliyini təmin etmək üçün, taymerdə fərdi olaraq təyin edilə bilən 100 proqram var. Hər bir proqram üçün Açılma vaxtı, Qalma vaxtı, Çıxış kanalları və Həftənin günü təyin edilə bilər. Hər bir proqramın üç rejimi var:

- Avtomatik: Vaxtında, Qalma vaxtında, Çıxış Kanalı və Həftənin Günü təyin olunur.

- Off: Fərdi proqram, parametrləri silmədən deaktiv edilə bilər. Proqramı yenidən aktivləşdirmək üçün

sadəcə fərqli bir rejim seçin.

- Gündüz/Gecə: Vaxtında, Qalma vaxtında, Çıxış Kanalı və həftənin günü təyin olunur. Avtomatik rejimlə eyni işləyir, amma işləyəcək

çıxışı yalnız qaranlıq olduqda Açma və Kapama vaxtları arasında yandırın. Bu da gündüz/gecə tam nəzarətini təmin edir

Günəş batanda işıqları yandırmaq və günəş doğanda söndürmək üçün əlavə elastiklik kimi.

Misal 1: Saat 20: 00 -dan sonra işığı yandıracaq və günəş doğanda işığı söndürəcək.:

Saat: 20:00, Qaldı: 12: 00, Nümunə 2: Gün batanda işığı yandıracaq və 23: 00 -da işığı söndürəcək.

Saat: 12:00

Çıxış: 23:00

Nümunə 3: Gün batanda işığı yandıracaq, gün doğanda işığı söndürəcək.

Saat: 12:01

Çıxış: 12:00

Əlavə seçimlər mövcuddur, hamısı 100 Açma/Kapatma proqramından asılı olmayaraq işləyir.

Proqram Kanalları Aktiv: Bir neçə proqramı söndürmək əvəzinə, proqramları dəyişdirmədən fərdi çıxış kanalları deaktiv edilə bilər.

Köməkçi girişlər: Müəyyən bir çıxış kanallarının müəyyən bir müddət ərzində açılmasına imkan verən iki rəqəmsal giriş mövcuddur. Məsələn, gecə gec evə gələndə, uzaqdan idarəetmə düyməsinə basıldığında müəyyən işıqları yandırmaq və ya ev siqnalı tetiklendiğinde fərqli bir işıq seriyasını açmaq üçün istifadə edilə bilər.

Köməkçi çıxışlar: İki əlavə çıxış (8 çıxış kanalından başqa) mövcuddur. Müəyyən çıxış kanalları və ya rəqəmsal girişlərlə açmaq üçün proqramlaşdırıla bilərlər. Qurğumda 24V-də işləyən suvarma sistemimi idarə edən 6-8 çıxışı var. Yardımçı çıxışlardan birini açmaq, suvarma sistemi üçün 24V enerji təchizatı açmaq üçün 6-8 kanallarından istifadə edirəm.

Manual On: Əsas ekranda olduqda 1-8 düymələri kanalları əl ilə açmaq və ya söndürmək üçün istifadə edilə bilər.

Addım 3: Avadanlıq

Avadanlıq
Avadanlıq

Enerji təchizatı: Enerji təchizatı düzəldici, hamarlaşdırıcı kondansatör və həddindən artıq yükdən qorunmaq üçün 1 Amperlik bir sigortadan ibarətdir. Bu təchizat daha sonra 7812 və 7805 tənzimləyicisi tərəfindən tənzimlənir. 12V təchizatı, çıxış rölesini idarə etmək üçün istifadə olunur və digər bütün sxemlər 5V -luqdan qidalanır. 7805 tənzimləyicisi 7812 tənzimləyicisinin çıxışına qoşulduğundan, ümumi cərəyan 7812 tənzimləyici vasitəsi ilə 1 amperlə məhdudlaşdırılmalıdır. Bu tənzimləyiciləri uyğun bir soyuducuya quraşdırmaq məsləhətdir.

I²C Avtobusu: Flowcode, hardware I²C nəzarətinə icazə versə də, proqram I²C konfiqurasiyasından istifadə etmək qərarına gəldim. Bu, pin tapşırıqlarının daha çox elastikliyinə imkan verir. Daha yavaş olmasına baxmayaraq (50 kHz), hardware I²C avtobusu ilə müqayisədə yenə də əla performans göstərir. Həm DS1307, həm də 24LC256 bu I²C avtobusuna bağlıdır.

Real Zaman Saatı (DS1307): Başlanğıc zamanı, 0 və 7 RTC qeydləri, etibarlı vaxt və konfiqurasiya məlumatlarının olub olmadığını müəyyən etmək üçün oxunur. Düzgün qurulduqda, RTC vaxtı oxunur və PIC -də yüklənən vaxt. Bu vaxt RTC -dən oxunan yeganə vaxtdır. Başladıqdan sonra, RTC -nin pin 7 -də 1Hz -lik bir puls olacaq. Bu 1Hz siqnalı RB0/INT0 -a qoşulur və bir fasilə xidmət qaydası ilə PIC vaxtı hər saniyədə yenilənir.

Xarici EEPROM: Bütün proqram məlumatları və variantları xarici EEPROM -da saxlanılır. EEPROM məlumatları işə salındıqda yüklənir və məlumatların bir nüsxəsi PIC yaddaşında saxlanılır. EEPROM məlumatları yalnız proqram parametrləri dəyişdirildikdə yenilənir.

Gündüz/Gecə Sensoru: Gündüz/Gecə sensoru olaraq standart işığa bağlı rezistor (LDR) istifadə olunur. LDR -lər eyni işıq şəraitində fərqli müqavimət dəyərlərinə malik bir çox forma və çeşiddə gəldiyindən, işıq səviyyəsini oxumaq üçün analoq giriş kanalından istifadə etdim. Gündüz və Gecə səviyyələri tənzimlənə bilər və fərqli sensorlar üçün bir az rahatlıq verir. Bəzi histerezis qurmaq üçün Gündüz və Gecə üçün fərdi dəyərlər təyin edilə bilər. İşıq səviyyəsi Gündüzün altında və ya Gecə təyin olunan nöqtələrin üzərində 60 saniyədən artıq olduqda dəyişəcək.

LCD Ekran: 4 sətir, 16 xarakterli ekran istifadə olunur, çünki bütün məlumatlar 2 sətirli ekranda göstərilə bilməz. Layihə, LCD_Custom_Char makrosunda müəyyən edilmiş bəzi xüsusi simvolları ehtiva edir.

Köməkçi Girişlər: Hər iki giriş NPN tranzistoru ilə tamponlanır. +12v və 0V konnektorda da mövcuddur ki, bu da xarici əlaqələrə daha çevik qoşulmalara imkan verir. Nümunə olaraq, uzaqdan idarəetmə qəbuledicisi təchizata qoşula bilər.

Çıxışlar: Bütün çıxışlar 12V rölesi vasitəsi ilə dövrədən elektriklə ayrılır. İstifadə olunan röleler, 10 amperlik 250V AC üçün qiymətləndirilmişdir. Normalda açıq və normal olaraq bağlı olan kontaktlar terminallara çıxarılır.

Klaviatura: İstifadə olunan klaviatura 3 x 4 matrisli bir klaviatordur və PORTB: 2..7 ilə bağlıdır.

Addım 4: Klaviatura kəsintiləri

Klaviatura kəsintiləri
Klaviatura kəsintiləri
Klaviatura kəsintiləri
Klaviatura kəsintiləri
Klaviatura kəsintiləri
Klaviatura kəsintiləri

İstənilən düyməni basmaqla PORTB Dəyişiklikdə kəsilmədən istifadə etmək istədim. Bunun üçün, hər bir klaviatura kəsilməsindən əvvəl və sonra PORTB istiqamətinin və məlumatlarının düzgün qurulduğundan əmin olmaq üçün Flowcode -da Xüsusi Kəsmə yaradılmalıdır. Bir düyməyə hər dəfə basıldıqda və ya buraxıldıqda bir fasilə yaranır. Kəsmə qaydası yalnız bir düyməyə basıldıqda cavab verir.

ÖZƏL müdaxilə

Kodu aktiv edin

portb = 0b00001110; trisb = 0b11110001;

intcon. RBIE = 1;

intcon2. RBIP = 1;

intcon2. RBPU = 1;

rcon. IPEN = 0;

İşlətmə kodu

əgər (intcon & (1 << RBIF))

{FCM_%n ();

portb = 0b00001110;

trisb = 0b11110001;

wreg = portb;

clear_bit (intcon, RBIF);

}

Tapılan problemlər

Bir ara vermə zamanı, kəsilmə xidməti proseduru heç bir şərt olmadan, proqramın qalan hissəsində istifadə edilə bilən digər makroları çağırmalıdır. Bu, sonda yığma daşması problemlərinə gətirib çıxaracaq, çünki əsas proqram eyni proqramda olduğu kimi kəsilə bilər. Kod tərtib edildikdə Flowcode tərəfindən bu da CİDDİ XATA olaraq təyin olunur.

GetKeyPadNumber altındakı Klaviaturanın Xüsusi kodunda, yığın daşmasına səbəb olacaq Delay_us makrosuna belə bir zəng var. Bunu aradan qaldırmaq üçün Delay_us (10) əmrini sildim və 25 sətirlə əvəz etdim "wreg = porta;" əmrlər. Bu əmr PORTA -nı oxuyur və bir az gecikmək üçün dəyərini W reyestrinə daxil edir. Bu əmr, movf porta 0 -a bənzər tək bir təlimat üçün tərtib ediləcək. Layihədə istifadə olunan 10MHz saat üçün hər bir təlimat 400ns olacaq və 10us gecikmə əldə etmək üçün bu təlimatlardan 25 -ə ehtiyacım var.

Şəkil 3 -ün ikinci sətrində qeyd edin: GetKeypadNumber Xüsusi Kodu, orijinal delay_us (10) əmrinin "//" ilə deaktiv edildiyini unutmayın. Bunun altına 25 "wreg = porta;" əlavə etdim. yeni 10us gecikmə əldə etməyi əmr edir. Keypad_ReadKeypadNumber xüsusi kodu içərisində heç bir makroya heç bir zəng edilmədən, Keypad makrosu artıq kəsilmə xidməti qaydasında istifadə edilə bilər.

Qeyd etmək lazımdır ki, Flowcode Keypad və eBlocks komponentləri giriş xətlərində standart çəkmə müqavimətlərindən istifadə etmir. Bunun əvəzinə 100K açılan rezistorlardan istifadə edir. İnkişaf zamanı klaviaturada bəzi müdaxilələr səbəbindən 100K rezistorların hamısı 10K, bütün 10K rezistorlar isə 1K5 ilə əvəz edilmişdir. Klaviatura 200 mm -lik uclarla düzgün işləmək üçün sınaqdan keçirildi.

Addım 5: Taymeri istifadə edin

Taymerdən istifadə
Taymerdən istifadə
Taymerdən istifadə
Taymerdən istifadə
Taymerdən istifadə
Taymerdən istifadə

Bütün ekranlar istifadəçinin parametrlərdə sürətli dəyişiklik etməsi üçün lazım olan bütün məlumatları göstərmək üçün qurulmuşdur. 4 -cü xətt menyu və proqram seçimlərində naviqasiyaya kömək etmək üçün istifadə olunur. Normal iş zamanı cəmi 22 ekran mövcuddur.

LINE 1: Zaman və Vəziyyət

Cari gün və saatı, sonra vəziyyət nişanlarını göstərir:

A - Aux Giriş A -nın tetiklendiğini və Aux Giriş A timerinin işlədiyini göstərir.

B - Aux Giriş B -nin işə salındığını və Aux Giriş B timerinin işlədiyini göstərir.

C - Aux Çıxış C -nin açıldığını göstərir.

D - Aux Çıxış D -nin açıldığını göstərir.

} - Gündüz/Gecə sensoru vəziyyəti. Əgər varsa, gecənin olduğunu göstərir.

LINE 2: Proqram Çıxışları

Fərqli proqramlar tərəfindən açılan kanalları göstərir. Kanallar çıxış nömrələrində göstərilir və "-" xüsusi çıxışın açılmadığını göstərir. "Proqram Çıxışları Aktiv" rejimində deaktiv edilmiş kanallar hələ də burada göstəriləcək, lakin Həqiqi çıxışlar təyin edilməyəcək.

SATIR 3: Real Çıxışlar

Fərqli proqramlar, Aux Girişləri A & B və ya istifadəçi tərəfindən təyin olunan manuel çıxışlar tərəfindən hansı kanalların açıldığını göstərir. 0 -a basmaq əl ilə aktivləşdirilmiş bütün çıxışları söndürəcək və Aux Çıxış A & B zamanlayıcılarını sıfırlayacaq.

LINE 4: Menyu və əsas seçimlər (bütün menyularda)

"*" Və "#" düymələrinin funksiyasını göstərir.

Orta hissə seçilmiş ekran üçün hansı rəqəmsal düymələrin (0-9) aktiv olduğunu göstərir.

Aux Giriş A & B giriş vəziyyəti də Açıq və ya Bağlı keçid işarəsi ilə göstərilir.

Çıxışlar klaviaturadakı müvafiq düyməni basaraq əl ilə açıla/söndürülə bilər.

Menyular boyunca, Star və Hash düymələri fərqli proqram seçimlərində gəzmək üçün istifadə olunur. Seçimləri təyin etmək üçün 0-9 düymələri istifadə olunur. Bir ekranda və ya proqramlaşdırma menyusunda birdən çox variantın mövcud olduğu yerlərdə, Hash düyməsi fərqli variantları keçmək üçün istifadə olunur. Cari seçilmiş seçim həmişə ekranın solundakı ">" işarəsi ilə göstəriləcək.

0-9 Vaxt dəyərlərini daxil edin

1-8 Kanal seçimini dəyişdirin

14 36 Proqramlar arasında addım, 1 addım geri, 4 addım geri 10 proqram, 3 addım irəli, 6 addım irəli 10

proqramlar

1-7 Həftənin günlərini təyin edin. 1 = Bazar, 2 = Bazar ertəsi, 3 = Çərşənbə, 4 = Çərşənbə, 5 = Cümə axşamı, 6 = Cümə, 7 = Şənbə

0 Əsas ekranda, bütün əl ilə ləğvləri və Giriş A və Giriş B taymerlərini silin. Digər menyularda dəyişikliklər olur

seçilmiş variantlar

# Əsas ekranda, bütün əl ilə ləğvləri, A Girişini və B Girişini ölçənləri və Proqram Çıxışlarını söndürəcək.

növbəti hadisə.

* və 1 Taymeri yenidən başladın

* və 2 Bütün proqramları və seçimləri silin, parametrləri standart vəziyyətə qaytarın.

* və 3 Taymeri gözləmə rejiminə qoyun. Taymeri yenidən açmaq üçün istənilən düyməni basın.

İstənilən vaxt dəyərinin səhv girişləri zamanı LCD arxa işığı bir səhv göstərmək üçün 5 dəfə yanıb -sönəcək. Eyni zamanda, siqnal səslənəcək. Çıxış və Sonrakı əmrləri yalnız cari giriş düzgün olduqda işləyəcək.

LCD arxa işıq

Başlanğıcda, LCD arxa işığı 3 dəqiqə yandırılacaq, əgər:

- Bir hardware çatışmazlığı var (EEPROM və ya RTC tapılmadı)

- RTC -də vaxt təyin olunmayıb

LCD arxa işığı, klaviaturadakı hər hansı bir istifadəçi girişində yenidən 3 dəqiqə yanacaq. LCD arxa işığı söndürüldükdə, hər hansı bir klaviatura əmri əvvəlcə LCD arxa işığını yandıracaq və basılan düyməni görməməzliyə vurur. Bu, istifadəçinin klaviatura istifadə etməzdən əvvəl LCD ekranı oxuya biləcəyini təmin edir. Aux Giriş A və ya Aux Giriş B aktiv olduqda LCD arxa işığı 5 saniyə də açılacaq.

Addım 6: Menyu ekran görüntüləri

Menyu ekran görüntüləri
Menyu ekran görüntüləri
Menyu ekran görüntüləri
Menyu ekran görüntüləri
Menyu ekran görüntüləri
Menyu ekran görüntüləri

Klaviatura istifadə edərək, hər bir seçim asanlıqla proqramlaşdırıla bilər. Şəkillər hər bir ekranın nə etdiyinə dair bəzi məlumatlar verir.

Addım 7: Sistemin dizaynı

Sistemin Dizaynı
Sistemin Dizaynı

Bütün inkişaf və sınaq çörək taxtasında edildi. Sistemin bütün bölmələrinə baxaraq sistemi üç modulda parçaladım. Bu qərar əsasən Eagle -in pulsuz versiyasının PCB ölçü məhdudiyyətləri (80 x 100 mm) ilə əlaqədar idi.

Modul 1 - Enerji təchizatı

Modul 2 - CPU lövhəsi

Modul 3 - Röle lövhəsi

Bütün komponentlərin asanlıqla əldə edilməli olduğuna qərar verdim və səthə montaj komponentlərindən istifadə etmək istəmədim.

Gəlin hər birindən keçək.

Addım 8: Enerji təchizatı

Enerji təchizatı
Enerji təchizatı
Enerji təchizatı
Enerji təchizatı
Enerji təchizatı
Enerji təchizatı
Enerji təchizatı
Enerji təchizatı

Enerji təchizatı birbaşa irəlidir və CPU və röle lövhələrini 12V və 5V ilə təchiz edin.

Gərginlik tənzimləyicilərini layiqli istilik alıcılarına quraşdırdım və təchizat üçün həddindən artıq yüklənmiş kondansatörlərdən də istifadə etdim.

Addım 9: CPU lövhəsi

CPU lövhəsi
CPU lövhəsi
CPU lövhəsi
CPU lövhəsi
CPU lövhəsi
CPU lövhəsi
CPU lövhəsi
CPU lövhəsi

LCD ekran, klaviatura və röleler istisna olmaqla, bütün komponentlər CPU lövhəsinə quraşdırılmışdır.

Təchizat, iki rəqəmsal giriş və işıq sensoru arasındakı əlaqələri asanlaşdırmaq üçün terminal blokları əlavə edildi.

Başlıq pinləri/prizləri LCD ekrana və klaviatura ilə asan əlaqə təmin edir.

Röle çıxışları üçün ULN2803 istifadə etdim. Artıq bütün lazımi sürücülük rezistorlarını və geri dönmə diodlarını ehtiva edir. Bu, CPU kartının hələ də Eagle -in pulsuz versiyasını istifadə edərək edilə biləcəyini təmin etdi. Röleler iki ULN2803 -ə bağlıdır. Aşağı ULN2803 8 çıxış üçün, yuxarı ULN2803 isə iki köməkçi çıxış üçün istifadə olunur. Hər bir köməkçi çıxışda dörd tranzistor var. Rölelərə bağlantılar başlıq pinləri/prizləri vasitəsilə də aparılır.

PIC 18F4520, PicKit 3 proqramçısı vasitəsi ilə asan proqramlaşdırma təmin etmək üçün bir proqramlaşdırma yuvası ilə təchiz olunmuşdur.

QEYD:

Lövhədə əlavə 8 pinli IC olduğunu görəcəksiniz. Üst IC, PIC 12F675 -dir və rəqəmsal girişə bağlıdır. Bu PCB dizaynı zamanı əlavə edildi. Bu rəqəmsal girişin əvvəlcədən işlənməsini asanlaşdırır. Tətbiqimdə rəqəmsal girişlərdən biri siqnalizasiya sistemimə bağlıdır. Siqnal səslənirsə, evimdə müəyyən işıqlar yanır. Siqnalizasiya sistemimi silahlandırmaq və tərksilah etmək sirenə fərqli səslər verir. PIC 12F675 istifadə edərək, indi silah/tərksilah ilə əsl həyəcanı ayırd edə bilərəm. 12F675 də bir proqramlaşdırma yuvası ilə təchiz edilmişdir.

Başlıq pimi/yuvası vasitəsi ilə I2C portu da hazırladım. Bu sonradan relay lövhələri ilə lazımlı olacaq.

Lövhədə, IC yuvalarını bağlamadan əvvəl lehimlənməli olan bir neçə tullanan var.

Addım 10: Flowcode Nəticəsi

Flowcode Nəticəsi
Flowcode Nəticəsi
Flowcode Nəticəsi
Flowcode Nəticəsi
Flowcode Nəticəsi
Flowcode Nəticəsi

Montajda qeyd səviyyəsində işləməyə öyrəşdiyim üçün komponent makrolarını istifadə etmək bəzən çətin və sinir bozucu olurdu. Bu, əsasən Flowcode -un proqramlaşdırma quruluşu haqqında məlumatımın olmaması ilə bağlı idi. C və ya ASM bloklarını istifadə etdiyim yeganə yerlər, kəsmə rejiminin daxilində çıxışları açmaq və Do_KeyPressed rejimində klaviatura kəsilməsini söndürmək/aktivləşdirmək idi. PIC, EEPROM və ya RTC tapılmadıqda, ASM bloku istifadə edərək SLEEP -ə yerləşdirilir.

Fərqli I²C əmrlərinin istifadəsinə dair kömək, hamısı Flowcode Yardım sənədlərindən alındı. Komandaların uğurla istifadə edilməsindən əvvəl fərqli I²C cihazlarının necə işlədiyini dəqiq bilmək tələb olunur. Bir dövrə dizaynı, dizaynerin bütün müvafiq məlumat cədvəllərinin mövcud olmasını tələb edir. Bu Flowcode -un çatışmazlığı deyil.

Flowcode həqiqətən sınaqdan çıxdı və Microchip mikroprosessorları ilə işləməyə başlamaq istəyən insanlar üçün çox tövsiyə olunur.

PIC üçün FlowCod proqramlaşdırma və konfiqurasiya şəkillərə uyğun olaraq qurulmuşdur

Addım 11: İsteğe bağlı I2C Relay Board

İsteğe bağlı I2C Relay Board
İsteğe bağlı I2C Relay Board
İsteğe bağlı I2C Relay Board
İsteğe bağlı I2C Relay Board
İsteğe bağlı I2C Relay Board
İsteğe bağlı I2C Relay Board

CPU lövhəsində artıq 16 röle üçün başlıq əlaqələri var. Bu çıxışlar iki ULN2803 çipi vasitəsilə açıq kollektor tranzistorlarıdır.

Sistemin ilk sınaqlarından sonra CPU lövhəsi ilə rölelər arasındakı bütün telləri bəyənmədim. CPU lövhəsinə bir I2C portu daxil etdiyim üçün, I2C portuna qoşulmaq üçün relay lövhəsini dizayn etmək qərarına gəldim. 16 kanallı MCP23017 G/Ç Portu Genişləndirici çipi və ULN2803 tranzistor massivindən istifadə edərək CPU ilə rölelər arasındakı əlaqələri 4 telə endirdim.

80 x 100 mm ölçülü PCB -yə 16 röleyi yerləşdirə bilmədiyim üçün iki lövhə düzəltmək qərarına gəldim. Hər MCP23017 16 portdan yalnız 8 -ni istifadə edir. 1 nömrəli lövhə 8 çıxışı idarə edir və 2 lövhə iki köməkçi çıxışı idarə edir. Lövhələrdəki yeganə fərq, hər bir lövhənin ünvanlarıdır. Bu mini tullanan ilə asanlıqla qurulur. Hər bir lövhədə digər lövhəyə güc və I2C məlumatı vermək üçün bağlayıcılar var.

QEYD:

Lazım gələrsə, proqram bütün 16 limanı istifadə edə biləcək yalnız bir lövhə təmin edir. Bütün çıxış rölesi məlumatları ilk lövhədə mövcuddur.

Dövrə isteğe bağlı və çox sadə olduğu üçün bir sxem yaratmadım. Kifayət qədər tələbat varsa, sonra əlavə edə bilərəm.

Addım 12: İsteğe bağlı RF Bağlantısı

İsteğe bağlı RF bağlantısı
İsteğe bağlı RF bağlantısı
İsteğe bağlı RF bağlantısı
İsteğe bağlı RF bağlantısı
İsteğe bağlı RF bağlantısı
İsteğe bağlı RF bağlantısı

Layihəni bitirdikdən sonra tezliklə bir çox 220V AC naqillərini taymerə çəkməli olduğumu başa düşdüm. Taymeri bir şkafın içərisinə və damın içərisindəki bütün 220V naqillərinə yaxın yerləşdirilməsinə imkan verən standart 315MHz modullarından istifadə edərək RF bağlantısı hazırladım.

Bağlantı 16MHz -də işləyən bir AtMega328P istifadə edir. Həm ötürücü, həm də alıcı üçün proqram eynidır və rejim mini tullanan tərəfindən seçilir.

Verici

Verici sadəcə CPU I2C portuna qoşulur. AtMega328P, I2C röle lövhələri ilə eyni məlumatları dinlədiyi üçün əlavə quraşdırma tələb olunmur.

Məlumat I2C portunda saniyədə bir dəfə yenilənir və ötürücü bu məlumatı RF bağlantısı üzərindən göndərir. Verici I2C məlumatlarını təxminən 30 saniyə ərzində almazsa, ötürücü davamlı olaraq bütün röleləri qəbuledici qurğuya bağlamaq üçün məlumat ötürəcək.

Verici modulunun gücü PC lövhəsində mini tullanan ilə 12V və 5V arasında seçilə bilər. Transmitterimi 12V istifadə edərək gücləndirirəm.

Alıcı

Alıcı vericidən kodlanmış məlumatları dinləyir və məlumatları I2C portuna yerləşdirir. Röle kartı sadəcə bu porta qoşulur və CPU lövhəsinə qoşulduğu kimi işləyir.

Alıcı 30 saniyə ərzində etibarlı məlumat almazsa, alıcı, röle lövhələrindəki bütün röleləri söndürmək üçün davamlı olaraq I2C portuna məlumat göndərəcək.

Sxemalar

Bir gün buna ehtiyac olarsa. Arduino eskizində, dövrə diaqramı olmadan dövrə qurmaq üçün lazım olan bütün məlumatlar var.

Menzil

Quraşdırmamda ötürücü ilə qəbuledicinin arası təxminən 10 metrdir. Taymer bir şkafın içərisindədir və rölin qurğusu tavanın üstündədir.

Addım 13: Son məhsul

Son Məhsul
Son Məhsul
Son Məhsul
Son Məhsul
Son Məhsul
Son Məhsul

Əsas qurğu köhnə bir layihə qutusuna quraşdırılmışdır. Aşağıdakıları ehtiva edir:

- 220V/12V transformator

- Enerji təchizatı lövhəsi

- CPU lövhəsi

- LCD Ekran

- Klaviatura

- RF Link Vericisi

- Əlavə ev uzaqdan qəbuledici qurğu, uzaqdan idarəetmə vasitəsi ilə işıqları yandırıb söndürməyimi təmin edir

Röle qurğusu aşağıdakılardan ibarətdir:

- 220V/12V transformator

- Enerji təchizatı lövhəsi

- RF Link Alıcısı

- 2 x I2C Relay Lövhəsi

Bütün lövhələr eyni ölçüdə hazırlanmışdır, bu da onları 3 mm aralıqlarla üst -üstə yığmağı asanlaşdırır.

Tövsiyə: