ããã€ãã®çç±ã«ããããã¯ãŒãšã¬ã¯ãããã¯ã¹ã®éçºã¯ãšã¬ã¯ãããã¯ã¹ã®æãé£ããåéã®1ã€ã§ãããšã©ãŒäŸ¡æ Œã¯éåžžã«é«ãããã¯ãŒã³ã³ããŒã¿ãŒã®éçºã¯åžžã«æ人ãDIYã¯ãŒã«ãŒãªã©ãæ¹ãã€ããŠããŸãã 確ãã«ããªãã¯ããªãã®ãããžã§ã¯ãã®ããã«åŒ·åãªé»æºãäœããããšæããŸãããïŒ ãŸãã¯ãæ°kWã®ãªã³ã©ã€ã³UPSãå£ããŠããŸãããïŒ ãããšããã¯ãŒã¯ã·ã§ããã§ã®chastotnikïŒ
ä»æ¥ã¯ãèªåã®å°ããªãªãŒãã³ãããžã§ã¯ãã«ã€ããŠããŸãã¯ãã¯ãŒãšã¬ã¯ãããã¯ã¹éçºã®äžçã«è¶³ãèžã¿å ¥ããåæã«çãç¶ããããšãæãã§ãã人ãã¡ã察象ã«ãããããžã§ã¯ãã«ã€ããŠèª¬æããŸãã å¯èœæ§ã®ãã¢ã³ã¹ãã¬ãŒã·ã§ã³ãšããŠã12V DCãã230V ACãŸã§ã®é»å§ã€ã³ããŒã¿ãŒããµã€ã³åºåã§15åã§çµã¿ç«ãŠãæ¹æ³ã瀺ããŸãã èå³ããããŸããïŒ è¡ããïŒ
ãããžã§ã¯ãã®çç±
éå»æ°å¹Žéã§ãé»åå€æåšã®éçºã¯ç§ã®æ³šæã®çŽ90ïŒ ãå ããŸãããäž»ãªäººä»¶è²»ã¯äž»ã«ãœãããŠã§ã¢éçºãšãããã¿ã€ãã³ã°ã«è²»ããããåè·¯èšèš+ç·ã³ã¹ãã®æçµçãªããŒããã¬ãŒã¹ã¯éåžž10-15ïŒ ä»¥äžã§ãã ããã§ããœãããŠã§ã¢éçºãå«ããããã¿ã€ãã³ã°ããã»ã¹ãäœããã®åœ¢ã§åæžããã³æé©åããå¿ èŠããããšããç解ãåŸãããŸãã
ãã€ãã®ããã«å°ãªããšã2ã€ã®ãªãã·ã§ã³ããããŸãïŒãããµã¹ã€ã³ã¹ãã«ã¡ãããŸãã¯ã€ã³ãã£ããªã³ããæ¢è£œã®ãããã°ãè³Œå ¥ããŸãããéåžžã¯ç¹å®ã®ã¿ã¹ã¯ã«åãããŠèª¿æŽããã500ãã«ãã5,000ãã«ã®è²»çšãããããŸããå ±ãããŸããã
2çªç®ã®ãªãã·ã§ã³ã¯èªåã§è¡ãããšã§ããã培åºçã«è¡ãããšã¯ãéã®+1ãªããžã§ã³ããéå§ããããšãšã»ãŒåãã§ããã顧客ã«è¿œå è²»çšãçºçããŸãã 培åºçã«è¡ããªããšããã€ãã®ããã«ãã¹ãŠã錻氎ã«ãªããã©ããã§ãã¬ã€ã¢ãŠããã³ã³ããŒãã³ããããã³ã¿ã€ãã³ã°ãŸã§äœããèœã¡ãŸãã
ãã°ããããŠãç§ã¯æãæçœãªè§£æ±ºçã«æ³šç®ãéããŸããã ãšãŠãåçŽã§æçœãªã®ã§ãé·ãéããªãåãTIãã€ã³ãã£ããªã³ããŸã ããããããªãã£ãã®ããšæã£ãŠããŸããã ä»ãç§ã¯ç§ã®ãåçºãã«ã€ããŠã話ããŸãã
æã人æ°ã®ããé»åã³ã³ããŒã¿ããããžã®ããã€ããèŠãŠã¿ãŸãããã
ããäžåºŠæ³šææ·±ãèŠãŠãã ããã ã¹ãã©ããã䜿ããã«ãæ確ã«ããããã«éèŠãªã³ã³ããŒãã³ãã®ã¿ããã€ã³ãããŸããã ãããã®ããããžã«ã¯å ±éç¹ããããŸããïŒ æåã«ç®ãåŒãã®ã¯ãäžé£ã®å ±éç¹ã§ãã
- ãã¹ãŠã®ããããžã«ã¯ãã³ã³ãã³ãµããã©ã³ãžã¹ã¿ãã€ã³ãã¯ã¿ã³ã¹ïŒã€ã³ãã¯ã¿ãŸãã¯ãã©ã³ã¹ïŒã®äž»èŠã³ã³ããŒãã³ããå«ãŸããŸãã ãããã¯ãã¯ãŒãšã¬ã¯ãããã¯ã¹ã®3ã€ã®ã¯ãžã©ã§ãã
- ãã©ã³ãžã¹ã¿ã¯ã©ãã§ãåãããã«ãªã³ã«ãªãããããããããŒãããªããžãã圢æããŸãã ã»ãšãã©ãã¹ãŠã®ã³ã³ããŒã¿ãŒããããžã¯ãããããæ§ç¯ãããŸãã
- ããŒãããªããž+ã³ã³ãã³ãµãã³ãã«ããªã³ã«ãããªãã·ã§ã³ã¯ããã¹ãŠã®ããããžã§å€æŽãããããã§ã¯ãããŸããã ã€ã³ãã¯ã¿ã³ã¹ã®ã¿ã€ããšãããŒãããªããžã®ã¹ã€ããã³ã°ã®ãªãã·ã§ã³ãå€æŽãããŠããŸãã
ãã®ããšãããããŒãããªããž+ã³ã³ãã³ãµãã³ãã«ã®åœ¢åŒã®ç¹å®ã®æšæºã¢ãžã¥ãŒã«ã䜿çšãããšãå¿ èŠãªã€ã³ãã¯ã¿ãŸãã¯ãã©ã³ã¹ã®ã¿ãè¿œå ããããšã§ãä»»æã®ã³ã³ããŒã¿ãæ§ç¯ã§ãããšçµè«ä»ããããšãã§ããŸãã ãããã£ãŠããããã¿ã€ãã³ã°ãç°¡çŽ åããããã®æãããªè§£æ±ºçã¯ããã®ãããªã¢ãžã¥ãŒã«ã®äœæã§ããã
åãšæªã®æŠã
æ®å¿µãªããã1æ¥ãããã®éãããæéãšå¹³å¡ãªæ inessã圌ãã®ç¶æ ã決å®ããŸãã ç§ã¯1幎åã«ãã®ã¢ãžã¥ãŒã«ãäœæããå¿ èŠããããŸããããå®è£ ã¯æ¬¡ã®ã¹ããŒã¬ã³ã®äžã§çµ¶ãã移ãããŸãã- ãç§ã¯ééããªãæ¥é±æ«ã«ããïŒã
ããããã2ã€ã®ã€ãã³ãããªããã°ãã¢ã€ãã¢ã¯æ£ã«æ®ã£ãŠããã§ãããã æåã«ã1ãæã§2人ã®é¡§å®¢ãç§ã®ãšããã«æ¥ãŠã誰ããè€éã§å®è£ ãé¢çœãã£ãã³ã³ããŒã¿ãŒãæãã§ããŸããã 圌ã¯ãšãŒãããåºèº«ã§ãããšèããŠããŸããã圌ãã«ãšã£ãŠã¯å®äžããã ã£ããããããŸããïŒïŒäž¡æ¹ã®ãããžã§ã¯ãã¯ç§ã«ãšã£ãŠèå³æ·±ããã®ã§ããã PFC + 3ããªããžã³ã³ããŒã¿ãŒïŒäœçžã·ããïŒ+åææŽæµåš+ 3çžã€ã³ããŒã¿ãŒã ãããã¯ãã¹ãŠSiCäžã§éåžžã«ã³ã³ãã¯ãã§ãã äžè¬çã«ãç§ã¯2ã€ã®å€§ããªæ³šæãåããŸããããããããçŽ800人æãš6ã¶æã®æéã§ãã ãã®çµæãæé©åã®æ¹æ³ãæ¢ãããã«ã匷å¶ããããŸããã
第äºã«ã PCBwayã®äŒç€Ÿã®äººãã¡ãæããããç§ã«æçŽãæžããŠãã ãå€ãã®äººããããã圌ãã«ããŒãã泚æããååãç³ãåºãã 圌ãã¯ããªãŒãã³ããŒããŠã§ã¢ãããžã§ã¯ããã€ãŸãCERN-Open Source Hardwareã®ã€ãã·ã¢ãããéåžžã«ç©æ¥µçã«ãµããŒãããŠããŸãã ååã¯ç°¡åã§ãäž¡åœäºè ã«ãšã£ãŠç解ãããããã®ã§ãã圌ãã¯ç§ã®ãããžã§ã¯ãã®ããã«ç¡æã®æ²ç€ºæ¿ãæäŸããŠãããç§ã¯ããããéããŠãããªããæããªãä»ã®å Žæã®ãŠã§ããµã€ãã«èŒããŸãã ç§ã«ãšã£ãŠããã¯è¿œå ã®åæ©ã«ãªããŸããããããŠæãéèŠãªããšã«ã¯ãç§ã®è¯å¿ã¯æ確ã§ãã ããæ°å¹Žãç§ã¯ããããããããã¿ã€ãã®ããŒãã泚æããŠããã倧éçç£ã®ããã«ãç¥ãåããããŒãããŒã«ãããã«ã€ããŠäŒããŠããŸãã ããŠãããã®ããã«ãç§ã¯å°ããªãããžã§ã¯ãçšã®ç¡æã®ããŒãã®åœ¢ã®ãã³ãæã£ãŠããŸããããªãã¯ãã°ãã°ããã«æžãããšãã§ããŸãïŒïŒ
ãããŠãæ°·ãå£ãããããåè¿°ã®ã¢ãžã¥ãŒã«ã ãã§ãªãããã¯ãŒãšã¬ã¯ãããã¯ã¹éçºè ã®å šäœã®ã»ãããäœæããããããã¹ãŠã®äººãéããŠã¢ã¯ã»ã¹ã§ããããã«ããããšã決å®ãããŸããã
ãããžã§ã¯ãæ§é
èšäºã®åé ã§ãä»æ¥ã¯1ã€ã®éšåã«ã€ããŠã®ã¿ã話ãããããšããäŒãããŸãããããã¯ããŒãããªããžã®é»æºã¢ãžã¥ãŒã«ã§ã ã ããã ãã§ãSTM32-DiscoveryãArduinoãTMS320ãTL494ããŸãã¯ããã«ãããã®ããããã°ãããªã©ãå¶åŸ¡åè·¯ããã蟌ãã ãã§ã³ã³ããŒã¿ãŒãäœæã§ããŸãã ãã©ãããã©ãŒã ãMKãžã®ãã€ã³ãã¯äžåãããŸããã
ããã ãããããžã§ã¯ãå šäœã§ã¯ãªããäžéšïŒïŒå®æããé»åå€æåšã¯äœã§æ§æãããŠããŸããïŒ ãŸã第äžã«ããã¯ãŒãŠãããã¯åäœããããã«ç¹å®ã®å¶åŸ¡ã¢ãžã¥ãŒã«ãå¿ èŠãšããŸããäœãèµ·ãã£ãŠããã®ããç¥ãã«ã¯è¡šç€ºãå¿ èŠã§ãããå®å šãªè·é¢ããäœãèµ·ãã£ãŠããã®ããç¥ãã«ã¯ãModbus RTUãCANãªã©ã®ã€ã³ã¿ãŒãã§ãŒã¹ãå¿ èŠã§ãã
ãã®çµæããããžã§ã¯ãã®äžè¬çãªæ§é ã¯æ¬¡ã®ããã«ãªããŸãã
ããããå°æ¥çã«ã¯ãåŸæ¥åãšå¹³é¢åã®äž¡æ¹ã®ãã©ã³ã¹ãšãã§ãŒã¯ãèšç®ããããã®ããã°ã©ã ãäœæããŸãã ãããŸã§ã®ãšããã ãã©ãã圢åŒã®å³ã®ããŸããŸãªéšåã¯ã2ã€ã®ãããžã§ã¯ãã§æ¢ã«å®è£ ããã³å®è¡ãããŠããŸããããããªä¿®æ£ãå ããåŸããããã«ã€ããŠã®èšäºãäœæããããœãŒã¹ã³ãŒããå©çšå¯èœã«ãªããŸãã
ããŒãããªããžé»æºã¢ãžã¥ãŒã«
ãããä»æ¥ã®ããŒããŒã詳ããèŠãŠã¿ãŸãããã ãã®ã¢ãžã¥ãŒã«ã¯æ±çšçã§ãæ倧1200Vã®äœé»å§ããã³é«é»å§ã®äž¡æ¹ã®ã¹ã€ããã§ããMosfetããã³IGBTãã©ã³ãžã¹ã¿ã䜿çšã§ããŸãã
ã¢ãžã¥ãŒã«ã®ç¹åŸŽïŒ
- é»æºã®å¶åŸ¡ïŒããžã¿ã«ïŒåŽã®ã¬ã«ãããã¯çµ¶çžã 絶çžç Žå£é»å§3 kV;
- äžäžã®ããŒã¯ç¬ç«ããŠãããããããç¬èªã®ã¬ã«ãããã¯çµ¶çžããããã©ã€ããšã¬ã«ãããã¯çµ¶çžãããDC / DCãåããŠããŸãã
- Infineon-1EDC60I12AHXUMA1ã®ææ°ã®ãã©ã€ããŒãé©çšãããŸãã ãã«ã¹ééé»æµã¯6A / 10Aã§ãã æ倧åšæ³¢æ°-1 MHzïŒæ倧1.5 MHzã§å®å®ããŠãã¹ãæžã¿ïŒ;
- ããŒããŠã§ã¢é»æµä¿è·ïŒã·ã£ã³ã+ãªãã¢ã³ã+ã³ã³ãã¬ãŒã¿+ãªããã«ãã©ãŒ;
- æ倧é»æµã¯20Aã§ãã ããŒã§ã¯ãªããã©ãžãšãŒã¿ãŒã®ãµã€ãºãšé ããªãŽã³ã®åãã«ãã£ãŠå¶éãããŸãã
ã¢ãžã¥ãŒã«ã®æåã®æ¹èšçã¯èšäºã«èšèŒãããŠãããå®å šã«æ©èœããŸããã2çªç®ã®æ¹èšçã§ã¯ãçŽç²ã«èšèšäžã®æ¬ é¥ããªããªããã³ãã¯ã¿ããã䟿å©ãªãã®ã«çœ®ãæããããŸãã ããã¥ã¡ã³ããå®æãããåŸãPCBwayã«ã¬ãŒããŒãæãããšã6æ¥åŸã«å® é 䟿æ¥è ãç§ã®ãã¢ãããã¯ããŠãç§ã«ãã®ãããªé åãæž¡ããŸããã
1é±éåŸã
次ã«é²ãåã«ãã¢ãžã¥ãŒã«ã®åè·¯å³ãèŠãŠã¿ãŸãããã ãã¡ãããããŠã³ããŒãã§ããŸã-PDF
è€éã§ãéæ³ã§ããããŸããã éåžžã®ããŒãããªããžïŒäžéšã«2ã€ã®ããŒãäžéšã«2ã€ã®ããŒã1ã€ãã€ã¯ãã ä»ãã§ããŸãã äžèšã®1EDãã¡ããªãŒã®ãã©ã€ããŒã¯ãéåžžã«éªæªã§äžæ» ã§ãã é»æºã®ã©ãã§ããDC / DCåºåã§ã®+ 12Vãå«ã衚瀺ããããŸãã ANDããžãã¯ãšã¬ã¡ã³ãã«ã¯ä¿è·ãå®è£ ãããŠãããé»æµãè¶ ãããšãã³ã³ãã¬ãŒã¿ãŒã¯+ 3.3Vãåºåãããã©ãã«ãã©ãŒãç¹ç¯ãããANDå ¥åã®1ã€ãã°ã©ã³ãã«åŒã蟌ã¿ãŸããã€ãŸããlog.0ã確ç«ããããã©ã€ããŒããã®PWMä¿¡å·ãæ¶ããŸãã 次ã®æ¹èšã§ã¯ã3ã€ã®å ¥åãæã€ANDãç¹ã«äœ¿çšãããŸãããã©ãžãšãŒã¿ãŒã«ããéç±ã«å¯Ÿããä¿è·ãè¡ãããšã©ãŒä¿¡å·ãååŸããäºå®ã§ãã ãã¹ãŠã®ãœãŒã¹ã¯èšäºã®æåŸã«ãããŸãã
ã€ã³ããŒã¿ã®ã¬ã€ã¢ãŠããçµã¿ç«ãŠãŸã
ã¢ãžã¥ãŒã«ã®åäœããã¢ã³ã¹ãã¬ãŒã·ã§ã³ããæ¹æ³ã«ã€ããŠé·ãéèããŠããã®ã§ã誰ã«ãšã£ãŠãéå±ã§ãæçšã§ãããç¹°ãè¿ãããšã¯ããã»ã©é£ãããããŸããã ãããã£ãŠãç§ã¯é»å§ã€ã³ããŒã¿ãŒã§åæ¢ããŸããããããã¯ãœãŒã©ãŒããã«ã§åäœããããã«äœ¿çšãããŸããäœé»å§åŽã§äœãèãããããæããªãã§ãããé«é»å§åŽã§ã¯ãé»æºãå ¥ãããšãã«æãå ¥ããªãã§ãã ãã
ã€ã³ããŒã¿ãŒèªäœã¯äžåèªãªã»ã©åçŽã§ãããšããã§ãMAP Energyã¯ãã®ããã«ãªãããã§çããããŠããŸããããã«ããã®ã¢ã€ãã¢ã®åçšå®è£ ã®äŸããããŸãã ã€ã³ããŒã¿ãŒã®ä»äºã¯ã12 V DCé»å§ãã50 Hzã®åšæ³¢æ°ã®æ£åŒŠæ³¢å€æ°ã圢æããããšã§ããããã«ããã50 Hzã®åŸæ¥ã®å€å§åšãåäœã«äœ¿çšãããããã§ãã OSMã®ãããªäœããã®ãœããšãã䜿çšãã220Vã®å·¥å Žå·»ç·ãš2次巻ç·ãšããŠäœ¿çšããã1次ã8Vã¯é ãã¹ã§å·»ç·ãããŸãã 次ã®ããã«ãªããŸãã
ãããŠããã®ã¢ã³ã¹ã¿ãŒã¯ãã£ã400ã¯ããã§ãïŒ æèŠã«ãããšãå€å§åšã®ééã¯çŽ5ã7 kgã§ãèã«èœãšããšãè»éã«æã¡èŸŒãŸããããšã¯ãããŸããã å®éãããã¯ãéãå€å§åšãåããã€ã³ããŒã¿ã®ãã€ãã¹ã§ããããããã¯å·šå€§ã§éãã§ãã ãããã®ãã©ã¹ã¯ããããã®ã€ã³ããŒã¿ãŒããã£ããã·ã³ãã«ã§ãäœæããã®ã«çµéšãå¿ èŠãšããããã¡ããå®ãããšã§ãã
次ã«ãã¢ãžã¥ãŒã«ãšãã©ã³ã¹ãã©ãŒããŒãæ¥ç¶ããŸãããã å®éãéçºè åãã®ã¢ãžã¥ãŒã«ã¯ã2ã€ã®PWMã®å ¥åãš3ã€ã®é»æºåºåïŒVCCãGNDãããŒãããªããžåºåèªäœïŒãåããããã©ãã¯ããã¯ã¹ããšããŠæ瀺ããå¿ èŠããããŸãã
次ã«ããããã®ããã©ãã¯ããã¯ã¹ããããã€ã³ããŒã¿ãŒãæç»ããŸãããã
ãããããã¯ãã£ã3ã€ã®å€éšèŠçŽ ãåããŸããïŒãã©ã³ã¹ïŒ LCãã£ã«ã¿ãŒã åŸè ã«ã€ããŠã¯ãã¢ãžã¥ãŒã«ãããã©ã³ã¹ãžã®ã¯ã€ã€ããKool Muææãéç£ç60ã®R32ãµã€ãºãçŽ10ÎŒHã®ã€ã³ãã¯ã¿ã³ã¹ã®ãªã³ã°ã§ã¯ã€ã€ãå·»ãããšã«ããããã§ãŒã¯ãäœæããŸããã ãã¡ãããã¹ãããã«ãèšç®ããå¿ èŠããããŸããã15åå¿ èŠã§ãïŒïŒäžè¬ã«ã400 Wã§ãã®ãããªãã®ãé転ããå Žåããµã€ãºR46ïŒãããå€åŸã§ãïŒã®ãªã³ã°ãå¿ èŠã§ãã éé»å®¹é-1-10 uFãã£ã«ã ãããã§ååã§ãã å®éããã©ã³ã¹ã®å·»ç·ã®å®¹éãå¥å šã§ãããããã³ã³ãã³ãµãçµæžãšããŠèšå®ããããšã¯ã§ããŸãã...äžè¬çã«ãäžåœãšMAPã¯ãããè¡ããŸããïŒïŒã€ã³ãã¯ã¿ã¯æ¬¡ã®ããã«ãªããŸãïŒ
åºåã«ãã¹ãè² è·ããããããšã¯æ®ã£ãŠããŸãã20Wã®LEDé»çã2ã€ããïŒä»ã«æå ã«ãªããã®ããããŸãïŒããããèªäœã24 Wãæ¶è²»ããŸãããå¹çã¯å€ãããŸããã ãŸãããã©ã³ã¹ã®éåè·¯é»æµã¯çŽ1Aã§ãã ããããªãŒã§ã¯çŽ5Aãæ¶è²»ããŸãã ãã®çµæã次ã®ãããªç«å Žã«ãªããŸãã
ãŸããã¬ã€ã¢ãŠãã§ã¯ãããããªãŒãã«ã¿HR12-17ããããã12Vããã³17 A * hã®å®¹éã§äœ¿çšããŸããã STM32F469-Discoveryãããã°ããŒãããã³ã³ããŒã¿ãŒãå¶åŸ¡ããŸãã
ã³ãŒã
åœåã¯ã2010幎ã«å±ç€ºäŒã§åãåã£ãSTM32VL-Discoã管çã«äœ¿çšããäºå®ã§ããããããŸããŸãã®ã¬ã€ã¢ãŠãäžã«ãã£ãããããã¹ãŠã®ã³ãŒããèšè¿°ãããŠã¬ã€ã¢ãŠããèµ·åããããšãã«æ»ã¬éåœã«ãããŸããã ãªã·ãã¹ã³ãŒãã®ãããŒããå¿ããŠã2ã€ã®å°çãçµã¿åãããã¢ãŒã¡ã³ã ãã®çµæããã¹ãŠãSTM32F469NIH6ã§æžãçŽãããŸãããæå ã«ãã£ãã®ã¯ãã®ãããã°ã§ããããããã£ãŠã2ã€ã®ãããžã§ã¯ãããããŸããF100ãšF469ã®äž¡æ¹ããã§ãã¯ãããŸãã ãã®ãããžã§ã¯ãã¯ãSTã®EclipseããŒãžã§ã³ã§ããTrueSTUDIOçšã«æ§ç¯ãããŠããŸãã
ãããã³ãŒã
#include "main.h" /********************************************* Sinus table **********************************************************/ uint16_t sinData[240] = {0,13,26,39,52,65,78,91,104,117,130,143,156,169,182,195,207,220,233,246,258,271,284,296,309,321,333,346,358,370, 382,394,406,418,430,442,453,465,477,488,500,511,522,533,544,555,566,577,587,598,608,619,629,639,649,659,669,678,688,697, 707,716,725,734,743,751,760,768,777,785,793,801,809,816,824,831,838,845,852,859,866,872,878,884,891,896,902,908,913,918, 923,928,933,938,942,946,951,955,958,962,965,969,972,975,978,980,983,985,987,989,991,993,994,995,996,997,998,999,999,999, 999,999,999,998,997,996,995,994,993,991,989,987,985,983,980,978,975,972,969,965,962,958,955,951,946,942,938,933,928,923, 918,913,908,902,896,891,884,878,872,866,859,852,845,838,831,824,816,809,801,793,785,777,768,760,751,743,734,725,716,707, 697,688,678,669,659,649,639,629,619,608,598,587,577,566,555,544,533,522,511,500,488,477,465,453,442,430,418,406,394,382, 370,358,346,333,321,309,296,284,271,258,246,233,220,207,195,182,169,156,143,130,117,104,91,78,65,52,39,26,13,0}; uint16_t sinStep; uint8_t sinStatus; /******************************************** Used functions ********************************************************/ void StartInitClock (void) { RCC->CR |= RCC_CR_HSEON; // Enable HSE while (!(RCC->CR & RCC_CR_HSERDY)); FLASH->ACR |= FLASH_ACR_LATENCY_5WS; RCC->PLLCFGR = 0x00; RCC->PLLCFGR |= RCC_PLLCFGR_PLLM_3; // Div for HSE = 8 RCC->PLLCFGR |= RCC_PLLCFGR_PLLN_4 | RCC_PLLCFGR_PLLN_5 | RCC_PLLCFGR_PLLN_6 | RCC_PLLCFGR_PLLN_7; // PLL mult x240 RCC->PLLCFGR |= RCC_PLLCFGR_PLLSRC; // Source HSE RCC->CR |= RCC_CR_PLLON; while((RCC->CR & RCC_CR_PLLRDY) == 0){} RCC->CFGR &= ~RCC_CFGR_SW; RCC->CFGR |= RCC_CFGR_SW_PLL; // Select source SYSCLK = PLL while((RCC->CFGR & RCC_CFGR_SWS) != RCC_CFGR_SWS_1) {} // Wait till PLL is used RCC->CR |= RCC_CR_PLLSAION; while ((RCC->CR & RCC_CR_PLLSAIRDY) == 0) {} } void EnableOutputMCO (void) { RCC->AHB1ENR |= RCC_AHB1ENR_GPIOAEN; // Enable clock port A GPIOA->MODER &= ~GPIO_MODER_MODER8; GPIOA->MODER |= GPIO_MODER_MODER8_1; // Alternative PP GPIOA->OSPEEDR |= GPIO_OSPEEDER_OSPEEDR8; // Very high speed RCC->CFGR |= RCC_CFGR_MCO1; // Source PLL RCC->CFGR &= ~RCC_CFGR_MCO1PRE; // Div = 1 } void InitIndicatorLED (void) { /* * LED1 - PG6 * LED2 - PD4 * LED3 - PD5 * LED4 - PK3 */ RCC->AHB1ENR |= RCC_AHB1ENR_GPIOGEN; RCC->AHB1ENR |= RCC_AHB1ENR_GPIODEN; RCC->AHB1ENR |= RCC_AHB1ENR_GPIOKEN; GPIOG->MODER &= ~GPIO_MODER_MODER6; GPIOG->MODER |= GPIO_MODER_MODER6_0; // Output PP GPIOD->MODER &= ~GPIO_MODER_MODER4; GPIOD->MODER |= GPIO_MODER_MODER4_0; // Output PP GPIOD->MODER &= ~GPIO_MODER_MODER5; GPIOD->MODER |= GPIO_MODER_MODER5_0; // Output PP GPIOK->MODER &= ~GPIO_MODER_MODER3; GPIOK->MODER |= GPIO_MODER_MODER3_0; // Output PP } void EnableIndicatorLED (void) { GPIOG->BSRR |= GPIO_BSRR_BR_6; GPIOD->BSRR |= GPIO_BSRR_BR_4; GPIOD->BSRR |= GPIO_BSRR_BR_5; GPIOK->BSRR |= GPIO_BSRR_BR_3; } void InitLowPWM (void) { /* * TIM1-CH1 - PA8 * TIM1-CH1N - PB13 */ RCC->APB2ENR |= RCC_APB2ENR_TIM1EN; RCC->AHB1ENR |= RCC_AHB1ENR_GPIOAEN; RCC->AHB1ENR |= RCC_AHB1ENR_GPIOBEN; /*********** GPIO **********/ GPIOA->MODER &= ~GPIO_MODER_MODER8; GPIOA->MODER |= GPIO_MODER_MODER8_1; // Alternative output PP GPIOA->AFR[1] |= GPIO_AFRH_AFRH0_0; // Select TIM1-CH1 GPIOB->MODER &= ~GPIO_MODER_MODER13; GPIOB->MODER |= GPIO_MODER_MODER13_1; // Alternative output PP GPIOB->AFR[1] |= GPIO_AFRH_AFRH5_0; // Select TIM1-CH1N /*********** Timer *********/ TIM1->PSC = 2400-1; // div for clock: F = SYSCLK / [PSC + 1] TIM1->ARR = 1000; // count to 1000 TIM1->CR1 &= ~TIM_CR1_CKD; // div for dead-time: Tdts = 1/Fosc = 41.6 ns TIM1->CCR1 = 500; // duty cycle 50% TIM1->CCER |= TIM_CCER_CC1E | TIM_CCER_CC1NE; // enable PWM complementary out to PB15 and to PA10 TIM1->CCER &= ~TIM_CCER_CC1NP; // active high level: 0 - high, 1 - low TIM1->CCMR1 &= ~TIM_CCMR1_OC1M; TIM1->CCMR1 |= TIM_CCMR1_OC1M_2 | TIM_CCMR1_OC1M_1; // positiv PWM1_CH3 and PWM1_CH3N TIM1->BDTR &= ~TIM_BDTR_DTG; // clear register TIM1->BDTR |= TIM_BDTR_DTG_2 | TIM_BDTR_DTG_1 | TIM_BDTR_DTG_0; // value dead-time: = 31*Tdts = 32*41,6ns = 1.29us TIM1->BDTR |= TIM_BDTR_MOE | TIM_BDTR_AOE; // enable generation output and dead-time TIM1->CR1 &= ~TIM_CR1_DIR; // count up: 0 - up, 1 - down TIM1->CR1 &= ~TIM_CR1_CMS; // aligned on the front signal: 00 - front; 01, 10, 11 - center TIM1->CR1 |= TIM_CR1_CEN; // start count } void InitSinusPWM (void) { /* * TIM3-CH1 - PB4 * TIM3-CH2 - PC7 */ RCC->APB1ENR |= RCC_APB1ENR_TIM3EN; RCC->AHB1ENR |= RCC_AHB1ENR_GPIOBEN; RCC->AHB1ENR |= RCC_AHB1ENR_GPIOCEN; /*********** GPIO **********/ GPIOB->MODER &= ~GPIO_MODER_MODER4; GPIOB->MODER |= GPIO_MODER_MODER4_1; // Alternative output PP GPIOB->AFR[0] |= GPIO_AFRL_AFRL4_1; // Select TIM3-CH1 GPIOC->MODER &= ~GPIO_MODER_MODER7; GPIOC->MODER |= GPIO_MODER_MODER7_1; // Alternative output PP GPIOC->AFR[0] |= GPIO_AFRL_AFRL7_1; // Select TIM3-CH2 /*********** Timer *********/ TIM3->PSC = 5-1; // div for clock: F = SYSCLK / [PSC + 1] TIM3->ARR = 1000; // count to 1000 TIM3->CCR1 = 0; // duty cycle 0% TIM3->CCR2 = 0; // duty cycle 0% TIM3->CCER |= TIM_CCER_CC1E; // enable PWM out to PA8 TIM3->CCER &= ~TIM_CCER_CC1P; // active high level: 0 - high, 1 - low TIM3->CCER |= TIM_CCER_CC2E; // enable PWM complementary out to PA9 TIM3->CCER &= ~TIM_CCER_CC1P; // active high level: 0 - high, 1 - low TIM3->CCMR1 &= ~(TIM_CCMR1_OC1M | TIM_CCMR1_OC2M); TIM3->CCMR1 |= TIM_CCMR1_OC1M_2 | TIM_CCMR1_OC1M_1 | TIM_CCMR1_OC2M_2 | TIM_CCMR1_OC2M_1; // positiv PWM1_CH1 and PWM1_CH2 TIM3->CR1 &= ~TIM_CR1_DIR; // count up: 0 - up, 1 - down TIM3->CR1 &= ~TIM_CR1_CMS; // aligned on the front signal: 00 - front; 01, 10, 11 - center TIM3->CR1 |= TIM_CR1_CEN; // start count } void InitStepSinus (void) { RCC->APB1ENR |= RCC_APB1ENR_TIM6EN; // enable clock for basic TIM6 TIM6->PSC = 5-1; // div, frequency 24 kHz TIM6->ARR = 1000; // count to 1000 TIM6->DIER |= TIM_DIER_UIE; // enable interrupt for timer TIM6->CR1 |= TIM_CR1_CEN; // start count NVIC_EnableIRQ(TIM6_DAC_IRQn); // enable interrupt TIM6_DAC_IRQn } /************************************* Main code *********************************************/ int main (void) { StartInitClock(); // EnableOutputMCO(); InitIndicatorLED(); InitLowPWM(); InitSinusPWM(); InitStepSinus(); EnableIndicatorLED(); while(1) { } } /****************************** Interrupts ******************************************************/ void TIM6_DAC_IRQHandler (void) { TIM6->SR &= ~TIM_SR_UIF; if (sinStatus == 0) {TIM3->CCR1 = sinData[sinStep];} if (sinStatus == 1) {TIM3->CCR2 = sinData[sinStep];} sinStep++; if (sinStep >= 240) { sinStep = 0; sinStatus = sinStatus ? 0 : 1; } }
äžè¬ã«ãå¥ã®èšäºã§ã圌ã¯æ£åŒŠæ³¢ä¿¡å·ã®çææ¹æ³ãã³ãŒãã®èšè¿°æ¹æ³ãªã©ã詳现ãã€æ確ã«èª¬æããŸããã ããã§èªãããšãã§ããŸã ã
èªã¿ãŸãããïŒ åéãããã§ããïŒ ãããžã§ã¯ããç¶æããŸãã
ã³ãŒããå®è¡ãããªã·ãã¹ã³ãŒãã§æºåãé²ããŸãã ãŸãããã©ã€ããŒã®å ¥åã§ä¿¡å·ã®ååšã確èªããŸãã次ã®ããã«ãªããŸãã
1ã€ã®ããŒãããªããžïŒã¢ãžã¥ãŒã«ïŒã«æ£åŒŠæ³¢ãæã2ã€ã®ä¿¡å·ãšã2ã€ã®ä¿¡å·ã«50 Hzãäžããããšã«æ³šæããŠãã ããã ããã«ãäžæ¹ã®å¯Ÿè§ç·ã¯ãèµ€+é»è²ãã§ãããäžæ¹ã¯ãé+ç·ãã§ãã ç§ãäžã§äžããèšäºã§ã¯ãçªç¶ããªããç解ããªãå Žåãããã«ã€ããŠè©³çŽ°ã«æžãããŠããŸãã ããŠãä¿¡å·ãæ¥ããšãå®éšå®€ã®é»æºããããŒãããªããž+ 12VãšGNDã®äž¡æ¹ããªã³ã«ããŸãã ããã«é»æ± ã¯å©èšããŸãããã©ããã§ééããããäœããçãå°œãããããããŸããã ããŒãäžã®ä¿è·ã¯ããã©ã¹ãšãã€ãã¹ãæ··åãããå Žåã®æãããªåŠšå®³ããã§ã¯ãªããéé»æµããç¯çŽããŸãããã©ãã®æè¡è ã¯ç¯çŽããŸãã ãã¹ãã«ã¯12Vãš1Aã§ååã§ãã ãªã·ãã¹ã³ãŒãã®ãããŒãããã®ã¢ãŒã¹ç·ãæåã®ããŒãããªããžã®åºåã«ããããŒãèªäœãä»ã®ããŒãããªããžã®åºåã«æ¥ç¶ãããšã次ã®ãããªç»åã衚瀺ãããŸãã
ããªããæ±ãããµã€ã³ã¯ã©ãã«ãããŸããïŒ äºå®ããªã·ãã¹ã³ãŒãã®å ¥åæµæã¯å€§ãããè² è·ãè¡šããŠããªããããé»æµã¯æµããããµã€ã³ãåŸãå Žæã¯ãããŸããã è² è·ãè¿œå ããçŽåã«9åããªã³ã«ããã ãã§ã10ãªãŒã ã®æµæåšãã90ãªãŒã ã®è² è·ãäœæããŸããã è² è·ãããŒãããªããžã®åºåã«æ¥ç¶ãããšã次ã®å³ã衚瀺ãããŸãã
ããªãã¯åãã§ããïŒ ããã§ã¯ãã€ã³ãã¯ã¿ããã©ã³ã¹ãè² è·ãæ¥ç¶ããŠãèµ·åãè©Šã¿ãŠãã ããã äºè§£ïŒ ã¢ã€ãã«ç¶æ ã§ã¯åºåãæ倧350ã380Vã«ãªãå¯èœæ§ãããããããã®ã¢ãã«ãç¡è² è·ã§ãªã³ã«ããããšã¯ã§ããŸããã ãã®ãããããã«ã¯è² è·ãOSã¯å¿ èŠãããŸããã æåŸã®ãã®ã¯ãããŸãããããã¯å¥ã®èšäºã®ãããã¯ã§ããéžæç§ç®ãšããŠãæãåçŽãªPã¬ã®ã¥ã¬ãŒã¿ãŒãåºå®ããããšãã§ãããããžã§ã¯ããã³ãã¬ãŒããæ¢ã«æã£ãŠããŸãã
å å«ç©
ã¹ã€ããããªã³ã«ããåŸãåºåã§çŽ230VãåŸãããŸããåºåã¯ç¢ºãã«å®å®ããã230V + -30Vã§ãããŒãããŸãããã¹ãã®ããã«æ©èœããŸããå¥ã®èšäºã§ã¯ãPããã³PIã³ã³ãããŒã©ãŒãšãã®å®è£ ã«ã€ããŠèª¬æããããšã決ãããšãã«ã¬ã€ã¢ãŠããå®æãããŸãã
ä»äºã®çµæã楜ããããšãã§ããå¿ èŠã«å¿ããŠãã¹ãŠãç®±ã«å ¥ããŠãèŸ²å Žãç°èã§ãããé©çšããŠãå ããã®ä»ã®èšåãæäŸããããšãã§ããŸãã
ããããããã¯ãªãã¯ããã€ãŸãDiscoveryã®é»æºãå ¥ããŠããã©ã³ãããªã³ã«ãããŸã§ã®é 延ã«æ°ã¥ããã§ãããããããMKãåæåã«è²»ãããæéã§ãã ãã®é 延ã¯ãã¬ãžã¹ã¿ãšã³ããªãè€æ°ã®è¡ã«åå²ããã®ã§ã¯ãªãã1æ¡ãäžåºŠã«ã¬ãžã¹ã¿ã«æžã蟌ãããšã§åæžã§ããŸãã ç§ã¯ããã説æç®çã§ã®ã¿ç²ç ããŸããã ããã¯æãããããšã§ã¯ãããŸããããHALã³ãŒãã§ã¯ãé 延ã¯3åé·ããªãã人ã ã¯äœããã®åœ¢ã§ãããšå ±åããŸãïŒ
å¿ãããŸã§ããããžã§ã¯ãã®ãœãŒã¹ïŒ
ããŒãäžã®æž©åºŠãã©ã®ããã«ãªã£ãŠããã®ãã確èªããã«ã¯ãç¹å¥ãªãããã¹ãããããããŸãã 5-6Aã¯ç¢ºãã«ååã§ã¯ãããŸãããã貫éé»æµãŸãã¯äœããã®é倧ãªãšã©ãŒãããå Žåãããã¯ããŒããã±ãã«ã«å€ããã®ã«ååã§ãïŒ
ã芧ã®ãšãããæãç±ãèŠçŽ ã¯ã2 Wã®ã¬ã«ãããã¯çµ¶çžçšã®dc / dcã¢ãžã¥ãŒã«ã§ãæ倧34床ãŸã§å ç±ãããŸããã·ã£ã³ãã§ããããŸãã ãã©ã³ãžã¹ã¿ãŒãšã©ãžãšãŒã¿ãŒèªäœã¯ãã³ã³ããŒã¿ãŒã®åäœã®30ååŸã«åšå²æž©åºŠã«ãªããŸãïŒïŒ
æè¬ãšèšç»
è¿ãå°æ¥ãDSPããŒãã«ã€ããŠèšè¿°ãããããã°æ€åºããã§ã¯ãªãããå°çšãã¢ãžã¥ãŒã«ãã管çããäºå®ã§ãã 2çªç®ã®æ¹èšããŒããåãPCBwayãã圌ã«å±ããŸãããã³ã³ããŒãã³ããåŸ ã£ãŠããã«æžããŸãã
ãã®èšäºãšã¢ã€ãã¢èªäœã楜ããã§ããã ããããšãé¡ã£ãŠããŸãã å°æ¥çã«ã¯ãåãã¢ãžã¥ãŒã«ã§ãchastotnikãmpptã³ã³ãããŒã©ãŒããŸãã¯ä»ã®èå³æ·±ããã®ãçµã¿ç«ãŠãæ¹æ³ã瀺ããŸãã 質åãããå Žåã¯ãã³ã¡ã³ããŸãã¯PMã§è³ªåããããšãaskããªãã§ãã ãããçªç¶å®å šãªã¢ã«ãŠã³ããæã£ãŠããªãå Žåã¯ããã¹ãŠã®è³ªåã«çããããšããŸãã
PCBwayã«æè¬ããŸããå®éã«ããªãŒãã³ãœãŒã¹ãšã³ãžã³ããµããŒãããŠããããšã¯éåžžã«è¯ãããšã§ãã ããã«ãããŒããŠã§ã¢ã¡ãŒã«ãŒã¯ããªãŒãã³ãœãŒã¹ãããžã§ã¯ãã®æ°ãšè³ªã«ãããŠãœãããŠã§ã¢ã©ã€ã¿ãŒã«è¿œãã€ãããšãããããŸãã