Სარჩევი:

8 არხიანი პროგრამირებადი ტაიმერი: 13 ნაბიჯი
8 არხიანი პროგრამირებადი ტაიმერი: 13 ნაბიჯი

ვიდეო: 8 არხიანი პროგრამირებადი ტაიმერი: 13 ნაბიჯი

ვიდეო: 8 არხიანი პროგრამირებადი ტაიმერი: 13 ნაბიჯი
ვიდეო: #8 როგორ დავაპროგრამოთ Outseal Arduino PLC - მრიცხველები 2024, ნოემბერი
Anonim
8 არხიანი პროგრამირებადი ტაიმერი
8 არხიანი პროგრამირებადი ტაიმერი
8 არხიანი პროგრამირებადი ტაიმერი
8 არხიანი პროგრამირებადი ტაიმერი
8 არხიანი პროგრამირებადი ტაიმერი
8 არხიანი პროგრამირებადი ტაიმერი

შესავალი

მე 1993 წლიდან ვიყენებ მიკროჩიპის PIC მიკროკონტროლერის დიაპაზონს ჩემი პროექტებისთვის და ვაკეთებდი ჩემს ყველა პროგრამირებას ასამბლერის ენაზე, მიკროჩიპის MPLab IDE გამოყენებით. ჩემი პროექტები იყო მარტივი შუქნიშნებიდან და მოციმციმე LED- ები, დამთავრებული USB ჯოისტიკების ინტერფეისით R/C მოდელებისთვის და გადამყვანების ანალიზატორებით, რომლებიც გამოიყენება ინდუსტრიაში. განვითარებას მრავალი დღე დასჭირდა, ზოგჯერ კი ასამბლერი კოდის ათასობით სტრიქონი.

მას შემდეგ რაც მივიღე Matrix Multimedia Flowcode 4 Professional, მე საკმაოდ სკეპტიკურად ვიყავი განწყობილი პროგრამული უზრუნველყოფის მიმართ. ძალიან ადვილი დასაჯერებელი ჩანდა. მე გადავწყვიტე ვცადო და გამოვცადე ყველა განსხვავებული კომპონენტის მაკრო, ყველა დიდი წარმატებით. Flowcode– ის გამოყენების საუკეთესო ნაწილი იყო ის, რომ მარტივი პროექტების კოდირება შესაძლებელია ერთ ღამეში. I²C და DS1307 რეალურ დროში თამაშის შემდეგ მე გადავწყვიტე 8 არხის ტაიმერის შემუშავება Flowcode– ის გამოყენებით. არ იყო პატარა და მარტივი პროექტი, მე მჯეროდა, რომ ეს იქნებოდა დიდი პროექტი, რომ მე თვითონ მესწავლებინა Flowcode.

მიკროპროცესორისა და სხვა კომპონენტების შერჩევა

I/O ქინძისთავების რაოდენობის გამო, ცხადი იყო, რომ საჭირო იქნება 40 პინიანი მოწყობილობა. PIC 18F4520 შეირჩა, ძირითადად მისი 32K პროგრამული მეხსიერებისთვის და 1536 ბაიტი მონაცემთა მეხსიერებისთვის. გამოყენებული ყველა კომპონენტი არის სტანდარტული ხვრელი მოწყობილობები, რაც შესაძლებელს ხდის სქემის აგებას ვერო ბორტზე საჭიროების შემთხვევაში. ეს ასევე ხელს უწყობს პურის დაფაზე განვითარებას.

ნაბიჯი 1: პროექტის მიზნები

პროექტის მიზნები
პროექტის მიზნები

მიზნები

- დროის ზუსტი დაცვა, ბატარეის სარეზერვო საშუალებით.

- ყველა პროგრამა და მონაცემი შეინახება, ძალაუფლების დაკარგვის შემდეგაც კი.

- მარტივი ინტერფეისი.

- პროგრამირების მოქნილობა.

დროის შენახვა

ელექტროენერგიის გათიშვისკენ მიდრეკილ ტერიტორიაზე მცხოვრები ელექტროენერგიის ხაზებიდან სტანდარტული 50/60Hz არ იქნება საკმარისი დროის ზუსტი შესანახად. რეალურ დროში საათი აუცილებელი იყო და რამოდენიმე RTC ჩიპის შემოწმების შემდეგ გადავწყვიტე DS1307 მისი მარტივი ოსცილატორისა და ბატარეის სარეზერვო კონფიგურაციის გამო. საკმაოდ ზუსტი დროის შენახვა იქნა მიღებული მხოლოდ 32.768 კჰც ბროლის გამოყენებით, რომელიც დაკავშირებულია DS1307- თან. სიზუსტე იყო 2 წამის განმავლობაში 2 თვის საცდელი პერიოდის განმავლობაში 4 სხვადასხვა მარკის კრისტალების გამოყენებით.

მონაცემთა შენახვა

ტაიმერის პროგრამის ყველა მონაცემი უნდა იყოს დაცული, ელექტროენერგიის გათიშვის დროსაც კი. 100 – მდე სხვადასხვა პროგრამით და კონფიგურაციის სხვადასხვა მონაცემებით, ცხადი გახდა, რომ PIC– ის 256 ბაიტი EEPROM ბორტზე არ იქნება საკმარისად დიდი. 24LC256 I²C EEPROM გამოიყენება პროგრამირების ყველა ინფორმაციის შესანახად.

მარტივი ინტერფეისი

მომხმარებლის ინტერფეისი შედგება მხოლოდ 2 ელემენტისგან, 16 x 4 ხაზიანი LCD დისპლეით LED განათებით და 4 x 3 კლავიატურით. ყველა პროგრამირება შესაძლებელია მხოლოდ რამდენიმე ღილაკის დაჭერით. ინტერფეისის დამატება არის ხმოვანი პიეზო ზარი და ვიზუალური მოციმციმე LCD შუქნიშანი.

ნაბიჯი 2: პროგრამირების მოქნილობა

პროგრამირების მოქნილობა
პროგრამირების მოქნილობა

პროგრამის საკმარისი მოქნილობის უზრუნველსაყოფად, ტაიმერს აქვს 100 პროგრამა, რომელთა დადგენა შესაძლებელია ინდივიდუალურად. თითოეული პროგრამისთვის შეიძლება დადგინდეს დროულად, გამორთვის დრო, გამომავალი არხები და კვირის დღე. თითოეულ პროგრამას აქვს სამი რეჟიმი:

- ავტო: დროულად, გამორთულ დროს, გამომავალი არხი და კვირის დღე დაყენებულია.

- გამორთული: ინდივიდუალური პროგრამის გამორთვა შესაძლებელია პარამეტრების წაშლის გარეშე. პროგრამის ხელახლა გასააქტიურებლად, უბრალოდ აირჩიეთ სხვა რეჟიმი.

- დღე/ღამე: დროულად, გამორთულ დროს, გამომავალი არხი და კვირის დღე დადგენილია. მუშაობს იგივე, რაც ავტო რეჟიმი, მაგრამ იქნება

ჩართეთ შედეგები მხოლოდ ჩართვისა და გამორთვის დროს შორის, როდესაც ბნელა. ეს ასევე შესაძლებელს ხდის დღის/ღამის სრულ კონტროლს

როგორც დამატებითი მოქნილობა მზის ჩასვლისას განათების ჩასართავად და მზის ამოსვლისას.

მაგალითი 1: აანთებს შუქს 20:00 საათის შემდეგ და ჩააქრობს მზის ამოსვლისას.:

: 20:00 საათზე, გამორთული: 12: 00, მაგალითი 2: აანთებს მზის ჩასვლისას და გამორთავს 23:00 საათზე.

თარიღი: 12:00 საათი

გამორთული: 23:00 საათი

მაგალითი 3: აანთებს მზის ჩასვლისას და გამორთავს მზის ამოსვლისას.

თარიღი: 12:01

გამორთული: 12:00 საათი

ხელმისაწვდომია დამატებითი პარამეტრები, ყველა მუშაობს დამოუკიდებლად 100 ჩართული/გამორთული პროგრამებისგან.

პროგრამის არხები აქტიურია: რამდენიმე პროგრამის გამორთვის ნაცვლად, ინდივიდუალური გამომავალი არხების გამორთვა შესაძლებელია პროგრამების შეცვლის გარეშე.

დამხმარე საშუალებები: ხელმისაწვდომია ორი ციფრული შეყვანა, რომელიც საშუალებას მისცემს გარკვეული გამომავალი არხების ჩართვას კონკრეტული დროის განმავლობაში. მაგალითად, ის შეიძლება გამოყენებულ იქნას ღამით სახლში მისვლისას, როდესაც ღილაკზე დაჭერილია ღილაკი, ან სხვა შუქები უნდა ჩართოთ სახლის სიგნალიზაციის დროს.

დამხმარე შედეგები: ხელმისაწვდომია ორი დამატებითი გამოსავალი (გარდა 8 გამომავალი არხისა). მათი დაპროგრამება შესაძლებელია გარკვეული გამომავალი არხებით ან ციფრული საშუალებებით ჩართვისთვის. ჩემს ინსტალაციაში, მე მაქვს გამოსავალი 6-8, რომელიც აკონტროლებს ჩემს მორწყვას, რომელიც მუშაობს 24 ვ. მე ვიყენებ 6-8 არხებს ერთ – ერთი დამხმარე გამოსვლის ჩასართავად, სარწყავი სისტემის 24 ვ ელექტროენერგიის წყაროს ჩართვის მიზნით.

ხელით ჩართული: როდესაც მთავარ ეკრანზეა, ღილაკები 1-8 შეიძლება გამოყენებულ იქნას არხების ხელით ჩართვის ან გამორთვისთვის.

ნაბიჯი 3: აპარატურა

ტექნიკა
ტექნიკა

ელექტრომომარაგება: ელექტრომომარაგება შედგება მაკორექტირებელი, შესამცირებელი კონდენსატორისგან და 1 ამპერიანი დაუკრავისგან გადატვირთვისგან დაცვის მიზნით. ეს მიწოდება რეგულირდება 7812 და 7805 მარეგულირებლის მიერ. 12V მიწოდება გამოიყენება გამომავალი რელეების მართვისთვის და ყველა სხვა სქემა იკვებება 5V წყაროდან. 7805 მარეგულირებელი უკავშირდება 7812 რეგულატორის გამოსვლას, მთლიანი დენი უნდა შემოიფარგლოს 1 ამპერით 7812 რეგულატორის საშუალებით. მიზანშეწონილია ამ რეგულატორების დამონტაჟება შესაფერის გათბობაზე.

I²C ავტობუსი: მიუხედავად იმისა, რომ Flowcode იძლევა ტექნიკის I²C კონტროლს, მე გადავწყვიტე გამოვიყენო პროგრამული უზრუნველყოფის I²C კონფიგურაცია. ეს შესაძლებელს ხდის pin ამოცანების უფრო მოქნილობას. მიუხედავად იმისა, რომ უფრო ნელია (50 kHz), ის მაინც მშვენივრად მუშაობს ტექნიკური I²C ავტობუსთან შედარებით. ორივე DS1307 და 24LC256 უკავშირდება ამ I²C ავტობუსს.

რეალური დროის საათი (DS1307): ჩატვირთვისას, RTC რეგისტრი 0 და 7 იკითხება იმის დასადგენად, შეიცავს თუ არა იგი მოქმედ დროს და კონფიგურაციის მონაცემებს. ერთხელ დაყენების სწორია, RTC დრო იკითხება და დრო იტვირთება PIC- ში. ეს არის ერთადერთი დრო, როდესაც დრო იკითხება RTC– დან. გაშვების შემდეგ, 1Hz პულსი იქნება RTC პინ 7 -ზე. ეს 1Hz სიგნალი უკავშირდება RB0/INT0- ს და შეწყვეტის სერვისის რუტინით, PIC- ის დრო განახლდება ყოველ წამს.

გარე EEPROM: პროგრამის ყველა მონაცემი და ვარიანტი ინახება გარე EEPROM– ზე. EEPROM მონაცემები იტვირთება გაშვებისას და მონაცემების ასლი ინახება PIC მეხსიერებაში. EEPROM მონაცემები განახლდება მხოლოდ პროგრამის პარამეტრების შეცვლისას.

დღის/ღამის სენსორი: სტანდარტული შუქზე დამოკიდებული რეზისტორი (LDR) გამოიყენება დღის/ღამის სენსორად. ვინაიდან LDR– ები მოდის მრავალ ფორმასა და სახეობაში, ყველა განსხვავებული გამძლეობის ღირებულებით ერთი და იმავე სინათლის პირობებში, მე გამოვიყენე ანალოგური შეყვანის არხი სინათლის დონის წასაკითხად. დღის და ღამის დონე რეგულირდება და იძლევა სხვადასხვა სენსორების მოქნილობას. გარკვეული ჰისტერეზის შესაქმნელად, დღისა და ღამის ინდივიდუალური ღირებულებების დადგენა შესაძლებელია. მდგომარეობა შეიცვლება მხოლოდ იმ შემთხვევაში, თუ სინათლის დონე დღის ქვემოთ არის, ან ღამის მითითებული წერტილების ზემოთ, 60 წამზე მეტხანს.

LCD დისპლეი: გამოიყენება 4 სტრიქონი, 16 სიმბოლოს ჩვენება, რადგან ყველა მონაცემი ვერ გამოჩნდება 2 ხაზის ეკრანზე. პროექტი მოიცავს რამდენიმე პერსონალურ სიმბოლოს, რომელიც განსაზღვრულია LCD_Custom_Char მაკროში.

დამხმარე საშუალებები: ორივე შესასვლელი ბუფერულია NPN ტრანზისტორით. +12v და 0V ასევე ხელმისაწვდომია კონექტორზე, რაც იძლევა უფრო მოქნილ კავშირებს გარე კავშირებთან. მაგალითად, დისტანციური მართვის მიმღები შეიძლება იყოს მიერთებული.

შედეგები: ყველა გამოსავალი ელექტრულად იზოლირებულია წრიდან 12 ვ რელეს საშუალებით. გამოყენებული რელეები, შეფასებულია 250V AC– ზე, 10 ამპერი. ჩვეულებრივ ღია და ნორმალურად დახურული კონტაქტები გამოიტანება ტერმინალებში.

კლავიატურა: კლავიატურა არის 3 x 4 მატრიცის კლავიატურა და დაკავშირებულია PORTB: 2..7.

ნაბიჯი 4: კლავიატურის შეწყვეტა

კლავიატურა წყვეტს
კლავიატურა წყვეტს
კლავიატურა წყვეტს
კლავიატურა წყვეტს
კლავიატურა წყვეტს
კლავიატურა წყვეტს

მინდოდა გამომეყენებინა PORTB Interrupt on Change interrupt ნებისმიერი გასაღების პრესაზე. ამისათვის, Flowcode– ში უნდა შეიქმნას პერსონალური შეფერხება, რათა უზრუნველყოს, რომ PORTB მიმართულება და მონაცემები სწორად იყოს დაყენებული თითოეული კლავიატურის შეფერხებამდე და მის შემდეგ. შეფერხება წარმოიქმნება ყოველ ჯერზე, როდესაც დააჭირეთ ღილაკს, ან იხსნება. შეწყვეტის რუტინა რეაგირებს მხოლოდ გასაღების დაჭერისას.

საბაჟო ჩარევა

კოდის ჩართვა

portb = 0b00001110; trisb = 0b11110001;

intcon. RBIE = 1;

intcon2. RBIP = 1;

intcon2. RBPU = 1;

rcon. IPEN = 0;

დამმუშავებლის კოდი

if (intcon & (1 << RBIF))

{FCM_%n ();

portb = 0b00001110;

trisb = 0b11110001;

wreg = portb;

clear_bit (intcon, RBIF);

}

აღმოჩენილი პრობლემები

შეფერხების დროს, შეფერხების სერვისმა არავითარ შემთხვევაში არ უნდა დარეკოს ნებისმიერი სხვა მაკრო, რომელიც შეიძლება გამოყენებულ იქნას სადღაც პროგრამის დანარჩენ ნაწილში. ეს საბოლოოდ გამოიწვევს დასტის გადავსების პრობლემებს, რადგან შეფერხება შეიძლება მოხდეს იმავდროულად, როდესაც მთავარი პროგრამა ასევე არის იმავე ქვეპროგრამაში. ეს ასევე განსაზღვრულია, როგორც სერიოზული შეცდომა Flowcode– ით, როდესაც კოდი შედგენილია.

GetKeyPadNumber- ის ქვეშ კლავიატურის საბაჟო კოდში არის ასეთი ზარი Delay_us მაკროზე, რაც გამოიწვევს დასტის გადავსებას. ამის დასაძლევად მე ამოვიღე Delay_us (10) ბრძანება და შევცვალე 25 სტრიქონით "wreg = porta;" ბრძანებები. ეს ბრძანება კითხულობს PORTA- ს და ათავსებს მის მნიშვნელობას W რეგისტრში, მხოლოდ გარკვეული შეფერხების მისაღებად. ეს ბრძანება იქნება შედგენილი ერთ ინსტრუქციაზე მსგავსი assembler movf porta, 0. პროექტში გამოყენებული 10 MHz საათისათვის თითოეული ინსტრუქცია იქნება 400ns, ხოლო 10us შეფერხების მისაღებად მე მჭირდებოდა ამ ინსტრუქციებიდან 25.

შენიშვნა ფიგურა 3 -ის მეორე სტრიქონზე: GetKeypadNumber Custom Code, რომ ორიგინალური delay_us (10) ბრძანება გამორთულია "//" - ით. ამის ქვემოთ, მე დავამატე ჩემი 25 "wreg = porta;" ბრძანებებს მიიღოს ახალი 10us დაგვიანებით. Keypad_ReadKeypadNumber საბაჟო კოდის შიგნით არცერთ მაკროზე ზარების გარეშე, კლავიატურის მაკრო შეიძლება გამოყენებულ იქნას შეწყვეტის სერვისის რუტინაში.

უნდა აღინიშნოს, რომ Flowcode Keypad და eBlocks კომპონენტები არ იყენებენ სტანდარტულ გამწევ რეზისტორებს შეყვანის ხაზებზე. ამის ნაცვლად, ის იყენებს 100K გამწევ რეზისტორებს. განვითარების პროცესში კლავიატურაზე აღმოჩენილი გარკვეული ჩარევის გამო, 100K რეზისტენტები შეიცვალა 10K, ხოლო ყველა 10K რეზისტორი შეიცვალა 1K5- ით. კლავიატურის ტესტირება მოხდა 200 მმ -იანი გამტარიანობით.

ნაბიჯი 5: ტაიმერის გამოყენება

ტაიმერის გამოყენება
ტაიმერის გამოყენება
ტაიმერის გამოყენება
ტაიმერის გამოყენება
ტაიმერის გამოყენება
ტაიმერის გამოყენება

ყველა ეკრანი დაყენებულია ისე, რომ მიუთითოს მომხმარებლისთვის საჭირო ყველა ინფორმაცია პარამეტრებში სწრაფი ცვლილებების შესატანად. ხაზი 4 გამოიყენება ნავიგაციის დასახმარებლად მენიუებსა და პროგრამის პარამეტრებში. ნორმალური მუშაობის დროს სულ 22 ეკრანია შესაძლებელი.

ხაზი 1: დრო და სტატუსი

აჩვენებს მიმდინარე დღეს და დროს, რასაც მოჰყვება სტატუსის ხატები:

