Satura rādītājs:

8 kanālu programmējamais taimeris: 13 soļi
8 kanālu programmējamais taimeris: 13 soļi

Video: 8 kanālu programmējamais taimeris: 13 soļi

Video: 8 kanālu programmējamais taimeris: 13 soļi
Video: С Алиэкспресс! Кофейные весы с таймером. Смеситель для кухни, лейка для душа. Газлифт для мебели. 2024, Jūlijs
Anonim
8 kanālu programmējamais taimeris
8 kanālu programmējamais taimeris
8 kanālu programmējamais taimeris
8 kanālu programmējamais taimeris
8 kanālu programmējamais taimeris
8 kanālu programmējamais taimeris

Ievads

Kopš 1993. gada saviem projektiem izmantoju Microchip PIC mikrokontrolleru klāstu un visu savu programmēšanu veicu montētāja valodā, izmantojot Microchip MPLab IDE. Mani projekti bija dažādi - no vienkāršiem luksoforiem un mirgojošām gaismas diodēm, līdz USB kursorsviras saskarnēm R/C modeļiem un rūpniecībā izmantotajiem komutācijas iekārtu analizatoriem. Izstrāde aizņēma daudzas dienas un dažreiz tūkstošiem montētāja koda rindu.

Pēc Matrix Multimedia Flowcode 4 Professional saņemšanas es biju diezgan skeptisks par programmatūru. Izskatījās pārāk viegli tam noticēt. Es nolēmu to izmēģināt un pārbaudīju visus dažādus komponentu makro, ar lieliem panākumiem. Labākā Flowcode izmantošanas daļa bija tā, ka vienkāršus projektus varēja kodēt vienas nakts laikā. Pēc spēles ar I²C un DS1307 reālā laika pulksteni es nolēmu izveidot 8 kanālu taimeri, izmantojot plūsmas kodu. Tā kā es neesmu mazs un viegls projekts, es uzskatīju, ka tas būtu lielisks projekts, lai iemācītu sev Flowcode.

Mikroprocesora un citu komponentu izvēle

Ņemot vērā nepieciešamo I/O tapu skaitu, bija skaidrs, ka būs nepieciešama 40 kontaktu ierīce. PIC 18F4520 tika izvēlēts galvenokārt 32K programmas atmiņas un 1536 baitu datu atmiņas dēļ. Visas izmantotās sastāvdaļas ir standarta caurumu ierīces, kas nepieciešamības gadījumā ļauj izveidot ķēdi uz Vero plates. Tas arī palīdzēja izstrādāt maizes dēli.

1. solis: projekta mērķi

Projekta mērķi
Projekta mērķi

Mērķi

- Precīza laika uzskaite ar akumulatora rezerves kopiju.

- Visas programmas un dati, kas jāsaglabā pat pēc jaudas zuduma.

- Vienkāršs lietotāja interfeiss.

- elastība programmēšanā.

Laika turēšana

Dzīvojot apgabalā, kas pakļauts strāvas padeves pārtraukumiem, ar standarta 50/60Hz no elektrolīnijām nepietiks precīzai laika uzskaitei. Reālā laika pulkstenis bija būtisks, un pēc vairāku RTC mikroshēmu pārbaudes es izvēlējos DS1307, pateicoties tā vienkāršajam oscilatoram un akumulatora rezerves konfigurācijai. Diezgan precīza laika uzskaite tika iegūta, izmantojot tikai 32,768 kHz kristālu, kas savienots ar DS1307. Precizitāte bija 2 sekunžu laikā 2 mēnešu izmēģinājuma periodā, izmantojot 4 dažādu veidu kristālus.

Datu saglabāšana

Visi taimera programmas dati ir jāsaglabā pat strāvas padeves pārtraukuma laikā. Izmantojot līdz pat 100 dažādām programmām un dažādiem konfigurācijas datiem, kļuva skaidrs, ka 256 baiti iebūvētā PEP EEPROM nebūs pietiekami lieli. 24LC256 I²C EEPROM tiek izmantots, lai saglabātu visu programmēšanas informāciju.

Vienkāršs lietotāja interfeiss

Lietotāja interfeisu veido tikai 2 vienības, 16 x 4 rindu LCD displejs ar LED apgaismojumu un 4 x 3 tastatūra. Visu programmēšanu var veikt, nospiežot tikai dažas pogas. Interfeisa papildinājumi ir dzirdams pjezo skaņas signāls un vizuāli mirgojošs LCD fona apgaismojums.

2. solis: elastības programmēšana

Programmēšanas elastība
Programmēšanas elastība

Lai nodrošinātu pietiekamu programmas elastību, taimerim ir 100 programmas, kuras var iestatīt atsevišķi. Katrai programmai var iestatīt ieslēgšanas laiku, izslēgšanas laiku, izejas kanālus un nedēļas dienu. Katrai programmai ir trīs režīmi:

- Automātiski: ir iestatīts ieslēgšanas laiks, izslēgšanas laiks, izejas kanāls un nedēļas diena.

- Izslēgts: atsevišķu programmu var atspējot, neizdzēšot iestatījumus. Lai vēlreiz iespējotu programmu, vienkārši izvēlieties citu režīmu.

- Diena/nakts: ir iestatīts ieslēgšanas laiks, izslēgšanas laiks, izejas kanāls un nedēļas diena. Darbojas tāpat kā automātiskais režīms, bet būs

ieslēdziet izejas tikai ieslēgšanas un izslēgšanas laikā, kad ir tumšs. Tas arī ļauj pilnībā kontrolēt dienu/nakti

kā papildu elastība, lai ieslēgtu gaismas saulrietā un izslēgtu saullēkta laikā.

1. piemērs: iedegs gaismu pēc pulksten 20:00 un izslēgs gaismu saullēktā:

Ieslēgts: 20:00, Izslēgts: 12:00, 2. piemērs: ieslēgs gaismu saulrietā un izslēgs gaismu pulksten 23:00.

Ieslēgts: 12:00

Izslēgts: 23:00

3. piemērs: ieslēgs gaismu saulrietā un izslēgs saullēkta laikā.

Ieslēgts: 12:01

Izslēgts: 12:00

Ir pieejamas papildu opcijas, kas darbojas neatkarīgi no 100 ieslēgšanas/izslēgšanas programmām.

Programmu kanāli aktīvi: Tā vietā, lai izslēgtu vairākas programmas, atsevišķus izvades kanālus var atspējot bez nepieciešamības mainīt programmas.

Papildu ieejas: ir pieejamas divas digitālās ieejas, lai noteiktu laiku varētu ieslēgt noteiktus izejas kanālus. To var, piemēram, izmantot, lai ieslēgtu noteiktas gaismas, ierodoties mājās vēlu vakarā, nospiežot pogu uz tālvadības pults, vai ieslēgt citu gaismu sēriju, kad tiek iedarbināta mājas signalizācija.

Papildu izejas: ir pieejamas divas papildu izejas (izņemot 8 izejas kanālus). Tos var ieprogrammēt ieslēgšanai ar noteiktiem izejas kanāliem vai ar digitālajām ieejām. Manā instalācijā man ir izejas 6-8, kas kontrolē apūdeņošanu, kas darbojas ar 24 V spriegumu. Es izmantoju kanālus 6-8, lai ieslēgtu vienu no papildu izejām, lai ieslēgtu apūdeņošanas sistēmas 24V barošanas avotu.

Manuāli ieslēgts: atrodoties galvenajā ekrānā, pogas 1-8 var izmantot, lai manuāli ieslēgtu vai izslēgtu kanālus.

3. darbība: aparatūra

Aparatūra
Aparatūra

Barošanas avots: Barošanas avots sastāv no taisngrieža, izlīdzināšanas kondensatora un 1 ampēru drošinātāja aizsardzībai pret pārslodzi. Šo piegādi regulē 7812 un 7805 regulators. 12 V barošana tiek izmantota izejas releju darbināšanai, un visas pārējās ķēdes tiek darbinātas no 5 V barošanas avota. Tā kā regulators 7805 ir pievienots 7812 regulatora izejai, caur 7812 regulatoru kopējā strāva jāierobežo līdz 1 amp. Ieteicams šos regulatorus uzstādīt uz piemērota radiatora.

I²C kopne: lai gan plūsmas kods ļauj kontrolēt aparatūras I²C, es nolēmu izmantot programmatūras I²C konfigurāciju. Tas ļauj elastīgāk piespraust uzdevumus. Lai gan tas ir lēnāks (50 kHz), tas joprojām darbojas lieliski, salīdzinot ar aparatūras I²C kopni. Gan DS1307, gan 24LC256 ir pievienoti šai I²C kopnei.

Reālā laika pulkstenis (DS1307): palaišanas laikā tiek nolasīts RTC reģistrs 0 un 7, lai noteiktu, vai tajā ir derīgi laika un konfigurācijas dati. Kad iestatīšana ir pareiza, tiek nolasīts RTC laiks un laiks, kas ielādēts PIC. Šī ir vienīgā reize, kad laiks tiek nolasīts no RTC. Pēc palaišanas RTC 7. tapā būs 1 Hz impulss. Šis 1 Hz signāls ir savienots ar RB0/INT0, un, izmantojot pārtraukuma pakalpojumu, PIC laiks tiek atjaunināts katru sekundi.

Ārējais EEPROM: visi programmas dati un opcijas tiek saglabāti ārējā EEPROM. EEPROM dati tiek ielādēti palaišanas laikā, un datu kopija tiek saglabāta PIC atmiņā. EEPROM dati tiek atjaunināti tikai tad, kad tiek mainīti programmas iestatījumi.

Dienas/nakts sensors: Standarta no gaismas atkarīgs rezistors (LDR) tiek izmantots kā dienas/nakts sensors. Tā kā LDR ir daudzās formās un dažādās šķirnēs, kurām visām ir atšķirīgas pretestības vērtības vienādos gaismas apstākļos, es izmantoju analogo ievades kanālu, lai nolasītu gaismas līmeni. Dienas un nakts līmeņi ir regulējami, un tie nodrošina zināmu elastību dažādiem sensoriem. Lai iestatītu kādu histerēzi, var iestatīt dienas un nakts individuālās vērtības. Stāvoklis mainīsies tikai tad, ja gaismas līmenis būs zemāks par dienu vai virs nakts iestatītajiem punktiem ilgāk par 60 sekundēm.

LCD displejs: tiek izmantots 4 rindu, 16 rakstzīmju displejs, jo visus datus nevarēja parādīt 2 rindu displejā. Projektā ir iekļautas dažas pielāgotas rakstzīmes, kas ir definētas makro LCD_Custom_Char.

Papildu ieejas: abas ieejas ir buferizētas ar NPN tranzistoru. Savienotājam ir pieejami arī +12V un 0V, kas ļauj elastīgāk pieslēgties ārējiem savienojumiem. Piemēram, barošanas avotam var pievienot tālvadības uztvērēju.

Izejas: visas izejas ir elektriski izolētas no ķēdes, izmantojot 12 V releju. Izmantotie releji ir paredzēti 250 V maiņstrāvai pie 10 ampēriem. Parasti atvērtie un parasti aizvērtie kontakti tiek izvadīti uz spailēm.

Tastatūra: izmantotā tastatūra ir 3 x 4 matricas tastatūra un ir pievienota PORTB: 2..7.

4. darbība. Tastatūras pārtraukumi

Tastatūras pārtraukumi
Tastatūras pārtraukumi
Tastatūras pārtraukumi
Tastatūras pārtraukumi
Tastatūras pārtraukumi
Tastatūras pārtraukumi

Es gribēju izmantot PORTB pārtraukuma maiņas pārtraukumu jebkurā taustiņa nospiešanas reizē. Šim nolūkam plūsmas kodā bija jāizveido pielāgots pārtraukums, lai nodrošinātu, ka PORTB virziens un dati ir pareizi iestatīti pirms un pēc katras tastatūras pārtraukšanas. Katru reizi, nospiežot vai atlaižot pogu, tiek radīts pārtraukums. Pārtraukšanas rutīna reaģē tikai tad, kad tiek nospiests taustiņš.

Pielāgots pārtraukums

Iespējot kodu

portb = 0b00001110; trisb = 0b11110001;

intcon. RBIE = 1;

intcon2. RBIP = 1;

intcon2. RBPU = 1;

rcon. IPEN = 0;

Apstrādātāja kods

ja (intcon & (1 << RBIF))

{FCM_%n ();

portb = 0b00001110;

trisb = 0b11110001;

wreg = portb;

skaidrs_bit (intcon, RBIF);

}

Atrastas problēmas

Pārtraukuma laikā pārtraukuma pakalpojuma rutīnai bez nosacījumiem ir jāizsauc jebkurš cits makro, kas varētu tikt izmantots kaut kur pārējā programmā. Tas galu galā novedīs pie kaudzes pārplūdes problēmām, jo pārtraukums var notikt tajā pašā laikā, kad arī galvenā programma atrodas tajā pašā apakšprogrammā. Flowcode to identificē arī kā NOPIETNU KĻŪDU, kad kods tiek apkopots.

Tastatūras pielāgotajā kodā sadaļā GetKeyPadNumber ir šāds zvans uz makro Delay_us, kas izraisīs kaudzes pārpildi. Lai to novērstu, esmu noņēmis komandu Delay_us (10) un aizstājis to ar 25 rindiņām “wreg = porta;” komandas. Šī komanda nolasa PORTA un ievieto tās vērtību W reģistrā, lai tikai nedaudz aizkavētos. Šī komanda tiks apkopota vienā instrukcijā, kas līdzīga montētājam movf porta, 0. Projektā izmantotajam 10MHz pulkstenim katra instrukcija būs 400ns, un, lai iegūtu 10us aizkavi, man vajadzēja 25 no šīm instrukcijām.

Piezīme 3. attēla otrajā rindā: GetKeypadNumber pielāgotais kods, ka sākotnējā delay_us (10) komanda ir atspējota ar “//”. Zemāk esmu pievienojis savus 25 “wreg = porta;” komandas, lai iegūtu jaunu 10us aizkavi. Neizsaucot nevienu makro tastatūras Keypad_ReadKeypadNumber pielāgotajā kodā, tastatūras makro tagad var izmantot pārtraukuma pakalpojumu rutīnas ietvaros.

Jāatzīmē, ka plūsmas koda tastatūras un eBlocks komponenti neizmanto standarta ievilkšanas rezistorus ievades līnijās. Tā vietā tiek izmantoti 100K nolaižamie rezistori. Sakarā ar dažiem traucējumiem, kas tika atklāti tastatūrā izstrādes laikā, visi 100K rezistori tika aizstāti ar 10K, un visi 10K rezistori tika aizstāti ar 1K5. Tastatūra tika pārbaudīta, lai darbotos pareizi ar vadiem 200 mm.

5. darbība: taimera izmantošana

Taimera izmantošana
Taimera izmantošana
Taimera izmantošana
Taimera izmantošana
Taimera izmantošana
Taimera izmantošana

Visi ekrāni ir iestatīti tā, lai norādītu visu nepieciešamo informāciju, lai lietotājs varētu ātri mainīt iestatījumus. 4. līnija tiek izmantota, lai palīdzētu navigēt izvēlnēs un programmu opcijās. Parastas darbības laikā kopumā ir pieejami 22 ekrāni.

1. LĪNIJA: Laiks un statuss

Parāda pašreizējo dienu un laiku, kam seko statusa ikonas:

A - norāda, ka tika iedarbināta Aux ieeja A un darbojas Aux A ievades taimeris.

B - norāda, ka tika iedarbināta Aux ieeja B un darbojas Aux B ievades taimeris.

C - norāda, ka ir ieslēgta papildu izeja C.

D - norāda, ka ir ieslēgta papildu izeja D.

} - dienas/nakts sensora statuss. Ja ir, norāda, ka ir nakts.

2. LĪNIJA: Programmas izvadi

Parāda kanālus, kurus ir ieslēgušas dažādas programmas. Kanāli tiek parādīti to izvades numuros, un “-” norāda, ka konkrētā izeja nav ieslēgta. Šeit joprojām tiks rādīti kanāli, kas ir atspējoti sadaļā “Programmu izvadi aktīvi”, bet reālie izvadi netiks iestatīti.

3. LĪNIJA: reālie izvadi

Parāda, kurus kanālus ieslēdz dažādas programmas, A un B papildu ieejas vai lietotāja iestatītās manuālās izejas. Nospiežot 0, visas manuāli aktivizētās izejas tiks izslēgtas un tiks atiestatīti papildu izejas A & B taimeri.

4. LĪNIJA: Izvēlne un taustiņu opcijas (visās izvēlnēs)

Norāda taustiņu “*” un “#” funkciju.

Centrālā daļa norāda, kuri ciparu taustiņi (0-9) ir aktīvi izvēlētajā ekrānā.

Aux ieejas A & B ievades statuss tiek parādīts arī ar slēdža ikonu Atvērts vai Aizvērts.

Izejas var manuāli ieslēgt/izslēgt, nospiežot atbilstošo tastatūras taustiņu.

Visās izvēlnēs tiek izmantoti taustiņi Star un Hash, lai pārvietotos pa dažādām programmu opcijām. Taustiņi 0-9 tiek izmantoti, lai iestatītu opcijas. Ja vienā ekrānā vai programmēšanas izvēlnē ir pieejamas vairākas iespējas, taustiņš Hash tiek izmantots, lai izietu cauri dažādām iespējām. Pašreizējo izvēlēto opciju vienmēr norāda simbols “>” ekrāna kreisajā pusē.

0-9 Ievadiet laika vērtības

1-8 Mainīt kanāla izvēli

14 36 Soli pa programmām, 1 solis atpakaļ, 4 soļi atpakaļ 10 programmas, 3 soļi uz priekšu, 6 soļi uz priekšu 10

programmas

1-7 Iestatiet nedēļas dienas. 1 = svētdiena, 2 = pirmdiena, 3 = otrdiena, 4 = trešdiena, 5 = ceturtdiena, 6 = piektdiena, 7 = sestdiena

0 Galvenajā ekrānā notīriet visus manuālos ignorējumus un A un B ievades taimeri. Citās izvēlnēs izmaiņas

izvēlētās iespējas

# Galvenajā ekrānā tiks atspējotas visas manuālās ignorēšanas, A un B ievades taimeri un programmas izvadi, līdz

nākamais pasākums.

* un 1 Atsāknējiet taimeri

* un 2 Notīriet visas programmas un opcijas, atjaunojiet noklusējuma iestatījumus.

* un 3 Ieslēdziet taimeri gaidīšanas režīmā. Lai atkal ieslēgtu taimeri, nospiediet jebkuru taustiņu.

Nepareizas jebkuras laika vērtības ievadīšanas laikā LCD fona apgaismojums mirgos 5 reizes, norādot uz kļūdu. Tajā pašā laikā atskanēs skaņas signāls. Komandas Iziet un Tālāk darbosies tikai tad, ja pašreizējais ieraksts ir pareizs.

LCD fona apgaismojums

Sākotnējo palaišanu LCD fona apgaismojums tiks ieslēgts uz 3 minūtēm, ja vien:

- Ir aparatūras kļūme (EEPROM vai RTC nav atrasts)

- Laiks nav noteikts RTC

LCD fona apgaismojums atkal ieslēgsies uz 3 minūtēm jebkurā lietotāja ievadītajā tastatūrā. Ja LCD fona apgaismojums ir izslēgts, jebkura tastatūras komanda vispirms ieslēgs LCD apgaismojumu un ignorēs nospiesto taustiņu. Tas nodrošina, ka lietotājs pirms tastatūras lietošanas varēs lasīt LCD displeju. LCD fona apgaismojums tiks ieslēgts arī uz 5 sekundēm, ja ir aktivizēta Aux ieeja A vai Aux B ievade.

6. darbība: izvēlnes ekrānuzņēmumi

Izvēlnes ekrānuzņēmumi
Izvēlnes ekrānuzņēmumi
Izvēlnes ekrānuzņēmumi
Izvēlnes ekrānuzņēmumi
Izvēlnes ekrānuzņēmumi
Izvēlnes ekrānuzņēmumi

Izmantojot tastatūru, katru no iespējām var viegli ieprogrammēt. Attēli sniedz informāciju par katra ekrāna darbību.

7. solis: sistēmas projektēšana

Sistēmas dizains
Sistēmas dizains

Visa izstrāde un testēšana tika veikta uz maizes dēļa. Aplūkojot visas sistēmas sadaļas, es sadalīju sistēmu trīs moduļos. Šis lēmums galvenokārt bija saistīts ar Eagle bezmaksas versijas PCB izmēru ierobežojumiem (80 x 100 mm).

1. modulis - barošanas avots

2. modulis - CPU plate

3. modulis - releja dēlis

Es nolēmu, ka visām sastāvdaļām jābūt viegli pieejamām un ka es nevēlos izmantot virsmas montāžas komponentus.

Apskatīsim katru no tiem.

8. solis: barošanas avots

Enerģijas padeve
Enerģijas padeve
Enerģijas padeve
Enerģijas padeve
Enerģijas padeve
Enerģijas padeve
Enerģijas padeve
Enerģijas padeve

Barošanas avots ir taisni uz priekšu, un barojiet CPU un releju plates ar 12V un 5V.

Es uzstādīju sprieguma regulatorus uz pienācīgām siltuma izlietnēm, kā arī barošanai izmantoju pārvērtētus kondensatorus.

9. solis: CPU plate

CPU dēlis
CPU dēlis
CPU dēlis
CPU dēlis
CPU plate
CPU plate
CPU dēlis
CPU dēlis

Visas sastāvdaļas, izņemot LCD ekrānu, tastatūru un relejus, ir uzstādītas uz CPU plates.

Tika pievienoti spaiļu bloki, lai vienkāršotu savienojumus starp barošanu, divām digitālajām ieejām un gaismas sensoru.

Galvenes tapas/kontaktligzdas nodrošina ērtu savienojumu ar LCD ekrānu un tastatūru.

Releju izejām es izmantoju ULN2803. Tajā jau ir visi nepieciešamie braukšanas rezistori un atpakaļgaitas diodes. Tas nodrošināja, ka CPU plati joprojām var izgatavot, izmantojot Eagle bezmaksas versiju. Releji ir savienoti ar diviem ULN2803. Apakšējā ULN2803 tiek izmantota 8 izejām, bet augšējā - ULN2803 divām papildu izejām. Katrai papildu izejai ir četri tranzistori. Savienojumi ar relejiem tiek veikti arī caur galvenes tapām/kontaktligzdām.

PIC 18F4520 bija aprīkots ar programmēšanas ligzdu, lai varētu viegli programmēt, izmantojot PicKit 3 programmētāju.

PIEZĪME:

Jūs pamanīsit, ka tāfele satur papildu 8 kontaktu IC. Augšējais IC ir PIC 12F675 un savienots ar digitālo ieeju. Tas tika pievienots PCB projektēšanas laikā. Tas atvieglo digitālās ievades iepriekšēju apstrādi. Manā lietojumprogrammā viena no digitālajām ieejām ir pievienota manai signalizācijas sistēmai. Ja atskan modinātājs, manā mājā tiek ieslēgtas noteiktas gaismas. Signalizācijas sistēmas ieslēgšana un atbruņošana dod dažādus signālus sirēnai. Izmantojot PIC 12F675, tagad varu atšķirt ieslēgšanu/atbruņošanu un reālu trauksmi. 12F675 ir aprīkots arī ar programmēšanas ligzdu.

Es arī nodrošināju I2C portu, izmantojot galvenes tapu/ligzdu. Tas vēlāk noderēs ar releju dēļiem.

Plātnē ir daži džemperi, kurus vajadzētu pielodēt pirms IC ligzdu uzstādīšanas.

10. solis: plūsmas koda secinājums

Plūsmas koda secinājums
Plūsmas koda secinājums
Plūsmas koda secinājums
Plūsmas koda secinājums
Plūsmas koda secinājums
Plūsmas koda secinājums

Tā kā esmu pieradis montāžā strādāt reģistra līmenī, dažkārt bija grūti un nomākti izmantot komponentu makro. Tas galvenokārt bija saistīts ar manu zināšanu trūkumu par Flowcode programmēšanas struktūru. Vienīgās vietas, kurās esmu izmantojis C vai ASM blokus, bija izeju ieslēgšana pārtraukšanas rutīnas ietvaros un Do_KeyPressed rutīnā, lai atspējotu/iespējotu tastatūras pārtraukšanu. PIC tiek ievietots arī SLEEP, izmantojot ASM bloku, ja EEPROM vai RTC nav atrasts.

Palīdzība dažādu I²C komandu izmantošanā tika iegūta no plūsmas koda palīdzības failiem. Lai komandas varētu veiksmīgi izmantot, ir precīzi jāzina, kā darbojas dažādas I²C ierīces. Lai izveidotu ķēdi, dizainerim ir jābūt pieejamām visām attiecīgajām datu lapām. Tas nav Flowcode trūkums.

Flowcode patiešām izturēja pārbaudi, un tas ir ļoti ieteicams personām, kuras vēlas sākt strādāt ar Microchip mikroprocesoru klāstu.

Plūsmas koda programmēšana un PIC konfigurācija tika iestatīta atbilstoši attēliem

11. darbība. Papildu I2C releja dēlis

Pēc izvēles I2C releja dēlis
Pēc izvēles I2C releja dēlis
Pēc izvēles I2C releja dēlis
Pēc izvēles I2C releja dēlis
Pēc izvēles I2C releja dēlis
Pēc izvēles I2C releja dēlis

CPU panelī jau ir galvenes savienojumi 16 relejiem. Šīs izejas ir atvērtā kolektora tranzistori, izmantojot divas ULN2803 mikroshēmas. To var izmantot, lai tieši barotu relejus.

Pēc pirmajiem sistēmas testiem man nepatika visi vadi starp CPU plati un relejiem. Iekļaujot CPU panelī I2C portu, es nolēmu izveidot releja paneli, lai izveidotu savienojumu ar I2C portu. Izmantojot 16 kanālu MCP23017 I/O portu paplašinātāja mikroshēmu un ULN2803 tranzistoru bloku, es samazināju savienojumus starp CPU un relejiem līdz 4 vadiem.

Tā kā es nevarēju ievietot 16 relejus uz 80 x 100 mm PCB, es nolēmu izgatavot divus dēļus. Katrs MCP23017 izmanto tikai 8 no 16 portiem. Plāksne 1 apstrādā 8 izejas, bet otrā - abas papildu izejas. Vienīgā atšķirība uz dēļiem ir katras tāfeles adreses. To var viegli iestatīt ar mini džemperi. Katrai plāksnei ir savienotāji, lai piegādātu strāvas un I2C datus otrai plāksnei.

PIEZĪME:

Ja nepieciešams, programmatūra paredz tikai vienu plati, kas var izmantot visus 16 portus. Visi izejas releja dati ir pieejami pirmajā panelī.

Tā kā ķēde nav obligāta un ļoti vienkārša, es neizveidoju shematisku shēmu. Ja ir pietiekams pieprasījums, varu to pievienot vēlāk.

12. darbība: izvēles RF saite

Papildu RF saite
Papildu RF saite
Papildu RF saite
Papildu RF saite
Papildu RF saite
Papildu RF saite

Pēc projekta pabeigšanas es drīz sapratu, ka pie taimera man ir jāvelk daudz 220 V maiņstrāvas vadu. Es izstrādāju RF saiti, izmantojot standarta 315MHz moduļus, kas ļāva taimeri ievietot skapī un releja dēļus jumta iekšpusē, tuvu visiem 220 V vadiem.

Saite izmanto AtMega328P, kas darbojas 16 MHz. Raidītāja un uztvērēja programmatūra ir vienāda, un režīmu izvēlas mini džemperis.

Raidītājs

Raidītājs ir vienkārši pievienots CPU I2C portam. Papildu iestatīšana nav nepieciešama, jo AtMega328P klausās tādus pašus datus kā I2C releju dēļi.

Dati tiek atjaunināti reizi sekundē I2C portā, un raidītājs nosūta šo informāciju, izmantojot RF saiti. Ja raidītājs nesaņem I2C datus apmēram 30 sekundes, raidītājs nepārtraukti pārsūta datus, lai izslēgtu visus relejus uz uztvērēja bloku.

Raidītāja moduļa jaudu var izvēlēties starp 12V un 5V, izmantojot mini džemperi uz datora plates. Es baroju savu raidītāju, izmantojot 12V.

Uztvērējs

Uztvērējs klausās raidītāja kodētos datus un ievieto datus I2C portā. Releju dēlis vienkārši tiek pievienots šim portam un darbojas tāpat kā tas bija pievienots CPU platei.

Ja uztvērējs 30 sekundes nesaņem derīgus datus, uztvērējs nepārtraukti sūtīs datus uz I2C portu, lai izslēgtu visus relejus paneļos.

Shēmas

Kādu dienu, ja pēc tā būs pieprasījums. Arduino skice satur visu nepieciešamo informāciju, lai izveidotu ķēdi bez shēmas.

Diapazons

Manā instalācijā raidītājs un uztvērējs atrodas apmēram 10 metru attālumā viens no otra. Taimeris atrodas skapī, bet relejs - griestu augšpusē.

13. solis: galaprodukts

Galaprodukts
Galaprodukts
Galaprodukts
Galaprodukts
Galaprodukts
Galaprodukts

Galvenā iekārta tika ievietota vecā projekta kastē. Tas satur sekojošo:

- 220V/12V transformators

- Barošanas bloks

- CPU plate

- LCD displejs

- Tastatūra

- RF saites raidītājs

- Papildu mājas tālvadības uztvērēja bloks, lai es varētu ieslēgt/izslēgt apgaismojumu, izmantojot tālvadības pulti

Releju bloks sastāv no šādiem elementiem:

- 220V/12V transformators

- Barošanas bloks

- RF saites uztvērējs

- 2 x I2C releju dēļi

Visi dēļi tika veidoti ar vienādu izmēru, padarot tos viegli saliekamus vienu virs otra ar 3 mm starplikām.

Ieteicams: