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

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

とても簡単です。

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

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

sin2.c
//********************************************************************** 
 
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)では、実使用を考えると、少し厳しいのかもしれませんね。

著作権表示 copyright notice

このページは稲崎様の閉鎖したHPのコピーで、著作権は稲崎様にあります。詳細
This page is a copy of Mr. Inasaki's closed website, and the copyright is held by him.Details
  • elechobby/picdic/otherpic/160.txt
  • 最終更新: 2025/10/17 14:29
  • by 127.0.0.1