前回からの続きです。
動作試験
製作したF/Vコンバータの動作試験を行いました。
入力信号は、DDSファンクションジェネレータ「FY3200S-6M」によって生成した0-5V矩形波です。電圧はDDM(テスタ)「OW18D」で測定しました。
動作試験の結果はこんな感じになりました。
いい感じに動作していそうです。データの詳細は↓
入力周波数[Hz] | 出力電圧[V] |
---|---|
0 | 0.03 |
1 | 0.0133 |
2 | 0.0236 |
3 | 0.0338 |
4 | 0.0441 |
5 | 0.0557 |
6 | 0.066 |
7 | 0.0762 |
8 | 0.0864 |
9 | 0.0955 |
10 | 0.1056 |
12 | 0.1241 |
14 | 0.143 |
16 | 0.1629 |
18 | 0.1835 |
20 | 0.2047 |
25 | 0.255 |
30 | 0.3001 |
35 | 0.3511 |
40 | 0.402 |
45 | 0.4456 |
50 | 0.497 |
60 | 0.585 |
70 | 0.7046 |
80 | 0.8015 |
90 | 0.9008 |
100 | 1.0005 |
120 | 1.2007 |
140 | 1.3978 |
160 | 1.5983 |
180 | 1.7962 |
200 | 1.993 |
220 | 2.19 |
240 | 2.392 |
260 | 2.591 |
280 | 2.785 |
300 | 2.989 |
320 | 3.19 |
340 | 3.387 |
360 | 3.584 |
380 | 3.788 |
400 | 3.987 |
420 | 4.186 |
440 | 4.385 |
460 | 4.587 |
480 | 4.786 |
490 | 4.889 |
500 | 4.975 |
雑感など
D/Aコンバータ
今回D/Aコンバータは「MCP4922」を使用しましたが、これはたまたま手持ちがあったためです。1chしか使用しないので、普通に作るなら1ch版の「MCP4921」を使った方が、安くて小さいので良いと思います。
コンパレータ
作り終えてから、ふと気づいたのですが、PIC16F88には「コンパレータモジュール」が内蔵されていたはずなので、それを使えばLM339は必要なかったかもしれません。
XC8コンパイラ 数値(整数定数)は"int"で処理されるので注意
プログラムを作っているときに、どうにも計算結果がおかしくなる、という問題が起こりました。
計算途中でオーバーフローしているようで、調べると「XC8 C Compiler Users Guide for PIC」というpdfの5.3.7.1 Integral Constantsの項あたりに
何もつけずに書いた"数値"は基本的に"int"で処理される
といった記述があります。XC8以外のCコンパイラでも、そういうものな気もしますが、XC8のintは16bit(符号付)のため、割とすぐにオーバーフローしてしまうので注意が必要です。
数値の末尾にULとつけると、数値をunsigned longで割り当てられるので、この問題を回避できます。(Lとつければsigned longとなります。このあたりはC言語の仕様のはず)
部品表
品名 | 個数 | |
---|---|---|
カーボン抵抗 | 4.7kΩ | 4 |
カーボン抵抗 | 100kΩ | 1 |
カーボン抵抗 | 10kΩ | 4 |
カーボン抵抗 | 470Ω | 1 |
カーボン抵抗 | 10kΩ | 1 |
カーボン抵抗 | 1.8kΩ | 1 |
ダイオード | 1N4148 | 2 |
ツェナーダイオード 5.1V | GDZJ5.1A | 1 |
セラミックコンデンサ | 220pF | 1 |
セラミックコンデンサ | 33pF | 3 |
積層セラミックコンデンサ | 0.1uF | 3 |
クリスタル | 20MHz | 1 |
DIPスイッチ | 1 | |
多回転半固定ボリューム抵抗 | 10kΩ | 1 |
コンパレータ | LM339 | 1 |
PICマイコン | 16F88 | 1 |
基準電圧源 | TL431 | 1 |
D/Aコンバータ | MCP4922 | 1 |
0 件のコメント:
コメントを投稿