F/Vコンバータをつくる(4)~動作試験・部品表 等~

2024/02/11

PIC 計測 自作

t f B! P L

前回からの続きです。

動作試験

製作したF/Vコンバータの動作試験を行いました。

試験回路イメージ

入力信号は、DDSファンクションジェネレータ「FY3200S-6M」によって生成した0-5V矩形波です。電圧はDDM(テスタ)「OW18D」で測定しました。

動作試験の結果はこんな感じになりました。

F-Vコンバータ動作結果

いい感じに動作していそうです。データの詳細は↓

入力周波数[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
当ブログはアフィリエイト広告を利用しています。

このブログを検索

最新記事

ブログ運営者:そのへんの誰か


このブログのURL

QooQ