プログラミング素人のArduino

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

PWM制御

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

PWMとは

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

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

回路は以下です。



スイッチで制御する。
http://ameblo.jp/sn348/entry-12090599520.html
の回路を改造しました。

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

ここで、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


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

AYWS 【水中ポンプ】 DC30A-1230 DC 12V2_Phase CPU 小型水中ポンプ ハイパワー 直流5Vdc~12Vdc防水 揚程 3M  遠心ポンプ 静音 ブラシレスモーター 潜水インストール  池ポンプ 濾過池 濾過装置 濾過器 濾過ポンプ 庭池 循環 庭 池 自作 ポンプ ビオトープ diy 池用ポンプ 池用フィルター 循環ポンプ 池の 掃除 濾過槽 庭のガーデニング 水中ポンプ 水中クリーナー 水槽用ポンプ 水槽池