The Negligible Lab

Astray in the forest of electrical and electronic circuits. Adrift in the gap between time and frequency domains. 独立独歩を是とする。

LTspiceによる三相PWM整流器の上位制御とノーズカーブ

はじめに

サイリスタの転流を交流側の電圧に依存している他励インバータでは,電力系統(以下,単に「系統」とも呼びます)の短絡容量が小さくなると(=系統が弱いと)安定運転が難しくなると言われています。これに対して,IGBT (insulated-gate bipolar transistor)などのオンオフ制御バルブデバイス(自己消弧素子)を用いる自励インバータでは,系統の短絡容量が小さくても運転できるとされています。とは言うものの,系統の短絡容量と自励インバータの定格電力*1の比であるSCR (short-circuit ratio)が1.5 ~ 2を下回ると,やはり安定性に問題が生じる恐れがあることが指摘されています。

本記事では,本ブログでこれまで取り扱ってきたLTspiceによる三相PWM整流器に,有効電力制御,無効電力制御,交流電圧制御の制御ブロックを追加します。これら3つの制御と直流電圧制御とを合わせて,上位制御系と呼ぶことにします。

また,有効・無効電力制御とSCRの関係について,ノーズカーブの観点から若干の考察を加えます。ノーズカーブとは,系統の電圧安定性を検討する際に描かれる図です(P-V曲線,P-Vカーブとも呼ばれます)。SCRが小さい(=系統が弱い)場合,三相PWM整流器(自励インバータ)の制御がいかに理想的であったとしても,ある有効電力を超えて受電することはできません。大きな有効電力を得ようと電流を増加させていくと,ある点で連系点の電圧が急激に低下してしまいます。これを電圧崩壊(voltage collapse)と呼びます。これは私の単なる憶測に過ぎませんが,上位制御系の不安定と,単なる電圧崩壊が,これまであまり区別されてこなかったのではないかという思いがあります*2

本記事はそこで終わりですが,今後,上位制御を含めた三相PWM整流器の小信号モデルを立て,安定性の近似理論解析とLTspiceでの挙動の比較考察に移っていきたいと考えています。

*1:本記事では「定格有効電力」としました。定格皮相電力とするなど,考え方は他にもあるのではと考えます。

*2:いや,私自身の中でもこれをきちんと区別できているのか判然としません?? 俺がそう思うんならそうなんだろ。俺ん中ではな…。

続きを読む

数値表現のインピーダンスをα-β座標系からd-q座標系に移す

はじめに

前記事にて三相LCL回路のd-q座標系におけるインピーダンスをHarnefors氏の論文に基づいて(SymPyの力添えを拝借しながら)導出し,LTspiceによる周波数スキャン(frequency response analysis, FRA)の結果と一致することを確認しました。

negligible.hatenablog.com

その際,今後の議論として以下のような宿題が残りました。

もし,(静止座標系でのインピーダンスである)Zs(s)のトポロジーや回路定数が分からず,したがって数式表現が未知であり,例えばインピーダンスアナライザでの測定結果のようにZs(jω)の数値データだけが手元にあった場合,これを使ってd-q座標系でのインピーダンスZd(jω),Zq(jω)を(近似でもよいので)得ることはできるでしょうか?

前記事を書き終えた時点では,「Zs(jω)の数値データからシステム同定の手法にてZs(s)の数式表現を推定するしかないのではないか」と考えておりました。とは言え,筆者自身でもZs(s + jω)をZs(s)の周りでテイラー展開してみたりと試行錯誤を繰り返していました。

そんな中,ノルウェー科学技術大学(Norges teknisk-naturvitenskapelige universitet, NTNU)のAtle Rygg氏の学位論文(下記リンク参照。以下,「Rygg氏の学位論文」と呼びます)において,d-q座標系,修正対称座標系(modified sequence domain),従来の対称座標系で表現したインピーダンスの間の関係が整理されており,それらの間の座標変換について,簡潔にまとまられていることを見つけました。

ntnuopen.ntnu.no

https://www.researchgate.net/publication/328231490_Impedance-based_methods_for_small-signal_analysis_of_systems_dominated_by_power_electronics

これを用いればZs(jω)の数値データからd-q座標系でのインピーダンスZd(jω),Zq(jω)を簡便に計算できることが分かりました。前記事にて取り扱った三相LCL回路に適用してみましたので,本記事にて紹介致します。

また,筆者なりにHarnefors氏の論文とRygg氏の学位論文の比較考察をしてみましたので,馬鹿げた記述かもしれませんが一応書いておきます。

結論

まず結論をざっと示します。静止(α-β)座標系でのインピーダンスがZs(s)である場合(三相平衡を仮定します。また上付きsはstationary = 静止座標系を意味します),Harnefors氏の論文に基づいてd-q座標系に移す場合,

 \begin{align}
Z_{d}(s) &= \mathrm{Re} \left [ Z^{s}(s + j \omega_{1}) \right ] \\[10pt]
Z_{q}(s) &= \mathrm{Im} \left [ Z^{s}(s + j \omega_{1}) \right ]
\end{align} \tag{1}

と計算することができます。d軸とq軸にインピーダンスを分けるには,(1)式右辺のZs(s + jω1)の実部と虚部を(ラプラス演算子sはひとまず実数と見なして)計算する必要があります。しかし,もともとのZs(s)の数式表現が手元になく,周波数伝達関数としてのZs(jω)の数値データしか入手できない場合,(1)式に相当する計算は難しそうに見えます。

しかし,Rygg氏の学位論文によれば,何とZs(jω)から

 \begin{align}
Z_d(j \omega) &= \frac{Z^{s}(j (\omega + \omega_{1})) + Z^{s}(j (\omega - \omega_{1}))}{2} \\[10pt]
Z_q(j \omega) &= \frac{Z^{s}(j (\omega + \omega_{1})) - Z^{s}(j (\omega - \omega_{1}))}{2j}
\end{align} \tag{2}

のように簡単に計算することができます。そう,Zs(jω)の周波数をω1だけ両方向にシフトしたものを作り,その和を2で除したもの(つまり平均)がd軸成分,その差を2jで除したものがq軸成分となります。以下,実際にやってみましょう。

続きを読む

三相LCL回路のd-q座標系におけるインピーダンスを求める

はじめに

系統連系インバータと電力系統の相互作用によって,システムが不安定になることがあります。本ブログでは,過去の記事にて電流制御系と系統インピーダンスの相互作用について検討したことがあります。系統連系インバータの外乱応答(インピーダンス)と系統インピーダンスの比のナイキスト線図を描くことによって,電流制御系の安定性を論じることができました。しかし,この記事では単相の場合しか取り扱っておりませんでした。三相の場合はどのように考えるべきでしょうか。

negligible.hatenablog.com

三相系統連系インバータは大体においてd-q(回転)座標系で制御することが一般的であり,かつ,d軸とq軸で別々の制御を行っています。したがって,三相系統連系インバータはd-q座標系で不平衡なインピーダンスとなることでしょう。そのため,一般的に三相平衡に近いと考えられる系統インピーダンスの方を三相(あるいはα-β(静止)座標系)からd-q座標系に換算して表現するのが好適と考えられます。

しかし,不幸にして筆者は,RL直列回路以外の一般のインピーダンスをd-q座標系で表現する方法を,よくよく考えてみると知りませんでした。その必要性があること自体を想像できておらず,自らの不明を恥じ入っております。

そこで,本記事では,任意のインピーダンスをd-q座標系で表現する手法について,文献を紹介しながら説明します。また,一例として三相LCL回路のインピーダンスのd-q座標系における表現を導出し,これをLTspiceでの周波数スキャン(frequency response analysis, FRA)と比較検証することとしました。

任意のインピーダンスの場合と文献紹介

任意のインピーダンスのd-q座標系での表現

まず,ずばり結論を述べます。あくまでも三相平衡の場合を前提としますが,s領域において,三相座標系での自己インピーダンスがZs(s),相互インピーダンスがZm(s)である場合,次式が成り立ちます。

 \begin{bmatrix}
V_{a}(s) \\ V_{b}(s) \\ V_{c}(s)
\end{bmatrix}
= 
\begin{bmatrix}
Z_{s}(s) & Z_{m}(s) & Z_{m}(s)  \\
Z_{m}(s) & Z_{s}(s) & Z_{m}(s) \\
Z_{m}(s) & Z_{m}(s) & Z_{s}(s)
\end{bmatrix}
\begin{bmatrix}
I_{a}(s) \\ I_{b}(s) \\ I_{c}(s)
\end{bmatrix} \tag{1}

上式をα-β座標系で表現すると,

 \begin{bmatrix}
V_{\alpha}(s) \\ V_{\beta}(s)
\end{bmatrix}
= 
\begin{bmatrix}
Z^{s}(s) & 0  \\
0 & Z^{s}(s)
\end{bmatrix}
\begin{bmatrix}
I_{\alpha}(s) \\ I_{\beta}(s)
\end{bmatrix} \tag{2}

となって,α軸とβ軸の干渉はなくなります。ただし,

 Z^{s}(s) = Z_{s}(s) - Z_{m}(s) \tag{3}

であり,上付きsはstationary = 静止座標系を意味します。これを角速度ω1で回転するd-q座標系で表現した場合,次式となります。

 \begin{bmatrix}
V_{d}(s) \\ V_{q}(s)
\end{bmatrix}
= 
\begin{bmatrix}
Z_{d}(s) & -Z_{q}(s) \\
Z_{q}(s) & Z_{d}(s)
\end{bmatrix}
\begin{bmatrix}
I_{d}(s) \\ I_{q}(s)
\end{bmatrix} \tag{4}

ここで,若干数学的に厳密な書き方ではありませんが,

 \begin{align}
Z_{d}(s) &= \mathrm{Re} \left [ Z^{s}(s + j \omega_{1}) \right ] \\
Z_{q}(s) &= \mathrm{Im} \left [ Z^{s}(s + j \omega_{1}) \right ]
\end{align} \tag{5}

と表現できます。ここで,上式で実部と虚部を取り出すReとImを計算する場合,ひとまずラプラス演算子sを実数と見なして計算します。

文献紹介

d-q座標系での任意のインピーダンスの表現方法については,以下の論文にて詳しく述べられております。以下,この論文を「Harnefors氏の論文」と呼ぶことにします。

ieeexplore.ieee.org

Harnefors氏の論文では,上記の(5)式よりも数学的に厳密な書き方をしている他,三相不平衡な場合についての取り扱いについても記載しております。 ただし,三相不平衡な場合については筆者の理解が追い付いていないため煩雑になるため,まず本記事では三相平衡な場合に限定します。

以降,RL直列回路とLCL回路の場合を例に挙げながら,実際に計算していきます。

続きを読む

Raspberry PiとFlaskでスマートリモコンを作る

はじめに

今回のテーマは「家族の役に立つ工作」です。

泊まりがけの旅行から帰宅すると,戸締まりした部屋の中は真夏であれば蒸し風呂のように,また,真冬であれば冷蔵庫のように感じられます。帰宅する数時間前に外出先からエアコンを運転できれば,家に着く頃には快適な温度になっていることでしょう。このような機能を持ったエアコンも製品化されているようですし,そうでなくても,赤外線リモコンの信号を利用してこのような機能を後付けするための「スマートリモコン」と呼ばれるデバイスが今日では低価格で手に入ります。

また,昨今では天井照明がかつてのような「ヒモ」(正式にはプルスイッチ)ではなく,リモコンで制御されることが多くなって参りましたが,これを留守中にも点灯・消灯することにより,あたかも人が在宅しているかの如く見せ掛けて空き巣防止を狙うこともできます。

今回は,勉強とリハビリを兼ねてRaspberry Pi Zero WHでエアコンと天井照明を制御するスマートリモコンを自作した経緯や結果について書きます。なお,有名なirrp.pyに頼るのではなく,赤外線リモコン信号を送信するためのPythonモジュールを自作しました(と言ってもpigpioモジュールには同じように依存します)。これによって,例えばエアコンの温度設定や運転モードの組み合わせに応じたフレームを生成して送信することができます(学習リモコンの場合,すべての組み合わせを予めひとつひとつ学習しておく必要がありますよね)。

また,インターネットからエアコンや天井照明を制御するため,Flaskと呼ばれるフレームワークを用いたWebアプリを作りました。

なお,Raspberry Piを使って学習リモコンやスマートリモコン,スマートハウスを作るという先行研究は非常に多いので*1,本記事のオリジナリティを問われると「ぐぬぬ…」となってしまいますが,敢えて言えば自作モジュールirxmit.pyの部分でしょうか。また,pigpioライブラリ(モジュール)のwaveform機能について基礎的な部分のみですが,和文で書いた記事は少ないのではないかと推測しています。

本記事の最後に,赤外線LEDを6個に増量してパワーアップを図ったVersion 2 (V2)の製作過程について追記しました。十字配線ユニバーサル基板を使った例としてももしかすると参考になるかもしれません。

完成イメージ

まず,結論として完成したスマートリモコンのハードウェアとそのWebアプリのイメージを記載します。趣味なので仕様書のようなものは作っていませんが,作り始める前に思い描いていたものに近い形で実装することができました。

ハードウェア

図1に自作スマートリモコンHATを取り付けたRaspberry Pi Zero WHを示します。秋月電子通商Raspberry Pi Zero用ユニバーサル基板に手持ちの部品を実装して組み上げました。温湿度センサ,赤外線LEDとそれを駆動するパワーMOSFET,赤外線受光モジュールを搭載しております。思ったよりコンパクトに収まっておりますが,望ましくはOLEDディスプレイやキャラクLCDなど,表示デバイスを搭載できていたらと反省しております。温湿度センサの周りに抵抗器が密集しているのもあまりよろしくないですね。今年中にこれをプリント基板として作り直してみたいと密かに思っています。

図1: 自作スマートリモコンHATを取り付けたRaspberry Pi Zero WH

Webアプリ

図2に完成したWebアプリのキャプチャ画面を示します。ブラウザ上での見た目はBootstrap 4によってそれっぽく仕上がっております。この裏ではFlaskを用いたPythonのプログラムや,自作の赤外線リモコン信号送信モジュールなどが動いております。また,温湿度のトレンドグラフは馴れ親しんだ(?)Matplotlibで描いております。なお,自宅の家電機器を赤の他人に勝手に制御されると困るので,一応はパスワードで保護しています。これはFlaskのsessionとcookieを使って実現しています。

図2: Webアプリ画面キャプチャ

実際に動いている様子は動画の方が分かりやすいと思いますので,図3にYouTubeの動画を貼りつけます。

www.youtube.com
図3: FlaskによるWebアプリの動作の様子

おぉ…自分で作ったWebアプリとは思えないような美しさ…? 何もかもFlaskとBootstapのお陰ですね💦 たまに温湿度が欠測しているのが玉に瑕です。もう少し工夫が必要かもしれませんね。以下,開発の経緯や具体的な回路,ソフトの作り方について書いていきます。

続きを読む

Raspberry PiでBLDCモータを120°通電制御する

はじめに

本ブログの前々記事にてブラシレスDC (BLDC)モータの120°通電制御について書きました。STMicroelectronicsのモータ制御開発キットP-NUCLEO-IHM001の制御装置はもちろんSTM32マイコンの載ったNucleo F302R8です。

このNucleoをRaspberry Piに繋ぎ替えてみたら面白いのではないか──。技術的にはほとんど意味のないことかもしれませんが,Raspberry Pi OS(旧称Raspbian)というLinuxが走っている「コンピュータ」であるRaspberry Piでも交流モータを制御できるのかどうか*1,試してみたいじゃありませんか?

インターネット上にはRaspberry PiでBLDCモータを廻している記事も散見されますが,ESC (electronic speed controller)を途中に挿入している場合が多いようです。モータドライブインバータへのゲートパルスをRaspberry Piで直接生成している例は見つけられませんでしたので,ひょっとすると新しい試みなのかもしれません*2。図1にRaspberry Piを接続したBLDCモータ実験システムを示します。

f:id:s-inoue2010:20210321031911j:plain:w400
図1: Raspberry Piを接続したBLDCモータ実験システム

結論として,C言語でpigpioライブラリ(pigpiod_if2.hではなくpigpio.h)を使い,かつ,マルチコアのRaspberry Piでは,Nucleoに肉薄する制御を(120°通電制御という範囲内で)実現できるらしいことが判りました。

当初はPythonで交流モータを廻すという異端を試してみたかったのですが,今のRaspberry Piではまだ難しいようです*3。 以下では,Raspberry Piでモータを廻すに至る経緯や,プログラム実装への試み,実装したC言語プログラム,シングルコアと4コアの比較について述べます。

*1:Raspberry PiリアルタイムOSを載せたり,ベアメタルで使うという記事もありますね。いろんな技術を試してみたいものです。

*2:まぁ,Nucleoみたいな普通のマイコンボードでやろうよという制御ではあるのですが…。

*3:Raspberry Pi PicoのMicroPythonだったらできるかも──などと変なことを考えています。

続きを読む

LTspice用制御ライブラリContraille ~概要編~

はじめに

随分と間が開いてしまいましたが,如何お過ごしでしょうか? さて,今年(2021年)の元日,ぱわみ社さんより「パワーエレクトロニクス」第2号が発行されましたが,大変光栄なことに,本ブログの内容を基にして私もそこに寄稿させて頂きました。まさか自分がいわゆる〝同人誌〟に参加するなどとは思っていませんでしたが,Twitterでのご縁からこのような機会を頂戴することとなった次第です。

booth.pm rr-inyo.booth.pm

私の記事「LTspiceで三相PWM整流器を作る」の中で,掲題の自作制御ライブラリContrailleを紹介しておりますが,この度,Contrailleを下記に置きましたので,拙い完成度ではありますが,ご興味のある方は試してみて下さると幸いです。

github.com

続きを読む

ブラシレスDCモータのホールセンサ付き120°通電制御

はじめに

モータ制御への思い

交流電動機の可変速制御──。私のごく個人的な思いに過ぎませんが,そう,それこそがパワエレの本家本元ではないでしょうか。 パワーエレクトロニクスを学び,(ある程度)実践してきた私ですが,モータ制御を理解していないことに後ろめたさを感じております。交流電動機の可変速制御を勉強したいとの思いはあったのですが,ついぞ,今年に入るまで,自堕落な数年間を過ごしてしまっていました。 とは言いながら,机上で教科書を勉強するのみで,モータを実際に触らないとなると,深い理解は得られないだろうとも思っていました。

機は熟す

一方,ARMマイコンC++言語で便利にプログラミングできる「Mbed」というクラウド開発環境が2009年にARMよりリリースされ*1,それに対応する各種マイコンボードがNXPやSTMicroelectronicsより売り出されるようになりました。国内でも秋月電子通商をはじめとして,各種の店舗や通販から容易に入手できるようになっています。

os.mbed.com

また,CQ出版社より,NXPのマイコンLPC1114/301を搭載した超小型のマイコンボード「MARY基板」を付録とする書籍[1]が2011に出版されました。私も2014年にMARY基板を使った温度・湿度・気圧ロガー,通称「MARY気象台」を作り,プログラムをMbedで作って遊んでいました*2

f:id:s-inoue2010:20201109033442j:plain:w480
図1: 通称MARY気象台

そんな中,STMicroelectronicsより,Mbedに対応した「Nucleo」と呼ばれるマイコンボードに,モータドライバ(三相インバータ)基板と小形のブラシレスDCモータをセットにしたモータ制御開発キットP-NUCLEO-IHM001がリリースされました。

www.st.com

Nucleoは秋月電子通商等でも千数百円で簡単に入手できるマイコン基板ですが,それにインバータとモータが付いても,5,000円前後で買えてしまいます。 さらにこの2020年,このP-NUCLEO-IHM001を用いたモータ制御の解説書として,CQ出版社より書籍[2]が発売されました。 これは勉強する好機かもしれない。また,今の私にはLTspice XVIIという強力な味方も付いています。 同じくCQ出版社よりホールIC等やワイヤハーネスを追加したキットが発売されており,私はそれを購入しました。

f:id:s-inoue2010:20201109035217j:plain:w480
図2: 購入したP-NUCLEO-IHM001

センサレスベクトル制御の理解と実装を目指しますが,本記事ではまず,いわゆるホールセンサ付き120°通電制御を実装して試してみます。 制御プログラムはSTMicroelectronicsの統合開発環境STM32CubeIDEを用いて自分で書くことにしました*3。 しかし…最初に立ちはだかる壁は,制御というよりはモータそのものの原理でした…💦

*1:今はさらにMbed OSと呼ばれるRTOSがあって,初期のMbedライブラリ(Mbed OS 2.0)とは区別されているようです。私の知識もアップデートが必要です。

*2:本来はmbedに対応する基板ではありませんが,MARY基板にはNXPのLPC1114/301と接続するUSB-シリアル変換ICが搭載されており,Mbedで作成したプログラムを,別途用意したツールからUSBケーブル経由で書き込むと,プログラムがきちんと動作します。

*3:Mbedに移行するかもしれません。

続きを読む