Բովանդակություն:
- Քայլ 1. Projectրագրի նպատակները
- Քայլ 2. Programրագրավորման ճկունություն
- Քայլ 3: Սարքավորումներ
- Քայլ 4: Ստեղնաշարի ընդհատումներ
- Քայլ 5: Usingամաչափի օգտագործումը
- Քայլ 6: uանկի էկրանի նկարահանումներ
- Քայլ 7: Համակարգի նախագծում
- Քայլ 8: Էներգամատակարարում
- Քայլ 9: Պրոցեսորի խորհուրդ
- Քայլ 10: Flowcode- ի եզրակացություն
- Քայլ 11. Ընտրովի I2C փոխանցման տախտակ
- Քայլ 12: Ընտրովի ՌԴ հղում
- Քայլ 13: Վերջնական արտադրանք
Video: 8 ալիքի ծրագրավորվող ժմչփ ՝ 13 քայլ
2024 Հեղինակ: John Day | [email protected]. Վերջին փոփոխված: 2024-01-30 09:50
Ներածություն
Ես 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րագրավորման ճկունություն
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ամաչափի օգտագործումը
Բոլոր էկրանները ստեղծվել են ՝ նշելու համար օգտագործողի համար անհրաժեշտ բոլոր տեղեկությունները ՝ պարամետրերում արագ փոփոխություններ կատարելու համար: 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- ի ծրագրավորման կառուցվածքի իմ անտեղյակությամբ: Միակ տեղերը, որտեղ ես օգտագործել եմ C կամ ASM բլոկները, այն էր, որ ելքերը միացնեին ընդհատվող ռեժիմի ներսում, իսկ Do_KeyPressed ռեժիմում `անջատել/միացնել ստեղնաշարի ընդհատումը: PIC- ը տեղադրվում է նաև SLEEP- ի միջոցով ՝ օգտագործելով ASM բլոկը, երբ EEPROM- ը կամ RTC- ն չեն գտնվել:
Տարբեր I²C հրամանների օգտագործման շուրջ օգնությունը, բոլորը ստացվել են Flowcode Օգնության ֆայլերից: Անհրաժեշտ է հստակ իմանալ, թե ինչպես են աշխատում տարբեր I²C սարքերը, նախքան հրամանները հաջողությամբ գործածելը: Շղթայի նախագծումը պահանջում է, որ դիզայները ունենա համապատասխան բոլոր տվյալների թերթերը: Սա Flowcode- ի թերություն չէ:
Flowcode- ն իսկապես դիմադրեց փորձությանը, և խորհուրդ է տրվում այն անձանց համար, ովքեր ցանկանում են սկսել աշխատել միկրոչիպերի միկրոպրոցեսորների տեսականու հետ:
PIC- ի համար հոսքի կոդերի ծրագրավորումը և կազմաձևումը սահմանվել են ըստ նկարների
Քայլ 11. Ընտրովի 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 մմ հեռավորությամբ:
Խորհուրդ ենք տալիս:
Ձեռքերի լվացման ժմչփ; Մաքուր տարբերակ ՝ 6 քայլ
Ձեռքերի լվացման ժմչփ; Ավելի մաքուր տարբերակ. Պետք է կանխել ոչ միայն կորոնավիրուսը, այլև բոլոր հիվանդությունները: Ըստ հիվանդությունների և կանխարգելման կենտրոնների ՝ կա 2.8 միլիոն վարակ և 35000 մահ մահվան բակտերիաների և սնկերի պատճառով: Սա ցույց է տալիս, որ մարդիկ պետք է ձեռքերը լվացնեն
LED Chaser էլեկտրոնային սխեման, օգտագործելով 555 ժմչփ IC: 20 քայլ
LED Chaser էլեկտրոնային սխեման, օգտագործելով 555 ժմչփ IC: LED հետապնդող սխեմաներն ամենատարածված օգտագործվող ինտեգրված էլեկտրոնային սխեմաներն են: Նրանք անչափ օգտագործվում են տարբեր ծրագրերում, ինչպիսիք են Ազդանշանները, Words Formation համակարգը, ցուցադրման համակարգերը և այլն: 555 ժամաչափի IC- ն կազմաձևված է անկայուն վիճակում: Թ
Լազերային պրոյեկցիոն Pomodoro ժմչփ ՝ 5 քայլ
Լազերային պրոյեկցիոն Pomodoro ժմչփ. Բարև բոլորին իրենց տներում, փակման ժամանակ: Հուսով եմ, որ այս հրահանգը կօգնի ձեզ հաղթահարել այս օրերը: Այսպիսով, ես օգտագործել եմ պոմոդորոյի տեխնիկան տանը սովորելու համար: Բոլորի համար, ովքեր չգիտեն, թե ինչ է պոմոդորոյի տեխնիկան, դա տեխնիկա է, որը
PCB UV LED զանգվածի ժմչփ ՝ 3 քայլ
PCB UV LED զանգվածի ժմչփ. Դա մի տեսակ նախագիծ է, որը երկար ժամանակ տևեց, չնայած իր պարզությանը: Դա պայմանավորված է նրանով, որ ես երկար ժամանակ օգտագործել եմ ուլտրամանուշակագույն լյումինեսցենտ լամպի տուփ ՝ տպագիր տպատախտակները պատրաստելու համար, և ես միշտ մտածում էի, որ մեկ ուրիշը ՝ ուլտրամանուշակագույն լուսադիոդների օգնությամբ, միացնում է
Raspberry Pi 3 ժմչփ սերվո շարժիչով `5 քայլ
Raspberry Pi 3 ժամաչափ Servo Motor- ով. Այս կառուցման նպատակն է ստեղծել ավտոմատ ժմչփ `սահմանված ժամանակով, օգտագործելով Servo- ն: Այն օգտագործում է ազնվամորի pi 3 -ը որպես համակարգիչ և Python- ը ՝ ծածկագրի համար