INHOUDSOPGAWE:

8 -kanaals programmeerbare timer: 13 stappe
8 -kanaals programmeerbare timer: 13 stappe

Video: 8 -kanaals programmeerbare timer: 13 stappe

Video: 8 -kanaals programmeerbare timer: 13 stappe
Video: 13 min. Full Body Stretch Routine For Tight Muscles| Beginner Friendly 2024, Julie
Anonim
8 -kanaal programmeerbare timer
8 -kanaal programmeerbare timer
8 -kanaals programmeerbare timer
8 -kanaals programmeerbare timer
8 -kanaal programmeerbare timer
8 -kanaal programmeerbare timer

Inleiding

Ek gebruik sedert 1993 Microchip se PIC -reeks mikrobeheerder vir my projekte, en het al my programmering in monstertaal gedoen met behulp van die Microchip MPLab IDE. My projekte het gewissel van eenvoudige verkeersligte en flitsende LED's, tot USB -joystick -koppelvlakke vir R/C -modelle en skakelaarsontleders wat in die industrie gebruik word. Ontwikkeling het baie dae geneem, en soms duisende reëls assembler -kode.

Nadat ek Matrix Multimedia Flowcode 4 Professional ontvang het, was ek nogal skepties oor die sagteware. Dit het te maklik gelyk om te glo. Ek het besluit om dit weer te probeer, en ek het al die verskillende komponentmakros getoets, alles met groot sukses. Die beste deel van die gebruik van Flowcode was dat eenvoudige projekte in een nag gekodeer kon word. Nadat ek met die I²C en 'n DS1307 real -time horlosie gespeel het, het ek besluit om die 8 -kanaaltimer met behulp van Flowcode te ontwerp. Omdat ek nie 'n klein en maklike projek was nie, het ek geglo dat dit 'n wonderlike projek sou wees om myself Flowcode te leer.

Kies 'n mikroverwerker en ander komponente

As gevolg van die aantal I/O -penne wat benodig word, was dit duidelik dat 'n 40 -pins -apparaat nodig sal wees. Die PIC 18F4520 is gekies, hoofsaaklik vir sy 32K programgeheue, en 1536 grepe data -geheue. Alle komponente wat gebruik word, is standaard deur-gat-toestelle, wat dit moontlik maak om die kring op Vero-bord te bou indien nodig. Dit het ook gehelp met die ontwikkeling op 'n broodbord.

Stap 1: Projekdoelwitte

Doelwitte van die projek
Doelwitte van die projek

Doelwitte

- Akkurate tydhou, met battery-back-up.

- Alle programme en data moet bewaar word, selfs na kragverlies.

- Eenvoudige gebruikerskoppelvlak.

- Programmeer buigsaamheid.

Tyd hou

In 'n gebied wat geneig is tot kragonderbrekings, is die standaard 50/60Hz van die kraglyne nie voldoende om akkurate tyd te hou nie. 'N Intydse horlosie was noodsaaklik, en nadat ek verskeie RTC-skyfies getoets het, het ek besluit op die DS1307 as gevolg van die eenvoudige ossillator en battery-rugsteunkonfigurasie. Baie akkurate tydsberekening is verkry met slegs 'n kristal van 32.768 kHz wat aan die DS1307 gekoppel is. Die akkuraatheid was binne 2 sekondes oor 'n proeftydperk van 2 maande met behulp van 4 verskillende kristalmerke.

Bewaring van data

Al die tydprogramdata moet behoue bly, selfs tydens kragonderbreking. Met tot 100 verskillende programme en verskillende konfigurasie data, het dit duidelik geword dat die 256 grepe aan boord EEPROM van die PIC nie groot genoeg sal wees nie. 'N 24LC256 I²C EEPROM word gebruik om alle programmeringsinligting op te slaan.

Eenvoudige gebruikerskoppelvlak

Die gebruikerskoppelvlak bestaan uit slegs 2 items, 'n 16 x 4 -reël LCD -skerm met LED -agtergrond en 'n 4 x 3 -klavier. Alle programmering kan gedoen word met die druk van slegs 'n paar knoppies. Byvoegings tot die koppelvlak is 'n hoorbare piëzo -zoemer en visuele flitsende LCD -agtergrond.

Stap 2: Buigsaamheid vir programmering

Buigsaamheid in programmering
Buigsaamheid in programmering

Om genoeg programbuigsaamheid te verseker, het die timer 100 programme wat individueel ingestel kan word. Vir elke program kan die On time, Off Time, Output Channels en Day of Week ingestel word. Elke program het drie modusse:

- Outo: Tyd, Uit tyd, Uitgangskanaal en Dag van die week is ingestel.

- Uit: Die individuele program kan gedeaktiveer word sonder om die instellings te verwyder. Om die program weer te aktiveer, kies eenvoudig 'n ander modus.

- Dag/nag: Op tyd, af tyd, uitset kanaal en dag van die week is ingestel. Werk dieselfde as die outomatiese modus, maar sal wel

skakel slegs die uitsette aan tussen die aan en af tye wanneer dit donker is. Dit maak ook volle dag-/nagbeheer moontlik

As ekstra buigsaamheid om ligte aan te skakel by sonsondergang en tydens sonsopkoms.

Voorbeeld 1: Skakel lig aan na 20:00 en skakel lig met sonop op:

Op: 20:00, Af: 12: 00, Voorbeeld 2: Skakel lig by sonsondergang aan, en skakel lig om 23:00 af.

Op: 12:00

Af: 23:00

Voorbeeld 3: Skakel lig aan met sonsondergang en lig by sonop.

Op: 12:01

Af: 12:00

Bykomende opsies beskikbaar, almal werk onafhanklik van die 100 aan/af -programme.

Programkanale aktief: In plaas daarvan om verskeie programme uit te skakel, kan individuele uitsetkanale gedeaktiveer word sonder om die programme te verander.

Hulp -insette: Twee digitale insette is beskikbaar om sekere uitsetkanale vir 'n spesifieke tyd aan te skakel. Dit kan byvoorbeeld gebruik word om sekere ligte aan te skakel as u laat in die nag by die huis kom, as 'n knoppie op 'n afstandsbediening ingedruk word, of om 'n ander lig aan te skakel as die huisalarm geaktiveer word.

Hulpuitgange: Twee ekstra uitsette (afgesien van die 8 uitsetkanale) is beskikbaar. Hulle kan geprogrammeer word om aan te skakel met sekere uitsetkanale, of met die digitale insette. In my installasie het ek uitsette 6-8 wat my besproeiing beheer, wat op 24V werk. Ek gebruik kanale 6-8 om een van die hulpuitsette aan te skakel, om 'n 24V-kragtoevoer vir die besproeiingstelsel aan te skakel.

Handmatig aan: op die hoofskerm kan knoppies 1-8 gebruik word om kanale handmatig aan of uit te skakel.

Stap 3: Hardeware

Hardeware
Hardeware

Kragtoevoer: Die kragtoevoer bestaan uit 'n gelykrigter, uitstrykingskondensator en 'n 1 Amp -lont vir beskerming teen oorlading. Hierdie toevoer word dan gereguleer deur 'n 7812 en 7805 reguleerder. Die 12V -toevoer word gebruik om die uitvoerrelais aan te dryf, en alle ander stroombane word van die 5V -voeding voorsien. Aangesien die 7805 -reguleerder gekoppel is aan die uitset van die 7812 -reguleerder, moet die totale stroom beperk word tot 1 amp deur die 7812 -reguleerder. Dit is raadsaam om hierdie reguleerders op 'n geskikte koellichaam te monteer.

I²C Bus: Alhoewel Flowcode hardeware I²C -beheer moontlik maak, het ek besluit om van die sagteware I²C -konfigurasie gebruik te maak. Dit bied meer buigsaamheid vir penopdragte. Alhoewel dit stadiger (50 kHz) is, presteer dit steeds uitstekend in vergelyking met die hardeware I²C -bus. Beide DS1307 en 24LC256 is aan hierdie I²C -bus gekoppel.

