äœé»å§é»æºå路管çã®åéã§ã®èªè»¢è»å»ºèšã«é¢ããäžé£ã®èšäºãç¶ããŸãã ä»åã¯ãããŸããŸãªäºæ¬¡æ¶è²»è
ã«ããèªåè»ã®ããããªãŒã®æ·±æŸé»ãé²ãããã€ã¹ã«ã€ããŠã話ããŸãã
å¶åŸ¡ãããŠããªãæŸé»ã®çµæã®1ã€ãæåã®è»ããªãŒããã€ã賌å
¥ããããšã¯ããã¹ãŠã®äººãç¹ã«ãšã³ãžãã¢ã®äººçã«ãããéèŠãªãã€ã«ã¹ããŒã³ã§ãã çµå±ã®ãšããã圌ã®æ°ããéã®éŠ¬ã®æãããªå©ç¹ã«å ããŠã誰ãããã«ãã®éæçœãªæ¬ ç¹ã«æ³šæãæãã®ã§ããããïŒ èª°ãããã«èŠæ Œã®æ¹åãè¿œå ã«ã€ããŠèãå§ããŸããïŒ ãã¡ããããããäžäœã»ã°ã¡ã³ãã®è»ã§ãããããã¡ãã·ã§ããã«ãªããã©ã³ãã§ãã£ãŠããæåã¯çµ¶å¯Ÿã«ãã¹ãŠãåããŠããããã«èŠãããããããŸããã ãããããã®å Žåãå®è·µã瀺ãããã«ãæéã¯ç¬¬äžå°è±¡ã«åè«ããŸãã ãšã³ãããŒã¯ã©ã¹ã®è»ã賌å
¥ãããšãæåã®æ¥ã«æåéãæãããã¿å§ããŸãïŒ
è»ã«ããŸããŸãªè£å©é»åæ©åšããè©°ã蟌ããããšãæ倧éã«æã¿ãŸãã ããããããããã¹ãŠã®èšç»ã®å®æœåŸããã«ã人çã¯è»ã®ææè
ã«å³ããçŸå®ã«çŽé¢ããŸãã ææ°ã®ãšã¬ã¡ã³ã¿ã«ããŒã¹ã§æ§ç¯ãããææ°ã®ããã€ã¹ã§ãããäŸç¶ãšããŠé»åãéåžžã«ç±æããŠããããšãããããŸããã ãããŠãéåžžã«å€§ãããšæãããèªåè»çšããããªãŒã¯ååçã§ã¯ãªããæ°æ¥ã®ãã¡ã«ç¡å®³ã«èŠããããããã¹ãŠã®æ¶è²»è
ã®éã¿ã§ç°¡åã«ã座ããããšãã§ããŸãã
ããã«æœè±¡çã§ä»®èª¬çãªç¶æ³ã«æµã蟌ãŸãªãããã«ãç§ã¯ç§ã®è©±ã«çŽè¡ããŸãã è»ã賌å
¥ããåŸãæåã¯ã¬ãžã¹ãã©ãä¹ããããšãã欲æ±ã§ããã ããã¯æçæéå
ã§è¡ãããAliExpressããã®å°å
ã®é
éé床ã«ãã£ãŠã»ãŒå®å
šã«æ±ºå®ãããŸããã ã·ã¬ãŒã©ã€ã¿ãŒããã®éåžžã®é»æºäŸçµŠã¯éåžžã«äžäŸ¿ã§ãããã¬ã³ãŒããŒã¯12 / 5Vãã«ã¹ã³ã³ããŒã¿ãŒãä»ããŠãªã³ããŒããããã¯ãŒã¯ã®æãè¿ãã©ã€ã³ã«ãã°ããåºå®æ¥ç¶ãããããšã¯æããã§ãã ãããŠä»¥æ¥ æšæ¥ã§ã¯ãªããæ§ããã«èšã£ãŠãããã®ã³ã³ããŒã¿ãŒã¯ææ°ã®ãã®ã§ã¯ãªããç¬èªã®ããŒãºã®ãããåŸã§å€æããããã«ã21 mAã®é»æµãæ¶è²»ããŠããŸããã 次ã«ããã®ã³ã³ããŒã¿ãŒã ãã§ã容éã60 Ahã®æ°ããå®å
šã«å
é»ãããããããªãŒã«ã©ãã ãã®é»åãäŸçµŠã§ããããæšå®ããŸãã ç®è¡æŒç®ã¯éåžžã«åçŽã§ãæ®å¿µã§ãã

ãã®ããã4ãæããããªããã¡ã«ãäœãæèŒãããŠããªãã³ã³ããŒã¿ãŒãããããªãŒãæåéãããŒããŸã§ãçéžãããŸãã å®å
šã«æ°é®®ã§ã¯ãªãããããªãŒãæªäº¡äººã§ããããšãç°¡åã«å€æããéœåžãã«ãã·ãåŸã®å
é»ã100ïŒ
ã«ã¯ã»ã©é ãããšãèæ
®ãããšãéšã®æ¥ã¯1ã¶æ以å
ã«ããã¯ã§ç°¡åã«å§ãŸããŸãã
ç¹°ãè¿ãã«ãªããŸãããé»å§ã³ã³ããŒã¿ã®ã¿ã§ãã ã¯ããä»æ¥ã¯å¿
èŠã«å¿ããŠããã0.5ããªã¢ã³ãã¢ã®ã³ã³ããŒã¿ãŒã賌å
¥ã§ããŸããããã®äŸã¯ã
æ°Žãç³ãããã«ãã£ãããšèªä¿¡ãæã£ãŠ
åããäºçŽ°ã§ãããªãã絶ããäœçšãããã瀺ãããã«ãæ¶è²»è
ãéåžžã«å€§ãããšæããããã®ãããšãã«ã®ãŒãåŒãåºãããšã瀺ããŠããŸãããããªãŒã
ããã«é²ããšãFHD @ 30fpsèšé²ã¢ãŒãã®ã¬ã³ãŒããŒã¯+ 5vãœãŒã¹ããçŽ300 mAãæ¶è²»ããŸããããã¯ãå¹çãèæ
®ããå€æåŸããªã³ããŒããããã¯ãŒã¯ããçŽ150 mAã®é»æµãäŸçµŠããŸãã ã³ã³ããŒã¿ãŒãææ°ã®ãã®ã«çœ®ãæãããããã®é»æµã®ã¿ã§æŸé»æéãèšç®ãããšããŸãã
ããã2é±é以äžã§ãããå®éã«ã¯10æ¥éã§ãã çŸåšã次ã®äŒæãåºåŒµã®åŸãç
§æïŒããã³å Žåã«ãã£ãŠã¯ããããªãŒã®äº€æïŒã®èŠéããè¿«ã£ãŠããŸãã
ãããŠãããã¯ç§ã«èµ·ãããŸããïŒç§ãçã匷å¶äŒæã«è¡ã£ããšããç§ã¯äžé±éããããã§ããäžå€®ã®é ã§ããç§ã®ããã«ãã¢ãéããããšãã§ããªããšã¯æããŸããã§ããã
å€ãã®äººã¯ãããã¯èªåã®ããã§ããã¹ãŠã®é»æºãåãããå°ãªããšãé²é³ãåæ¢ããå¿
èŠããããæ£ãããšèšãã§ãããã ãããã人çã¯äººçã§ãããèšæ¶ã¯åãã§ã¯ãªããäºçŽ°ãªç
æ°ã®äŒæããã€ãŸã§ç¶ããã¯ãåžžã«åãã£ãŠç¥ãããšãã§ããŸããã ãããã£ãŠããµãŒããããã¬ãŒã«ãŒã®ã¢ã€ãã¢ãããã«çãŸããŸããã
ãã¡ãããå€åºå
ã§ã®ã¿åäœããããã«ã€ã°ããã·ã§ã³ã¹ã€ããããã¬ã³ãŒããŒã«é»åãäŸçµŠãããªãã·ã§ã³ããããŸããããã®ãªãã·ã§ã³ãããŸããããŸããã è»ãé§è»å Žã§ã¶ã€ãã£ãå Žåãç¯äººãèŠãæ©äŒã欲ããã§ãã ããã«ãã¬ã³ãŒããŒãåãä»ããŠãããã°ããããŠãé ãããGPSãã©ãã«ãŒãå«ãããã€ãã®ããã€ã¹ãè»å
ã«äžè¶³ããŠããŸããããã®ãã©ãã«ãŒã¯ãå°ãªããšããã»ãšãã©ãã¹ãŠããååšãããã€ã³ããŸã§æ©èœããŸãã
äžè¬ã«ãæ°é±éã®ååçåå°ã§ããªã³ããŒããããã¯ãŒã¯ã®é»å§ãå¶åŸ¡ããããã€ã¹ã®ã¢ã€ãã¢ãå®æãããããã®ããŒã¿ã«åºã¥ããŠã2次ã°ã«ãŒãïŒã¬ã³ãŒããŒãUSBãœã±ããïŒãšåºæ¬ïŒGPSãã©ãã«ãŒããã³ããã€ãã®äœïŒã
ããã¯ã©ã®ããã«è¡ãããšãã§ããŸã
ããã€ã¹ã®æåã®ä»®æ³ãããã¿ã€ãã¯ãLM393Nã¢ããã°ã³ã³ãã¬ãŒã¿ã«åºã¥ããŠãæ§ç¯ããããæåã«ããã€ã¹ããåä¿¡ããäºå®ã ã£ããã¹ãŠã®ãã®ã«å¯Ÿå¿ã§ããŸããã æœè±¡ã¹ããŒã ã¯ãã®ãããªãã®ã§ããã
ããã§ã¯ã2ã€ã®ã³ã³ãã¬ãŒã¿ãè² è·ã®åãæ¿ãã«äœ¿çšãããŸãã å
±éã®åºæºé»å§çºçåšãåäœã®ãããå€ã決å®ãã2ã€ã®ååšåšãã¹ãã©ããã³ã°ã³ã³ãã¬ãŒã¿ã2ã€ã®é»æºã¹ã€ããã å®æããããã€ã¹ã®å€éšãã€ã³ãã£ã³ã°ã¯æ¬¡ã®ããã«èšç»ãããŠããŸãã
ãã©ã€ããªããŒã¯ã»ã«ã³ããªããŒãããé·ããªã³ã®ãŸãŸã§ãããããéå§ã³ã³ããŒã¿èªäœã«é»æºãäŸçµŠãããŸãã äžæ¬¡è² è·ã¯ã³ã³ããŒã¿ã«çŽæ¥æ¥ç¶ãããŠããŸãã äºæ¬¡ã¹ã€ããã¯ãã€ã³ããŒã¿ãŒåºåã§+ 5våè·¯ã«ãã§ã«ããäºæ¬¡è² è·ãæŽæµããŸãã
æåŸã«åºãŠãããã®
å¿
èŠãªã®ã¯ããã ãã§ããããã«èŠããŸãããããããããšã§ããã詳现ãèãããšã代æ¿å®è£
ã®ã¢ã€ãã¢ãçŸããŸããã ãŸããã¢ããã°åè·¯ã«ã¯ã³ã³ãã¬ãŒã¿åäœã¢ãŒããæäŸãããŸãšããªãã£ã¹ã¯ãªãŒãèŠçŽ ãå«ãŸããŠããã次ã«ãã·ã£ããããŠã³æµæãããªãã³ã°æµæã䜿çšããŠèšå®ãããŠãããããã»ããã¢ãããè€éã«ãªããæºããæéããéããå¯èœæ§ããããŸãã ãããã£ãŠãæçµçã«ã¯ãããžã¿ã«å®è£
ã«å°å¿µããããšã決å®ãããŸãããããã¯ãå¶åŸ¡ã¢ã«ãŽãªãºã ãæ¹åããããã®èšå€§ãªæ©äŒãéããªãããæŠç¥çããã³ã»ããã¢ããã®äž¡æ¹ã§ã¯ããã«ç°¡åã§ããããšãå€æããŸããããããŠããã®ã³ã³ããã¹ãã§ã¯ãæãéèŠãªããšã¯ãé»æµæ¶è²»ã®ç¹ã§æ¡éãã«çµæžçã§ããããšãå€æããŸãã
ATtiny13Aã³ã³ãããŒã©ãŒã¯ãããã€ã¹ã®å¿èéšãåã«èŠæ±ããŸãããããã¯ã䜿ãããããšå®ãã«å ããŠãæãªããã®æž©ãããŠæãããã¥ãŒãDIPã±ãŒã¹ã§ãŸã å©çšå¯èœã§ãã åœåãå
¥å/åºåã®æ°ããããã°ã©ã ãšRAMã®éã«è³ããŸã§ããã®ãããªå°ããªã³ã³ãããŒã©ãŒã®æ©èœã§ããããã¹ãŠã®é¢ã§åé·ã§ããããã«èŠããŸãããããåç¥ã®ããã«ãé£æ¬²ã«ã¯é£äºã䌎ããŸãã ãã®çµæãå°æ¥ãèŠæ®ããŠããã®ã±ãŒã¹ã®æçµçã¯è¶
å°ååè·¯ã®ãã¹ãŠã®çµè«ã§ããããšãå€æãã空ãããã°ã©ã ã¡ã¢ãªã¯2ããŒã¹ä»¥äžã§ããã
ãªã³ããŒããããã¯ãŒã¯ã®é»å§ã枬å®ããããã«ããã€ã¯ãã³ã³ãããŒã©ãŒã¯ADCã«ãªã³ã¯ããã1ã€ã®å
¥åã®ã¿ãå¿
èŠãšããŸããã ããã«2ã€ã®è«ççãªåºåã¯ãæ¶è²»è
ã管çããããšã§ããã ãŸãããããžã¿ã«ããžã®æçµçãªç²Ÿç¥ç移è¡ã®åŸã2ã€ã®ç¡æã®GPIOãããžãã¹ã«é©åãããããšããèŠæãããã決å®ã¯éããªãè¡ãããŸããã åã³å¯ãã®äžã§ãã¹ã¿ãŒã¿ãŒãã²ã©ãé ãããè£ãç®ã§ãšã³ãžã³ãåãããšããåè·¯ãšã¢ã«ãŽãªãºã ã«æž©åºŠã»ã³ãµãŒãååšããããšã¯éåžžã«æçšã§ãããšæãããŸããã ãã®çµæã2çªç®ã®ADCã䜿çšããŠæž©åºŠã枬å®ããŸããã ãããŠããµãŒãã¹ã¿ãå¿
èŠãªãšãã«ã ãé»æµãæ¶è²»ããããã«ãæåŸã®æ®ãã®è«çåºåããé»åãäŸçµŠããããšã決å®ãããŸããã
ãã®çµæãããã€ã¹å³ã¯ãã®ãããªæçµçãªãã©ãŒã ãååŸããŸããã
ããã§ã¯ãæå°éã®è©³çŽ°ã衚瀺ãããŸããããã®äžã«ã¯ãããããã®å¯Ÿè±¡ãšãªããã®ã¯äœããããŸããã èŠç¹ã«ã€ããŠç°¡åã«èª¬æããŸãããã
é»æºã®å Žåãã³ã³ãããŒã©ã«ã¯1.8ã5.5 Vã®å®å®ããé»å§ãå¿
èŠã§ããã€ãŸããåè·¯å
ã«ãªã³ããŒããããã¯ãŒã¯ã®é»å§ãå¿
èŠãªã¬ãã«ãŸã§äœäžãããå®å®åšãå¿
èŠã§ãã çãšãã®èŠ³ç¹ããã¯ãæä»çã«ãã«ã¹éå§ã³ã³ããŒã¿ã®å Žæãããããã«èŠãããããããŸããããããã¯äžèŠããã ãã§ãã äºå®ãATtiny13Aã¯ãæããšãã«ã®ãŒéçŽåã®åäœã¢ãŒãïŒåšæ³¢æ°8 MHzãã¢ã¯ãã£ãã³ãŒãå®è¡ïŒã§ã6 mA以äžããæ¶è²»ããŸããã ãã®æ¹åŒã§ã¯ãã³ã³ãããŒã©ãŒã¯99ïŒ
ã®æéã§ãã£ãŒãã¹ãªãŒãã¢ãŒãã«ããã1.2 MHzã®åšæ³¢æ°ã§åäœãããããå¹³åæ¶è²»é»åã¯çŽ15ÎŒAæªæºã«ãªããŸãã ããã«ãå¶åŸ¡ãã©ã³ãžã¹ã¿ã®ããŒã¹é»æµã«çŽ80 µAïŒäž¡æ¹ã®è² è·ããªã³ã®å ŽåïŒã ããŠãã»ãã®äžç¬ããµãŒãã¹ã¿ã®é»åãäœåããå¹³åé»æµã«çŽ25ãã€ã¯ãã¢ã³ãã¢ãè¿œå ãããŸãã ãããŠããæ¶è²»é»åã120 µA以äžã®è² è·ã®ããã«ãã«ã¹ã³ã³ããŒã¿ããããã¯ããããšã¯äŸ¡å€ããããŸããïŒããšãã質åãžã®åçã§ãã ãããŠãã¢ããã°æž¬å®ãæ±ã£ãŠãããšèãããšãééããªã䟡å€ããããŸããã ãã®ãããäžè¬çãª78L05ã®æ©èœçã¢ããã°ã§ããLP2950ãªãã¢ã¹ã¿ãã©ã€ã¶ãŒã䜿çšãããŸããããã¯ããã«çµæžçã§ãã ãã®ã³ã³ããŒã¿ã¯ãåºåã§æ倧100 mAã®é»æµãäŸçµŠã§ããŸãããæãã人ã®æ¶è²»é»æµã¯75 µA以äžã§ãã
ãªã³ããŒããããã¯ãŒã¯ã®åå§åšã¯ããã§ããŒãã€ãªãŒããšã³ã³ãã³ãµã§ä¿è·ãããŠãããæ倧15 Vã®é»å§ã枬å®ã§ããŸãã
ç§ã¯ä»ããã®ãããªæ±ºå®ã®ããã«æ¹å€ã®æ³¢ãç§ã襲ãããšãç¥ã£ãŠããŸãããç§ãã¡ã¯å®¢èŠ³çã§ãã 第äžã«ãç§ã¯è¡æãéçºããŠããŸããã第äºã«ãçœå®³ã«ã€ãªãããããªåäžã®èŠå ã¯ãããŸããã ã·ã§ã«ããŒæµæãé«ãããã§ããŒãã€ãªãŒãã¯ãæãæ²èŠ³çãªã·ããªãªã§ãããã£ãã€ããŒãæµããé»æµãããã¯ããã«å€§ããªé»æµãè¿åãããããšãã§ããŸãã é«åšæ³¢ãã«ã¹ããããã§ããŒãã€ãªãŒãã®é床ãååã§ãªãå Žåãã³ã³ãã³ãµC2ãä¿è·ããŸãïŒæµæR7ã䜿çšãããšãã«ãããªãåšæ³¢æ°ãããã7 Hzã®ããŒãã¹ãã£ã«ã¿ãŒãäœæãããŸãïŒã D1ãšR6ã¯ãã¹ããŒã ãäºãã«èœã¡ãªãããšãããçšåºŠä¿èšŒããŸãã ãããŠãçŽç·æ§ãå¿ããŠã¯ãªããŸããããã®ãããªå Žæã§ã®ã¬ã«ãããã¯çµ¶çžã®æ¹æ³ã¯ãéã®çè«èšç®ãå®å
šã«éçŸå®çã«ããŸããå°ãªããšããããã¿ã€ããèŒæ£ããå¿
èŠããããŸãããããã¯å¿
èŠãããŸããã
ååšåšã®åºåã€ã³ããŒãã³ã¹ã¯ãADCä¿¡å·æºã«æšå¥šããã10 kOhmã®10åã§ãããã³ã³ãã³ãµC2ã®ãããã§æž¬å®äžã®åé¡ã¯ãããŸããã
äžè¬ã«ãããŒã¿ã·ãŒãã«ãããšãAVRã³ã³ãããŒã©ãŒã®ADCåè·¯ã®å
¥åã€ã³ããŒãã³ã¹ã¯ãå°ãªããšã100MΩãšå®£èšãããŠããŸãã ãã ããããã«ãããããããåãããŒã¿ã·ãŒãã§ã¯ãæ倧10 kOhmã®å
éšæµæãæã€ãœãŒã¹ã®äœ¿çšãæšå¥šããŠããŸãã ãªããã ãã€ã³ãã¯ããã®ADCèªäœã®åäœåçã§ãã ã³ã³ããŒã¿ãŒã¯é次è¿äŒŒã®åçã§åäœãããã®å
¥ååè·¯ã¯æµæãšã³ã³ãã³ãµãŒããã®ããŒãã¹ãã£ã«ã¿ãŒã§ãã 10ãããã®ãµã³ãã«ãååŸããããšã¯å埩çã§ããã枬å®æéå
šäœã§ã³ã³ãã³ãµã枬å®é»å§ãŸã§å
é»ããå¿
èŠããããŸãã ãœãŒã¹ã®åºåã€ã³ããŒãã³ã¹ã倧ããããå Žåãã³ã³ãã³ãµã¯å€æããã»ã¹äžã«çŽæ¥å
é»ããç¶ããçµæã¯äžæ£ç¢ºã«ãªããŸãã ç§ãã¡ã®å Žåãéé»å®¹éC2ã¯ADCãã£ã«ã¿ãŒã®å®¹éã®7000å以äžã§ããã€ãŸãã枬å®æã«ã¹ã€ããããªã³ã«ãªã£ãŠãããšãã«ãããã®ã³ã³ãã³ãµãŒéã§é»è·ãååé
ããããšãå
¥åé»å§ã¯1/7000以äžãã€ãŸã7åæžå°ããŸã10ãããADCã®ç©¶æ¥µã®ç²ŸåºŠãããäœãã 確ãã«ããã®ããªãã¯ã¯ãéã«å€§ããªäŒæ¢ãããåäžã®æž¬å®ã«å¯ŸããŠã®ã¿æ©èœããããšã念é ã«çœ®ãå¿
èŠããããŸãããã®ãããçµæãå¹³åããŠè€æ°ã®é£ç¶æž¬å®ã®ãµã€ã¯ã«ãè¿œå ããŠå¶åŸ¡ããã°ã©ã ããæ¹åãããªãã§ãã ããã
å¶åŸ¡ãããé»æºã®ååšã«ãããµãŒãã¹ã¿ãåããååšåšã¯ãæšå¥šå®æ Œã䜿çšããŠæ§ç¯ãããŸãã NTCLE100E3ã¯ã»ã³ãµãŒãšããŠäœ¿çšãããŸãããå¶éã¯ãããŸãããã»ãŒåãå®æ Œã®ãµãŒãã¹ã¿ãŒã䜿çšã§ããŸããäž»ãªããšã¯ããœãŒã¹ã³ãŒãå®æ°ã®ç¹æ§ã«å¯Ÿå¿ããä¿®æ£ãè¡ããåå§åšã®é»å§ãæ£ãã枩床å€ã«å€æãããããã«ããããšã§ãã
å¶åŸ¡ããŒãšããŠã蚱容å¯èœãªãªãŒãã³ãã£ãã«æµæãšå°ãªããšã30ãã«ãã®æ倧ãã¬ã€ã³-ãœãŒã¹é»å§ãæã€ä»»æã®ã¿ã€ãã®ãã¯ãŒPãã£ãã«MOSFETã䜿çšãããŸãã äžèšã®åè·¯ã¯ç°ãªããã©ã³ãžã¹ã¿ã䜿çšããŠããŸãã ããã¯ãç°ãªãé»å§ãåãæ¿ããå¿
èŠããããããããã®ã¿ã€ããç¹å®ã®äœæ¥æ¡ä»¶ã«åãããŠéžæãããŠããããã§ãã äžéšã®ãã©ã³ãžã¹ã¿ã¯ããé«é»å§ã§ããå¿
èŠããããå¯èœã§ããã°äžéšã®ãã©ã³ãžã¹ã¿ã®ãªãŒãã³ãã£ãã«æµæãæå°ã«ããå¿
èŠããããŸãã ãã ãããã®æ±ºå®ã¯ãããã€ã¹ã¹ã€ããã³ã°åè·¯ïŒäžèšåç
§ïŒã«ãã£ãŠæ±ºå®ãããŸããå¥ã®èŠçŽ ãå«ãããšãäžåŽã®ãã©ã³ãžã¹ã¿ã®èŠä»¶ã¯ç°ãªãå ŽåããããŸãã
é»æºã¹ã€ãããå¶åŸ¡ããããã«ãäžå¯Ÿã®åäžã®ãã€ããŒã©ãã©ã³ãžã¹ã¿ã䜿çšãããŸãã æåã¯ããããã®ãã©ã³ãžã¹ã¿ã¯äžèŠã«èŠãããããããŸããããããã§ã¯ããã»ã©åçŽã§ã¯ãããŸããã 絶çžã²ãŒããåããé»çå¹æãã©ã³ãžã¹ã¿ã¯ãã²ãŒãã«å¿
èŠãªæ¥µæ§ã®é»å§ããã§ã¯ãªããç¹å®ã®ãããå€ã¬ãã«ã«éããåŸã«ã®ã¿éãå§ããŸããããã¯ãããŒã¿ã·ãŒãã«ãã²ãŒã-ãœãŒã¹éãããå€é»å§ããšããååã§è¡šç€ºãããéåžžã¯2..4 Vã§ãããã æ°ããŸãã ã³ã³ãããŒã©ãŒã®åºååè·¯ã¯ã2ã€ã®è«çã¬ãã«ã圢æã§ããŸããé»å§ããŒãã«ãªãåŸåãããè«çã0ãã é»å§ãäŸçµŠãããåŸåãããè«çã1ãã 5ãã«ãã§é§åããå Žåããããã¯ããããçŽ0ããã³5 Vã®é»å§ã«ãªããŸãã ãã®çµæã12ãã«ãã®ãœãŒã¹ãåãæ¿ãããšãã²ãŒãã®è«çã0ãããœãŒã¹-ã²ãŒã12-0 = 12ãã«ãã®é»å§å·®ãäœæãããã¯ãŒãã©ã³ãžã¹ã¿ãéããŸãã ãã¹ãŠæ£åžžã§ããããã«èŠããŸããã5 Vã®é»å§ãæã€è«çã1ãã¯ããœãŒã¹ãšã²ãŒãéã«12-5 = 7ãã«ãã®é»å§ãçæãããã¯ãŒãã©ã³ãžã¹ã¿ã¯ãŸã éãããŸãŸã§ãã ãããã£ãŠã5ãã«ãã®å¶åŸ¡ä¿¡å·ã¯ããŒãå¶åŸ¡ã§ããã7..9ãã«ããè¶
ããé»å§ãæŽæµããŸãã ãããã£ãŠãå¶åŸ¡ãã€ããŒã©ãã©ã³ãžã¹ã¿ã¯ãå®éã«ã¯ãå¶åŸ¡é»å§ã5ãã«ããããªã³ããŒããããã¯ãŒã¯ã®é»å§ã«äžããå¢å¹
åšã»ã©ä¿¡å·ããŒã§ã¯æ©èœããŸããã
åå¶åŸ¡ãã©ã³ãžã¹ã¿ã®ããŒã¹åè·¯ã®æµæã¯ãã³ã³ãããŒã©åºåã®é»æµãå¶åŸ¡ããã®ã«ååãªã¬ãã«ã«å¶éããã ãã§ãã åè·¯ã®åäœã«åœ±é¿ãäžããããšãªããå®æ Œã2ã3åã«æžããããšãã§ããŸãã
å¶åŸ¡ãã©ã³ãžã¹ã¿ãLM393Nã«åºã¥ãã¢ããã°åè·¯ã«ãªãããšã¯ç°¡åã«ããããŸãã åé¡ã¯ãéžæãããã³ã³ãã¬ãŒã¿ã®åºå段ããªãŒãã³ã³ã¬ã¯ã¿åè·¯ã«åŸã£ãŠæ§ç¯ãããŠããããšã§ããã€ãŸãããã®åºåã¯åã«ã¿ãŒããã«ãã©ã³ãžã¹ã¿ã³ã¬ã¯ã¿ã®åºåã§ãã ãã®ãããªæ§æåçã§ã¯ãåºå段ã®è² è·ãçæããããã«è¶
å°ååè·¯ã«è¿œå ã®è©³çŽ°ãæããå¿
èŠããããŸãããäžæ¹ã§ãè¶
å°ååè·¯ã¯éåžžã«æè»ã«ãªããŸãã ã³ã³ãã¬ãŒã¿ã¯ããªãŒãã³ã³ã¬ã¯ã¿ã«ãããã³ã³ãã¬ãŒã¿èªäœã«é»åãäŸçµŠããé»æºãšäºææ§ãããã ãã§ãªãã蚱容å¯èœãªé»æµæºãå¶åŸ¡ã§ããŸãã
ãã¯ãŒMOSFETã®ãããå€é»å§ãå¶éããããšã¯ãåè¿°ã®ããã«é«é»å§ã ãã§ãªããäœé»å§ã«ãæå¹ã§ãããšèšããªããã°ãªããŸããã çµå±ããã©ã³ãžã¹ã¿ã®æå°éæŸé»å§ãããšãã°4ãã«ãã§ããå Žåã3.3 VãœãŒã¹ãåãæ¿ãããšãã²ãŒããã°ã©ã³ãã«æ¥ç¶ããŠãããœãŒã¹ãšã²ãŒãã®éã«ææã®é»å§å·®ãçããããã©ã³ãžã¹ã¿ã¯éãããŸãŸã«ãªããŸãã ãããã£ãŠã5ãã«ãã¯ããããããéžæãããã©ã³ãžã¹ã¿ã«ãã£ãŠç¢ºå®ã«åãæ¿ããããšãã§ããæå°é»å§ã§ãã
ã«ã¹ã¿ãã€ãº
ããã€ã¹ã®ã»ããã¢ããã¯ãåå¥ã®äŒè©±ã§ãã äžæ¹ã§ã¯ãåè·¯å
ã«åäžã®ãã¥ãŒãã³ã°èŠçŽ ã¯ãããŸããããä»æ¹ã§ã¯ã0.1 Vãäžåããªã粟床ã§é»å§ã枬å®ããŸãã 2ã€ã®æ¹æ³ããããŸãã 1ã€ç®ã¯ã蚱容誀差ãå°ãªããšã1ïŒ
ïŒãŸãã¯ããè¯ã0.1ïŒ
ïŒã®æµæR6ãR7ãããã³R8ã䜿çšããããšã§ãã 2ã€ç®ã¯ãåŸæ¥ã®æµæåšã䜿çšããŠãå®éã®æµæå€ã枬å®ããããã°ã©ã ã®ãœãŒã¹ã³ãŒãã®ä¿æ°ãä¿®æ£ããããšã§ãã
æåã®æ¹æ³ã¯å€§éçç£ã«ã¯é©ããŠããŸãããå¿
èŠãªé«ç²ŸåºŠå€ã®æ€çŽ¢ã«ç
©ããããªãã»ããã¯ããã«é
åçã§ãããã®ããã2çªç®ã®æ¹æ³ã«é²ã¿ãŸãããã æµæã¯éåžžã®ãã«ãã¡ãŒã¿ãŒã§æž¬å®ã§ããŸãããããã§ã®ç²ŸåºŠã¯ååã§ãã ãã1ã€ã®æž¬å®å¯Ÿè±¡ã¯ãåè·¯ã«äŸçµŠããå®å®åšã®é»å§ã§ãã ã³ã³ãããŒã©ã®ADCã¯ããŸããŸãªã¢ãŒãã§åäœã§ããŸãããããã€ãã®çç±ã«ãããããžã¿ã«å€æçµæãé»æºé»å§ã«å¯ŸããŠã«ãŠã³ãããããã®ã䜿çšããæ¹ã䟿å©ã§ãã ãã®ãããå¯èœãªéãæ£ç¢ºã«ç¥ãããšãéèŠã§ãã
èšç®ã¯éåžžã«ç°¡åã§ãæµæåå²åšã®åå²ä¿æ°ãšãã¢ããã°ããããžã¿ã«ãžã®å€æäžã®LSBã§ã®çµæã®å€æã®å²åãèšç®ããããšããæããŸãã
Uxã¯åå§åšã®å
¥åé»å§ã§ãã
Ruã¯ãUxãäŸçµŠãããååšåšã®äžè
ã®æµæã§ãã
Rdã¯ãïŒã°ã©ã³ãã«æ¥ç¶ãããïŒãã£ãã€ããŒã®äžã¢ãŒã ã®æµæã§ãã
Uref-ADCã®åºæºé»å§ïŒã³ã³ãããŒã©ãŒã®äŸçµŠé»å§ïŒ;
1024-10ãããADCã®åºåã§ã®é¢æ£å€ã®æ°ã
LSBã¯ãããã°ã©ã ãADCããååŸããæ°å€ã§ãã
åå§åšR6-R7ããå§ããŸãããã ããšãã°ãå³ã«ç€ºãããŠãããã®ãšå®å
šã«äžèŽããå®éã®æµæãæ¡çšããŸãã ãŸããæ£ç¢ºã«5.0 Vã®é»åã䜿çšããŸãïŒé»å§13.5ãã«ãã®å€æçµæãèšç®ããäŸïŒ
åæå€ã®æž¬å®ãé©åã«è¡ãããŠããã°ãçµæã¯ããã«ã¹ã±ãŒã«ã®ãã¹ãã§èª¿æŽããã®ã§ã¯ãªãããã®ãŸãŸäœ¿çšããã®ã«ååãããã§ãã
枩床åå²åšã®èšç®åŒã¯ãååãšããŠå€ãããŸãããRuã®ã¿ãå€æ°ã«ãªããUxã¯Urefã«çãããªããŸãã çµæã¯æ¬¡ã®ããã«ãªããŸãã
ããšãã°ãåè·¯ããR8ã®å€ãååŸãã0°Cã®æž©åºŠã§NTCLE100E3ã®ããŒã¿ã·ãŒãããR9ã®å€ãååŸããŸãã
誰ãããçŽåã«æ¥ç¶ãããR8ãšR9ããã®è² è·ã®åœ±é¿äžã§ãããžãã¯åºåã®é»å§ãæ²ããããããªããšèšããªãããã¡ãã圌ã¯æ£ããã§ãããã çè«çã«ã ããããå®éã«ã¯ãæãæ²èŠ³çãªã·ããªãªã§ããããµãŒãã¹ã¿R9ã®æµæããŒãã«ãªããšãã³ã³ãããŒã©ãŒåºåããã®æ¶è²»ã¯0.5 mA以äžã«ãªããç®ç«ã£ãäœäžã¯çããŸããã å°ãªããšããã£ãŒã«ããã¹ãäžã0.01 Vã®ç²ŸåºŠã®é»å§èšã§ã¯ãã®äœäžãæ€åºã§ããŸããã§ããã
ããŸããŸãªæž©åºŠã§ã®ãµãŒãã¹ã¿ã®æµæå€ã¯ããŒã¿ã·ãŒãã«èšèŒãããŠããŸããããã¡ããèªåã§æž¬å®ããæ¹ãè¯ãã§ãããã åŸè
ã¯ããã€ãã®åé¡ãåŒãèµ·ããå¯èœæ§ãããããã劥åæ¡ãšããŠããã枩床ã§å®éã®æµæã枬å®ããããŒã¿ã·ãŒãããä»ã®ãã¹ãŠã®æž©åºŠã§ã®æµæã®è£æ£ä¿æ°ãèŠã€ããããšãææ¡ããŸãã ã»ãšãã©ã®ãµãŒãã¹ã¿ã¯ãæµæã®æž©åºŠäŸåæ§ãã»ãŒç·åœ¢ã§ããããããã®æ¹æ³ã¯éåžžã«ä¿¡é Œæ§ãé«ããšèããããšãã§ããŸãã
å®éãããã°ã©ã å
ã®ãã¹ãŠã®å®æ°ã¯ãå
¬å·®ãå°ããéšåã䜿çšããå Žåã«ãå®éã®å€ãã¹ããŒã ãšå®å
šã«äžèŽããŠãããšããä»®å®ã«åºã¥ããŠèšç®ãããŸãã
ãã¡ãŒã ãŠã§ã¢
AtmelStudioïŒgcc-avr 5.4.0ã³ã³ãã€ã©ïŒã®å®å
šãªãããžã§ã¯ãã¢ãŒã«ã€ãã¯
ããããããŠã³ããŒãã§ã
ãŸã ããŸããæ¢ã«çµã¿ç«ãŠããã
hexãæçš¿ã§ããŸãã ãããŠããœãŒã¹ãã¡ã€ã«ã®catãªã¹ãã®äžã«ãé ããŸã§è¡ããªãããã«ããŸãã
ãœãŒã¹ã³ãŒã
#include <avr/io.h>
#include <avr/wdt.h>
#include <avr/sleep.h>
#include <avr/interrupt.h>
#include <util/delay.h>
#define TEMPERATURE_OVERHEAT 753
#define TEMPERATURE_GIST 8
#define VOLTAGE_GIST 3
#define INTERVAL WDTO_1S
#ifndef DBG
#define CELL_CHANGE_TIMEOUT 90
#define OVERHEAT_TIMEOUT 300
#else
#define CELL_CHANGE_TIMEOUT 2
#define OVERHEAT_TIMEOUT 3
#endif
typedef unsigned char bool;
#define true 0 == 0
#define false 0 != 0
typedef enum {st_none = 0b00, st_primary = 0b01, st_secondary = 0b10, st_both = 0b11} t_states;
typedef enum {adc_temperature, adc_voltage} t_measure;
typedef enum {move_null, move_up, move_down} t_movement;
struct t_coordidates {
signed char row, col;
};
struct t_correction {
t_movement voltage, temperature;
};
#define CELLS_ROWS 3
#define CELLS_COLS 5
const t_states CELLS[CELLS_ROWS][CELLS_COLS] = {
{st_both, st_both, st_both, st_primary, st_none},
{st_both, st_both, st_primary, st_none, st_none},
{st_both, st_primary, st_none, st_none, st_none}
};
const unsigned int ROWS_EDGES[CELLS_ROWS - 1] = {
241,
157
};
const unsigned int COLS_EDGES[CELLS_COLS - 1] = {
864,
800,
787,
768
};
unsigned int overheat_rest_time = 0;
unsigned char cell_change_time = 0;
unsigned char no_cur_cell_time = 0;
#define NULL_CELL (struct t_coordidates){.col = -1, .row = -1}
#define NULL_CORRECTION (struct t_correction){.voltage = move_null, .temperature = move_null}
struct t_correction moved_from = NULL_CORRECTION;
struct t_coordidates cur_cell = NULL_CELL, //
next_cell = NULL_CELL;
static void init_pins() {
DDRB |= (1 << PB0) | (1 << PB1) | (1 << PB3);
PORTB &= ~(1 << PB0) & ~(1 << PB1) & ~(1 << PB3);
}
static void toggle_thermal_sensor(bool state) {
if(state) {
PORTB |= (1 << PB1);
_delay_ms(5);
} else {
PORTB &= ~(1 << PB1);
}
}
static unsigned int measure_adc(t_measure measure) {
if(measure == adc_temperature) {
toggle_thermal_sensor(true);
ADMUX = 0b10;
} else {
ADMUX = 0b01;
}
ADCSRA = (1 << ADPS2) |
(1 << ADIE) |
(1 << ADEN);
set_sleep_mode(SLEEP_MODE_ADC);
do {
sleep_cpu();
} while(ADCSRA & (1 << ADSC));
ADCSRA = 0;
toggle_thermal_sensor(false);
return ADC;
}
static void init_interrupts(void) {
sleep_enable();
WDTCR = (1 << WDCE) | (1 << WDE);
WDTCR = (1 << WDTIE) | INTERVAL;
sei();
}
static void toggle_loads(t_states states) {
unsigned char port = PORTB & ~((1 << PB3) | (1 << PB0)),
bits = (((states & st_primary) >> 0) << PB3) |
(((states & st_secondary) >> 1) << PB0);
PORTB = port | bits;
}
static bool cells_equal(struct t_coordidates cell1, struct t_coordidates cell2) {
return cell1.row == cell2.row && cell1.col == cell2.col;
}
static signed char get_cell_row(unsigned int temperature) {
signed char row = 0;
while(row < CELLS_ROWS - 1) {
if(temperature >= ROWS_EDGES[row]) {
return row;
} else {
++row;
}
}
return CELLS_ROWS - 1;
}
static signed char get_cell_col(unsigned int voltage) {
signed char col = 0;
while(col < CELLS_COLS - 1) {
if(voltage >= COLS_EDGES[col]) {
return col;
} else {
++col;
}
}
return CELLS_COLS - 1;
}
static void get_row_edges(signed char row, unsigned int *upper, unsigned int *lower) {
*upper = row > 0 ? ROWS_EDGES[row - 1] : 0xffff - TEMPERATURE_GIST;
*lower = row < CELLS_ROWS - 1 ? ROWS_EDGES[row] : TEMPERATURE_GIST;
}
static void get_col_edges(signed char col, unsigned int *upper, unsigned int *lower) {
*upper = col > 0 ? COLS_EDGES[col - 1] : 0xffff - VOLTAGE_GIST;
*lower = col < CELLS_COLS - 1 ? COLS_EDGES[col] : VOLTAGE_GIST;
}
static void gisteresis_correction(struct t_coordidates* new_cell, unsigned int temperature, unsigned int voltage) {
unsigned int upper_edge, lower_edge;
get_row_edges(cur_cell.row, &upper_edge, &lower_edge);
if(new_cell->row > cur_cell.row && moved_from.temperature == move_up && temperature >= lower_edge - TEMPERATURE_GIST) {
--new_cell->row;
}
if(new_cell->row < cur_cell.row && moved_from.temperature == move_down && temperature <= upper_edge + TEMPERATURE_GIST) {
++new_cell->row;
}
get_col_edges(cur_cell.col, &upper_edge, &lower_edge);
if(new_cell->col > cur_cell.col && moved_from.voltage == move_up && voltage >= lower_edge - VOLTAGE_GIST) {
--new_cell->col;
}
if(new_cell->col < cur_cell.col && moved_from.voltage == move_down && voltage <= upper_edge + VOLTAGE_GIST) {
++new_cell->col;
}
}
static unsigned char absolute(signed char value) {
return value >= 0 ? value : -value;
}
static void calc_movement(struct t_coordidates new_cell) {
moved_from = NULL_CORRECTION;
if(!cells_equal(new_cell, NULL_CELL) && !cells_equal(cur_cell, NULL_CELL)) {
if(absolute(new_cell.row - cur_cell.row) == 1) {
moved_from.temperature = new_cell.row < cur_cell.row ? move_up : move_down;
}
if(absolute(new_cell.col - cur_cell.col) == 1) {
moved_from.voltage = new_cell.col < cur_cell.col ? move_up : move_down;
}
}
}
static void set_next_cell(struct t_coordidates cell) {
next_cell = cell;
cell_change_time = 0;
}
static void set_cur_cell(struct t_coordidates cell) {
cur_cell = cell;
no_cur_cell_time = 0;
set_next_cell(NULL_CELL);
}
static void change_cell(struct t_coordidates new_cell) {
if(cells_equal(new_cell, NULL_CELL)) {
toggle_loads(st_none);
} else {
toggle_loads(CELLS[new_cell.row][new_cell.col]);
}
calc_movement(new_cell);
set_cur_cell(new_cell);
}
static void main_proc(void) {
unsigned int temperature, voltage;
struct t_coordidates cell;
if(overheat_rest_time) {
--overheat_rest_time;
} else {
temperature = measure_adc(adc_temperature);
if(temperature >= TEMPERATURE_OVERHEAT) {
change_cell(NULL_CELL);
overheat_rest_time = OVERHEAT_TIMEOUT;
} else {
voltage = measure_adc(adc_voltage);
cell.col = get_cell_col(voltage);
cell.row = get_cell_row(temperature);
if(cells_equal(cur_cell, NULL_CELL)) {
change_cell(cell);
} else {
gisteresis_correction(&cell, temperature, voltage);
if(cells_equal(cell, cur_cell)) {
set_next_cell(NULL_CELL);
no_cur_cell_time = 0;
} else {
if(no_cur_cell_time++ > CELL_CHANGE_TIMEOUT) {
change_cell(cell);
} else {
if(cells_equal(next_cell, NULL_CELL) || !cells_equal(next_cell, cell)) {
set_next_cell(cell);
} else {
if(++cell_change_time >= CELL_CHANGE_TIMEOUT) {
change_cell(cell);
}
}
}
}
}
}
}
}
ISR(WDT_vect) {
WDTCR |= (1 << WDTIE);
}
EMPTY_INTERRUPT(ADC_vect);
int main(void) {
init_pins();
init_interrupts();
while(true) {
set_sleep_mode(SLEEP_MODE_PWR_DOWN);
sleep_cpu();
main_proc();
}
}
: L:0x6A, H:0xFF.
. , â , â . , . :
, .
, . , . , , .
, - , . , , . , - , , , , . .. - , , . . . , , .
, . , , , 12.5 , , 12.4 . . , .
, , , . , . «» 8-9 .
, . «» , . , , «» , - (, , , , , - ).
, +50â°C , . , , , . .
«», , (watchdog). .
, â . . Watchdog , , , . , , , watchdog. , , .
. 1006 , - .
, , . , O2, , Os , 1024 . -, .
.