Բովանդակություն:

8 ալիքի ծրագրավորվող ժմչփ ՝ 13 քայլ
8 ալիքի ծրագրավորվող ժմչփ ՝ 13 քայլ

Video: 8 ալիքի ծրագրավորվող ժմչփ ՝ 13 քայլ

Video: 8 ալիքի ծրագրավորվող ժմչփ ՝ 13 քայլ
Video: Skema Timer 1-3 Kulkas 2 Pintu dan Cara Kerjanya 2024, Նոյեմբեր
Anonim
8 ալիքի ծրագրավորվող ժմչփ
8 ալիքի ծրագրավորվող ժմչփ
8 ալիք ծրագրավորվող ժմչփ
8 ալիք ծրագրավորվող ժմչփ
8 ալիքի ծրագրավորվող ժմչփ
8 ալիքի ծրագրավորվող ժմչփ

Ներածություն

Ես 1993 թվականից օգտագործում եմ Microchip- ի PIC միկրոկառավարիչների տեսականին իմ նախագծերի համար և իմ ամբողջ ծրագրավորումը կատարել եմ հավաքողի լեզվով ՝ օգտագործելով Microchip MPLab IDE- ն: Իմ նախագծերը տատանվում էին պարզ լուսացույցներից և լուսադիոդային լուսարձակներ, մինչև USB ջոյսթիք միջերեսներ R/C մոդելների համար և արդյունաբերության մեջ օգտագործվող անջատիչ անալիզատորներ: Developmentարգացումը տևեց շատ օրեր, իսկ երբեմն էլ ՝ հավաքողի կոդի հազարավոր տողեր:

Matrix Multimedia Flowcode 4 Professional- ը ստանալուց հետո ես բավականին թերահավատորեն էի վերաբերվում ծրագրակազմին: Կարծես չափազանց հեշտ էր թվում: Ես որոշեցի փորձել և փորձարկեցի բոլոր տարբեր բաղադրիչ մակրոները ՝ բոլորը մեծ հաջողությամբ: Flowcode- ի օգտագործման լավագույն մասն այն էր, որ պարզ նախագծերը կարող էին կոդավորվել մեկ գիշերվա ընթացքում: I²C- ի և իրական ժամանակի DS1307 ժամացույցի հետ խաղալուց հետո որոշեցի նախագծել 8 ալիքի ժամաչափը ՝ օգտագործելով Flowcode- ը: Չլինելով փոքր և հեշտ նախագիծ ՝ ես հավատում էի, որ սա հիանալի նախագիծ կլինի ինքս ինձ Flowcode սովորեցնելու համար:

Միկրոպրոցեսորային և այլ բաղադրիչների ընտրություն

Պահանջվող մուտքի/ելքի կապերի քանակի պատճառով պարզ էր, որ անհրաժեշտ կլինի 40 պին սարք: PIC 18F4520- ն ընտրվել է հիմնականում 32K ծրագրային հիշողության և 1536 բայթ տվյալների հիշողության համար: Օգտագործված բոլոր բաղադրիչները ստանդարտ միջանցքային սարքեր են, ինչը հնարավորություն է տալիս անհրաժեշտության դեպքում միացում կառուցել Vero տախտակի վրա: Սա նաև նպաստեց հացահատիկի վրա զարգացմանը:

Քայլ 1. Projectրագրի նպատակները

Նախագծի նպատակները
Նախագծի նպատակները

Նպատակներ

- timeշգրիտ ժամանակի պահպանում, մարտկոցի լիցքավորումով:

- Բոլոր ծրագրերն ու տվյալները կպահպանվեն, նույնիսկ իշխանությունը կորցնելուց հետո:

- Պարզ ինտերֆեյս:

- Programրագրավորման ճկունություն:

Timeամանակի պահպանում

Ապրելով հոսանքի խափանումների ենթակա տարածքում, էլեկտրահաղորդման գծերից ստանդարտ 50/60Hz- ը բավարար չի լինի ժամանակի ճշգրիտ պահպանման համար: Իրական ժամանակի ժամացույցը կարևոր էր, և մի քանի RTC չիպեր փորձարկելուց հետո ես որոշեցի DS1307- ը `դրա պարզ տատանումների և մարտկոցի պահեստավորման շնորհիվ: Բավական ճշգրիտ ժամանակի պահպանումը ստացվել է միայն 32.768 կՀց բյուրեղի միջոցով, որը միացված է DS1307- ին: Uracyշգրտությունը եղել է 2 վայրկյանի ընթացքում ՝ 2 ամսվա փորձաշրջանի ընթացքում ՝ օգտագործելով 4 տարբեր մակնիշի բյուրեղներ:

Տվյալների պահպանում

Theամաչափի ծրագրի բոլոր տվյալները պետք է պահպանվեն, նույնիսկ հոսանքի խափանման ժամանակ: Մինչև 100 տարբեր ծրագրեր և կազմաձևման տարբեր տվյալներ պարզ դարձավ, որ PIC- ի 256 բայթ ներկառուցված EEPROM- ը բավականաչափ մեծ չի լինի: LCրագրավորման բոլոր տեղեկությունները պահելու համար օգտագործվում է 24LC256 I²C EEPROM:

Պարզ ինտերֆեյս

Օգտվողի միջերեսը բաղկացած է ընդամենը 2 տարրից, 16 x 4 տողանոց LCD էկրանով ՝ լուսադիոդային լուսավորությամբ և 4 x 3 ստեղնաշարով: Բոլոր ծրագրավորումները կարող են կատարվել միայն մի քանի կոճակների սեղմումով: Ինտերֆեյսի հավելումներն են ՝ լսելի պիեզո -բզզոց և տեսողական փայլող LCD լուսավորություն:

Քայլ 2. Programրագրավորման ճկունություն

Programրագրավորման ճկունություն
Programրագրավորման ճկունություն

Enoughրագրի բավարար ճկունություն ապահովելու համար ժմչփն ունի 100 ծրագիր, որոնք կարող են սահմանվել առանձին: Յուրաքանչյուր ծրագրի համար կարող են սահմանվել «timeամանակին», «Անջատված ժամանակը», «Ելքային ալիքները» և «Շաբաթվա օրը»: Յուրաքանչյուր ծրագիր ունի երեք ռեժիմ.

- Ավտոմատ. Timeամանակին, Անջատված ժամանակին, Ելքային ալիքը և շաբաթվա օրը սահմանվում են:

- Անջատված. Առանձին ծրագիրը կարող է անջատվել `առանց կարգավորումները ջնջելու: Againրագիրը կրկին միացնելու համար ՝

պարզապես ընտրեք այլ ռեժիմ:

- Օր/գիշեր. Timeամանակին, Անջատված ժամանակին, Ելքային ալիքը և շաբաթվա օրը սահմանվում են: Աշխատում է նույնը, ինչ Auto ռեժիմը, բայց կամենա

միացրեք ելքերը միայն միացման և անջատման ժամանակների միջև, երբ մութն է: Սա նաև հնարավորություն է տալիս ցերեկային/գիշերային լիարժեք վերահսկողություն իրականացնել

որպես մայրամուտին լույսերը միացնելու և արևածագին անջատելու լրացուցիչ ճկունություն:

Օրինակ 1. Լույսը կբացվի ժամը 20: 00 -ից հետո, և լույսը կանջատվի արևածագին:

Onամը `20:00, Անջատված ՝ 12: 00, Օրինակ 2. Լուսարձակը կբացվի մայրամուտին, և լույսը կանջատվի ժամը 23: 00 -ին:

Onամը `12:00

Անջատված ՝ 23:00

Օրինակ 3. Լուսարձակը կբացվի մայրամուտին, և լույսը կանջատվի արևածագին:

Onամը `12:01

Անջատված ՝ 12:00

Առկա են լրացուցիչ տարբերակներ, որոնք բոլորն աշխատում են անկախ 100 միացման/անջատման ծրագրերից:

Programրագրի ալիքները ակտիվ են. Մի քանի ծրագիր անջատելու փոխարեն առանձին ելքային ալիքները կարող են անջատվել առանց ծրագրերը փոխելու անհրաժեշտության:

Օժանդակ մուտքեր. Երկու թվային մուտք կա, որոնք թույլ են տալիս որոշակի ելքային ալիքներ միացնել որոշակի ժամանակով: Օրինակ, այն կարող է օգտագործվել մի քանի լույս միացնելու համար, երբ տուն եք ժամանում ուշ գիշեր, երբ սեղմվում է հեռակառավարման վահանակի կոճակը, կամ այլ ազդանշաններ միացնելու համար, երբ տան ազդանշանը միացված է:

Օժանդակ ելքեր. Հասանելի է երկու լրացուցիչ ելք (բացի 8 ելքային ալիքներից): Նրանք կարող են ծրագրավորվել միացման որոշակի ելքային ալիքներով կամ թվային մուտքերով: Իմ տեղադրման մեջ ես ունեմ 6-8 ելքեր, որոնք վերահսկում են իմ ոռոգումը, որն աշխատում է 24 Վ լարման վրա: Ես օգտագործում եմ 6-8 ալիքները `օժանդակ ելքերից մեկը միացնելու, ոռոգման համակարգի 24 Վ էլեկտրասնուցման միացման համար:

