Мазмуну:

8 каналдын программалуу таймери: 13 кадам
8 каналдын программалуу таймери: 13 кадам

Video: 8 каналдын программалуу таймери: 13 кадам

Video: 8 каналдын программалуу таймери: 13 кадам
Video: Самооценка. Как повысить самооценку. Уверенность в себе. Как повысить самооценку НЛП 2024, Июль
Anonim
8 каналдын программалуу таймери
8 каналдын программалуу таймери
8 каналдын программалуу таймери
8 каналдын программалуу таймери
8 каналдын программалуу таймери
8 каналдын программалуу таймери

Киришүү

Мен 1993 -жылдан бери Microchipдин PIC микроконтроллеринин диапазонун колдонуп келем жана Microchip MPLab IDEди колдонуп, бардык программалоону ассемблер тилинде жасадым. Менин долбоорлорум жөнөкөй светофорлордон жана жаркыраган светодиоддордон, R/C моделдери үчүн USB джойстик интерфейстерине жана тармакта колдонулган коммутатордук анализаторлорго чейин. Өнүгүү көп күндөрдү, кээде миңдеген линияларды чогултуучу кодду талап кылды.

Matrix Multimedia Flowcode 4 Professional'ди алгандан кийин, мен программалык камсыздоого абдан ишенчүмүн. Ишенүү өтө жеңил көрүндү. Мен сынап көрүүнү чечтим жана ар кандай компоненттердин макросун сынап көрдүм, баары ийгиликтүү болду. Flowcode колдонуунун эң жакшы жагы жөнөкөй долбоорлорду бир эле түндүн ичинде коддоо мүмкүн болгон. I²C жана DS1307 реалдуу убакыт сааты менен ойногондон кийин, Flowcode аркылуу 8 каналдын таймерин иштеп чыгууну чечтим. Чакан жана оңой проект болбогондуктан, бул өзүмө Flowcode үйрөтүү үчүн эң сонун долбоор болот деп ишенгем.

Микропроцессорду жана башка компоненттерди тандоо

Киргизүү/чыгаруу төөнөгүчтөрүнүн санына байланыштуу, 40 пиндик түзүлүшкө муктаж болору айкын болгон. PIC 18F4520 негизинен 32К программалык эс тутуму жана 1536 байт маалымат эс тутуму үчүн тандалган. Колдонулган бардык компоненттер стандарттуу тешик түзмөктөр болуп саналат, эгер керек болсо Vero бортундагы схеманы курууга мүмкүндүк берет. Бул ошондой эле нан тактасында өнүктүрүүгө жардам берди.

1 -кадам: Долбоордун максаттары

Долбоордун максаттары
Долбоордун максаттары

Максаттар

- Так убакыт сактоо, батарейканын камдык көчүрмөсү менен.

- Бардык программалар жана маалыматтар, бийликти жоготкондон кийин деле сакталып калышы керек.

- Жөнөкөй колдонуучу интерфейси.

- Программалоо ийкемдүүлүгү.

Убакыт сактоо

Электр энергиясы үзгүлтүккө учураган аймакта жашагандыктан, электр линияларынан алынган 50/60Гц нормасы так убакытты сактоо үчүн жетишсиз болот. А реалдуу убакыт сааты абдан маанилүү болчу, жана бир нече RTC чиптерин текшергенден кийин, мен анын осцилляторунун жана батарейканын резервдик конфигурациясынан улам DS1307 боюнча чечим кабыл алдым. Убакытты так сактоо DS1307ге туташкан 32.768 кГц кристаллынын жардамы менен алынган. Тактык кристаллдардын 4 түрдүү маркасын колдонуп, 2 айлык сыноо мөөнөтүнүн ичинде 2 секунда ичинде болгон.

Маалыматты сактоо

Таймер программасынын бардык маалыматтары, электр энергиясы үзгүлтүккө учураганда да сакталышы керек. 100гө чейин ар кандай программалар жана ар кандай конфигурация маалыматтары менен, PICтин борттогу EEPROMынын 256 байты жетишерлик чоң болбой турганы белгилүү болду. 24LC256 I²C EEPROM бардык программалоо маалыматын сактоо үчүн колдонулат.

Жөнөкөй колдонуучу интерфейси

Колдонуучу интерфейси 2 гана нерседен турат, 16 х 4 линиядагы LCD дисплейи жана 4 х 3 баскычтобу. Бардык программалоо бир нече кнопканы басуу менен жасалышы мүмкүн. Интерфейске толуктоолор - бул үндүү пьезо сигнал, жана визуалдык жаркылдаган LCD арткы жарык.

2 -кадам: Программалоо ийкемдүүлүгү

Программалоо ийкемдүүлүгү
Программалоо ийкемдүүлүгү

Программанын ийкемдүүлүгүн камсыз кылуу үчүн, таймерде 100 программа бар, аларды жекече коюуга болот. Ар бир программа үчүн Кирүү убактысы, Өчүрүү убактысы, Чыгаруу каналдары жана Жуманын күнү белгилениши мүмкүн. Ар бир программанын үч режими бар:

- Авто: Убакыт, Өчүрүү убактысы, Чыгаруу каналы жана жуманын күнү белгиленет.

- Өчүк: Жекече программа орнотууларды жок кылбастан өчүрүлүшү мүмкүн. Программаны кайра иштетүү үчүн, жөн гана башка режимди тандоо.

- Күндүз/Түн: Өз убагында, Өчүрүү убактысы, Чыгаруу каналы жана жуманын күнү белгиленет. Авто режиминдей эле иштейт, бирок болот

караңгы болгондо гана чыгууларды күйгүзүү жана өчүрүү убактысынын ортосунда күйгүзүңүз. Бул күндүз/түндү толук башкарууга мүмкүнчүлүк берет

күндүн батышында жарыкты күйгүзүү жана күн чыкканда өчүрүү үчүн кошумча ийкемдүүлүк.

Мисал 1: Жарыкты саат 20: 00дөн кийин күйгүзүп, күн чыкканда жарыкты өчүрөт.

Качан: 20:00, Өчүрүү: 12: 00, Мисал 2: Күн батканда жарыкты күйгүзүп, 23.00дө жарыкты өчүрөт.

Качан: 12:00

Өчүрүү: 23:00

Мисал 3: Күн батканда жарыкты күйгүзөт, ал эми күн чыкканда жарыкты өчүрөт.

Качан: 12:01

Өчүрүү: 12:00

Кошумча мүмкүнчүлүктөр бар, бардыгы 100 иштетүү/өчүрүү программасынан көз карандысыз иштейт.

Программалык каналдар активдүү: Бир нече программаны өчүрүүнүн ордуна, жеке чыгуучу каналдар программаларды өзгөртпөстөн өчүрүлүшү мүмкүн.

Көмөкчү киргизүү: Белгилүү бир убакыт үчүн белгилүү бир чыгуу каналдарын күйгүзүү үчүн эки санариптик кирүү бар. Ал, мисалы, үйгө түн бир оокумда келгенде, кээ бир жарыкты күйгүзүү үчүн, пульттун баскычы басылганда, же үй сигнализациясы иштей баштаганда, башка жарыктарды кошуу үчүн колдонулушу мүмкүн.

Көмөкчү жыйынтыктар: Эки кошумча чыгаруу (8 чыгаруу каналынан тышкары) бар. Алар белгилүү бир чыгуу каналдары же санариптик кирүүлөр менен күйгүзүлүшү үчүн программаланышы мүмкүн. Менин инсталляциямда, менде 24В иштөөчү сугатымды көзөмөлдөгөн 6-8 чыгышы бар. Мен 6-8 каналдарды жардамчы чыгуулардын бирин иштетүү үчүн, сугат системасы үчүн 24В электр энергиясын кошуу үчүн колдоном.

Кол менен күйгүзүү: Негизги экранда болгондо, 1-8 баскычтары каналдарды кол менен күйгүзүү же өчүрүү үчүн колдонулушу мүмкүн.

3 -кадам: Аппараттык

Аппараттык
Аппараттык

Электр энергиясы менен камсыздоо: Электр менен камсыздоо түзөткүчтөн, тегиздөөчү конденсатордон жана ашыкча жүктөөдөн коргоо үчүн 1 амперлик сактандыргычтан турат. Бул камсыздоо андан кийин 7812 жана 7805 регулятору менен жөнгө салынат. 12V камсыздоо реле айдоо үчүн колдонулат, жана башка бардык схемалар 5V булагынан иштейт. 7805 регулятору 7812 жөндөгүчүнүн чыгышына туташкандыктан, жалпы ток 7812 жөндөгүч аркылуу 1 ампер менен чектелиши керек. Бул жөндөгүчтөрдү ылайыктуу жылыткычка орнотуу максатка ылайыктуу.

I²C Bus: Flowcode I²C аппараттык көзөмөлүнө мүмкүнчүлүк берсе да, мен I²C программалык камсыздоону колдонууну чечтим. Бул пин тапшырмалардын ийкемдүүлүгүнө мүмкүндүк берет. Жайыраак (50 кГц) болгонуна карабастан, ал I²C аппараттык аппаратына салыштырмалуу эң сонун иштейт. DS1307 жана 24LC256 экөө тең бул I²C автобусуна туташкан.

Реалдуу убакыт сааты (DS1307): Баштоо учурунда, 0 жана 7 RTC регистрлери жарактуу убакытты жана конфигурация маалыматын камтыганын аныктоо үчүн окулат. Орнотуу туура болгондон кийин, RTC убактысы окулат жана убакыт PICке жүктөлөт. Бул убакты РТКдан окулган жалгыз убакыт. Ишке киргенден кийин, 1 Гц импульс РТКнын 7 -пининде болот. Бул 1Гц сигнал RB0/INT0 менен туташып турат жана үзгүлтүккө учуроо кызматы аркылуу PIC убактысы секунд сайын жаңыртылып турат.

Тышкы EEPROM: Программанын бардык маалыматтары жана параметрлери тышкы EEPROMдо сакталат. EEPROM маалыматтары ишке киргенде жүктөлөт жана маалыматтын көчүрмөсү PIC эстутумунда сакталат. EEPROM маалыматтары программанын орнотуулары өзгөртүлгөндө гана жаңыртылат.

Күндүз/Түнкү сенсор: Күндүз/Түнкү сенсор катары жарыкка көз каранды болгон стандарттык резистор (LDR) колдонулат. LDRs көптөгөн формага жана сортторго ээ болгондуктан, бардыгы бирдей жарык шартында каршылыктын ар кандай маанисине ээ, мен жарыктын деңгээлин окуу үчүн аналогдук киргизүү каналын колдондум. Күндүз жана Түнкү деңгээлдер жөнгө салынат жана ар кандай сенсорлор үчүн ийкемдүүлүккө мүмкүнчүлүк берет. Кээ бир гистерезисти орнотуу үчүн, Күндүз жана Түн үчүн жеке баалуулуктарды коюуга болот. Жарыктын деңгээли күндүздөн төмөн же Түндүн белгиленген чекиттеринен 60 секунддан ашык болсо гана өзгөрөт.

ЖК дисплей: 4 сап, 16 белгиден турган дисплей колдонулат, анткени бардык маалыматтар 2 саптуу дисплейде көрсөтүлбөйт. Долбоор LCD_Custom_Char макросунда аныкталган кээ бир ыңгайлаштырылган белгилерди камтыйт.

Көмөкчү кирүүлөр: Эки киргизүү тең NPN транзистору менен буферленген. +12v жана 0V туташтыргычыда дагы бар, бул тышкы туташууларга ийкемдүү туташууга мүмкүндүк берет. Мисал катары, алыстан башкаруучу кабыл алгычты туташтырууга болот.

Чыгыштар: Бардык чыгуулар 12В релеси аркылуу чынжырдан электрдик изоляцияланган. Колдонулган реле 250 В AC үчүн 10 амперде бааланат. Адатта ачык жана жабык контакттар терминалдарга чыгарылат.

Баскычтоп: Колдонулган баскычтоп 3 х 4 матрицалуу баскыч болуп саналат жана PORTB: 2..7 туташкан.

4 -кадам: Баскычтоптун үзгүлтүктөрү

Баскычтоп үзгүлтүктөрү
Баскычтоп үзгүлтүктөрү
Баскычтоп үзгүлтүктөрү
Баскычтоп үзгүлтүктөрү
Баскычтоп үзгүлтүктөрү
Баскычтоп үзгүлтүктөрү

Мен каалаган баскычты басканда PORTB Interrupt on Interrupt колдонууну кааладым. Бул үчүн, PORTB багытынын жана маалыматтарынын ар бир клавиатура үзүлүшүнө чейин жана андан кийин туура орнотулушун камсыз кылуу үчүн Flowcodeдо Custom Interrupt түзүлүшү керек болчу. Үзгүлтүк бир баскыч басылган сайын же чыгарылганда пайда болот. Үзүү тартиби бир баскыч басылганда гана жооп берет.

ЫЙЫК КИТЕП

Кодду иштетүү

portb = 0b00001110; trisb = 0b11110001;

intcon. RBIE = 1;

intcon2. RBIP = 1;

intcon2. RBPU = 1;

rcon. IPEN = 0;

Handler коду

эгер (intcon & (1 << RBIF))

{FCM_%n ();

portb = 0b00001110;

trisb = 0b11110001;

wreg = portb;

clear_bit (intcon, RBIF);

}

Проблемалар табылды

Үзгүлтүккө учуроодо, үзгүлтүккө учуроо кызматынын тартиби эч кандай шартта болбошу керек, программанын калган бөлүгүндө колдонулушу мүмкүн болгон башка макростарды чакыруу. Бул акыры стек толуп кетүү көйгөйлөрүнө алып келет, анткени үзгүлтүк негизги программанын ошол эле программанын ичинде болушу мүмкүн. Бул кодду түзүүдө Flowcode тарабынан ОЛУТТУУ КАТА катары да аныкталат.

GetKeyPadNumber астындагы тергичтин колдонуучунун кодунда Delay_us макросуна мындай чалуу бар, бул стек толуп кетишине алып келет. Муну жеңүү үчүн, мен Delay_us (10) буйругун алып салдым жана анын ордуна 25 сап "wreg = porta;" буйруктар. Бул буйрук PORTAны окуйт жана бир аз кечигүү үчүн, анын маанисин W реестрине киргизет. Бул буйрук монтаждоочу movf портуна окшош бир гана инструкцияга түзүлөт, 0. Долбоордо колдонулган 10 МГц саат үчүн ар бир көрсөтмө 400нс болот жана 10us кечигүү үчүн мага бул көрсөтмөлөрдүн 25и керек болчу.

3 -сүрөттүн экинчи сабына көңүл буруңуз: GetKeypadNumber Custom Code, баштапкы delay_us (10) буйругу "//" менен өчүрүлгөн. Мунун астына мен 25 "wreg = porta;" коштум. жаңы 10us кечигүүнү алууга буйрук берет. Keypad_ReadKeypadNumber ыңгайлаштырылган кодунун ичинде эч кандай макростарга чалуулар болбогондуктан, баскычтоп макросун эми үзгүлтүккө учуратуу кызматында колдонсо болот.

Белгилей кетсек, Flowcode баскычтобу жана eBlocks компоненттери кирүү линияларында стандарттык тартма каршылыктарды колдонушпайт. Анын ордуна, ал 100K түшүүчү резисторлорду колдонот. Иштеп жатканда клавиатурада кандайдыр бир тоскоолдуктардан улам, 100K каршылыгынын баары 10K менен алмаштырылган, ал эми бардык 10K каршылыгы 1K5 менен алмаштырылган. Баскычтоп 200мм диапазондо туура иштөө үчүн текшерилген.

5 -кадам: Таймерди колдонуу

Таймерди колдонуу
Таймерди колдонуу
Таймерди колдонуу
Таймерди колдонуу
Таймерди колдонуу
Таймерди колдонуу

Бардык экрандар колдонуучу жөндөөлөргө тез өзгөртүүлөрдү киргизүү үчүн бардык керектүү маалыматты көрсөтүү үчүн орнотулган. 4 -сап менюларда жана программанын параметрлеринде навигацияга жардам берүү үчүн колдонулат. Жөнөкөй иштөө учурунда жалпы 22 экран бар.

LINE 1: Убакыт жана Статус

Учурдагы күндү жана убакытты көрсөтөт, андан кийин абалдын сүрөтчөлөрү:

A - Aux Input A иштетилгенин жана Aux Input A таймеринин иштеп жатканын көрсөтөт.

B - Aux Input B иштетилгенин жана Aux Input B таймеринин иштеп жатканын көрсөтөт.

C - Aux Output C күйгүзүлгөнүн көрсөтөт.

D - Aux Output D күйгүзүлгөнүн көрсөтөт.

} - Күндүз/Түнкү сенсордун абалы. Эгер бар болсо, ал түн экенин көрсөтөт.

LINE 2: Программанын жыйынтыктары

Ар кандай программалар тарабынан иштетилген каналдарды көрсөтөт. Каналдар алардын чыгуу номерлеринде көрсөтүлөт жана “-” конкреттүү чыгаруу күйгүзүлбөгөнүн билдирет. "Программалык чыгуулар активдүү" режиминде өчүрүлгөн каналдар бул жерде дагы эле көрсөтүлөт, бирок чыныгы чыгуулар коюлбайт.

3 -сап: Реалдуу жыйынтыктар

Ар кандай программалар, Aux Inputs A & B же колдонуучу койгон кол менен чыгарылган каналдар көрсөтөт. 0 басуу кол менен иштетилген бардык чыгымдарды өчүрөт жана Aux Output A & B таймерлерин баштапкы абалга келтирет.

LINE 4: Меню жана негизги параметрлер (бардык менюларда)

"*" Жана "#" баскычтарынын функциясын көрсөтөт.

Борбордук бөлүк тандалган экран үчүн кайсы сандык баскычтардын (0-9) активдүү экенин көрсөтөт.

Aux Input A & B киргизүү абалы, ошондой эле Ачык же Жабык которуу сөлөкөтү аркылуу көрсөтүлөт.

Чыкууларды клавиатуранын тиешелүү баскычын басып кол менен күйгүзүүгө/өчүрүүгө болот.

Меню бою, Star жана Hash баскычтары программанын ар кандай варианттарын чабыттоо үчүн колдонулат. Параметрлерди коюу үчүн 0-9 баскычтары колдонулат. Бир экранда же программалоо менюсунда бир нече варианттар бар болгон жерде, Хэш баскычы ар кандай параметрлерди басуу үчүн колдонулат. Учурдагы тандалган параметр ар дайым экрандын сол жагындагы ">" белгиси менен көрсөтүлөт.

0-9 Убакыт маанилерин киргизиңиз

1-8 Канал тандоосун өзгөртүү

14 36 Программалар аркылуу кадам, 1 кадам артка, 4 кадам артка 10 программа, 3 кадам алдыга, 6 кадам алдыга 10

программалар

1-7 Жуманын күндөрүн коюу. 1 = Жекшемби, 2 = Дүйшөмбү, 3 = Шейшемби, 4 = Шаршемби, 5 = Бейшемби, 6 = Жума, 7 = Ишемби

0 Негизги экранда, бардык кол менен өзгөртүүлөрдү жана A жана Input B таймерлерин тазалаңыз. Башка менюларда өзгөрүүлөр болот

тандалган параметрлер

# Негизги экранда, бардык кол менен өзгөртүүлөрдү, А жана Киргизүү В таймерлерин жана Программанын чыгууларын өчүрөт.

кийинки окуя.

* жана 1 Таймерди кайра жүктөңүз

* жана 2 Бардык программаларды жана опцияларды тазалаңыз, орнотууларды демейки абалына кайтарыңыз.

* жана 3 Таймерди күтүү режимине коюңуз. Таймерди кайра күйгүзүү үчүн каалаган баскычты басыңыз.

Каалаган убакыттын туура эмес жазуулары учурунда, ЖКнын жарыгы катаны көрсөтүү үчүн 5 жолу жаркырайт. Ошол эле учурда, коңгуроо угулат. Exit жана Next командалары учурдагы жазуу туура болгондо гана иштейт.

LCD арткы жарык

Баштапкы иштетүүдө, ЖКнын жарыгы 3 мүнөткө күйгүзүлөт, эгерде:

- Аппараттык ката бар (EEPROM же RTC табылган жок)

- РТКда убакыт белгиленген эмес

ЖКнын жарыгы кайра 3 мүнөткө күйгүзүлөт, бул колдонуучунун клавиатурасында. Эгерде ЖКнын жарыгы өчүк болсо, ар кандай клавиатура буйругу алгач ЖКнын жарыгын күйгүзөт жана басылган баскычка көңүл бурбайт. Бул колдонуучу клавиатураны колдонуудан мурун ЖК дисплейди окуй алат деп кепилдик берет. ЖКнын жарыгы Aux Input A же Aux Input B иштетилгенде 5 секундга күйгүзүлөт.

6 -кадам: Меню экраны

Меню Screen Shots
Меню Screen Shots
Меню Screen Shots
Меню Screen Shots
Меню Screen Shots
Меню Screen Shots

Баскычтопту колдонуп, параметрлердин ар бирин оңой программалоого болот. Сүрөттөр ар бир экрандын эмне кылаары жөнүндө маалымат берет.

7 -кадам: системанын дизайны

Системанын дизайны
Системанын дизайны

Бардык иштеп чыгуу жана тестирлөө нан тактасында жүргүзүлгөн. Системанын бардык бөлүмдөрүн карап, мен системаны үч модулга бөлдүм. Бул чечим негизинен Eagle акысыз версиясынын PCB өлчөмүнүн чектөөлөрүнө (80 x 100mm) байланыштуу болгон.

Модуль 1 - Электр энергиясы менен камсыздоо

Модуль 2 - CPU тактасы

Модуль 3 - Эстафета тактасы

Мен бардык компоненттер оңой эле жеткиликтүү болушу керек деп чечтим жана бетине орнотуучу компоненттерди колдонууну каалаган жокмун.

Келгиле, алардын ар бирин карап чыгалы.

8 -кадам: Электр менен камсыздоо

Электр камсыздоо
Электр камсыздоо
Электр камсыздоо
Электр камсыздоо
Электр камсыздоо
Электр камсыздоо
Электр камсыздоо
Электр камсыздоо

Электр энергиясы менен камсыздоо түз жана 12В жана 5В менен CPU жана реле такталарын камсыз кылат.

Мен чыңалуу жөндөгүчтөрүн татыктуу жылыткычтарга орноттум, ошондой эле жеткирүү үчүн ашыкча конденсаторлорду колдондум.

9 -кадам: CPU Board

CPU Board
CPU Board
CPU Board
CPU Board
CPU Board
CPU Board
CPU Board
CPU Board

ЖК экрандан башка бардык компоненттер, клавиатура жана реле CPU тактасына орнотулган.

Терминал блоктору камсыздоонун, эки санариптик кирүүнүн жана жарык сенсорунун ортосундагы байланышты жөнөкөйлөтүү үчүн кошулган.

Header казыктары/розеткалар ЖК экранга жана баскычтопко оңой туташууну камсыз кылат.

Релейлердин чыгышы үчүн мен ULN2803 колдондум. Ал буга чейин бардык керектүү айдоочу резисторлорду жана flyback диоддорун камтыйт. Бул CPU тактасын 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 ошондой эле EEPROM же RTC табылбаган учурда, ASM блогун колдонуу менен УКТООГО киргизилет.

I²Cтин ар кандай буйруктарын колдонуу боюнча жардам Flowcode Жардам файлдарынан алынган. Командаларды ийгиликтүү колдонуудан мурун, ар кандай I²C түзмөктөрүнүн кантип иштээрин так билүү талап кылынат. Бир схеманы иштеп чыгуу үчүн дизайнер бардык тиешелүү маалымат барагынын болушун талап кылат. Бул Flowcodeдун кемчилиги эмес.

Flowcode чындыгында сыноодон өттү жана микропроцессорлордун Microchip диапазону менен иштөөнү каалагандар үчүн абдан сунушталат.

PIC үчүн Flowcode программалоо жана конфигурациясы сүрөттөр боюнча коюлган

11 -кадам: Кошумча I2C Релейлик тактасы

Кошумча I2C релейлик тактасы
Кошумча I2C релейлик тактасы
Кошумча I2C релейлик тактасы
Кошумча I2C релейлик тактасы
Кошумча I2C релейлик тактасы
Кошумча I2C релейлик тактасы

CPU тактасында буга чейин 16 реле үчүн баш байланыштар бар. Бул ULN2803 чиптери аркылуу ачык коллектордук транзисторлор. Бул релелерди түздөн -түз иштетүү үчүн колдонулушу мүмкүн.

Системанын биринчи сыноолорунан кийин мага CPU тактасы менен реле ортосундагы бардык зымдар жаккан жок. Мен CPU тактасына I2C портун кошкондон кийин, I2C портуна туташуу үчүн релелик тактаны иштеп чыгууну чечтим. 16 каналдуу MCP23017 I/O Port Expander чипин жана ULN2803 транзистор массивин колдонуп, мен CPU менен реленин ортосундагы байланыштарды 4 зымга чейин кыскарттым.

Мен 80 х 100 мм ПХБга 16 релеге батпай калгандыктан, мен эки тактай жасоону чечтим. Ар бир MCP23017 16 порттун 8ин гана колдонот. Такта 1 8 чыгарууну башкарат, ал эми такта 2 көмөкчү эки чыгууну башкарат. Такталардагы бир гана айырмачылык - бул ар бир тактанын даректери. Бул мини секиргич менен оңой орнотулат. Ар бир тактада башка тактага энергия жана I2C маалыматын берүү үчүн туташтыргычтар бар.

ЭСКЕРТҮҮ:

Зарыл болсо, программа бардык 16 портту колдоно ала турган бир гана тактаны камсыздайт. Бардык реле маалыматтары биринчи тактада жеткиликтүү.

Район милдеттүү эмес жана өтө жөнөкөй болгондуктан, мен схема түзгөн жокмун. Эгерде талап жетиштүү болсо, кийинчерээк кошо алам.

12 -кадам: Кошумча RF шилтемеси

Кошумча RF шилтемеси
Кошумча RF шилтемеси
Кошумча RF шилтемеси
Кошумча RF шилтемеси
Кошумча RF шилтемеси
Кошумча RF шилтемеси

Долбоор аяктагандан кийин, көп өтпөй мен таймерге 220В AC зымдарын көп тартышым керек экенин түшүндүм. Мен стандарттык 315МГц модулдарын колдонуп, RF шилтемесин иштеп чыктым, ал таймерди шкафтын ичине жана чатырдын ичиндеги релелик такталарды 220В зымдарына жакын жайгаштырды.

Шилтеме 16МГцте иштеген AtMega328P колдонот. Бергичтин да, кабыл алуучунун да программасы бирдей жана режими мини -секирүүчү тарабынан тандалат.

Бергич

Бергич жөн эле CPU I2C портуна туташтырылган. Эч кандай кошумча орнотуунун кереги жок, анткени AtMega328P I2C релелик такталары менен бирдей маалыматты угат.

Маалыматтар I2C портунда секундасына бир жолу жаңыртылып турат жана өткөргүч бул маалыматты RF шилтемеси аркылуу жөнөтөт. Эгерде өткөргүч I2C маалыматын болжол менен 30 секундада албаса, анда өткөргүч бардык релелерди алуучу блокко өчүрүү үчүн маалыматты тынымсыз өткөрүп турат.

Жөнөткүч модулунун кубаты 12В менен 5Внын ортосунда PC тактасындагы мини секиргич менен тандалышы мүмкүн. Мен өткөргүчүмдү 12В менен иштетип жатам.

Алуучу

Алуучу өткөргүчтүн коддолгон маалыматын угат жана маалыматтарды I2C портуна жайгаштырат. Реле тактасы бул портко жөн эле туташат жана CPU тактасына туташтырылган сыяктуу иштейт.

Эгерде кабыл алуучу 30 секунддун ичинде жарактуу маалыматтарды албаса, ресивер релелик такталардагы бардык релелерди өчүрүү үчүн I2C портуна маалыматтарды үзгүлтүксүз жөнөтүп турат.

Схемалар

Бир күнү, эгерде ага суроо -талап болсо. Arduino эскизинде схеманы түзбөстөн схеманы куруу үчүн бардык керектүү маалыматтар камтылган.

Диапазон

Менин орнотуумда өткөргүч менен алуучунун арасы 10 метрдей. Таймер шкафтын ичинде, ал эми реле бирдиги шыптын үстүндө.

13 -кадам: Акыркы продукт

Акыркы продукт
Акыркы продукт
Акыркы продукт
Акыркы продукт
Акыркы продукт
Акыркы продукт

Негизги блок эски долбоор кутусуна орнотулган. Ал төмөнкүлөрдү камтыйт:

- 220В/12В трансформатору

- Электр энергиясы менен камсыздоо башкармалыгы

- CPU тактасы

- LCD дисплей

- Баскычтоп

- RF Link өткөргүч

- Кошумча үйдүн алыстан кабыл алуучу бирдиги, мага пульттун жардамы менен жарыкты күйгүзүү/өчүрүү мүмкүнчүлүгүн берет

Реле бирдиги төмөнкүлөрдөн турат:

- 220В/12В трансформатору

- Электр энергиясы менен камсыздоо башкармалыгы

- RF шилтемесин алуучу

- 2 x I2C релейлик тактасы

Бардык такталар бирдей өлчөмдө иштелип чыккан, бул аларды 3 мм аралыктар менен бири -биринин үстүнө тизүүнү оңой кылат.

Сунушталууда: