Mundarija:

8 kanalli programlanadigan taymer: 13 qadam
8 kanalli programlanadigan taymer: 13 qadam

Video: 8 kanalli programlanadigan taymer: 13 qadam

Video: 8 kanalli programlanadigan taymer: 13 qadam
Video: ЙЕНГИЛ ВА ОСОН ПУЛ ТОПИШ 2024, Noyabr
Anonim
8 kanalli dasturlashtiriladigan taymer
8 kanalli dasturlashtiriladigan taymer
8 kanalli dasturlashtiriladigan taymer
8 kanalli dasturlashtiriladigan taymer
8 kanalli dasturlashtiriladigan taymer
8 kanalli dasturlashtiriladigan taymer

Kirish

Men 1993 yildan beri o'z loyihalarim uchun Microchip -ning PIC mikrokontrolerlaridan foydalanmoqdaman va Microchip MPLab IDE yordamida barcha dasturlarimni montajchi tilida qildim. Mening loyihalarim oddiy svetoforlar va miltillovchi LEDlardan tortib to R/C modellari uchun USB joystik interfeyslariga va sanoatda ishlatiladigan kommutatorli analizatorlargacha. Rivojlanish ko'p kunlarni talab qildi, ba'zida esa minglab qatorli assembler kodlari.

Matrix Multimedia Flowcode 4 Professional -ni olgandan so'ng, men dasturiy ta'minotga shubha bilan qaradim. Ishonish juda oson ko'rinardi. Men sinab ko'rishga qaror qildim va har xil komponentli makrolarni sinab ko'rdim, hammasi katta muvaffaqiyat bilan. Flowcode -dan foydalanishning eng yaxshi tomoni shundaki, oddiy loyihalarni bir kechada kodlash mumkin edi. I²C va DS1307 real vaqt soati bilan o'ynaganimdan so'ng, Flowcode yordamida 8 ta kanal taymerini yaratishga qaror qildim. Kichkina va oson loyiha bo'lmagani uchun, men o'zimga Flowcode -ni o'rgatish uchun ajoyib loyiha bo'lishiga ishonardim.

Mikroprosessor va boshqa komponentlarni tanlash

Kiritish -chiqish pinlari soni talab qilinganligi sababli 40 pinli qurilmaga ehtiyoj sezilishi aniq edi. PIC 18F4520 asosan 32K dastur xotirasi va 1536 bayt ma'lumot xotirasi uchun tanlangan. Amaldagi barcha komponentlar standart teshikli qurilmalar bo'lib, agar kerak bo'lsa, Vero kartasida kontaktlarning zanglashiga olib keladi. Bu, shuningdek, non panelida rivojlanishiga yordam berdi.

1 -qadam: Loyihaning maqsadlari

Loyihaning maqsadlari
Loyihaning maqsadlari

Maqsadlar

- Batareya zaxirasi bilan aniq vaqtni saqlash.

- Barcha dasturlar va ma'lumotlar, hatto quvvat yo'qolganda ham saqlanishi kerak.

- Oddiy foydalanuvchi interfeysi.

- Dasturlashning moslashuvchanligi.

Vaqtni saqlash

Elektr uzilishlariga moyil bo'lgan hududda yashash, elektr uzatish liniyalaridan standart 50/60Hz vaqtni to'g'ri saqlash uchun etarli bo'lmaydi. Haqiqiy vaqtda soat juda muhim edi va bir nechta RTC chiplarini sinab ko'rganimdan so'ng, men DS1307-ni oddiy osilator va batareyaning zaxira konfiguratsiyasi tufayli qaror qildim. Vaqtni aniq saqlash DS1307 ga ulangan 32,768 kHz kristalli yordamida amalga oshirildi. Aniqlik 4 oylik kristallardan foydalangan holda 2 oylik sinov muddati davomida 2 soniya ichida aniqlandi.

Ma'lumotni saqlash

Taymer dasturining barcha ma'lumotlari, hatto elektr quvvati uzilib qolganda ham saqlanishi kerak. 100 tagacha turli xil dasturlar va har xil konfiguratsiya ma'lumotlari bilan, PIC bortidagi 256 baytli EEPROM etarlicha katta bo'lmasligi aniq bo'ldi. 24LC256 I²C EEPROM barcha dasturlash ma'lumotlarini saqlash uchun ishlatiladi.

