(参考)ハイサイドスイッチのはなし
http://sudoteck.way-nifty.com/blog/2011/04/post-76ae.html
参考にした回路図ではゲートドライブにBJT(バイポーラトランジスタ)使うみたいだけど,
BJTだとオン電圧もあるし,手持ちがなかったこともあり,N-Ch MOSFETでやってみたらできた.
ハイサイドドライブにはフローティング電源とか
ブートストラップコンデンサとか使う方法があるらしいけど
Trによるゲートドライブが簡単そうだった.
Pch MOSFETのゲート・ソースがドライブ用Trのオープン時に5Vになるように
分圧抵抗を挿入した.この場合はR1=10kΩ.R2=13.2kΩ,
ゲートドライブ用MOSFETにはゲート抵抗は入れていない.またゲートはプルダウンしていない.
マイコンの電源OFF時も考慮すると,N-Ch MOSFETのゲートはプルダウンしたほうが良さそう
http://todotani.cocolog-nifty.com/blog/2010/01/mos-fet-b7c9.html
負荷側電源電圧は12V安定化電源.
最初負荷抵抗を10Ωにしてたら当たり前だけど焼けた.
12V/10Ω=1.2Aなのでこのときの消費電力P=12*1.2=14.4(W)
使用したトランジスタ
・ハイサイドドライブ用メイン P-Ch MOSFET
パワーMOS−FET 2SJ471(30V30A)
http://akizukidenshi.com/catalog/g/gI-00034/
・ゲートドライブ用N-Ch MOSFET
MOS−FET 2N7000
http://akizukidenshi.com/catalog/g/gI-03918/
回路動作説明
・ADCでポテンショメータの電圧(0-5V)を取得
・PWMで0-5Vを出力
・ゲートドライブ用N-Ch MOSFETが開く.
最大Trオープン時にR1両端電圧が5V程度になるように
分圧抵抗が挿入してある
・R1両端電圧=ゲート・ソース電圧Vgsなので,
これに従ってP-Ch MOSFETがオープンする.→0V-12V出力
#include <MsTimer2.h> int val; int mapval; void disp(){ Serial.println(mapval); } void setup(){ pinMode(9,OUTPUT); Serial.begin(9600); } void loop(){ val = analogRead(A0); mapval = map(val,0,1023,0,255); analogWrite(9,mapval); }