簡易信号発生ユニット(PIC16F628)

概要

PIC16F628は、ボルテージリファレンスモジュールを内蔵しており、16段階の電圧を出力することが出来ます。 これを利用して簡単な信号発生器を作成してみました。 スイッチ切り替えでサイン波とノコギリ波が選択出来ます。

動作原理

とても簡単です。

サイン波

角度20°単位でのサインデータ18個を順次ボルテージリファレンスモジュールに出力します。

ノコギリ波

0~15までのデータを順次ボルテージリファレンスモジュールに出力します。

尚、サイン波とノコギリ波の切り替えはスイッチで行います。 また、PICより出力された電圧を抵抗とコンデンサによるローパスフィルタを通して出力します。

回路図

ソースコード

//********************************************************************** void main() { unsigned char tbl[] = { 0b11100000 | 7, 0b11100000 | 9, 0b11100000 | 11, 0b11100000 | 13, 0b11100000 | 14, 0b11100000 | 14, 0b11100000 | 13, 0b11100000 | 11, 0b11100000 | 9, 0b11100000 | 7, 0b11100000 | 5, 0b11100000 | 3, 0b11100000 | 1, 0b11100000 | 0, 0b11100000 | 0, 0b11100000 | 1, 0b11100000 | 3, 0b11100000 | 5, 0b11100000, 0b11100001, 0b11100010, 0b11100011, 0b11100100, 0b11100101, 0b11100110, 0b11100111, 0b11101000, 0b11101001, 0b11101010, 0b11101011, 0b11101100, 0b11101101, 0b11101110, 0b11101111, }; unsigned char i; CMCON = 0b00000111; TRISA = 0b11111111; while (1) { if (PORTA.F0 == 1) { for (i = 0; i < 18; i++) // サイン波 VRCON = tbl[i]; } else { for (i = 18; i < 34; i++) // のこぎり波 VRCON = tbl[i]; } } } //**********************************************************************

動作確認

いつものようにブレッドボードで確認しました。ブレッドボードは部品点数が少ないときは重宝しますよ。

先ずは、サイン波です。 上が、ローパスフィルタ前(B)の波形です。 下が、ローパスフィルタ後(A)の波形です。

次は、ノコギリ波です。 上が、ローパスフィルタ前(B)の波形です。 下が、ローパスフィルタ後(A)の波形です。こんな波形になるとは…

この時の周波数は約18Khzでした。

結果的には、16段階(4ビットD/A)では、実使用を考えると、少し厳しいのかもしれませんね。

このページは稲崎様の閉鎖したHPのコピーで、著作権は稲崎様にあります。詳細 This page is a copy of Mr. Inasaki's closed website, and the copyright is held by him.Details