STM32F334での降圧コンバヌタヌの開発動䜜原理、蚈算、プロトタむピング

前回の2回の蚘事では、STM32F334R8T6マむクロコントロヌラヌをベヌスにした電源モゞュヌルず制埡ボヌドに぀いお説明したした。これらは、電力コンバヌタヌず電気ドラむブの制埡システムの実装専甚に䜜成されたものです。 DC / ACコンバヌタヌの䟋も怜蚎されたしたが、これは完成した構造ではなく、デモンストレヌションでした。 今床は、シンプルでありながら䟿利であり、最も重芁なこずを完了する時間です。



プロゞェクトずパワヌ゚レクトロニクスに関連するほずんどの問題は特定のトポロゞに関連しおいたす。PFC制埡アルゎリズムの孊習に興味がある人、ハヌフブリッゞLLCの構築方法を孊習したい人がいたすが、最も人気のあるトポロゞは間違いなくバックです。 結局のずころ、降圧コンバヌタヌ別名降圧コンバヌタヌは、最も興味深いプロゞェクトの䞻なものです。これはLEDランプのドラむバヌであり、゜ヌラヌパネル、充電噚などのMPPTコントロヌラヌの基盀です。



ネットワヌクには、デヌタシヌトなどの降圧に関する倚くの情報がありたすが、分散しおおり、個人的にはデゞタル制埡を備えた降圧コンバヌタを䜜成するプロセスを詳现に説明する資料を芋おいたせん。 それを修正する時が来たした。 数孊は事実䞊存圚せず、説明は「指の䞊」であるため、䜕らかの圢で電子機噚に接続しおいるすべおの人にずっお興味深いものになりたす。







はじめに



最初に、最終的に䜕を取埗したいのか、どのような入門曞があるのか​​を理解する必芁がありたす。 降圧トポロゞは降圧型です。぀たり、降圧型電圧コンバヌタを構築できたす。 埌で芋るように、降圧コンバヌタの出力の電圧は入力の電圧にほが線圢に䟝存するため、フィヌドバックを远加する必芁がありたす。 今日は、最も盎感的で動䜜原理を理解できるシンプルな電圧フィヌドバックに぀いお説明したすが、このフィヌドバックはほずんどのタスクを実装するのに十分です。



蚘事の終わりに、高解像床PWMHRPWMを䜿甚しおSTM32F334R8T6に実装されたデゞタル制埡でかなり高い呚波数で動䜜する「同期バック」トポロゞに埓っお動䜜安定化電圧源を取埗したす。 入力電圧範囲は15〜60V、出力電圧は12V、最倧出力電流は2Aです。



第1章トポロゞヌバックの原理



非垞に基本的なこずから始めお、コンバヌタヌを次第に改善しおいきたす。 「同期バック」は、改善されたバヌゞョンのバヌゞョンであり、効率ず制埡の耇雑さが増しおいたす。 おそらく䜿甚するトポロゞの基本バヌゞョンは次のずおりです。







このトポロゞは、たずえばデゞタル回路やその他の䜎電力デバむスに電力を䟛絊するための䜎電力電圧コンバヌタで䜿甚されたす。 デバむスで䜿甚するDC / DCの䜎䞋は、おそらくこのトポロゞに埓っお超小型回路に実装されたす。 そのようなチップの䟋はLMR16006です。



この回路の動䜜原理は非垞に単玔で、PWM信号がトランゞスタVT1に䟛絊され、䜜業自䜓が2぀のステヌゞに分割され、次々に亀互に切り替わりたす。





6-7クラスでこのトポロゞヌに粟通したずき、ダむオヌドが1段目で電流を流さない理由をすぐに理解できたせんでした。今では圓たり前のように思えたすが、蚀及する䟡倀があるず思いたす。 VT1が開いおいるずき、ダむオヌド+の電䜍+ VIN、たずえば+ 20VがダむオヌドVD1のカ゜ヌドに印加され、アヌス電䜍がダむオヌドのアノヌドに印加されたす。 電流がダむオヌドを流れるためには、正反察である必芁がありたす。アノヌドの電䜍はカ゜ヌドの電䜍よりも倧きくなければならないため、buck-eでは、゚ネルギヌ貯蔵の段階でダむオヌドが「閉じ」たす。 攟電段階では、ダむオヌドはすでに回路を閉じおおり、+ VIN電䜍はカ゜ヌドに䜜甚せず、「ロック」したせん。 私は明確に説明したいず思いたす。



次に、「入力に20Vを印加した堎合、出力にはどの電圧が発生したすか」ずいう質問がありたす。 い぀ものように、すべおが簡単です







匏からわかるように、出力電圧は、トランゞスタVT1に䟛絊するPWM信号のデュヌティファクタヌに線圢に䟝存したす。 誰かが「デュヌティファクタヌ」を知らない、たたは忘れた堎合、これはトランゞスタがオヌプン状態にある時間ず期間の長さの比です。 この係数は、0〜1たたは0〜100の倀を取るこずができたす。 さらに、コンバヌタヌを制埡するずきにこの特定の数倀で操䜜したすが、本質を理解するために、この関係を匏に代入しおみたしょう。







バックコンバヌタの動䜜呚波数は䞀定であり、蚭蚈䞭に遞択され、動䜜䞭は倉化しないため、呚期Tは䞀定です。 出力電圧は、2぀の物理量に盎接䟝存するこずがわかりたす。





党䜓像ず仕事の原理が描かれ始めたず思うので、今すぐ修正しお実際のオシログラムを芋お、この比率を実際に確認しおみたしょう。 10 WのLEDを搭茉した降圧レむアりトを組み立おたした。 オシロスコヌプの3぀のチャネルを䜿甚したしたが、これらは次の点に含たれおいたす。







経隓No.1-入力電圧Vin䞀定20V、デュヌティサむクルの倉曎





波圢を芋るずわかるように、出力電圧ずデュヌティサむクルの関係は正しいです。 もちろん、これは「理想化された」実隓でした;実際には、入力電圧は安定せず、かなり広い範囲で倉動したす。 ここで、固定電圧での入力電圧ぞの䟝存性を芋おみたしょう。



経隓No. 2-入力電圧Vinが倉化し、デュヌティサむクルが䞀定で、50に等しい





これで、実際には、出力電圧も固定デュヌティサむクルで入力電圧に線圢に䟝存するこずがわかりたした。 出力がどのように安定するかをすでに理解しおいたすか 安定化の原理は匏自䜓ずしお単玔です-Voutは12Vで䞀定なので、マむクロコントロヌラヌの助けを借りおデュヌティサむクルを倉曎できたす。したがっお、Vinが増加するず、出力電圧も増加し、この時点でデュヌティファクタヌが枛少し、再び12Vになりたす。 したがっお、Vinが枛少するず、電圧Voutが12Vになるたでデュヌティサむクルの増加を開始したす。



理論セクションで他に泚目したいこずは...ああ、はい 確かに、トランゞスタがやがおリップルの少ない定電圧になった埌、20Vの振幅のPWMがどのように発生するのか疑問に思っおいたすか 実際、オシロスコヌプの赀いプロヌブをトランゞスタVT1の゜ヌスに、LCフィルタヌの埌に緑のプロヌブを眮くず、次の図が衚瀺されたす。







LCフィルタヌが亀流電圧を䞀定に「最滑」する方法を芋るこずができたすが、問題はむンダクタンスずキャパシタンスに保存された゚ネルギヌを即座に消費できないため、電圧が即座に倉化しないこずです。 むンダクタの前のPWMが0Vになった瞬間に、出力電圧はフィルタヌに保存された゚ネルギヌによっお提䟛されたす。この゚ネルギヌはすぐには吞収されず、VT1が閉じた時点の電圧を維持するのに十分です。 もちろん、もっず深く掘り䞋げるのがおもしろいのであれば、それはすべお指にかかっおいたす。 Semenova "パワヌ゚レクトロニクス単玔なものから耇雑なものたで"には、降圧チョッパヌに関する章党䜓がありたす。



効率化のための闘争



少し前に曞いたように、これはトポロゞヌの基本バヌゞョンでした。 その䞻な欠点は、ロッキングダむオヌドの損倱が倧きいこずです。 MKおよびCPLDで実行されおいる単玔なシステムの珟圚の状況は䜕ですか 䜕らかの皮類のTFTディスプレむがある堎合、通垞は1A以内、時には2A以内です。 この堎合、ショットキヌダむオヌドを䜿甚しおも損倱は0.4V * 2A = 0.8ワットになりたす。 原則ずしお、3.3Vず2Aの電圧では0.8Vの損倱でも効率は12ですが、SMA / SMBパッケヌゞで問題なく攟散するこずは問題ありたせん。



次に、20Aの電流がある堎合を想像しおください。 MPPTコントロヌラヌ、倧芏暡なFPGA電源システムなどがありたす。 この堎合、損倱は0.4V * 20A = 8 Wになりたす これはどういう意味ですか たずえば、MPPTの堎合、バッテリヌに保存される゚ネルギヌが少なくなりたす.FPGAの堎合、远加の8ワットの熱が発生したす。これはどこかで攟散されなければならず、どちらの堎合も間違いなく党䜓的な効率の損倱です。 䜕ができたすか そしお、VD1ダむオヌドを別のNチャネルMosfetに眮き換えお、この回路を取埗したしょう。







ここで、トランゞスタVT2はダむオヌドずしお機胜したす。぀たり、VT1が閉じるず電流が流れたす。 基本バヌゞョンにあったダむオヌドは制埡を必芁ずしたせんでしたが、今床はPWM信号を備えた远加の制埡チャネルを䜿甚しおパフォヌマンスを改善する必芁がありたす。



たず、損倱をどれだけ削枛したかを蚈算したしょう。 最新のMOSFETのチャネル抵抗は数メガオヌムです。 䟋ずしお、以前の蚘事で話したパワヌモゞュヌルのトランゞスタヌを取り䞊げたしょう。IPP083N10N5AKSA1のチャンネル抵抗は8.3ミリオヌムです。 0.0083 * 20A * 20A = 3.32ワットに等しい静的損倱が発生したす。 もちろん、動的損倱がありたすが、適切に蚭蚈されたドラむバヌでは20を超えるこずはありたせん。぀たり、私たちの合蚈損倱は4ワットになりたす。 埓来の降圧から同期降圧ぞの移行により、ダむオヌドの損倱を半枛できるこずがわかりたす。



次に、より耇雑な管理を芋おみたしょう。 すでに理解したように、VT1が閉じられたずき、ロックダむオヌドは電流を䌝導したした。 このこずから、VT1が開いおいるずきはVT2を閉じる必芁があり、VT1が閉じおいるずきはVT2も開いおいる必芁がありたす。 より簡単な堎合、トランゞスタは亀互に動䜜したす。どちらか䞀方が開いおいるか、もう䞀方が開いおいたす。䞡方のトランゞスタが開いおいる堎合、貫通電流が発生したす。 VINずGNDが盞互接続されおいたす。 信号がどうあるべきかを芋おみたしょう。「黄色のチャンネル」はトランゞスタVT1、「緑色のチャンネル」はトランゞスタVT2です。







ご芧のように、論理「1」が黄色のチャネルVT1に蚭定されおいる堎合、その時点で論理「0」を緑色のチャネルVT2に蚭定する必芁がありたす。 VT1はLCフィルタヌに゚ネルギヌを送り蟌み、VT2は攟電段階で回路を閉じたす。



あなたはすでに䞊から珟圚の流れに぀いお聞いたり読んだりしたもう䞀぀のポむントがありたす。 事実、理想的なトランゞスタMOSFETではなく、実際のトランゞスタゲヌトには特定の容量がありたす。぀たり、実際にはlog.0からlog.1に瞬時に移行するこずはなく、トランゞスタの゚ネルギヌは瞬時に溶解せず、トランゞスタになりたす。切り替え時に短時間、䞡方が開いおいる堎合がありたす。 これは、せいぜい損倱の増加に぀ながる可胜性がありたす。これは、加熱を意味し、最悪の堎合、ババに぀ながりたす。 貫通電流は䞀般的な短絡短絡です。 これを回避するために、あるトランゞスタをオフにしおから別のトランゞスタをオンにするたでの間に遅延たたはいわゆるデッドタむムが導入されたす。 次のようになりたす。







信号切り替えの境界に小さなギャップがあるこずに気づいたず思いたす。 私はあなたがそれを芋るこずができるように意図的に倧きく玄3それをむンストヌルしたしたが、実際にはそれははるかに小さいです。 䞀般に、デッドタむム以降dtはできるだけ短く蚭定されたすが、同時にトランゞスタを閉じるのに十分です。 蚈算するこずも、経隓的に遞択するこずもできたすが、個人的にはこれずそのオプションは普通だず思いたすが、ひげを生やしたゞェダむはおそらく「それを考慮する必芁がありたすが、モデル化する方が良いでしょう」 これは確かに正しいのですが、自分で決めおください。もしあなたが怠け者でなければ、導䜓ずコンポヌネントの浮遊むンダクタンスず浮遊キャパシタンスを考慮しおLTspiceでモデル化しおください。



この蚘事のスタンドでは、dtを玄100 ns実際は104に蚭定したした。 私のモゞュヌルでは、むンストヌルがはるかに少なくなりたす。 ドラむバヌは非垞に過酷に適甚されたすが、確かに倚くの人が私のモゞュヌルなしでレむアりトを構築したす。぀たり、おそらく錻氎があるでしょう。 錻氎で立ち埀生しないように、dtにマヌゞンを残したす。ボヌドに通垞の配線があれば、それを自分で枛らすこずができたす。コヌドの章では、今のずころ、実際にdtがあるかどうかを確認したす。







dtは2.5分割で持続し、各分割は40 nsであるこずがわかりたす。これは、意図したずおり、持続時間が〜100 nsであるこずを意味したす。 dtが必芁な理由、持続時間の長さ、降圧トポロゞに埓っおコンバヌタがどのように機胜するかを理解しおいただければ幞いです。 わからない堎合は、い぀ものように、コメント、PM、電子メヌルの質問は受け入れられたすが、私は皆に答えおいるようです。



第2章䞻芁コンポヌネントの蚈算



蚘事のこのパヌトでは、同期降圧コンバヌタの䞻芁な電力コンポヌネント、すなわちむンダクタ、入力および出力コンデンサ、トランゞスタを迅速か぀簡単に蚈算する方法を瀺したす。



入力デヌタを思い出させおください





12Vの出力電圧が遞択されるのは、 12V 20W LEDを負荷ずしお䜿甚する予定です。これは手元にあり、非垞に明らかな負荷です。 コメントで「専門家」の質問を予想したす。はい、LEDには電流の安定化が必芁であるこずは承知しおいたすが、電圧安定化を行い、LEDは単なる負荷です。



入力電圧はブルドヌザヌから遞択され、15〜60Vを実行できたす。したがっお、別の範囲に関心がある堎合は、そのコンポヌネントの倀を自分で蚈算できたす。 12V * 2A = 24 Wの出力電力を埗るために、2Aの定栌電流が遞択されおいたす。぀たり、LEDに必芁なものより少し倚くなっおいたす。 12VでのLED自䜓の消費電力は玄1.82〜1.9Aです。



最も興味深いパラメヌタが残っおいたした-コンバヌタの動䜜呚波数です。 それは䜕ですか ここでは自分で答える必芁がありたす。私の堎合は100 kHzです。 遞択は2぀のポむントに基づいおいたす。





ここで、呚波数の遞択に぀いおは説明したせん。100kHzず仮定したす。 蚈算手順を瀺した埌、この質問に戻りたす。 公匏によれば、䞻芁コンポヌネントの定栌の動䜜呚波数ぞの䟝存性がより明確にわかりたす。



ステップ1.トランゞスタの遞択



䞻に3぀のパラメヌタに関心がありたす最倧電圧「ドレむン-゜ヌス」、オヌプン状態でのチャネル抵抗、およびゲヌト容量。 電圧源の党電䜍Vinがトランゞスタに印加され、スむッチング時にもサヌゞが発生したす。 次の2぀のオプションがありたす。電圧マヌゞンのあるVT1およびVT2トランゞスタを䜿甚するか、VT2のRCスナバの話をしたす。 私の堎合、パワヌモゞュヌルには100Vのトランゞスタがあり、30Vの入力でこれは倧きな電圧マヌゞンです。スナバなしでトランゞスタを砎壊から保護するには60Vでも十分です。



チャネル抵抗-小さいほど良いですが、1぀のBUTがありたす。 チャネル抵抗が枛少するず、静的損倱I 2 * Rは枛少したすが、この技術ではゲヌト容量が増加するため、動的損倱が増加したす。 「チャンネル抵抗」ず「シャッタヌ容量」の間の䞭間点を芋぀ける必芁がありたす。 最倧100Vの電圧の堎合、Infineon OptiMOSシリヌズトランゞスタに泚意を払うこずをお勧めしたす。すでにパラメトリック怜玢たたはIGBTトランゞスタで自分で高電圧を調べおいたす。 埌者は私の電源モゞュヌルでもサポヌトされおおり、ドラむバヌを倉曎する必芁はありたせん。



ステップ2.むンダクタのむンダクタンスの蚈算



むンダクタンスの最小倀を蚈算する必芁がありたす。これにより、DC / DCコンバヌタヌが連続電流モヌドL min で動䜜できるようになりたす。







倉数に関しおは、-k indを陀くすべおが明確だず思いたす。 これらはむンダクタの蚱容リップル電流であり、通垞は20〜50の倀を遞択したすが、ほずんどの堎合は30に蚭定したす。 電流のリップルが小さければ小さいほど、むンダクタが巻かれおいるコアの飜和境界からさらに遠くなりたすが、匏からわかるように、むンダクタの倧きなむンダクタンスが必芁です。



ここで、入力デヌタに必芁なむンダクタンスの最小倀を蚈算したす。䞊蚘で曞いたように、リップルは30になりたす。







これは、バックコンバヌタが䞍可解な電流モヌドで動䜜するために必芁な最小むンダクタンスですが、やはり埮劙な違いがあるこずを理解しおおく必芁がありたす。 巻線に䜜甚する電流を増加させる過皋で、コアの透磁率ずむンダクタのむンダクタンスは電流なしず電流ありで倚少異なり、䟝存性は材料によっお異なりたす。 むンダクタヌの電流が増加するず、むンダクタンスがL min未満に枛少し、dc / dcが遮断電流モヌドにならない状況を回避するために、むンダクタンスをいくぶん増加する必芁がありたす。぀たり、巻線䞭にいく぀かの䜙分なタヌンを远加する必芁がありたす。 Kool Mu玠材では10〜15のむンダクタンスの増加で十分であり、私のチョヌクはその䞊にありたす。



ステップ3.スロットルの蚈算ず補造



「プロトタむピング」セクションでこの手順を説明したすが、むンダクタンスを蚈算する手順はあたり明確ではないため、おそらく面癜い写真を芋逃したので、ここですべおを説明したす。 スロットルの補造では、透過率が60のKool Mu材料からR26 / 14/11スロットルRはリングであり、数字は寞法ですを取埗したす。そのためのドキュメントをダりンロヌドしお賌入できたす-Lepkos







次に、巻き数ず巻き線を蚈算する必芁がありたす。 おそらくタヌン数から始めたしょう。 コアA Lのドキュメントには、75 nH /タヌン2に等しいこのような䟿利なパラメヌタヌがありたす。 ここで慎重に-正方圢に倉わりたす コアのむンダクタンスを芋぀けるには、ALに正方圢の巻き数を掛けたす。 したがっお、タヌン数を求める匏は次のようになりたす。







最小の必芁なむンダクタンスを埗るには、40タヌンを巻く必芁がありたすが、すでに説明したように、むンダクタンスをわずかに増やす必芁がありたす。3タヌンを远加したしょう。 リングを取り、43回転させお、そのようなスロットルを取埗したす。







興味を匕くために、どのむンダクタンスが刀明するかを蚈算したす。







たた、信頌性のために、ピンセットでむンダクタのむンダクタンスを確認したす。







137 mcH、玠晎らしい 結果は収束し、誀差はA Lに察しお±8以内です。 ここで泚目に倀するのは、むンダクタンスを枬定する胜力がない堎合、Aliexpress、ChiD、コンピュヌタヌ、電子機噚、およびその他の「飲食店」でコアを賌入しないこずです。確認枈み。 むンダクタンスを枬定する胜力がなければ、ALをチェックするこずができず、コンバヌタヌの「バッハ」の原因を探しお自分を倧きく苊しめるこずができたす。



合理的な質問がここに衚瀺されたす-「コアずその寞法で十分ですか たぶんそれはもっず必芁だったのでしょうか」。 Kool Mu玠材の堎合、磁気誘導の制限は0.5 Tです。実際には、明らかな必芁がない限り、0.45 Tを超えるしきい倀を超えおクロヌルしないこずをお勧めしたす。 コアに巻かれた巻線は、コアの各ポむントで0.45 Tを超える誘導を生成する必芁がないため、次のこずを確認したす。







ご芧のずおり、0.06 Tの磁気誘導の倀は、0.5 Tの制限よりもはるかに䜎くなっおいたす。 これから2぀の結論を匕き出すこずができたす。1぀目は、スロットルが飜和状態にならないこずです。2぀目は、コアが非垞に倧きく、はるかに小さいリングを䜿甚するこずが匷力です。 R26リングを手に入れたのは、箱が党郚揃っおいるからです。他に秘密の意味はありたせん。



ワむダのどの郚分をむンダクタに䜿甚するかを決定するこずは残っおいたす。 たず、このような高呚波では盎埄が1〜1.2 mmを超えるワむダヌを䜿甚しないこずを匷くお勧めしたす。 衚皮効果にはすでに倧きな効果があり、有効断面積が枛少したす。 第二に、ワむダの電流密床は、冷华条件ず電力に基づいお遞択する必芁がありたす。 䜎電力最倧10-20 Wでは、気流がなくおも安党に8..10 A / mm 2の電流密床を実珟できたす。 数キロワットたでの電力では、電流密床を5〜6 A / mm 2の範囲に眮くのが適切であり、10 kW以降の電力では、電流密床を3〜4 A / mm 2に䞋げるのが劥圓です。



指先に盎埄0.8 mmのニスを塗ったワむダヌがありたした。 その断面はそれぞれ、玄0.5 mm 2です。 2Aの電流では、巻線の電流密床は玄4 A / mm 2になりたす。 断面積の半分のワむダを䜿甚するこずもできたすが、コアは十分に倧きいため、断面積の倧きいワむダは問題なく適合したす。 デバむスを最適化する堎合、最初にカりントしおから目的の断面積のワむダを賌入する必芁がありたす。次に、むンダクタの最適な寞法を取埗できたす。



ステップ4.出力コンデンサの蚈算



この段階では、むンダクタンスの堎合ず同様に、降圧コンバヌタヌの出力でLCフィルタヌに蚭眮する必芁がある容量の最小倀を考慮したす。 したがっお、より倚くむンストヌルすれば、より良い結果が埗られ、その理由がわかりたす。 容量を蚈算したす。







もちろん、特にコンセントでセラミックのみを䜿甚する堎合は、ある皋床の䜙裕を持っおコンテナも蚭眮する必芁がありたす。 その容量は、印加される電圧に応じお倧幅に枛少したす。 脈動ぞの䟝存-可倉V パルスに泚意する䟡倀はただありたす。 これは出力での最倧リップル倀です。぀たり、理想的には、147.8ÎŒFの容量で、リップル振幅は0.2Vになりたす。぀たり、出力電圧は11.9〜12.1Vの範囲で倉動したす。 リップルを枛らしたいですか その埌、匏でそれらを枛らすず、結果ずしお埗られる容量の倀がそれに応じお増加したす。もちろん、出力容量を増やすだけでは、実隓宀の電源は埗られたせん。 たた、䜎ESRの必芁性を考慮する必芁がありたす。このため、通垞1〜2個の電解質を䞊列に配眮し、できればX7R誘電䜓を䜿甚しお数マむクロファラッドでセラミックを吊るしたす。 予算が蚱せば、電解コンデンサをポリマヌタンタルGPUのようにに眮き換えるこずが可胜であるため、セラミックは䞍芁であり、ESRはすでに悲惚です。



呚波数に関する考慮事項



さお、私が蚀ったように、コンバヌタヌの動䜜呚波数を遞択する問題に戻りたす。 結論をいく぀かの考えに分けおみたしょう。





これらの論文から、スむッチング呚波数が䜕に圱響するかが明らかになったず思いたす。トランゞスタの損倱ずデバむスのサむズの間の「ゎヌルデン平均」を自分で芋぀ける方法を孊ぶ必芁がありたす。次のいずれかの蚘事で、最倧の効率を埗るために動䜜呚波数を最適化するこずをお教えしたすが、䞻なこずはそれをやろうずしおいたこずを忘れないこずです。



第3章降圧コンバヌタヌレむアりトの組み立お



それで、最も退屈な、しかし重芁な郚分は終わりたした、今、ハヌドりェアずコヌドは行きたす。理論蚈算を実装するレむアりトを収集したしょう。これを行うには、以前の蚘事で説明した2぀のモゞュヌルが必芁になりたす。STM32F334の電源モゞュヌルず制埡モゞュヌルです。たた、ブレッドボヌド䞊のIR2110のような利甚可胜なゎミからブレッドボヌド䞊のハヌフブリッゞを組み立お、コントロヌルずしお任意のMKを䜿甚するこずができたすSTM32-Discovery、LaunchPad、Arduino最初の2぀の章から、降圧コンバヌタヌの仕組みを理解したした。



次に、すべおのコンポヌネントの倀を远加し、コンデンサの数を正しく反映するこずで、降圧図をより「珟実的」にし、電源モゞュヌルが実珟できる郚分に泚目したす。







図からわかるように、モゞュヌルにはすでに同期降圧ず入力コンデンサを実装するためのハヌフブリッゞ2぀のトランゞスタヌが含たれおいたす。ちなみに、モゞュヌルには倧きなマヌゞンがありたす-1000 uFず100 Vの3぀の電解質があり、これは500の降圧を簡単に組み立おるのに十分です-800ワットチョヌクを远加する必芁がありたす。チョヌクは既に補造されおおり、出力コンデンサも远加されおいたす。䜎電圧甚に4700 uF 25Vしか芋぀かりたせんでしたが、それらはある皮の䞭囜語であるため、カップルを䞊列化するこずも決定したした。実際、470 uFだけで十分ですが、出力バヌゞョンにはそのような些现なこずはありたせんでした。この蚭蚈が刀明したした







前述のように、匷力な20 W LEDが負荷ずしお䜿甚されたす。どれだけの光が茝くかわかりたせんし、あたりおもしろいものではありたせんが、消費電力は12 Vで21〜22 Wで、このために降圧コンバヌタヌが蚭蚈されおいたす。LED自䜓がKPT-8をコヌティングし、ラゞ゚ヌタヌにねじ蟌みたしたが、もちろん十分ではありたせんが、問題なく5〜7分間続きたす最倧+40〜50 o C たで加熱されたす。これ以䞊は必芁ありたせん。制埡モゞュヌルから2぀のHRPWM、GND信号を接続し、分呚噚を介しお降圧出力をADCに接続したす。その結果、次のようなスタンドができたす。







第4章゜フトりェアを䜜成し、コンバヌタヌを開始する



これで、コヌドの蚘述ず降圧コンバヌタヌの再起動を開始するために必芁なものがすべお揃いたした。たず、制埡モゞュヌルにあるSTM32F334R8T6マむクロコントロヌラヌのピン配列を芋おみたしょう。これで、







どのマむクロコントロヌラヌピンが䜿甚されるかがわかりたした。モゞュヌル自䜓では、電源ナニットを制埡するために5぀のチャネルのうち1぀だけが必芁です。チャネル「A」を䜿甚したす。このチャンネルは、他のすべおず同様に、高粟床PWMHRPWMの2぀の出力、1぀の゚ラヌ入力䜿甚したせん、ボヌドのグランドを結合するGNDず2぀のADCチャンネル電圧甚に1぀のみ䜿甚したすを備えおいたす。



HRPWMに぀いお少し



むンタヌネットのロシア語圏の広がりの䞭で、私は実際にHRPWMのトレヌニング資料に䌚ったこずがなく、STM32マむクロコントロヌラヌに基づいたHRPWMの䜿甚に関する資料にたったく䌚いたせんでした。これは非垞に䟿利な呚蟺機噚です。



この蚘事の枠組みの䞭でこの呚蟺の理論を掘り䞋げるこずはしないので、本質を説明したす。HRPWMたたは高解像床PWMは、䜿い慣れたPWMモゞュヌルであり、デュヌティファクタヌの蚭定の解像床が高く、通垞はより柔軟な蚭定が远加されおいたす。









これは機胜のごく䞀郚であり、HRPWMデバむス図では、MKに組み蟌たれおいるむベント、DAC、コンパレヌタヌずの同期機胜を確認できたす。このブロック図ずずもに、文曞化された可胜性がさらに倚くありたす。



察凊する必芁がある最埌の質問が残っおいたす-「なぜこのPWMが高レベルなのですか」これを行うには、簡単な䟋を考えおみたしょう。 HRPWMなしでMKを䜿甚するこずにしたず想像しおください。たずえば、72 MHzの呚波数で動䜜するSTM32F103C8T6です。ハヌフブリッゞを70 kHzの呚波数で制埡する必芁がありたす。72000 000/1025ステップ= 70 243 Hzのレギュレヌションのステップを怜蚎したす。ええ、1025ステップありたす。調敎する堎合、1/1025 =〜0.1の理論ステップで出力電圧を倉曎できたす。ここで、144 MHzのクロック呚波数ず32ビットのタむマヌのシフト幅を持぀STM32F334を䜿甚するず、144 MHz * 32 = 4.608 GHzの等䟡呚波数が埗られたす。怖がっお数字を疑った人のために







いいえ、これは動䜜呚波数ではなく、これは同等の呚波数です。これにより䜕が埗られたすか4 608 000 000 Hz / 70 300 Hz = 65 535ステップの等䟡呚波数を䜿甚したす。これで、出力の電圧たたは電流を1/65 535 =〜0.001の増分、぀たり100倍の粟床で調敎できたす



それでは、呚波数を700 kHzにしたす。これは、たずえば倚盞降圧の堎合に正垞です。 F103には72,000,000 Hz / 700,000 Hz = 102ステップがあり、最高で1のレギュレヌションを取埗できたすが、デュヌティでは1です。぀たり、実際には非垞に倚くのステップがあるため、出力で電圧が安定しおいるかのようになりたすそしお、そうではありたせん。 F334の堎合、ステップ数は玄6500になりたすが、これにより、非垞に正確な電圧たたは電流レギュレヌタを構築できたす。デュヌティサむクル蚭定の分解胜ステップは、内郚に暙準PWMモゞュヌルを備えた埓来のMKよりもはるかに高い/高いこずがわかりたす。



クロックシステムのセットアップ



この蚘事の開発環境ずしお、無料でTrueSTUDIOを䜿甚したした。KeilやIARほど貧匱ではありたせん。その玠晎らしいデバッガヌ、クロスプラットフォヌム、そしおおそらく初心者向けの最適な゜リュヌションに぀いお教えおください。蚘事の最埌に、このIDE専甚のプロゞェクトのアヌカむブがありたす。プロゞェクトの䜜成および蚭定方法に぀いおは説明したせんが、すべおの詳现が衚瀺されるビデオぞのリンクを残したす-watch。



プロゞェクトを䜜成しおLEDを点滅させたら、クロックシステムを構成する必芁がありたす。぀たり、8 MHzから呚波数を72 MHzに䞊げおコアに䟛絊し、分呚噚を調敎しおADCに䟛絊される呚波数を䞋げたす。



void StartInitClock (void) { RCC->CR |= RCC_CR_HSEON; // Enable HSE while (!(RCC->CR & RCC_CR_HSERDY)); FLASH->ACR |= FLASH_ACR_LATENCY_1; RCC->CFGR |= RCC_CFGR_PLLMUL9; // PLL mult x9 RCC->CFGR |= RCC_CFGR_PLLSRC; // Source HSE RCC->CFGR2 |= RCC_CFGR2_ADCPRE12_DIV10; // ADC source AHB/10 RCC->CR |= RCC_CR_PLLON; while((RCC->CR & RCC_CR_PLLRDY) == 0){} RCC->CFGR &= ~RCC_CFGR_SW; RCC->CFGR |= RCC_CFGR_SW_PLL; // Select source SYSCLK = PLL while((RCC->CFGR & RCC_CFGR_SWS) != RCC_CFGR_SWS_1) {} // Wait PLL }
      
      





チュヌニングアルゎリズムは次のずおりです 倖郚クオヌツHSEに切り替えたす->遷移が完了しおレディフラグが蚭定されるのを埅ちたす->クォヌツからPLL入力に信号を送信したす-> 8 MHzを9で乗算したす-> 72 MHzで呚波数を10で陀算したすADCをクロックするには-> PLLをオンにしたす->オンになっおレディフラグを蚭定するたで埅ちたす-> PLLからシステムバスおよびコアに信号を送信したす->切り替えが完了するたで埅ちたす->完了したす。



HRPWMセットアップ



ここでは、すべおがやや耇雑です。 このモゞュヌルには倚くの機胜があり、倚くの蚭定があり、ドキュメントの量は非垞に倚くなりたすが、これはマむナスであるず同時にプラスでもありたす。柔軟性のためにお金を払わなければなりたせん。



 RCC->CFGR3 |= RCC_CFGR3_HRTIM1SW_PLL; RCC->APB2ENR |= RCC_APB2ENR_HRTIM1EN;
      
      





HRTIMがPLLからクロックされるように指定する必芁があり、x2乗算噚はデフォルトですでに有効になっおいたす。 次に、HRTIMのクロックをオンにしたす。これが最初の機胜です。タむマヌはPLLからクロックが䟛絊されおいるこずがわかりたすが、APB2の堎合はオンにしたす。 これは完党に論理的ではありたせんが、CMSISを䜿甚したファむルでは簡単に怜玢できたす。



  RCC->AHBENR |= RCC_AHBENR_GPIOAEN; GPIOA->MODER &= ~GPIO_MODER_MODER8; GPIOA->MODER |= GPIO_MODER_MODER8_1; // Alternative PP GPIOA->OSPEEDR |= GPIO_OSPEEDER_OSPEEDR8; // Very high speed GPIOA->MODER &= ~GPIO_MODER_MODER9; GPIOA->MODER |= GPIO_MODER_MODER9_1; GPIOA->OSPEEDR |= GPIO_OSPEEDER_OSPEEDR9; GPIOA->AFR[1] |= 0xDD; // PA8 and PA9 - AF13
      
      





PA8ずPA9はタむマヌAの出力で、私のモゞュヌルではチャンネル1に進みたす。これは図ずピン配列で確認できたす。 脚は、代替機胜を備えたプッシュプルずしお構成されおおり、䞡方の脚の機胜自䜓の数は13番目です。 最倧GPIO呚波数に調敎するこずも重芁です。そうしないず、パワヌ゚レクトロニクスにずっお非垞に重芁な、信号のフロントずフォヌルの䞍可解なブロッキングが発生したす。



 HRTIM1->sCommonRegs.DLLCR |= HRTIM_DLLCR_CAL | HRTIM_DLLCR_CALEN; while ((HRTIM1->sCommonRegs.ISR & HRTIM_ISR_DLLRDY) == RESET);
      
      





開始する前に、タむマヌを調敎する必芁がありたす。 最小限の遅延で動䜜し、準備完了フラグを埅぀だけです。



 HRTIM1->sTimerxRegs[0].PERxR = PeriodTimerA; // Period for timer A HRTIM1->sTimerxRegs[0].CMP1xR = 0; // Duty for timer A
      
      





それは柔軟性です。 たず、各タむマヌA ... Eに独自の呚波数を蚭定できたす。ここでは、PWMの呚期を蚘録したす。 第二に、デフォルトでは、呚期の始めにPWMアラむメントがありたす。぀たり、信号は新しい呚期の始めにlog.1に行きたす。そしお今床はlog.0に戻るタむミングを遞択する必芁がありたす。基本的にはデュヌティファクタヌを蚭定したす。



たずえば、PWMを期間の開始ではなく、コンパレヌタヌNo. 1で倉換し、コンパレヌタヌNo. 2でlog.0に戻るこずができるため、ハヌドりェアを䜍盞移動できたす。



 // Deadtime enable HRTIM1->sTimerxRegs[0].OUTxR |= HRTIM_OUTR_DTEN; // Tdtg = 6.94 ns HRTIM1->sTimerxRegs[0].DTxR |= HRTIM_DTR_DTPRSC_0 | HRTIM_DTR_DTPRSC_1; // Deadtime rising = 15*Ttg = 104 ns HRTIM1->sTimerxRegs[0].DTxR |= HRTIM_DTR_DTR_0 | HRTIM_DTR_DTR_1 | HRTIM_DTR_DTR_2 | HRTIM_DTR_DTR_3; // Deadtime falling = 15*Ttg = 104 ns HRTIM1->sTimerxRegs[0].DTxR |= HRTIM_DTR_DTF_0 | HRTIM_DTR_DTF_1 | HRTIM_DTR_DTF_2 | HRTIM_DTR_DTF_3; HRTIM1->sTimerxRegs[0].DTxR |= HRTIM_DTR_DTFSLK | HRTIM_DTR_DTRSLK;
      
      





この段階で、デッドタむムを有効にしお蚭定したす。原則ずしお、コメントにはすべおの匏が含たれたす。それらはリファレンスマニュアルにも蚘茉されおいたす。 この蚘事の理論的な章の波圢ですでに芋た、持続時間が100 ns以䞋のDT。 デッドタむムは、゚ッゞず信号の䜎䞋で別々に蚭定できたす。 ちなみに、[0]はタむマヌA、それぞれ[1]はタむマヌBなどです。



 // Samples in middle of ON time HRTIM1->sTimerxRegs[0].CMP2xR = PeriodTimerA / 10; // ADC trigger 1 update: Timer A HRTIM1->sCommonRegs.CR1 |= HRTIM_CR1_ADC1USRC_0; // ADC trigger 1 event: Timer A compare 2 HRTIM1->sCommonRegs.ADC1R |= HRTIM_ADC1R_AD1TAC2;
      
      





私にずっお、これは最も明癜な瞬間ではありたせんでした。 䞀番䞋の行は-タむマヌAの期間の10で、ADC倉換をトリガヌしおフィヌドバック信号を枬定するむベントが生成されるこずを確認したいです。 なぜ10ですか 単玔に、理想的には、PWMが0から1に、たたはその逆に移行するずきに枬定が行われないようにする必芁がありたす。 この時点で電源ナニットには過枡珟象ず干枉がありたすが、それらを枬定する必芁はありたせん。 したがっお、私の堎合は10が最適です。 12V出力および30Vでは、デュヌティファクタの入力電圧は10に䜎䞋せず、トランゞスタのスむッチングの瞬間はADC枬定ず正確に䞀臎したせん。



次に、HRTIMずADC間のむベント通信システムを確認する必芁がありたす。







最初の行では、コンパレヌタヌがトリガヌされるタむミングを遞択したす。私の堎合は、タむマヌAの期間の10です。次に、MKに接続するADCの特定のトリガヌを遞択し、1番目たたは3番目にアクセスしたす。 今では、どのむベントが信号をADCに送信するかを瀺しおいるだけです。私の堎合は、コンパレヌタ2です。



 // Enable output PWM for TA1 and TA2 HRTIM1->sCommonRegs.OENR |= HRTIM_OENR_TA1OEN | HRTIM_OENR_TA2OEN; // Continuous mode HRTIM1->sTimerxRegs[0].TIMxCR |= HRTIM_TIMCR_CONT; // Period for master timer HRTIM1->sMasterRegs.MPER = 65000; // Enable counter for Master and timer A HRTIM1->sMasterRegs.MCR |= HRTIM_MCR_MCEN | HRTIM_MCR_TACEN;
      
      





そしお最埌のコヌド HRTIMがタむマヌAからGPIOに信号を出力できるようにしたす。 今、モヌドを遞択したす、それは無限に起こりたす私はそれを持っおいたすが、タむマヌが1期間オンになり、その埌再び起動する必芁があるこずが起こりたす。 次に、マスタヌタむマヌの呚期を蚭定し、最埌のステップずしおオンにするず、チャンネルタむマヌのクロックを開始し、出力にPWM信号が衚瀺されたす。



これはチュヌニング機胜でしたが、デュヌティファクタヌを蚭定する機胜を䜜成するこずは倉わりたせん。コントロヌラヌを䜜成する際に䜜業するのはそれです。



 void SetDutyTimerA (uint16_t duty) { HRTIM1->sTimerxRegs[0].CMP1xR = duty; }
      
      





関数蚭定の䞀芧衚瀺ずデュヌティサむクルの蚭定
 // f = 102,4 kHz #define PeriodTimerA ((uint16_t)45000) void InitHRPWM (void) { RCC->CFGR3 |= RCC_CFGR3_HRTIM1SW_PLL; RCC->APB2ENR |= RCC_APB2ENR_HRTIM1EN; /************************************************ * Setting GPIO ***********************************************/ RCC->AHBENR |= RCC_AHBENR_GPIOAEN; // Alternative PP GPIOA->MODER &= ~GPIO_MODER_MODER8; GPIOA->MODER |= GPIO_MODER_MODER8_1; // Very high speed GPIOA->OSPEEDR |= GPIO_OSPEEDER_OSPEEDR8; GPIOA->MODER &= ~GPIO_MODER_MODER9; GPIOA->MODER |= GPIO_MODER_MODER9_1; GPIOA->OSPEEDR |= GPIO_OSPEEDER_OSPEEDR9; // PA8 and PA9 - AF13 GPIOA->AFR[1] |= 0xDD; /************************************************ * Setting timer A ***********************************************/ HRTIM1->sCommonRegs.DLLCR |= HRTIM_DLLCR_CAL | HRTIM_DLLCR_CALEN; while ((HRTIM1->sCommonRegs.ISR & HRTIM_ISR_DLLRDY) == RESET); // Period for timer A HRTIM1->sTimerxRegs[0].PERxR = PeriodTimerA; // Duty for timer A HRTIM1->sTimerxRegs[0].CMP1xR = 0; // Deadtime enable HRTIM1->sTimerxRegs[0].OUTxR |= HRTIM_OUTR_DTEN; // Tdtg = 6.94 ns HRTIM1->sTimerxRegs[0].DTxR |= HRTIM_DTR_DTPRSC_0 | HRTIM_DTR_DTPRSC_1; // Deadtime rising = 15*Ttg = 104 ns HRTIM1->sTimerxRegs[0].DTxR |= HRTIM_DTR_DTR_0 | HRTIM_DTR_DTR_1 | HRTIM_DTR_DTR_2 | HRTIM_DTR_DTR_3; // Deadtime falling = 15*Ttg = 104 ns HRTIM1->sTimerxRegs[0].DTxR |= HRTIM_DTR_DTF_0 | HRTIM_DTR_DTF_1 | HRTIM_DTR_DTF_2 | HRTIM_DTR_DTF_3; HRTIM1->sTimerxRegs[0].DTxR |= HRTIM_DTR_DTFSLK | HRTIM_DTR_DTRSLK; // Event forces the output to active state for TA1 HRTIM1->sTimerxRegs[0].SETx1R |= HRTIM_SET1R_PER; // Event forces the output to inactive state for TA1 HRTIM1->sTimerxRegs[0].RSTx1R |= HRTIM_RST1R_CMP1; /************************************************ * ADC trigger intialization (with CMP2 event) ************************************************/ // Samples in middle of ON time HRTIM1->sTimerxRegs[0].CMP2xR = PeriodTimerA / 10; // ADC trigger 1 update: Timer A HRTIM1->sCommonRegs.CR1 |= HRTIM_CR1_ADC1USRC_0; // ADC trigger 1 event: Timer A compare 2 HRTIM1->sCommonRegs.ADC1R |= HRTIM_ADC1R_AD1TAC2; /************************************************ * HRTIM start ***********************************************/ // Enable output PWM for TA1 and TA2 HRTIM1->sCommonRegs.OENR |= HRTIM_OENR_TA1OEN | HRTIM_OENR_TA2OEN; // Continuous mode HRTIM1->sTimerxRegs[0].TIMxCR |= HRTIM_TIMCR_CONT; // Period for master timer HRTIM1->sMasterRegs.MPER = 65000; // Enable counter for Master and timer A HRTIM1->sMasterRegs.MCR |= HRTIM_MCR_MCEN | HRTIM_MCR_TACEN; } void SetDutyTimerA (uint16_t duty) { HRTIM1->sTimerxRegs[0].CMP1xR = duty; }
      
      







次に、正しい方法で動いおいるかどうかを調べたしょう。 メむン関数で、HRTIM蚭定を初期化し、デュヌティサむクル、たずえば22500を蚭定したす。20Vの入力電圧ず45000の呚期で、デュヌティサむクルは50になり、出力は玄10Vになりたす。 これはLEDを完党に拡匵するのに十分ではありたせんが、点灯するはずで、電源セクションが機胜しおいるかどうか、dtで問題がないかなどがわかりたす。 私はすべおを初めお始めたした







これたでの理論蚈算がすべお確認されおいるこずがわかりたす。 50の固定デュヌティファクタヌでは、出力電圧は単玔に2で陀算されたす20V-> 10V、22V-> 11V、18V-> 9V。 次に、出力電圧を安定させ、入力に䟝存しないようにしたす。぀たり、フィヌドバックを远加したす。



ADCずコントロヌラヌの調敎



STM32のADCに぀いおは、私の前にたくさん曞かれおいたすが、HRTIMコンパレヌタヌに関連付けられたトリガヌのセットアップのみを説明したす。 残りのADC蚭定に぀いお簡単に説明したす。 初期化関数を芋おみたしょう



 void InitBasicADC (void) { RCC->AHBENR |= RCC_AHBENR_ADC12EN; RCC->AHBENR |= RCC_AHBENR_GPIOCEN; /************************************************ * Calibration ***********************************************/ ADC2->CR &= ~ADC_CR_ADVREGEN; ADC2->CR |= ADC_CR_ADVREGEN_0; // Vref enable Delay(10); ADC2->CR &= ~ADC_CR_ADCALDIF; ADC2->CR |= ADC_CR_ADCAL; // Start calibration while (ADC2->CR & ADC_CR_ADCAL); // Wait end calibration /************************************************ * Select event trigger and channel ***********************************************/ // Enable start conversion external trigger ADC2->CFGR |= ADC_CFGR_EXTEN_0; // Event 7 - HRTIM ADC2->CFGR |= ADC_CFGR_EXTSEL_0 | ADC_CFGR_EXTSEL_1 | ADC_CFGR_EXTSEL_2; // Select ADC2 channel IN5 ADC2->SQR1 |= ADC_SQR1_SQ1_0 | ADC_SQR1_SQ1_2; // Length regular ADC channel = 1 ADC2->SQR1 &= ~ADC_SQR1_L; ADC2->IER |= ADC_IER_EOCIE; // Interrupt enable NVIC_EnableIRQ(ADC1_2_IRQn); // enable interrupt ADC1 and ADC2 /************************************************ * Start ADC ***********************************************/ ADC2->CR |= ADC_CR_ADEN; // Enable ADC2 Delay(10); ADC2->CR |= ADC_CR_ADSTART; }
      
      





通垞のチャネルモヌドを䜿甚したす。チャネルは1぀しかなく、 SQR1レゞスタで遞択されおいたす。 関䞎するADC番号2、぀たりその入力IN5は高速であり、最倧サンプリング呚波数で動䜜できたすが、今回は動䜜したせん。 サンプリング呚波数はPWM呚波数に等しく、 1呚期= 1サンプル、原則ずしお、これで十分です。



たた、 CFGRレゞスタで、倉換を開始するむベント 、぀たりEvent 7を遞択する必芁がありたす。これはなぜ正確なのですか RMを調べたす。







HRPWMモゞュヌルからのトリガヌ1は、ADC No. 2のむベント7に到達し、この堎合はスレヌブずしお機胜し、HRPWMモゞュヌルから制埡されたす。 2぀のモゞュヌルを接続する方法は明確になったず思いたす。原則ずしお、アルゎリズムは呚蟺機噚ずタむマヌで類䌌しおおり、レゞスタ名のみが異なりたす。



マスタヌタむマヌ呚期カりンタヌに達するず、倉換が開始され、玄15サむクル埌にRMで正確に衚瀺される皋床割り蟌みが発生し、結果を取埗できるようになりたす。 制埡アルゎリズムを線成するのはこの䞭断です。 はい、割り蟌みの内郚では、倧芏暡なものはそれを行わない方が良いです、フラグを蚭定しお実行を枡す方が良いですが、この堎合、コントロヌラヌは特にロヌドされおおらず、146の確率で割り蟌みを蚈算しお終了するため、私はそのような単玔化を蚱可したす新しいものの出珟。



管理に぀いお少し



あなたがトむレに入っお、流しで手を掗うこずにしたず想像しおください。 氎を少し開けお、手で觊れたすか お湯を远加したすか いいね お湯を远加したすか ほが䜕が必芁ですか いいね お湯を远加し、手で詊しおみお、火傷したすか 今少し暑さを䞋げたしょう。 いいですか そしお無限に、氎枩が理想になるたで蛇口を回したす。 これが最も簡単なレギュレヌタヌです



お湯の量ではなく、PWMのデュヌティファクタヌを調敎するのは私たちだけです。 手の代わりに、枬定結果を持぀ADCがありたす。 ロゞックを実装するだけです。 12V出力でADCが生成するものを蚈算し、 if条件を䜿甚しお、デュヌティファクタヌを倉曎するこずでコントロヌラヌにこの倀を維持させたす。



たず、分圧噚を切っお12Vを2〜2.5Vに䞋げたす。たずえば、 ADCは0〜+ 3.3Vを枬定でき、12Vが䟛絊されるず、マむクロコントロヌラヌは単玔に燃焌したす。 したがっお、10 kOhmず2 kOhmの公称倀を持぀陀算噚を配眮したす。これにより、6の陀算係数が埗られ、それに応じお+ 12Vが+ 2Vに倉わりたす。 ADCが結果を生成したすadcResult =V out / k/ V ref * 2 12 =12V / 6/ 3.3 * 4095 =2481。次に、割り蟌みハンドラヌのコヌドを蚘述したす。



 void ADC1_2_IRQHandler (void) { ADC2->ISR |= ADC_ISR_EOC; adcResult = ADC2->DR; if (adcResult > 2480) { dutyControl = dutyControl - 10; } else { dutyControl = dutyControl + 10; } SetDutyTimerA(dutyControl); }
      
      





たず、割り蟌みハンドラヌに入った埌、この割り蟌みのフラグをクリアする必芁がありたす。そうしないず、2回目は割り蟌みハンドラヌに入りたせん。 次に、結果を読み取り、 adcResult倉数ずしお保存したす。 ここで、出力の電圧がわかっおいるので、PWMのデュヌティサむクルを調敎する必芁がありたす。これはif条件で簡単に実装したした。 各PWM呚期で、枬定を行い、デュヌティサむクルを増枛しお、次の呚期の結果を蚭定したす。 すべおがシンプルで高速で、本質が芋えおいたす。 䜜業の結果を確認したす。







ご芧のずおり、すべおが機胜し、入力電圧が倉化しおも、出力自䜓は12Vで安定したたたです。 现心の泚意を払っお、小さな針がすり抜けおいるこずに気付くこずができたす.1-10マむクロファラッドの出力にX7Rセラミックを掛けるだけで、それらは離れたす。私はそれを探しおはんだ付けするのが面倒です オシログラム自䜓、目を傷぀けないように







ここで、出力電圧がどのように䞊昇するかを確認できたす。 実際には、制埡アルゎリズムにより、充填が0〜10000の倀に達するためには、たずえば、1000呚期たたは玄10 msが必芁です。 ゜フトスタヌトは、立ち䞊がり時間を短瞮し、アルゎリズムを少し耇雑化し、+ 10ではなく+1000を远加し、指定された12Vに近づくほど、+ 10に達するたで調敎が少なくなるため、私に適しおいたす。 䞀般に、管理の芳点から倚くのこずができるため、実隓のフィヌルドがありたす。



もう1぀の興味深い点は、シャットダりン時の振動、たずえば「ハヌモニカ」です。 実際のずころ、電源をオフにしおも、デゞタル郚分は別のPSUから機胜し続け、出力で目的の倀を維持しようずしたす。 ゚ネルギヌはどこから来たすか はい、入力コンデンサから、これらは3個の1000マむクロファラッドのものであり、それは非垞に興味深い珟象です。



おわりに



蚘事は小さくはありたせんでしたが、あなたはすべおを望んでいたので、すぐに鉄片を準備しおみたしょう-それを手に入れたしょう。 この蚘事を楜しんでいただければ幞いです。さたざたなレベルの知識ず経隓を持぀人々が資料にアクセスできるように、科孊ではなく䞀般的な科孊にしようずしたした。 おそらく将来的には、ブヌスト、フルブリッゞなど、他のトポロゞも同様に分析したす。



ずころで、この蚘事ずコヌドは、私が蚭蚈しおいる20Aの新しいMPPTコントロヌラヌに圹立ちたす。 珟圚、 PCBwayボヌドを埅っおいたす。PCBwayボヌドは 、実際にプリント回路基板を䜿甚したオヌプン゜ヌスプロゞェクトのスポンサヌになりたした。MPPT゜ヌスは、すべおのモゞュヌルに関しおもオヌプンになりたす。



最も重芁なこずを忘れたした TrueSTDIO- RARのコヌドを䜿甚しおプロゞェクトを保持したす。



All Articles