製作モジュール一覧

ラベル 小ネタ実験 の投稿を表示しています。 すべての投稿を表示
ラベル 小ネタ実験 の投稿を表示しています。 すべての投稿を表示

2019年10月21日月曜日

ウィーンブリッジ発振回路の2つの抵抗の誤差

ウィーンブリッジ発信回路の発振周波数を2連POTで制御するとき2つのチャンネル間の誤差がどれぐらい特性に影響を与えるか実験してみました。

シミュレーション回路図

R4とR5が2連POTです。実験のためR4=4.7kΩとし、R5は3.9kΩ+αΩのRを直列にして誤差を作ることにしました。
3.9kΩ+560Ω=4.46kΩ
3.9kΩ+680Ω=4.58kΩ
3.9kΩ+820Ω=4.72kΩ
3.9kΩ+1kΩ=4.9kΩ
3.9kΩ+1.2kΩ=5.1kΩ
過渡解析

R4とR5の誤差によって振幅が大きく変わります。OPAMPの正帰還に入っているバンド・パス・フィルターの選択度が誤差により変わるためでしょう。

バンド・パス・フィルター部分のみ取り出してシミュレーションしてみました。

シミュレーション回路図

過渡解析

バンド・パス・フィルター部の特性は誤差があってもそれほど大きく変わらないようですが、発振回路に入れると大きく影響するようです。

ブレッドボードで回路を組んで実験してみました。

ブレッドボード図


電源電圧: +9.05V / -9.03V
R1(5kΩ Trim)の抵抗値: 2.04kΩ

3.9kΩ+470Ω=4.37kΩ

3.9kΩ+560Ω=4.46kΩ

3.9kΩ+680Ω=4.58kΩ

3.9kΩ+820Ω=4.72kΩ

3.9kΩ+1kΩ=4.9kΩ

3.9kΩ+1.2kΩ=5.1kΩ

3.9kΩ+1.5kΩ=5.4kΩ

発振せず。

シミュレーションと似たような結果になりました。

出力振幅さえうまくカバーできれば2連POTのチャンネル間の誤差が多少大きくても発振してくれるようです。シミュレーション回路図のR4の値で増幅率を変えられるのである程度融通が利くと思います。

歪率は測定していませんが、波形を目で見た限りではそれほど歪んではいないようです。

オーソドックスなウィーンブリッジで低歪率を要求されることはそれほどないと思いますし。

【追記:2019.10.23】

比較抵抗値(Ω) 4700
ベース抵抗値(Ω) 3900

直列抵抗値(Ω) 合成抵抗値(Ω) 誤差
470 4370 -7.02%
560 4460 -5.11%
680 4580 -2.55%
820 4720 0.43%
1000 4900 4.26%
1200 5100 8.51%
1500 5400 14.89%

2019年6月4日火曜日

アクティブLPFと積分器の違い

ローパスフィルタと積分器は兄弟みたいなものですが、決定的な違いがあります。

時定数がかかっているかいないかです。

シミュレーション


1kHz/2Vp-pの矩形波を入力して応答をシミューレーションしました。

RCフィルタ 一次LPF


抵抗とコンデンサを使ったパッシブLPFです。

回路図

時定数: τ = R * C = 0.1 [ms]
カットオフ周波数: fc = 1 / (2 * π * R1 * C1) ≒ 1.6 [kHz]

過渡解析

アクティブ一次LPF


RCフィルタのような特性で増幅率も設定可です。

回路図

カットオフ周波数: fc = 1 / (2 * π * R2 * C1) ≒ 1.6 [kHz]
増幅率: Av = -(R2 / R1) = -1

過渡解析

反転回路なので、出力は反転していますが、過渡応答はRC LPFと同様です。

積分器


リニアに積分される回路です。積分を数値として扱うなら、時定数がかかっていない「積分器」が一番正確です。でも、「音」という自然現象はそれほどきっちりしていなく、場合によっては、時定数のかかったぬるい波形の方が味があったりすると思います。

回路図

アクティブ一次LPFの帰還抵抗を外した形です。R2 = ∞ とすると、カットオフ周波数 fc = 0 [Hz]、増幅率 Av = -∞です。

.tranコマンドにstartupオプションを付けてシミューレーションしています。

過渡解析

.tranコマンドにstartupオプションをつけないと

過渡解析

出力が正電源側に張り付きます。これは実験でも同じような結果になりました。

ブレッドボードで実験


ブレッドボード配線図

入力: SQR_FG
電源: 電流/電圧計付可変両電源
電源電圧: +11.55V / -11.32V
OPAMP: NJM4580DD

RCフィルタ 一次LPF




ch1:IN ch2:OUT

入力の矩形波がビビっているのはSQR_FGの出力の駆動力不足です。←AVRのGPIO出力を300ΩのPOTで分圧している。

アクティブ一次LPF



ch1:IN ch2:OUT

積分器



ch1:IN ch2:OUT

シミューレーションと同じように出力が正電源側に張り付いています。

1MΩの帰還抵抗を入れると



ch1:IN ch2:OUT

矩形波が積分されてリニアな三角波が出力されます。

この場合、以下のようなアクティブ一次LPFになります。

カットオフ周波数: fc = 1 / (2 * π * R2 * C1) ≒ 16 [Hz]
増幅率: Av = -(R2 / R1) = -100

2018年1月19日金曜日

LCRメーターDE-5000でヘッドホンやブレッドボードのインピーダンスを測ってみる。

秋月で売られているLCRメーターのDER EE DE-5000で、ヘッドホンのSony CD900STとブレッドボードのインピーダンスを測ってみました。

まずはDE-5000が出力している信号を測定しました。

DE-5000の出力(@1kHz)

振幅は1.84Vp-pで意外ときれいなサイン波を出力しています。

この時、逆にDE-5000でオシロの特性も測定しました。

抵抗(Rp) 9.912MΩ
容量(Cp) 17.9pF Tanδ 0.897

オシロのプローブはx10で公称10MΩなので正しく測れているようです。入力容量もプローブをx10で使う場合は15pF~20pF程度になっているようです。

1.84Vp-pならオーディオ・インターフェイスに直接つっこんでも平気なのでWaveSpectraでFFTしてみました。

Audio I/F: TASCAM US-144MKII
窓関数: FlatTop


2次高調波歪が-73dB程度、THDが0.026%となかなかきれいなサイン波形です(^q^/

同時にDE-5000でUS-144MKIIの入力インピーダンスも測定しました。(@1kHz)

MIC/LINE入力
抵抗(Rs) 9.177kΩ
容量(Cs) 841.2nF Tanδ 48.4

Guitar入力
抵抗(Rp) 90.60kΩ
容量(Cp) 256.3pF Tanδ 6.65

公称ではMIC/LINEで15kΩ、Guitarで1MΩとなっているので、特にGuitar入力はかなり低い値になっています。

MIC/LINE入力は1uF近くあるということになるのですが、でかすぎ(@@?

ブレッドボードの寄生インピーダンス



最近、100kHzを越えるアナログ信号を扱うようになってきたので、ブレッドボードの寄生容量・抵抗を測定しました。

ブレッドボードは2016年11月に秋月で購入したものです。←これでも手持ちの中では新しい方。

容量は、ブレッドボード普通の穴の隣り合った列で測定、抵抗は電源ラインの両端で測定しました。(@1kHz)

容量(Cp) 3.2pF Tanδ 0.008
抵抗(Rs) 0.155Ω
抵抗(DCR) 0.10Ω

3.2pFというと高周波になるとそこそこ問題になってきそうな値です。←ブレッドボード上のいたるところにこの容量がある。

0.15Ωとすると100mA流せば15mVの電圧降下。これも低電圧で電流を多く流す場合は注意が必要そうです。

CD900STのインピーダンス



抵抗とインダクタンスを周波数を変えて測定しました。ヘッドホンを装着した場合とヘッドホンをその辺に置いて測定した場合、インダクタンスの値が変わるので両方測定しました。

1.84Vp-pを直接ヘッドホンに入れると音がでかすぎるので耳栓をして測定(^q^; ヘッドホンにも悪いので、リスニング用のヘッドホンでこういうことはしないほうがいいと思います。

抵抗

インダクタンス

※OFFはヘッドホンを外して測定、ONはヘッドホンを装着して測定

ヘッドホンを装着して、耳に押し付けるようにするとインダクタンスはさらに変化します。振動板が動きにくくなるためだと思います。

測定データ

L(mH)
F(Hz) OFF ON
100 1.498 2.485
120 6.86 6.904
1000 274.5 86.5
10000 183.99 183.76
100000 140.79 141.13

Q
F(Hz) OFF ON
100 0.01 0.017
120 0.059 0.061
1000 0.024 0.007
10000 0.163 0.162
100000 0.88 0.881

R(Ω)
F(Hz) OFF ON
100 89.21 87.47
120 86.56 85.09
1000 69.95 70.16
10000 70.67 71.2
100000 100.41 100.68

2017年3月1日水曜日

ArduinoのスケッチをAVR単体で動作させる。

かんたんにまとめておきます。

Arduino UnoのATMega328Pを抜き差しして繰り返して使う手順。


◯ATMega328PをAVRプログラマに接続してArduino Uno用にFuse Bitを書き換え/確認



水晶振動子:16MHz C:22pF


Fuse Bit(Arduino Uno)

h: D6
l: FF
e: 05

<追記:2017.07.08>

◯新品のATMega328Pを使う場合は、Arduinoのファームウェアを書き込む


C:\Program Files (x86)\Arduino\hardware\arduino\avr\bootloaders\optiboot\optiboot_atmega328.hex

</追記>

◯Arduino UnoのICソケットに挿入


◯Example/BlinkでArduino IDEによる書き込み/動作確認


◯動作させるスケッチを書き込み、Arduino Unoで動作確認


◯ATMega328PをArduino Unoから取り外す


◯ATMega328PをAVRプログラマに接続してFuse Bitを書き換え


Fuse Bit(内蔵RC 8MHz)

h: D9
l: E2
e: 07

Fuse Bit(内蔵RC 1MHz)

h: D9
l: 62
e: 07

◯動作環境に入れて、動作確認


I2Cの通信状態


16MHz駆動(Arduino Uno)

ch1:SDA ch2:SCL

8MHz駆動

1MHz駆動

SPIの通信状態


ArduinoのLCD5110_Basicはソフトウェアで送信を行っていて、AVRのSPIハードウェアを使用していない。SPIハードウェアを使った場合は未確認。

16MHz駆動(Arduino Uno)

ch1:MOSI ch2:SCK

クロック周波数: 256.9kHz(オシロのカーソルで測定)

8MHz駆動

クロック周波数: 145.3kHz(オシロのカーソルで測定)

1MHz駆動

クロック周波数: 15.86kHz(オシロのカーソルで測定)

2017年1月28日土曜日

フォトダイオードとLEDで光通信をしてみる実験

S6775というフォトダイオードをtozさんにもらっていたので、これとLEDを組み合わせて光通信してみた。


仕組みとしてはフォトカプラと同じだと思うが、暗所に封入するのではなく普通の室内で光通信できるかという実験。

受信部の回路図



フォトダイオードからの出力電流を、OPAMPのI→V変換回路で増幅して電圧として取り出す。OPAMPは単電源で使えて入力インピーダンスの高いCMOSタイプのNJU7032を使った。

C1はノイズ除去のために入れている。定数はブレッドボードで実験しながら決めた。

ブレッドボード配線図


上側のブレッドボードが受信部。下側のブレッドボードが送信部。電気的にはつながっていない。(正確に言うと測定用のオシロのGNDとArduinoのUSBのGNDはつながっています)

送信部はArduinoのLチカ。白色のLEDのストックがなかったので、高輝度タイプの青色LEDを使った。(電流制限抵抗:100Ω)

通信状態


ch1:送信 ch2:受信

画像の程度の至近距離だと、夜間に室内灯を付けた状態で10kHz程度の送受信はできるようだ。

メモ:


もっと遅い周波数だと、室内灯の60Hzの波形が重畳する(関西なので)

2017年1月22日日曜日

小ネタ実験 ステッピングモータとサーボをArduinoで動かしてみる。

部品箱で眠っているパーツを少しずつ試していこうと思います。まずは、モーター類から。

ステッピングモータ


共立で買ったやっすいユニポーラのステッピングモータ。 6Vと比較的低電圧で駆動できるので実験しやすいと思う。

付属の紙をみると、「巻線抵抗/相:7Ω」となっているので、6V駆動すると1A近く電流が流れる。当然、Arduinoでは直接駆動できない。ArduinoのStepperライブラリのページには、ULN2003かULN2004か、ダーリントントランジスタ・アレイを使うように書いてあるが、とりあえず手持ちの部品で実験してみた。

モーター駆動回路

NPNトランジスタのスイッチング回路を使ってモーターを駆動する。1A近く流すので小信号用トランジスタではダメで、パワーTrかパワーMOS-FETを使わないといけない。手持ちにあった2SC2655を使った。[IN]がArduinoからの制御信号(H/L)で、[Q1]をスイッチングする。Trなのでベースに流す電流を制限するR1が必要。

D1はモーターの逆起電力を逃がすために入れる。手持ちにあった、整流用ダイオードの1N4007を使った。

ブレッドボード配線図


A、!A、B、!Bはユニポーラ・ステッピングモータの端子名。モータは500mA以上流れるようなので、モーター駆動回路の電源をArduinoから取ると、Arduinoの電源回路が壊れる可能性があるので注意。

これで、ArduinoのExample/Stepperのサンプルプログラムが試せる。

使用したモーターのステップ数が48stepなので

// change this to the number of steps on your motor
#define STEPS 48

とした。

Exampleの[MotorKnob]は挙動がわかりにくいので、最初は他のExampleの方がいいかもしれない。

また、[stepper_speedControl]は48stepを指定すると、

    myStepper.step(stepsPerRevolution / 100);

のところが0になってしまい、動作しない。

↓48Step対応の修正版

#include <Stepper.h>

const int stepsPerRevolution = 48;  // change this to fit the number of steps per revolution
// for your motor


// initialize the stepper library on pins 8 through 11:
Stepper myStepper(stepsPerRevolution, 8, 9, 10, 11);

int stepCount = 0;  // number of steps the motor has taken

void setup() {
  // nothing to do inside the setup
}

void loop() {
  // read the sensor value:
  int sensorReading = analogRead(A0);
  // map it to a range from 0 to 100:
  int motorSpeed = map(sensorReading, 0, 1023, 0, 100);
  // set the motor speed:
  if (motorSpeed > 0) {
    myStepper.setSpeed(motorSpeed);
    // step 1/100 of a revolution:
    //myStepper.step(stepsPerRevolution / 100);
    myStepper.step(2);
  }
}

サーボ


秋月で一番安かったサーボ。このサーボは180°しか可動域がない。(普通そうなんだろうか?)

配線図


サーボの方はArduinoから制御用のパルス波を送るだけなので、回路はシンプル。このサーボも数100mAの電流が流れるようなので、Arduinoとは別に電源を用意して使った。

example/servoのサンプルプログラムを動作させることが出来た。プログラムも回転角を与えるだけなので楽ちんだ。

メモ:


DCモータをHブリッジ回路を使って動かしてみようと思ったが、手持ちのパワーTr/MOS-FETのPチャネル側のものがオーディオアンプ用に買ってストックしているものなので、なんとなく使いづらい(^q^;適当なパーツを仕入れてテストしてみるつもり。