Oddiy foydalanuvchi interfeysi

Foydalanuvchi interfeysi atigi 2 ta elementdan, LED yoritgichli 16 x 4 qatorli LCD displeydan va 4 x 3 klaviaturadan iborat. Barcha dasturlash faqat bir nechta tugmachalarni bosish orqali amalga oshirilishi mumkin. Interfeysga ovozli piezo -signal, vizual miltillovchi LCD orqa nuri qo'shiladi.

2 -qadam: dasturlashning moslashuvchanligi

Dasturlashning moslashuvchanligi
Dasturlashning moslashuvchanligi

Dasturning etarli darajada moslashuvchanligini ta'minlash uchun taymerda 100 ta dastur mavjud bo'lib, ularni alohida sozlash mumkin. Har bir dastur uchun "Vaqt", "Ish vaqti", "Chiqish kanallari" va "Hafta kuni" ni belgilash mumkin. Har bir dasturda uchta rejim mavjud:

- Avtomatik: Vaqt, O'chirish vaqti, Chiqish kanali va hafta kuni o'rnatiladi.

- O'chirilgan: Sozlamalarni o'chirmasdan, individual dasturni o'chirib qo'yish mumkin. Dasturni qayta yoqish uchun, faqat boshqa rejimni tanlang.

- Kunduzi/kechasi: O'z vaqtida, o'chirish vaqti, chiqish kanali va hafta kuni belgilanadi. Avtomatik rejim bilan bir xil ishlaydi, lekin ishlaydi

faqat qorong'i bo'lsa, chiqishlarni yoqish va o'chirish vaqtlari o'rtasida yoqing. Bu kunduzi/kechasi to'liq nazorat qilish imkonini beradi

Quyosh botganda chiroqlarni yoqish va quyosh chiqqanda o'chirish uchun qo'shimcha moslashuvchanlik.

1 -misol: Chiroq soat 20:00 dan keyin yonadi va quyosh chiqqanda chiroq o'chadi.

Soat: 20:00, O'chirilgan: 12: 00, 2 -misol: Quyosh botganda chiroq yonadi va soat 23:00 da chiroq o'chadi.

Qachon: 12:00

O'chirish: 23:00

3 -misol: Quyosh botganda yorug'lik yonadi va quyosh chiqqanda chiroq o'chadi.

Vaqt: 12:01

O'chirish: 12:00

Qo'shimcha variantlar mavjud, ularning barchasi 100 ta yoqish/o'chirish dasturidan mustaqil ishlaydi.

Dastur kanallari faol: Bir nechta dasturlarni o'chirish o'rniga, individual chiqish kanallari dasturlarni o'zgartirmasdan o'chirib qo'yilishi mumkin.

Yordamchi kirishlar: ma'lum bir chiqish kanallarini ma'lum vaqtgacha yoqish uchun ikkita raqamli kirish mavjud. U, masalan, uyga kech tushganda, masofadan boshqarish pultidagi tugma bosilganda yoki uy signallari ishga tushganda, boshqa chiroqlar seriyasini yoqish uchun ma'lum chiroqlarni yoqish uchun ishlatilishi mumkin.

Yordamchi chiqishlar: ikkita qo'shimcha chiqish (8 ta chiqish kanalidan tashqari) mavjud. Ularni ma'lum chiqish kanallari yoki raqamli kirishlar bilan yoqish uchun dasturlash mumkin. O'rnatishda menda 24V kuchlanishli sug'orishni boshqaradigan 6-8 chiqish bor. Men yordamchi chiqishlardan birini yoqish, sug'orish tizimi uchun 24V quvvat manbaini yoqish uchun 6-8 kanallardan foydalanaman.

Qo'lda yoqish: Asosiy ekranda, 1-8 tugmalari yordamida kanallarni qo'lda yoqish yoki o'chirish mumkin.

3 -qadam: Uskuna

Uskuna
Uskuna

Quvvat manbai: Quvvat manbai to'g'rilash moslamasi, yumshatuvchi kondansatkich va haddan tashqari yuklanishdan himoyalanish uchun 1 Amperli sigortadan iborat. Keyinchalik bu ta'minot 7812 va 7805 regulyatori bilan tartibga solinadi. 12V kuchlanish chiqish rölesini haydash uchun ishlatiladi va boshqa barcha sxemalar 5V kuchlanishdan quvvatlanadi. 7805 regulyatori 7812 regulyatorining chiqishiga ulanganligi sababli umumiy oqim 7812 regulyator orqali 1 amper bilan cheklanishi kerak. Bu regulyatorlarni mos keladigan issiqlik qabul qilgichga o'rnatish maqsadga muvofiqdir.

I²C avtobus: Flowcode I²C apparatini boshqarishga ruxsat bergan bo'lsa -da, men I²C dasturiy ta'minotidan foydalanishga qaror qildim. Bu pin topshiriqlarini yanada moslashuvchan qilish imkonini beradi. Sekinroq (50 kHz) bo'lsa ham, u I²C apparatiga qaraganda ancha yaxshi ishlaydi. DS1307 va 24LC256 ikkalasi ham ushbu I²C avtobusiga ulangan.

Haqiqiy vaqt soati (DS1307): ishga tushirish vaqtida 0 va 7 RTC registri o'qiladi va unda vaqt va konfiguratsiya ma'lumotlari mavjudligini aniqlash mumkin. To'g'ri sozlashdan so'ng, RTC vaqti o'qiladi va PICga yuklangan vaqt. Bu vaqt RTCdan o'qiladigan yagona vaqt. Ishga tushgandan so'ng, RTC 7 -pinida 1 gigagertsli puls bo'ladi. Bu 1 gigagertsli signal RB0/INT0 ga ulangan va uzilish xizmati orqali PIC vaqti har soniyada yangilanadi.

Tashqi EEPROM: Barcha dastur ma'lumotlari va imkoniyatlari tashqi EEPROMda saqlanadi. EEPROM ma'lumotlari ishga tushganda yuklanadi va ma'lumotlar nusxasi PIC xotirasida saqlanadi. EEPROM ma'lumotlari faqat dastur sozlamalari o'zgartirilganda yangilanadi.

Kunduzi/kechasi sensori: kunduzi/kechasi sensori sifatida yorug'likka bog'liq bo'lgan standart qarshilik (LDR) ishlatiladi. LDRlar bir xil yorug'lik sharoitida har xil qarshilik qiymatiga ega bo'lgan turli shakl va navlarda bo'lgani uchun, yorug'lik darajasini o'qish uchun analog kirish kanalidan foydalandim. Kunduzgi va tungi darajalar sozlanishi va har xil sensorlar uchun moslashuvchanlikni ta'minlaydi. Gisterezni o'rnatish uchun kunduzi va kechasi uchun individual qiymatlarni belgilash mumkin. Yorug'lik darajasi kunduzdan pastda yoki tunda belgilangan nuqtalardan yuqori bo'lsa, 60 soniyadan ko'proq vaqt davomida holat o'zgaradi.

LCD displey: 4 qatorli, 16 belgili displey ishlatiladi, chunki barcha ma'lumotlarni 2 qatorli displeyda ko'rsatish mumkin emas edi. Loyiha LCD_Custom_Char makrosida aniqlangan ba'zi maxsus belgilarni o'z ichiga oladi.

Yordamchi kirishlar: ikkala kirish NPN tranzistori bilan tamponlangan. +12v va 0V konnektorda ham mavjud, bu tashqi ulanishlarga yanada moslashuvchan ulanish imkonini beradi. Misol sifatida, masofadan boshqarish pulti qabul qilgichni manbaiga ulash mumkin.

Chiqish: Barcha chiqishlar 12V o'rni yordamida sxemadan elektrdan ajratilgan. Amaldagi o'rni 250 V AC, 10 amperlik kuchlanish bilan baholanadi. Odatda ochiq va odatda yopiq kontaktlar terminallarga chiqariladi.

Klaviatura: 3 x 4 matritsali klaviatura ishlatiladi va u PORTB: 2..7 ga ulangan.

4 -qadam: Klaviatura uzilishi

Klaviatura uzilishlari
Klaviatura uzilishlari
Klaviatura uzilishlari
Klaviatura uzilishlari
Klaviatura uzilishlari
Klaviatura uzilishlari

Men har qanday tugmachani bosishda PORTB O'zgarishdagi uzilishidan foydalanmoqchi edim. Buning uchun har bir klaviatura uzilishidan oldin va keyin PORTB yo'nalishi va ma'lumotlari to'g'ri sozlanganligiga ishonch hosil qilish uchun Flowcode -da Custom Interrupt yaratilishi kerak edi. Har safar tugma bosilganda yoki qo'yib yuborilganda uzilish hosil bo'ladi. To'xtatish tartibi faqat tugma bosilganda javob beradi.

BOShQA KIRISH

Kodni yoqish

portb = 0b00001110; trisb = 0b11110001;

intcon. RBIE = 1;

intcon2. RBIP = 1;

intcon2. RBPU = 1;

rcon. IPEN = 0;

Ishlov beruvchining kodi

agar (intcon & (1 << RBIF))

{FCM_%n ();

portb = 0b00001110;

trisb = 0b11110001;

wreg = portb;

clear_bit (intcon, RBIF);

}

Muammolar topildi

Tanaffus paytida, uzilish xizmat ko'rsatish tartibi hech qanday sharoitda, dasturning qolgan qismida ishlatilishi mumkin bo'lgan boshqa so'llarni chaqirishi kerak. Oxir -oqibat, bu to'siqni to'ldirish bilan bog'liq muammolarga olib keladi, chunki uzilish bir vaqtning o'zida asosiy dastur ham bir xil dasturda bo'lishi mumkin. Bu kodni kompilyatsiya qilishda Flowcode tomonidan jiddiy xato deb ham tan olinadi.

GetKeyPadNumber ostidagi klaviaturaning maxsus kodida Delay_us so'liga shunday qo'ng'iroq mavjud bo'lib, bu to'plamning to'lib toshishiga olib keladi. Buni bartaraf etish uchun men Delay_us (10) buyrug'ini olib tashladim va uning o'rniga 25 qatorli "wreg = porta;" qo'ydim. buyruqlar. Bu buyruq PORTA ni o'qiydi va uning qiymatini biroz kechiktirish uchun W registriga qo'yadi. Bu buyruq montajchi movf porta ga o'xshash bitta yo'riqnoma uchun tuziladi, 0. Loyihada ishlatiladigan 10MGts soat uchun har bir ko'rsatma 400ns bo'ladi va 10us kechikish olish uchun menga 25 ta ko'rsatma kerak edi.

3 -rasmning ikkinchi qatoriga e'tibor bering: GetKeypadNumber Custom Code, original delay_us (10) buyrug'i "//" bilan o'chirilgan. Buning ostiga men o'zimning 25 "wreg = porta" ni qo'shdim. yangi 10us kechiktirishni buyuradi. Keypad_ReadKeypadNumber maxsus kodi ichidagi hech qanday so'lga qo'ng'iroq qilinmagan bo'lsa, endi klaviatura so'lini uzilish xizmat ko'rsatish tartibida ishlatish mumkin.

Shuni ta'kidlash kerakki, Flowcode klaviaturasi va eBlocks komponentalari kirish liniyalarida standart tortishish rezistorlaridan foydalanmaydi. Buning o'rniga u 100K pastga tushadigan rezistorlardan foydalanadi. Rivojlanish paytida klaviaturada ba'zi shovqinlar tufayli 100K rezistorlar 10K bilan almashtirildi va barcha 10K rezistorlar 1K5 bilan almashtirildi. Klaviatura 200 mm simlar bilan to'g'ri ishlashi tekshirildi.

5 -qadam: Taymerdan foydalanish

Taymerdan foydalanish
Taymerdan foydalanish
Taymerdan foydalanish
Taymerdan foydalanish
Taymerdan foydalanish
Taymerdan foydalanish

Barcha ekranlar foydalanuvchi sozlamalarga tez o'zgartirish kiritish uchun zarur bo'lgan barcha ma'lumotlarni ko'rsatish uchun o'rnatiladi. 4 -qator menyular va dastur variantlari bo'ylab harakatlanishda yordam berish uchun ishlatiladi. Oddiy ish paytida jami 22 ta ekran mavjud.

1 -qator: Vaqt va holat

Joriy kun va vaqtni, so'ngra holat ikonkalarini ko'rsatadi:

A - Aux Input A ishga tushirilganligini va Aux Input A taymeri ishlayotganligini bildiradi.

B - Aux Input B ishga tushirilganligini va Aux Input B taymerining ishlayotganligini bildiradi.

C - Aux Chiqish C yoqilganligini bildiradi.

D - Aux Chiqish D yoqilganligini bildiradi.

} - Kunduzi/kechasi sensori holati. Agar u mavjud bo'lsa, bu tun ekanligini ko'rsatadi.

2 -qator: Dastur natijalari

Turli dasturlar yoqilgan kanallarni ko'rsatadi. Kanallar chiqish raqamlarida ko'rsatiladi va "-" ma'lum chiqish yoqilmaganligini ko'rsatadi. "Faol dastur chiqishlari" da o'chirilgan kanallar bu erda ko'rsatiladi, lekin haqiqiy chiqishlar o'rnatilmaydi.

3 -qator: Haqiqiy chiqishlar

Qaysi kanallar har xil dasturlar, Aux Inputs A & B yoki foydalanuvchi tomonidan qo'lda chiqarilishi yoqilganligini ko'rsatadi. 0 tugmachasini bosish qo'lda yoqilgan barcha chiqishni o'chiradi va A va B yordamchi taymerlarni qayta o'rnatadi.

4 -LINE: Menyu va kalit variantlari (barcha menyularda)

"*" Va "#" tugmalarining vazifasini ko'rsatadi.

Markaziy qism tanlangan ekran uchun qaysi raqamli tugmalar (0-9) faol ekanligini ko'rsatadi.

A & B Aux Input kiritishning holati ham Ochish yoki Yopish tugmachasi yordamida ko'rsatiladi.

Chiqishlarni klaviaturadagi mos keladigan tugmani bosib qo'lda yoqish/o'chirish mumkin.

Menyular davomida Star va Hash tugmachalari dasturning turli xil variantlarida harakat qilish uchun ishlatiladi. Variantlarni o'rnatish uchun 0-9 tugmachalari ishlatiladi. Agar bitta ekranda yoki dasturlash menyusida bir nechta variant mavjud bo'lsa, Hash tugmasi turli xil variantlarni ko'rib chiqish uchun ishlatiladi. Joriy tanlangan variant har doim ekranning chap tomonidagi ">" belgisi bilan ko'rsatiladi.

0-9 Vaqt qiymatlarini kiriting

1-8 Kanal tanlovini o'zgartirish

14 36 Dasturlar bo'ylab qadam, 1 qadam orqaga, 4 qadam orqaga 10 ta dastur, 3 qadam oldinga, 6 qadam oldinga 10

dasturlar

1-7 Haftaning kunlarini belgilang. 1 = yakshanba, 2 = dushanba, 3 = seshanba, 4 = chorshanba, 5 = payshanba, 6 = juma, 7 = shanba

0 Asosiy ekranda barcha qo'lda o'zgartirish va A va K kiritish taymerlarini o'chiring. Boshqa menyularda o'zgarishlar bo'ladi

tanlangan variantlar

# Asosiy ekranda barcha qo'lda o'zgartirishlar, A va B kiritish taymerlari va dastur chiqishlari o'chiriladi.

keyingi voqea.

* va 1 Taymerni qayta yoqing

* va 2 Barcha dasturlar va variantlarni tozalang, sozlamalarni sukut bo'yicha tiklang.

* va 3 Taymerni kutish holatiga o'tkazing. Taymerni qayta yoqish uchun istalgan tugmani bosing.

Har qanday vaqt qiymatini noto'g'ri kiritish paytida, LCD orqa nuri 5 marta yonib -o'chib turishini ko'rsatadi. Shu bilan birga, signal eshitiladi. Chiqish va Keyingi buyruqlari faqat joriy yozuv to'g'ri bo'lsa ishlaydi.

LCD orqa nuri

Dastlabki ishga tushganda, LCD orqa nuri 3 daqiqa yonadi, agar:

- Uskuna ishlamayapti (EEPROM yoki RTC topilmadi)

- RTCda vaqt belgilanmagan

LCD orqa nuri klaviaturadagi har qanday foydalanuvchi kiritishda yana 3 daqiqa yonadi. Agar LCD orqa nuri o'chirilgan bo'lsa, har qanday klaviatura buyrug'i birinchi navbatda LCD orqa yoritgichini yoqadi va bosilgan tugmachani e'tiborsiz qoldiradi. Bu klaviaturani ishlatishdan oldin foydalanuvchining LCD displeyini o'qishini ta'minlaydi. Agar Aux Input A yoki Aux Input B yoqilgan bo'lsa, LCD orqa nuri 5 soniya yonadi.

6 -qadam: Menyu ekran tasvirlari

Menyu ekran tasvirlari
Menyu ekran tasvirlari
Menyu ekran tasvirlari
Menyu ekran tasvirlari
Menyu ekran tasvirlari
Menyu ekran tasvirlari

Klaviatura yordamida har bir variantni osongina dasturlash mumkin. Rasmlar har bir ekran nima qilayotgani haqida ma'lumot beradi.

7 -qadam: tizimni loyihalash

Tizim dizayni
Tizim dizayni

Barcha ishlab chiqish va sinovlar non panelida amalga oshirildi. Tizimning barcha bo'limlarini ko'rib, men tizimni uchta modulga ajratdim. Bu qaror, asosan, Eagle -ning bepul versiyasining PCB o'lchamlari (80 x 100 mm) cheklanganligi tufayli qabul qilingan.

Modul 1 - Quvvat manbai

2 -modul - CPU platasi

3 -modul - o'rni taxtasi

Men qaror qildimki, barcha komponentlar osongina olinishi kerak va men sirtdan o'rnatish komponentlarini ishlatishni xohlamadim.

Keling, ularning har birini ko'rib chiqaylik.

8 -qadam: Elektr ta'minoti

Quvvatlantirish manbai
Quvvatlantirish manbai
Quvvatlantirish manbai
Quvvatlantirish manbai
Quvvatlantirish manbai
Quvvatlantirish manbai
Quvvatlantirish manbai
Quvvatlantirish manbai

Quvvat manbai to'g'ridan -to'g'ri, 12V va 5V protsessor va o'rni platalarini etkazib beradi.

Men voltaj regulyatorlarini yaxshi issiqlik qabul qilgichlarga o'rnatdim, shuningdek, haddan tashqari kuchlanishli kondansatkichlarni etkazib berdim.

9 -qadam: CPU platasi

CPU platasi
CPU platasi
CPU platasi
CPU platasi
CPU platasi
CPU platasi
CPU platasi
CPU platasi

LCD displey, klaviatura va o'rni tashqari barcha komponentlar CPU platasiga o'rnatilgan.

Ta'minot, ikkita raqamli kirish va yorug'lik sensori o'rtasidagi aloqani soddalashtirish uchun terminal bloklari qo'shildi.

Sarlavha pinlari/rozetkalari LCD displey va klaviaturaga oson ulanishni ta'minlaydi.

O'rnimizni chiqishlari uchun men ULN2803 dan foydalanardim. U allaqachon kerakli haydash rezistorlari va flyback diodlarini o'z ichiga oladi. Bu protsessor platasini Eagle -ning bepul versiyasi yordamida ishlab chiqarishni ta'minladi. O'rnimizni ikkita ULN2803 ga ulangan. Pastki ULN2803 8 ta chiqish uchun, yuqori qismi esa ULN2803 ikkita yordamchi chiqish uchun ishlatiladi. Har bir yordamchi chiqishda to'rtta tranzistor mavjud. O'rnimizni ulanishlari, shuningdek, bosh pinlari/rozetkalari orqali amalga oshiriladi.

PIC 18F4520 PicKit 3 dasturchisi orqali oson dasturlash uchun dasturlash rozetkasi bilan jihozlangan.

ESLATMA:

Siz taxtada qo'shimcha 8 pinli IC borligini sezasiz. Yuqori IC - bu PIC 12F675 va raqamli kirishga ulangan. Bu PCB dizayni paytida qo'shilgan. Bu raqamli kirishni oldindan qayta ishlashni osonlashtiradi. Mening ilovamda raqamli kirishlar biri signalizatsiya tizimimga ulangan. Agar signal eshitilsa, uyimda ma'lum chiroqlar yonadi. Mening signalizatsiya tizimimni qurollantirish va qurolsizlantirish sirenada turli xil signallarni beradi. PIC 12F675 -dan foydalanib, men hozir qurol -aslaha va haqiqiy signalni ajrata olaman. 12F675 shuningdek, dasturlash rozetkasi bilan jihozlangan.

Men, shuningdek, sarlavha pin/rozetkasi orqali I2C portini ta'minladim. Bu keyinchalik o'rni taxtalari bilan yordam beradi.

Kengashda bir nechta o'tish moslamalari mavjud, ular IC rozetkalarini o'rnatishdan oldin lehimlanishi kerak.

10 -qadam: Oqim kodining xulosasi

Oqim kodining xulosasi
Oqim kodining xulosasi
Oqim kodining xulosasi
Oqim kodining xulosasi
Oqim kodining xulosasi
Oqim kodining xulosasi

Men yig'ilishda registr darajasida ishlashga odatlanganim uchun, ba'zida komponent makrosidan foydalanish qiyin va asabiylashardi. Bu, asosan, Flowcode dasturlash tuzilmasi haqida bilimim yo'qligidan kelib chiqdi. Men C yoki ASM bloklarini ishlatgan yagona joy - bu uzilishlar rejimida chiqishlarni yoqish va Do_KeyPressed rejimida klaviatura uzilishini o'chirish/yoqish. PIC, shuningdek, EEPROM yoki RTC topilmaganda, ASM bloki yordamida SLEEP -ga joylashtiriladi.

Har xil I²C buyruqlaridan foydalanish bo'yicha yordam Flowcode Help fayllaridan olingan. Buyruqlarni muvaffaqiyatli ishlatishdan oldin, har xil I²C qurilmalari qanday ishlashini aniq bilish talab qilinadi. Zanjirni loyihalashtirish uchun dizaynerdan barcha tegishli ma'lumotlar jadvallari bo'lishi talab qilinadi. Bu Flowcode -ning kamchiliklari emas.

Oqim kodi haqiqatan ham sinovdan o'tdi va Microchip mikroprotsessorlar diapazoni bilan ishlashni boshlamoqchi bo'lganlar uchun tavsiya etiladi.

PIC uchun oqim kodini dasturlash va konfiguratsiya rasmlarga muvofiq o'rnatildi

11 -qadam: I2C ixtiyoriy taxtasi

I2C o'rni ixtiyoriy kengashi
I2C o'rni ixtiyoriy kengashi
I2C o'rni ixtiyoriy kengashi
I2C o'rni ixtiyoriy kengashi
I2C o'rni ixtiyoriy kengashi
I2C o'rni ixtiyoriy kengashi

CPU platasida 16 ta o'rni uchun sarlavha ulanishlari mavjud. Bu chiqish ULN2803 ikkita chip orqali ochiq kollektorli tranzistorlar bo'lib, ular o'rni to'g'ridan -to'g'ri quvvatlantirish uchun ishlatilishi mumkin.

Tizimning birinchi sinovlaridan so'ng, menga CPU platasi va o'rni orasidagi barcha simlar yoqmadi. I2C portini protsessor platasiga kiritganim uchun, I2C portiga ulanish uchun o'z o'rni kartasini loyihalashga qaror qildim. 16 kanalli MCP23017 I/U Port Expander chipi va ULN2803 tranzistorli massividan foydalanib, men protsessor va o'rni orasidagi ulanishni 4 ta simgacha kamaytirdim.

Men 80 x 100 mm o'lchamdagi PCBga 16 ta o'rni sig'dira olmaganim uchun ikkita taxta yasashga qaror qildim. Har bir MCP23017 atigi 8 ta 16 portdan foydalanadi. 1 -taxtada 8 ta chiqish, 2 -kartada esa ikkita yordamchi chiqish mavjud. Plitalardagi yagona farq - har bir taxtaning manzili. Bu mini o'tish moslamasi yordamida osongina o'rnatiladi. Har bir taxtada boshqa kartaga quvvat va I2C ma'lumotlarini etkazib beradigan ulagichlar mavjud.

ESLATMA:

Agar kerak bo'lsa, dasturiy ta'minot 16 ta portni ishlatishi mumkin bo'lgan bitta bortni ta'minlaydi. Barcha chiqish rölesi ma'lumotlari birinchi taxtada mavjud.

O'chirish ixtiyoriy va juda oddiy bo'lgani uchun men sxemani yaratmaganman. Agar talab etarli bo'lsa, keyinroq qo'shishim mumkin.

12 -qadam: ixtiyoriy RF havolasi

Ixtiyoriy RF havolasi
Ixtiyoriy RF havolasi
Ixtiyoriy RF havolasi
Ixtiyoriy RF havolasi
Ixtiyoriy RF havolasi
Ixtiyoriy RF havolasi

Loyihani tugatgandan so'ng, men tez orada taymerga 220V AC simini tortishim kerakligini tushundim. Men standart 315 MGtsli modullardan foydalangan holda chastota aloqasini ishlab chiqdim, bu taymerni shkafning ichiga joylashtirishga imkon berdi va barcha 220V simlariga yaqin bo'lgan tomning o'rni taxtasi.

Havola 16 MGts chastotada ishlaydigan AtMega328P -dan foydalanadi. Ham uzatuvchi, ham qabul qiluvchining dasturiy ta'minoti bir xil, va rejim mini o'tish moslamasi tomonidan tanlanadi.

Transmitter

Transmitter CPU I2C portiga ulangan. Qo'shimcha sozlash talab qilinmaydi, chunki AtMega328P I2C o'rni platalari bilan bir xil ma'lumotlarni tinglaydi.

Ma'lumot I2C portida sekundiga bir marta yangilanadi va uzatuvchi bu ma'lumotni RF havolasi orqali yuboradi. Agar uzatuvchi I2C ma'lumotlarini taxminan 30 soniya davomida qabul qilmasa, uzatuvchi uzluksiz ravishda ma'lumotlarni uzatadi va qabul qiluvchi blokga barcha o'rni o'chadi.

Transmitter modulining quvvatini kompyuter platasidagi mini o'tish moslamasi bilan 12V dan 5V gacha tanlash mumkin. Men transmitterga 12V quvvat beraman.

Qabul qiluvchi

Qabul qilgich transmitterdan kodlangan ma'lumotlarni tinglaydi va ma'lumotlarni I2C portiga joylashtiradi. O'rnatish paneli bu portga ulanadi va u CPU platasiga ulanganidek ishlaydi.

Qabul qilgich 30 soniya davomida to'g'ri ma'lumotni olmagan bo'lsa, qabul qiluvchi I2C portiga ma'lumotlarni uzluksiz ravishda yuboradi, bu esa o'rni platalaridagi barcha o'rni o'chiradi.

Sxemalar

Bir kun kelib, agar unga talab bo'lsa. Arduino eskizida kontaktlarning zanglamas sxemasini tuzish uchun zarur bo'lgan barcha ma'lumotlar mavjud.

Range

O'rnatishimda uzatuvchi va qabul qilgich bir -biridan taxminan 10 metr masofada joylashgan. Taymer shkafning ichida, o'rni esa shiftning tepasida joylashgan.

13 -qadam: Yakuniy mahsulot

Yakuniy mahsulot
Yakuniy mahsulot
Yakuniy mahsulot
Yakuniy mahsulot
Yakuniy mahsulot
Yakuniy mahsulot

Asosiy blok eski loyiha qutisiga o'rnatildi. U quyidagilarni o'z ichiga oladi:

- 220V/12V transformator

- Elektr ta'minoti paneli

- CPU platasi

- LCD displey

- Klaviatura

- RF havolali uzatuvchi

- Menga masofadan boshqarish pulti orqali chiroqlarni yoqish/o'chirishga imkon beradigan qo'shimcha uyni masofadan qabul qilish moslamasi

O'rnatish moslamasi quyidagilardan iborat.

- 220V/12V transformator

- Elektr ta'minoti paneli

- RF aloqasi qabul qiluvchisi

- 2 x I2C o'rni taxtasi

Hamma taxtalar bir xil o'lchamda yaratilgan bo'lib, ularni bir -birining ustiga 3 millimetrli armatura bilan biriktirishni osonlashtiradi.

Tavsiya: