プログラミング素人のはてなブログ

技術屋の末端。プログラミングも電気回路も専門外です。 コードに間違いなど見つけられたら、気軽にコメントください。 VC#、python3、ラズパイ始めました。

PWM制御

今日はPWM制御を試してみます。

PWMとは

PWMとはPulse Width Modulationといって、電圧のオンとオフをどれだけの割合で混ぜるかという方法によって、電圧の割合を制御するという方法です。
基準に対して~%の電圧が欲しいとき、電圧幅を小さくするのではなく、ON時間を全体の~%にすることで同じ制御となる、というものです。

たとえば、5Vの電源(たとえばArduinoのDigital5 pin)で抵抗をはさんで3Vをつくるのと、5Vの電源をPWM 60%で使うのは同じ効果が得られます。

回路は以下です。



スイッチで制御する。

s51517765.hatenadiary.jp

 
の回路を改造しました。

図は、作り直しているため、若干異なりますがご承知ください。

ここで、PWM制御を使うため、LEDの電源はDigital 5pinを使います。
5V pinはArduinoの電源が入っているときは、常に5Vが一定に掛かっています。
一方、Digital pinのなかでも3, 5, 6, 9, 10, 11がPWM制御に使えます。
この辺は、Arduinoの資料を探せば出てきます。
http://arms22.blog91.fc2.com/blog-entry-501.html

図の作成も慣れてきたら、なるべく、配線の色を規則化したいと思います。
電源(+電圧)は赤、GNDは黒、制御線は黄というようにしていきたいと思います。




ここでは、スイッチを押したときに if elseで LEDに掛かる電圧を変化するようにしました。
====================
else {
   analogWrite(led, 10); //PWM制御
   delay(300);
   analogWrite(led, 100);
   delay(300);
   analogWrite(led, 170);
   delay(300);
   analogWrite(led, 250);
   delay(300);
 }
====================

PWM制御を使うときはanalogWriteで電圧を記述します。
これまではdiditalで HIGH or LOW で2値でしたが、Analogでは0~255までが使えます。
256諧調でこれを8bitといいます。
100%が255となるように電圧が変わります。
Digital出力では抵抗を変化させることで電圧を変えますが、
PWM制御ではこのようにして、program的に出力を変化させることができます。

■ソース
http://www.zg.em-net.ne.jp/~sn123456789/151106.txt


さて、本格的に役立つものを作る計画として、給水ポンプを発注しました。↓↓