(57)【要約】【課題】各スイッチング素子の特性に合わせて最適な条件で動作させることができるデジタルコンバータを提供する。【解決手段】コイルＬ１〜Ｌ３及びスイッチング素子Ｑ１〜Ｑ３を直列接続した３組の回路を並列接続して構成された昇圧チョッパ４と、各コイルＬ１〜Ｌ３に入力電流を供給する整流回路２と、各スイッチング素子Ｑ１〜Ｑ３を所定の制御サイクルでＰＷＭ制御するコンピュータ回路３とを備えて構成されたデジタルコンバータである。コイルへの入力電流が制御サイクル中に途切れない連続モードか、制御サイクルの途中で途絶える不連続モードかを判定しつつ、その判定結果に基づいて異なるアルゴリズムで前記ＰＷＭ制御を実行する一方、各スイッチング素子Ｑｉは、各々の特性に応じて補正されたパルス幅Ｎｉ＊Ｔｏｎを有するＰＷＭ波によって駆動される。【選択図】図７
2009261079.tif 000002
【特許請求の範囲】
【請求項１】
コイル及びスイッチング素子を直列接続した複数ｎ組の回路を並列接続して構成された昇圧チョッパと、前記各コイルに入力電流を供給する整流回路と、前記各スイッチング素子を所定の制御サイクルでＰＷＭ制御するコンピュータ回路とを備えて構成されたデジタルコンバータであって、
前記コイルへの入力電流が制御サイクル中に途切れない連続モードか、制御サイクルの途中で途絶える不連続モードかを判定しつつ、その判定結果に基づいて異なるアルゴリズムで前記ＰＷＭ制御を実行する一方、
前記各スイッチング素子Ｑｉは、各々の特性に応じて補正されたパルス幅Ｎｉ＊Ｔｏｎを有するＰＷＭ波によって駆動されることを特徴とするデジタルコンバータ。
【請求項２】
前記各スイッチング素子は、順次、位相が３６０／ｎ度ずれて駆動されるようになっている請求項１に記載のデジタルコンバータ。
【請求項３】
並列接続された複数ｎ個のスイッチング素子とコイルとを接続して構成された昇圧チョッパと、前記コイルに入力電流を供給する整流回路と、前記各スイッチング素子を所定の制御サイクルでＰＷＭ制御するコンピュータ回路とを備えて構成されたデジタルコンバータであって、
前記コイルへの入力電流が制御サイクル中に途切れない連続モードか、制御サイクルの途中で途絶える不連続モードかを判定しつつ、その判定結果に基づいて異なるアルゴリズムで前記ＰＷＭ制御を実行する一方、
前記各スイッチング素子Ｑｉは、各々の特性に応じて補正されたパルス幅Ｎｉ＊Ｔｏｎを有するＰＷＭ波によって駆動されることを特徴とするデジタルコンバータ。
【請求項４】
前記各スイッチング素子のＯＦＦ動作時に充電される単一のコンデンサから、前記昇圧チョッパの直流出力電圧が得られるよう構成された請求項１〜３の何れかに記載のデジタルコンバータ。
【請求項５】
連続モードか不連続モードかの判定は、今回の制御サイクルにおける、前記コイルの充電開始電流、前記昇圧チョッパへの交流入力電圧、及び前記昇圧チョッパの直流出力電圧の各計測値と、今回の制御サイクルにおけるＰＭＷ波の制御時間と、前記コイルのインダクタンス値とに基づいて決定される請求項１〜４に記載のデジタルコンバータ。
【請求項６】
前記コイルの充電開始電流は、
そのタイミングにおける前記スイッチング素子の出力端子と共通端子との間の電圧値に基づいて特定される請求項５に記載のデジタルコンバータ。
【請求項７】
前記コイルのインダクタンスは、
前記コイルの充電開始時と充電終了時における、前記スイッチング素子の出力端子と共通端子との間の電圧値と、
前記スイッチング素子の電圧電流特性についての予め記憶されている登録値と、に基づいて特定される請求項５又は６に記載のデジタルコンバータ。
【請求項８】
前記パルス幅Ｎｉ＊Ｔｏｎを規定する補正値Ｎｉ（ｉ＝１〜ｎ）は、
各スイッチング素子のＯＦＦ遷移時の電流値Ｉｐｉに基づいて、Ｎｉ＝ＭＩＤ／Ｉｐｉに設定される請求項１〜７の何れかに記載のデジタルコンバータ。
ＭＩＤ  ：  Ｉｐ１〜Ｉｐｎの平均値又は中央値
【請求項９】
前記パルス幅Ｎｉ＊Ｔｏｎを規定する補正値Ｎｉ（ｉ＝１〜ｎ）は、
各スイッチング素子のＯＦＦ遷移時の電流値Ｉｐｉの統計値ＴＹＰ（Ｉｐｉ）に基づいて、Ｎｉ＝ＭＩＤ／（Ｎｉ＊ＴＹＰ（Ｉｐｉ））の演算によって、運転動作中に更新される請求項１〜７の何れかに記載のデジタルコンバータ。
ＭＩＤ  ：  Ｎ１＊ＴＹＰ（Ｉｐ１）〜Ｎｎ＊ＴＹＰ（Ｉｐｎ）の平均値又は中央値
【請求項１０】
前記パルス幅Ｎｉ＊Ｔｏｎを規定する補正値Ｎｉ（ｉ＝１〜ｎ）は、
前記各スイッチング素子の発熱状態に基づいて決定される請求項１〜７の何れかに記載のデジタルコンバータ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、昇圧チョッパを用いたデジタルコンバータに関し、特に、複数のスイッチング素子を各々最適に動作させて、高効率で低損失のＰＷＭ制御が実現できる装置に関する。
【背景技術】
【０００２】
出願人は先に、高価なコイルを使用しなくても精密なＰＷＭ制御が実現できる装置について提案している（特許文献１）。
【特許文献１】特開２００７−２０２３４２号公報
【０００３】
この特許文献に記載の発明は、コイル及びスイッチング素子を備えた昇圧チョッパと、コイルに入力電流を供給する整流回路と、スイッチング素子を所定の制御サイクルでＰＷＭ制御するコンピュータ回路とを有するデジタルコンバータにおいて、コイルへの入力電流が制御サイクル中に途切れない連続モードか、制御サイクルの途中で途絶える不連続モードかを判定しつつ、その判定結果に基づいて異なるアルゴリズムでＰＷＭ制御を行うようにしている。
【０００４】
そして、実質的に同一のコイルＬ１〜Ｌ３及びスイッチング素子Ｑ１〜Ｑ３を備えた３個の回路を並列接続して昇圧チョッパを構成している。
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、コイルやスイッチング素子の特性上のバラツキや配線上のバラツキなどによって、各スイッチング素子を同一の制御オン時間で制御しても、各スイッチング素子に流れる平均電流が異なり、電力損失や発熱がアンバランスとなって、各素子を最大能力で動作させることができないという問題がある。すなわち、設計上の電力損失以上の電力損失が見込まれる以上、設計マージン分だけ大電流容量のスイッチング素子を搭載するしかなく、装置の小型化や低コスト化の障害となっている。
【０００６】
本発明は、上記の課題に鑑みてなされたものであって、各スイッチング素子の特性に合わせて最適な条件で動作させることができるデジタルコンバータを提供することを目的とする。
【課題を解決するための手段】
【０００７】
上記の目的を達成するため、請求項１に係る発明は、コイル及びスイッチング素子を直列接続した複数ｎ組の回路を並列接続して構成された昇圧チョッパと、前記各コイルに入力電流を供給する整流回路と、前記各スイッチング素子を所定の制御サイクルでＰＷＭ制御するコンピュータ回路とを備えて構成されたデジタルコンバータであって、前記コイルへの入力電流が制御サイクル中に途切れない連続モードか、制御サイクルの途中で途絶える不連続モードかを判定しつつ、その判定結果に基づいて異なるアルゴリズムで前記ＰＷＭ制御を実行する一方、前記各スイッチング素子Ｑｉは、各々の特性に応じて補正されたパルス幅Ｎｉ＊Ｔｏｎを有するＰＷＭ波によって駆動される。
【０００８】
この発明では、各スイッチング素子は、順次、位相が３６０／ｎ度ずれて駆動されるのが好ましく、n＝３とするのが典型例である。
【０００９】
また、請求項３に係る発明は、並列接続された複数ｎ個のスイッチング素子とコイルとを接続して構成された昇圧チョッパと、前記コイルに入力電流を供給する整流回路と、前記各スイッチング素子を所定の制御サイクルでＰＷＭ制御するコンピュータ回路とを備えて構成されたデジタルコンバータであって、前記コイルへの入力電流が制御サイクル中に途切れない連続モードか、制御サイクルの途中で途絶える不連続モードかを判定しつつ、その判定結果に基づいて異なるアルゴリズムで前記ＰＷＭ制御を実行する一方、前記各スイッチング素子Ｑｉは、各々の特性に応じて補正されたパルス幅Ｎｉ＊Ｔｏｎを有するＰＷＭ波によって駆動される。
【００１０】
上記何れの発明も尾、各スイッチング素子のＯＦＦ動作時に充電される単一のコンデンサから、前記昇圧チョッパの直流出力電圧が得られるよう構成されるのが好ましい。また、連続モードか不連続モードかの判定は、今回の制御サイクルにおける、前記コイルの充電開始電流、前記昇圧チョッパへの交流入力電圧、及び前記昇圧チョッパの直流出力電圧の各計測値と、今回の制御サイクルにおけるＰＭＷ波の制御時間と、前記コイルのインダクタンス値とに基づいて決定されるのが典型的である。
【００１１】
上記の発明において、コイルの充電開始電流は、電流検出抵抗によって検出しても良いが、コイルの充電開始タイミングにおけるスイッチング素子の出力端子と共通端子との間の電圧値に基づいて特定することもでき、この場合には、検出素子が不要となる。典型的にはスイッチング素子として、ＩＧＢＴが使用され、コレクタ−エミッタ電圧と、コレクタ電流の特性に基づいて、コイル充電開始電流が特定される。
【００１２】
また、この発明では、コイル充電終了電流についても同様に特定できるので、コイルのインダクタンスを、前記コイルの充電開始時と充電終了時における、前記スイッチング素子の出力端子と共通端子との間の電圧値と、前記スイッチング素子の電圧電流特性についての予め記憶されている登録値と、に基づいて特定することができる。
【００１３】
前記パルス幅Ｎｉ＊Ｔｏｎを規定する補正値Ｎｉ（ｉ＝１〜ｎ）は、各スイッチング素子のＯＦＦ遷移時の電流値Ｉｐｉに基づいて、Ｎｉ＝ＭＩＤ／Ｉｐｉに設定される。但し、ＭＩＤ：Ｉｐ１〜Ｉｐｎの平均値又は中央値である。
【００１４】
このような補正項Ｎｉを設ければ、デジタルコンバータが非連続モードで動作している状態では、複数のスイッチング素子の電力損失を均一化することができる。また、デジタルコンバータが連続モードで動作している状態でも、電力損失のアンバランスを抑制することができる。
【００１５】
また、前記パルス幅Ｎｉ＊Ｔｏｎを規定する補正値Ｎｉ（ｉ＝１〜ｎ）は、各スイッチング素子のＯＦＦ遷移時の電流値Ｉｐｉの統計値ＴＹＰ（Ｉｐｉ）に基づいて、Ｎｉ＝ＭＩＤ／（Ｎｉ＊ＴＹＰ（Ｉｐｉ））の演算によって、運転動作中に更新されるのも好適である。但し、ＭＩＤ：Ｎ１＊ＴＹＰ（Ｉｐ１）〜Ｎｎ＊ＴＹＰ（Ｉｐｎ）の平均値又は中央値である。ここで、統計値ＴＹＰ（Ｉｐｉ）は、適宜に決定されるが、実施例のように平均値を採用するのが簡易的である。
【００１６】
更にまた、前記パルス幅Ｎｉ＊Ｔｏｎを規定する補正値Ｎｉ（ｉ＝１〜ｎ）は、前記各スイッチング素子の発熱状態に基づいて決定するのも好適である。このような実施形態であれば、動作状態が非連続モードであれ、連続モードであれ、全ての運転領域において、各スイッチング素子の発熱を均一化することができる。
【発明の効果】
【００１７】
以上説明した本発明によれば、複数スイッチング素子について各々の特性に合わせて最適な条件で動作させることができる。
【発明を実施するための最良の形態】
【００１８】
以下、実施例に基づいて本発明を更に詳細に説明する。図１は、ソフトウェア制御によるデジタルコンバータ１を示す回路構成図であり、モータ制御システムの一部として組み込まれている。このデジタルコンバータ１では、単相交流電圧（例えば２００Ｖ）が全波整流回路２で整流されて脈流となった後、ワンチップマイコン３によってＰＷＭ(Pulse Width Modulation)制御がされる昇圧チョッパ４によって所定の直流電圧Ｖｄｃ（例えば３５０Ｖ）に変換される。そして、三相モータＭは、ワンチップマイコン３に制御されるインバータ回路５によって駆動される。
【００１９】
この実施例では、３個の昇圧チョッパ４ａ〜４ｃが並列接続されて構成されており、各昇圧チョッパ４ａ〜４ｃは、１２０度ずつ位相が遅れてＯＮ動作するよう制御されている。すなわち、昇圧チョッパ４は、位相の異なる３種類のＰＷＭ波（ＰＷＭ１〜ＰＷＭ３）でＯＮ動作するスイッチング素子Ｑ１〜Ｑ３と、各スイッチング素子Ｑ１〜Ｑ３に対応するコイルＬ１〜Ｌ３及びダイオードＤ１〜Ｄ３と、各スイッチング素子Ｑ１〜Ｑ３のエミッタ電流を検出するシャント抵抗Ｒ１〜Ｒ３と、各ダイオードＤ１〜Ｄ３の導電時に充電される単一の平滑コンデンサＣとを中心に構成されている。
【００２０】
スイッチング素子Ｑ１〜Ｑ３として、この実施例では、絶縁ゲート型バイポーラトランジスタＩＧＢＴ(Insulated Gate Bipolar Transistor)を使用しているが全て同一素子である。この点は、コイルＬ１〜Ｌ３及びダイオードＤ１〜Ｄ３についても同様であり、各コイルＬ１〜Ｌ３、ダイオードＤ１〜Ｄ３、及びシャント抵抗Ｒ１〜Ｒ３とも同一素子である。但し、各素子は、必ずしも、その特性が一致しないので、本実施例では、特性の不一致を補償するべく独特の制御を実行している。
【００２１】
図１に示す通り、各コイルＬ１〜Ｌ３とスイッチング素子Ｑ１〜Ｑ３とは直列接続され、各コイルＬ１〜Ｌ３には、リップル抑制コンデンサＣｉｎを経由して、全波整流回路２の脈流出力（Ｖａｃ）が供給されている。また、各スイッチング素子Ｑ１〜Ｑ３のゲート端子には、位相の異なる三種類のＰＷＭ波（ＰＷＭ１〜ＰＷＭ３）が供給され、各コレクタ端子は、ダイオードＤ１〜Ｄ３のアノード端子に接続されている。そして、各スイッチング素子Ｑ１〜Ｑ３のエミッタ端子は、シャント抵抗Ｒ１〜Ｒ３に接続され、各シャント抵抗Ｒ１〜Ｒ３はアースラインに接続されている。また、各ダイオードＤ１〜Ｄ３のカソード端子は、共通して平滑コンデンサＣに接続され、平滑コンデンサＣの他端はアースラインに接続されている。
【００２２】
実施例の昇圧チョッパ４は、上記の通り構成されているので、何れかのスイッチング素子ＱｉがＯＮ動作すると、脈流入力電圧Ｖａｃが、スイッチング素子Ｑｉと、これに直列接続されたコイルＬｉ及びシャント抵抗Ｒｉを通して短絡されることになり、コイルＬｉに充電電流が流れることになる。なお、シャント抵抗Ｒ１〜Ｒ３は、その抵抗値が低いので、回路動作の解析では殆ど無視してよい。
【００２３】
本実施例の場合、各スイッチング素子Ｑ１〜Ｑ３は、１２０度位相が遅れてＯＮ動作するので、各コイルＬｉには、１２０度位相の遅れた充電電流が流れることになる（図１２参照）。そして、何れかのコイルＬｉに充電電流が流れている状態で、コイルＬｉに対応するスイッチング素子ＱｉがＯＮ状態からＯＦＦ状態に変わると、対応するダイオードＤｉがＯＮ状態となって、コイルＬｉの放電電流が、コイルＬｉ→ダイオードＤｉ→平滑コンデンサＣの経路で流れ、平滑コンデンサＣは充電される。この動作は、１２０度位相が遅れつつ各コイルＬ１〜Ｌ３において実行されるので、平滑コンデンサＣからは、平滑された直流電圧Ｖｄｃが得られることになる。
【００２４】
スイッチング素子Ｑｉのエミッタ端子には、各々、シャント抵抗Ｒｉが接続されているので、何れのタイミングでも各昇圧チョッパ４ａ〜４ｃの動作電流が検出可能である。但し、この実施例では、スイッチング素子Ｑ１のＯＮ遷移時の電流と、各スイッチング素子Ｑ１〜Ｑ３のＯＦＦ遷移時の電流とを検出するようにしている。すなわち、コイルＬ１〜Ｌ３の充電ピーク電流値Ｉｐ１〜Ｉｐ３は、スイッチング素子Ｑ１〜Ｑ３のＯＦＦ遷移時に全て検出されるが（図２（ａ）参照）、充電開始電流については、スイッチング素子Ｑ１のＯＮ遷移時におけるコイルＬ１の充電開始電流Ｉｓ１についてだけ検出される。
【００２５】
ワンチップマイコン３には、信号入力部ＩＮ１〜ＩＮ３を通して、それぞれコイルＬ１〜Ｌ３の電流Ｉｃ１〜Ｉｃ３と、入力交流電圧Ｖａｃと、出力直流電圧Ｖｄｃとが入力されており、内蔵されたＡ／ＤコンバータＡＤ１〜ＡＤ６によって、各入力信号がデジタル変換されている。本実施例では、Ａ／ＤコンバータＡＤ１〜ＡＤ３は、スイッチング素子Ｑ１のＯＮ遷移時、つまりＰＷＭ１波の立上り時に機能するよう設定され、Ａ／ＤコンバータＡＤ４〜ＡＤ６は、対応するスイッチング素子（Ｑ１〜Ｑ３）のＯＦＦ遷移時、つまりＰＷＭ１波〜ＰＷＭ３波の立下がり時に機能するよう設定される。
【００２６】
信号入力部ＩＮ１（＝ＩＮ１ａ〜ＩＮ１ｃ）は、シャント抵抗Ｒ１〜Ｒ３の両端電圧を受けるＯＰアンプ回路で構成されており、シャント抵抗Ｒ１〜Ｒ３と合わせて、電流検出センサとして機能している。また、信号入力部ＩＮ２及び信号入力部ＩＮ３は、抵抗分圧回路とＯＰアンプ増幅回路とで構成されている。
【００２７】
このような信号入力部ＩＮ１〜ＩＮ３及びＡ／ＤコンバータＡＤ１〜ＡＤ４を通して取得されたデータは、ワンチップマイコン３によって演算処理されＰＷＭ信号のＯＮ時間（以下、制御オン時間という）が算出される。そして、ワンチップマイコン３から出力されたＰＷＭ信号（ＰＷＭ１〜ＰＷＭ３）は、各バッファ回路ＤＲを通してスイッチング素子Ｑ１〜Ｑ３のゲート端子に供給される。また、ワンチップマイコン３は、信号入力部ＩＮ４と信号出力部ＯＵＴ２を介してインバータ回路５に接続されて、三相モータＭをインバータ制御している。
【００２８】
以下、ワンチップマイコン３の具体的な制御動作を説明するに先立って、第１の昇圧チョッパ４ａに関して、その制御原理から説明する。図３は、ワンチップマイコン３から出力される第１のＰＷＭ波（ＰＷＭ１）と、第１の昇圧チョッパ４ａのコイルＬ１に流れる電流の関係を図示したタイムチャートである。以下、第１の昇圧チョッパ４ａに関して説明するが、コイルＬ１〜Ｌ３のインダクタンス値は全て同一であり、他の昇圧チョッパ４ｂ、４ｃの回路動作も原理的には同じである。
【００２９】
図示の通り、コイルＬ１にはコイル充電電流とコイル放電電流による三角波が流れるが、コイルＬ１に蓄えられたエネルギーが十分であって連続的に電流が流れる連続モード（図３（ａ）参照）と、エネルギーが不十分であるため、電流が途中で途切れる不連続モード（図３（ｂ）参照）とがある。
【００３０】
本実施例では、何れの動作モードにあるかに応じて、異なるＰＷＭ制御を行っているので、先ず、動作モードを判定する判定式を説明する。図３のタイムチャートにおいて、今現在が、制御サイクル（ｎ−１）であるとする。そして、この制御サイクル（ｎ−１）中の計測値に基づいて、次の制御サイクル（ｎ）における制御オン時間Ｔｏｎ（ｎ）を決定することを考える。なお、交流入力電圧の周波数は５０Ｈｚ又は６０Ｈｚであるが、十分迅速に制御するため、本実施例では、制御周期Ｔを４５．６μＳにしている。
【００３１】
以下、コイルＬ１のインダクタンス値をＬとして、回路方程式を説明する。コイル充電時（スイッチング素子ＯＮ）における回路方程式は、Ｖａｃ（ｎ−１）＝Ｌ＊｛Ｉｐ（ｎ−１）−Ｉｖ（ｎ−２）｝／Ｔｏｎ（ｎ−１）・・・（式１）となる。ここで、Ｉｖ（ｎ−２）はコイル充電開始電流、Ｉｐ（ｎ−１）はコイル充電ピーク電流、Ｔｏｎ（ｎ−１）は制御オン時間であり、それぞれ制御サイクル（ｎ−１）における値である。また、Ｖａｃ（ｎ−１）は制御サイクル（ｎ−１）における入力電圧であるが、電源周波数に対して、制御周期Ｔ（＝４５．６μＳ）が十分短いのでＶａｃ（ｎ−１）を一定値とみなすことができる。
【００３２】
一方、コイル放電時（スイッチング素子ＯＦＦ）における回路方程式は、Ｖｄｃ（ｎ−１）−Ｖａｃ（ｎ−１）＝Ｌ＊｛Ｉｐ（ｎ−１）−Ｉｖ（ｎ−１）｝／Ｔｏｆｆ（ｎ−１）・・・（式２）となる。ここで、Ｖｄｃ（ｎ−１）はコンデンサＣの両端電圧、Ｉｖ（ｎ−１）は今回の制御サイクル終了時のコイル電流（次回の制御サイクルのコイル充電開始電流）、Ｔｏｆｆ（ｎ−１）はＯＦＦ時間であり、それぞれ制御サイクル（ｎ−１）における値である。
【００３３】
（式１）及び（式２）からＩｐ（ｎ−１）を消去してＩｖ（ｎ−１）について解くと、Ｉｖ（ｎ−１）＝Ｉｖ（ｎ−２）＋Ｔ／Ｌ＊［｛Ｖａｃ（ｎ−１）−Ｖｄｃ（ｎ−１）｝＋Ｔｏｎ（ｎ−１）＊Ｖｄｃ（ｎ−１）］・・・（式３）となる。なお、制御周期Ｔは、Ｔ＝Ｔｏｎ（ｎ−１）＋Ｔｏｆｆ（ｎ−１）である。
【００３４】
上記の（式３）において、Ｉｖ（ｎ−１）＞０であれば連続モード、Ｉｖ（ｎ−１）＝０であれば不連続モードとなる。但し、（式３）は、今回の制御サイクル（ｎ−１）におけるコイル充電開始電流Ｉｖ（ｎ−２）を用いて、次回の制御サイクル（ｎ）におけるコイル充電開始電流Ｉｖ（ｎ−１）を求めているので、充電開始電流Ｉｖ（ｎ−２）が正確でないと、連続モードか不連続モードかの判定が狂うことになる。すなわち、Ｉｖ（ｎ−２）を一つ手前の制御サイクルにおける制御オン時間（Ｔｏｎ（ｎ−２））などに基づく予測演算によって決定したのでは、（式３）の演算によって誤差が累積されることになり、制御の指示値自体が目標から外れて発散してしまうおそれがある。そこで、この実施例では、制御サイクルごとに、コイル充電開始時の入力電流ａｄ１を計測するようにしている。
【００３５】
但し、制御サイクル開始時から入力電流の取得時までに不可避的に時間遅れＴｓが生じるので、この時間遅れＴｓを考慮して計測値ａｄ１を補正してコイル充電開始電流Ｉｖ（ｎ−２）としている。今、制御サイクル（ｎ−１）のＴｓのタイミングにおける電流計測値をａｄ１とすると、コイル充電電流の傾斜（Δｉ／Δｔ）は、Ｌ＊Δｉ／Δｔ＝ｅの関係からΔｉ／Δｔ＝ｅ／Ｌである。ここで、ｅは電圧、ｉは電流、ｔは時間である。
【００３６】
したがって、時間遅れＴｓにおける電流増加量は、Ｖａｃ（ｎ−１）／Ｌ＊Ｔｓと算出することができ、この値を用いると、Ｉｖ（ｎ−２）＝ａｄ１−Ｖａｃ（ｎ−１）／Ｌ＊Ｔｓ・・・（式４）となる。そして、この（式４）を（式３）に代入すると、Ｉｖ（ｎ−１）＝ａｄ１−［Ｖａｃ（ｎ−１）＊Ｔｓ＋Ｔ＊｛Ｖｄｃ（ｎ−１）−Ｖａｃ（ｎ−１）｝−Ｔｏｎ（ｎ−１）＊Ｖｄｃ（ｎ−１）］／Ｌ・・・（式５）となり、今回の制御サイクル（ｎ−１）の最終タイミング（＝次回の制御サイクルの開始タイミング）における入力電流値Ｉｖ（ｎ−１）を、今回の制御サイクル（ｎ−１）の開始タイミングにおける入力電流の計測値ａｄ１に基づいて正確に決定することができる。
【００３７】
そして、このようにして求めた次回制御サイクルのコイル充電開始電流Ｉｖ（ｎ−１）が正か否かに応じて、連続モードか不連続モードかを正確に判定でき、それに応じた最適な制御が可能となる。すなわち、今回の制御サイクル（ｎ−１）における、交流入力電圧Ｖａｃ（ｎ−１）、直流出力電圧Ｖｄｃ（ｎ−１）、及び入力電流ａｄ１の各計測値と、前回の制御サイクルで決定された制御オン時間Ｔｏｎ（ｎ−１）とに基づいて、連続モード用の制御をすべきか、不連続モード用の制御をすべきかを確定できる。
【００３８】
ところで、直流出力電圧Ｖｄｃ（ｎ−１）は、必ずしも、制御サイクル毎に更新される必要はないので、本実施例では、１ｍＳ毎に値が更新されるＶｄｃ（ｉ）を使用している（図１０のステップＳＴ３０参照）。したがって、本実施例の判別式は、正確には、Ｉｖ（ｎ−１）＝ａｄ１−［Ｖａｃ（ｎ−１）＊Ｔｓ＋Ｔ＊｛Ｖｄｃ（ｉ）−Ｖａｃ（ｎ−１）｝−Ｔｏｎ（ｎ−１）＊Ｖｄｃ（ｉ）］／Ｌ・・・（式５’）となる。
【００３９】
更にまた、直流出力電圧として、図１０のステップＳＴ３８の処理で算出される過去０．５秒間の平均値Ｖｄｃを使用しても良い。この場合には、Ｉｖ（ｎ−１）＝ａｄ１−［Ｖａｃ（ｎ−１）＊Ｔｓ＋Ｔ＊｛Ｖｄｃ−Ｖａｃ（ｎ−１）｝−Ｔｏｎ（ｎ−１）＊Ｖｄｃ］／Ｌ・・・（式５’’）の判別式が採用される。
【００４０】
＜不連続モード＞
続いて、各制御サイクル中のコイル平均電流Ｉａｖに基づいて、制御オン時間Ｔｏｎ（ｎ）を算出する方法について説明する。先ず、不連続モードにおける制御オン時間Ｔｏｎ（ｎ）を算出する（図３（ｂ）参照）。
【００４１】
コイル充電時における回路方程式は、Ｖａｃ（ｎ）＝Ｌ＊｛Ｉｐ（ｎ）−Ｉｖ（ｎ−１）｝／Ｔｏｎ（ｎ）となるが、不連続モードゆえに、Ｉｖ（ｎ−１）＝０であり、結局、Ｖａｃ（ｎ）＝Ｌ＊Ｉｐ（ｎ）／Ｔｏｎ（ｎ）・・・（式６）となる。ここで、Ｖａｃ（ｎ）は交流入力電圧、Ｉｐ（ｎ）はコイル充電ピーク時の電流値、Ｉｖ（ｎ−１）はコイル充電開始時の電流値、Ｔｏｎ（ｎ）は制御オン時間である。
【００４２】
一方、コイル放電時における回路方程式は、Ｖｄｃ（ｎ）−Ｖａｃ（ｎ）＝Ｌ／Ｔｃｕｔ（ｎ）＊｛Ｉｐ（ｎ）−Ｉｖ（ｎ）｝となる。なお、Ｔｃｕｔ（ｎ）は、コイル充電ピーク状態の電流値Ｉｐ（ｎ）が、放電されてゼロになるまでの時間である（図３（ｂ）参照）。ここでは不連続モードの回路方程式を問題にしているので、Ｉｖ（ｎ）＝０となり、Ｖｄｃ（ｎ）−Ｖａｃ（ｎ）＝Ｌ／Ｔｃｕｔ（ｎ）＊Ｉｐ（ｎ）・・・（式７）となる。また、この制御サイクルにおける入力電流の平均値Ｉａｖ（ｎ）は、Ｉａｖ（ｎ）＝｛Ｉｐ（ｎ）＊Ｔｏｎ（ｎ）＋Ｉｐ（ｎ）＊Ｔｃｕｔ（ｎ）｝／（２＊Ｔ）・・・（式８）となる。
【００４３】
そして、これら（式６）〜（式８）をＴｏｎ（ｎ）について解くと、Ｔｏｎ（ｎ）＊Ｔｏｎ（ｎ）＝｛２＊Ｔ＊Ｌ＊Ｉａｖ（ｎ）＊（Ｖｄｃ（ｎ）−Ｖａｃ（ｎ））｝／｛Ｖａｃ（ｎ）＊Ｖｄｃ（ｎ）｝・・・（式９）と算出される。
【００４４】
＜連続モード＞
続いて、連続モードにおける制御オン時間Ｔｏｎ（ｎ）を算出する（図３（ａ）参照）。コイル充電時における回路方程式は、Ｖａｃ（ｎ）＝Ｌ＊｛Ｉｐ（ｎ）−Ｉｖ（ｎ−１）｝／Ｔｏｎ（ｎ）・・・（式１０）となる。一方、コイル放電時における回路方程式は、Ｖｄｃ（ｎ）−Ｖａｃ（ｎ）＝Ｌ／Ｔｏｆｆ（ｎ）＊｛Ｉｐ（ｎ）−Ｉｖ（ｎ）｝・・・（式１１）となる。ここで、Ｔｏｆｆ（ｎ）＝Ｔ−Ｔｏｎ（ｎ）であり、コイル放電開始から次回の制御サイクルにおけるコイル充電開始までの時間である。
【００４５】
そして、この制御サイクルにおける平均電流Ｉａｖ（ｎ）は、Ｉａｖ（ｎ）＝［｛Ｉｐ（ｎ）＋Ｉｖ（ｎ−１）｝＊Ｔｏｎ（ｎ）＋｛Ｉｐ（ｎ）＋Ｉｖ（ｎ）｝＊Ｔｏｆｆ（ｎ）］／｛２＊Ｔ｝・・・（式１２）となる。ここで、Ｉｐ（ｎ），Ｉｖ（ｎ）を消去しつつ（式１０）〜（式１２）をＴｏｆｆ（ｎ）について解くと、Ｔｏｆｆ（ｎ）＊Ｔｏｆｆ（ｎ）＝［２＊Ｔ＊Ｌ＊｛Ｉｖ（ｎ−１）−Ｉａｖ（ｎ）｝／Ｖｄｃ（ｎ）］＋Ｔ＊Ｔ＊Ｖａｃ（ｎ）／Ｖｄｃ（ｎ）・・・（式１３）となるので、結局、Ｔｏｎ（ｎ）は、Ｔｏｎ＝Ｔ−Ｔｏｆｆ（ｎ）・・・（式１４）と算出される。
【００４６】
本実施例では、不連続モードか連続モードかに応じて、（式９）か又は（式１４）を用いて制御オン時間Ｔｏｎ（ｎ）を算出するが、その演算には、次回の制御サイクル（ｎ）における、交流入力電圧Ｖａｃ（ｎ）、直流出力電圧Ｖｄｃ（ｎ）、及び平均入力電流Ｉａｖ（ｎ）の予測パラメータが必要となる。
【００４７】
交流入力電圧Ｖａｃ（ｎ）については、今回の交流入力電圧の計測値Ｖａｃ（ｎ−１）と、前回の交流入力電圧の計測値Ｖａｃ（ｎ−２）に基づいて予測することとし、具体的には、今回の計測値Ｖａｃ（ｎ−１）に、制御サイクル（ｎ−２）と制御サイクル（ｎ−１）計測値の差分を加算して以下の通りとする。Ｖａｃ（ｎ）＝２＊Ｖａｃ（ｎ−１）−Ｖａｃ（ｎ−２）・・・（式１５）
【００４８】
一方、直流出力電圧Ｖｄｃ（ｎ）については、直流電圧についての過去の計測値の平均値Ｖｄｃを採用する。平均値Ｖｄｃの算出法は適宜に決定されるが、この実施例では０．５秒毎に実行される平均化処理によって過去０．５秒間の計測値を平均化して、直流出力電圧Ｖｄｃとしている（図１０のステップＳＴ３８参照）。この直流出力電圧Ｖｄｃは、メモリの適当なワークエリアに格納されており、このワークエリアの値Ｖｄｃが０．５秒毎に更新されるようになっている。
【００４９】
したがって、この場合には、不連続モードで、Ｔｏｎ（ｎ）＊Ｔｏｎ（ｎ）＝｛２＊Ｔ＊Ｌ＊Ｉａｖ（ｎ）＊（Ｖｄｃ−Ｖａｃ（ｎ））｝／｛Ｖａｃ（ｎ）＊Ｖｄｃ｝・・・（式９’）となり、一方、連続モードでは、Ｔｏｆｆ（ｎ）＊Ｔｏｆｆ（ｎ）＝［２＊Ｔ＊Ｌ＊｛Ｉｖ（ｎ−１）−Ｉａｖ（ｎ）｝／Ｖｄｃ］＋Ｔ＊Ｔ＊Ｖａｃ（ｎ）／Ｖｄｃ・・・（式１３’）、Ｔｏｎ＝Ｔ−Ｔｏｆｆ（ｎ）・・・（式１４’）となる。
【００５０】
但し、０．５秒間の平均値Ｖｄｃを使用するのに変えて、Ａ／ＤコンバータＡＤ３の出力値ＡＤ３を１ｍＳ毎に取得したＶｄｃ（ｉ）の値を使用しても良い。この場合には、不連続モードで、Ｔｏｎ（ｎ）＊Ｔｏｎ（ｎ）＝｛２＊Ｔ＊Ｌ＊Ｉａｖ（ｎ）＊（Ｖｄｃ（ｉ）−Ｖａｃ（ｎ））｝／｛Ｖａｃ（ｎ）＊Ｖｄｃ（ｉ）｝・・・（式９’’）となり、一方、連続モードでは、Ｔｏｆｆ（ｎ）＊Ｔｏｆｆ（ｎ）＝［２＊Ｔ＊Ｌ＊｛Ｉｖ（ｎ−１）−Ｉａｖ（ｎ）｝／Ｖｄｃ（ｉ）］＋Ｔ＊Ｔ＊Ｖａｃ（ｎ）／Ｖｄｃ（ｉ）・・・（式１３’’）、Ｔｏｎ＝Ｔ−Ｔｏｆｆ（ｎ）・・・（式１４’’）となる。
【００５１】
また、平均入力電流Ｉａｖ（ｎ）の予測値は、交流入力電圧Ｖａｃ（ｎ）の予測値との関係からＩａｖ（ｎ）＝β＊Ｖａｃ（ｎ）とする。ここでゲインβは、直流出力電圧の基準値（目標値）Ｖｏと、上記の平均化された直流出力電圧Ｖｄｃとを比較しながら、その差ＶｅｒｒがゼロになるようにＰＩ制御によって調整する。
【００５２】
すなわち、Ｖｅｒｒ＝Ｖｏ−Ｖｄｃ・・・（式１６）であり、Ｖｏ＝Ｖａｃ（ｐｋ）＋α・・・（式１７）である。ここで、直流出力電圧の基準値Ｖｏは、交流入力電圧（脈流）の波高値Ｖａｃ（ｐｋ）に、コイルＬによる昇圧量αを加算したものに設定する。このように設定することによって、入力電圧値に応じた効率の高い変換が可能となる。また、コイルＬによる昇圧量を小さくできるので、大型化しない適当なサイズで安価で軽量のコイルを選択することが可能となる。なお、コイルＬのインダクタンス最適値は、一般に、Ｌ＝Ｖａｃ＊Ｖａｃ＊（Ｖｄｃ−Ｖａｃ）／｛γ＊Ｐａｃ＊Ｖｄｃ／Ｔ｝の設計式に基づいて決定されるが、本実施例では、入力電圧値Ｖａｃに対応して出力電圧値Ｖｄｃを設定するので、コイルのインダクタンス値がほぼ最適値を常に維持する。なお、上記の設計式において、γは入力電流のリプル含有率、Ｔは制御周期、Ｐａｃは最大入力電力、Ｖａｃは入力電圧の瞬時値である。
【００５３】
以上、図３に基づいて、ＰＷＭ制御の制御原理を説明したので、次に、図３の制御動作を実現するワンチップマイコン３について具体的に説明する。
【００５４】
図４は、ワンチップマイコン３の内部構成図を例示したものであり、ここでは、シングルチップＲＩＳＣマイコンＳＨ７０４６（株ルネサステクノロジー）を使用している。このワンチップマイコン３は、ＣＰＵコア３０と、クロック発生部３１と、ＡＤ変換部３２と、マルチファンクションタイマパルスユニット（ＭＴＵ）３３とを内蔵している。この実施例のクロック発生部３１は、５０ＭＨｚのシステムクロックを発振しており、システムクロックを二分周した２５ＭＨｚの周辺クロックＰΦがＭＴＵ３３に供給されている。そして、この周辺クロックＰΦは、その後、分周されることなく、そのまま計数クロック（周波数２５ＭＨｚ）としてＭＴＵ３３のカウンタに供給される。
【００５５】
図５は、ＡＤ変換部３２の内部構成を概略的に図示したものである。このＡＤ変換部３２は、８チャネルのアナログ入力端子ＡＮ８〜ＡＮ１５を有しており、入力されたアナログ信号は、逐次比較方式によりＡＤ変換され、ＡＤ変換後のデジタルデータ（分解能１０ビット）は、データレジスタＡＤＤＲ８〜ＡＤＤＲ１５に格納される。
【００５６】
この実施例では、昇圧チョッパ４の動作状態を示す各アナログ信号は、信号入力部ＩＮ１〜ＩＮ３を経由して、上記したＡＤ変換部３２に供給されており、ＡＤ変換部３２は、実質的に、３チャネルのＡ／ＤコンバータＡＤ１〜ＡＤ３と、時間的に飛び飛びに動作する１チャンネルのＡ／ＤコンバータＡＤ４〜ＡＤ６として機能している。
【００５７】
３チャネルのＡ／ＤコンバータＡＤ１〜ＡＤ３は、連続スキャンモードで動作するよう設定されており、ＰＷＭ１波の立上り時に、ＭＴＵ３３からＡＤ変換開始トリガ（図５、図７参照）を受けると、Ａ／ＤコンバータＡＤ１〜ＡＤ３が、その順番にＡＤ変換動作するようになっている。そして、ＡＤ変換動作が完了すると、ＣＰＵコア３０に対して、割込み信号（ＡＤＩ割込み）を出力するよう設定されており、ＣＰＵコア３０では、このＡＤＩ割込み処理プログラムにおいて、ＡＤ変換後のデータａｄ１〜ａｄ３を、ＡＤ変換部３２のデータレジスタＡＤＤＲｊから取得してメモリに記憶する。
【００５８】
一方、Ａ／ＤコンバータＡＤ４〜ＡＤ６は、ＰＷＭ１〜ＰＭＷ３波の立下り時に、該当するジェネラルレジスタのコンペアマッチによるＡＤ変換開始トリガを受けるよう構成されている。そして、ＡＤ変換開始トリガを受けると、そのタイミングで選択されているＡ／ＤコンバータＡＤ４〜ＡＤ６の何れかが、シングルモードでＡＤ変換動作を開始するようになっている。また、ＡＤ変換動作が完了すると、ＣＰＵコア３０に対して、割込み信号（ＡＤＩ割込み）を出力するよう設定されているので、ＣＰＵコア３０は、ＡＤＩ割込み処理プログラムにおいて、ＡＤ変換後のデータａｄｊ（ｊ＝４〜６の何れか）を、ＡＤ変換部３２のデータレジスタＡＤＤＲｊから取得してメモリに記憶する。
【００５９】
図６は、ＭＴＵ（マルチファンクションタイマパルスユニット）３３の内部構成を図示したものである。このＭＴＵ３３は、５チャネル（ｃｈａｎｎｅｌ＿０〜ｃｈａｎｎｅｌ＿４）の１６ビットタイマにより構成されており、各種のレジスタへの設定データに基づいて、任意のパルス幅のＰＷＭ波を出力できるようになっている。
【００６０】
本実施例の場合、ＭＴＵ３３の各設定は、以下の通りである。
【００６１】
＜ＡＤ変換部３２に関連する設定＞
この実施例では、４５．６μＳ毎に繰り返される「制御サイクル」が、Ａ／Ｄコンバータを動作させる「データ取得サイクル」と、ＡＤ変換された取得データに基づいて制御オン時間Ｔｏｎを算出する「演算サイクル」とに区分されており、「データ取得サイクル」と「演算サイクル」とを交互に繰り返すよう構成されている。
【００６２】
そして、「データ取得サイクル」では、ＴＧＲＡ＿０（チャネル０のジェネラルレジスタＡ）のコンペアマッチによりＡＤ変換開始トリガを発生させ、Ａ／ＤコンバータＡＤ１〜ＡＤ３を、連続スキャンモードでＡＤ変換動作させる。
【００６３】
また、「データ取得サイクル」では、３相のＰＷＭ波（ＰＷＭ１〜ＰＷＭ３）の何れかの立下り時に、ＴＧＲＡ＿２（チャネル２のジェネラルレジスタＡ）のコンペアマッチによりＡＤ変換開始トリガを発生させる。そして、Ａ／ＤコンバータＡＤ４〜ＡＤ６のうち、該当するＡ／ＤコンバータＡＤｊをＡＤ変換動作させる。なお、ＡＤ変換開始トリガを受けて動作を開始するＡ／ＤコンバータＡＤｊや、ＡＤ変換開始トリガの発生タイミングを規定するＴＧＲＡ＿２（チャネル２のジェネラルレジスタＡ）への設定値は、ＣＰＵコア３０によって適宜に変更設定される。
【００６４】
＜ＣＰＵコア３０への割込み要求の設定＞
ＴＧＲＡ＿０（チャネル０のジェネラルレジスタＡ）のコンペアマッチによりＣＰＵコア３０に、ＣＨ０の割込み要求信号を発生させる。この割込み要求信号に応じて、ＣＰＵコア３０では、図９に示す割込み処理プログラムＣＭ＿ＩＮＴを実行する。
【００６５】
実行内容は、制御サイクルが「データ取得サイクル」である場合と、「演算サイクル」である場合とで相違するが、「演算サイクル」では、これに先行する「データ取得サイクル」で取得されたデータに基づいて制御オン時間Ｔｏｎを算出する。
【００６６】
一方、「データ取得サイクル」では、スイッチング素子Ｑ１〜Ｑ３のＰＷＭデューティＮ１，Ｎ２，Ｎ３に基づいて、制御オン時間Ｔｏｎを、スイッチング素子Ｑ１〜Ｑ３毎に補正する。ここで、ＰＷＭデューティＮ１〜Ｎ３は、各スイッチング素子Ｑ１〜Ｑ３での消費電力をほぼ一致させるための補正値である。
【００６７】
図２に示す通り、各スイッチング素子Ｑ１〜Ｑ３をＯＮ動作させる制御オン時間Ｔｏｎが同じでも、通常、充電ピーク電流Ｉｐ１〜Ｉｐ３が相違するので（図示例ではＩｐ１＞Ｉｐ２＞Ｉｐ３の関係にある）、中央値ＭＩＤ（ここではＩｐ２）を示すスイッチング素子Ｑ２の制御オン時間をＴｏｎに設定し、最小値を示すスイッチング素子Ｑ３の制御オン時間をＴｏｎ＊Ｉｐ２／Ｉｐ３に広く設定する一方、最大値を示すスイッチング素子Ｑ１の制御オン時間をＴｏｎ＊Ｉｐ２／Ｉｐ１に狭く設定している。すなわち、図２の場合には、Ｎ１＝Ｉｐ２／Ｉｐ１、Ｎ２＝Ｉｐ２／Ｉｐ２、Ｎ３＝Ｉｐ２／Ｉｐ３のＰＷＭデューティＮ１〜Ｎ３を設けている。
【００６８】
「データ取得サイクル」では、このように決定されているＰＷＭデューティＮ１〜Ｎ３に基づいて、制御オン時間Ｔｏｎを補正して、Ｎ１＊Ｔｏｎ，Ｎ２＊Ｔｏｎ，Ｎ３＊Ｔｏｎなどの設定値を、ＭＴＵ３３のＴＧＲＡ＿０〜ＴＧＲＤ＿０（チャネル０のジェネラルレジスタＡ、Ｂ，Ｃ，Ｄ）、及びＴＧＲＡ＿１〜ＴＧＲＢ＿１（チャネル１のジェネラルレジスタＡ，Ｂ）に書込む。これらの設定値は、ＭＴＵ３３から出力される３相のＰＷＭ波の立ち上がりタイミングと、立下りタイミングとを規定する数値である。なお、「データ取得サイクル」では、例えば、数秒間に一回の割合で、３つのスイッチング素子Ｑ１〜Ｑ３のＰＷＭデューティＮ１〜Ｎ３を見直し、最適な値に修正する。
【００６９】
＜ＭＴＵ３３の動作に関する設定＞
［設定（１）］  チャネル０〜４のうち、チャネル０〜２を「同期動作」に設定する。そして、チャネル０のカウンタクリア要因を「ＴＧＲＡ＿０（チャネル０のジェネラルレジスタＡ）のコンペアマッチ」に設定し、チャネル１，２のカウンタクリア要因を「同期クリア」に設定する。したがって、チャネル０〜２のタイマカウンタＴＣＮＴ＿０〜ＴＣＮＴ＿２は、ＴＧＲＡ＿０のコンペアマッチ時に同期してクリアされる。
【００７０】
［設定（２）］  チャネル０〜１を「ＰＷＭモード１」に設定する。ＰＷＭモード１では、ＴＧＲＡ（ジェネラルレジスタＡ）とＴＧＲＢ（ジェネラルレジスタＢ）とをペアで使用することになり、ＴＩＯＣＡ＿０端子、ＴＩＯＣＡ＿１端子からＴＧＲＡとＴＧＲＢのコンペアマッチによるＰＷＭ波（ＰＷＭ１とＰＷＭ３）が出力される。
【００７１】
また、ＴＧＲＣ＿０（チャネル０のジェネラルレジスタＣ）とＴＧＲＤ＿０（チャネル０のジェネラルレジスタＤ）とをペアで使用することで、ＴＩＯＣＣ＿０端子から、ＴＧＲＣ＿０とＴＧＲＤ＿０のコンペアマッチによるＰＷＭ２が出力される。
【００７２】
［設定（３）］  ＴＧＲＡ＿０〜ＴＧＲＤ＿０（チャネル０のジェネラルレジスタＡ，Ｂ，Ｃ，Ｄ）、ＴＧＲＡ＿１〜ＴＧＲＢ＿１（チャネル１のジェネラルレジスタＡ，Ｂ）、及び、ＴＧＲＡ＿２（チャネル２のジェネラルレジスタＡ）には、ＴＧＲＡ＿０のコンペアマッチによる割込み要求に対応して、ＣＰＵコア３０が設定値を書き込む。
【００７３】
具体的には、ＴＧＲＡ＿０〜ＴＧＲＤ＿０（チャネル０のジェネラルレジスタＡ、Ｂ，Ｃ，Ｄ）には、１１４０、Ｎ１＊Ｔｏｎ、３８０、３８０＋Ｎ２＊Ｔｏｎを書込み、ＴＧＲＡ＿１〜ＴＧＲＢ＿１（チャネル１のジェネラルレジスタＡ，Ｂ）には、７６０、７６０＋Ｎ３＊Ｔｏｎを書込む。これらは、３相のＰＷＭ波（ＰＷＭ１〜ＰＷＭ３）を生成するための設定値である。ここで、Ｔｏｎは、制御サイクル毎に算出される制御オン時間であり、Ｎ１〜Ｎ３は、統計的且つ動的に修正されるＰＷＭデューティである。
【００７４】
また、ＴＧＲＡ＿２（チャネル２のジェネラルレジスタＡ）には、書込み動作時のタイミングに応じて、Ｎ１＊Ｔｏｎ、３８０＋Ｎ２＊Ｔｏｎ、７６０＋Ｎ３＊Ｔｏｎの何れかを書込む。これは、３相のＰＷＭ波（ＰＷＭ１〜ＰＷＭ３）の立下りタイミングで、ＡＤ変換開始トリガを発生させるための設定値である。
【００７５】
［設定（４）］  ＴＩＯＣＡ端子とＴＩＯＣＣ端子（ＭＴＵ３３のＰＷＭ出力端子）の出力レベルは、ＴＧＲＡ又はＴＧＲＡＣ（ジェネラルレジスタＡ、Ｃ）のコンペアマッチ時と、ＴＧＲＢ又はＴＧＲＤ（ジェネラルレジスタＢ）のコンペアマッチ時に変化する。
【００７６】
そして、ＴＩＯＣＡ＿０、ＴＩＯＣＣ＿０、及びＴＩＯＣＡ＿１の各出力は、各チャネルのＴＩＯＲ（タイマＩＯコントロールレジスタ）への初期設定により、ＴＧＲＡ＿０〜ＴＧＲＡ＿１のコンペアマッチ時やＴＧＲＣ＿０のコンペアマッチ時に、Ｈレベルに立ち上がり、ＴＧＲＢ＿０〜ＴＧＲＢ＿１のコンペアマッチ時やＴＧＲＤ＿０のコンペアマッチ時に、Ｌレベルに立下るよう設定する。
【００７７】
［設定（５）］  タイマカウンタＴＣＮＴの計数クロックは、周辺クロックＰΦと同じ２５ＭＨｚ（周期４０ｎＳ）とする。
【００７８】
ＭＴＵ３３は、上記のように設定されて動作する。図７（ａ）は、ＭＴＵ３３の動作に関連して、各チャネル０〜２のタイマカウンタＴＣＮＴ（ＴＣＮＴ＿０〜ＴＣＮＴ＿２）と、各ジェネラルレジスタ（ＴＧＲＡ＿０〜ＴＧＲＤ＿０，ＴＧＲＡ＿１〜ＴＧＲＢ＿１）との関係、及び、各ＴＩＯＣ端子（ＴＩＯＣＡ＿０，ＴＩＯＣＣ＿０，ＴＩＯＣＡ＿１）から出力されるＰＷＭ波を図示したものである。
【００７９】
先に説明した通り、本実施例では、固定値１１４０に設定されたＴＧＲＡ＿０のコンペアマッチ時に、チャネル０〜２のタイマカウンタＴＣＮＴ＿０〜ＴＣＮＴ＿２が同期してクリアされる。そのため、各タイマカウンタＴＣＮＴは、０〜１１３９を循環する１１４０進カウンタとして機能する。一方、タイマカウンタＴＣＮＴの計数クロックは、２５ＭＨｚ（周期４０ｎＳ）であるから、タイマカウンタは、４５．６μＳ（＝１１４０＊４０ｎＳ）を一周期（制御周期Ｔ）として循環動作することになり、ＰＷＭ制御のキャリア周波数は約２２ＫＨｚとなる。
【００８０】
先に説明した通り、チャネル０のＴＧＲＡ＿０〜ＴＧＲＤ＿０（ジェネラルレジスタＡ，Ｂ，Ｃ，Ｄ）には、チャネル０のＴＧＲＡ（ＴＧＲＡ＿０）のコンペアマッチ時（つまり各タイマカウンタＴＣＮＴの同期クリア時）に生じる割込みにより、ＣＰＵコア３０によって、それぞれ１１４０、Ｎ１＊Ｔｏｎ、３８０、３８０＊Ｎ２＊Ｔｏｎが書込まれる。同様に、チャネル１のＴＧＲＡ＿１〜ＴＧＲＢ＿１（ジェネラルレジスタＡ，Ｂ）には、チャネル０のＴＧＲＡ（ＴＧＲＡ＿０）のコンペアマッチ時に生じる割込みにより、７６０、７６０＋Ｎ３＊Ｔｏｎが書込まれる。
【００８１】
以上の設定のため、タイマカウンタＴＣＮＴがクリアされるのに合わせて、ＴＩＯＣＡ＿０（チャネル０のＴＩＯＣＡ端子）はＨレベルに立ち上がる。その後、チャネル０のタイマカウンタＴＣＮＴ＿０が進行して、ＴＧＲＢ＿０（チャネル０のジェネラルレジスタＢ）の値であるＮ１＊Ｔｏｎに一致すると、ＴＩＯＣＡ＿０はＬレベルに立下がる。
【００８２】
その他のＴＩＯＣ端子も同様であり、ＴＩＯＣＣ＿０（チャネル０のＴＩＯＣＣ端子）は、タイマカウンタＴＣＮＴ＿０＝３８０のタイミングで、ＴＧＲＣ＿０のコンペアマッチにより、Ｈレベルに立ち上がり、タイマカウンタＴＣＮＴ＿０＝３８０＋Ｎ１＊Ｔｏｎのタイミングで、ＴＧＲＤ＿０のコンペアマッチにより、Ｌレベルに立下がる。また、ＴＩＯＣＡ＿１（チャネル１のＴＩＯＣＡ端子）は、タイマカウンタＴＣＮＴ＿１＝７６０のタイミングで、ＴＧＲＡ＿１のコンペアマッチによりＨレベルに立ち上がり、タイマカウンタＴＣＮＴ＿１＝７６０＋Ｎ３＊Ｔｏｎのタイミングで、ＴＧＲＢ＿１のコンペアマッチによりＬレベルに立下がる。
【００８３】
したがって、各チャネルの出力端子であるＴＩＯＣＡ＿０、ＴＩＣＣ＿０、及びＴＩＯＣＡ＿１から、適宜に増減されたパルス幅（Ｎ１＊Ｔｏｎ、Ｎ２＊Ｔｏｎ、Ｎ３＊Ｔｏｎ）のＰＷＭ波が１２０度ずつ遅れた位相で出力されることになり（図７（ａ）参照）、スイッチング素子Ｑ１〜Ｑ３は、位相のずれた三相のＰＷＭ波に基づいてＯＮ動作することになる。なお、制御オン時間Ｔｏｎは、一つ手前の制御サイクルにおいて算出された値である。
【００８４】
図７（ｂ）は、ＴＧＲＡ＿０（チャネル０のジェネラルレジスタＡ）のコンペアマッチに基づくＣＰＵコア３０の割込み処理を図示したものである。先に説明した通り、各制御周期の最初のタイミングで（ＴＧＲＡ＿０のコンペアマッチ時）、ＣＰＵコア３０は、ＭＴＵ３３の各ジェネラルレジスタに適当な設定値を書込む。
【００８５】
図７（ｃ）は、ＴＧＲＡ＿０（チャネル０のジェネラルレジスタＡ）のコンペアマッチによるＡＤ変換開始トリガに関して図示したものである。図示の通り、各制御周期の最初のタイミングで（ＴＧＲＡ＿０のコンペアマッチ時）、ＡＤ変換開始トリガがＭＴＵ３３からＡＤ変換部３２に供給され、これに呼応して、Ａ／ＤコンバータＡＤ１〜ＡＤ３が連続スキャンモードで動作して、この順番にＡＤ変換動作を実行する。そして、Ａ／ＤコンバータＡＤ４がＡＤ変換を終了すると、ＣＰＵコア３０に対して、ＡＤ変換終了割込み信号を出力する。
【００８６】
また、ＴＧＲＡ＿２のコンペアマッチ時に、ＡＤ変換開始トリガがＭＴＵ３３からＡＤ変換部３２に供給され、これに呼応して、Ａ／ＤコンバータＡＤ４〜ＡＤ６の何れかがシングルモードで動作して、ＡＤ変換動作を実行する。そして、該当するＡ／ＤコンバータＡＤｊがＡＤ変換を終了すると、ＣＰＵコア３０に対して、ＡＤ変換終了割込み信号を出力する。
【００８７】
以上の通り、ＭＴＵ３３は、ＣＰＵコア３０及びＡＤ変換部３２と協働して、位相が１２０度ずつ異なる３つのＰＷＭ波を、約５０μＳの制御周期Ｔで出力する。図８〜図９は、図３の制御動作を実現するワンチップマイコン３の処理内容を示すフローチャートである。図３に示す制御処理は、４５．６μＳ毎に繰り返されるＭＴＵ３３によるＰＷＭ波の出力動作（図８（ａ）参照）と、ＡＤ変換動作が完了すると起動されるＡＤ変換終了割込みＡＤ＿ＩＮＴ（図８（ｂ））と、ＭＴＵ３３の動作に同期して４５．６μＳ毎に繰り返される割込み処理ＣＭ＿ＩＮＴ（図９）と、１ｍＳ毎に起動されるタイマ割込みＴＭ＿ＩＮＴ（図１０）と、を中心に構成されている。
【００８８】
＜ＭＴＵ３３の動作（図８（ａ）＞
以下、図８（ａ）に基づいて、ＭＴＵ３３の動作内容を確認する。タイマカウンタＴＣＮＴは、ＴＲＧＡ＿０のコンペアマッチによって、４５．６μＳ（＝計数クロックの１１４０個分）毎に同期してクリアされる。このクリア時に、ＣＰＵコア３０に割込みがかかり、ＡＤ変換部３３に対してＡＤ変換開始トリガが供給され、Ａ／ＤコンバータＡＤ１〜ＡＤ３が、連続スキャンモードでＡＤ変換動作を開始する。そして、ＴＲＧＡ＿０のコンペアマッチによるＡＤ変換処理が完了すると、ＣＰＵコアに対して、ＡＤ変換終了割込みが発生する。
【００８９】
なお、これらの動作に並行して、タイマカウンタＴＣＮＴのクリア後、三種類のＰＷＭ波ＰＷＭ１〜ＰＷＭ３が自動的に生成される。また、ＴＧＲＡ＿２のコンペアマッチ時にも、ＡＤ変換部３３に対してＡＤ変換開始トリガが供給され、Ａ／ＤコンバータＡＤ４〜ＡＤ６の何れかがＡＤ変換動作を開始する。そして、この場合にも、ＡＤ変換終了後に、ＣＰＵコアに対してＡＤ変換終了割込みが発生する。
【００９０】
＜ＡＤ変換終了割込みＡＤ＿ＩＮＴ＞
上記した通り、ＴＧＲＡ＿０のコンペアマッチによるＡＤ変換動作が終了するか、或いは、ＴＧＲＡ＿２のコンペアマッチによるＡＤ変換動作が終了すると、図８（ｂ）に示す割込み処理ＡＤ＿ＩＮＴが起動される。割込み処理ＡＤ＿ＩＮＴでは、先ず、管理フラグＦＬＧの値がチェックされる（ＳＴ１）。管理フラグＦＬＧは、上記した二種類のＡＤ変換終了割込みを切り分けるためのフラグであり、初期状態ではＦＬＧ＝０となっている。
【００９１】
ここで、ＦＬＧ＝０の場合とは、今回の割込み要求が、ＴＧＲＡ＿０のコンペアマッチによる、連続スキャンモードによるＡＤ変換動作が終了したことに起因することを意味する。そこで、ＦＬＧ＝０の場合には、次回のＡＤ変換開始トリガの発生条件と、シングルモードとすべき変換モードと、変換開始トリガで起動されるべきＡ／Ｄコンバータとを設定する（ＳＴ２）。
【００９２】
この実施例の場合、ＡＤ変換開始トリガの発生条件は、具体的には、ＴＧＲＡ＿２のコンペアマッチであり、シングルモードで動作させるＡ／Ｄコンバータを、ＡＤ４→ＡＤ５→ＡＤ６→ＡＤ４・・・のように、循環的に変更させる。そして、何れのＡ／Ｄコンバータを動作させるべきかは、初期値＝４の変数ｊで管理されている。したがって、これらの条件を満たすよう、ＡＤ変換部３２に適当な設定データが書込まれる。
【００９３】
以上のようにして、次回のＡＤ変換開始トリガについての初期設定が完了すると、既に完了している連続スキャンモードによるＡＤ変換動作の変換動作を取得する。具体的には、ＡＤ変換部３２のデータレジスタＡＤＤＲから、Ａ／ＤコンバータＡＤ１〜ＡＤ３による変換値ａｄ１〜ａｄ３を取得して、メモリに一時的に記憶する（ＳＴ３）。そして、管理フラグＦＬＧの値を１に書き換えて割込み処理を終える（ＳＴ４）。
【００９４】
以上、ＦＬＧ＝０の場合の処理を説明したが、ステップＳＴ１の処理において、ＦＬＧ＝１であると判定される場合には、この割込みが、３つのＡ／Ｄコンバータ（ＡＤ４〜ＡＤ６）の何れかの変換終了割込みであることになる。そこで、変数ｊで決まるＡ／ＤコンバータＡＤｊの変換値ａｄｊを、ＡＤ変換部３２のデータレジスタＡＤＤＲから取得して、メモリに一時的に記憶する（ＳＴ５）。なお、変換値ａｄ４，ａｄ５，ａｄ６が、所定個数Ｎに達する毎に、各々の平均値Σａｄ４／Ｎ，Σａｄ５／Ｎ，Σａｄ６／Ｎを算出して蓄積し、ＰＷＭデューティＮ１〜Ｎ３の更新時に（ＳＴ２２）、複数個の平均値が読み出されて、各変換値毎に全体平均値ＡＶ（ａｄ４），ＡＶ（ａｄ５），ＡＶ（ａｄ６）が算出される。なお、変換値ａｄ４，ａｄ５，ａｄ６は、各々、コイル電流の充電ピーク値Ｉｐ１，Ｉｐ２，Ｉｐ３に比例するので、以下、ＡＶ（ａｄ４），ＡＶ（ａｄ５），ＡＶ（ａｄ６）を、ＡＶ（Ｉｐ１），ＡＶ（Ｉｐ２），ＡＶ（Ｉｐ３）と表現する。なお、ＡＶは平均演算値を意味する。
【００９５】
以上のようなステップＳＴ５の処理が終われば、次に、変数ｊを４〜６の範囲で循環させて（ＳＴ６〜ＳＴ８）、管理フラグＦＬＧの値を０に書き換える（ＳＴ９）。そして、最後に、次回のＴＧＲＡ＿０のコンペアマッチ時には、ＡＤ変換開始トリガを発生させないよう、ＭＴＵ３３に適当な設定値を書込んで割込み処理を終える（ＳＴ１０）。このような処理を設けるのは、本実施例では、制御サイクルが「データ取得サイクル」と、「演算サイクル」とを繰り返すところ、ＡＤ変換終了割込みが生じる「データ取得サイクル」の次の「演算サイクル」では、ＡＤ変換処理が不要であるためである。
【００９６】
図９は、ＴＧＲＡ＿０のコンペアマッチによるＣＨ０割込み処理プログラムを示すフローチャートである。ここでも、最初に管理フラグＣＯＮＶの値がチェックされる（ＳＴ２０）。管理フラグＣＯＮＶは、現在が、「演算サイクル：ＣＯＮＶ＝１」あるか、「データ取得サイクル：ＣＯＮＶ＝０」であるかを示すフラグであり、初期値は、ＣＯＮＶ＝０に設定されている。
【００９７】
そして、ＣＯＮＶ＝０の場合には、次に、ＰＷＭデューティＮ１〜Ｎ３の更新タイミングに達しているか否かが判定される（ＳＴ２１）。なお、更新タイミングは、例えば、数秒程度に設定される。そして、更新タイミングに達している場合には、ステップＳＴ５の処理で蓄積されている平均値Σａｄ４／Ｎ，Σａｄ５／Ｎ，Σａｄ６／Ｎをメモリから読出し、各変換値毎に、全体平均値ＡＶ（Ｉｐ１），ＡＶ（Ｉｐ２），ＡＶ（Ｉｐ３）を算出して、ＰＷＭデューティＮ１〜Ｎ３を再設定する（ＳＴ２２）。
【００９８】
具体的には、全体平均値ＡＶ（Ｉｐ１），ＡＶ（Ｉｐ２），ＡＶ（Ｉｐ３）と、それまでのＰＷＭデューティＮ１，Ｎ２，Ｎ３とに基づいて、Ｎ１＊ＡＶ（Ｉｐ１），Ｎ２＊ＡＶ（Ｉｐ２），Ｎ３＊ＡＶ（Ｉｐ３）を算出し、その中央値ＭＩＤを特定する（ＳＴ２２１）。そして、特定された中央値ＭＩＤに基づいて、Ｎ１←ＭＩＤ／（Ｎ１＊ＡＶ（Ｉｐ１）），Ｎ２←ＭＩＤ／（Ｎ２＊ＡＶ（Ｉｐ２）），Ｎ３←ＭＩＤ／（Ｎ３＊ＡＶ（Ｉｐ３））の演算から、ＰＷＭデューティＮ１〜Ｎ３を更新する（ＳＴ２２２）。なお、ＰＷＭデューティＮ１〜Ｎ３の初期値は、全て１であるから、最初の更新処理では、Ｎ１←ＭＩＤ／ＡＶ（Ｉｐ１），Ｎ２←ＭＩＤ／ＡＶ（Ｉｐ２），Ｎ３←ＭＩＤ／ＡＶ（Ｉｐ３）の演算となる（図２参照）。
【００９９】
以上のようにしてＰＷＭデューティＮ１〜Ｎ３の更新が終われば、次に、ＰＷＭ用バッファに格納されている制御オン時間Ｔｏｎ（ｎ）を、ＰＷＭデューティＮ１〜Ｎ３に基づいて補正する（ＳＴ２３）。具体的にはスイッチング素子Ｑ１〜Ｑ３に対する制御オン時間を、Ｎ１＊Ｔｏｎ（ｎ），Ｎ２＊Ｔｏｎ（ｎ），Ｎ３＊Ｔｏｎ（ｎ）に補正する。
【０１００】
そして、ＭＴＵ３３の各ゼネラルレジスタに所定値を書込む（ＳＴ４）。具体的には、図６に示す通りであり、ＴＧＲＡ＿０＝１１４０，ＴＧＲＢ＿０＝Ｎ１＊Ｔｏｎ，ＴＧＲＣ＿０＝３８０，ＴＧＲＤ＿０＝３８０＋Ｎ２＊Ｔｏｎ，ＴＧＲＡ＿１＝７６０，ＴＧＲＢ＿１＝７６０＋Ｎ３＊Ｔｏｎに設定する。また、ＴＧＲＡ＿２については、その時の変数ｊの値（ｊ＝４〜６）に応じて、Ｎ１＊Ｔｏｎ，３８０＋Ｎ２＊Ｔｏｎ，７６０＋Ｎ３＊Ｔｏｎの何れかを書込む。そして、管理フラグＣＯＮＶの値を０から１に変更して割込み処理を終える（ＳＴ２５）。
【０１０１】
一方、ステップＳＴ２０の処理において、管理フラグＣＯＮＶ＝１と判定される場合には、制御オン時間Ｔｏｎの算出演算が実行される。先ず、Ａ／ＤコンバータＡＤ１，ＡＤ４の出力値ａｄ１，ａｄ４（コイルＬへの入力電流）をメモリから取得して、平均演算（ａｄ１＋ａｄ４）／２によって、制御サイクル（ｎ−１）における入力電流の平均値Ｉａｖ（ｎ−１）を算出する（ＳＴ２６）。入力電流の平均値Ｉａｖ（ｎ−１）が求まれば、回路に実装されているコイルＬ１のインダクタンス値を電流値Ｉａｖ（ｎ−１）に基づいて特定する（ＳＴ２６）。コイルＬ１は、図１１に示すように、そこに流れる直流重畳電流（平均電流）に応じて、そのインダクタンス値が変化する場合が多い。そこで、この実施例では、回路に実装されているコイルＬ１の特性を予めメモリに格納しておき、入力電流の平均値Ｉａｖ（ｎ−１）に応じたインダクタンス値を、各演算式で使用するようにしている。
【０１０２】
続いて、Ａ／ＤコンバータＡＤ２の出力値ＡＤ２（交流入力電圧Ｖａｃ（ｎ−１））をメモリから取得し、電圧予測式Ｖａｃ（ｎ）＝２＊Ｖａｃ（ｎ−１）−Ｖａｃ（ｎ−２）に基づいてＶａｃ（ｎ）を算出する（ＳＴ２７）。また、Ａ／ＤコンバータＡＤ３の出力値ＡＤ３（直流出力電圧Ｖｄｃ（ｎ−１））を取得して、Ｉａｖ（ｎ）＝β＊Ｖａｃ（ｎ）の計算によって、入力電流指令値Ｉａｖ（ｎ）を算出する（ＳＴ２８）。なお。必要な積算パラメータβの値は、図１０に示すタイマ割込み処理ＴＭ＿ＩＮＴにおいて１ｍＳ毎に更新されて適宜なワークエリアに格納されている。
【０１０３】
次に、Ａ／ＤコンバータＡＤ１からの取得値ａｄ１と、ステップＳＴ２６の処理で補正されたコイルのインダクタンス値Ｌと、ステップＳＴ２７の処理で取得された交流入力電圧値Ｖａｃ（ｎ−１）と、この制御サイクルにおける制御オン時間Ｔｏｎ（ｎ−１）と、直流出力電圧値Ｖｄｃ（ｉ）とに基づいて、（式５’）の判別式に基づいて、コイル充電開始電流Ｉｖ（ｎ−１）を算出する（ＳＴ２９）。そして、コイル充電開始電流Ｉｖ（ｎ−１）の値（正か否か）に応じて、連続モードとして制御すべきか不連続モードとして制御すべきかを決定する（ＳＴ３０）。なお、（式５’）に代えて（式５’’）の判別式を用いても良いのは、前述の通りである。
【０１０４】
ここでＩｖ（ｎ−１）≦０であって不連続モードであった場合には、Ｉｖ（ｎ−１）＝０に設定すると共に、（式９’）または（式９’’）の演算式に基づいて制御オン時間Ｔｏｎ（ｎ）を算出する（ＳＴ３１）。一方、Ｉｖ（ｎ−１）＞であって連続モードであった場合には、（式１４’）（式１４’’）の演算式に基づいて制御オン時間Ｔｏｎ（ｎ）を算出する（ＳＴ３２）。
【０１０５】
そして、算出された制御オン時間Ｔｏｎ（ｎ）について、それが制御上限値と制御下限値を超えていないことを条件に、次回の制御サイクル（ｎ）の制御オン時間としてＰＷＭ用バッファ領域にＴｏｎ（ｎ）の値を設定する（ＳＴ３３）。このようにしてＰＷＭ用バッファに書込まれたＴｏｎ（ｎ）は、次の制御サイクル開始時の割込み時に使用され、ＭＴＵ３３の各ジェネラルレジスタに、適当な設定値が書込まれる。
【０１０６】
但し、算出された制御オン時間Ｔｏｎ（ｎ）が、上限値か下限値を超えている場合には、ＰＷＭ用バッファに、それぞれ制御上限値又は制御下限値を設定する。上限値は、制御周期Ｔに対してＴ／３であり、この場合にはＴ／３未満の値である制御上限値を使用する。このような制限を設けるのは、もしＴｏｎ≧Ｔ／３の状態で動作させると、複数の昇圧チョッパが重複して動作することになり、発熱の抑制など本発明の目的が阻害されるからである。
【０１０７】
以上の処理が終われば、管理フラグＣＯＮＶを０に設定して（ＳＴ３４）、次回のＴＧＲＡ＿０のコンペアマッチ時のＡＤ変換開始トリガを発生させるべく各種の設定を行う（ＳＴ３５）。これは図８のステップＳＴ１０の処理に対応するものであり、ステップＳＴ２６〜ＳＴ３３の処理を実行する「演算サイクル」に続いて、「データ取得サイクル」に移行させるためである。具体的には、（ａ）ＴＧＲＡ＿０のコンペアマッチによってＡＤ変換開始トリガを発生させること、（ｂ）ＡＤ変換開始トリガに起因して、３つのＡ／ＤコンバータＡＤ１〜ＡＤ３を連続スキャンモードで動作させること、（ｃ）ＡＤ変換終了後に変換終了割込みを発生させることなどが設定される。
【０１０８】
＜タイマ割込みＴＭ＿ＩＮＴ＞
続いて、上記したＡＤ変換終了割込みＡＤ＿ＩＮＴとは独立して、１ｍＳ毎に開始されるタイマ割込みＴＭ＿ＩＮＴについて図１０のフローチャートに基づいて説明する。
【０１０９】
タイマ割込みＴＭ＿ＩＮＴでは、先ず、Ａ／ＤコンバータＡＤ３の出力であるＶｄｃ（ｉ）を取得する（ＳＴ３０）。なお、Ａ／ＤコンバータＡＤ３は４５．６μＳ毎にＡＤ変換動作を実行するが、タイマ割込みＣＭ＿ＩＮＴでは、ＡＤ変換された出力直流電圧を１ｍＳ毎に取得することになる。以下、取得した直流電圧をＶｄｃ（ｉ）と表現する。
【０１１０】
次に、ＳＵＭ←ＳＵＭ＋Ｖｄｃ（ｉ）の演算を実行して、取得した出力直流電圧Ｖｄｃ（ｉ）の値をワークエリアの平均算出バッファＳＵＭに加算する（ＳＴ３１）。また、Ａ／ＤコンバータＡＤ２の出力である交流入力電圧Ｖａｃ（ｉ）を取得して（ＳＴ３２）、交流入力電圧Ｖａｃ（ｉ）と、メモリに保存されている波高最大値Ｖａｃ（ｐｋ）とを対比する（ＳＴ３３）。
【０１１１】
そして、Ｖａｃ（ｉ）＞Ｖａｃ（ｐｋ）であれば、Ｖａｃ（ｐｋ）←Ｖａｃ（ｉ）の演算によって、メモリに記憶されている波高最大値Ｖａｃ（ｐｋ）の値を更新する（ＳＴ３４）。このようにして交流入力電圧の波高値Ｖａｃ（ｐｋ）を求めた後、カウンタＣＴをデクリメント処理（−１）し（ＳＴ３５）、カウンタ値ＣＴがゼロか否かを判定する（ＳＴ３６）。
【０１１２】
ここで、カウンタ値ＣＴがＣＴ＝０となると、平均算出バッファＳＵＭの値を１／５００倍することで、出力直流電圧Ｖｄｃ（ｉ）の平均値を求める（ＳＴ３７）。そして、この平均値によって直流出力電圧Ｖｄｃを特定する（ＳＴ３８）。
【０１１３】
このようにして直流出力電圧Ｖｄｃが求めれば、平均算出バッファＳＵＭとカウンタＣＴの値を初期設定し（ＳＴ３９）、Ｖｏ←Ｖａｃ（ｐｋ）＋αの演算によって出力直流電圧の基準値（目標値）Ｖｏを算出する（ＳＴ４０）。αは、入力交流電圧の波高値Ｖａｃ（ｐｋ）と比較した場合の、コイルＬにおける昇圧分である。そして、出力基準電圧Ｖｏと、計測値から得られる出力平均電圧Ｖｄｃとの差を算出する（ＳＴ４１）。具体的には、Ｖｅｒｒ（ｉ）←Ｖｏ−Ｖｄｃの演算を行う。
【０１１４】
以上の結果に基づき、ＰＩ制御による指令値βを算出してタイマ割込み処理ＣＭ＿ＩＮＴを終える（ＳＴ４２）。ここで、指令値βの算出は、β＝Ｖｅｒｒ（ｉ）＊Ｋｐ＋｛Ｖｅｒｒ（ｉ）＊Ｋｉ＋Ｖｅｒｒ（ｉ−１）’＊Ｋｉ｝の演算式によるが、Ｖｅｒｒ（ｉ−１）’＊Ｋｉは、前回（ｉ−１）の積分制御値であって、Ｖｅｒｒ（ｉ−１）’＊Ｋｉ＝Ｖｅｒｒ（ｉ−１）＊Ｋｉ＋Ｖｅｒｒ（ｉ−２）’＊Ｋｉとして算出されていた値である。
【０１１５】
以上の通り、実施例に係るデジタルコンバータ１では、３つの昇圧チョッパ４ａ〜４ｃが並列接続され、各スイッチング素子Ｑ１〜Ｑ３が、順次、遅れてＯＮ動作するので、スイッチング素子を分散して実装することによって発熱を効果的に分散することが可能となる。しかも、各スイッチング素子Ｑ１〜Ｑ３の特性に合わせて制御オン時間Ｎ１＊Ｔｏｎ〜Ｎ３＊Ｔｏｎが適宜に増減されるので、各スイッチング素子の能力を最大限に利用することができる。また、各スイッチング素子に限らず、回路パターンや配線の能力を最適に活用できるので、設計自由度を高めることができる。
【０１１６】
また、入力電流のリップルが低減されるので、入力側のコンデンサＣｉｎを小型化することもできる。図１２は、この関係を図示したものであり、各コイルＬ１〜Ｌ３の電流ＩＬ１〜ＩＬ３と、これらの総和である整流回路２の出力電流ＩＡＬＬとの関係を示している。
【０１１７】
ところで、上記の実施例では、各スイッチング素子Ｑ１〜Ｑ３のコレクタ電流を、シャント抵抗Ｒ１〜Ｒ３によって検出したが、各スイッチング素子のＶｃｅ−Ｉｃ特性を活用すれば、シャント抵抗Ｒ１〜Ｒ３を省略することもできる。
【０１１８】
図１４は、この変形例を示す回路図であり、各スイッチング素子Ｑ１〜Ｑ３のＶｃｅ（コレクタ−エミッタ電圧）が、各ＰＷＭ波ＰＷＭ１〜ＰＷＭ３の立下り時に、Ａ／ＤコンバータＡＤ４〜ＡＤ６によって計測される。また、スイッチング素子Ｑ１のＶｃｅ１については、ＰＷＭ１波の立上り時にも、Ａ／ＤコンバータＡＤ１によって計測され、コイル充電開始電流Ｉｖ（ｎ−２）を特定するようになっている。
【０１１９】
図１５に示すように、ＩＧＢＴのゲート端子とエミッタ端子間に加えるゲート電圧Ｖｇｅに対応して飽和特性が相違するものの、そのスイッチング素子にとっての低電流領域（０〜３０Ａ程度）では、ほぼ直線的なＶｃｅ−Ｉｃ特性を有している。そして、このＶｃｅ−Ｉｃ特性の素子間のバラツキは、比較的少ないことが実験的に確認されており、また、素子間の特性のバラツキは、製品出荷時に、適切に校正することも可能である。
【０１２０】
そこで、図１４の実施例では、各ＰＷＭ波ＰＷＭ１〜ＰＷＭ３の立下り時に、スイッチング素子Ｑのコレクタ−エミッタ間電圧Ｖｃｅ１〜Ｖｃｅ３を計測し、その計測値に基づいて変換テーブルＴＢＬを参照して、各タイミングでのコイル充電ピーク電流Ｉｐ１〜Ｉｐ３を特定している。そのため、シャント抵抗が不要となり、製造コストを抑制できると共に、無駄な消費電力の問題が解消される。
【０１２１】
図１４に示す通り、各コレクタ−エミッタ電圧Ｖｃｅ１〜Ｖｃｅ３は、信号入力部ＩＮ１〜ＩＮ３を通してＡ／ＤコンバータＡＤ１、ＡＤ４〜ＡＤ６に供給されるが、信号入力部ＩＮ１〜ＩＮ３には遅延回路ＤＬＹが設けられて、入力信号（Ｖｃｅ１〜Ｖｃｅ３）をＴｓだけ遅延させている（図１４（ｂ）参照）。この遅延時間Ｔｓは、制御サイクル開始時から入力信号の取得時までに生じる時間遅れＴｓに一致させているので、この実施例では、ＡＤコンバータＡＤ１の出力値ａｄ１に基づいて変換テーブルＴＢＬを参照すれば、コイル充電開始電流Ｉｖ（ｎ−２）を特定することができ、下記（式３）によって、次サイクルのコイル充電開始電流Ｉｖ（ｎ−１）を推定することができる。
Ｉｖ（ｎ−１）＝Ｉｖ（ｎ−２）＋Ｔ／Ｌ×［｛Ｖａｃ（ｎ−１）−Ｖｄｃ（ｎ−１）｝＋Ｔｏｎ（ｎ−１）×Ｖｄｃ（ｎ−１）］・・・（式３）
【０１２２】
また、この実施例では、スイッチング素子Ｑ１については、ＰＷＭ１波の立上り時と立下り時に、コレクタ−エミッタ電圧Ｖｃｅ１を測定している。そのため、ＰＷＭ１波の立上り時の出力値ａｄ１に基づいて変換テーブルＴＢＬを検索すれば、コイル充電開始電流ＩＳＴが特定され、ＰＷＭ波１の立下り時の出力値ａｄ４に基づいて変換テーブルＴＢＬを検索すれば、コイルピーク電流ＩＥＤが特定される（図１４（ｂ）参照）。
【０１２３】
したがって、コイルのインダクタンス値Ｌを、Ｌ＝Ｖａｃ×Ｔｏｎ／（ＩＥＤ−ＩＳＴ）と算出することができ、このインダクタンス値を上記の（式３）に代入することで正確な演算が可能となる。また、制御オン時間Ｔｏｎの算出においても、Ｌ＝Ｖａｃ×Ｔｏｎ／（ＩＥＤ−ＩＳＴ）の演算で算出されるインダクタンス値を使用することができる。
【０１２４】
なお、Ａ／ＤコンバータＡＤ４〜ＡＤ６からの計測値ａｄ４〜ａｄ６から特定されるコイル充電ピーク電流Ｉｐ１〜Ｉｐ３に基づいて、ＰＷＭデューティＮ１〜Ｎ３を決定し、各スイッチング素子Ｑ１〜Ｑ３の制御オン時間を、Ｎ１＊Ｔｏｎ，Ｎ２＊Ｔｏｎ，Ｎ３＊Ｔｏｎとするのは、最初の実施例の場合と同様である。
【０１２５】
以上、本発明の２つの実施例について詳細に説明した。しかし、具体的な記載内容は特に本発明を限定するものではなく、適宜に変更可能である。
【０１２６】
例えば、各実施例ではスイッチング素子を３個としたが、何らこの個数の限定されるものではなく、２個又は４個以上であっても良い。また、各コイルＬ１〜Ｌ３に対応して１個のスイッチング素子を設けたが、コイル充電電流を複数のスイッチング素子に分流させても良い。
【０１２７】
図１３は、コイルＬの充電電流を、２個のスイッチング素子Ｑ１，Ｑ２に分流させる実施例であり、統計的に特定される二つの素子のコイル充電ピーク電流Ｉｐ１、Ｉｐ２に基づいて、ＰＷＭデューティＮ１，Ｎ２が決定される。具体的には、例えば、スイッチング素子Ｑ１を基準にして（Ｎ１＝１）、Ｎ２＝Ｎ１＊Ｉｐ１／Ｉｐ２に設定される。なお、スイッチング素子Ｑ２を基準にする場合（Ｎ２＝１）には、Ｎ１＝Ｎ２＊Ｉｐ２／Ｉｐ１に設定される。なお、３個以上のスイッチング素子が使用される場合には、中央値ＭＩＤを基準とすれば良い。
【０１２８】
ところで、ＰＷＭデューティＮ１〜Ｎｉの決定に、必ずしも、スイッチング素子のコイル充電ピーク電流Ｉｐを使用する必要はなく、スイッチング素子の温度を直接的に計測しても良い。この温度計測にはサーミスタなどの専用素子を使用しても良いし、スイッチング素子に内蔵されているダイオードなどの温度検出素子を活用しても良い。
【０１２９】
図１６は、ダイオードによる温度検出を説明する図面である。この内蔵ダイオードは、図示のような温度Ｔｃｈ［℃］−順方向電圧ＶＦ特性を有しているので、順方向電圧ＶＦを把握することで、各スイッチング素子の発熱状態を把握することが可能となる。そこで、発熱の高いスイッチング素子のＰＷＭデューティＮｉを、Ｎｉ＜１に設定する一方、発熱の少ないスイッチング素子のＰＷＭデューティＮｊを、Ｎｊ＞１に設定することで、各素子に対応した動作を実現することができる。
【０１３０】
また、上記した各実施例では、運転動作中に、ＰＷＭデューティＮｉを変更しているが、工場出荷時のテスト運転に基づいて、ＰＷＭデューティＮｉを固定的に決定してＲＯＭに書込んでも良い。また、電源投入毎にテスト運転を実行してＰＷＭデューティＮｉを固定的に決定しても良い。
【図面の簡単な説明】
【０１３１】
【図１】実施例に係るデジタルコンバータを示す回路ブロック図である。
【図２】本発明の動作原理を説明する図面である。
【図３】制御周期とコイルの充放電動作との関係を説明するタイムチャートである。
【図４】ワンチップマイコンの内部構成を示すブロック図である。
【図５】ＡＤ変換部の内部構成を示すブロック図である。
【図６】ＭＴＵの内部構成を示すブロック図である。
【図７】ＭＴＵの動作を説明するタイムチャートである。
【図８】ＭＴＵとＡＤ変換割込みの動作内容を示すフローチャートである。
【図９】コンペアマッチによるＣＨ０割込みの動作内容を示すフローチャートである。
【図１０】タイマ割込みの動作内容を示すフローチャートである。
【図１１】コイルのインダクタンス値と平均電流との関係を示す特性図である。
【図１２】リップルの低減を説明する図面である。
【図１３】スイッチング素子を並列接続する回路例である。
【図１４】変形例に係るデジタルコンバータを示す回路ブロック図である。
【図１５】ＩＧＢＴのＶｃｅ−Ｉｃ特性を図示したものである。
【図１６】発熱検出用のダイオードの特性を図示したものである。
【符号の説明】
【０１３２】
Ｌ１〜Ｌ３    コイル
Ｑ１〜Ｑ３    スイッチング素子
１            デジタルコンバータ
２            整流回路
３            コンピュータ回路（ワンチップマイコン）
４ａ〜４ｃ    昇圧チョッパ
【図１】
2009261079.tif 000003
【図２】
2009261079.tif 000004
【図３】
2009261079.tif 000005
【図４】
2009261079.tif 000006
【図５】
2009261079.tif 000007
【図６】
2009261079.tif 000008
【図７】
2009261079.tif 000009
【図８】
2009261079.tif 000010
【図９】
2009261079.tif 000011
【図１０】
2009261079.tif 000012
【図１２】
2009261079.tif 000013
【図１３】
2009261079.tif 000014
【図１４】
2009261079.tif 000015
【図１５】
2009261079.tif 000016
【図１６】
2009261079.tif 000017
【図１１】
2009261079.tif 000018