Real Time Clock (DS1307): Tydens die aanvang word die RTC-register 0 en 7 gelees om te bepaal of dit geldige tyd- en konfigurasiedata bevat. Sodra die opstelling korrek is, word die RTC -tyd gelees en die tyd in die PIC gelaai. Dit is die enigste keer dat die tyd uit die RTC gelees word. Na die aanvang sal 'n 1Hz -puls op pen 7 van die RTC voorkom. Hierdie 1Hz -sein is gekoppel aan RB0/INT0, en via 'n onderbrekingsdiensroetine word die PIC -tyd elke sekonde opgedateer.

Eksterne EEPROM: Alle programdata en opsies word op die eksterne EEPROM gestoor. Die EEPROM-data word by die aanvang gelaai, en 'n afskrif van die data word in die PIC-geheue gestoor. EEPROM -data word slegs opgedateer as die programinstellings verander word.

Dag/Nagsensor: 'n Standaard ligafhanklike weerstand (LDR) word gebruik as die dag/nag sensor. Aangesien LDR's in baie vorms en variëteite beskikbaar is, almal met verskillende weerstandswaardes onder dieselfde ligomstandighede, het ek 'n analoog ingangskanaal gebruik om die ligvlak te lees. Die dag sowel as die nagvlakke is verstelbaar en bied 'n mate van buigsaamheid vir verskillende sensors. Om 'n histerese op te stel, kan individuele waardes vir dag en nag ingestel word. Die toestand sal slegs verander as die ligvlak langer as 60 sekondes onder die dag, of bo die nag -stelpunte is.

LCD-skerm: 4 reëls, 16 karakters word gebruik, aangesien al die data nie op 'n 2-reël vertoon kon word nie. Die projek bevat 'n paar pasgemaakte karakters, wat gedefinieer word in die LCD_Custom_Char -makro.

Hulp -insette: Beide insette word gebuffer met 'n NPN -transistor. +12v en 0V is ook beskikbaar op die aansluiting, wat meer buigsame verbindings met eksterne verbindings moontlik maak. As 'n voorbeeld kan 'n afstandbeheer -ontvanger aan die toevoer gekoppel word.

Uitsette: Alle uitsette word elektries van die stroombaan geïsoleer deur middel van 'n 12V -relais. Die relais wat gebruik word, het 'n nominale waarde van 250V wisselstroom, teen 10 ampère. Die gewoonlik oop en normaal gesluit kontakte word na die terminale gebring.

Toetsenbord: Die bedieningspaneel wat gebruik word, is 'n matriksbedieningspaneel van 3 x 4 en is verbind PORTB: 2..7.

Stap 4: Toetsenbordonderbrekings

Sleutelbord onderbreek
Sleutelbord onderbreek
Sleutelbord onderbreek
Sleutelbord onderbreek
Sleutelbord onderbreek
Sleutelbord onderbreek

Ek wou gebruik maak van die PORTB Interrupt on Change interrupt by enige druk op die toets. Hiervoor moes 'n aangepaste onderbreking in die stroomkode geskep word om te verseker dat die PORTB -rigting en data korrek opgestel is voor en na elke onderbreking van die klavier. Elke keer as 'n knoppie ingedruk of losgelaat word, word 'n onderbreking gegenereer. Die onderbreekroetine reageer slegs as 'n sleutel ingedruk word.

GEPASTE ONDERBREKING

Aktiveer kode

portb = 0b00001110; trisb = 0b11110001;

intcon. RBIE = 1;

intcon2. RBIP = 1;

intcon2. RBPU = 1;

rcon. IPEN = 0;

Hanteerder kode

as (intcon & (1 << RBIF))

{FCM_%n ();

portb = 0b00001110;

trisb = 0b11110001;

wreg = portb;

clear_bit (intcon, RBIF);

}

Probleme gevind

Tydens 'n onderbreking moet die onderbrekingsdiensroetine onder GEEN toestande 'n ander makro bel wat êrens in die res van die program gebruik kan word nie. Dit sal uiteindelik lei tot oorloopprobleme, aangesien die onderbreking kan plaasvind op dieselfde tydstip dat die hoofprogram ook in dieselfde subprogram is. Dit word ook geïdentifiseer as 'n ERNSTIGE FOUT deur Flowcode wanneer die kode saamgestel word.

In die aangepaste kode van die sleutelbord onder GetKeyPadNumber is daar so 'n oproep na die Delay_us -makro, wat 'n stapel oorloop. Om dit te oorkom, het ek die opdrag Delay_us (10) verwyder en vervang met 25 reëls "wreg = porta;" bevele. Hierdie opdrag lees PORTA en plaas die waarde daarvan in die W -register, net om 'n bietjie vertraging te kry. Hierdie opdrag sal saamgestel word tot 'n enkele instruksie soortgelyk aan assembler movf porta, 0. Vir die 10MHz -klok wat in die projek gebruik word, sal elke instruksie 400ns wees, en om 'n vertraging van 10us te kry, het ek 25 van hierdie instruksies nodig gehad.

Let op die tweede reël van Figuur 3: GetKeypadNumber Custom Code, dat die oorspronklike delay_us (10) opdrag gedeaktiveer is met '//'. Hieronder het ek my 25 "wreg = porta;" bygevoeg bevele om 'n nuwe 10us vertraging te kry. Met geen oproepe na makro's in die pasgemaakte kode van die sleutelbord_ReadKeypadNumber nie, kan die makro van die bedieningspaneel nou in 'n onderbrekingsdiensroetine gebruik word.

Daar moet op gelet word dat die komponente Flowcode Keyboard en eBlocks nie die standaard optrekweerstands op die insetlyne gebruik nie. In plaas daarvan gebruik dit 100K aftrekweerstands. As gevolg van 'n mate van inmenging wat tydens die ontwikkeling op die bedieningspaneel gevind is, is die 100K -weerstande almal vervang met 10K, en alle 10K -weerstande is vervang met 1K5. Die toetsbord is getoets om korrek te werk met leidings van 200 mm.

Stap 5: Gebruik die timer

Die gebruik van die timer
Die gebruik van die timer
Die gebruik van die timer
Die gebruik van die timer
Die gebruik van die timer
Die gebruik van die timer

Al die skerms is opgestel om die nodige inligting aan te dui sodat die gebruiker vinnig die instellings kan verander. Reël 4 word gebruik om te help met die navigasie deur die spyskaarte en programopsies. 'N Totaal van 22 skerms is beskikbaar tydens normale werking.

REËL 1: Tyd en status

Toon huidige dag en tyd, gevolg deur statusikone:

A - Dui aan dat Aux Input A geaktiveer is en Aux Input A timer loop.

B - Dui aan dat Aux Input B geaktiveer is en Aux Input B timer loop.

C - Dui aan dat Aux Output C aangeskakel is.

D - Dui aan dat Aux Output D aangeskakel is.

} - Dag/nag sensor status. As dit teenwoordig is, dui dit aan dat dit nag is.

REËL 2: Programuitsette

Toon die kanale wat deur die verskillende programme aangeskakel is. Kanale word in hul uitsetgetalle vertoon, en 'n "-" dui aan dat die spesifieke uitset nie aangeskakel is nie. Kanale wat gedeaktiveer is in die "Programuitsette aktief" sal steeds hier aangedui word, maar die werklike uitsette sal nie ingestel word nie.

REËL 3: Regte uitsette

Toon watter kanale aangeskakel word deur die verskillende programme, Aux Inputs A & B, of handmatige uitsette wat deur die gebruiker gestel is. Deur op 0 te druk, word alle uitsette wat met die hand geaktiveer is, teruggeskakel en die Aux Output A & B -tydtellers herstel.

REËL 4: Spyskaart en sleutelopsies (op alle spyskaarte)

Dui die funksie van die “*” en “#” sleutels aan.

Die middelste deel dui aan watter numeriese sleutels (0-9) vir die geselekteerde skerm aktief is.

Die invoerstatus van Aux Input A & B word ook getoon deur middel van 'n oop of geslote skakelaar -ikoon.

Uitsette kan met die hand aangeskakel/afgeskakel word deur op die ooreenstemmende sleutel op die klavier te druk.

Deur die spyskaarte word die Star- en Hash -sleutels gebruik om deur die verskillende programopsies te navigeer. Sleutels 0-9 word gebruik om die opsies in te stel. As daar verskeie opsies op 'n enkele skerm of in die programmeermenu beskikbaar is, word die Hash -sleutel gebruik om deur die verskillende opsies te gaan. Die huidige gekose opsie sal altyd aangedui word deur die ">" karakter aan die linkerkant van die skerm.

0-9 Voer tydwaardes in

1-8 Verander kanaalkeuse

14 36 Deurloop van programme, 1-stap terug, 4-stap terug 10 programme, 3-stap vorentoe, 6-stap vorentoe 10

programme

1-7 Stel dae van die week in. 1 = Sondag, 2 = Maandag, 3 = Dinsdag, 4 = Woensdag, 5 = Donderdag, 6 = Vrydag, 7 = Saterdag

0 Maak alle handmatige oorskrywings en invoer A en invoer B -tydtellers in die hoofskerm skoon. In ander spyskaarte verander

geselekteerde opsies

# Skakel alle handmatige oorskrywings, ingang A en invoer B -tydtellers en programuitsette in die hoofskerm uit

die volgende geleentheid.

* en 1 Herlaai die timer

* en 2 Maak alle programme en opsies skoon, herstel die standaardinstellings.

* en 3 Stel timer in stand -by. Druk op enige sleutel om die timer weer aan te skakel.

Tydens verkeerde inskrywings van enige tydwaarde, flits die LCD -agtergrond 5 keer om 'n fout aan te dui. Terselfdertyd sal die gonser klink. Die Exit en Next opdragte werk slegs as die huidige invoer korrek is.

LCD -agtergrond

By die eerste aanvang sal die LCD-agtergrond vir 3 minute aangeskakel word, tensy:

- Daar is 'n hardeware -mislukking (EEPROM of RTC word nie gevind nie)

- Tyd is nie vasgestel in die RTC nie

Die LCD -agtergrond sal weer vir 3 minute aanskakel op enige gebruikersinvoer op die bedieningspaneel. As die LCD -agtergrond af is, sal enige opdrag van die toetsbord die LCD -agtergrond eers aanskakel en die sleutel wat ingedruk is, ignoreer. Dit verseker dat die gebruiker die LCD -skerm kan lees voordat hy die toetsbord gebruik. Die LCD -agterlig sal ook vir 5 sekondes aangeskakel word as Aux Input A of Aux Input B geaktiveer is.

Stap 6: Kieslysskote

Kieslysskote
Kieslysskote
Kieslysskermopnames
Kieslysskermopnames
Kieslysskermopnames
Kieslysskermopnames

Elkeen van die opsies kan maklik met die bedieningspaneel geprogrammeer word. Die beelde gee inligting oor wat elke skerm doen.

Stap 7: Ontwerp van die stelsel

Ontwerp van die stelsel
Ontwerp van die stelsel

Alle ontwikkeling en toetsing is op broodbord gedoen. As ek na al die dele van die stelsel kyk, het ek die stelsel in drie modules verdeel. Hierdie besluit was hoofsaaklik te wyte aan die PCB -groottebeperkings (80 x 100 mm) van die gratis weergawe van Eagle.

Module 1 - Kragtoevoer

Module 2 - CPU -bord

Module 3 - Relay board

Ek het besluit dat alle komponente maklik verkrygbaar moet wees en dat ek nie komponente op die oppervlak wil gebruik nie.

Kom ons gaan deur elkeen van hulle.

Stap 8: Kragtoevoer

Kragtoevoer
Kragtoevoer
Kragtoevoer
Kragtoevoer
Kragtoevoer
Kragtoevoer
Kragtoevoer
Kragtoevoer

Die kragtoevoer is reguit, en voorsien die SVE en relaiborde van 12V en 5V.

Ek het die spanningsreguleerders op ordentlike hittebakke gemonteer, en ek het ook oorskatte kapasitors gebruik vir die toevoer.

Stap 9: CPU -bord

CPU -bord
CPU -bord
CPU -bord
CPU -bord
CPU -bord
CPU -bord
CPU -bord
CPU -bord

Alle komponente, behalwe die LCD -skerm, die bedieningspaneel en relais, is op die CPU -bord gemonteer.

Terminalblokke is bygevoeg om die verbindings tussen die toevoer, twee digitale insette en die ligsensor te vereenvoudig.

Kopstukke/voetstukke maak voorsiening vir maklike verbindings met die LCD -skerm en die klavier.

Vir die uitsette na die relais het ek die ULN2803 gebruik. Dit bevat al die nodige dryfweerstands en terugdraaidiodes. Dit het verseker dat die CPU -bord steeds gemaak kan word met die gratis weergawe van Eagle. Die aflosse is verbind met die twee ULN2803's. Die onderste ULN2803 word gebruik vir die 8 uitsette, en die boonste ULN2803 vir die twee hulpuitsette. Elke hulpuitset het vier transistors. Verbindings met die aflosse is ook deur middel van kopstukke/voetstukke.

Die PIC 18F4520 is toegerus met 'n programmeer -aansluiting, sodat dit maklik kan programmeer via die PicKit 3 -programmeerder.

LET WEL:

U sal sien dat die bord 'n ekstra 8 -pins IC bevat. Die boonste IC is 'n PIC 12F675, en gekoppel aan 'n digitale ingang. Dit is bygevoeg tydens die PCB -ontwerp. Dit maak dit makliker om die digitale invoer vooraf te verwerk. In my aansoek is een van die digitale insette aan my alarmstelsel gekoppel. As die alarm lui, word sekere ligte in my huis aangeskakel. Deur my alarmstelsel in en uit te skakel, word verskillende pieptone op die sirene gegee. Deur die PIC 12F675 te gebruik, kan ek nou onderskei tussen arm/ontwapening en 'n werklike alarm. Die 12F675 is ook toegerus met 'n programmeringsaansluiting.

Ek het ook voorsiening gemaak vir 'n I2C -poort via koppen/sok. Dit sal later handig te pas kom met die aflosborde.

Die bord bevat 'n paar springers wat gesoldeer moet word voordat die IC -voetstukke aangebring word.

Stap 10: Gevolgtrekking van stroomkode

Gevolgtrekking van stroomkode
Gevolgtrekking van stroomkode
Gevolgtrekking van stroomkode
Gevolgtrekking van stroomkode
Gevolgtrekking van stroomkode
Gevolgtrekking van stroomkode

Aangesien ek gewoond is om op registervlak in die vergadering te werk, was dit soms moeilik en frustrerend om die komponentmakros te gebruik. Dit was hoofsaaklik te wyte aan my gebrek aan kennis van Flowcode se programmeringstruktuur. Die enigste plek waar ek die C- of ASM -blokke gebruik het, was om uitsette binne 'n onderbreekroetine aan te skakel en in die Do_KeyPressed -roetine om die onderbreking van die toetsbord uit te skakel/in te skakel. Die PIC word ook in SLEEP geplaas met behulp van 'n ASM -blok, as die EEPROM of RTC nie gevind word nie.

Hulp met die gebruik van die verskillende I²C -opdragte, is almal verkry vanuit die Flowcode Help -lêers. Dit is nodig om presies te weet hoe die verskillende I²C -toestelle werk, voordat die opdragte suksesvol gebruik kan word. Die ontwerp van 'n stroombaan vereis wel dat die ontwerper alle relevante gegewensblaaie beskikbaar het. Dit is nie 'n tekortkoming van Flowcode nie.

Flowcode het werklik die toets gestand gedoen en word sterk aanbeveel vir persone wat met die Microchip -reeks mikroverwerkers wil begin werk.

Vloeikodeprogrammering en -konfigurasie vir die PIC is volgens die foto's bepaal

Stap 11: Opsionele I2C -aflosbord

Opsionele I2C Relay Board
Opsionele I2C Relay Board
Opsionele I2C Relay Board
Opsionele I2C Relay Board
Opsionele I2C Relay Board
Opsionele I2C Relay Board

Die SVE -bord het reeds koptekste vir 16 aflosse. Hierdie uitsette is oop kollektortransistors via die twee ULN2803 -skyfies, wat gebruik kan word om die relais direk van krag te maak.

Na die eerste toetse van die stelsel, hou ek nie van al die drade tussen die CPU -bord en relais nie. Aangesien ek 'n I2C -poort op die CPU -kaart ingesluit het, het ek besluit om die relaisbord te ontwerp om aan te sluit op die I2C -poort. Met 'n 16 -kanaal MCP23017 I/O Port Expander -chip en 'n ULN2803 -transistorreeks, het ek die verbindings tussen die SVE en relais tot 4 drade verminder.

Aangesien ek nie 16 aflosse op 'n 80 x 100 mm PCB kon pas nie, het ek besluit om twee borde te maak. Elke MCP23017 gebruik slegs 8 van sy 16 poorte. Bord 1 hanteer die 8 uitsette, en bord 2 die twee hulpuitsette. Die enigste verskil op die borde is die adresse van elke bord. Dit is maklik om te stel met 'n mini -trui. Elke bord het aansluitings om krag en I2C -data aan die ander bord te verskaf.

LET WEL:

Indien nodig, maak die sagteware voorsiening vir slegs een bord wat al 16 poorte kan gebruik. Alle uitset -relay -data is op die eerste bord beskikbaar.

Aangesien die kring opsioneel en baie eenvoudig is, het ek nie 'n skema gemaak nie. As daar genoeg vraag is, kan ek dit later byvoeg.

Stap 12: Opsionele RF -skakel

Opsionele RF -skakel
Opsionele RF -skakel
Opsionele RF -skakel
Opsionele RF -skakel
Opsionele RF -skakel
Opsionele RF -skakel

Na die voltooiing van die projek het ek gou besef dat ek baie 220V AC -bedrading na die timer moet trek. Ek het 'n RF -skakel ontwikkel met behulp van standaard 315MHz -modules waarmee die timer in 'n kas geplaas kon word, en die relaisborde in die dak, naby al die 220V -bedrading.

Die skakel gebruik 'n AtMega328P wat op 16MHz werk. Die sagteware vir beide sender en ontvanger is dieselfde, en die modus word gekies deur 'n mini -trui.

Sender

Die sender word eenvoudig in die CPU I2C -poort gekoppel. Geen addisionele opstelling is nodig nie, aangesien die AtMega328P na dieselfde data luister as die I2C -aflosborde.

Data word een keer per sekonde opgedateer op die I2C -poort, en die sender stuur hierdie inligting oor die RF -skakel. As die sender vir ongeveer 30 sekondes nie I2C -data ontvang nie, stuur die sender deurlopend data om alle relais na die ontvanger -eenheid uit te skakel.

Die krag na die sendermodule kan gekies word tussen 12V en 5V met 'n mini -trui op die rekenaarbord. Ek voed my sender met 12V.

Ontvanger

Die ontvanger luister na gekodeerde data van die sender en plaas die data op 'n I2C -poort. Die relaisbord sluit eenvoudig aan op hierdie poort en werk dieselfde as wat dit op die CPU -bord ingeprop is.

As die ontvanger gedurende 30 sekondes nie geldige data ontvang nie, stuur die ontvanger deurlopend data oor die I2C -poort om alle aflosse op die aflosborde uit te skakel.

Skemas

Eendag, as daar 'n aanvraag daarvoor is. Die Arduino -skets bevat wel al die nodige inligting om die stroombaan te bou sonder 'n stroombaandiagram.

Bereik

In my installasie is die sender en ontvanger ongeveer 10 meter uitmekaar. Die timer is in 'n kas en die aflos -eenheid bo -op die plafon.

Stap 13: Finale produk

Finale produk
Finale produk
Finale produk
Finale produk
Finale produk
Finale produk

Die hoofeenheid is in 'n ou projekkas ingerig. Dit bevat die volgende:

- 220V/12V transformator

- Kragvoorsieningsbord

- CPU -bord

- LCD -skerm

- Toetsbord

- RF -skakel sender

- Bykomende ontvanger -eenheid van die huis af sodat ek ligte via die afstandsbediening kan aan/af skakel

Die aflos -eenheid bestaan uit die volgende:

- 220V/12V transformator

- Kragvoorsieningsbord

- RF Link Ontvanger

- 2 x I2C -aflosborde

Alle planke is ontwerp met dieselfde dimensie, wat dit maklik maak om dit met 3 mm afstandhouers bo -op mekaar te stapel.

Aanbeveel: