====== 正弦波発振器(クロック可変方式) ======
===== 概要 =====
PICとD/A変換を利用して正弦波発振器を作った場合には次のような問題があります。
* 正弦波の精度を良くすると発振周波数をあまり高く出来ない。
* 連続的(1Hz単位)に変化させることが難しい。
そこでこの問題をある程度、緩和させたく取り組んでみました。
===== 動作原理 =====
今回の発振器の仕様を次のように設定しました。
* D/A変換の精度は、8ビットとする。
* 1度単位(つまり360データ)で出力する。
* 連続的に周波数の可変を可能とする。
* 発振周波数の範囲は、10Hz~10kHzとする。
この仕様を満足させるために、次の2点に注目しました。
* PICの内部処理では、360のデータを只管(ひたすら)出力するだけにする。
* PICのクロックを連続的に可変できるようにする。(秋月電子の1kHz~30MHzオシレータ基板を使用)
<1kHz~30MHzオシレータ基板の仕様>※2008年2月時点で600円で販売しています。
* LTC1799モジュールを基板上に実装
* 外付け抵抗1個で周波数を設定可能
* 周波数範囲(1kHz~30MHz)
* 分周比の設定が可能(1/1、1/10、1/100)
===== 回路図 =====
{{:imgpaste:202004:htmikan-20200429-182012.png}}
===== ソースコード =====
void main()
{
CMCON = 0b00000111;
ANSEL = 0b00000000;
TRISA = 0b11111111;
TRISB = 0b00000000;
//
while (1) {
PORTB = 127;
PORTB = 129;
PORTB = 131;
PORTB = 134;
PORTB = 136;
PORTB = 138;
PORTB = 140;
PORTB = 142;
PORTB = 145;
PORTB = 147;
PORTB = 149;
PORTB = 151;
PORTB = 153;
PORTB = 156;
PORTB = 158;
PORTB = 160;
PORTB = 162;
PORTB = 164;
PORTB = 166;
PORTB = 168;
PORTB = 170;
PORTB = 173;
PORTB = 175;
PORTB = 177;
PORTB = 179;
PORTB = 181;
PORTB = 183;
PORTB = 185;
PORTB = 187;
PORTB = 189;
PORTB = 191;
PORTB = 192;
PORTB = 194;
PORTB = 196;
PORTB = 198;
PORTB = 200;
PORTB = 202;
PORTB = 203;
PORTB = 205;
PORTB = 207;
PORTB = 209;
PORTB = 210;
PORTB = 212;
PORTB = 214;
PORTB = 215;
PORTB = 217;
PORTB = 218;
PORTB = 220;
PORTB = 221;
PORTB = 223;
PORTB = 224;
PORTB = 226;
PORTB = 227;
PORTB = 228;
PORTB = 230;
PORTB = 231;
PORTB = 232;
PORTB = 234;
PORTB = 235;
PORTB = 236;
PORTB = 237;
PORTB = 238;
PORTB = 239;
PORTB = 240;
PORTB = 241;
PORTB = 242;
PORTB = 243;
PORTB = 244;
PORTB = 245;
PORTB = 246;
PORTB = 246;
PORTB = 247;
PORTB = 248;
PORTB = 248;
PORTB = 249;
PORTB = 250;
PORTB = 250;
PORTB = 251;
PORTB = 251;
PORTB = 252;
PORTB = 252;
PORTB = 252;
PORTB = 253;
PORTB = 253;
PORTB = 253;
PORTB = 254;
PORTB = 254;
PORTB = 254;
PORTB = 254;
PORTB = 254;
PORTB = 254;
PORTB = 254;
PORTB = 254;
PORTB = 254;
PORTB = 254;
PORTB = 254;
PORTB = 253;
PORTB = 253;
PORTB = 253;
PORTB = 252;
PORTB = 252;
PORTB = 252;
PORTB = 251;
PORTB = 251;
PORTB = 250;
PORTB = 250;
PORTB = 249;
PORTB = 248;
PORTB = 248;
PORTB = 247;
PORTB = 246;
PORTB = 246;
PORTB = 245;
PORTB = 244;
PORTB = 243;
PORTB = 242;
PORTB = 241;
PORTB = 240;
PORTB = 239;
PORTB = 238;
PORTB = 237;
PORTB = 236;
PORTB = 235;
PORTB = 234;
PORTB = 232;
PORTB = 231;
PORTB = 230;
PORTB = 228;
PORTB = 227;
PORTB = 226;
PORTB = 224;
PORTB = 223;
PORTB = 221;
PORTB = 220;
PORTB = 218;
PORTB = 217;
PORTB = 215;
PORTB = 214;
PORTB = 212;
PORTB = 210;
PORTB = 209;
PORTB = 207;
PORTB = 205;
PORTB = 203;
PORTB = 202;
PORTB = 200;
PORTB = 198;
PORTB = 196;
PORTB = 194;
PORTB = 192;
PORTB = 191;
PORTB = 189;
PORTB = 187;
PORTB = 185;
PORTB = 183;
PORTB = 181;
PORTB = 179;
PORTB = 177;
PORTB = 175;
PORTB = 173;
PORTB = 170;
PORTB = 168;
PORTB = 166;
PORTB = 164;
PORTB = 162;
PORTB = 160;
PORTB = 158;
PORTB = 156;
PORTB = 153;
PORTB = 151;
PORTB = 149;
PORTB = 147;
PORTB = 145;
PORTB = 142;
PORTB = 140;
PORTB = 138;
PORTB = 136;
PORTB = 134;
PORTB = 131;
PORTB = 129;
PORTB = 127;
PORTB = 125;
PORTB = 123;
PORTB = 120;
PORTB = 118;
PORTB = 116;
PORTB = 114;
PORTB = 112;
PORTB = 109;
PORTB = 107;
PORTB = 105;
PORTB = 103;
PORTB = 101;
PORTB = 98;
PORTB = 96;
PORTB = 94;
PORTB = 92;
PORTB = 90;
PORTB = 88;
PORTB = 86;
PORTB = 84;
PORTB = 81;
PORTB = 79;
PORTB = 77;
PORTB = 75;
PORTB = 73;
PORTB = 71;
PORTB = 69;
PORTB = 67;
PORTB = 65;
PORTB = 63;
PORTB = 62;
PORTB = 60;
PORTB = 58;
PORTB = 56;
PORTB = 54;
PORTB = 52;
PORTB = 51;
PORTB = 49;
PORTB = 47;
PORTB = 45;
PORTB = 44;
PORTB = 42;
PORTB = 40;
PORTB = 39;
PORTB = 37;
PORTB = 36;
PORTB = 34;
PORTB = 33;
PORTB = 31;
PORTB = 30;
PORTB = 28;
PORTB = 27;
PORTB = 26;
PORTB = 24;
PORTB = 23;
PORTB = 22;
PORTB = 20;
PORTB = 19;
PORTB = 18;
PORTB = 17;
PORTB = 16;
PORTB = 15;
PORTB = 14;
PORTB = 13;
PORTB = 12;
PORTB = 11;
PORTB = 10;
PORTB = 9;
PORTB = 8;
PORTB = 8;
PORTB = 7;
PORTB = 6;
PORTB = 6;
PORTB = 5;
PORTB = 4;
PORTB = 4;
PORTB = 3;
PORTB = 3;
PORTB = 2;
PORTB = 2;
PORTB = 2;
PORTB = 1;
PORTB = 1;
PORTB = 1;
PORTB = 0;
PORTB = 0;
PORTB = 0;
PORTB = 0;
PORTB = 0;
PORTB = 0;
PORTB = 0;
PORTB = 0;
PORTB = 0;
PORTB = 0;
PORTB = 0;
PORTB = 1;
PORTB = 1;
PORTB = 1;
PORTB = 2;
PORTB = 2;
PORTB = 2;
PORTB = 3;
PORTB = 3;
PORTB = 4;
PORTB = 4;
PORTB = 5;
PORTB = 6;
PORTB = 6;
PORTB = 7;
PORTB = 8;
PORTB = 8;
PORTB = 9;
PORTB = 10;
PORTB = 11;
PORTB = 12;
PORTB = 13;
PORTB = 14;
PORTB = 15;
PORTB = 16;
PORTB = 17;
PORTB = 18;
PORTB = 19;
PORTB = 20;
PORTB = 22;
PORTB = 23;
PORTB = 24;
PORTB = 26;
PORTB = 27;
PORTB = 28;
PORTB = 30;
PORTB = 31;
PORTB = 33;
PORTB = 34;
PORTB = 36;
PORTB = 37;
PORTB = 39;
PORTB = 40;
PORTB = 42;
PORTB = 44;
PORTB = 45;
PORTB = 47;
PORTB = 49;
PORTB = 51;
PORTB = 52;
PORTB = 54;
PORTB = 56;
PORTB = 58;
PORTB = 60;
PORTB = 62;
PORTB = 63;
PORTB = 65;
PORTB = 67;
PORTB = 69;
PORTB = 71;
PORTB = 73;
PORTB = 75;
PORTB = 77;
PORTB = 79;
PORTB = 81;
PORTB = 84;
PORTB = 86;
PORTB = 88;
PORTB = 90;
PORTB = 92;
PORTB = 94;
PORTB = 96;
PORTB = 98;
PORTB = 101;
PORTB = 103;
PORTB = 105;
PORTB = 107;
PORTB = 109;
PORTB = 112;
PORTB = 114;
PORTB = 116;
PORTB = 118;
PORTB = 120;
PORTB = 123;
PORTB = 125;
}
}
//**********************************************************************
===== 動作確認 =====
いつものブレッドボードで確認しました。
{{:imgpaste:202004:htmikan-20200429-182138.png}}{{:imgpaste:202004:htmikan-20200429-182143.png}}
発振周波数が約500Hzの時の波形です。
{{:imgpaste:202004:htmikan-20200429-182149.png}}{{:imgpaste:202004:htmikan-20200429-182152.png}}
発振周波数が約10kHzの時の波形です。
{{:imgpaste:202004:htmikan-20200429-182157.png}}{{:imgpaste:202004:htmikan-20200429-182201.png}}
【発振周波数範囲】
分周比が1/1の時には、500Hz~10kHz
分周比が1/10の時には、50Hz~1kHz
分周比が1/100の時には、5Hz~100Hz
このページは稲崎様の閉鎖したHPのコピーで、著作権は稲崎様にあります。[[elechobby:picdic:picdic|詳細]]
This page is a copy of Mr. Inasaki's closed website, and the copyright is held by him.[[elechobby:picdic:picdic|Details]]