Ձեռնարկը միացված է. Երբ հիմնական էկրանին է, 1-8 կոճակները կարող են օգտագործվել ալիքները ձեռքով միացնելու կամ անջատելու համար:

Քայլ 3: Սարքավորումներ

Սարքավորումներ
Սարքավորումներ

Էներգամատակարարում. Էներգամատակարարումը բաղկացած է ուղղիչից, հարթեցնող կոնդենսատորից և 1 Ամպ ապահովիչից `ծանրաբեռնվածությունից պաշտպանվելու համար: Այս մատակարարումն այնուհետ կարգավորվում է 7812 և 7805 կարգավորիչներով: 12 Վ լարման աղբյուրը օգտագործվում է ելքային ռելեներ վարելու համար, իսկ մնացած բոլոր սխեմաները սնվում են 5 Վ լարման աղբյուրից: Քանի որ 7805 կարգավորիչը միացված է 7812 կարգավորիչի ելքին, ընդհանուր հոսանքը պետք է սահմանափակվի 1 ամպով 7812 կարգավորիչի միջոցով: Regանկալի է, որ այս կարգավորիչները տեղադրվեն համապատասխան ջերմատաքսի վրա:

I²C Bus. Չնայած Flowcode- ը թույլ է տալիս վերահսկել ապարատային I²C- ը, ես որոշեցի օգտագործել ծրագրային I²C կոնֆիգուրացիան: Սա թույլ է տալիս ավելի մեծ ճկունություն տալ կապի առաջադրանքներին: Չնայած ավելի դանդաղ (50 կՀց), այն, այնուամենայնիվ, հիանալի է կատարում ՝ համեմատած ապարատային I²C ավտոբուսի հետ: Եվ DS1307- ը, և 24LC256- ը միացված են այս I²C ավտոբուսին:

Իրական ժամանակի ժամացույց (DS1307). Գործարկման ժամանակ RTC գրանցամատյանը 0 և 7 կարդացվում է `որոշելու համար, արդյոք այն պարունակում է վավեր ժամանակ և կազմաձևման տվյալներ: Կարգավորումը ճիշտ կատարելուց հետո RTC- ի ժամանակը կարդացվում է և ժամանակը բեռնվում է PIC- ում: Սա միակ ժամանակն է, երբ ժամանակը կարդում են RTC- ից: Գործարկումից հետո RTC- ի 7 -րդ փինում կլինի 1 Հց զարկերակ: Այս 1 Հց ազդանշանը միացված է RB0/INT0- ին, և ընդհատվող ծառայության ռեժիմի միջոցով PIC- ի ժամանակը թարմացվում է ամեն վայրկյան:

Արտաքին EEPROM. Programրագրի բոլոր տվյալները և ընտրանքները պահվում են արտաքին EEPROM- ում: EEPROM- ի տվյալները բեռնվում են գործարկման ժամանակ, և տվյալների պատճենը պահվում է PIC հիշողության մեջ: EEPROM- ի տվյալները թարմացվում են միայն այն ժամանակ, երբ փոխվում են ծրագրի կարգավորումները:

Dayերեկ/գիշեր սենսոր. Ստանդարտ լույսից կախված դիմադրություն (LDR) օգտագործվում է որպես /երեկ/գիշեր սենսոր: Քանի որ LDR- ները գալիս են բազմաթիվ ձևերի և տեսակների, բոլորը նույն լուսային պայմաններում տարբեր դիմադրության արժեքներով, ես օգտագործել եմ անալոգային մուտքային ալիք `լուսավորության մակարդակը կարդալու համար: Օրվա և գիշերվա մակարդակները կարգավորելի են և թույլ են տալիս որոշակի ճկունություն ունենալ տարբեր տվիչների համար: Որոշ հիստերեզներ ստեղծելու համար կարող են սահմանվել Dayերեկի և գիշերվա անհատական արժեքները: Իրավիճակը կփոխվի միայն այն դեպքում, երբ լուսավորության մակարդակը belowերեկից ցածր է կամ Գիշերվա սահմանային կետերից բարձր, ավելի քան 60 վայրկյան:

LCD էկրան. Օգտագործվում է 4 տող, 16 նիշ ցուցադրում, քանի որ բոլոր տվյալները հնարավոր չէ ցուցադրել 2 տողանոց էկրանին: Նախագիծը ներառում է որոշ անհատականացված նիշեր, որոնք սահմանված են LCD_Custom_Char մակրոյում:

Օժանդակ մուտքեր. Երկու մուտքերն էլ բուֆերացված են NPN տրանզիստորով: +12v և 0V կան նաև միակցիչի վրա, ինչը թույլ է տալիս ավելի ճկուն միացումներ կատարել արտաքին կապերին: Որպես օրինակ, հեռակառավարման ընդունիչը կարող է միացվել մատակարարմանը:

Բոլոր ելքերը էլեկտրականորեն մեկուսացված են միացումից 12 Վ ռելեի միջոցով: Օգտագործված ռելեներ, գնահատվում են 250 Վ լարման համար, 10 ամպեր: Սովորաբար բաց և սովորաբար փակ կոնտակտները դուրս են բերվում տերմինալներ:

Ստեղնաշար. Օգտագործված ստեղնաշարը 3 x 4 մատրիցային ստեղնաշար է և միացված է PORTB: 2..7:

Քայլ 4: Ստեղնաշարի ընդհատումներ

Ստեղնաշարի ընդհատումներ
Ստեղնաշարի ընդհատումներ
Ստեղնաշարի ընդհատումներ
Ստեղնաշարի ընդհատումներ
Ստեղնաշարի ընդհատումներ
Ստեղնաշարի ընդհատումներ

Ես ուզում էի օգտագործել PORTB- ի ընդհատման փոփոխության ընդհատումը ցանկացած առանցքային մամուլի վրա: Դրա համար Flowcode- ում պետք է ստեղծվեր Պատվերով ընդհատում `ապահովելու համար, որ PORTB- ի ուղղությունն ու տվյալները ճիշտ տեղադրվեն ստեղնաշարի յուրաքանչյուր ընդհատումից առաջ և հետո: Ամեն անգամ, երբ կոճակը սեղմվում կամ բաց է թողնվում, ընդհատում է ստեղծվում: Ընդհատման ռեժիմը պատասխանում է միայն այն ժամանակ, երբ սեղմվում է բանալին:

ՊԱՇՏՈՆԱԿԱՆ ԽԱRԱՈՈԹՅՈՆ

Միացնել կոդը

portb = 0b00001110; trisb = 0b11110001;

intcon. RBIE = 1;

intcon2. RBIP = 1;

intcon2. RBPU = 1;

rcon. IPEN = 0;

Կառավարիչի ծածկագիր

եթե (intcon & (1 << RBIF))

{FCM_%n ();

portb = 0b00001110;

trisb = 0b11110001;

wreg = portb;

clear_bit (intcon, RBIF);

}

Հայտնաբերված խնդիրները

Ընդհատման ընթացքում ընդհատման ծառայության ռեժիմը պետք է NO պայմաններով զանգի ցանկացած այլ մակրո, որը կարող է օգտագործվել ծրագրի մնացած մասում: Սա, ի վերջո, կհանգեցնի կույտի գերլարման խնդիրների, քանի որ ընդհատումը կարող է առաջանալ միևնույն ժամանակ, երբ հիմնական ծրագիրը նույնպես գտնվում է նույն ենթածրագրում: Սա նույնպես նույնականացվում է որպես ԼՐԱ ERՈR ՍԽԱԼ Flowcode- ով, երբ ծածկագիրը կազմվում է:

GetKeyPadNumber- ի տակ գտնվող Ստեղնաշարի Պատվերով ծածկագրում կա այդպիսի զանգ դեպի Delay_us մակրո, որը կհանգեցնի կույտի արտահոսքի: Դա հաղթահարելու համար ես հեռացրել եմ Delay_us (10) հրամանը և այն փոխարինել «wreg = porta» 25 տողով: հրամաններ. Այս հրամանը կարդում է PORTA- ն և դրա արժեքը տեղադրում է W գրանցամատյանում ՝ միայն որոշակի ուշացում ստանալու համար: Այս հրամանը կկազմվի մեկ հրահանգի, որը նման է assembler movf porta- ին, 0. Նախագծում օգտագործվող 10 ՄՀց ժամացույցի համար յուրաքանչյուր հրահանգ կլինի 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: Usingամաչափի օգտագործումը

Usingամաչափի օգտագործումը
Usingամաչափի օգտագործումը
Usingամաչափի օգտագործումը
Usingամաչափի օգտագործումը
Usingամաչափի օգտագործումը
Usingամաչափի օգտագործումը

Բոլոր էկրանները ստեղծվել են ՝ նշելու համար օգտագործողի համար անհրաժեշտ բոլոր տեղեկությունները ՝ պարամետրերում արագ փոփոխություններ կատարելու համար: 4 -րդ տողն օգտագործվում է ընտրացանկերի և ծրագրի ընտրանքների միջոցով նավարկության հարցում օգնելու համար: Նորմալ աշխատանքի ընթացքում ընդհանուր առմամբ հասանելի է 22 էկրան:

Տող 1: Timeամանակը և կարգավիճակը

Ույց է տալիս ընթացիկ օրն ու ժամը, որին հաջորդում են կարգավիճակի պատկերակները.

A - Նշում է, որ Aux Input A- ն գործարկվել է, և Aux Input A ժամաչափը աշխատում է:

B - ցույց է տալիս, որ Aux Input B- ն գործարկվել է, և Aux Input B ժամաչափը աշխատում է:

C - Նշում է, որ Aux Output C- ը միացված է:

D - Նշում է, որ Aux Output D- ը միացված է:

} - Օր/գիշեր սենսորի կարգավիճակ: Եթե առկա է, նշանակում է, որ գիշեր է:

Տող 2. Programրագրի արդյունքներ

Shույց է տալիս տարբեր ծրագրերով միացված ալիքները: Ալիքները ցուցադրվում են իրենց ելքային համարներով, իսկ «-»-ն նշում է, որ կոնկրետ ելքը միացված չէ: «Programրագրի արդյունքներն ակտիվ են» բաժնում անջատված ալիքները դեռ կցուցադրվեն այստեղ, սակայն իրական ելքերը չեն սահմանվի:

Տող 3. Իրական արդյունքներ

Shույց է տալիս, թե որ ալիքներն են միացված տարբեր ծրագրերի, Aux B & A մուտքագրումների կամ օգտագործողի կողմից սահմանված ձեռքով ելքերի միջոցով: Սեղմելով 0 ՝ ձեռքով ակտիվացված բոլոր ելքերը կվերադարձվեն անջատված, և կվերակայվեն Aux Output A & B ժամաչափերը:

ԳԻ 4 4. Մենյու և հիմնական ընտրանքներ (բոլոր ընտրացանկերում)

Նշում է «*» և «#» ստեղների գործառույթը:

Կենտրոնական մասը ցույց է տալիս, թե որ թվային ստեղներն (0-9) ակտիվ են ընտրված էկրանի համար:

Aux Input A & B- ի մուտքի կարգավիճակը ցուցադրվում է նաև Բաց կամ Փակիչի անջատիչի պատկերակի միջոցով:

Ելքները կարող են ձեռքով միացվել/անջատվել `սեղմելով ստեղնաշարի համապատասխան ստեղնը:

Theանկերի ամբողջ ընթացքում Star և Hash ստեղները օգտագործվում են ծրագրի տարբեր ընտրանքներում նավարկելու համար: Ընտրանքները սահմանելու համար օգտագործվում են 0-9 ստեղները: Այն դեպքում, երբ մեկ էկրանին կամ ծրագրավորման ընտրացանկում առկա են բազմաթիվ տարբերակներ, Hash ստեղնը օգտագործվում է տարբեր ընտրանքներ անցնելու համար: Ընթացիկ ընտրված տարբերակը միշտ նշվելու է էկրանի ձախ կողմում գտնվող «>» նշանով:

0-9 Մուտքագրեք ժամանակի արժեքներ

1-8 Փոխել ալիքի ընտրությունը

14 36 Stepրագրեր, 1 քայլ հետ, 4 քայլ հետ 10 ծրագիր, 3 քայլ առաջ, 6 քայլ առաջ 10

ծրագրերը

1-7 Սահմանեք շաբաթվա օրերը: 1 = կիրակի, 2 = երկուշաբթի, 3 = երեքշաբթի, 4 = չորեքշաբթի, 5 = հինգշաբթի, 6 = ուրբաթ, 7 = շաբաթ

0 Հիմնական էկրանին ջնջեք բոլոր ձեռքով անտեսումները և A և Input B ժամաչափերը: Այլ ընտրացանկերում ՝ փոփոխություններ

ընտրված ընտրանքներ

# Հիմնական էկրանին կանջատվեն բոլոր ձեռքով անտեսումները, A և Input B ժամաչափերը և Outրագրի ելքերը, մինչև

հաջորդ իրադարձությունը:

* և 1 Վերագործարկեք ժամանակաչափը

* և 2 Մաքրել բոլոր ծրագրերն ու ընտրանքները, վերականգնել կարգավորումները լռելյայն:

* և 3 timամաչափը միացրեք սպասման մեջ: Timամաչափը նորից միացնելու համար սեղմեք ցանկացած ստեղն:

Timeանկացած ժամանակային արժեքի սխալ մուտքագրումների ժամանակ LCD լուսավորությունը 5 անգամ կթարթվի `սխալ նշելու համար: Միևնույն ժամանակ, բզզոցը կհնչի: Ելք և հաջորդ հրամանները կաշխատեն միայն այն ժամանակ, երբ ընթացիկ մուտքը ճիշտ է:

LCD լուսավորություն

Սկզբնական գործարկման ժամանակ LCD լուսարձակը կմիացվի 3 րոպե, եթե.

- Սարքավորման խափանում կա (EEPROM կամ RTC- ը չի գտնվել)

- Timeամանակը նշված չէ RTC- ում

LCD լուսարձակը կրկին միանալու է 3 րոպե ստեղնաշարի ցանկացած օգտագործողի մուտքի վրա: Եթե LCD լուսարձակը անջատված է, ստեղնաշարի ցանկացած հրաման առաջին հերթին կմիացնի LCD լուսարձակը և անտեսում է սեղմված ստեղնը: Սա երաշխավորում է, որ օգտագործողը կկարողանա կարդալ LCD էկրանը նախքան ստեղնաշարի օգտագործումը: LCD լուսարձակը նույնպես կմիացվի 5 վայրկյան, եթե Aux Input A կամ Aux Input B միացված լինի:

Քայլ 6: uանկի էկրանի նկարահանումներ

Էկրանի նկարահանումներ
Էկրանի նկարահանումներ
Էկրանի նկարահանումներ
Էկրանի նկարահանումներ
Էկրանի նկարահանումներ
Էկրանի նկարահանումներ

Օգտագործելով ստեղնաշարը, ընտրանքներից յուրաքանչյուրը կարող է ծրագրավորվել հեշտությամբ: Պատկերները տալիս են որոշ տեղեկություններ այն մասին, թե ինչ է անում յուրաքանչյուր էկրան:

Քայլ 7: Համակարգի նախագծում

Համակարգի նախագծում
Համակարգի նախագծում

Բոլոր մշակումներն ու փորձարկումները կատարվել են սեղանի վրա: Նայելով համակարգի բոլոր հատվածներին ՝ ես համակարգը քանդեցի երեք մոդուլով: Այս որոշումը հիմնականում պայմանավորված էր Eagle- ի անվճար տարբերակի PCB չափի սահմանափակումներով (80 x 100 մմ):

Մոդուլ 1 - Էներգամատակարարում

Մոդուլ 2 - պրոցեսորի տախտակ

Մոդուլ 3 - Ռելեային տախտակ

Ես որոշեցի, որ բոլոր բաղադրիչները պետք է հեշտությամբ ձեռք բերվեն, և որ ես չեմ ցանկանում օգտագործել մակերևույթի վրա ամրացնող բաղադրիչներ:

Եկեք անցնենք դրանցից յուրաքանչյուրի միջով:

Քայլ 8: Էներգամատակարարում

Էներգամատակարարում
Էներգամատակարարում
Էներգամատակարարում
Էներգամատակարարում
Էներգամատակարարում
Էներգամատակարարում
Էներգամատակարարում
Էներգամատակարարում

Էլեկտրաէներգիայի մատակարարումը ուղիղ առաջ է, և մատակարարեք պրոցեսորի և ռելեի տախտակները 12 Վ և 5 Վ լարման միջոցով:

Ես տեղադրեցի լարման կարգավորիչները պատշաճ ջերմային լվացարանների վրա, ինչպես նաև օգտագործեցի գերագնահատված կոնդենսատորներ մատակարարման համար:

Քայլ 9: Պրոցեսորի խորհուրդ

Պրոցեսորի խորհուրդ
Պրոցեսորի խորհուրդ
Պրոցեսորի խորհուրդ
Պրոցեսորի խորհուրդ
Պրոցեսորի խորհուրդ
Պրոցեսորի խորհուրդ
Պրոցեսորի խորհուրդ
Պրոցեսորի խորհուրդ

Բոլոր բաղադրիչները, բացառությամբ LCD էկրանի, ստեղնաշարի և ռելեներ տեղադրված են պրոցեսորի տախտակին:

Տերմինալային բլոկները ավելացվել են մատակարարման, թվային երկու մուտքերի և լույսի ցուցիչի միջև կապերը պարզեցնելու համար:

Վերնագրի կապումներն/վարդակները ապահովում են LCD էկրանին և ստեղնաշարին հեշտ միացումներ:

Ռելեների ելքերի համար ես օգտագործել եմ ULN2803- ը: Այն արդեն պարունակում է բոլոր անհրաժեշտ շարժիչային դիմադրիչներ և հետադարձ դիոդներ: Սա ապահովեց, որ պրոցեսորի խորհուրդը դեռ կարող է կատարվել Eagle- ի անվճար տարբերակի միջոցով: Ռելեները միացված են երկու ULN2803- ին: Ներքևի ULN2803- ն օգտագործվում է 8 ելքերի համար, իսկ վերևի ULN2803- ը `երկու օժանդակ ելքերի համար: Յուրաքանչյուր օժանդակ ելք ունի չորս տրանզիստոր: Ռելեների հետ կապը կատարվում է նաև վերնագրի կապում/վարդակների միջոցով:

PIC 18F4520- ը տեղադրված էր ծրագրավորման վարդակից, որը թույլ էր տալիս հեշտ ծրագրավորում կատարել PicKit 3 ծրագրավորողի միջոցով:

ՆՇՈՒՄ:

Դուք կնկատեք, որ տախտակը պարունակում է լրացուցիչ 8 փին IC: Վերին IC- ն PIC 12F675 է և միացված է թվային մուտքին: Սա ավելացվել է PCB- ի նախագծման ժամանակ: Սա հեշտացնում է թվային մուտքի նախնական մշակումը: Իմ դիմումի մեջ թվային մուտքերից մեկը միացված է իմ ազդանշանային համակարգին: Եթե ահազանգը հնչի, իմ տանը որոշակի լույսեր են վառվում: Ահազանգման համակարգս զինելն ու զինաթափելը տարբեր ազդանշաններ է տալիս ազդանշանի վրա: Օգտագործելով PIC 12F675- ը, ես այժմ կարող եմ տարբերակել ձեռքը/զինաթափումը և իսկական ահազանգը: 12F675- ը նաև տեղադրված է ծրագրավորման վարդակից:

Ես նաև ապահովեցի I2C նավահանգստի վերնագրի կապի/վարդակի միջոցով: Սա հետագայում ավելի օգտակար կլինի ռելեի տախտակների հետ:

Տախտակը պարունակում է մի քանի ցատկողներ, որոնք պետք է զոդել նախքան IC վարդակները տեղադրելը:

Քայլ 10: Flowcode- ի եզրակացություն

Flowcode Եզրակացություն
Flowcode Եզրակացություն
Flowcode Եզրակացություն
Flowcode Եզրակացություն
Flowcode Եզրակացություն
Flowcode Եզրակացություն

Քանի որ ես սովոր եմ աշխատել հավաքների գրանցման մակարդակի վրա, երբեմն բարդ և վրդովեցուցիչ էր օգտագործել բաղադրիչ մակրոները: Դա հիմնականում պայմանավորված էր 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 փոխանցման տախտակ

CPU- ի խորհուրդն արդեն ունի 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: Ընտրովի ՌԴ հղում

Ընտրովի ՌԴ հղում
Ընտրովի ՌԴ հղում
Ընտրովի ՌԴ հղում
Ընտրովի ՌԴ հղում
Ընտրովի ՌԴ հղում
Ընտրովի ՌԴ հղում

Completionրագրի ավարտից հետո ես շուտով հասկացա, որ ես պետք է շատ 220 Վ լարման հոսանք ձգեմ ժմչփին: Ես մշակեցի ՌԴ կապ ՝ օգտագործելով 315 ՄՀց ստանդարտ մոդուլներ, որոնք թույլ էին տալիս ժմչփը տեղադրել պահարանի ներսում, իսկ ռելեական տախտակները ՝ տանիքի ներսում, մոտ 220 Վ լարման բոլոր լարերին:

Հղումը օգտագործում է AtMega328P, որն աշխատում է 16 ՄՀց հաճախականությամբ: Ինչպես հաղորդիչի, այնպես էլ ստացողի համար ծրագրակազմը նույնն է, և ռեժիմն ընտրվում է մինի թռիչքի միջոցով:

Հաղորդիչ

Հաղորդիչը պարզապես միացված է CPU I2C պորտին: Լրացուցիչ տեղադրում չի պահանջվում, քանի որ AtMega328P- ն լսում է նույն տվյալները, ինչ I2C ռելեի տախտակները:

Տվյալները թարմացվում են վայրկյանում մեկ անգամ I2C նավահանգստում, և հաղորդիչն այս տեղեկատվությունն ուղարկում է ՌԴ կապով: Եթե հաղորդիչը I2C- ի տվյալները չընդունի մոտ 30 վայրկյան, հաղորդիչը շարունակաբար կփոխանցի տվյալներ `բոլոր ռելեներ անջատող ընդունիչին անջատելու համար:

Հաղորդիչի մոդուլի հզորությունը կարող է ընտրվել 12 Վ -ից մինչև 5 Վ լարման միջև ՝ ԱՀ -ի տախտակին տեղադրված մինի թռիչքով: Ես սնուցում եմ իմ հաղորդիչը 12 Վ լարման միջոցով:

Ընդունիչ

Ստացողը լսում է հաղորդիչի կոդավորված տվյալները և տվյալները տեղադրում I2C նավահանգստի վրա: Ռելեային տախտակը պարզապես միանում է այս պորտին և աշխատում է այնպես, ինչպես միացված էր պրոցեսորի տախտակին:

Եթե ստացողը 30 վայրկյան վավերական տվյալներ չի ստանում, ստացողը շարունակաբար տվյալներ կուղարկի I2C նավահանգստին ՝ ռելեային տախտակների բոլոր ռելեներ անջատելու համար:

Սխեմաներ

Մի օր, եթե դրա պահանջարկը լինի: Arduino- ի էսքիզը պարունակում է բոլոր անհրաժեշտ տեղեկությունները `առանց շղթայի դիագրամ կառուցելու համար:

Միջակայք

Իմ տեղադրման մեջ հաղորդիչն ու ընդունիչը գտնվում են մոտ 10 մետր հեռավորության վրա: Theամաչափը պահարանի ներսում է, իսկ ռելեային միավորը `առաստաղի վերևում:

Քայլ 13: Վերջնական արտադրանք

Վերջնական արտադրանք
Վերջնական արտադրանք
Վերջնական արտադրանք
Վերջնական արտադրանք
Վերջնական արտադրանք
Վերջնական արտադրանք

Հիմնական միավորը տեղադրված էր հին նախագծային տուփի մեջ: Այն պարունակում է հետևյալը.

- 220V/12V տրանսֆորմատոր

- Էներգամատակարարման խորհուրդ

- պրոցեսորի խորհուրդ

- LCD էկրան

- Ստեղնաշար

- ՌԴ կապի հաղորդիչ

- Տնային հեռակառավարման ընդունիչի լրացուցիչ միավոր, որը հնարավորություն կտա միացնել/անջատել լույսերը հեռակառավարման վահանակի միջոցով

Ռելեային միավորը բաղկացած է հետևյալից.

- 220V/12V տրանսֆորմատոր

- Էներգամատակարարման խորհուրդ

- ՌԴ կապի ընդունիչ

- 2 x I2C փոխանցման տախտակ

Բոլոր տախտակները նախագծվել են նույն չափսերով, ինչը դյուրին է դնում դրանք միմյանց վրա 3 մմ հեռավորությամբ:

Խորհուրդ ենք տալիս: