電子工作98 – USB扇風機用の4段階速度コントローラーの製作

Electronics Project 98 – Making 4-Step Speed Controller for USB Fans

 

 

概要   Introduction

   また暑い季節がやって来た。何かと役立つ500円位で手に入るUSB扇風機の手持ち数が5-6個にもなった。これらの扇風機の風量を調整するような装置が出来ないかと挑戦してみることにした。出来上がったものは12F629を使い、プログラム中でパルス幅変調(PWM)コマンドを利用して回転速度を4段階に変えられようにした。2回路6接点ロータリースイッチとの組み合わせも上手く行った。


The 4-step speed controller prepared this time is used for controlling the rotational speed of USB fans (DC5V) with a diameter of 14 - 15 cm that consume about 300mA. For the purpose, the controller uses a 12F629, a mosfet transistor and a rotary switch (2 pole 6 positions). The control of the rotational speed of fan is based on changing PWM (Pulse Width Modulation) values, which are produced by using a command (software PWM) of PicBasic Pro. If the 12 pins of the rotary switch are connected as shown in Circuit Diagram, 5V power is supplied to 12F629 only when Pole 1 is in one of 4 positions CT1 - CT4 but no power is supplied to 12F629 when Pole 1 is in one of the two remaining positions (which are not connected). As Pole 1 and Pole 2 are connected to the same shaft and move together, when the position of Pole 1 is CT1, the position of Pole 2 is PCT1. Similarly, CT2 corresponds to PCT2, and so forth. In the program below, in the command 'PWM Pin, duty, cycle' , duty is duty ratio, determining the magnitude of power output supplying to fan motor. The duty ratios (255, 248, 235, 220) are used in the individual switch positions, where 255 corresponds a duty ratio of 100%, 248 to 97%, 235 to 92% and 220 to 88%. The larger the duty ratio, the more power is supplied to fan motor. Therefore, the position CT1 produces the highest rotational speed, followed by CT2, CT3 and CT4, in that order. These duty-ratio values were decided by trial and error while observing the airflow from the fan. I experienced a problem that the fan did not start to rotate at the positions of CT3 and CT4. This problem was solved with the addition of an extra routine in the program, namely, PWM with a larger duty ratio 248/97% is applied for 100ms for those two switch positions, enabling the fan to start at both CT3 and CT4 positions.

 


回路図   Circuit Diagram

  秋葉原などに出回っている直径14cmほどのUSB扇風機は当然5Vで動き、電流を最大で300mA位 消費する。電源には最大で1A出力出来る市販のUSB ACアダプターを使う。2回路6接点ロータリーSWは1本のシャフトに2回路の6接点(合計12接点)がペア(図右下のCT1vs PCT1など)を成して回転する。図にある様に配線すると回路1(Pole1)の接点がCT1 - CT4の位置にある時のみ、もう一方の回路2(Pole2)のPCT1 – PCT4を通じて12F629に5Vの電圧が加わる。回路1の残りの2つの接点(接続なし)の位置にある場合は、回路2の2つの接点も電源への接続はないので12F629への給電はない。CT1の位置で回転速度が最大になり、順次遅くなり、CT4で最小なる。


 

    今回製作した装置: USB 5V電源からの給電には基板の左端中央部に見えるように電源用マイクロUSBコネクタを使った。回転速度を変えるロータリーSWはプラスチックボックス(12x9x5cm)にネジ止めされている。赤く見えるのは電源SWである。12F629に5Vが供給されているときはLEDが点灯する。

Controller circuit in plastic box

 

プラスチックボックスの横面にはロータリーSWが設置してあり、1、2、3、4 位置で回転速度が変わる。1は最速、4が最低速。4以上に回すとOFFで12F629へ電源供給は停止。右側のものは電源SW。

Side view of plastic box. You can see Rotary SW and Power SW

 

装置をUSB扇風機と組合せて使ってみているところ

Controller driving a USB fan

 

ロータリーSWの位置USB扇風機に消費される電流の関係

Relationship between Position of Rotary SW and Current Consumption by System

ロータリーSWの位置

Position of Rotary SW

消費電流

Current consumption

(mA)

1

245

2

201

3

153

4

120

 

 

結果&コメント

1)     正常に4段階に回転速度が変化することが確認された。

2)     プログラムで4段階のどの位置からも確実に扇風機が起動するルーチンを発見したのは収穫。n var Wordとしたのは、n var Byteでは255毎にちょっと回転に振動が入るような現象(多分nの値が255を超える時に出るように思える)を、Wordだと2の16乘 65536 毎のより頻度の少ない微振動発生に変わると思ったからである。実際、後者ではこの現象は確認できなかった。多分、扇風機の回転数からして、カウントして65536の値をOverflowするには20分間かかるためと思われる?。

3)     USB ACアダプタから電源用マイクロUSBコネクタ(DIP化キット秋月¥120)を経由してPICの電源にするのは初めての経験。

4)     寝にくい夏の夜に、寝床で頭上に吊るして顔や頭部を冷やしのに使うつもり。

5)     USB扇風機とUSB ACアダプタを除いた費用は大体1000円ほど。

6)     上記の回路図が幾つかの改変の後に作成出来たのが決め手。脳トレにも良い。

7)     一回り大きいUSB扇風機が、1480円とかで売っていた。確か、500mA位の電流消費なのでそのままこの装置に繋いで使えそう。

8)     ワイヤレス方式も面白そう。

 

 

プログラム   Program

USB扇風機のDCモーターの回転をPWM(Pulse Width Modulation パルス幅変調)というテクニックを使って制御することにした。幸いPicBasic Proには、専用のコマンドがあり、これを使うといとも簡単にパルス幅変調が出来てしまう。PWM Pin, Duty, CycleとゆうコマンドのPinは出力するピン、DutyはDuty比のことで出力パワーの大きさを、そして、Cycleは何Cycle数出力するかを決める係数で、PICが4MHzで動作している場合1Cycleは5msなので、例えば、200(cycles)を入れると5msX200/sec=1000ms/secとパルスが繰り返し1秒間出力されることになる?。なお、今回使った回転速度に関係するDuty比の値(255、248、235、220)は風量を観察しながら試行錯誤方式で決めた回転速度が遅い方から2接点の各位置で、停止から電源SWを入れると扇風機が回転しないことがあり、この問題を解決する為に100msという短い時間PWMのパルス幅を狭くして電流量を一時的に増やすようにしているこれで確実に回転するようになった。つまり、プログラム中に、この部分n=n+1、If n=1 Then Gosub Startup、PWM GPIO.5,235,100、n=n+1 を追加して目的を達した。

'***********************************************

'USBFanSpeedControllerA.bas  2017.5.28

'Using 12F629 and PicBasic Pro V2.50A

'***********************************************

'Pin 1: Vdd(5V)

'Pin 8: Vss(GND)

'Pin 7: GPIO.0 - CT4 Input

'Pin 6: GPIO.1 - CT3 Input

'Pin 5: GPIO.2 - CT2 Input

'Pin 3: GPIO.4 - CT1 Input    CT=Contact of Rotary Switch

'Pin 4: GPIO.3 - Reset Input

'Pin 2: GPIO.5 - Drive Mosfet

'********* Program *************

CMCON=7  'Comparator off

CT1input var GPIO.4

CT2input var GPIO.2

CT3input var GPIO.1

CT4input var GPIO.0

MosfetDrive var GPIO.5

TRISIO=%011111

n var Word

n=0

 

Loop:

If CT1input=0 then Goto PWM100

IF CT2input=0 Then Goto PWM75

IF CT3input=0 Then Goto PWM50

IF CT4input=0 then Goto PWM30

Goto Loop

 

PWM100:     ‘Generating the fastest rotational speed of fan

PWM GPIO.5,255,100

Goto Loop

 

PWM75       ‘Generating the second fastest rotational speed of fan:

PWM GPIO.5,248,100

Goto Loop

 

PWM50:       ' Generating the third fastest rotational speed of fan

n=n+1        ‘以下の4行は扇風機を確実に起動させる為のもの

If n=1 Then Gosub Startup   'A trick to start up the fan without fail

PWM GPIO.5,235,100

n=n+1

Goto Loop

 

PWM30:        ' Generating the slowest rotational speed of fan

n=n+1

IF n=1 Then Gosub Startup

PWM GPIO.5,220,100

n=n+1

Goto Loop

 

Startup:         'Allowing the 'GPIO.5,248,100' mode rotation of fan for 100 ms

PWM GPIO.5,248,100   ‘このサブルーチンで確実に起動するPWMを100ms間提供している

Pause 100  '0.1 sec

Return

 

End

'**********End of Program********

'Note:

'melabs U2 Programmer's configurations for 12F629:

'Oscillator - INTOSC, WDTE - Enable, PWRTE - Disable, MCLR - Input Pin, BODEN - Enable, CD - Disable, CDP - Disable

'***************************************************************************************************

 

 

Menu Pageへ戻る    (Return to Menu Page)

Topへ戻る    (Return to Top of Page)