Turinys:

8 kanalų programuojamas laikmatis: 13 žingsnių
8 kanalų programuojamas laikmatis: 13 žingsnių

Video: 8 kanalų programuojamas laikmatis: 13 žingsnių

Video: 8 kanalų programuojamas laikmatis: 13 žingsnių
Video: Make $7,500 Per Month with this ONE Website! In ANY Country! (Make Money Online) 2024, Lapkritis
Anonim
8 kanalų programuojamas laikmatis
8 kanalų programuojamas laikmatis
8 kanalų programuojamas laikmatis
8 kanalų programuojamas laikmatis
8 kanalų programuojamas laikmatis
8 kanalų programuojamas laikmatis

Įvadas

Aš naudoju „Microchip“PIC mikrovaldiklių asortimentą savo projektams nuo 1993 m. Ir visą savo programavimą atlikau surinkėjo kalba, naudodamas „Microchip MPLab IDE“. Mano projektai svyravo nuo paprastų šviesoforų ir mirksinčių šviesos diodų iki USB vairasvirtės sąsajų R/C modeliams ir pramonėje naudojamų skirstomųjų įrenginių analizatorių. Sukūrimas truko daug dienų, o kartais ir tūkstančius eilučių surinkėjo kodo.

Gavęs „Matrix Multimedia Flowcode 4 Professional“, buvau gana skeptiškas dėl programinės įrangos. Atrodė per lengva patikėti. Nusprendžiau pabandyti ir išbandžiau visas skirtingas komponentų makrokomandas, ir tai labai sėkmingai. Geriausia „Flowcode“naudojimo dalis buvo ta, kad paprastus projektus galima užkoduoti per vieną naktį. Žaidęs su I²C ir DS1307 realaus laiko laikrodžiu, nusprendžiau sukurti 8 kanalų laikmatį, naudodamas „Flowcode“. Kadangi nebuvau mažas ir lengvas projektas, tikėjau, kad tai bus puikus projektas išmokti Flowcode.

Mikroprocesoriaus ir kitų komponentų pasirinkimas

Dėl reikalingo įvesties/išvesties kaiščių skaičiaus buvo aišku, kad reikės 40 kontaktų įrenginio. PIC 18F4520 buvo pasirinktas daugiausia dėl 32K programos atminties ir 1536 baitų duomenų atminties. Visi naudojami komponentai yra standartiniai skylių įtaisai, todėl prireikus galima sukurti grandinę „Vero“plokštėje. Tai taip pat padėjo kurti duonos lentą.

1 žingsnis: projekto tikslai

Projekto tikslai
Projekto tikslai

Tikslai

- Tikslus laiko laikymas su atsargine baterija.

- Visos programos ir duomenys turi būti išsaugoti net ir praradus maitinimą.

- Paprasta vartotojo sąsaja.

- Programavimo lankstumas.

Laiko laikymas

Gyvenant vietovėje, kuriai būdingas elektros energijos tiekimo sutrikimas, tikslaus laiko laikymui nepakanka standartinių 50/60Hz elektros linijų. Realaus laiko laikrodis buvo būtinas, ir išbandęs keletą RTC mikroschemų nusprendžiau pasirinkti DS1307 dėl paprasto osciliatoriaus ir atsarginės baterijos konfigūracijos. Gana tikslus laiko išlaikymas buvo gautas naudojant tik 32,768 kHz kristalą, prijungtą prie DS1307. Tikslumas buvo per 2 sekundes per 2 mėnesių bandomąjį laikotarpį, naudojant 4 skirtingų markių kristalus.

Duomenų saugojimas

Visi laikmačio programos duomenys turi būti išsaugoti net ir nutrūkus elektros tiekimui. Turint iki 100 skirtingų programų ir įvairių konfigūracijos duomenų, paaiškėjo, kad 256 baitai integruoto PIC EEPROM nebus pakankamai dideli. 24LC256 I²C EEPROM naudojamas visai programavimo informacijai saugoti.

Paprasta vartotojo sąsaja

Vartotojo sąsają sudaro tik 2 elementai, 16 x 4 eilučių LCD ekranas su LED apšvietimu ir 4 x 3 klaviatūra. Visą programavimą galima atlikti paspaudus tik kelis mygtukus. Sąsajos priedai yra garsinis pjezo garsinis signalas ir vizualiai mirksi LCD apšvietimas.

2 žingsnis: lankstumo programavimas

Lankstumas programuojant
Lankstumas programuojant

Siekiant užtikrinti pakankamą programos lankstumą, laikmatyje yra 100 programų, kurias galima nustatyti atskirai. Kiekvienai programai galima nustatyti įjungimo laiką, išjungimo laiką, išvesties kanalus ir savaitės dieną. Kiekviena programa turi tris režimus:

- Automatinis: nustatytas įjungimo laikas, išjungimo laikas, išvesties kanalas ir savaitės diena.

- Išjungta: atskirą programą galima išjungti neištrinus nustatymų. Norėdami vėl įjungti programą, tiesiog pasirinkite kitą režimą.

- Diena/naktis: nustatytas laikas, išjungimo laikas, išvesties kanalas ir savaitės diena. Veikia taip pat kaip automatinis režimas, bet veiks

išvestis įjunkite tik tarp įjungimo ir išjungimo laikų, kai tamsu. Tai taip pat įgalina visą dienos/nakties valdymą

kaip papildomas lankstumas įjungti šviesas saulėlydžio metu ir išjungti saulėtekio metu.

1 pavyzdys: įjungs šviesą po 20:00 ir išjungs saulėtekio metu:

Įjungta: 20:00 val.

Išjungta: 12: 00, 2 pavyzdys: įjungs šviesą saulėlydžio metu ir išjungs šviesą 23:00 val.

Įjungta: 12:00

Išjungta: 23:00

3 pavyzdys: įjungs šviesą saulėlydžio metu ir išjungs saulėtekio metu.

Įjungta: 12:01

Išjungta: 12:00

Galimos papildomos parinktys, visos veikia nepriklausomai nuo 100 įjungimo/išjungimo programų.

Aktyvūs programų kanalai: užuot išjungę kelias programas, atskirus išvesties kanalus galima išjungti, nereikia keisti programų.

Pagalbiniai įėjimai: Galimi du skaitmeniniai įėjimai, leidžiantys įjungti tam tikrus išvesties kanalus tam tikrą laiką. Jis gali būti naudojamas, pavyzdžiui, įjungti tam tikrus žibintus, kai grįžtate namo vėlai vakare, kai paspaudžiamas nuotolinio valdymo pulto mygtukas, arba įjungti kitą žibintų seriją, kai suveikia namo signalizacija.

Pagalbiniai išėjimai: Galimi du papildomi išėjimai (išskyrus 8 išvesties kanalus). Jie gali būti užprogramuoti įjungti tam tikrais išvesties kanalais arba naudojant skaitmeninius įėjimus. Mano diegimo metu turiu išėjimus 6-8, kurie valdo drėkinimą, kuris veikia 24V. Aš naudoju kanalus 6-8, norėdamas įjungti vieną iš pagalbinių išėjimų, įjungti 24V drėkinimo sistemos maitinimą.

Rankinis įjungimas: pagrindiniame ekrane mygtukais 1-8 galima rankiniu būdu įjungti arba išjungti kanalus.

3 žingsnis: Aparatūra

Techninė įranga
Techninė įranga

Maitinimo šaltinis: Maitinimo šaltinį sudaro lygintuvas, išlyginamasis kondensatorius ir 1 amperų saugiklis apsaugai nuo perkrovos. Tada šį tiekimą reguliuoja 7812 ir 7805 reguliatorius. 12 V maitinimas naudojamas išėjimo relėms valdyti, o visos kitos grandinės maitinamos iš 5 V maitinimo šaltinio. Kadangi 7805 reguliatorius yra prijungtas prie 7812 reguliatoriaus išėjimo, visa srovė turi būti apribota iki 1 amp per 7812 reguliatorių. Patartina šiuos reguliatorius montuoti ant tinkamo radiatoriaus.

I²C magistralė: Nors „Flowcode“leidžia valdyti aparatinę I²C, nusprendžiau pasinaudoti programine įranga „I²C“. Tai leidžia lanksčiau kaiščius priskirti. Nors ir lėtesnis (50 kHz), jis vis tiek veikia puikiai, palyginti su aparatine I²C magistralė. DS1307 ir 24LC256 yra prijungti prie šios I²C magistralės.

Realaus laiko laikrodis (DS1307): paleidimo metu skaitomas RTC registras 0 ir 7, siekiant nustatyti, ar jame yra galiojančių laiko ir konfigūracijos duomenų. Kai sąranka atlikta teisingai, nuskaitomas RTC laikas ir laikas, įkeliamas į PIC. Tai vienintelis laikas, kai laikas skaitomas iš RTC. Po paleidimo RTC 7 kaištyje bus 1 Hz impulsas. Šis 1 Hz signalas yra prijungtas prie RB0/INT0 ir per pertraukos aptarnavimo procedūrą PIC laikas atnaujinamas kas sekundę.

Išorinis EEPROM: visi programos duomenys ir parinktys saugomi išoriniame EEPROM. EEPROM duomenys įkeliami paleidžiant, o duomenų kopija saugoma PIC atmintyje. EEPROM duomenys atnaujinami tik pakeitus programos nustatymus.

Dienos/nakties jutiklis: kaip dienos/nakties jutiklis naudojamas standartinis nuo šviesos priklausantis rezistorius (LDR). Kadangi LDR yra įvairių formų ir rūšių, kurių visų atsparumo reikšmės tomis pačiomis apšvietimo sąlygomis yra skirtingos, šviesos lygiui nuskaityti naudojau analoginį įvesties kanalą. Dienos ir nakties lygiai yra reguliuojami ir suteikia tam tikrą lankstumą įvairiems jutikliams. Norint nustatyti tam tikrą histerezę, galima nustatyti individualias dienos ir nakties reikšmes. Būklė pasikeis tik tuo atveju, jei apšvietimo lygis bus žemiau dienos arba virš nakties nustatytų taškų ilgiau nei 60 sekundžių.

LCD ekranas: naudojamas 4 eilučių, 16 simbolių ekranas, nes visų duomenų nepavyko parodyti 2 eilučių ekrane. Projektas apima kai kuriuos pasirinktinius simbolius, kurie yra apibrėžti LCD_Custom_Char makrokomandoje.

Pagalbiniai įėjimai: abu įėjimai yra buferiniai su NPN tranzistoriumi. Ant jungties taip pat yra +12v ir 0V, todėl galima lanksčiau prijungti prie išorinių jungčių. Pavyzdžiui, prie maitinimo šaltinio galima prijungti nuotolinio valdymo imtuvą.

Išėjimai: visi išėjimai yra elektra izoliuoti nuo grandinės naudojant 12 V relę. Naudojamos relės yra skirtos 250 V kintamajai srovei, esant 10 amperų. Paprastai atidaromi ir paprastai uždaryti kontaktai išvedami į gnybtus.

Klaviatūra: naudojama klaviatūra yra 3 x 4 matricos klaviatūra ir prijungta prie PORTB: 2..7.

4 žingsnis: klaviatūros pertraukimai

Klaviatūros pertraukimai
Klaviatūros pertraukimai
Klaviatūros pertraukimai
Klaviatūros pertraukimai
Klaviatūros pertraukimai
Klaviatūros pertraukimai

Norėjau pasinaudoti PORTB pertraukos keitimo pertrauka bet kuriuo klavišo paspaudimu. Norėdami tai padaryti, „Flowcode“reikėjo sukurti pasirinktinį pertraukimą, kad būtų užtikrinta, jog PORTB kryptis ir duomenys yra teisingi prieš kiekvieną klaviatūros pertraukimą ir po jo. Nutraukimas sukuriamas kiekvieną kartą paspaudus arba atleidžiant mygtuką. Nutraukimo rutina reaguoja tik paspaudus klavišą.

PASIRENGTAS PERTRAUKIMAS

Įgalinti kodą

portb = 0b00001110; trisb = 0b11110001;

intcon. RBIE = 1;

intcon2. RBIP = 1;

intcon2. RBPU = 1;

rcon. IPEN = 0;

Tvarkytojo kodas

if (intcon & (1 << RBIF))

{FCM_%n ();

portb = 0b00001110;

trisb = 0b11110001;

wreg = portb;

clear_bit (intcon, RBIF);

}

Rastos problemos

Pertraukos metu pertraukimo paslaugų teikimo tvarka turi NE skambinti jokiomis kitomis makrokomandomis, kurios gali būti naudojamos kažkur kitoje programos dalyje. Galų gale tai sukels kamino perpildymo problemas, nes pertrauka gali įvykti tuo pačiu metu, kai pagrindinė programa taip pat yra toje pačioje paprogramėje. Tai taip pat įvardijama kaip RIMTA KLAIDA pagal „Flowcode“, kai sudaromas kodas.

„GetKeyPadNumber“klaviatūros pasirinktiniame kode yra toks iškvietimas į „Delay_us“makrokomandą, dėl kurios kamino perpildymas. Norėdami tai išspręsti, pašalinau komandą „Delay_us“(10) ir pakeičiau ją 25 eilutėmis „wreg = porta;“komandas. Ši komanda nuskaito PORTA ir įtraukia jos vertę į W registrą, kad tik šiek tiek vėluotų. Ši komanda bus sudaryta į vieną instrukciją, panašią į surinkėją movf porta, 0. 10MHz laikrodžiui, naudojamam projekte, kiekviena instrukcija bus 400ns, o norint gauti 10us vėlavimą, man reikėjo 25 šių instrukcijų.

Pastaba antroje 3 paveikslo eilutėje: GetKeypadNumber pasirinktinis kodas, kad pradinė delay_us (10) komanda buvo išjungta naudojant „//“. Žemiau aš pridėjau savo 25 „wreg = porta“; komandų gauti naują 10us delsą. Nepaskambinus jokioms makrokomandoms „Keypad_ReadKeypadNumber“tinkintame kode, klaviatūros makrokomandą dabar galima naudoti pertraukiant paslaugų teikimo tvarką.

Reikėtų pažymėti, kad „Flowcode“klaviatūros ir „eBlocks“komponentai įvesties linijose nenaudoja standartinių traukiamųjų rezistorių. Vietoj to, jis naudoja 100K ištraukiamus rezistorius. Dėl tam tikrų trukdžių, rastų klaviatūroje kūrimo metu, visi 100K rezistoriai buvo pakeisti 10K, o visi 10K rezistoriai - 1K5. Buvo patikrinta, ar klaviatūra tinkamai veikia su 200 mm laidais.

5 veiksmas: laikmačio naudojimas

Laikmačio naudojimas
Laikmačio naudojimas
Laikmačio naudojimas
Laikmačio naudojimas
Laikmačio naudojimas
Laikmačio naudojimas

Visi ekranai yra nustatyti taip, kad nurodytų visą reikalingą informaciją, kad vartotojas galėtų greitai pakeisti nustatymus. 4 eilutė naudojama norint naršyti po meniu ir programų parinktis. Įprasto darbo metu iš viso yra 22 ekranai.

1 LINE: Laikas ir būsena

Rodo dabartinę dieną ir laiką, o po to - būsenos piktogramas:

A - rodo, kad suveikė „Aux A“įvestis ir veikia „Aux A“įvesties laikmatis.

B - rodo, kad suveikė „Aux B“įvestis ir veikia „Aux B“įvesties laikmatis.

C - rodo, kad įjungta „Aux C“išvestis.

D - rodo, kad įjungta „Aux D“išvestis.

} - Dienos/nakties jutiklio būsena. Jei yra, rodo, kad yra naktis.

2 LINE: Programos išėjimai

Rodo kanalus, kuriuos įjungė įvairios programos. Kanalai rodomi jų išvesties numeriais, o „-“reiškia, kad konkreti išvestis nėra įjungta. Čia vis tiek bus rodomi kanalai, kurie buvo išjungti skiltyje „Programiniai išėjimai aktyvūs“, tačiau tikrosios išvestys nebus nustatytos.

3 LINE: Tikros išvestys

Rodo, kuriuos kanalus įjungia skirtingos programos, A ir B papildomos įvestys arba vartotojo nustatyti rankiniai išėjimai. Paspaudus 0, visi rankiniu būdu suaktyvinti išėjimai bus išjungti ir iš naujo nustatyti „Aux“išvesties A & B laikmačiai.

4 LINE: meniu ir pagrindinės parinktys (visuose meniu)

Nurodo klavišų „*“ir „#“funkciją.

Centrinė dalis nurodo, kurie skaitmeniniai klavišai (0–9) yra aktyvūs pasirinktame ekrane.

Aux įvesties A ir B įvesties būsena taip pat rodoma naudojant atviro arba uždaro jungiklio piktogramą.

Išvestis galima įjungti/išjungti rankiniu būdu, paspaudus atitinkamą klaviatūros klavišą.

Visuose meniu „Star“ir „Hash“klavišai naudojami norint naršyti įvairias programos parinktis. Klavišai 0-9 naudojami nustatymams nustatyti. Kai viename ekrane arba programavimo meniu yra keletas parinkčių, „Hash“klavišas naudojamas įvairioms parinktims pereiti. Dabartinė pasirinkta parinktis visada bus rodoma simboliu „>“kairėje ekrano pusėje.

0-9 Įveskite laiko reikšmes

1-8 Kanalo pasirinkimo keitimas

14 36 Žingsnis per programas, 1 žingsnis atgal, 4 žingsniai atgal 10 programų, 3 žingsniai į priekį, 6 žingsniai į priekį 10

programas

1-7 Nustatykite savaitės dienas. 1 = sekmadienis, 2 = pirmadienis, 3 = antradienis, 4 = trečiadienis, 5 = ketvirtadienis, 6 = penktadienis, 7 = šeštadienis

0 Pagrindiniame ekrane išvalykite visus rankinius nepaisymus ir A bei B įvesties laikmačius. Kituose meniu pakeitimai

pasirinktos parinktys

# Pagrindiniame ekrane bus išjungti visi rankiniai nepaisymai, A ir B įvesties laikmačiai ir programos išvestys, kol

kitą įvykį.

* ir 1 Perkraukite laikmatį

* ir 2 Išvalykite visas programas ir parinktis, atkurkite numatytuosius nustatymus.

* ir 3 Įjunkite laikmatį į budėjimo režimą. Norėdami vėl įjungti laikmatį, paspauskite bet kurį klavišą.

Neteisingai įvedus bet kurią laiko reikšmę, LCD foninis apšvietimas mirksės 5 kartus, kad parodytų klaidą. Tuo pačiu metu pasigirs garsinis signalas. Komandos Išeiti ir Kitas veiks tik tada, kai dabartinis įrašas yra teisingas.

LCD apšvietimas

Pradinio paleidimo metu LCD apšvietimas bus įjungtas 3 minutėms, nebent:

- Įvyko aparatūros gedimas (nerastas EEPROM arba RTC)

- Laikas nenustatytas RTC

LCD foninis apšvietimas vėl įsijungs 3 minutėms, kai vartotojas įves klaviatūrą. Jei LCD apšvietimas yra išjungtas, bet kuri klaviatūros komanda pirmiausia įjungia LCD apšvietimą ir ignoruoja paspaustą klavišą. Tai užtikrina, kad vartotojas galės skaityti LCD ekraną prieš naudodamasis klaviatūra. Skystųjų kristalų ekrano apšvietimas taip pat bus įjungtas 5 sekundėms, jei įjungta „Aux A“arba „Aux B“įvestis.

6 veiksmas: meniu ekrano nuotraukos

Meniu ekrano nuotraukos
Meniu ekrano nuotraukos
Meniu ekrano nuotraukos
Meniu ekrano nuotraukos
Meniu ekrano nuotraukos
Meniu ekrano nuotraukos

Naudojant klaviatūrą, kiekvieną parinktį galima lengvai užprogramuoti. Vaizdai pateikia tam tikrą informaciją apie kiekvieno ekrano veikimą.

7 žingsnis: sistemos projektavimas

Sistemos dizainas
Sistemos dizainas

Visi kūrimai ir bandymai buvo atlikti ant lentos. Žvelgdamas į visus sistemos skyrius, aš suskirstiau sistemą į tris modulius. Tokį sprendimą daugiausia lėmė nemokamos „Eagle“versijos PCB dydžio apribojimai (80 x 100 mm).

1 modulis - maitinimo šaltinis

2 modulis - procesoriaus plokštė

3 modulis - relės plokštė

Nusprendžiau, kad visi komponentai turi būti lengvai prieinami ir nenorėjau naudoti ant paviršiaus montuojamų komponentų.

Eikime per kiekvieną iš jų.

8 žingsnis: maitinimo šaltinis

Maitinimo šaltinis
Maitinimo šaltinis
Maitinimo šaltinis
Maitinimo šaltinis
Maitinimo šaltinis
Maitinimo šaltinis
Maitinimo šaltinis
Maitinimo šaltinis

Maitinimo šaltinis yra tiesiai į priekį, o procesorius ir relės plokštės tiekiamos 12V ir 5V.

Įtampos reguliatorius sumontavau ant padorių šilumos kriauklių, taip pat tiekiau pervertintus kondensatorius.

9 žingsnis: CPU plokštė

CPU plokštė
CPU plokštė
CPU plokštė
CPU plokštė
CPU plokštė
CPU plokštė
CPU plokštė
CPU plokštė

Visi komponentai, išskyrus LCD ekraną, klaviatūrą ir relės, yra sumontuoti ant procesoriaus plokštės.

Siekiant supaprastinti jungtis tarp maitinimo šaltinio, dviejų skaitmeninių įėjimų ir šviesos jutiklio, buvo pridėti gnybtų blokai.

Antraštės kaiščiai/lizdai leidžia lengvai prijungti LCD ekraną ir klaviatūrą.

Relių išėjimams naudojau ULN2803. Jame jau yra visi reikalingi važiavimo rezistoriai ir atbuliniai diodai. Tai užtikrino, kad procesoriaus plokštę vis tiek galima sukurti naudojant nemokamą „Eagle“versiją. Relės yra prijungtos prie dviejų ULN2803. Apatinis ULN2803 naudojamas 8 išėjimams, o viršutinis ULN2803 - dviem pagalbiniams išėjimams. Kiekvienoje pagalbinėje išvestyje yra keturi tranzistoriai. Jungimai prie relių taip pat atliekami per antraštės kaiščius/lizdus.

PIC 18F4520 buvo sumontuotas programavimo lizdas, kad būtų galima lengvai programuoti naudojant „PicKit 3“programuotoją.

PASTABA:

Pastebėsite, kad plokštėje yra papildomas 8 kontaktų IC. Viršutinis IC yra PIC 12F675 ir prijungtas prie skaitmeninės įvesties. Tai buvo pridėta kuriant PCB. Tai palengvina išankstinį skaitmeninės įvesties apdorojimą. Mano programoje vienas iš skaitmeninių įėjimų yra prijungtas prie mano signalizacijos sistemos. Jei skamba žadintuvas, mano namuose įjungiamos tam tikros šviesos. Įjungus ir išjungus signalizaciją, sirena skleidžia skirtingus pyptelėjimus. Naudodamas PIC 12F675, dabar galiu atskirti įjungimą/išjungimą ir tikrą signalą. 12F675 taip pat yra su programavimo lizdu.

Aš taip pat pasirūpinau I2C prievadu per antraštės kaištį/lizdą. Tai vėliau pravers su relių lentomis.

Plokštėje yra keletas džemperių, kuriuos reikia lituoti prieš montuojant IC lizdus.

10 veiksmas: srauto kodo išvada

Srauto kodo išvada
Srauto kodo išvada
Srauto kodo išvada
Srauto kodo išvada
Srauto kodo išvada
Srauto kodo išvada

Kadangi aš esu įpratęs dirbti registro lygiu surinkdamas, kartais buvo sunku ir varginantis naudoti komponentų makrokomandas. Tai daugiausia lėmė tai, kad neturėjau žinių apie „Flowcode“programavimo struktūrą. Vienintelės vietos, kuriose naudoju C arba ASM blokus, buvo išėjimų įjungimas pertraukos režimo viduje, o „Do_KeyPressed“rutinoje išjungti/įjungti klaviatūros pertraukimą. PIC taip pat įdedamas į SLEEP naudojant ASM bloką, kai nerandama EEPROM arba RTC.

Pagalba naudojant įvairias I²C komandas buvo gauta iš „Flowcode“žinyno failų. Norint sėkmingai naudoti komandas, būtina tiksliai žinoti, kaip veikia skirtingi I²C įrenginiai. Norėdami sukurti grandinę, dizaineris turi turėti visus atitinkamus duomenų lapus. Tai nėra „Flowcode“trūkumas.

„Flowcode“tikrai atlaikė testą ir yra labai rekomenduojamas žmonėms, norintiems pradėti dirbti su „Microchip“mikroprocesorių serija.

PIC srauto kodavimo programavimas ir konfigūracija buvo nustatyti pagal paveikslėlius

11 veiksmas: pasirenkama I2C relės plokštė

Neprivaloma I2C relės plokštė
Neprivaloma I2C relės plokštė
Neprivaloma I2C relės plokštė
Neprivaloma I2C relės plokštė
Neprivaloma I2C relės plokštė
Neprivaloma I2C relės plokštė

CPU plokštėje jau yra antraštės jungtys 16 relių. Šie išėjimai yra atviro kolektoriaus tranzistoriai per du ULN2803 lustus. Tai gali būti naudojama tiesiogiai maitinti relėms.

Po pirmųjų sistemos bandymų man nepatiko visi laidai tarp procesoriaus plokštės ir relių. Įtraukęs I2C prievadą į procesoriaus plokštę, nusprendžiau sukurti relės plokštę, kuri būtų prijungta prie I2C prievado. Naudodamas 16 kanalų MCP23017 įvesties/išvesties lizdo lustą ir ULN2803 tranzistorių masyvą, sumažinau ryšius tarp procesoriaus ir relių iki 4 laidų.

Kadangi aš negalėjau sutalpinti 16 relių ant 80 x 100 mm PCB, nusprendžiau padaryti dvi plokštes. Kiekvienas MCP23017 naudoja tik 8 iš 16 prievadų. 1 plokštė tvarko 8 išėjimus, o 2 plokštė - du papildomus išėjimus. Lentose skiriasi tik kiekvienos lentos adresai. Tai lengva nustatyti naudojant mini megztinį. Kiekviena plokštė turi jungtis, tiekiančias maitinimą ir I2C duomenis kitai plokštei.

PASTABA:

Jei reikia, programinė įranga numato tik vieną plokštę, kuri gali naudoti visus 16 prievadų. Visi išvesties relės duomenys yra pirmoje plokštėje.

Kadangi grandinė yra neprivaloma ir labai paprasta, aš nesukūriau schemos. Jei yra pakankamai paklausos, galiu ją pridėti vėliau.

12 veiksmas: pasirenkama RF nuoroda

Pasirenkama RF nuoroda
Pasirenkama RF nuoroda
Pasirenkama RF nuoroda
Pasirenkama RF nuoroda
Pasirenkama RF nuoroda
Pasirenkama RF nuoroda

Baigęs projektą netrukus supratau, kad prie laikmačio turiu ištraukti daug 220 V kintamosios srovės laidų. Sukūriau RF ryšį, naudodamas standartinius 315MHz modulius, kurie leido laikmatį įdėti į spintelę, o relės plokštes stogo viduje, netoli visų 220 V laidų.

Nuorodoje naudojamas „AtMega328P“, veikiantis 16 MHz dažniu. Siųstuvo ir imtuvo programinė įranga yra ta pati, o režimą pasirenka mini trumpiklis.

Siųstuvas

Siųstuvas yra tiesiog prijungtas prie CPU I2C prievado. Papildomos sąrankos nereikia, nes „AtMega328P“klausosi tų pačių duomenų, kaip ir I2C relės plokštės.

Duomenys atnaujinami kartą per sekundę I2C prievade, o siųstuvas siunčia šią informaciją per RF ryšį. Jei siųstuvas negauna I2C duomenų maždaug 30 sekundžių, siųstuvas nuolatos perduos duomenis, kad išjungtų visas imtuvo bloko reles.

Siųstuvo modulio maitinimą galima pasirinkti nuo 12 V iki 5 V, naudojant mini jungiklį ant kompiuterio plokštės. Aš maitinu savo siųstuvą naudojant 12V.

Imtuvas

Imtuvas klauso koduotų duomenų iš siųstuvo ir įdeda duomenis į I2C prievadą. Relės plokštė tiesiog prijungiama prie šio prievado ir veikia taip pat, kaip buvo prijungta prie procesoriaus plokštės.

Jei imtuvas 30 sekundžių negauna galiojančių duomenų, imtuvas nuolat siunčia duomenis į I2C prievadą, kad išjungtų visas relės plokštėse.

Schemos

Vieną dieną, jei yra paklausa. „Arduino“eskize yra visa reikalinga informacija grandinei sukurti be grandinės schemos.

diapazonas

Mano instaliacijoje siųstuvas ir imtuvas yra maždaug 10 metrų atstumu. Laikmatis yra spintelės viduje, o relės blokas - lubų viršuje.

13 žingsnis: galutinis produktas

Galutinis produktas
Galutinis produktas
Galutinis produktas
Galutinis produktas
Galutinis produktas
Galutinis produktas

Pagrindinis įrenginys buvo sumontuotas senoje projekto dėžutėje. Jame yra:

- 220V/12V transformatorius

- Maitinimo plokštė

- CPU plokštė

- LCD ekranas

- Klaviatūra

- RF ryšio siųstuvas

- Papildomas namų nuotolinio imtuvo blokas, leidžiantis įjungti/išjungti šviesą per nuotolinio valdymo pultą

Relės bloką sudaro šie elementai:

- 220V/12V transformatorius

- Maitinimo plokštė

- „RF Link“imtuvas

- 2 x I2C relės plokštės

Visos plokštės buvo suprojektuotos pagal tą patį matmenį, todėl jas lengva sukrauti viena ant kitos 3 mm tarpikliais.

Rekomenduojamas: