Агуулгын хүснэгт:

8 суваг програмчлагдах таймер: 13 алхам
8 суваг програмчлагдах таймер: 13 алхам
Anonim
8 суваг програмчлагдах таймер
8 суваг програмчлагдах таймер
8 суваг програмчлагдах таймер
8 суваг програмчлагдах таймер
8 суваг програмчлагдах таймер
8 суваг програмчлагдах таймер

Танилцуулга

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

Matrix Multimedia Flowcode 4 Professional -ийг хүлээн авсны дараа би програм хангамжид нэлээд эргэлзэж байсан. Итгэхэд дэндүү амархан санагдсан. Би үүнийг туршиж үзэхээр шийдсэн бөгөөд өөр өөр бүрэлдэхүүн хэсгүүдийн макрог туршиж үзсэн бөгөөд бүгд амжилттай болсон. Flowcode -ийг ашиглах хамгийн сайн тал нь энгийн төслүүдийг нэг шөнийн дотор кодлох боломжтой байсан явдал юм. I²C болон DS1307 бодит цаг дээр тоглосны дараа би Flowcode ашиглан 8 сувгийн таймерыг зохион бүтээхээр шийдсэн. Жижиг, хялбар төсөл биш байсан болохоор энэ нь Flowcode -ийг өөртөө заах гайхалтай төсөл болно гэж би итгэж байсан.

Микропроцессор болон бусад бүрэлдэхүүн хэсгүүдийг сонгох

Оролт гаралтын олон тооны зүү шаардлагатай тул 40 зүү бүхий төхөөрөмж шаардлагатай болох нь тодорхой байв. PIC 18F4520 -ийг голчлон 32K програмын санах ой, 1536 байтын өгөгдлийн санах ойгоор сонгосон. Ашигласан бүх бүрэлдэхүүн хэсгүүд нь стандарт цооног төхөөрөмж бөгөөд шаардлагатай бол Vero самбар дээр хэлхээг бий болгох боломжтой болно. Энэ нь талхны самбарыг хөгжүүлэхэд тусалсан.

Алхам 1: Төслийн зорилго

Төслийн зорилго
Төслийн зорилго

Зорилго

- Цагийг зөв барих, зайгаа нөөцлөх.

- Эрчим хүчээ алдсан ч гэсэн бүх програм, өгөгдлийг хадгалах ёстой.

- Хэрэглэгчийн энгийн интерфэйс.

- Програмчлалын уян хатан байдал.

Цаг барих

Цахилгаан тасрах магадлалтай бүс нутагт амьдардаг тул цахилгаан шугамаас авсан 50/60Hz стандарт нь цагийг зөв барихад хангалтгүй юм. Бодит цагийн цаг маш чухал байсан бөгөөд хэд хэдэн RTC чипийг туршиж үзсэний дараа би энгийн осциллятор, батерейны нөөцлөлтийн тохиргооноос шалтгаалан DS1307-ийг сонгохоор шийдсэн. DS1307 -т холбогдсон 32.768 кГц хэмжээтэй болор ашиглан цагийг маш нарийвчлалтай авч чадсан. Нарийвчлал нь 4 өөр талстыг ашиглан 2 сарын туршилтын хугацаанд 2 секундын дотор байсан.

Өгөгдөл хадгалах

Цахилгаан тасарсан үед ч гэсэн таймер програмын бүх өгөгдлийг хадгалах ёстой. 100 хүртэлх програм, янз бүрийн тохиргооны өгөгдлөөр 256 байт PIC-ийн EEPROM хэмжээ нь тийм ч том биш байх нь тодорхой болов. 24LC256 I²C EEPROM нь програмчлалын бүх мэдээллийг хадгалахад ашиглагддаг.

Хэрэглэгчийн энгийн интерфэйс

Хэрэглэгчийн интерфэйс нь зөвхөн 2 зүйл, LED арын гэрэлтүүлэг бүхий 16х4 шугамтай LCD дэлгэц, 4х3 хэмжээтэй товчлуураас бүрдэнэ. Бүх програмчлалыг хэдхэн товчлуур дээр дарж хийж болно. Интерфэйсэд нэмэлт зүйл бол дуут пьезо дуугаралт, харааны анивчсан LCD арын гэрэлтүүлэг юм.

Алхам 2: Програмчлалын уян хатан байдал

Програмчлалын уян хатан байдал
Програмчлалын уян хатан байдал

Хөтөлбөрийн уян хатан байдлыг хангахын тулд таймер нь тус тусад нь тохируулах боломжтой 100 програмтай. Хөтөлбөр бүрийн хувьд On time, Off Time, Output Channels, Week of Day -ийг тохируулж болно. Хөтөлбөр бүр гурван горимтой:

- Автомат: Цаг, унтраах, гаралтын суваг, долоо хоногийн өдрийг тохируулна.

- Off: Тусдаа програмыг тохиргоог устгахгүйгээр идэвхгүй болгож болно. Хөтөлбөрийг дахин идэвхжүүлэхийн тулд, зүгээр л өөр горим сонго.

- Өдөр/шөнө: Цагийн хуваарь, унтраах цаг, гаралтын суваг, долоо хоногийн өдрийг тохируулна. Автомат горимтой адил ажилладаг боловч ажиллах болно

зөвхөн харанхуй байх үед асаах ба унтраах хооронд гаралтыг асаах хэрэгтэй. Энэ нь өдрийн/шөнийн бүрэн хяналтыг идэвхжүүлдэг

Нар шингэх үед гэрлийг асаах, нар мандах үед унтраах уян хатан чанар.

Жишээ 1: 20:00 цагаас хойш гэрлийг асааж, нар мандах үед гэрлийг унтраана.

Өглөө: 20:00, Унтраах: 12: 00, Жишээ 2: Нар жаргах үед гэрлийг асааж, 23:00 цагт гэрлийг унтраана.

Орох: 12:00 цагт

Унтраах: 23:00 цаг

Жишээ 3: Нар жаргах үед гэрэл асах бөгөөд нар мандах үед гэрэл унтрах болно.

Огноо: 12:01

Унтраах: 12:00 цаг

Нэмэлт сонголтууд боломжтой бөгөөд бүгд 100 On/Off програмаас үл хамааран ажилладаг.

Хөтөлбөрийн сувгууд идэвхтэй: Хэд хэдэн програмыг унтраахын оронд тусдаа гаралтын сувгийг програмыг өөрчлөх шаардлагагүйгээр идэвхгүй болгож болно.

Туслах оролт: Тодорхой гаралтын сувгийг тодорхой хугацаанд асаах боломжийг олгодог хоёр дижитал оролт байдаг. Үүнийг жишээ нь шөнө орой гэртээ ирэхэд, алсын удирдлага дээрх товчлуурыг дарахад эсвэл гэр дохиолол асахад өөр өөр гэрлийг асаахад тодорхой гэрлийг асаахад ашиглаж болно.

Туслах гаралт: Хоёр нэмэлт гаралт (8 гаралтын сувгаас бусад) боломжтой. Тэдгээрийг тодорхой гаралтын сувгууд эсвэл дижитал оролтоор асаахаар програмчилж болно. Миний суурилуулалтанд би усалгааг хянадаг 6-8 гаралттай бөгөөд энэ нь 24В хүчдэл дээр ажилладаг. Би 6-8 сувгийг ашиглан туслах гаралтын аль нэгийг асааж, усалгааны системийн 24В цахилгаан хангамжийг асаадаг.

Гараар асаах: Үндсэн дэлгэц дээр байх үед 1-8 товчлуурыг ашиглан сувгийг гараар асаах, унтраах боломжтой.

Алхам 3: Техник хангамж

Техник хангамж
Техник хангамж

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

I²C автобус: Хэдийгээр Flowcode нь I²C техник хангамжийг хянах боломжийг олгодог боловч I²C програм хангамжийг ашиглахаар шийдсэн. Энэ нь зүү хийх даалгаврыг илүү уян хатан болгох боломжийг олгодог. Хэдийгээр удаан (50 кГц) боловч энэ нь I²C техник хангамжийн автобустай харьцуулахад маш сайн гүйцэтгэлтэй хэвээр байна. DS1307 ба 24LC256 хоёулаа энэхүү I²C автобусанд холбогдсон байна.

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

Гадаад EEPROM: Хөтөлбөрийн бүх өгөгдөл, сонголтууд гадаад EEPROM дээр хадгалагддаг. EEPROM өгөгдлийг эхлүүлэх үед ачаалж, өгөгдлийн хуулбарыг PIC санах ойд хадгалдаг. EEPROM өгөгдөл нь зөвхөн програмын тохиргоог өөрчлөх үед шинэчлэгддэг.

Өдөр/шөнийн мэдрэгч: Өдөр/шөнийн мэдрэгч болгон гэрлээс хамааралтай стандарт эсэргүүцэл (LDR) ашигладаг. LDRs нь янз бүрийн хэлбэр, сорттой байдаг бөгөөд бүгд ижил гэрлийн нөхцөлд өөр өөр эсэргүүцэлтэй байдаг тул би гэрлийн түвшинг уншихын тулд аналог оролтын сувгийг ашигласан. Өдрийн болон шөнийн түвшинг тохируулах боломжтой бөгөөд өөр өөр мэдрэгчийг уян хатан байлгах боломжийг олгодог. Гистерезисийг тохируулахын тулд өдөр, шөнийн хувь хүний утгыг тохируулж болно. Гэрлийн түвшин өдрийн цагаар эсвэл Шөнийн тогтоосон цэгээс дээш 60 секундээс дээш байх тохиолдолд л байдал өөрчлөгдөнө.

LCD дэлгэц: Бүх өгөгдлийг 2 мөрт дэлгэц дээр харуулах боломжгүй тул 4 мөр, 16 тэмдэгт дэлгэцийг ашигладаг. Төсөл нь LCD_Custom_Char макро дээр тодорхойлсон зарим тусгай тэмдэгтүүдийг агуулдаг.

Туслах оролт: Хоёр оролт нь NPN транзистороор буферлагдсан байдаг. Холбогч дээр +12v ба 0V байдаг бөгөөд энэ нь гадаад холболттой илүү уян хатан холболт хийх боломжийг олгодог. Жишээлбэл, алсын удирдлагатай хүлээн авагчийг тэжээлд холбож болно.

Гаралт: Бүх гаралтыг 12В реле ашиглан хэлхээнээс цахилгаан тусгаарладаг. Ашигласан реле нь 250 В хувьсах гүйдэлтэй, 10 ампер байна. Ердийн нээлттэй, хаалттай контактуудыг терминал руу гаргадаг.

Товчлуур: Ашигласан товчлуур нь 3х4 хэмжээтэй матрицтай товчлуур бөгөөд PORTB: 2..7.

Алхам 4: Товчлуурын тасалдал

Товчлуурын тасалдал
Товчлуурын тасалдал
Товчлуурын тасалдал
Товчлуурын тасалдал
Товчлуурын тасалдал
Товчлуурын тасалдал

Би ямар ч товчлуур дарахад PORTB Interrupt on Change тасалдлыг ашиглахыг хүссэн. Үүнийг хийхийн тулд PORTB -ийн чиглэл, өгөгдлийг товчлуурын тасалдал бүрийн өмнө болон дараа нь зөв тохируулсан эсэхийг баталгаажуулахын тулд Flowcode дээр Custom Interrupt үүсгэх шаардлагатай байсан. Товчлуур дарах эсвэл суллах бүрт тасалдал үүсдэг. Таслах горим нь түлхүүр дарагдсан үед л хариу өгдөг.

ЗАХИАЛАЛТАЙ ХАНДЛАГА

Кодыг идэвхжүүлэх

portb = 0b00001110; trisb = 0b11110001;

intcon. RBIE = 1;

intcon2. RBIP = 1;

intcon2. RBPU = 1;

rcon. IPEN = 0;

Хянагчийн код

if (intcon & (1 << RBIF))

{FCM_%n ();

portb = 0b00001110;

trisb = 0b11110001;

wreg = портб;

clear_bit (intcon, RBIF);

}

Асуудлууд олдсон

Тасалдлын үед тасалдлын үйлчилгээний горим нь ямар ч нөхцөлд програмын бусад хэсэгт ашиглаж болох бусад макро руу залгах ёстой. Энэ нь эцэстээ стек халих асуудалд хүргэх болно, учир нь тасалдал нь үндсэн програм мөн ижил дэд програмд байх үед гарч болзошгүй юм. Кодыг эмхэтгэх үед үүнийг Flowcode -оор Ноцтой Алдаа гэж тодорхойлдог.

GetKeyPadNumber дор байрлах товчлуурын хувийн код дээр Delay_us макро руу ийм дуудлага хийгддэг бөгөөд энэ нь стек халихад хүргэдэг. Үүнийг даван туулахын тулд би Delay_us (10) командыг устгаад оронд нь 25 мөр "wreg = porta;" тушаалууд. Энэ тушаал нь PORTA -г уншиж, түүний утгыг W бүртгэлд оруулдаг. Энэ тушаалыг assembler movf porta, 0 -тэй төстэй ганцхан зааварт эмхэтгэх болно. Төсөлд ашиглагдах 10MHz цагны хувьд заавар бүр 400ns байх бөгөөд 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 дэлгэц байдаг.

1 -р мөр: Цаг ба байдал

Одоогийн өдөр, цаг, дараа нь статусын дүрсийг харуулна.

A - Aux Input A идэвхжсэн бөгөөд Aux Input A таймер ажиллаж байгааг харуулж байна.

B - Aux Input B идэвхжсэн бөгөөд Aux Input B таймер ажиллаж байгааг харуулж байна.

C - Aux Output C асаалттай байгааг харуулж байна.

D - Aux Output D асаалттай байгааг харуулж байна.

} - Өдөр/Шөнийн мэдрэгчийн төлөв. Хэрэв байгаа бол шөнө болж байгааг илтгэнэ.

2 -р мөр: Хөтөлбөрийн гаралт

Янз бүрийн хөтөлбөрөөр асаалттай байгаа сувгуудыг харуулна. Сувгууд гаралтын тоон дээрээ харагддаг бөгөөд "-" нь тухайн гаралт асахгүй байгааг илтгэнэ. "Хөтөлбөрийн гаралт идэвхтэй" хэсэгт идэвхгүй болсон сувгуудыг энд харуулсаар байх болно, гэхдээ бодит гаралтыг тохируулахгүй.

3 -р мөр: Бодит гаралт

Янз бүрийн програмууд, Aux Inputs A & B эсвэл хэрэглэгчийн тохируулсан гарын авлагаас аль сувгууд асаалттай байгааг харуулна. 0 дарахад гараар идэвхжүүлсэн бүх гаралт унтрах бөгөөд Aux гаралтын A & B таймеруудыг анхны байдалд нь оруулах болно.

LINE 4: Цэс ба түлхүүр сонголтууд (бүх цэс дээр)

"*" Ба "#" товчлуурын функцийг заана.

Дунд хэсэг нь сонгосон дэлгэц дээр аль тоон товчлуурууд (0-9) идэвхтэй байгааг заана.

A & B оролтын статусыг Нээлттэй эсвэл Хаалттай унтраалгын дүрсээр харуулав.

Гарны товчлуур дээрх харгалзах товчлуурыг дарж гараар асаах/унтраах боломжтой.

Цэсийн туршид Star болон Hash товчлуурууд нь програмын янз бүрийн сонголтуудыг удирдахад ашиглагддаг. Сонголтуудыг тохируулахад 0-9 товчлуурыг ашигладаг. Нэг дэлгэц эсвэл програмчлалын цэсэнд олон сонголт байгаа тохиолдолд Hash товчлуурыг ашиглан янз бүрийн сонголтуудыг сонгож болно. Одоогийн сонгосон сонголтыг үргэлж дэлгэцийн зүүн талд ">" тэмдэгтээр зааж өгөх болно.

0-9 Цагийн утгыг оруулна уу

1-8 Сувгийн сонголтыг өөрчлөх

14 36 Хөтөлбөрөөр дамжих, 1 алхам ухрах, 4 алхам ухрах 10 програм, 3 алхам урагш, 6 алхам урагшлах 10

хөтөлбөрүүд

1-7 Долоо хоногийн өдрүүдийг тохируулна уу. 1 = Ням, 2 = Даваа, 3 = Мягмар, 4 = Лхагва, 5 = Пүрэв, 6 = Баасан, 7 = Бямба

0 Үндсэн дэлгэц дээр гарын авлагын бүх дарж, оролт ба оролтын В таймерыг арилгана уу. Бусад цэсэнд өөрчлөлт орно

сонгосон сонголтууд

# Үндсэн дэлгэц дээр бүх гарын авлага, A, B оролтын таймер, Програмын гаралтыг идэвхгүй болгоно.

дараагийн үйл явдал.

* ба 1 Таймерыг дахин ачаална уу

* ба 2 Бүх програм, сонголтыг арилгаж, тохиргоог анхны байдалд нь оруулна уу.

* ба 3 Таймерыг зогсолтын горимд оруулах. Таймерыг дахин асаахын тулд дурын товчлуурыг дарна уу.

Аливаа цагийн утгыг буруу оруулсан тохиолдолд LCD арын гэрэлтүүлэг 5 удаа анивчиж, алдааг илтгэнэ. Үүний зэрэгцээ дуут дохио дуугарах болно. Exit ба Next командууд зөвхөн одоогийн оруулга зөв байхад л ажиллана.

LCD арын гэрэл

Анх эхлүүлэх үед LCD арын гэрлийг 3 минутын турш асаах болно.

- Тоног төхөөрөмжийн эвдрэл гарсан (EEPROM эсвэл RTC олдсонгүй)

- БОЭТ -д цаг тогтоогоогүй байна

LCD арын гэрэл нь товчлуур дээрх хэрэглэгчийн оролт дээр 3 минутын турш дахин асах болно. Хэрэв LCD арын гэрэл унтарсан бол товчлуурын товчлууруудын аль нэг нь эхлээд LCD арын гэрлийг асааж, дарагдсан товчлуурыг үл тоомсорлодог. Энэ нь хэрэглэгч товчлуурыг ашиглахаасаа өмнө LCD дэлгэцийг унших боломжтой болно. Мөн Aux Input A эсвэл Aux Input B идэвхжсэн тохиолдолд LCD арын гэрлийг 5 секундын турш асаах болно.

Алхам 6: Цэсийн дэлгэцийн зураг

Цэсийн дэлгэцийн зураг
Цэсийн дэлгэцийн зураг
Цэсийн дэлгэцийн зураг
Цэсийн дэлгэцийн зураг
Цэсийн дэлгэцийн зураг
Цэсийн дэлгэцийн зураг

Товчлуур ашиглан сонголт бүрийг хялбархан програмчилж болно. Зургууд нь дэлгэц бүрийн юу хийдэг талаар зарим мэдээллийг өгдөг.

Алхам 7: Системийн дизайн

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

Бүх хөгжүүлэлт, туршилтыг талхны самбар дээр хийсэн. Системийн бүх хэсгүүдийг хараад би системийг гурван модульд хуваасан. Энэхүү шийдвэр нь Eagle -ийн үнэгүй хувилбарын ПХБ -ийн хэмжээ хязгаарлагдмал (80x100 мм) хэмжээтэй холбоотой байв.

Модуль 1 - Цахилгаан хангамж

Модуль 2 - CPU -ийн самбар

Модуль 3 - Реле самбар

Би бүх бүрэлдэхүүн хэсгүүдийг хялбархан олж авах боломжтой байхаар шийдсэн бөгөөд гадаргуу дээр холбох эд ангиудыг ашиглахыг хүсээгүй.

Тэд тус бүрийг авч үзье.

Алхам 8: Цахилгаан хангамж

Цахилгаан хангамж
Цахилгаан хангамж
Цахилгаан хангамж
Цахилгаан хангамж
Цахилгаан хангамж
Цахилгаан хангамж
Цахилгаан хангамж
Цахилгаан хангамж

Цахилгаан хангамж нь шууд урагшаа чиглэсэн бөгөөд CPU ба реле хавтанг 12V ба 5V хүчдэлээр хангадаг.

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

Алхам 9: CPU -ийн самбар

CPU -ийн самбар
CPU -ийн самбар
CPU -ийн самбар
CPU -ийн самбар
CPU -ийн самбар
CPU -ийн самбар
CPU -ийн самбар
CPU -ийн самбар

LCD дэлгэц, товчлуур, реле зэргээс бусад бүх бүрэлдэхүүн хэсгүүдийг CPU -ийн самбар дээр суулгасан болно.

Нийлүүлэлт, хоёр дижитал оролт, гэрэл мэдрэгч хоёрын холболтыг хялбарчлахын тулд терминал блокуудыг нэмж оруулав.

Толгойн зүү/залгуур нь LCD дэлгэц болон товчлуурыг хялбархан холбох боломжийг олгодог.

Релений гаралтын хувьд би ULN2803 -ийг ашигласан. Энэ нь шаардлагатай бүх жолоодлогын резистор ба нисэх диодуудыг аль хэдийн агуулдаг. Энэ нь CPU -ийн самбарыг Eagle -ийн үнэгүй хувилбарыг ашиглан хийх боломжтой хэвээр байна. Реле нь хоёр ULN2803 -тай холбогдсон байна. Доод ULN2803 нь 8 гаралтанд, дээд ULN2803 нь хоёр туслах гаралтанд ашиглагддаг. Туслах гаралт бүр дөрвөн транзистортой. Релей холболтыг мөн толгойн зүү/залгуураар хийдэг.

PIC 18F4520 нь PicKit 3 програмистаар хялбар програмчлах боломжийг олгодог програмчлалын сокетоор тоноглогдсон байв.

ТАЙЛБАР:

Самбар нь нэмэлт 8 зүү IC агуулсан болохыг та анзаарах болно. Дээд IC нь PIC 12F675 бөгөөд дижитал оролтонд холбогдсон байна. Үүнийг ПХБ -ийн дизайны үеэр нэмж оруулсан болно. Энэ нь дижитал оролтыг урьдчилан боловсруулахад хялбар болгодог. Миний өргөдөлд тоон оролтуудын нэг нь миний дохиоллын системд холбогдсон байна. Хэрэв сэрүүлэг дуугарвал манай гэрт тодорхой гэрэл асдаг. Миний дохиоллын системийг зэвсэглэж, зэвсэггүй болгох нь дуут дохио дээр өөр өөр дохио өгдөг. PIC 12F675 -ийг ашигласнаар би одоо гар/зэвсэглэл, жинхэнэ дохиолол хоёрыг ялгаж чадна. 12F675 нь мөн програмчлалын сокетоор тоноглогдсон байдаг.

Би мөн толгойн зүү/залгуураар дамжуулан I2C портын хангамжийг хийсэн. Энэ нь дараа нь буухиа самбар дээр хэрэг болно.

Самбар нь хэд хэдэн холбогчтой бөгөөд үүнийг IC залгуурт холбохоос өмнө гагнах ёстой.

Алхам 10: Урсгалын кодын дүгнэлт

Урсгалын кодын дүгнэлт
Урсгалын кодын дүгнэлт
Урсгалын кодын дүгнэлт
Урсгалын кодын дүгнэлт
Урсгалын кодын дүгнэлт
Урсгалын кодын дүгнэлт

Би угсралтын ажилд бүртгэлийн түвшинд ажилладаг байсан тул бүрэлдэхүүн хэсгийн макрог ашиглах нь заримдаа хэцүү, сэтгэл дундуур байсан. Энэ нь Flowcode програмчлалын бүтцийн талаар миний мэдлэг дутмаг байгаатай холбоотой юм. Миний C эсвэл ASM блокуудыг ашиглаж байсан цорын ганц газар бол тасалдлын горим дотор гаралтыг асаах, Do_KeyPressed горимд товчлуурын тасалдлыг идэвхгүй болгох/идэвхжүүлэх явдал байв. PIC -ийг EEPROM эсвэл RTC олдохгүй тохиолдолд ASM блок ашиглан SLEEP горимд байрлуулдаг.

Янз бүрийн I²C командыг ашиглах талаархи бүх тусламжийг Flowcode Help файлуудаас авсан болно. Командыг амжилттай ашиглахын тулд өөр өөр I²C төхөөрөмжүүд хэрхэн ажилладагийг яг таг мэдэх шаардлагатай. Хэлхээг зохион бүтээхдээ дизайнер холбогдох бүх өгөгдлийн хүснэгтийг бэлэн байлгахыг шаарддаг. Энэ нь Flowcode -ийн дутагдал биш юм.

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

PIC -ийн урсгалын кодын програмчлал, тохиргоог зургийн дагуу тохируулсан болно

Алхам 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 вольтын хувьсах гүйдлийн олон утас татах хэрэгтэйг ойлгосон. Би 315 МГц -ийн стандарт модулиудыг ашиглан RF -ийн холбоосыг боловсруулсан бөгөөд энэ нь таймерыг шүүгээнд, дээврийн дотор байрлах реле самбарыг 220 В -ийн бүх утаснуудад ойрхон байрлуулах боломжийг олгосон юм.

Холбоос нь 16MHz дээр ажилладаг AtMega328P -ийг ашигладаг. Дамжуулагч болон хүлээн авагчийн програм хангамж ижил бөгөөд горимыг мини холбогчоор сонгоно.

Дамжуулагч

Дамжуулагчийг зүгээр л CPU I2C порт руу залгасан болно. AtMega328P нь I2C реле самбартай ижил өгөгдлийг сонсдог тул нэмэлт тохиргоо хийх шаардлагагүй болно.

Өгөгдөл I2C порт дээр секундэд нэг удаа шинэчлэгддэг бөгөөд дамжуулагч энэ мэдээллийг RF холбоосоор дамжуулдаг. Хэрэв дамжуулагч 30 секундын турш I2C өгөгдлийг хүлээн авахгүй бол дамжуулагч нь хүлээн авагч руу бүх релеийг унтраахын тулд өгөгдлийг тасралтгүй дамжуулдаг.

Дамжуулагч модулийн хүчийг 12 В -оос 5 В -ийн хооронд компьютерийн самбар дээрх мини холбогчоор сонгож болно. Би дамжуулагчаа 12 В хүчдэлээр тэжээж байна.

Хүлээн авагч

Хүлээн авагч нь дамжуулагчийн кодлогдсон өгөгдлийг сонсож, өгөгдлийг I2C порт дээр байрлуулдаг. Реле самбар нь энэ порт руу залгагддаг бөгөөд CPU -ийн самбар дээр залгагдсантай ижил ажилладаг.

Хэрэв хүлээн авагч 30 секундын турш хүчин төгөлдөр мэдээлэл хүлээн авахгүй бол хүлээн авагч нь реле самбар дээрх бүх релеийг унтраахын тулд I2C порт дээрх өгөгдлийг тасралтгүй илгээнэ.

Схем

Нэг л өдөр эрэлт хэрэгцээ байгаа бол. Arduino ноорог нь хэлхээний диаграмгүйгээр хэлхээг бий болгоход шаардлагатай бүх мэдээллийг агуулдаг.

Хамрах хүрээ

Миний суулгацад дамжуулагч ба хүлээн авагчийн хооронд 10 метрийн зайтай байдаг. Таймер нь шүүгээний дотор, релений хэсэг нь таазны дээд талд байрладаг.

Алхам 13: Эцсийн бүтээгдэхүүн

Эцсийн бүтээгдэхүүн
Эцсийн бүтээгдэхүүн
Эцсийн бүтээгдэхүүн
Эцсийн бүтээгдэхүүн
Эцсийн бүтээгдэхүүн
Эцсийн бүтээгдэхүүн

Үндсэн нэгж нь хуучин төслийн хайрцагт суурилагдсан байв. Энэ нь дараахь зүйлийг агуулдаг.

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

- Цахилгаан хангамжийн самбар

- CPU -ийн самбар

- LCD дэлгэц

- Товчлуур

- RF -ийн холбогч дамжуулагч

- Гэрийн алсын нэмэлт хүлээн авагч нь алсын удирдлагаар дамжуулан гэрлийг асаах/унтраах боломжийг олгодог

Реле төхөөрөмж нь дараахь зүйлээс бүрдэнэ.

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

- Цахилгаан хангамжийн самбар

- RF -ийн холбоос хүлээн авагч

- 2 x I2C буухиа самбар

Бүх самбарыг ижил хэмжээтэйгээр бүтээсэн бөгөөд 3 мм -ийн зайтай бие биенийхээ дээр байрлуулахад хялбар болсон.

Зөвлөмж болгож буй: