まずはサンプルプログラムでモジュールの使い方を確認
PSoC Creator 3.1の[File]-[Example Project]から選択して開いた
IDAC8_PSoC4_Example
8bitの電流出力型のDACだ
このサンプルでは8bitの数値を指定して電流出力する
テスターの電流モードで出力値を確認した
(出力PINとGNDにテスタを直につないで大丈夫です)
main.cのIDAC_VALを変更すれば出力値が変更できる
出力値の精度はまずまずだ
電流出力型なので電流→電圧変換を内蔵オペアンプで行うことにした
これもサンプルプログラムで使い方を調べた
OpAmp_PSoC4_Example
2倍の非反転増幅回路のサンプルだ
テストには自作の可変電圧電源(http://dad8893.blogspot.jp/2014/12/blog-post_18.html)を使った(^q^/
IDAC8とOPAMPを使って電圧出力型のDACにしてみる
回路図(PSoC Creatorで作成)
PINから出ている点線の配線やRはPSoC4 Pioneer Kit外の回路だ
プログラムは簡単に32個のサインテーブルを作って、32μ秒ごとに出力する方法にした
32μ秒 * 32 = 1.024m秒
なので
1 / 1.024m秒 = だいたい1kHz
程度のサイン波が出力される
<main.c>
#include <project.h>
uint8 sin32Table[] = {
152 ,
176 ,
198 ,
217 ,
233 ,
245 ,
252 ,
255 ,
252 ,
245 ,
233 ,
217 ,
198 ,
176 ,
152 ,
127 ,
102 ,
78 ,
56 ,
37 ,
21 ,
9 ,
2 ,
0 ,
2 ,
9 ,
21 ,
37 ,
56 ,
78 ,
102 ,
127
};
int main()
{
/* Start the IDAC component */
IDAC_1_Start();
/* Start Opamp component */
Opamp_1_Start();
/* Sets Opamp power mode to High power */
Opamp_1_SetPower(Opamp_1_HIGH_POWER);
for(;;)
{
int i;
for (i = 0; i < 32; i++) {
IDAC_1_SetValue(sin32Table[i]);
CyDelayUs(32);
}
}
}
ブレッドボードで組んでオシロスコープで波形を見てみた
周波数: 825.3Hz波形を拡大するとみごとに階段状の波形だ(^q^;
Peak-Peak電圧値: 1.560V
平均電圧値: 1.746V
オーディオ・インターフェイス経由でPCに取り込んでWaveSpectraでも波形とスペクトルを見てみた
かなり歪んでるなあ
このまま使えばファミコンっぽいチープな音源になりそうだ
LPFは通しておいたほうがいいかな
うまくいけばぴゅんぴゅん3号として製作する予定
ご無沙汰です。いろいろあって動けませんでしたー。
返信削除オシロ買いましたか。ルビコンを渡りましたか。(^_^)
これで生涯おそらく電子工作を止める事はないでしょう。
ネタつきるまで一生あそべまっせー。
オシロは買ってよかったです
返信削除視野が広がるというか
理屈で考えたことが目に見えると楽しい
コミケの申込書、難しすぎて読むのが嫌になりそうです(^q^;