SOARISTO工房 Logo

ペガソス計画(9) - 週刊「ファランクスを作る」

 前回の続きです。

 なぜか、基台ができていないのに、電装系を先に作るという。

CIWS Tiny Phalanx Snapmaker 2.0 A350

 PC用の冷却ファンを、PWM制御するための回路(手前側、奥は別)です。

 最大4発のPCファンを接続し、内部温度に応じて回転数を制御します。

 「ArbotiX-M Robocontroller」(Arduino ATmega644P)のPWMポートと外部割り込みポートは、数に限りがあるため、ロジックICを使って少し工夫をしています。

 「3ステートバッファ」(SN74HC125N)と「2to4ラインデコーダ」(SN74HC139N)で、PCファンからの信号(回転パルス)を選択できるようにしています。

CIWS Tiny Phalanx Snapmaker 2.0 A350

 回路の裏側です。

 電源系は、すずめっき軟銅線(φ0.6mm)で、信号系は、耐熱電子ワイヤ(φ0.32mm)で、ちまちま配線。

CIWS Tiny Phalanx Snapmaker 2.0 A350

 こちらは、DCモータに電源を供給する回路。

 「HRD05003」を使って、+12Vから+3Vを取り出します。

 「HRD05003」は、2年3ヶ月前に初号機を作った時には、秋月にあったのですが、現時点では取り扱いがないようです。いまは、2Aまで出力できる「HPH05002M」しかありません。

 しかも、「HPH05002M」は、入力電圧が+12Vではなく、+24Vからとなってしまっています。

#危ないアブナイ、前もって買っておいて良かった~。

CIWS Tiny Phalanx Snapmaker 2.0 A350

 左側が、以前に作った初号機。右側が、今回作り直した弐号機。

 初号機は、「HRD05003」のRC(Remote Cotrol)端子を使って、出力をOn/Offしていました。(兄貴分の「HRD12008」には、RC端子は無い)

 設計段階では、「しめしめ、ちょうど良い端子があるではないか」と思っていたのですが、出力側に容量の大きいコンデンサが入っている分、電圧の立ち上がり/立ち下がりが緩くなっていました。

 そこで、弐号機では、PchのMOSFETでハイサイドスイッチを作り、急峻に立ち下げできるよう、スイッチング性能を改善しました。

#駆動するものがDCモータなので、それほど違いは分かりませんが。まぁ、気持ちの問題と言うことで。

CIWS Tiny Phalanx Snapmaker 2.0 A350

 同じ基板の裏側です。

#回路が読めるヒトには、読めるかと。

CIWS Tiny Phalanx Snapmaker 2.0 A350

 回路を、基台に組み込んだところ。

CIWS Tiny Phalanx Snapmaker 2.0 A350

 PWM制御回路を、びみょ~にバージョンアップ。

 よく考えたら(よく考えなくても)、「2to4マルチプレクサ」(TC74HC153AP)を使えば、ロジックICが1個で済むので、ここだけリプレース。

CIWS Tiny Phalanx Snapmaker 2.0 A350

 「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%)にして、最低回転数で回るようにしています。
(単にプルダウンしているだけですが)

(つづく)

Trackback(0)

Trackback URL: https://www.soaristo.org/mt/mt-tb.cgi/1236

Post Comment