2017年08月02日

汎用部品のみで作れるハイサイドゲートドライバ回路

NチャネルのMOSFETだけでハーフブリッジやフルブリッジを構成する時、ハイサイドNchMOSFETのゲートドライブをどうしようか悩んだことはないでしょうか?
MOSFETをONにさせるためには、ゲートとソースの間に15V程度を印加する必要があるのは周知の事実であると思いますが、もしハイサイドのNchMOSFETだった場合、ソースの電位が一定ではありませんので、ソース基準の電位にできるようような何らかのゲートを駆動するための電源が必要になってくるのがわかると思います。
まぁPchMOSFETをつかえば解決できるのですが、Pchは値段が高い、Nchに比べて性能低い、品種もあんまり無い、パワー素子は1種類のみで済ませたいなどといった理由でブリッジをすべてNchで構成することは多いと思います。

ハイサイドNchMOSFETのゲートを駆動するための電源の確保方法としては主に以下のようなものがあります(というか自分が見たり考えたりした例です)。
‥澱
低周波トランスによる絶縁電源
スイッチング式絶縁電源
ぅ僖襯好肇薀鵐
ゥ船磧璽献櫂鵐

,砲弔い討蓮⇔石に実際に既製品で採用されてる例を知りません。電池だと無くなっちゃいますからね。
△發△泙蠍たことはありませんが、要するに電源トランスでゲートドライブ用の絶縁された電源を作っちゃおうということです。50/60Hzの商用電源がないとこの手は使えません。
は絶縁スイッチング電源でゲートドライブ用の電源を作ろうというものです。絶縁スイッチング電源の設計を変えれば様々な入力電源で使用することができ、おそらく最も自由度が高い方法ですが設計が厄介なのと回路がどうしても大規模になってしまいます。ちなみに工業用の汎用インバータはほとんどこの方法を採用しています。
い魯僖襯好肇薀鵐垢縫押璽閥酘闇鳩舛鯑力しその出力でスイッチング素子のゲートを直接駆動するというものです。この方法はスイッチング電源でよく見る気がします。ちなみにDRSSTCなんかで作るゲートドライブトランスがこの方法に当たります。この方法はとても簡単で良いのですが、低周波だと必然的にトランスが大きくなってしまうのと、ゲート駆動波形のデューティ比が大きいとパルストランスのコアが偏磁するため、使用可能なデューティ比に制限があるのが欠点です。
イ魯灰鵐妊鵐気縫押璽閥酘依僂療轍戮鮹澆┐討き、スイッチング素子をONするときはコンデンサに蓄えられた電荷を使うというものです。お手軽な専用ICがたくさんあり、デューティ比の制限もあまりないということでモータドライバでよく使うことがあります。ただし、この方法ではハイサイド、ローサイド間のゲートドライバ回路を絶縁することはできません。あとおそらく、ハイサイドのソースの電位が0付近になる瞬間が必ず必要になると思います。

もし、DRSSTCなどのデューティ比が50%より大きくならないような用途ならい諒法で良いでしょう。
しかし、モータドライバのようなデューティ比が50%を超える用途であればそれ以外の方法を取らざるを得ません。
もちろん,狼儔爾任垢、△眈ν囘展擦必要になるので採用はしにくいでしょう。はおそらくどんな状況にも対応できる最強の方法ですが、絶縁DCDCコンバータモジュールは1個あたりが非常に高価ですし、かと言ってスイッチング式のACアダプタを使うのでは結局△畔僂錣蠅△蠅泙擦鵝自作するのも(UC3843などを使えばそんなに難しくはないと思いますが)スイッチングトランスを手巻きする必要がありますし、お手軽とは程遠いと思います。

そこで最後に残るのがイ離船磧璽献櫂鵐廚箸いΔ錣韻任后
この方法だと、IR社などがIR2110などの専用ICを出しており、それを使えばとても簡単にハイサイドスイッチング素子を駆動することができます。またこれらのIC以外にもTLP250などのフォトカプラゲートドライバICを使ってチャージポンプを構成しても良いと思います。
しかし、どっちにしろ専用ICが必要になります。ハーフブリッジゲートドライバICもフォトカプラゲートドライバICも大抵そこらに転がってるような部品ではなく、買ってこなければ手に入らないと思います。
そこで、どこにでも転がってるような部品のみで作れるハーフブリッジゲートドライバ回路を紹介します。

で、ようやくここからが本題なのですが、まず回路です。
image01
ご覧のように、抵抗、コンデンサ、ダイオード、トランジスタといった基本的な部品のみで構成されております。トランジスタの型番があれですが2SC1815と2SA1015に脳内変換してください。抵抗やコンデンサの値はある程度近ければ適当でも動くのでお手持ちのもので使えます。
この回路は主にレベルシフタとプッシュプルで構成されています。
V1はハーフブリッジの電源です。D1とQ6の耐圧でV1の電圧が制限されます。
V2はゲート駆動用の電源で、MOSFETが十分ONになる電圧にします。通常は12〜18Vです。
V3は入力信号の電圧レベルに合わせてください。例えば3.3V系ならばV3は3.3Vにします。
V4とV5は信号源です。
H_INとL_INが入力信号を表します。この回路ではどちらも正論理です。負論理にする場合は”トランジスタ レベルシフト”などで調べれればすぐにわかると思います(回路を別に書くのがめんどくさい)。
なお注意点
スイッチング周波数はあまり早くできません。100kHzくらいが限界のようでした。
またゲート電荷が大きいMOSFETは駆動できません。スイッチング周波数にもよりますが100kHzの場合は70nC程度にしておいたほうが良さそうです。
もしかするとD1とQ6を高耐圧のものに変えれば高電圧にも対応できるかもしれませんが、怖くてやりたくないです。
電源投入直後はチャージポンプ用のコンデンサの充電が間に合わず正常にスイッチングしない場合がもしかしたらあるかもしれません。
とまぁそんなところですか、あと問題があるとすればこの回路でトランジスタを6個も使うところですかね。ユニバーサル基板だとちょっと配線がめんどくさい。

シミュレーション波形がこちらになります。
image02
トランジスタの遅延のおかげでデッドタイムが挿入されています。

この回路とほぼ同じ回路でブラシレスモータ用の三相ブリッジを組んでみました。
DSC_1180
PWM周波数20kHz程度であれば特に問題なく動作します。抵抗値、すごい適当ですが動きます。

追記
もしMOSFETに大電流が流れたり、配線抵抗が大きい場合、電圧降下が大きくなりチャージポンプのコンデンサが充電されず、ハイサイドのMOSFETのゲートが十分ONされずに損失が大きくなり破壊する可能性があります。
参考までに損失を出した時のシミュレーション波形を載せておきます。赤色の波形がハイサイドの損失、青色がローサイドの損失波形、緑色がハイサイドの電流、ピンク色がローサイドの電流です。
1
あと色々シミュレーションしてみましたが、この回路ではやはり高電圧では用いるべきではないようです。MOSFETのゲート駆動能力が微妙なので間違いなくMOSFETがぶち壊れます。シミュレーションだと電源282V、負荷電流28AくらいでMOSFETのピーク損失が1kWを超えてました。

なお、素人が適当に書いてるので間違いがあれば指摘してくださればありがたいです。

wata_net at 01:19コメント(0) この記事をクリップ!

2017年01月16日

QCWDRSSTC用のランプ波発生回路

前回のPWM発振回路のPWMコンパレータを取っ払って双安定マルチバイブレータとボルテージフォロワをくっつけたものです。

image122

2N3906は2SA1015、2N3904は2SC1815、LT1006はLM358、ダイオードは1N4148に置き換えてください。
またC1の100fE^みたいなのは100uFのことです。文字化けしてます。

PULSEINに立ち上がりパルスが入力されるとOUTの電圧が一定の傾きによって上昇し、4Vに到達すると0Vにリセットされ、その後再び立ち上がりパルスによって電圧が上昇します。

R1を減少させると電圧上昇の傾きが大きくなり、増加させると傾きが小さくなります。
C1を変化させることによっても傾きが変化します。
ここはPWMのときと共通なのでもう少し詳しい話はPWM回路のときの記事を読んでいただくか、帰還型定電流回路について調べてみてください。

OUTの電圧が上昇している間、ONTIMEにはHIの電圧が現れます。
ONTIMEに低インピーダンスな負荷を接続するとうまく動作しなくなります。ロジックICに入力するだけなら問題無いですが、重負荷の場合何らかのバッファ回路を挟む必要があります。

電源電圧が変化しても電圧上昇の傾きの大きさは変化しませんが、リセットされる電圧と電圧が上昇している期間の長さは変化します。
電源電圧は5Vに安定化されたものを使うことを推奨します。

PULSEINに入力される信号は立ち上がりがしっかりしているHIが5Vの矩形波であればどんなデューティ比でも構いませんが、ON時間があまりに小さすぎるとうまく動作しないかもしれません。
というか、実際に組んでみていないのでちゃんと動くかわかりませんが。

双安定マルチバイブレータあたりの抵抗値はとても適当なので適宜いい感じにしてください。


シミュレート波形です。
image121

2016年12月31日

EDCBで録画して自動CMカットとロゴ消し後NVEncで高速エンコード

※注意
追記部分に修正やバージョンアップ情報などありますので必ず最後までお読みください。

*CMカットが上手くいかない方へ*
今気づいたのですが、過去の私がコメント欄でFAWPreview.aufは必要ないなどとクソアホな間違った返答をしてしまっております。大変申し訳無い気持ちでいっぱいになり責任を取って人生を辞任すべきではないかと考えております。
FAWPreview.aufは”””””必要”””””です。
こちら
AutoEncode_X3_RevE.bat 更新3
の通りに導入してみてください。きっとうまくいくと思います。


まずはじめに言っておきますが、、、このバッチファイルは@echo offってなにそれ美味しいの的なド素人が先人様が作られたバッチを何もわからないまま書き換えたりごちゃまぜにしたりしたものなので何が起きても責任取れません。
何か不具合が起きても素人がいじくり倒したバッチファイルの中身を見て理解し原因を特定し自己解決できる人以外の使用は推奨されません。(そういう人は自分で作ってるよね・・・)

という前置きはこのくらいにして・・・
EDCBで録画して自動CMカット後QSVエンコード 〜速〜 Part1
こちらのブログで配布されているAutoEncode_X3_RevE.batを更に改変して”自分にとって”使いやすく改変してみました。


まず変更点を列挙します。

・EDCBで録画後のバッチファイル実行による自動エンコードと、複数のtsファイルをドラッグ&ドロップによる一括エンコードの両方に対応
  これまでに録り溜めたtsファイルもこのバッチファイルでまとめてエンコードできる

・またドラッグ&ドロップでエンコードされた動画は事前に設定したフォルダではなくtsファイルがある場所に新たなフォルダを作りそこに出力する
  そっちのほうが都合が良かったので

・処理時間を表示
  NVEncめっちゃはえ〜〜という優越感に浸れる機能

・エンコードした動画の出力先フォルダがなかったら自分で作る
  エンコードが終わったあと出力先フォルダがないと動画が出力されずそのまま
  一時ファイルを全部削除して終了してしまうという悲しい現象を回避

・エンコードをQSVencからNVEncに変更
  PCにグラボを刺してる人は普通IntelCPU内蔵のグラフィックスが無効になっており、
  QSVencが利用できない。だったらNVEncを使えばいいじゃない(らでおんのひとは・・・)

・tsファイルの解像度を読み取り、出力のアスペクト比が16:9になるよう自動で解像度を変更
  例えば1440*1080だとか720*480みたいなリサイズなしでエンコするとアスペクト比が
  おかしくなる動画を自動で1920*1080もしくは854*480にリサイズして出力する。
  インタレ保持エンコのため縦解像度は変更できない

・一時ファイルの名前を変更しバッチ複数起動に対応
  なんか元のバッチファイルは複数起動すると一時ファイルの名前が被って
  おかしなことになってた

・出力mp4の局名削除などのファイル名変更を行わない
  個人的には局名も欲しい

・バッチファイルでインタレ解除しないだけでなくNVEncでインタレ保持エンコするように変更
  バッチファイルでインタレ解除しなくてもNVEncはプログレッシブ動画だと誤認しちゃう

・エンコードが何らかの原因で行われなかった場合40秒おきに無限に再試行するよう変更
  ついでにエンコードが何故行われなかったのかの原因究明にも役立つ

・1桁時の時に処理するとうまく動かなくなるバグを修正
  先頭に0があると8進数で表示されるとかそういうのが関係してるのか、
  4時のときは"04"ではなく"半角スペース4"となる。この半角スペースが厄介

・要らない表示をしないよう変更
  コマンドの画面がめっちゃ流れてた

・コマンドプロンプトの画面が処理終了時に勝手に消えない用に変更
  寝てる間にエンコしてて朝起きてみてちゃんとエンコできたか確認できる方がいいと思う

・その他バッチの要らなさそうな行とか変数とかを削除
  ユーザーを不安にさせる変更


導入方法

その1

EDCBで録画して自動CMカット後QSVエンコード 〜速〜 Part1
これのPart1〜Part6と(Part7は行わない)
AutoEncode_X3_RevE.bat 更新3
をよく読み書いてある通りに導入する。

EDCBのtsファイル名の設定はPart6にて『$ServiceName$_$Title$.ts』とされているが、
『$ServiceName$ $Title$.ts』というようにアンダーバー”_”を半角スペース" "に変更してください。これ重要です。全角スペースではダメです。
またリネームはしないため、$ServiceName$が必ずしも先頭にくる必要はありません。
$ServiceName$と半角スペースが含まれていれば他はどうでも良いのです。
例『$SDYY$_$SDMM$_$SDDD$_$STHH$_$STMM$ $ServiceName$_$Title$.ts』
これでもOK

この時点ではQSVencが利用できない場合動作しないと思います。


その2 追加で必要なファイルをダウンロードする

NVEnc_3.02
必ずバージョン3.02以降を使用してください。それ以前のバージョンはインタレ保持エンコに不具合があります。
結構頻繁に更新されてるみたいなのでできるだけ最新版を使うようにしてください。

FFmpeg
使用するのはbinの中のffprobe.exeだけです

CMcut.zip
改変したbatファイルです


その3 ダウンロードしたファイルをその1で導入した環境に追加で配置する

ダウンロードしたNVEnc_3.02.zipを解凍、フォルダ名NVEnc_3.02をNVEncに変更し、DATAフォルダに入れる。

ダウンロードしたffmpeg-ほげほげ-static.zipを解凍する。(binフォルダの中にffprobe.exeが入ってる)
DATAフォルダの中にffprobeというフォルダを新たに作り、その中にffprobe.exeのみを入れる。

その1で導入したAutoEncode_X3_RevEvなんとか.batとchange_space.batを消す。
ダウンロードしたCMcut.zipを解凍し、AutoEncode_X3_RevEv10.batとchange_space.batとikkatsu.batを元あったbatファイルと置き換える形で配置する。


その4 ファイル追加する

OPTフォルダにテキストドキュメントを新規作成し、
--avs --interlaced tff --vbr2 5000 --qp-init 24:27:29 --qp-min 22:23:24
と書き込み、名前をNVEncOPT.txtにして保存する。
(要するにここでNVEncのビットレートとかを変えれるわけです。)


その5 設定の書き換えする

change_space.batとikkatsu.batをテキストエディタなどで開きどちらも画像を参考にAutoEncode_X3_RevEv10.batがある場所を指定し書き換え上書き保存する。
1
2

以上で終了です。


使用方法
change_space.batはEDCBの録画後実行batに登録するやつです。
複数tsファイルを一括処理するには複数選択したtsファイルをikkatsu.batにドラッグ&ドロップするだけです。
あとは全部勝手にやってくれます。


追記に記述してた内容がかなりミスってたので大幅に書き換えました。

追記
正直なところ、あまりCMカットに信頼性が無くバッチで処理したものを残して録画したTSファイルを消すという運用ができないため、自分自身今は使用していません。そのためこのバッチファイルの今後のアップデートなどは期待できないです。

追記2
録画ファイル名に半角セミコロン「;」が入っていると正常に処理できない問題を修正しました。
こちらからファイルをダウンロードして解凍し、中身のchange_space.batとikkatsu.batのみを既存のものと置き換えてください。
置き換えた後、change_space.batとikkatsu.batを編集する必要があります。
「その5 設定の書き換えする」を参考にしてAutoEncode_X3_RevEv10.batがある場所を指定し書き換え上書き保存します。

また上記バージョンアップファイルにはCMカットやロゴ消しを行わず、リサイズ、エンコード、デインターレース、フレームレート固定処理だけを行い、処理を少し高速化したnocmcut版バッチファイルを新たに追加してあります。
こちらを使用する場合は、AutoEncode_X3_RevEv10nocmcut.batとikkatsunocmcut.batを既存のAutoEncode_X3_RevEv10.batと同じフォルダにコピーし、NVEncOPT1.txtをOPTフォルダにコピーしてください。
コピーした後、ikkatsunocmcut.batを編集する必要があります。
「その5 設定の書き換えする」を参考にしてAutoEncode_X3_RevEv10nocmcut.batがある場所を指定し書き換え上書き保存します。
ikkatsunocmcut.batにTSファイルをまとめてドラッグアンドドロップすれば、自動的にエンコードしてTSファイルがあった場所にmp4フォルダを作りそこに出力します。
EDCBの録画後自動bat起動にてnocmcut版バッチファイルを利用するには、change_space.batを編集する必要があります。
「その5 設定の書き換えする」を参考にしてAutoEncode_X3_RevEv10nocmcut.batがある場所を指定し書き換え上書き保存します。
NVEncOPT1.txtにはNVEncのエンコード時のビットレートに関するオプションのみを記述します。
このnocmcut版はTSファイルによっては正常にエンコードできなかったり、音ズレが生じるかもしれません。

注意点
batファイルがあるフォルダはできればドライブ直下が良いです。フォルダ名に全角スペースや半角スペースを含んでいるとうまく動きません。
またtsファイル自体にはスペースがあっても動作するようになっていますが、tsファイルが入っているフォルダにスペースやその他変な文字が入ってるとおそらく動作しません。
またロゴファイルの名前は局名.lgdとしてください。この局名はtsファイルの名前に入っている局名と一致させる必要があります。
またロゴがフェードするタイプはうまくCMカット、ロゴ消しができないかもしれません。
ロゴがうまく消せない、CMカットがうまくできてない場合はもしかするとロゴファイルに問題があるかもしれません。コマンドのログや一時ファイルの中身を見てみれば何かわかるかも

何かしら問題を見つけたらコメント欄にてお願いします。直せれば直すかもしれません。

このバッチファイルを作るにあたってこれらのサイトを参考に(というかほぼパk・・・)させていただきました。
http://oni-chan.hatenadiary.jp/entry/20110508/1304868154
http://qiita.com/koryuohproject/items/815a1621bc34a223e4b9
ありがとうございます。

おまけ
720*480、30分(CMカット、ロゴ消しなし、一番速い)を処理するのにかかる処理時間
1

1920*1080、30分(CMカット、ロゴ消しあり、一番遅い)を処理するのにかかる処理時間
2

wata_net at 13:05コメント(24) この記事をクリップ!

2016年11月08日

コンパレータを用いたPWM発生回路(備忘録的なもの)

PWM波形を発生させるには基本的には三角波もしくはのこぎり波と基準電圧をコンパレータにて比較する手法が用いられます。
ネット上の回路例を見てみると、以下のようなものがありました。

555のタイミングコンデンサの波形+コンパレータ
555とコンパレータでIC2つ必要
555のタイミングコンデンサの波形はあんまり直線的でない

▲ペアンプによる矩形波発振回路のタイミングコンデンサの波形+コンパレータ
タイミングコンデンサの波形はあんまり直線的でない

オペアンプによる矩形波発振回路の出力をさらにオペアンプによる積分回路に通した波形+コンパレータ
オペアンプとコンパレータでIC2つ必要(4回路入りオペアンプは持ってないから使いたくない)

ぅ劵好謄螢轡好灰鵐僖譟璽拭楡冓回路+コンパレータ
オペアンプとコンパレータでIC2つ必要(4回路入りオペアンプは持ってないから使いたくない)

ゥペアンプによる矩形波発振回路のタイミングコンデンサの充放電速度をダイオードと可変抵抗で可変
デューティ比が0〜100%まで可変できない

555のタイミングコンデンサの充放電速度をダイオードと可変抵抗で可変
デューティ比が0〜100%まで可変できない

555と2連ボリューム使うやつ
2連ボリューム使いたくない

┘蹈献奪IC使うやつ
びみょい

などと、まぁ多種多様にあるわけですが、どれも周波数が自由に変えれなかったり、デューティ比が0〜100%まで変えれなかったり、ICが複数必要だったり、わりと微妙なのでいい感じのやつをメモっときます。

というわけでまず回路。
PWMsch
コンパレータはLM393、NPNは2SC1815、PNPは2SA1015に置き換えればいいです。
当然電源は3端子レギュレータなどで安定化させたものを使うこととします。

まずのこぎり波発振回路についての解説です。
コンデンサは定電流で充電すると電圧が充電時間に比例するようになるため、定電流回路を組んであります。
Q1、Q2のあたりが帰還型の定電流回路になっており、C1を定電流で充電します。
コンデンサの充電電流i=Q1のVbe/R1
Q1のVbeは大体0.66[V]くらいとします。
この回路ではコンデンサの充電電流は0.55[mA]くらいになっています。

U1はコンデンサの電圧が一定に達するとQ3をONにしてC1を強制的に放電させます。
すると、Vrampはのこぎり波形になります。
C1を放電させる電圧Vrampref=V1*R4/(R3+R4)=V1-1
この回路では4[V]になっています。
この電圧がV1に近すぎるといつまでたってもC1が強制的に放電されず発振しません。V1-1[V]くらいでいいでしょう。
またC2はQ3のスピードアップコンデンサみたいなもので、これがないと微妙なのこぎり波になります。値が大きすぎても小さすぎてもよろしくないっぽいです。
R5はQ3のベースに電流を流すためのものです。

ここで上記の2つの式とコンデンサの容量Cとコンデンサの電圧Vcと充電電流iと充電時間tの関係式
Vc=it/C
を使って発振周波数fを求めると次のようになります。(コンパレータやトランジスタによる遅延時間は無視しています)
f=0.66/((V1-1)*R1*C1)
この回路では1.375[kHz]になっています。
回路を変形すれば周波数からR1とC1の比がわかります。
R1*C1=0.66/((V1-1)*f)
C1は大体0.1[uF]程度がいいと思います。
これらの式からわかるように、R1とC1を可変すると発振周波数が可変できますが、周波数を低くしすぎるとQ3によるC1の強制放電がうまく行かず、周波数を高くしすぎるとコンパレータの遅延により微妙なことになります。
周波数を高くすることについては高速コンパレータを使えば解決しそうです。

ここまでがのこぎり波発振回路関係です。次にのこぎり波と基準電圧を比較してPWMを生成するコンパレータ部分の解説です。

U2でのこぎり波Vrampと基準電圧Vpwmrefを比較して、基準電圧にたいしてのこぎり波のほうが電圧が高いとV1が出力PWMOUTに現れます。
PWMのデューティ比は基準電圧Vpwmrefを0[V]からV1-1(C1を放電させる電圧Vrampref)まで変化させると100%から0%まで変化します。
R6を固定抵抗にしてR7を可変抵抗にすればデューティ比を可変させることができるでしょう。
ここでR7を一定の可変抵抗とすると、R6は
R6=(R7*V1/(V1-1))-R7
と求まります。

シミュレート波形
PWMschsim
のこぎり波が青い波形のところまで達すると電圧がリセットされて、のこぎり波とPWMコンパレータの基準電圧の交点で水色の波形が5Vになっているのがよくわかると思います。
発振周波数は計算値より少し低めに出ています。コンパレータの遅延によるものと思われます。

livedoor プロフィール
Recent Comments
記事検索
アクセスカウンター
  • 今日:
  • 昨日:
  • 累計:

QRコード
QRコード
  • ライブドアブログ