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

Ерөнхий шилжүүлэгч барьцаалагч: 3 алхам
Ерөнхий шилжүүлэгч барьцаалагч: 3 алхам

Видео: Ерөнхий шилжүүлэгч барьцаалагч: 3 алхам

Видео: Ерөнхий шилжүүлэгч барьцаалагч: 3 алхам
Видео: The Trial of God: Was He Invented? | Judging Yahweh, the God of the Bible 2024, Арваннэгдүгээр
Anonim
Ерөнхий шилжүүлэгч барьцаалагч
Ерөнхий шилжүүлэгч барьцаалагч

Энэ нийтлэлд физик унтраалгыг хянадаг хатуу төлөвт микроконтроллер төхөөрөмжийг хэрхэн бүтээх талаар тайлбарласан болно. Танд микроконтроллер програмист байгаа гэж үзвэл (4 доллар орчим) хийх нь маш хямд юм. Хэлхээ нь өөрөө нарийн төвөгтэй байдаг.

Энэхүү төсөл нь маш энгийн бөгөөд ямар ч гайхалтай шинэ техник шаарддаггүй. Энэ нь анхны микроконтроллерийн сайн төсөл болно. Угсралтын эх кодыг энэ нийтлэлд танд өгөх болно. Надад ажил дээрээ үнэхээр дажгүй дарга байгаа. Заримдаа бид бие биентэйгээ практик онигоо тоглох дуртай. Харамсалтай нь түүний хувьд би эрдэмтэн хүн. Энд миний зорилго бол ажлын байран дахь янз бүрийн төхөөрөмжийг богино хугацаанд нууцлаг байдлаар асаах явдал юм. Радио, чимээ шуугиантай принтер, тэр ч байтугай төрсөн өдрийн ядаргаатай хөгжмийн картуудыг энгийн зүйлд нуусан байдаг. Дээрхээс гадна төсөл бол гаралтын тээглүүр өөрсдөө харьцаж чадахаас илүү хүнд ачааг AVR ашиглан хэрхэн хянаж байгаагийн жишээ юм. Энэ бол маш олон төрлийн зүйл юм, учир нь гаралтын тээглүүр нь танд бага хүчдэл, маш хязгаарлагдмал гүйдэл өгдөг. Энэ хэлхээг реле ашиглан өргөжүүлж, маш хүнд ачааг хянах боломжтой.

Алхам 1: Дизайн ба хэлхээ

Дизайн ба хэлхээ
Дизайн ба хэлхээ

Энэ төслийн хувьд та бараг бүх микроконтроллер, 5V хүчдэлийн зохицуулагч, NPN транзисторыг ашиглаж болно. Би хэрэглэсэн:

1x ATtiny26L-8PU (~ 2 $) 1x TL780 5в хүчдэлийн зохицуулагч (~ 0.7 $) 1х N2222 транзистор (~ 0.07 $) 1х 9в зай, эсвэл зайны хэмнэлттэй 12в алсын удирдлагатай зай … мөн мэдээж миний найдвартай STK500, одоо ZIF-тэй залгуурууд нэмэгдсэн! Үндсэн загвар нь ийм байна: Микроконтроллер нь цаг хугацааны хоёр гогцоог дамжуулдаг. Төхөөрөмжийг хэзээ асаахыг тодорхойлох урт гогцоо, төхөөрөмжийг хэр удаан асаахыг тодорхойлох богино гогцоо. Асуудал үүсгэх цаг болоход микроконтроллер 14 -р логикийг (хамгийн бага ач холбогдолтой PORTA) илгээдэг. Энэ нь транзисторыг галладаг. Хэрэв та хавчаарыг унтраалганы залгуурт холбосон бол энэ нь унтраалгын эсэргүүцэл гэнэт маш өндөрөөс 1 ом -оос доош буухад хүргэдэг бөгөөд энэ нь ихэнх төхөөрөмжүүдийн хувьд асаалтыг асаахад хангалттай юм. Транзистор нь диод гэдгийг санаарай, хэрэв энэ нь ажиллахгүй бол хавчаарын туйлшрал буруу байж магадгүй тул тэдгээрийг солино уу! Нэмж дурдахад энэ төхөөрөмж нь 9 вольтын батерей шаарддаг бөгөөд үүнээс гадна 8 вольтоос дээш хүчдэл үлдсэн байдаг. Ашиглагдаагүй олон тооны тээглүүрүүд байгаа тул мэдээж илүү эмх замбараагүй байдлыг хангахын тулд та илүү олон унтраалгыг удирдах боломжтой байсан ч энэ нь миний зорилгод хангалттай байсан юм. Дараагийн алхам бол энэ зүйлийг үргэлжлүүлэхийн тулд бичсэн эх код юм. "Асаах" ба "унтраах" төлөвийн үндсэн урт нь ойролцоогоор 10 секунд, 13 минут байна. Эдгээр утгыг хэрхэн өөрчлөх талаар код дээр тайлбарууд байдаг. Эцэст нь таймеруудыг тохируулахын тулд "nop" функцийг өргөн ашигладаг (энэ нь CPU -ийн мөчлөгийг юу ч хийхгүй өнгөрүүлдэг). Хэрэв та хичнээн их хэрэглэж байгаагаа анхаарахгүй бол rjmp функцийг эвдэж болзошгүй тул энэ нь дэгжин юм!

Алхам 2: Эх код

ЭХЛЭХ:

. INCLUDE "tn26def.inc"; Тодорхойлолтын файл. Хэрэв танд хуулбар хэрэгтэй бол Google үүнийг ашиглаарай. clr r30 clr r29 clr r28 clr r27 ldi r28, 0b00000000 ldi r27, 0b11111111 ldi r26, 0b00000000 clr r25 DDRA, r27 гарах PORTA, r28 TIMER: nop nop nop nop cpi r30, 0b11111111 breq TIMER2 rjmp TIMER TIMER2: no nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop inc r29 Tpi r11 t2Rp11 R29, nop nop nop nop nop nop nop nop nop nop nop inc r25 cpi r25, 0b11111111; "унтраах" хугацааг багасгахын тулд энэ тоог бууруул FUNC rjmp TIMER FUNC: nop nop cpi r28, 0x00 breq FUNC2 dec r28 clr r30 clr r29 clr r25 out of PORTA, r28 rjmp TIMER FUNC2: nop nop inc r28 out PORTA, r28 clr r25 clr r30 clr r29 rjmp TIMER4 TIMER4: no rop nop nop nop nop nop nop nop nop nop nop nop nop nop nop үгүй nop nop nop nop nop nop nop cpi r30, 0b11111111 breq TIMER5 rjmp TIMER4 TIMER5: nop nop nop nop nop inc r29 cpi r29, 0b11111 111 breq TIMER6 rjmp TIMER4 TIMER6: inc r25 cpi r25, 0b00000011; "On" time breq FUNC rjmp TIMER4 -ийг нэмэгдүүлэхийн тулд энэ тоог нэмнэ үү

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

Хөгжилтэй байгаарай, гэхдээ транзистор нь хэр их хүчээр дамжуулж болох талаар хязгаартай гэдгийг санаарай. Энэ нь сүлжээний хүчдэл байхгүй гэсэн үг юм! Энэ нь транзисторыг хэт ачаалахаас гадна энэ төхөөрөмж нь ээлжлэн дамжуулах дохиог сайн хянаж чаддаггүй, хэрэв та доор тайлбарласан өөрчлөлтийг ашиглахгүй бол * ба * реле нэмж оруулаарай: Хэрэв хавчаарын туйлшралын талаар санаа зовох нь таныг бухимдуулж байвал хоёр дахь транзисторыг утсаар холбоно уу. үндсэн транзистортой ижил эх үүсвэрт холбогдсон боловч эсрэг талын коллектор ба ялгаруулагчтай. Ингэснээр та хавчаарыг яаж хавсаргасан хамаагүй микроконтроллероос гарч буй логик нь унтраалгыг үргэлж "асаах" болно. Энэ систем дэх алдагдлын гүйдэл нь гарны матриц гэх мэт зарим мэдрэмтгий унтраалгыг идэвхжүүлэхэд хангалттай байж магадгүй тул энэ програмд резисторыг цувралаар нэмэх шаардлагатай байж магадгүй гэдгийг санаарай. Та батерейг ашиглахын оронд зорилтот төхөөрөмжөөс тэжээл авах боломжтой гэдгийг санаарай. Эцэст нь хэлэхэд би төхөөрөмжийг хэвлэх функцтэй эртний нягтлан бодох бүртгэлийн тооцоолуурт суулгасан. Би цаасан хавчаар ашиглан товчлуурын матрицыг урвуу зохион бүтээсэн бөгөөд аль IC зүү нь цаасан тэжээл өгөхийг тодорхойлж, зөв зүүг төхөөрөмжтэй холбосон. Дараа нь би хэвлэх функцийг унтраах боломжийг олгодог унтраалгыг идэвхгүй болгов. Төхөөрөмжийг асаах бүрт 10 минут тутамд 10 секундын турш маш их чимээ шуугиантай цаасан тэжээлийг асааж, төрсөн өдрийн хөгжмийн картуудын нэгний хэлхээнд сайн ажилладаг байсан.

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