AC100V 用単相インバータ( H8 アセンブラ版)  2006.01.09



1.動作
 
AC100Vを位相制御するのではなく、半波(正 or 負)単位で「間引いて」、擬似的に周波数を変えよう…というものです( AC100V に同期して高速にスイッチのON/OFFをやるわけです)。ボリウムの位置( 0-5V の電圧)を AN0 で読み込んで、相当する「時間」だけ待った後、AC100V の半波を ON/OFF しています。待つ「時間」はテーブル引きで得ています。(とても簡単な構造です)

尚、続けて同一極性の半波を ON にしないようにはしていますが、何か?が原因でゼロクロスの検出ミスをした場合、「完璧な動作」は無理かも知れません。(そこまでの「安全性」は考えていないものですから・・・)

AC100V のゼロクロスに同期したタイミングで「半波ごとの ON / OFF 」を行いますので、一般的なインバータに比べるとノイズは少ないと思います。
当然の事ながら、周波数を上げる事はできません。(笑)

ハード面に関しては「 555 版」も合わせてご覧下さい。(「 555 版」で説明している部分は手を抜いているので・・・)

2.ファイル構成   ( H8 のプログラムソース)

 
・ Inv02.scr [ メイン関数ほか ]
  AC100V の ON/OFF 制御の以外に、全ての割込み処理(最上位の関数のみ)、全ての内蔵 I/O の初期化… など。

・ 3694Form.src [ 型変換 ]
  簡単な変換(二進/十進/十六進の相互変換、7segLED のセグメント変換)関数があります。(自前の「モニタ」とか printf で使っています)

・ 3694Moni.src [ モニタ ]
  16 ビットアドレス(ノーマルモード)専用です。メモリの R/W 、レジスタの R/W 、シングルステップ実行、…等が使えます。(シングルステップはアドレスブレーク・レジスタを使っています)
起動の許可/禁止は、初期化データ ( ROM ) とフラグ ( RAM ) の両方で可能です。起動要因は、NMI、SIO (特定キャラ受信)、SWI があります。

・ 3694Sio.src [ シリアル通信 ]
  送受信ともに割込み動作で、リングバッファを介して通信します(バッファ長は 3964Cnst.inc で定義します)。
特定キャラ( MONI_TRG_CHR で定義)の受信でモニタを起動する機能がある他は変わったところはありません。(バイナリデータ受信時、SIO からのモニタ起動は禁止する必要があります)

・ 3694TimS.src [ 標準タイマ(約 10mS ) ]
  約 10mS で動作する「標準タイマ」を常用しています。H8/3694 は(私には)タイマの数が不足ぎみで、使い道の少ない?「タイマA」(タイムベース用)を使っているため、正確な 10mS ではありませんが…。
「モールス出力」(接続先は LED ですが)は、ここから起動しています。

・ 3694Wait.src [ ソフトタイマ ]   単なる「時間待ち」です。
   
・ 3964Cnst.inc [ 定数定義 ]   インクルードファイル
   
・ 3964Mmap.inc [ 内蔵メモリ、I/O の定義 ]  インクルードファイル

3.ダウンロード
 
・ AC100V 単相インバータ H8 ソフト Inv02.lzh (115KB 2006.01.09)


Top      戻る