A - მიუთითებს, რომ Aux Input A გამოიწვია და Aux Input A ტაიმერი მუშაობს.

B - მიუთითებს, რომ Aux Input B გამოიწვია და Aux Input B ტაიმერი მუშაობს.

C - მიუთითებს, რომ Aux Output C ჩართულია.

D - მიუთითებს, რომ Aux Output D ჩართულია.

} - დღის/ღამის სენსორის სტატუსი. თუ არსებობს, მიუთითებს რომ ღამეა.

ხაზი 2: პროგრამის შედეგები

აჩვენებს არხებს, რომლებიც ჩართულია სხვადასხვა პროგრამებით. არხები ნაჩვენებია მათ გამომავალ რიცხვებში, ხოლო "-" მიუთითებს იმაზე, რომ კონკრეტული გამომავალი არ არის ჩართული. არხები, რომლებიც გამორთულია "პროგრამის აქტიური შედეგები" აქ მაინც იქნება მითითებული, მაგრამ რეალური შედეგები არ იქნება მითითებული.

ხაზი 3: რეალური შედეგები

აჩვენებს, თუ რომელი არხებია ჩართული სხვადასხვა პროგრამებით, Aux Inputs A & B, ან მომხმარებლის მიერ მითითებული ხელით ამონაწერით. 0 – ზე დაჭერით დააბრუნებს ყველა ხელით გააქტიურებულ გამოსვლას და გადააყენებს Aux Output A & B ქრონომეტრებს.

ხაზი 4: მენიუ და ძირითადი პარამეტრები (ყველა მენიუში)

მიუთითებს "*" და "#" ღილაკების ფუნქციონირებაზე.

ცენტრალური ნაწილი მიუთითებს რომელი რიცხვითი ღილაკები (0-9) აქტიურია არჩეული ეკრანისთვის.

Aux Input A & B შეყვანის სტატუსი ასევე ნაჩვენებია ღია ან დახურული გადამრთველის ხატის საშუალებით.

ამონაწერების ჩართვა/გამორთვა შესაძლებელია კლავიატურაზე შესაბამისი ღილაკის დაჭერით.

მენიუში, Star და Hash კლავიშები გამოიყენება პროგრამის სხვადასხვა ვარიანტში ნავიგაციისთვის. კლავიშები 0-9 გამოიყენება პარამეტრების დასაყენებლად. სადაც მრავალჯერადი ვარიანტია ხელმისაწვდომი ერთ ეკრანზე ან პროგრამირების მენიუში, Hash გასაღები გამოიყენება სხვადასხვა ვარიანტების გადასალახად. მიმდინარე არჩეული ვარიანტი ყოველთვის იქნება მითითებული ">" სიმბოლოთი ეკრანის მარცხენა მხარეს.

0-9 შეიყვანეთ დროის მნიშვნელობები

1-8 არხის არჩევის შეცვლა

14 36 ნაბიჯი პროგრამებით, 1 ნაბიჯი უკან, 4 ნაბიჯი უკან 10 პროგრამა, 3 ნაბიჯი წინ, 6 ნაბიჯი წინ 10

პროგრამები

1-7 დაადგინეთ კვირის დღეები. 1 = კვირა, 2 = ორშაბათი, 3 = სამშაბათი, 4 = ოთხშაბათი, 5 = ხუთშაბათი, 6 = პარასკევი, 7 = შაბათი

0 მთავარ ეკრანზე გაასუფთავეთ ყველა სახელმძღვანელო გადაფარვა და შეყვანის A და Input B ქრონომეტრები. სხვა მენიუებში, ცვლილებები

არჩეული პარამეტრები

# მთავარ ეკრანზე, გამორთულია ყველა ხელით გადახურვა, A & Input B ქრონომეტრები და პროგრამის შედეგები, სანამ

შემდეგი მოვლენა.

* და 1 გადატვირთეთ ტაიმერი

* და 2 გაასუფთავეთ ყველა პროგრამა და ვარიანტი, დააბრუნეთ ნაგულისხმევი პარამეტრები.

* და 3 დააყენეთ ტაიმერი ლოდინის რეჟიმში. ტაიმერის ხელახლა ჩასართავად დააჭირეთ ნებისმიერ ღილაკს.

ნებისმიერი დროის მნიშვნელობის არასწორი ჩანაწერების დროს, LCD შუქნიშანი 5 -ჯერ აანთებს შეცდომას. ამავდროულად, ზარი გაისმის. Exit და Next ბრძანებები იმუშავებს მხოლოდ მაშინ, როდესაც მიმდინარე ჩანაწერი სწორია.

LCD განათება

პირველადი გაშვებისას LCD განათება ჩართული იქნება 3 წუთის განმავლობაში, თუ:

- არის აპარატურის უკმარისობა (EEPROM ან RTC არ არის ნაპოვნი)

- დრო არ არის მითითებული RTC– ში

LCD განათება კვლავ ჩაირთვება 3 წუთის განმავლობაში ნებისმიერი მომხმარებლის შეყვანის კლავიატურაზე. თუ LCD შუქნიშანი გამორთულია, კლავიატურის ნებისმიერი ბრძანება პირველ რიგში ჩართავს LCD განათებას და იგნორირებას უკეთებს დაჭერილ ღილაკს. ეს უზრუნველყოფს, რომ მომხმარებელს შეეძლება LCD ეკრანის წაკითხვა კლავიატურის გამოყენებამდე. LCD განათება ასევე ჩაირთვება 5 წამის განმავლობაში, თუ გააქტიურებულია Aux Input A ან Aux Input B.

ნაბიჯი 6: მენიუს ეკრანის სურათები

მენიუს ეკრანის კადრები
მენიუს ეკრანის კადრები
მენიუს ეკრანის კადრები
მენიუს ეკრანის კადრები
მენიუს ეკრანის კადრები
მენიუს ეკრანის კადრები

კლავიატურის გამოყენებით, თითოეული პარამეტრის მარტივად დაპროგრამება შესაძლებელია. სურათები იძლევა ინფორმაციას იმის შესახებ, თუ რას აკეთებს თითოეული ეკრანი.

ნაბიჯი 7: სისტემის დიზაინი

სისტემის დიზაინი
სისტემის დიზაინი

ყველა განვითარება და ტესტირება ჩატარდა პურის დაფაზე. სისტემის ყველა მონაკვეთის დათვალიერებისას სისტემა დავშალე სამ მოდულში. ეს გადაწყვეტილება ძირითადად გამოწვეული იყო არწივის უფასო ვერსიის PCB ზომის შეზღუდვებით (80 x 100 მმ).

მოდული 1 - კვების ბლოკი

მოდული 2 - პროცესორის დაფა

მოდული 3 - სარელეო დაფა

მე გადავწყვიტე, რომ ყველა კომპონენტი ადვილად მისაღები უნდა იყოს და რომ არ მინდოდა ზედაპირზე დამონტაჟებული კომპონენტების გამოყენება.

მოდით განვიხილოთ თითოეული მათგანი.

ნაბიჯი 8: კვების ბლოკი

Ენერგიის წყარო
Ენერგიის წყარო
Ენერგიის წყარო
Ენერგიის წყარო
Ენერგიის წყარო
Ენერგიის წყარო
Ენერგიის წყარო
Ენერგიის წყარო

ელექტროენერგიის მიწოდება პირდაპირ წინ არის და მიაწოდეთ CPU და სარელეო დაფები 12V და 5V.

მე დავამონტაჟე ძაბვის რეგულატორები ღირსეულ გათბობაზე და ასევე გამოვიყენე გადაჭარბებული კონდენსატორები მიწოდებისთვის.

ნაბიჯი 9: პროცესორის დაფა

პროცესორის დაფა
პროცესორის დაფა
პროცესორის დაფა
პროცესორის დაფა
პროცესორის დაფა
პროცესორის დაფა
პროცესორის დაფა
პროცესორის დაფა

ყველა კომპონენტი, LCD ეკრანის გარდა, კლავიატურა და რელეები დამონტაჟებულია პროცესორის დაფაზე.

ტერმინალის ბლოკები დაემატა მიწოდების, ორი ციფრული შეყვანისა და სინათლის სენსორის კავშირების გასამარტივებლად.

სათაურის ქინძისთავები/სოკეტები უზრუნველყოფენ LCD ეკრანსა და კლავიატურას მარტივ კავშირებს.

რელეებზე გამოსასვლელად გამოვიყენე ULN2803. ის უკვე შეიცავს ყველა საჭირო მამოძრავებელ რეზისტორს და გამობრუნების დიოდს. ამან უზრუნველყო, რომ პროცესორის დაფა მაინც შეიძლება გაკეთდეს Eagle– ის უფასო ვერსიის გამოყენებით. რელეები დაკავშირებულია ორ ULN2803- თან. ქვედა ULN2803 გამოიყენება 8 გამოსასვლელისთვის, ხოლო ზედა ULN2803 ორი დამხმარე გამოსვლისთვის. თითოეულ დამხმარე გამომავალს აქვს ოთხი ტრანზისტორი. რელეებთან კავშირი ასევე ხდება სათაურის ქინძისთავების/სოკეტების საშუალებით.

PIC 18F4520 აღჭურვილი იყო პროგრამირების სოკეტით, რაც საშუალებას აძლევდა მარტივად პროგრამირებას PicKit 3 პროგრამისტის საშუალებით.

ᲨᲔᲜᲘᲨᲕᲜᲐ:

თქვენ შეამჩნევთ, რომ დაფა შეიცავს დამატებით 8 პინის IC- ს. ზედა IC არის PIC 12F675 და დაკავშირებულია ციფრულ შეყვანასთან. ეს დაემატა PCB დიზაინის დროს. ეს აადვილებს ციფრული შეყვანის წინასწარ დამუშავებას. ჩემს აპლიკაციაში ერთ -ერთი ციფრული შეყვანა უკავშირდება ჩემს სიგნალიზაციას. თუ მაღვიძარა გაისმის, ჩემს სახლში გარკვეული შუქები აინთება. ჩემი სიგნალიზაციის შეიარაღება და განიარაღება სირენაზე სხვადასხვა სიგნალს იძლევა. PIC 12F675- ის გამოყენებით, ახლა შემიძლია განვასხვავო მკლავი/განიარაღება და რეალური განგაში. 12F675 ასევე აღჭურვილია პროგრამირების სოკეტით.

მე ასევე გავითვალისწინე I2C პორტი სათაურის pin/სოკეტის საშუალებით. ეს მოგვიანებით გამოდგება სარელეო დაფებით.

დაფა შეიცავს რამოდენიმე მხტუნავს, რომელიც უნდა შეკრული იყოს IC სოკეტების დამონტაჟებამდე.

ნაბიჯი 10: ნაკადის კოდის დასკვნა

ნაკადის კოდის დასკვნა
ნაკადის კოდის დასკვნა
ნაკადის კოდი დასკვნა
ნაკადის კოდი დასკვნა
ნაკადის კოდი დასკვნა
ნაკადის კოდი დასკვნა

რადგან მე შევეჩვიე შეკრებისას რეგისტრაციის დონეზე მუშაობას, ზოგჯერ რთული და იმედგაცრუებული იყო კომპონენტის მაკროების გამოყენება. ეს ძირითადად განპირობებული იყო Flowcode პროგრამირების სტრუქტურის ჩემი ცოდნით. ერთადერთი ადგილები, სადაც მე გამოვიყენე C ან ASM ბლოკები, იყო გამოსვლის ჩართვა შეწყვეტის რუტინის შიგნით და Do_KeyPressed რუტინაში კლავიატურის შეწყვეტის გამორთვა/ჩართვა. PIC ასევე მოთავსებულია SLEEP– ში ASM ბლოკის გამოყენებით, როდესაც EEPROM ან RTC არ არის ნაპოვნი.

დახმარება I²C სხვადასხვა ბრძანებების გამოყენებისას, ყველა მიღებული იყო Flowcode დახმარების ფაილებიდან. აუცილებელია ზუსტად იცოდეთ როგორ მუშაობს სხვადასხვა I²C მოწყობილობა, სანამ ბრძანებები წარმატებით იქნება გამოყენებული. სქემის შემუშავება მოითხოვს დიზაინერს, რომ ჰქონდეს ყველა შესაბამისი მონაცემთა ცხრილი. ეს არ არის Flowcode– ის ნაკლოვანება.

Flowcode ნამდვილად გაუძლო ტესტს და რეკომენდირებულია მათთვის, ვისაც სურს დაიწყოს მიკროჩიპების მიკროპროცესორების დიაპაზონი.

ნაკადის კოდის პროგრამირება და PIC– ის კონფიგურაცია დადგენილია სურათების მიხედვით

ნაბიჯი 11: სურვილისამებრ I2C სარელეო დაფა

სურვილისამებრ I2C სარელეო დაფა
სურვილისამებრ I2C სარელეო დაფა
სურვილისამებრ I2C სარელეო დაფა
სურვილისამებრ I2C სარელეო დაფა
სურვილისამებრ I2C სარელეო დაფა
სურვილისამებრ I2C სარელეო დაფა

პროცესორის დაფას უკვე აქვს სათაურის კავშირები 16 რელეზე. ეს შედეგები არის ღია კოლექტორის ტრანზისტორი ორი ULN2803 ჩიპის საშუალებით. ეს შეიძლება გამოყენებულ იქნას უშუალოდ რელეების გასაძლიერებლად.

სისტემის პირველი ტესტების შემდეგ, მე არ მომეწონა ყველა მავთული პროცესორის დაფასა და რელეებს შორის. პროცესორის დაფაზე I2C პორტი რომ ჩავრთე, გადავწყვიტე შემუშავებულიყო სარელეო დაფა I2C პორტთან დასაკავშირებლად. 16 არხიანი MCP23017 I/O Port Expander ჩიპის და ULN2803 ტრანზისტორი მასივის გამოყენებით, მე შევამცირე კავშირები პროცესორსა და რელეებს შორის 4 მავთულამდე.

იმის გამო, რომ მე ვერ მოვათავსე 16 რელე 80 x 100 მმ PCB– ზე, გადავწყვიტე ორი დაფის გაკეთება. თითოეული MCP23017 იყენებს 16 პორტიდან მხოლოდ 8 -ს. დაფა 1 ამუშავებს 8 გამოსავალს, ხოლო დაფას 2 ორ დამხმარე გამოსავალს. დაფებზე ერთადერთი განსხვავებაა თითოეული დაფის მისამართები. ეს მარტივად არის დაყენებული მინი ჯუმბერით. თითოეულ დაფას აქვს კონექტორები, რომლებიც უზრუნველყოფენ ენერგიას და I2C მონაცემებს მეორე დაფაზე.

ᲨᲔᲜᲘᲨᲕᲜᲐ:

საჭიროების შემთხვევაში, პროგრამული უზრუნველყოფა ითვალისწინებს მხოლოდ ერთ დაფას, რომელსაც შეუძლია გამოიყენოს 16 -ე პორტი. ყველა გამომავალი სარელეო მონაცემები ხელმისაწვდომია პირველ დაფაზე.

რადგან წრე არჩევითია და ძალიან მარტივია, მე არ შევქმენი სქემატური. თუ მოთხოვნა საკმარისია, შემიძლია მოგვიანებით დავამატო.

ნაბიჯი 12: არჩევითი RF ბმული

არჩევითი RF ბმული
არჩევითი RF ბმული
არჩევითი RF ბმული
არჩევითი RF ბმული
არჩევითი RF ბმული
არჩევითი RF ბმული

პროექტის დასრულების შემდეგ, მალევე მივხვდი, რომ ტაიმერზე ბევრი 220V AC კაბელი უნდა გადავიყვანო. მე შევიმუშავე RF ბმული სტანდარტული 315 MHz მოდულების გამოყენებით, რაც საშუალებას აძლევდა ტაიმერს მოთავსებულიყო კარადაში, ხოლო სარელეო დაფები სახურავის შიგნით, ყველა 220 ვ გაყვანილობის მახლობლად.

ბმული იყენებს AtMega328P მუშაობას 16 MHz. პროგრამული უზრუნველყოფა როგორც გადამცემისთვის, ასევე მიმღებისთვის ერთნაირია და რეჟიმს ირჩევს მინი ჯუმპერი.

გადამცემი

გადამცემი უბრალოდ ჩართულია CPU I2C პორტში. დამატებითი კონფიგურაცია არ არის საჭირო, რადგან AtMega328P უსმენს იგივე მონაცემებს, როგორც I2C სარელეო დაფები.

მონაცემები განახლდება წამში ერთხელ I2C პორტზე და გადამცემი აგზავნის ამ ინფორმაციას RF ბმულით. თუ გადამცემი არ მიიღებს I2C მონაცემებს დაახლოებით 30 წამის განმავლობაში, გადამცემი განუწყვეტლივ გადასცემს მონაცემებს, რათა გამორთოს ყველა რელე მიმღების ერთეულზე.

ელექტროგადამცემი მოდულის სიმძლავრე შეიძლება შეირჩეს 12V– დან 5V– მდე, მინი ჯუმბერით კომპიუტერის დაფაზე. მე ვაძლიერებ ჩემს გადამცემს 12 ვ -ის გამოყენებით.

მიმღები

მიმღები უსმენს გადამცემის კოდირებულ მონაცემებს და ათავსებს მონაცემებს I2C პორტზე. სარელეო დაფა უბრალოდ იერთება ამ პორტში და მუშაობს ისევე როგორც პროცესორის დაფაზე იყო ჩართული.

თუ მიმღებმა არ მიიღო მოქმედი მონაცემები 30 წამის განმავლობაში, მიმღები განუწყვეტლივ აგზავნის მონაცემებს I2C პორტზე, რათა გამორთოს ყველა სარელეო სარელეო დაფაზე.

სქემატიკა

ერთ დღესაც, თუკი მასზე მოთხოვნა იქნება. Arduino ესკიზი შეიცავს ყველა საჭირო ინფორმაციას სქემის შესაქმნელად სქემის დიაგრამის გარეშე.

Დიაპაზონი

ჩემს ინსტალაციაში გადამცემი და მიმღები დაშორებულია დაახლოებით 10 მეტრით. ტაიმერი არის კარადაში, ხოლო სარელეო განყოფილება ჭერის თავზე.

ნაბიჯი 13: საბოლოო პროდუქტი

Საბოლოო პროდუქტი
Საბოლოო პროდუქტი
Საბოლოო პროდუქტი
Საბოლოო პროდუქტი
Საბოლოო პროდუქტი
Საბოლოო პროდუქტი

მთავარი განყოფილება დამონტაჟებული იყო ძველი პროექტის ყუთში. იგი შეიცავს შემდეგს:

- 220V/12V ტრანსფორმატორი

- კვების ბლოკი

- პროცესორის დაფა

- LCD ეკრანი

- კლავიატურა

- RF ბმულის გადამცემი

- დამატებითი სახლის დისტანციური მიმღების ერთეული, რომელიც მომცემს შუქის ჩართვის/გამორთვის პულტის საშუალებით

სარელეო ერთეული შედგება შემდეგიდან:

- 220V/12V ტრანსფორმატორი

- კვების ბლოკი

- RF ბმულის მიმღები

- 2 x I2C სარელეო დაფები

ყველა დაფა შექმნილია იმავე განზომილებით, რაც მათ ადვილად ათავსებს ერთმანეთზე 3 მმ მანძილით.

გირჩევთ: