直流電圧変換回路。 強力なDC-DCコンバータ

トランジスタの比例電流制御により、スイッチング損失が大幅に低減され、コンバータの効率が向上するプッシュプル パルス発生器が、トランジスタ VT1 および VT2 (KT837K) に組み込まれています。 正帰還電流は、変圧器 T1 の巻線 III および IV、およびコンデンサ C2 に接続された負荷を流れます。 出力電圧を整流するダイオードの役割は、トランジスタのエミッタ接合によって行われます。

この発電機の特別な機能は、負荷がないときに発振を停止することであり、これにより電力管理の問題が自動的に解決されます。 簡単に言えば、このようなコンバータは、何かに電力を供給する必要がある場合に自動的にオンになり、負荷が切断されるとオフになります。 つまり、電源バッテリーは常に回路に接続することができ、負荷がオフのときは実質的に消費されません。

指定された入力 UВx に対して。 そしてUBixを出力します。 電圧と巻線 I および II の巻数 (w1)、必要な巻線 III および IV の巻数 (w2) は、次の公式を使用して十分な精度で計算できます: w2=w1 (UOut. - UBx. + 0.9) /(UBx - 0.5 )。 コンデンサには次の定格があります。 C1: 10 ~ 100 μF、6.3 V。C2: 10 ~ 100 μF、16 V。

トランジスタは許容値に基づいて選択する必要があります ベース電流 (負荷電流未満であってはなりません!!!) そして 逆電圧エミッタ - ベース (入力電圧と出力電圧の差の 2 倍より大きくなければなりません。) .

220Vコンセントからスマートフォンを充電できないとき、旅行中にスマートフォンを充電するための装置を作るためにChaplyginモジュールを組み立てましたが、悲しいことに...並列接続した8個のバッテリーを使用して絞り出すことができたのは最大値でした4.75 V の出力電圧での充電電流は約 350 ~ 375 mA です。 妻の Nokia 携帯電話はこのデバイスで充電できますが。 負荷がなければ、私の Chaplygin モジュールは入力電圧 1.5 V で 7 V を生成します。これは KT837K トランジスタを使用して組み立てられています。

上の写真は、9 V を必要とするいくつかのデバイスに電力を供給するために私が使用している疑似 Krona を示しています。Krona バッテリーのケースの内側には、AAA バッテリー、充電用のステレオ コネクタ、および Chaplygin コンバーターがあります。 KT209トランジスタを使用して組み立てられています。

変圧器 T1 は、寸法 K7x4x2 の 2000NM リングに巻かれており、両方の巻線が 2 本のワイヤで同時に巻かれています。 リングの外側と内側の鋭いエッジの絶縁体を損傷しないように、サンドペーパーで鋭いエッジを丸めて鈍くします。 まず、直径 0.16 mm のワイヤを 28 回巻いた巻線 III および IV (図を参照) が巻かれ、次に、同じく 2 本のワイヤで、直径 0.25 mm のワイヤが 4 回巻かれた巻線 I および II が巻かれます。 。

コンバーターを複製することを決めた皆さんの幸運と成功をお祈りします。 :)


パルス DC-DC コンバータは、電圧の増加と減少の両方のために設計されています。 彼らの助けを借りて、最小限の損失で、たとえば 5 ボルトを 12 ボルト、または 24 ボルト、またはその逆に変換できます。 高電圧 DC-DC コンバータもあり、比較的低い電圧 (5 ~ 12 ボルト) から数百ボルトという非常に大きな電位差を得ることができます。 この記事では、出力電圧を60〜250ボルトの範囲で調整できるまさにそのようなコンバータのアセンブリについて説明します。


これは、一般的な NE555 統合タイマーに基づいています。 図の Q1 は電界効果トランジスタです。IRF630、IRF730、IRF740、または 300 ボルトを超える電圧で動作するように設計されたその他のものを使用できます。 Q2 は低電力バイポーラ トランジスタです。BC547、BC337、KT315、2SC828 を安全に取り付けることができます。 チョーク L1 のインダクタンスは 100 μH である必要がありますが、これが手元にない場合は、50 ~ 150 μH の範囲でチョークを取り付けることができます。これは回路の動作に影響しません。 チョークを自分で作るのは簡単です。フェライト リングに銅線を 50 ~ 100 回巻き付けます。 ダイオード D1 は FR105 回路に従っていますが、代わりに、UF4007 または少なくとも 300 ボルトの電圧を持つその他の高速ダイオードを取り付けることができます。 コンデンサ C4 は高電圧 (少なくとも 250 ボルト、可能であればそれ以上) でなければなりません。 容量は大きければ大きいほど良いです。 また、コンバータの出力における高周波干渉を高品質にフィルタリングするために、小容量のフィルムコンデンサを並列に取り付けることをお勧めします。 VR1 は出力電圧を調整するトリミング抵抗です。 回路の最小電源電圧は 5 ボルトで、最適な電圧は 9 ~ 12 ボルトです。

コンバーターの製造

回路は 65x25 mm のプリント基板上に組み立てられ、基板の図面が記載されたファイルが製品に添付されます。 ボードをケースに取り付けるためのスペースを端に確保できるように、図面自体よりも大きな textolite を取ることができます。 製造工程の写真をいくつか:




エッチング後、基板に錫メッキを施し、短絡がないかチェックする必要があります。 なぜなら ボードには高電圧がかかっているため、トラック間に金属バリがあってはなりません。そうでないと故障の可能性があります。 まず、抵抗、ダイオード、コンデンサなどの小さな部品が基板にはんだ付けされます。 次に、超小型回路(ソケットに取り付ける方が良いです)、トランジスタ、トリミング抵抗、インダクタ。 配線を基板に接続しやすくするために、基板上にネジ端子台を設置することをお勧めします。



ボードをダウンロードします。

(ダウンロード: 260)

最初の起動とセットアップ

開始する前に、必ず正しい取り付けを確認し、線路を鳴らしてください。 トリミング抵抗を最小位置に設定します (スライダーは抵抗 R4 の側にある必要があります)。 この後、電流計を直列に接続することで基板に電圧を加えることができます。 アイドル時、回路の消費電流は 50 mA を超えてはなりません。 基準内に収まる場合は、トリミング抵抗を慎重に回して、出力電圧を制御できます。 すべてが正常であれば、負荷、たとえば 10 ~ 20 kΩ の抵抗を高電圧出力に接続し、今度は負荷がかかった状態で回路の動作を再度テストします。
このようなコンバータが生成できる最大電流は約 10 ~ 15 mA です。 たとえば、ランプ技術の一部として、ランプの陽極に電力を供給したり、ガス放電や発光インジケータを点灯したりするために使用できます。 250 ボルトの出力電圧は人が認識できるため、主な用途は小型スタンガンです。 ハッピービルディング!

一般に、パルスコンバータとパワーエレクトロニクスは、エレクトロニクス開発分野のほとんどのアマチュアや専門家にとって、常に神聖なものであり続けています。 この記事では、DIY愛好家や代替エネルギーのファンの間でおそらく最も興味深いトピック、つまり一定の電圧/電流からの正弦波の電圧/電流の形成について取り上げています。

「ピュアサイン」という言葉が含まれる広告を見たり、記事を読んだりしたことがある方も多いと思います。 これはまさにこれからお話しする内容ですが、マーケティング要素についてではなく、もっぱら技術的な実装について説明します。 動作原理自体、標準的な (およびそれほど標準的ではない) 回路ソリューションについて、できるだけ明確に説明するように努めます。そして最も重要なこととして、必要な信号を生成する STM32 マイクロコントローラー用のソフトウェアを作成して分析します。

なぜSTM32なのか? はい、これは現在 CIS で最も人気のある MK であるためです。MK に関するロシア語の教育情報がたくさんあり、多くの例があります。そして最も重要なことに、これらの MK とそのデバッグ ツールは非常に安価です。 はっきり言っておきますが、商用プロジェクトでは、TMS320F28035 または TI の Piccolo シリーズの同様の DSP のみをインストールしますが、それはまったく別の話です。

重要な点が 1 つあります。STM32 を使用すると、世界の運命が原子力発電所やデータセンターの稼働に依存しない、単純な「家庭用」電力変換器を安定して制御できるようになります。

直流を交流に変換するために必要な制御信号のイメージです。 そしてはい、これはまさに正弦です! あの映画のように、「ホリネズミが見えますか? - いいえ。 - そして彼は...」

副鼻腔がどのように形成されるのか知りたいですか? キロワットのエネルギーがどのようにして石油に送り込まれるのか知りたいですか? それではカットへようこそ!

1. 正弦波信号を生成するためのトポロジー

大勢のエレクトロニクス技術者に「正弦波信号を生成するにはどうすればよいですか?」と尋ねると、十数種類の異なる方法の提案が殺到するでしょう。しかし、どれが必要なのでしょうか? 元のタスクから始めましょう - たとえば、380V 10A を 230V の交流電圧に変換する必要があります。 一般に、これは「古典的な」ケースであり、優れたオンライン UPS またはインバータで見られます。 約 4 kW の電力を変換する必要があることがわかりましたが、その効率は悪くありません。 このような条件は、サインを「描く」ための選択肢の数を減らすことになると思います。 では、何が残っているのでしょうか?

最大 6 ~ 10 kW のパワーコンバータでは、フルブリッジとスルーニュートラルを備えた「ハーフブリッジ」という 2 つの主要なトポロジが使用されます。 彼らはこう見えます 次の方法で:

1) ニュートラルを介したトポロジー

このトポロジは、正弦波出力を備えた低価格 UPS で最もよく見られますが、APC や GE などの権威者は、かなりの高出力でも躊躇せずにこのトポロジを使用します。 何が彼らにそうする動機を与えているのでしょうか? このトポロジの長所と短所を見てみましょう。

長所:

  • パワートランジスタの数を可能な限り最小限に抑えることで、損失が 2 倍少なくなり、デバイスのコストも低くなります
  • ゼロを通して。 これにより、認証プロセス、特に CE と ATEX が簡素化されます。 これは、コンバータ後の出力回路で事故が発生した場合に、ゼロを介して入力保護システム (RCD など) も動作できるようにするためです。
  • シンプルなトポロジにより、小規模な製品で製品コストを最小限に抑えることができます。
    中規模生産

マイナス点:

  • バイポーラ電源の必要性。 ご覧のとおり、±380V と別のゼロをインバータ回路に供給する必要があります。
  • 高電圧コンデンサの数を2倍にします。 大容量で低 ESR の高電圧コンデンサは、3 ~ 4 kW の電力で 20 ~ 40% の範囲に達し始めます。
    コンポーネントのコスト
  • 「分圧器」に電解コンデンサを使用。 それらは乾燥し、同じパラメータを持つコンデンサを選択することはほとんど不可能であり、動作中に電解質のパラメータが変化することを考慮すると、それは無意味です。 フィルムに置き換えることもできますが、高価です
主な長所と短所は明らかになりましたが、このトポロジはいつ必要になるのでしょうか? 私の主観的な意見: 最大 500 ~ 1000 W の電力で、基本的な要件は信頼性ではなくコストです。 このような消費財の代表的なものは、A-Electronics の安定器です。安くて、何らかの形で機能し、それで問題ありません。 我が国の消費者の 60% にとって、これは十分であり、手頃な価格です。 結論を出しましょう。

2) ブリッジトポロジ

ブリッジ トポロジ...おそらく電力コンバータで最も理解しやすく、最も一般的なトポロジであり、最も重要なのは、経験がほとんどない開発者でもアクセスできることです。 10 kW を超えると、単相または三相ブリッジ以外には何も見つかりません。 なぜ彼はそんなに愛されているのでしょうか?

長所:

  • 非常に高い信頼性。 これは主にパワートランジスタ制御システムの品質によるものであり、コンポーネントの劣化には依存しません。
  • 必要な入力容量は数倍、あるいは 1 桁も小さくなります。 計算された ESR 値を提供することのみが必要です。 これにより、コストを維持しながらフィルムコンデンサの使用が可能になります。 フィルムコンデンサ - 乾燥せず、過酷な温度でも優れた性能を発揮し、耐用年数は電解液よりも一桁長い
  • トランジスタの電圧リップルが最小限に抑えられるため、より低い電圧のトランジスタを使用できる
  • 動作アルゴリズムのシンプルさと明確さ。 これにより、製品開発および試運転にかかる時間の大幅な短縮につながります。

マイナス点:

  • パワートランジスタの数が増えるということは、より厳密な冷却が必要になることを意味します。 トランジスタの価格は上昇しますが、コンデンサの数が少ないため、これはむしろプラスです
  • 特にガルバニック絶縁要件によるドライバーの複雑さの増加
ブリッジ トポロジの実際の欠点からわかるように、トランジスタを冷却するための要件が​​増加するだけです。 「より多くの熱が発生するということは、効率が低下するということだ!」と多くの人は考えるでしょう。 必ずしもそうではありません...EMF の放出が減少し、より「タフな」制御システムになっているため、2 つのトポロジーの効率はほぼ同等です。

70% の場合、DC/AC インバータだけでなく他のコンバータでもブリッジ回路を使用する必要があります。 これは、私が主に産業用ソリューションを設計しており、ヨーロッパの顧客向けに設計することが増えており、そこでは高価な産業用デバイスに 5 ~ 15 年の保証を提供するのが通例であるためです。 「10 年間保証できるハードウェアが欲しい」という古典的な要件には、もう選択肢はありません。 もちろん、最も低価格のデバイスが必要な場合は、トポロジを選択するときに特定のタスクから始める必要があります。

短い要約: この記事では、ブリッジ コンバータ (H ブリッジまたはフル ブリッジ) を操作するためのソフトウェアを提供しますが、正弦波生成の原理はすべてのトポロジで同じです。 コードは 1 番目のトポロジに適合させることもできますが、それはご自身で行ってください。

2. ブリッジコンバータによる交流の形成

まず、ブリッジコンバータが一般的にどのように動作するかを見てみましょう。 回路を見ると、トランジスタ VT1 ~ VT4 が見えます。 これらを使用すると、抽象的な負荷 (たとえば、抵抗器) に 1 つまたは別の電位を適用できます。 トランジスタ VT1 と VT4 を開くと、次の結果が得られます。VT4 は負荷の一端を負 (GND) に接続し、トランジスタ VT1 は +380V に接続します。負荷の両端には電位差「380V - 0V」が現れます。ゼロ、つまり貫通電流が負荷に流れ始めることを意味します。 電流は「プラスからマイナスに」流れるという科学者の意見に誰もが同意したことを覚えていると思います。 次の図が得られます。

VT1 と VT4 を開くと何が得られますか? 負荷をネットワークに接続しました。 抵抗器を電球に置き換えると、単純に点灯します。 また、単に負荷をオンにするだけではなく、負荷に流れる電流の方向も決定しました。 それは非常に重要です! その時、VT2とVT3では何が起こったのでしょうか? それらは閉じられていました...完全に...しっかりと...結局のところ、VT2 または VT3 も開いていたらどうなるのでしょうか? 見てみよう:

トランジスタ VT1、VT4、および VT2 が開いていると仮定します。 オームの法則を思い出してください。高電圧トランジスタ、たとえば IPP60R099P7XKSA1 のチャネル抵抗を見て、0.1 オームであることを確認します。これらが 2 つ直列に接続されています。つまり、回路 VT1 と VT2 の抵抗は約 0.2 オームです。 次に、この回路に流れる電流を計算してみましょう: 380V / 0.2 オーム = 1900A。 これがショートであることは皆さんも理解していると思いますか? また、なぜ VT2 と VT3 を閉鎖しなければならないのか、皆さんも理解していると思います。

この「現象」をこう呼ぶ 電流を通して。 そして、パワーエレクトロニクス分野で大きな戦争が起こっているのは彼と一緒です。 それを避けるにはどうすればよいでしょうか? 追加のトランジスタを同時に開くことを厳密に禁止するアルゴリズムを持つ制御システムを作成します。

では、なぜトランジスタ VT2 と VT3 が必要なのでしょうか? 電流の方向が非常に重要であると書いたのを覚えていますか? 交流とは何かを思い出してみましょう。 実際には、これは何か変化する電流、この場合は電流の方向です。 ソケットには 1 秒間に 100 回方向を変える電流が流れています。 ここで、VT1 と VT4 を閉じてから、トランジスタ VT2 と VT3 を開いて、次の図を取得しましょう。

ご覧のとおり、電流の方向(矢印で示されています)が反対に変わりました。 橋を使うことで流れの向きを変えることができましたが、これは何を意味するのでしょうか? はい、ACができました!

ブリッジには 2 つの対角線があることに注意してください。最初の対角線は VT1+VT4 によって形成され、2 番目の対角線は VT2+VT3 によって形成されます。 これらの対角線は順番に動作し、電流を最初に一方向に切り替え、次にもう一方の方向に切り替えます。

それで、私たちは交流を手に入れた、とあなたは言いますが、すべてがそれほど単純ではありません...私たちは標準の主電源電圧を持っています。 これは、電圧と周波数という 2 つの主要なパラメータによって標準化されています。 電圧の問題は単純で純粋に回路技術的なものであるため、ここでは周波数について扱います。

それで周波数は…わかっていることは、それが 50 Hz (米国では 60 Hz の場合もあります) であるということです。 信号周期は20msです。 この場合、正弦波は対称です。つまり、2 つの半波 (正と負) の持続時間は同じ、つまり 10 ミリ秒 + 10 ミリ秒です。 ここですべてが明確になることを願っています。

これは物理的な意味で何を意味するのでしょうか? はい、実際には、負荷に流れる電流の方向を 10 ms ごとに変更する必要があります。 最初に VT1+VT4 対角線が 10 ミリ秒間開き、次に閉じて、VT2+VT3 対角線が次の 10 ミリ秒間開くことがわかります。

トランジスタを開くとは何を意味し、どのような信号をトランジスタに送信するのでしょうか?

トランジスタ制御の原理に少し脱線しましょう。 絶縁ゲート型 N チャネル電界効果トランジスタ (Mosfet) を使用しています。

「オープントランジスタ」とは、ゲート(G)にソース(S)に対して正の電位(+10..18V)が供給され、チャネル(S-D)の抵抗が無限大から変化したトランジスタです。 (2 ~ 100 MOhm) から小さい (通常は 0.1 ~ 1 Ohm)。 つまり、トランジスタは電流を流し始めました。

「クローズド・トランジスタ」とは、ゲート (G) がソース (S) に向かって引っ張られ、その抵抗が小さい値から無限大まで変化するトランジスタです。 つまり、トランジスタは電流を流すことを停止します。

電界効果トランジスタまたは IGBT の動作原理をよりよく理解するには、Semenov の著書「Fundamentals of Power Electronics」のいくつかの章を読むか、または別の情報源 (手始めに Wikipedia など) を読むことをお勧めします。

制御のために、パルス幅変調またはよりよく知られた略語である PWM を備えた信号を供給します。 この信号の特徴は、下側電圧 (GND) と上側電圧 (VCC) の 2 つの状態があることです。つまり、この信号をトランジスタのゲートに印加することで、ゲートを開くか閉じるかのどちらかになります。他には何も与えられません。 また、PWM については、怠け者向けに表面的に説明したため、詳しく読むことをお勧めします。


したがって、ブリッジが 10 ミリ秒ごとに電流の方向を変えるには、周期が 20 ミリ秒、デューティ サイクルが 50% の PWM 信号をブリッジに適用する必要があります。 これは、20 ミリ秒のうち、半分の時間 (10 ミリ秒) でショルダーが開いて電流を流し、残りの半分が閉じていることを意味します。 このような PWM をすべてのキーに適用する必要がありますが、条件が 1 つあります。直接 PWM を VT1+VT4 対角線に適用し、逆 PWM を VT2+VT3 対角線に適用します。 より賢明に言うと、対角線上に供給される信号には 180 0 のシフトが必要です。 この瞬間、皆さんの頭はテキストを理解しようと忙しくしていると思いますので、その視覚的表現を見てみましょう。

これですべてが明らかになりましたか? いいえ? 次に、さらに詳しく説明します... ご覧のとおり、トランジスタの開閉の瞬間に特に注目しました。トランジスタは「プラス」で開き、「マイナス」で閉じます。 また、信号は反対、つまり逆です。青の信号が「プラス」の場合、緑の信号は「マイナス」になります。 一方の対角線に青の信号を適用し、もう一方の対角線に緑の信号を適用します。オシログラムでわかるように、対角線が同時に開くことはありません。 交流も準備完了!

期間を見てください。 私の言葉が抽象化されないように、コントローラーの出力からのオシログラムを具体的に示しました。 信号周期は 20 ミリ秒で、一方の対角線は 10 ミリ秒間開いて正の半波を作成し、もう一方の対角線も 10 ミリ秒間開いて負の半波を作成します。 皆さんが理解していただければ幸いです。それでも理解できない場合は、午後に私にメールしてください。個別に指のレッスンをさせていただきます。 私の言葉を裏付けるために、オシログラムは私たちの秘蔵の 50 Hz を示しています。 リラックスするにはまだ早い…

周波数50 Hzの交流を受信しましたが、コンセントには正弦波があり、ここでは蛇行は当てはまりません。 正式には、出力に蛇行を適用し、それを使用してほとんどの負荷に電力を供給できます。たとえば、スイッチング電源では正弦波か蛇行かは関係ありません。 つまり、ラップトップ、電話、テレビ、電話などの電源を入れるのに十分なものがすでにありますが、ACモーターを接続すると、すべてが非常に悪くなります。発熱し始め、効率が著しく低下します。そして最終的には燃え尽きる可能性が高いです。 家にはエンジンがないと思いますか? 冷蔵庫のコンプレッサーはどうでしょうか? 加熱循環ポンプはどうでしょうか? 後者は通常、まるで木でできているかのように燃えます。 状況は、井戸用の深井戸ポンプや他の多くのもの一般でも同じです。 インバーター、スタビライザー、または UPS の出力における正弦波信号が依然として重要であることがわかりました。 さて、それを作成する必要があります。 今、完全な脳の爆発が始まります...

3. PWMを使用した正弦波形の生成

正直に言うと、このセクションをわかりやすい言葉で表現する方法がわかりません。 理解できない人がいる場合は、さらにグーグルで検索するか、コメントまたは PM に書き込んでください。私が個人的に説明します。 目は怖いけど手はやってる…

通常の正弦グラフがどのようなものかを見てみましょう。

2 つの軸が表示されます。1 つの軸は pi、pi/2 以降の周期を持ち、2 つ目の軸は -1 から +1 までの振幅を持ちます。 この問題では、周期は秒単位で測定され、半波ごとに 20 ミリ秒または 10 ミリ秒になります。 ここではすべてがシンプルで明確ですが、振幅を使用するとさらに楽しくなります。振幅が 0 ~ 1000 であるという公理として考えてください。これはマイクロコントローラーが設定するデューティ サイクル値です。つまり、100 は 10%、500 は 10% です。 50%、900 は 90% です。 ロジックは明確だと思います。 次の章では、なぜ 0 から 1000 までなのかを理解しますが、ここでは値に合わせてグラフを再構築しましょう。

これは喫煙者の正弦グラフがどのように見えるかであり、これが私たちのタスクに対応します。 ご覧のとおり、負の半サイクルを示していません。 私たちの場合、正弦波信号を使用するのではなく、ブリッジの対角線を切り替えることによって電流の方向を変更することによって実装されます。

X 軸には時間が表示され、Y 軸には PWM 信号のデューティ サイクルが表示されます。 PWM を使用して正弦波を描く必要があります。 私たちは学校で幾何学を覚えていますか?どうやってグラフを作成したでしょうか? そう、一点一点です! 何点ですか? いくつかの点 O1(0,0) + O2(5,1000) + O3(10,0) + O4(15, -1000) + O5(20, 0) にわたって正弦を作成し、次の正弦を取得しましょう。

これを構築したところ、原理的には、この信号は通常の蛇行よりも正弦波に似ていることがわかりましたが、まだ正弦波ではありません。 ポイントを増やしていきましょう。 ちなみに、これを「信号の離散性」、この場合は「PWM の離散性」と呼びます。 これらの点の座標を調べるにはどうすればよいですか? 極端なものでは、それは簡単でした...

正弦波を形成するための値の計算

上で述べたように、正弦は非常に対称的です。 期間の 1/4、つまり 0 から 5 ミリ秒を構築すると、この部分をさらに複製することで、無限に長い時間のサインを構築できます。 そして、式は次のようになります。


そして順番に:
  • n - 特定の離散点におけるデューティ サイクル値
  • A は信号振幅、つまり最大デューティ サイクル値です。 私たちにとっては1000です
  • pi/2 - 正弦周期の 1/4 は pi/2 に入ります。周期の 1/2 を数えると、pi になります。
  • x - ステップ番号
  • N - ポイントの数
例えば、5点あるという条件を便利に使ってみましょう。 1 ステップ = 1 ミリ秒であることがわかり、これによりグラフの作成が簡単になります。 サンプリング ステップは単純に計算されます。グラフを作成する期間 (5 ミリ秒) をポイントの数で割ります。 この公式を人間の形に当てはめてみましょう。


サンプリング ステップは 1 ミリ秒になります。 たとえば、Excel でデューティ サイクルを計算する式を書き出して、次の表を取得してみましょう。

ここで、正弦グラフに戻り、より多くの点について再度プロットし、それがどのように変化するかを確認します。

ご覧のとおり、私の描画スキル、またはむしろ怠惰のレベルを考慮しても、信号ははるかに正弦波に似ています)) 結果は説明する必要はないと思いますか? 構築結果に基づいて、次の公理を導き出します。

ポイントが多いほど、信号サンプリングが高くなり、正弦波信号形状がより理想的になります。


それで、何ポイント使用するか...多ければ多いほど良いことは明らかです。 数え方:
  1. この記事では、周波数が 24 MHz の古い STM32F100RBT6 マイクロコントローラー (STM32VL-Discovery デバッグ) を使用しています。
  2. 20 ミリ秒の周期が何ティック続くかを数えます: 24,000,000 Hz / 50 Hz = 480,000 ティック
  3. これは、周期の半分が 240,000 ティック継続することを意味し、これは 24 kHz の周波数に相当します。 キャリア周波数を上げたい場合は、より速い石を使用してください。 私たちの耳には 24 kHz が聞こえますが、テストや地下室にあるハードウェアの場合は問題ありません。 少し後にF103C8T6に移行する予定ですが、そこではすでに72MHzになっています。
  4. 240,000 ティック...論理的には、期間の半分で 240 ポイントを示唆します。 タイマーは、1000 ティックごと、または 41.6 μs ごとにデューティ サイクル値を更新します。
私たちは PWM の離散性を決定しました。少なくともネットワークよりも悪くない信号形状を得るには、半周期あたり 240 ポイントで十分な余裕があります。 ここで、最も単純なオプションとして、これも Excel で表を計算します。 次のグラフが得られます。

テーブルと値のソースは、リンクで見つけることができます。

4. 正弦波を生成するためのブリッジコンバータの制御

正弦テーブルを受け取りましたが、それをどうすればよいでしょうか? これらの値は、既知の特定のサンプリング ステップで送信する必要があります。 すべてはタイマーが初期化されることから始まります - 時間 0、デューティ サイクル 0。 次に、41.66 μs のサンプリング ステップをカウントし、表 13 の PWM 値 (0.13%) をタイマーに書き込み、さらに 41.66 μs をカウントして 26 (0.26%) を記録し、240 個の値すべてについて同様に処理します。 なぜ 240 なのか? 1/4期間には120ステップがありますが、1/2期間を描画する必要があります。 デューティ サイクル値は同じですが、1000 に達した後にのみ逆の順序で書き込み、正弦波減衰が得られます。 出力には次のオシログラムが表示されます。

ご覧のとおり、明確に定義された期間で一連の PWM 値を受信しました。その期間は、240 ステップ x 41.66(!) μs = 9998.4 μs = 9.9984 ms ~ 10 ms です。 ネットワーク周波数 50 Hz の半周期が得られました。 ご覧のとおり、再び 2 つの信号があり、それらは逆位相になっています。これはまさにブリッジの対角線を制御するために必要なものです。 でも、すみません、サインはどこにあるのですか? 正念場が来た! マイクロコントローラーの出力からの信号をローパス フィルターに入力しましょう。公称値 1.5 kOhm と 0.33 μF の RC 回路を使用して単純なローパス フィルターを作成しました (ちょうど手元にありました)。次の結果:

出来上がり! 待ちに待ったサインです! オシロスコープの赤いビームはローパスフィルター前の信号、黄色のビームはフィルター後の信号です。 ローパス フィルターは 321 Hz を超えるすべての周波数をカットします。 50 Hz の主信号と、もちろん小さな振幅の高調波がまだ残っています。 信号を完全にクリーンにしたい場合は、カットオフ周波数が約 55 ~ 60 Hz のローパス フィルターを作成します。ただし、今のところ、これは重要ではありません。正弦波が得られているかどうかを確認する必要があるだけです。 ちなみに...私のオシロスコープの同期は黄色のビーム(画面右側の矢印)に対してオンになっており、画面の下部にその周波数が表示されます - 理想的な50 Hzです。 これ以上何を求めることができますか? それだけです。残っているのは、どの信号をどこに送信するかを決定することだけです。 この写真を見てみましょう:

この記事の最初のオシログラムを見ると、黄色と青色の信号が同位相であることがわかります。つまり、信号が同時にプラスになり、トランジスタが開きます。 これら 2 つの信号は、VT1+VT4 対角線を開きます。 したがって、他の 2 つの信号も同じ位相を持ち、異なる対角線を開きます。 ここで、電流の方向を変更するだけでなく、正弦波の法則に従って変化するように PWM を使用して振幅も設定します。 次に、同じ回路を見てみましょう。電流は次のとおりです。

ご覧のとおり、負荷を流れる電流は逆方向に流れ、50 Hz の周波数で方向が変わり、トランジスタ VT1 と VT2 に供給される変調 PWM によって、半波の正弦波信号形状を描くことができます。

LPF (低周波フィルター) はインダクタンス L1 とコンデンサ C2 で構成されます。 このフィルタのカットオフ周波数を 100 Hz 未満にすることをお勧めします。これにより、出力の電圧リップルが最小限に抑えられます。

最後に、同様のトポロジーとフィルターを備えた実際のデバイスの回路図の一部をお見せします。サイズが大きいため、PDF をダウンロードしてください。

5. 流れの中の戦い

完璧なものなどないというのは誰にとっても秘密ではないと思いますか? MOSFET にも同様で、多くの欠点があります。そのうちの 1 つであるゲート容量が大きいことに注目します。 つまり、トランジスタを開くには、電圧を印加するだけでなく、同じ電圧でコンデンサを充電する必要があるため、信号の立ち上がりと立ち下がりが遅くなります。 これは、一方のトランジスタがまだ完全に閉じておらず、もう一方のトランジスタがすでに開き始めているときに、信号境界で瞬間が発生する可能性があるという事実につながります。

この現象について詳しくは、たとえばこの記事を読むことをお勧めします。 対処法だけ教えておきます。 次のアームが開く前にトランジスタが正常に閉じる時間を確保するために、制御信号間にデッドタイム、つまり、より簡単に言うと時間遅延が導入されます。 この場合、このような遅延はトランジスタ VT3 と VT4 の制御信号の間に導入されます。 これらは半波スイッチングを提供するものです。 変調された PWM を備えたトランジスタ (VT1 および VT2) にはすでにそのような遅延があります。正弦波はデューティ サイクル 0% で始まり、0% で終わります。 この遅延は 1 サンプリング ステップの長さ、つまり 41.6 μs です。

したがって、青と緑のビーム/信号の間にデッドタイムを実装する必要があります。 どのコントローラーでも、そのような遅延はプログラムで実行できますが、これは良くありません。プログラムがフリーズしたり遅延したりして、何とか何とか、あなたのデバイスとアパートはすでに燃えています。 したがって、パワー エレクトロニクスではハードウェアのみを使用する必要があります。 すべての特殊なモーター制御では、すべての PWM 出力およびチャネルにハードウェア デッドタイムが提供されますが、STM32 は依然として汎用 MK であるため、ここではすべてがより単純ですが、機能は実行されます。

TIM1 タイマーが必要になりますが、信号間にハードウェア遅延を挿入できるのは、ソフトウェアの作成に関するセクションでその方法を説明するだけですが、ここで結果とそこに何が表示されるかを見てみましょう。

遅延を確認するには、オシロスコープで信号を「ストレッチ」します。 持続時間は約 300 ns と短いです。 トランジスタを貫通電流から保護するために、必要なデッドタイムは特定のタスクごとに計算する必要があります。 遅延時間は、TIM1 タイマの初期化(設定)時に設定されます。 この遅延は、信号の立ち上がり端と立ち下がり端の両方に存在します。

6. STM32 マイクロコントローラーのファームウェアの書き込み

ここで、おそらく最も重要で興味深い部分に到達します。 私たちはプロセスの物理学を分析し、動作原理は明確であるようです。必要な最小限の保護も決定されました。残っているのは、これらすべてを実際のハードウェアに実装することだけです。 このために私は STM32VL-Discovery ボードを使用しています。ちなみに、私は 2011 年に ST がカンファレンスでデバッグを無料で配布したときにこのボードを受け取り、それ以来梱包されていました。パッケージを開けたのはわずか 2 か月ですまだ有効期限が切れていないようです))) コードを書くときの私の「スタンス」は次のようになります。

それでは接続を見てみましょう。 異なる周波数の 2 つの信号を生成する必要があるため、異なるタイマーで PWM 出力を使用する必要がありました。 TIM1 は、50 Hz の基本周波数を設定する信号を生成し、それをトランジスタ VT3 と VT4 に供給します。 PWMチャンネルNo.3+その相補出力を使用します。 はい、はい、STM32 ハードウェアのデッドタイムは 1 つのチャンネルの通常出力と相補出力の間でのみ設定できますが、これは私にとってはあまり好きではありませんでした。 正弦波形成のプロセス自体は TIM2 タイマーに転送され、遅延の必要がなく (その理由は以前に書きました)、VT1 と VT2 で変調信号を生成するのに非常に適しています。

使用される出力:

  • PA10 は通常の PWM 出力、TIM1 タイマーのチャンネル番号 3 で、トランジスタ VT3 に 50 Hz を生成します。
  • PB15 - TIM1 タイマーのチャネル No. 3 の相補出力。トランジスタ VT4 に供給されます。
  • PA0 は TIM2 タイマの PWM チャネル No.1 の出力です。 変調信号を VT1 に提供します
  • PA1 は TIM2 タイマの PWM チャネル No.2 の出力です。 変調信号を VT2 に提供します
このプロジェクトは Keil 5 環境で実装されており、記事の最後にアーカイブに添付されます。 プロジェクトの作成方法や同様の明白なことを説明する価値がないことを願っていますが、そのような疑問が生じた場合は、Google または YouTube でその方法を調べることをお勧めします。 すべてのコードは CMSIS (レジスタ) に書き込まれます。 コンバータ制御システムで追加の抽象化レベルを使用することは単純に罪です。 ST の場合、これらは SPL ライブラリとより関連性の高い HAL です。 趣味で両方とも協力してみましたが、結論はまったくのゴミでした。 HAL は一般に非常に遅いため、ハード リアルタイム性を備えたアプリケーションにはまったく適していません。 いくつかの重要な瞬間では、レジスターは何倍も高速になりました; ちなみに、インターネット上でこれに関する複数の記事を見つけました。

「なぜ DMA を使用しないのですか?」と疑問に思う人もいるでしょう。 これは実行可能であり、実行する必要がありますが、この記事は情報提供としての性格が強く、MK 自体は計算に関して複雑なことを何も実行しないため、カーネルのパフォーマンスに制限はありません。 DMA は優れていますが、DMA なしでも潜在的な問題は発生しません。 プログラムで何をする必要があるかを明確にしましょう。

  1. 240 個の正弦点を含む配列を作成します
  2. 外部水晶発振器ソースを選択して、クロック回路を 24 MHz の周波数に構成します
  3. デッドタイムを有効にして 50 Hz PWM を生成するように TIM1 タイマーを設定します。
  4. 24 kHz のキャリア周波数で PWM を生成するように TIM2 を構成します。
  5. 24 kHz で割り込みを生成する TIM6 タイマーを設定します。 その中で、次のデューティ サイクル値をテーブルから TIM2 タイマーに送信し、半波の生成も交互に行います。
何も複雑なことはありませんよね? それでは行きましょう...

6.1. サインテーブルの作成

ここではすべてが単純で、通常の配列です。 覚えておく価値がある唯一のことは、0 から 1000 までの 120 点があるということです。テーブルにさらに 120 点を追加する必要がありますが、順序は逆です。

Uint16_t sin_data = (13,26,39,52,65,78,91,104,117,130,143,156,169,182,195,207,220,233,246,258, 271,284,296,309,321,333,346,358,370,382 ,394,406,418,430,442,453,465,477,488,500, 511,522,533,544,555,566,577,587,598,608,619,629,639,649,659,669,678,688,697,707, 7 1 6,725,734,743,751,760,768,777,785,793,801,809,816,824,831,838,845,852,859,866, 872,878,884,891,896,902,908,913,918,923,928, 93 3,938,942,946,951,955,958,962,965, 969,972,975,978,980,983,985,987,989,991,993,994,995,996,997,998,999,999,999,1000, 999,9 99, 999,998,997,996,995,994,993,991,989,987,985,983,980,978,975,972,969,965, 962,958,955,951,946,942,938,933,928,923,918,913, 908, 902,896,891,884,878,872,866, 859,852,845,838,831,824,816,809,801,793,785,777,768,760,751,743,734,725,716,707, 697,688,67 8,669 ,659,649,639,629,619,608,598,587,577,566,555,544,533,522,511,500, 488,477,465,453,442,430,418,406,394,382,370,358,346,333,321 ,309,296,284,271,258, 246,233,220,207,195,182,169,156,143,130,1 17,104,91,78,65,52,39,26,13);

6.2. 時計システムのセットアップ

STM32 のクロック設定は非常に柔軟で便利ですが、いくつかのニュアンスがあります。 シーケンス自体は次のようになります。

1) 内蔵 RC チェーン (HSI) から外部クォーツ (HSE) へのクロックに切り替えて、準備完了フラグを待ちます。

RCC->CR |= ((uint32_t)RCC_CR_HSEON); // HSE を有効にしながら (!(RCC->CR & RCC_CR_HSERDY)); // HSE の開始準備完了
2) コントローラーのフラッシュ メモリはカーネルよりもいくらか遅く動作します。この目的のために、フラッシュ クロックを調整します。 これを行わないと、プログラムは起動しますが、定期的にクラッシュします。数 kW と不安定なソフトウェアには互換性がありません。

フラッシュ->ACR = FLASH_ACR_PRFTBE | FLASH_ACR_LATENCY; // クロックフラッシュメモリ
3) システム クロック バス (AHB) と周辺バス (APB1 と APB2) の 2 つに対して分周器を設定します。 最大周波数が必要なので、何も除算せず、除算係数を 1 にします。

RCC->CFGR |= RCC_CFGR_HPRE_DIV1; // AHB = SYSCLK/1 RCC->CFGR |= RCC_CFGR_PPRE1_DIV1; // APB1 = HCLK/1 RCC->CFGR |= RCC_CFGR_PPRE2_DIV1; // APB2 = HCLK/1
4) 周波数逓倍器 (PLL) プリスケーラーを調整します。これはその前にあり、水晶周波数を 2 で分周します。8 MHz を 2 で割ると 4 MHz が得られます。 次に、出力が 24 MHz になるように、それらを 6 倍する必要があります。 レジスタに書き込む前に、念のため内容を消去しておきましょう。

RCC->CFGR &= ~RCC_CFGR_PLLMULL; // PLLMULL ビットをクリア RCC->CFGR &= ~RCC_CFGR_PLLSRC; // PLLSRC ビットをクリア RCC->CFGR &= ~RCC_CFGR_PLLXTPRE; // PLLXTPRE ビットをクリア RCC->CFGR |= RCC_CFGR_PLLSRC_PREDIV1; // ソース HSE RCC->CFGR |= RCC_CFGR_PLLXTPRE_PREDIV1_Div2; // ソース HSE/2 = 4 MHz RCC->CFGR |= RCC_CFGR_PLLMULL6; // PLL x6: クロック = 4 MHz * 6 = 24 MHz
5) 次に、周波数逓倍器 (PLL) をオンにして、準備完了フラグを待つ必要があります。

RCC->CR |= RCC_CR_PLLON; // PLL を有効にする while((RCC->CR & RCC_CR_PLLRDY) == 0) () // PLL が準備完了するまで待つ
6) そして最後に、システム バス (AHB) のクロック ソース、つまり切望されている 24 MHz を持つ周波数逓倍器の出力を設定します。 まず、レジスタの内容をクリアし、必要なビットを設定して、準備完了フラグを待ちます。

RCC->CFGR &= ~RCC_CFGR_SW; // SW ビットをクリア RCC->CFGR |= RCC_CFGR_SW_PLL; // ソースを選択 SYSCLK = PLL while((RCC->CFGR & RCC_CFGR_SWS) != RCC_CFGR_SWS_1) () // PLL が使用されるまで待機します
その結果、次のようなクロック設定関数が得られます。

Void RCC_Init (void)( RCC->CR |= ((uint32_t)RCC_CR_HSEON); // HSE を有効にしながら (!(RCC->CR & RCC_CR_HSERDY)); // HSE を開始準備完了 FLASH->ACR = FLASH_ACR_PRFTBE | FLASH_ACR_LATENCY; // Clocklk フラッシュ メモリ RCC->CFGR |= RCC_CFGR_HPRE_DIV1; // AHB = SYSCLK/1 RCC->CFGR |= RCC_CFGR_PPRE1_DIV1; // APB1 = HCLK/1 RCC->CFGR |= RCC_CFGR_PPRE2_DIV1; // APB2 = HCLK/1 RCC->CFGR &= ~RCC_CFGR_PLLMULL; // PLLMULL ビットをクリア RCC->CFGR &= ~RCC_CFGR_PLLSRC; // PLLSRC ビットをクリア RCC->CFGR &= ~RCC_CFGR_PLLXTPRE; // PLLXTPRE ビットをクリア RCC->CFGR |= RCC_CFGR_PLLSRC_PREDIV1; // ソース HSE RCC->CFGR |= RCC_CFGR_PLLXTPRE_PREDIV1_Div2; // ソース HSE/2 = 4 MHz RCC->CFGR |= RCC_CFGR_PLLMULL6; // PLL x6: クロック = 4 MHz * 6 = 24 MHz RCC->CR |= RCC_CR_PLLON ; // PLL を有効にする while((RCC->CR & RCC_CR_PLLRDY) == 0) () // PLL が準備完了するまで待機 RCC->CFGR &= ~RCC_CFGR_SW; // SW ビットをクリア RCC->CFGR |= RCC_CFGR_SW_PLL; // ソースを選択 SYSCLK = PLL while((RCC->CFGR & RCC_CFGR_SWS) != RCC_CFGR_SWS_1) () // PLL が使用されるまで待機します )

6.3. TIM1タイマーと「デッドタイム」の設定

タイマーの一般的な設定については、リファレンスマニュアルに詳しく説明されていますので、各レジスタの目的を読むことをお勧めします。 はい、インターネット上には PWM の操作に関する基本的な記事があります。 私のコード自体は十分にコメントされているので、TIM1 タイマー初期化関数のコードだけを示し、最も興味深い点を見てみましょう。

Void PWM_50Hz_Init (void)( RCC->APB2ENR |= RCC_APB2ENR_TIM1EN; // TIM1 のクロックを有効にする RCC->APB2ENR |= RCC_APB2ENR_IOPAEN; // ポート A のクロックを有効にする RCC->APB2ENR |= RCC_APB2ENR_IOPBEN; // ポート B のクロックを有効にするRCC->APB2ENR |= RCC_APB2ENR_AFIOEN; // 代替 GPIO のクロックを有効にする /********************************** **** PA10 設定 ** ************************************/ GPIOA->CRH & = ~GPIO_CRH_CNF10; // PWM の代替プッシュプルを設定 GPIOA->CRH |= GPIO_CRH_CNF10_1; GPIOA->CRH &= ~GPIO_CRH_MODE10; GPIOA->CRH |= GPIO_CRH_MODE10; // gpio 速度 50 MHz /**** ******** ***************** 設定 PB15 *********************** *************** ********/ GPIOB->CRH &= ~GPIO_CRH_CNF15; // CH3N の補完的な設定 GPIOB->CRH |= GPIO_CRH_CNF15_1; GPIOB-> CRH &= ~GPIO_CRH_MODE15; GPIOB->CRH |= GPIO_CRH_MODE15; / /gpio 速度 50 MHz /***************************** *** PWM チャネルの設定 *************** **************************** ***/ TIM1->PSC = 480-1; // クロックの div: F = SYSCLK / TIM1->ARR = 1000; // 1000 までカウント TIM1->CR1 &= ~TIM_CR1_CKD; // デッドタイムの​​ div: Tdts = 1/Fosc = 41.6 ns TIM1->CCR3 = 500; // デューティ サイクル 50% TIM1->CCER |= TIM_CCER_CC3E | TIM_CCER_CC3NE; // PWM 相補出力を有効にする TIM1->CCER &= ~TIM_CCER_CC3NP; // アクティブ High レベル: 0 - 高、1 - 低 TIM1->CCMR2 &= ~TIM_CCMR2_OC3M; TIM1->CCMR2 |= TIM_CCMR2_OC3M_2 | TIM_CCMR2_OC3M_1; // 正の PWM TIM1->BDTR &= ~TIM_BDTR_DTG; // レジスタをクリア TIM1->BDTR |= TIM_BDTR_DTG_2 | TIM_BDTR_DTG_1 | TIM_BDTR_DTG_0; // デッドタイム値 TIM1->BDTR |= TIM_BDTR_MOE | TIM_BDTR_AOE; // 生成出力を有効にする /********************************************* **** **********************************/ TIM1->CR1 &= ~TIM_CR1_DIR; // カウントアップ: 0 - アップ、1 - ダウン TIM1->CR1 &= ~TIM_CR1_CMS; // フロント信号に合わせて TIM1->
デューティ サイクルは固定されており、周波数と同様に変更されることはありません。 対角線の動作の時間と順序を設定するのはこのタイマーです。

TIM1->CCR3 = 500; // デューティサイクル 50%
「デッド タイム」一時停止の継続時間は、ここで設定される TDTS 時間パラメータに大きく依存します。

TIM1->CR1 &= ~TIM_CR1_CKD; // デッドタイムの​​ div: Tdts = 1/Fosc = 41.6 ns
その持続時間は 1 クロック ティックです。 リファレンス マニュアルを見ると、CKD ビットによって、たとえば Tdt を 2、8 ティックなどにできることがわかります。

一時停止時間自体はここで設定します。

TIM1->BDTR |= TIM_BDTR_DTG_2 | TIM_BDTR_DTG_1 | TIM_BDTR_DTG_0;
リファレンスマニュアル RM0041 を開くと、DT を計算するための次の式が表示されます。 ご覧のとおり、Tdts パラメーターはそこでの基本です。

6.4. TIM2タイマーの設定、正弦波の生成

ここではすべてがさらに単純です。コメントがすでに冗長であるため、設定で何かを説明するのはおそらく意味がありません。 ご質問がございましたら、コメントでお待ちしております。

Void PWM_Sinus_Init (void)( RCC->APB1ENR |= RCC_APB1ENR_TIM2EN; // TIM2 のクロックを有効にする RCC->APB2ENR |= RCC_APB2ENR_IOPAEN; // ポート A のクロックを有効にする RCC->APB2ENR |= RCC_APB2ENR_AFIOEN; // 代替 GPIO のクロックを有効にする/*********************************** PA0 設定 ************ ***** **********************/ GPIOA->CRL &= ~GPIO_CRL_CNF0; // PWM1_CH1 の代替プッシュプルを設定 GPIOA-> CRL |= GPIO_CRL_CNF0_1; GPIOA->CRL &= ~GPIO_CRL_MODE0; GPIOA->CRL |= GPIO_CRL_MODE0; // GPIO 速度 50 MHz /********************* ***** **** PA1 の設定 ************************************** **********/ GPIOA->CRL &= ~GPIO_CRL_CNF1; // PWM1_CH1 の代替プッシュプルを設定 GPIOA->CRL |= GPIO_CRL_CNF1_1; GPIOA->CRL &= ~GPIO_CRL_MODE1; GPIOA-> CRL |= GPIO_CRL_MODE1; // GPIO 速度 50 MHz /*** ************************* PWM チャネルの設定 ******* **************** ************/ TIM2->PSC = 0; // クロックの div: F = SYSCLK / TIM2->ARR = 1000; // 1000 までカウント TIM2->CCR1 = 0; // デューティ サイクル 0% TIM2->CCR2 = 0; // デューティ サイクル 0% TIM2->CCER |= TIM_CCER_CC1E; // PA8 への PWM 出力を有効にする TIM2->CCER &= ~TIM_CCER_CC1P; // アクティブ ハイ レベル: 0 - ハイ、1 - ロー TIM2->CCER |= TIM_CCER_CC2E; // PA9 への PWM 相補出力を有効にする TIM2->CCER &= ~TIM_CCER_CC1P; // アクティブ High レベル: 0 - 高、1 - 低 TIM2->CCMR1 &= ~(TIM_CCMR1_OC1M | TIM_CCMR1_OC2M); TIM2->CCMR1 |= TIM_CCMR1_OC1M_2 | TIM_CCMR1_OC1M_1 | TIM_CCMR1_OC2M_2 | TIM_CCMR1_OC2M_1; // 正の PWM1_CH1 および PWM1_CH2 /******************************************* ******** ************************************/ TIM2->CR1 & = ~TIM_CR1_DIR; // カウントアップ: 0 - アップ、1 - ダウン TIM2->CR1 &= ~TIM_CR1_CMS; // フロント信号に整列: 00 - フロント; 01、10、11 - 中心 TIM2->CR1 |= TIM_CR1_CEN; // 開始カウント)

6.5. TIM6 タイマー割り込みの構成

タイマー自体の周波数を 24 kHz に設定します。

Void TIM6_step_init (void)( RCC->APB1ENR |= RCC_APB1ENR_TIM6EN; // 基本 TIM6 のクロックを有効にする TIM6->PSC = 1-1; // div、周波数 24 kHz TIM6->ARR = 1000; // 1000 までカウント TIM6 ->DIER |= TIM_DIER_UIE; // タイマーの割り込みを有効にする TIM6->CR1 |= TIM_CR1_CEN; // カウントを開始 NVIC_EnableIRQ(TIM6_DAC_IRQn); // 割り込みを有効にする TIM6_DAC_IRQn )

6.6. メイン制御アルゴリズムの実装

主要なイベントは、TIM6 タイマーによって生成される割り込みで発生します。 これがサンプリング ステップであることを思い出していただければ、割り込みは 41.66 μs ごとに生成されます。 したがって、割り込みはデューティ サイクル値をテーブルからレジスタに書き込みます。 CCRx。 この割り込みは、フラグを反転することによって、現在どの対角線が描画されているかを決定します。 罪の状態各半サイクル後。 240 ポイントを表示し、フラグを反転します。これにより、制御が別のチャネルに渡されます。すでに描画されている場合は、フラグが再度反転され、すべてが繰り返されます。 主なアルゴリズムコード:

Void TIM6_DAC_IRQHandler(void)( TIM6->SR &= ~TIM_SR_UIF; if(sin_status == 0)(TIM2->CCR1 = sin_data;) if(sin_status == 1)(TIM2->CCR2 = sin_data;) sin_step++; if (sin_step >= 240)( sin_step=0; sin_status = sin_status ? 0: 1; ) )

結果

プロジェクトをダウンロードしてコンパイルし、マイクロコントローラーにアップロードして、動作するインバーターを入手します。 あなたがしなければならないのは、ブリッジを作成してそこに信号を送信することだけです。

少し前にブリッジ図の 1 つを PDF で投稿しました。好きなだけ使用してください。パワー エレクトロニクスを習得するのに役立つことを願っています。

この記事が気に入っていただければ幸いです。 このコードを実際のハードウェアで使用することについてご質問がございましたら、喜んでお答えいたします。 また、このコードを既製のものと考えないでください。これはコンバータのコアであり、main 関数を実装します。 すべての付加機能を自分で追加できます。 プロジェクトの基本的なコアを使用すると、コードの逆アセンブルに多くの時間を費やすことなく、プロジェクトがどのように機能するかを理解できるようになります。

材料

UPD1:主に正弦テーブルで多数のエラーが見つかり、変更されたことにユーザーに感謝します。 コードや表自体を使用した方は、再度コピーしてください。すでに記事内に修正版があります。

今日は、単純な、単純とも言えるパルス DC-DC 電圧コンバータ (ある値の直流電圧を別の値の直流電圧に変換するコンバータ) の回路をいくつか見ていきます。

パルスコンバーターの利点は何ですか? 第一に、効率が高いこと、第二に、出力電圧よりも低い入力電圧で動作できることです。 パルスコンバータは次のグループに分類されます。

  • - バッキング、ブースト、反転。
  • - 安定化、不安定化;
  • - ガルバニック絶縁、非絶縁;
  • - 狭い入力電圧範囲と広い入力電圧範囲に対応。

自家製パルスコンバータを作成するには、専用の集積回路を使用するのが最善です。組み立てが簡単で、セットアップ時に気まぐれになりません。 そこで、あらゆる好みに合わせた 14 のスキームをご紹介します。

このコンバータは 50 kHz の周波数で動作し、変圧器 T1 によってガルバニック絶縁が提供されます。変圧器 T1 は 2000NM フェライト製の K10x6x4.5 リングに巻かれており、次のものが含まれています: 一次巻線 - 2x10 巻、二次巻線 - PEV-0.2 ワイヤ 2x70 巻。 トランジスタはKT501Bに置き換え可能です。 無負荷時にはバッテリーからの電流はほとんど消費されません。

トランス T1 は、直径 7 mm のフェライト リングに巻かれており、PEV = 0.3 の 25 ターンの巻線が 2 つ含まれています。


マルチバイブレータ (VT1 および VT2) とパワーアンプ (VT3 および VT4) に基づくプッシュプル非安定化コンバータ。 出力電圧はパルストランス T1 の 2 次巻線の巻数によって選択されます。

MAXIMのMAX631マイクロ回路に基づく安定化タイプのコンバータ。 生成周波数 40 ~ 50 kHz、蓄電素子 - インダクタ L1。


2 つのチップのうちの 1 つ (たとえば 2 番目のチップ) を個別に使用して、2 つのバッテリーからの電圧を乗算することができます。

MAXIMのMAX1674マイクロ回路にパルスブーストスタビライザを接続するための標準的な回路。 動作は 1.1 ボルトの入力電圧で維持されます。 効率 - 94%、負荷電流 - 最大200 mA。

各チャンネルで 50 ~ 60% の効率と最大 150 mA の負荷電流で 2 つの異なる安定化電圧を取得できます。 コンデンサ C2 および C3 はエネルギー貯蔵デバイスです。

8. MAXIMのMAX1724EZK33チップ上のパルスブーストスタビライザ

MAXIMの特殊なマイクロ回路を接続するための一般的な回路図。 0.91 ボルトの入力電圧で動作し、小型 SMD ハウジングを備え、90% の効率で最大 150 mA の負荷電流を供給します。

広く使用されている TEXAS マイクロ回路にパルス降圧スタビライザーを接続するための一般的な回路。 抵抗 R3 は出力電圧を +2.8 ~ +5 ボルトの範囲内に調整します。 抵抗 R1 は、次の式で計算される短絡電流を設定します: Is(A)= 0.5/R1(Ohm)

統合電圧インバーター、効率 - 98%。

2 つの絶縁電圧コンバータ DA1 および DA2 は、共通のグランドを持つ「非絶縁」回路に接続されています。

トランス T1 の一次巻線のインダクタンスは 22 μH で、一次巻線と各二次巻線の巻数比は 1:2.5 です。

MAXIMマイクロ回路上の安定化ブーストコンバータの典型的な回路。

これは、5 ~ 13 V 入力、12 V 出力 DC 1.5 A を備えた DC-DC 電圧コンバータです。このコンバータは、より低い電圧を受け取り、必要な 12 ボルト未満の電圧がある場合に使用するためのより高い出力を提供します。 既存のバッテリーの電圧を上げるためによく使用されます。 これは本質的には統合された DC-DC コンバータです。 たとえば、3.7V のリチウムイオン電池があり、この回路を使用してその電圧を変更して、1.5A で必要な 12V を供給できます。

コンバーターは自分で簡単に構築できます。 主なコンポーネントは MC34063 で、基準電圧 (温度補償済み)、コンパレータ、アクティブ ピーク電流制限回路を備えた発振器、AND ゲート、フリップフロップ、およびドライバとのみを備えた高出力出力スイッチで構成されています。ハーネスを準備するには、いくつかの追加の電子部品をハーネスに組み込む必要があります。 このシリーズのチップは、さまざまなコンバータに組み込まれるように特別に設計されています。

MC34063Aチップの利点

  • 3~40V入力で動作
  • 低いスタンバイ電流
  • 電流制限
  • 出力電流最大1.5A
  • 出力電圧調整可能
  • 最大100kHzの周波数範囲で動作
  • 精度 2%


放射性元素の説明

  • R- すべての抵抗は 0.25 W です。
  • T・TIP31-NPNパワートランジスタ。 すべての出力電流はそこを通過します。
  • L1- 100 µH フェライト コイル。 自分で行う必要がある場合は、外径 20 mm、内径 10 mm、高さ 10 mm、太さ 1 ~ 1.5 mm、0.5 メートルのワイヤを購入し、5 回巻く必要があります。等距離。 フェライト リングの寸法はそれほど重要ではありません。 数(1 ~ 3 mm)の違いは許容されます。
  • D- ショットキーダイオードを使用する必要があります
  • TR- マルチターン可変抵抗器。12 V 出力電圧を微調整するために使用されます。
  • C- C1 と C3 は極性コンデンサなので、PCB 上に配置するときは注意してください。

組立用部品リスト

  1. 抵抗:R1 = 0.22Ω x1、R2 = 180Ω x1、R3 = 1.5K x1、R4 = 12K x1
  2. レギュレータ: TR1 = 1 kΩ、マルチターン
  3. トランジスタ: T1 = TIP31A または TIP31C
  4. チョーク: L1 = 100 µH (フェライト リング上)
  5. ダイオード: D1 - ショットキー 1N5821 (21V - 3A)、1N5822 (28V - 3A) または MBR340 (40V - 3A)
  6. コンデンサ: C1 = 100 uF / 25V、C2 = 0.001 uF、C3 = 2200 uF / 25V
  7. チップ: MC34063
  8. プリント基板 55×40mm


T1 - TIP31 トランジスタに小さなアルミニウム製ヒートシンクを取り付ける必要があることに注意してください。そうしないと、特に高負荷電流時に発熱が増加し、このトランジスタが損傷する可能性があります。 データシートとPCB図面