負荷に供給する電力として、正の半波の数と負の半波の数の合計がそれぞれ異なる複数の通電パターンから所定の周期ごとに1つの通電パターンを選択する選択部と、前記選択部が選択した通電パターンにしたがって入力交流電圧に含まれている正の半波の数と負の半波の数を調整して出力交流電圧を生成する生成部と、前記出力交流電圧によって前記負荷に流れる交流電流を検出する電流検出器と、前記入力交流電圧の周期より長い時間において、前記正の半波の数と前記負の半波の数が同数となるタイミングごとに、前記電流検出器の検出値の平均値をオフセットとして決定するオフセット決定部と、前記電流検出器の検出値から前記オフセットを減算する減算部とを備え、前記選択部は、前記電流検出器の検出値から前記オフセットを減算することで得られた電流値が所定の許容値を超えないように前記複数の通電パターンから1つの通電パターンを選択することを特徴とする電流制御回路。前記複数の通電パターンにおける各通電パターン内での正の半波の数と負の半波の数が同数であることを特徴とする請求項1に記載の電流制御回路。前記正の半波の数と前記負の半波の数が同数となるタイミングは、前記周期の整数倍の周期ごとのタイミングであることを特徴とする請求項2に記載の電流制御回路。前記オフセット決定部は、前記周期の整数倍の周期に同期して、前記電流検出器の検出値の平均値を決定することを特徴とする請求項2または3に記載の電流制御回路。前記正の半波の数を計数する第1計数部と、前記負の半波の数を計数する第2計数部と、前記正の半波の数と前記負の半波の数が同数かどうかを判定する判定部と、をさらに備え、前記判定部が、前記正の半波の数と前記負の半波の数が同数になったと判定するたびに、前記オフセット決定部は前記オフセットを決定することを特徴とする請求項1に記載の電流制御回路。前記周期ごとの正の交流電流の通電時間と負の交流電流の通電時間が等しいことを特徴とする請求項1ないし5のいずれか1項に記載の電流制御回路。前記周期ごとの正の交流電流の導通角と負の交流電流の導通角が等しいことを特徴とする請求項1ないし5のいずれか1項に記載の電流制御回路。前記電流検出器の検出値から前記オフセットを減算して前記負荷に流れる交流電流の瞬時値を求め、前記周期の整数倍の周期ごとに、前記瞬時値を実効値に変換する変換部と、前記実効値と前記許容値とを比較する比較部と、をさらに備え、前記選択部は、前記実効値が前記許容値を越えないように、前記通電パターンを選択することを特徴とする請求項1ないし7のいずれか1項に記載の電流制御回路。請求項1ないし7のいずれか1項に記載された電流制御回路と、前記電流制御回路によって制御された電流を供給されて動作してトナー像を記録紙に定着させる前記負荷である定着器と、前記定着器の温度を検出する温度検出器と、を備え前記電流制御回路が備える前記選択部は、前記温度検出器が検出した温度の目標温度に対する差分に対応した1つの通電パターンを前記複数の通電パターンから選択することを特徴とする画像形成装置。ところで、セラミックヒーターの電力を変化させる方法としては、入力される交流電圧の半波を単位として通電と非通電を組合せてなる複数の通電パターンから1つの通電パターンを所定周期毎に選択するという方法が用いられる。通電パターンのそれぞれでは出力交流電圧に寄与する半波の数が異なる。そのため、どの通電パターンを選択するかでセラミックヒーターに供給する電力を変化させることができる。また、各通電パターンに含まれる正の半波と負の半波の数を同数とすることで正負のバランスが維持される。さらに、交流電流検出回路が検出した電流の値が所定値を超えないように、通電パターンが選択される。このような定着器の温度制御に対して特許文献1を採用すると次のような問題が発生する。通電パターンが、入力交流電圧の周期の少なくとも2倍以上かつ整数倍の周期をパターン周期とし、パターン周期の中において半波単位で通電/非通電を組み合わせて定義されたと仮定する。この場合、パターン周期では正の半波と負の半波の数が等しくなるものの、入力交流電圧の周期単位では必ずしも正負対称な電流になるとは限らない。よって、特許文献1のように、入力交流電圧の周期を基準としてオフセットを検出して補正しようとすると、正確にオフセットを補正できないどころか、かえって検出結果の精度を低下させてしまうおそれがある。そこで、本発明は、従来よりも正確にオフセットを補正することを目的とする。本発明は、負荷に供給する電力として、正の半波の数と負の半波の数の合計がそれぞれ異なる複数の通電パターンであって、各通電パターン内での正の半波の数と負の半波の数が同数である、前記複数の通電パターンから所定の周期ごとに1つの通電パターンを選択する選択部と、前記選択部が選択した通電パターンにしたがって入力交流電圧に含まれている正の半波の数と負の半波の数を調整して出力交流電圧を生成する生成部と、前記出力交流電圧によって前記負荷に流れる電流を検出する電流検出器と、前記入力交流電圧の周期より長い時間において、前記正の半波の数と前記負の半波の数が同数となるタイミングごとに、前記電流検出器の検出値の平均値をオフセットとして決定するオフセット決定部と、前記電流検出器の検出値から前記オフセットを減算する減算部とを備え、前記選択部は、前記電流検出器の検出値から前記オフセットを減算することで得られた電流値が所定の許容値を超えないように前記複数の通電パターンから1つの通電パターンを選択することを特徴とする電流制御回路を提供する。本発明によれば、正の半波の数と負の半波の数が同数となるタイミングごとに、オフセットを決定する。なお、あるタイミングと次のタイミングとの時間差は入力交流電圧の周期より長い。このように、正の通電時間と負の通電時間が等しくなる期間において検出した値からオフセットが求められるため、オフセットが従来よりも正確になる。たとえば、半波の数を調整することで定着器の温度制御を行う画像形成装置では、電流の検出値が正確になるため、定着器の性能を向上させることが可能になる。[実施形態1]図1は実施形態における画像形成装置の概略構成図である。画像形成装置10は、Yイエロー、Mマゼンタ、Cシアン、Kブラックに対応した4つの画像形成部を備えている。画像形成部は、感光体ドラム11を備えている。感光体ドラム11は反時計回りに回転する。1次帯電ローラー12は、感光体ドラム11の表面を均一に帯電させる。露光部13は、均一に帯電した感光体ドラム11yの表面を画像データに応じて露光し、静電潜像を形成する。現像スリーブ14は、感光体ドラム11の静電潜像をトナーにより現像し、トナー像を形成する。感光体ドラム11の表面は中間転写ベルトの16と接する。1次転写ローラー15に電圧が加えられることにより、感光体ドラム11の表面にあったトナーが中間転写ベルト16の表面に転写される。イエロー、マゼンタ、シアン、ブラックの各トナー像が順番に中間転写ベルト16の表面に転写される。中間転写ベルト16上のトナー像は、2次転写内ローラー17と2次転写外ローラー18を通過する際に用紙23の表面に2次転写される。用紙23は、トナー像の形成タイミングに同期して、用紙カセット20から給紙され。用紙23は、定着器21において加熱および加圧され、トナー像を定着される。図2は実施形態における定着器の概略構成図である。定着器21は、セラミックヒーター201、定着フィルム202、加圧ローラー203、U字型板金206、サーミスタ205、ホルダ207を備えている。セラミックヒーター201はセラミックに発熱パターンを印刷して形成されたヒーターである。セラミックヒーター201は、たとえば、1秒間で50°Cほど上昇する極めて応答性の高いヒーターである。定着フィルム202は、たとえば、厚さが30μmから50μmの金属を基材とし、その上に300μmほどのゴム層を設け、その全体にフッ素表面処理を施して形成されたフィルムである。定着フィルム202は、熱容量が極めて小さく、加圧ローラー203とのニップ部接触部のみセラミックヒーター201の熱を用紙23へ伝える。加圧ローラー203は駆動力を定着フィルム202にニップ部を通じて伝えることによって矢印方向に定着フィルム202を回転させる。U字型板金206は定着フィルム202を内側から加圧ローラー203に加圧する弾性部材である。サーミスタ205は定着器21の温度を検出する温度検出器として機能する。サーミスタ205はセラミックヒーター201の中央部に配置され、セラミックヒーター201の温度が目標温度となるように制御するためにセラミックヒーター201の温度を検出する。図3は実施形態におけるセラミックヒーター201の駆動および制御を行うヒーター制御回路の構成図である。ヒーター制御回路300はセラミックヒーター201に供給される電流を制御する電流制御回路として機能する。また、定着器21は、電流制御回路によって制御された出力交流電圧を供給されて動作してトナー像を記録紙に定着させる定着器負荷である。ヒーター制御回路300は商用電源等の交流電源350、セラミックヒーター201およびCPU301と接続されている。CPU301は画像形成装置10及びセラミックヒーター201の温度を制御する。たとえば、CPU301は温度検出器が検出した温度の目標温度に対する差分に対応した1つの通電パターンを複数の通電パターンから選択する選択部として機能する。AD変換器309はセラミックヒーター201の温度を検出しているサーミスタ205の検出信号をデジタル信号に変換してCPU301へ出力する。交流電源350とセラミックヒーター201の間にはトライアック302が接続されている。フォトトライアックカプラ303はトライアック302のゲートに接続されている。ゼロクロス検知回路304は交流電源350の電圧が0V付近のときにHレベルの信号をCPU301へ出力し、それ以外の電圧のときにLレベルの信号をCPU301へ出力する。ヒーター制御回路300の入力部には電流検出回路306が備えられ、ヒーター制御回路300に流れる電流を検出している。電流検出回路306は、出力交流電圧によって負荷に流れる交流電流を検出する電流検出器の一例である。電流検出回路306は、ホール素子などを用いた電流検出センサー305、この電流検出センサー305の出力を増幅する増幅器307、増幅器307の出力信号をデジタル値へ変換してCPU301へ出力するAD変換器308を備えている。商用電源等の交流電源350は、セラミックヒーター201へ電力を供給することによりセラミックヒーター201を発熱させる。このセラミックヒーター201への電力供給は、トライアック302による導通、非導通で行われる。また、フォトトライアックカプラ303は、1次と2次間の絶縁距離を確保するデバイスであるとともにトライアック302のゲート信号のスイッチとして機能する。フォトトライアックカプラ303は、その内部に受光素子と発光素子を備えている。フォトトライアックカプラ303は、CPU301が出力する命令にしたがって内部の発光素子に通電する。発光素子が発光することにより受光素子が通電状態となる。受光素子の出力信号がゲート信号としてトライアック302に入力されている。よって、ゲート信号がオン通電状態となると、トライアック302がオンとなる。逆にCPU301がフォトトライアックカプラ303の発光素子の通電を停止させると、トライアック302がオンからオフに切り替わる。図4を用いて実施形態における波数制御について説明する。図4において、実線は通電される半波を示し、波線は通電されない半波を示している。半波の通電と非通電は、スイッチとして機能するトライアック302によって実現される。CPU301はゼロクロス検知回路304からのゼロクロス信号に従って交流電源350の半波単位でフォトトライアックカプラ303を介してトライアック302を導通オンさせたり、非導通オフさせたりしている。本実施形態では、図4に示すように14個の半波により1ブロックとしている。セラミックヒーター201に供給される電力は、1ブロック内の半波をどれだけ通電させるかに依存している。図4に示した例では、通電する半波の数がそれぞれ異なる8つの通電パターンが示されている。各通電パターンにおいて、正の半波の数と負の半波の数は同数である。パターン0では、通電する半波の数がゼロである。パターン1ないしパターン7では、14個のある半波のうち1番目の半波を必ずオンとしている。また、パターン1では通電される正の半波と負の半波の数はそれぞれ1個ずつである。パターン2では、通電される正の半波の数と負の半波の数はそれぞれ2個ずつである。このように、パターンXXは0から7までの整数における通電される正の半波の数と負の半波の数はそれぞれX個ずつであり、全体では2X個の半波が通電される。定着器の制御においては、CPU301は、定着器の温度に応じて複数の通電パターンから1つの通電パターンを選択する。つまり、CPU301は、負荷に供給する電力として、正の半波の数と負の半波の数の合計がそれぞれ異なる複数の通電パターンから所定のパターン周期ごとに1つの通電パターンを選択する選択部として機能する。また、トライアック302やフォトトライアックカプラ303は、選択部が選択した通電パターンにしたがって入力交流電圧に含まれている正の半波の数と負の半波の数を調整して出力交流電圧を生成する生成部として機能する。図5が示すように、パターン1の電流をIs1とすると、パターンXX=0、1、2、3、4、5、6、7の電流はX×Is1となる。なお、交流電源350が供給する電圧は一定と仮定している。CPU301はサーミスタ205の温度検出結果に応じて通電パターンを使い分ける。たとえば、CPU301は、目標温度に対する検出温度の差が大きければ電力が多い通電パターンを選択し、目標温度に対する検出温度の差が小さければ電力が少ない通電パターンを選択する。また、CPU301は、目標温度を検出温度が超えていればパターン0を選択することで、セラミックヒーター201への電力の供給を停止する。セラミックヒーター201の供給電力に対する応答性が極めて高ければ、1ブロック中においてできるだけ一様な間隔で半波を通電してもよい。そのため、図4に示したように、t10からt12までセラミックヒーター201への供給電力が概略一様になるように、前半t10からt11と後半t11からt12では、通電される半波の数を同数にしている。図6を用いて、パターン1からパターン3へ通電パターンを切り替えたときの各信号について説明する。図6においては、上から順に、交流電源350が出力する交流電圧、ゼロクロス信号、パターン周期、トライアック302の動作状態、セラミックヒーター201に供給される電流を示している。交流電圧が0V付近になるとゼロクロス検知回路304がゼロクロス信号をCPU301に出力する。CPU301はゼロクロス信号に含まれるパルスの数をカウントし、14パルス毎に1つの通電パターンの時間長に相当するパターン周期信号を生成する。CPU301は、t0からt1まではパターン1を選択し、パターン1に相当するトライアック-ON信号をフォトトライアックカプラ303に出力する。CPU301は、t1からt2までパターン3に相当するトライアック-ON信号をフォトトライアックカプラ303に出力する。その結果、セラミックヒーター201には図6で示す電流が流れることになる。図7を用いて定着器の基本的な温度制御処理について説明する。図7のフローチャートの処理はCPU301が実行する。S701で、CPU301は、通電パターンとしてパターン0を選択するとともに、電流検出回路306により検出された電流の実効値Isを0に初期化する。S702で、CPU301は、パターン周期信号が0から1へ変化したかどうかを判定する。図6に示したように、パターン周期信号は、CPU301自身が予め定められたパターン周期にしたがって発生する周期的な信号である。図6を用いて説明したように、CPU301は、カウンタを用いてゼロクロス信号パルスの数をカウントしている。CPU301は、カウンタのカウント値が14になると、パルス状のパターン周期信号を1つ出力するとともに、カウンタをゼロにリセットする。CPU301は、パターン周期信号が0から1へ変化したことを検出すると、S703に進む。S703で、CPU301は、電流の実効値Isの読取許可フラグが1になっているかどうかを判定する。読取許可フラグがゼロのときは実効値Isの演算が完了しておらず、読取許可フラグが1のときは実効値Isの演算が完了していることを示す。後述するように、CPU301は、実効値Isの演算が完了すると、読取許可フラグをゼロから1に変更する。S704で、CPU301は、予め演算されてメモリに保持されている電流の実効値Isを読み取る。CPU301は、電流の実効値Isを読み取った後、S705で、読取許可フラグをゼロに変更する。S706で、CPU301は、電流の実効値Isが予め決められていた最大許容電流Imax以下かどうかを判定する。この判定を行いながら通電パターンを選択することで、定着器を保護することができる。このように、CPU301は、電流検出器の検出値からオフセットを減算することで得られた電流値が所定の許容値を超えないように複数の通電パターンから1つの通電パターンを選択する選択部として機能する。また、CPU301は、実効値と許容値とを比較する比較部として機能している。実効値Isが最大許容電流Imax以下であればS707に進み、実効値Isが最大許容電流Imaxを超えていればS713に進む。S713で、CPU301は、通電パターンを現在のパターンよりも電力が1段階少ないパターンに変更する。たとえば、CPU301は、現在の通電パターンがパターンXであれば、パターンX-1に変更する。その後、S702に戻る。S707で、CPU301は、検出温度Tと目標温度Toを比較し、検出温度Tが目標温度Toを超えているか否かを判定する。検出温度Tが目標温度Toを超えていればS708に進み、検出温度Tが目標温度Toを超えていなければS709に進む。S708で、CPU301は、現在の通電パターンがパターン0かどうかを判定する。現在の通電パターンがパターン0でなければ上述したS713に進み、現在の通電パターンがパターン0であればS714に進む。S714で、CPU301は、通電パターンを変更せずに、そのままパターン0を維持する。これは、パターン0が、最も電力の小さな通電パターンだからである。その後、S702に戻る。S709で、CPU301は、検出温度Tが目標温度よりも低いかどうかを判定する。検出温度Tが目標温度よりも低ければS710に進み、検出温度Tが目標温度よりも低くなければS714に進む。S710で、CPU301は、現在の通電パターンがパターン0以外かどうかを判定する。現在の通電パターンがパターン0以外であればS711に進み、現在の通電パターンがパターン0であればS715に進む。S715で、CPU301は、通電パターンを電力が1段階多い通電パターンであるパターン1に変更する。その後、S702に戻る。S711で、CPU301は、現在の通電パターンがパターン7かどうかを判定する。現在の通電パターンがパターン7であれば上述したS714に進む。つまり、パターン7がそのまま維持される。一方、現在の通電パターンがパターン7でなければS712に進む。S712で、CPU301は、通電パターンを1段階上の通電パターンに変更したと仮定したときの電流の実効値Isが最大許容電流値Imaxを超えてしまうかどうかを判定する。たとえば、パターンXを1段階上のパターンX1に変更したと仮定したときの電流の実効値IsX1は、Is1×X1である。なお、IsX1=ISX×X1/Xでもある。実効値IsX1が最大許容電流値Imaxを超えてしまうのであればS714に進み、CPU301は、現在の通電パターンを維持する。一方、実効値IsX1が最大許容電流値Imaxを超えないのであればS715に進み、CPU301は、通電パターンをパターンX1に切り替える。図8を用いて、パターン周期毎の電流の実効値Isの演算方法とオフセット補正方法について説明する。たとえば、電流のサンプリング周波数は約18kHzであり、演算用のクロックは約20MHzである。このように、演算用クロックとしては、サンプリング周期の間に各演算を終了させるに十分なクロックが設計上選択されている。図8のフローチャートの処理はCPU301が実行する。S801で、CPU301は、オフセットio、電流の積分値和S、サンプル数nを0に初期化する。S802で、CPU301は、パターン周期信号が0から1へ変化したかどうかを判定する。パターン周期信号が0から1へ変化するとS803に進む。S803で、CPU301は、サンプリング周期が到来したかどうかを判定する。CPU301は、サンプリングクロックを発生するクロック発生部を備えており、クロック発生部が発生するクロックの数を監視している。CPU301は、クロックの数がサンプリング周期に相当する数になると、サンプリング周期が到来したと判定する。サンプリング周期が到来すると、S804に進む。S804で、CPU301は、サンプル数nを1つインクリメントする。つまり、変数nにn1が代入される。S805で、CPU301は、電流検出回路306を使用して電流の瞬時値inをサンプリングする。S806で、CPU301は、電流の瞬時値inを積分して積分値Sを算出する。S807で、CPU301は、電流の瞬時値inからオフセットioを減算し、実効値Isを求めるための瞬時値Inを算出するIn=in-io。CPU301は、電流検出器の検出値からオフセットを減算する減算部として機能する。なお、この減算処理がオフセット補正処理に相当する。S808で、CPU301は、パターン周期信号が0から1に変化したかどうかを判定する。これは、パターン周期の整数倍この例では1倍の周期に同期して、電流検出器の検出値の平均値を決定するためである。パターン周期信号が0から1に変化していなければS803に戻り、CPU301は、S803からS808を繰り返す。一方、パターン周期信号が0から1に変化すると、S809に進む。S809で、CPU301は、瞬時値Inを実効値Isに変換する。このようにCPU301は電流検出器の検出値からオフセットを減算して負荷に流れる交流電流の瞬時値を求め、パターン周期の整数倍の周期ごとに、瞬時値を実効値に変換する変換部として機能している。S810で、CPU301は、読取許可フラグを0から1へ変化させる。S811で、CPU301は、積分値Sをサンプル数nで除算して平均値を算出する。この平均値が新規のオフセットioとなる。このように、CPU301は、入力交流電圧の周期より長い時間において、正の半波の数と負の半波の数が同数となるタイミングごとに、電流検出器の検出値の平均値をオフセットとして決定するオフセット決定部として機能する。S812で、CPU301は、積分値Sとサンプル数nをそれぞれゼロにリセットする。上記の各ステップを繰り返すことによって温度ドリフト等で発生したオフセットioを補正した高精度な実効値Isが求められる。さらに、最大許容電流Imaxを超えない範囲で通電パターンを選択することで、定着器21を破損することなく、定着器21の能力を最大限に引き出すことも可能となる。このように、実施形態1では、1つの通電パターンあたりの時間長パターン周期を入力交流電圧の周期より長くし、かつ、各通電パターン内に含まれる正の半波の数と負の半波の数を同数とし、パターン周期ごとにオフセットを求めている。つまり、実施形態1では、入力交流電圧の周期より長い時間において、正の半波の数と負の半波の数が同数となるタイミングごとにオフセットを求めている。図8は、1つのパターン周期ごとにオフセットを決定しているが、パターン周期の整数倍の周期ごとにオフセットを決定してもよい。これは、1つのパターン周期における正の半波の数と負の半波の数が同数であるため、パターン周期を整数倍しても、正の半波の数と負の半波の数はやはり同数となるからである。正の半波の数と負の半波の数が同数であることは、パターン周期ごとの正の交流電流の通電時間と負の交流電流の通電時間が等しいことを意味する。つまり、パターン周期ごとの正の交流電流の導通角と負の交流電流の導通角が等しいことを意味する。[実施形態2]実施形態1では、各通電パターンに含まれる半波の数と負の半波の数が同数であるため、パターン周期ごとにオフセットを決定すれば、オフセットの精度が高くなることを前提としている。一方で、本発明の基本原理によれば、入力交流電圧の周期より長い期間内で正の半波の数と負の半波の数が同数となっていれば、その期間内で収集した電流値から求めたオフセットは精度が高くなる。よって、各通電パターンに含まれる半波の数と負の半波の数が必ずしも同数でなくてもよい。結果として、半波の数と負の半波の数とが同数となる期間ごとにオフセットを算出すればよいのである。そこで、実施形態2は、正の半波の数と負の半波の数をそれぞれ計数し、正の半波の数と負の半波の数が同数になるたびにオフセットを決定することを特徴とする。図9を用いて、実施形態2における電流の実効値Isの演算方法とオフセット補正方法について説明する。なお、実施形態1と共通する事項については説明の重複を避けるために簡潔化ないしは省略することにする。図9のフローチャートの処理はCPU301が実行する。S901で、CPU301は、オフセットio、電流の積分値和S、サンプル数n、正の半波を通電する回数Kon、負の半波を通電する回数Kon-などの各変数をゼロに初期化する。S902で、CPU301は、パターン周期信号が0から1へ変化したかどうかを判定する。図6を用いて説明したように、CPU301は、ゼロクロス信号パルスの数をカウントしている。CPU301は、カウンタのカウント値が14になると、パルス状のパターン周期信号を1つ出力するとともに、カウンタをゼロにリセットする。入力交流電圧の周波数が50Hzで、かつ、1つの通電パターンに14個の半波が含まれると仮定すると、パターン周期は0.14秒である。つまり、パターン周期信号の周期は7.14Hzである。CPU301は、パターン周期信号を発生するクロック発生部を備えている。パターン周期信号が0から1へ変化すると、S903に進む。S903で、CPU301は、サンプリング周期が到来したかどうかを判定する。CPU301は、サンプリングクロックを発生するクロック発生部を備えており、クロック発生部が発生するクロックの数を監視している。CPU301は、クロックの数がサンプリング周期に相当する数になると、サンプリング周期が到来したと判定する。サンプリング周期が到来すると、S904に進む。S904で、CPU301は、サンプル数nを1つインクリメントする。S905で、CPU301は、電流の瞬時値inをサンプリングする。S906で、CPU301は、瞬時値inの積分値Sを求める。S907で、CPU301は、瞬時値inからオフセットioを減算して瞬時値Inを算出する。S908で、CPU301は、ゼロクロス信号が0から1に変化したかどうかを判定する。ゼロクロス信号が0から1に変化していなければSS903に戻り、CPU301は、S903からS908を繰り返す。一方、ゼロクロス信号が0から1に変化したのであれば、S909に進む。S909で、CPU301は、計数した正の半波が通電された回数Konと負の半波が通電された回数Kon-を比較し、両者が等しいかどうかを判定する。CPU301は、ゼロクロスが発生するたびにそのときの通電パターンにしたがってKonとKon-を計数する。つまり、CPU301は、正の半波の数を計数する第1計数部と、負の半波の数を計数する第2計数部として機能している。また、CPU301は、正の半波の数と負の半波の数が同数かどうかを判定する判定部としても機能している。このように、判定することで、CPU301は、正の半波の数と負の半波の数が同数になったと判定するたびにオフセットを決定することができるようになる。KonとKon-が等しくなければS903へ戻り、とKon-が等しければS910へ進む。S910で、CPU301は、積分値Sをサンプル数nで割って平均値を算出し、この平均値を新たなオフセットioとしてメモリに保持する。S911で、CPU301は、パターン周期信号が0から1に変化したかどうかを判定する。パターン周期信号が0から1に変化していなければ、CPU301は、S903に戻り、S903からS910を繰り返す。一方、パターン周期信号が0から1に変化したのであれば、S912に進む。S912で、CPU301は、瞬時値inをオフセット補正して得られた瞬時値Inを実効値Isに変換する。S913で、CPU301は、読取許可フラグを0から1へ変化させる。S914で、CPU301は、積分値S、サンプル数n、正の半波の通電回数Kon、負の半波の通電回数Kon-などの変数をゼロにリセットする。その後、S903に戻る。上記の各ステップを繰り返すことによって温度ドリフト等で発生したオフセットを補正した高精度な実効値Isを検出することが可能となり、最大許容電流の範囲内で定着器21の能力を最大限に発揮することができる。このように実施形態2では正の半波の通電回数Konと負の半波の通電回数Kon-が等しくなった時点でオフセット補正を行うため、パターン周期と同等かそれよりも早い周期で補正することができる。実施形態2のその他の効果については実施形態1の効果と共通している。