前回の続きです。
なぜか、基台ができていないのに、電装系を先に作るという。
PC用の冷却ファンを、PWM制御するための回路(手前側、奥は別)です。
最大4発のPCファンを接続し、内部温度に応じて回転数を制御します。
「ArbotiX-M Robocontroller」(Arduino ATmega644P)のPWMポートと外部割り込みポートは、数に限りがあるため、ロジックICを使って少し工夫をしています。
「3ステートバッファ」(SN74HC125N)と「2to4ラインデコーダ」(SN74HC139N)で、PCファンからの信号(回転パルス)を選択できるようにしています。
回路の裏側です。
電源系は、すずめっき軟銅線(φ0.6mm)で、信号系は、耐熱電子ワイヤ(φ0.32mm)で、ちまちま配線。
こちらは、DCモータに電源を供給する回路。
「HRD05003」を使って、+12Vから+3Vを取り出します。
「HRD05003」は、2年3ヶ月前に初号機を作った時には、秋月にあったのですが、現時点では取り扱いがないようです。いまは、2Aまで出力できる「HPH05002M」しかありません。
しかも、「HPH05002M」は、入力電圧が+12Vではなく、+24Vからとなってしまっています。
#危ないアブナイ、前もって買っておいて良かった~。
左側が、以前に作った初号機。右側が、今回作り直した弐号機。
初号機は、「HRD05003」のRC(Remote Cotrol)端子を使って、出力をOn/Offしていました。(兄貴分の「HRD12008」には、RC端子は無い)
設計段階では、「しめしめ、ちょうど良い端子があるではないか」と思っていたのですが、出力側に容量の大きいコンデンサが入っている分、電圧の立ち上がり/立ち下がりが緩くなっていました。
そこで、弐号機では、PchのMOSFETでハイサイドスイッチを作り、急峻に立ち下げできるよう、スイッチング性能を改善しました。
#駆動するものがDCモータなので、それほど違いは分かりませんが。まぁ、気持ちの問題と言うことで。
同じ基板の裏側です。
#回路が読めるヒトには、読めるかと。
回路を、基台に組み込んだところ。
PWM制御回路を、びみょ~にバージョンアップ。
よく考えたら(よく考えなくても)、「2to4マルチプレクサ」(TC74HC153AP)を使えば、ロジックICが1個で済むので、ここだけリプレース。
「ArbotiX-M Robocontroller」によるPWM制御を、デバッグしているところ。
Arduino ATmega644Pは、PWM信号を最大6つのポートから取り出すことができますが、タイマ0~2を使っているため、「CYBER STICK」などの読み込み用にタイマ割り込みを使うとすると、そのすべてをPWM制御用に割り当てることができません。
基台の下段に、吸気用に2つのPCファン、上段に、排気用の2つのPCファンを取り付けることにし、下段と上段のPCファンの回転数を、独立に制御するようにします。
今回は、タイマ2に紐付けられた、OCR2Aを上段用に、OCR2Bを下段用に使い、「高速PWMモード」で動作させることにしました。
PWM周波数は、システムクロックを1/8分周(÷256)し、7.8125kHzとしています。PCファンは、25kHz制御が一般的なようですが、CS(Clock Select)の設定値に近いものがないため、この中途半端な周波数にしています。
PWMのデューティー比の分解能は、256段階(約0.4%刻み)で設定できます。
別の方法として、「位相基準PWMモード」で動作させ、1/8分周(÷256)にして40カウントすれば、ちょうどPWM周波数を25kHzとすることができます。
しかし、このモードでは、比較用のカウンタとしてOCR2Aを使ってしまうため(OCR2Bは、デューティー比の設定用)、OCR2AとOCR2Bで、独立にデューティー比を設定できなくなってしまいます。(しかも、分解能は、40段階(2.5%刻み)になってしまう)
PWM周波数が7.8125kHzでも、PCファンはしっかり動いてくれています。
また、PCファンの回転数は、外部割り込み(INT2)を使って測っています。
Arduino ATmega644Pは、外部割り込み信号を最大3つのポートから読み出すことができますが、そのすべてをPCファン用に割り当てることはできません。
そこで、「2to4マルチプレクサ」を使って、回転数を調べたいPCファンを、選択できるようにしています。
PCファンの回転信号は、1回転で2つのパルスが出るようになっています。パルスの立ち上がりエッジで割り込みが掛かるようにし、直前の割り込みからの経過時間を測ることにより、回転数を割り戻すようにしています。
ついでに、後からフェイルセーフ機能も追加しておきました。
Arduino ATmega644Pがリセットされると、2つのPWMポートが、いずれもHighとなります。すなわち、デューティー比が100%となり、4つのPCファンが、フルパワーで回転することになります。
これを避けるため、リセット時はPWMポートを強制的にLow(デューティー比を0%)にして、最低回転数で回るようにしています。
(単にプルダウンしているだけですが)
(つづく)
Post Comment