1.はじめに
  これまで交流電源の基準波形は,ROMとDAコンバータ(AD7523)を使ったGAIN(振幅)可変の正弦波生成回路を
  用いて生成していた。
  GAINを可変するのは,ソフトスタート機能や過負荷時の出力抑制,過電流の順次垂下を実現させるためである。
  従来回路部品のROMやAD7523などの部品が入手困難となり高価格となっていることから,
  安価で且つ簡単なGAIN可変の正弦波生成回路を製作したので紹介する。

2.PIC12F1840による正弦波生成回路
  <出力ポート>
   ①RA2:PWM信号
    フィルタを通し正弦波にする
   ②RA5:極性反転信号
    片側PWM波形を極性反転し
    SIN波を作る
  <入力ポート>
   ③RA4:GAIN信号
    AD入力しGAINを可変
    (ボリューム可変)

 

  <主な回路部品と価格>
   ①PIC12F1840 @150
   ②TC4053BP  @40
   ③LM358    @30
    価格は秋月電子通商の参考価格
   製作実験基板写真を右に示す

 

3.出力波形
  (1)正弦波波形(右図)  (5msec/div , 2V/div)
   ①周波数は50Hz固定
   ②基準CLK=2MHz
   ③SIN波1波を2MH÷50Hz=40kパルスで生成
     1波を200分割すると,PWM分解能200


  (2)起動・停止:出力ONはアナログ信号を与えて実現 
    R=1MΩとC=0.1μFの時定数で,立上り,立下り   (50msec/div , 2V/div)
        

  (3)過負荷垂下状態を模擬 (AD入力端子をGNDにシュートして確認) (10msec/div , 2V/div)
   ①1msec程度で垂下可能                   ②垂下・復帰
    GAIN制御はプログラムが介在しているが,         垂下後,ソフトスタートで再起動
    応答に問題ない
        

4.プログラム
  (1)SINデータテーブル:200個(半波100個)のPWMデータと極性信号を2次元配列で用意しておく
     (分解能が200なので,PWMデータ最大値は199である)
     ExcelでSINデータ計算し,テーブルを作り,プログラムにコピー&ペーストで簡単に作成できる
  (2)PWM機能(Timer2:周期設定)で10kHz割込(200個データ*50Hz=10kHz)
  (3)10kHz割込毎にSIN波データを読込み,ADコンバータ(8bit)でGAIN計算し出力する
  (4)ADコンバータはmainループ内で常時変換を繰り返し,8個の移動平均をする
   サンプルプログラムはこちら