headerのE5V/GNDから電源を供給した。ベースマシン2016年7月22日金曜日タンタル電解コンデンサとアルミ電解コンデンサの比較aitendoで4.7uFのタンタルコンデンサを仕入れたので、LCRメータのDE-5000で特性を見てみた。4.7610kHzまではタンタルの方がアルミより良いが100kHzになると逆転。0.02ESRは1kHzぐらいまではタンタルとアルミが同程度だが、10kHz以上ではアルミの方が良い。タンタルはスペック的にはあんまりよくないという印象。サイズが小さいのと温度特性が良い(らしい)のがメリットだが、デカップリングコンデンサと使ってショートした時を考えると電源にヒューズかポリスイッチを入れないといけないのでどうだかな~。一回は使ってみようか。夏場になってきてPCM5102Aを使ったファンクションジェネレータが誤動作するようになってきた。通電後しばらくすると出力波形がぐちゃぐちゃになる。(操作はできる)プログラムでダイ温度を表示できるようにしているので見てみると40°C程度まで上がっていた。なんちゃって放熱器をつけていたが、ちゃんとした(?)放熱器をaitendoで仕入れたので付け替えてみた。共立で売っている熱伝導シールで接着した。触ってみるとPCM5102Aも相当発熱していたので、もともと使っていたものはPCM5102Aの方につけた。室温28°Cで旧ラジエーター:5分後38°C新ラジエーター:5分後37°Cと効果はそれほどかわらなかった(^q^;が、PCM5102Aの方にも放熱器を付けたおかげか、20分ぐらい様子を見ても波形がぐしゃぐしゃになることはなくなった。5LPのEEPROMを使ってみる実験をしたので、設定値をEEPROMに保存して電源再投入後も前の設定が呼び出されるように改良した。オーディオ用DACを使ったファンクションジェネレータ少ないパーツで電流を検出する。5V電源の電流値を検出する回路で、AVR等を使ってLCDに表示することを想定。LTSpiceでシミュレーション回路図I1が電流源でRLに電流を流し、0.1ΩのRshuntで電圧降下させて電圧として取り出している。Side)これを単電源OPAMPのLM358の23倍の非反転増幅回路で増幅して電流検出値として「OUT」から取り出し、ADCに入力する。青色のI(i1)が電流、V(out)が出力値。電流は0mA~500mAにしているが、出力値は50mA以下では非線形な感じで最小値が0.1V程度になっている。上側のグラフのV(n003)はRShuntのプラス側の電圧値で、こちらは線形なのでLM358の特性なのかもしれない。実際にはOPAMPの入力バイアス電圧(VIO)が23倍に増幅されて出力されるのでこれも補正する必要がありそう。配線図INからGNDの5V電源と、オペアンプを駆動する5V電源を2つ用意して測定した。実測値Rshunt(Ω)0.11R1(Ω)989.6R2(Ω)21860A23.08973323VIO(V)0.0234Aは増幅率、VIOはLM358の入力オフセット電圧。23.4mVなのでそこそこ大きい値だ。15.29%Iはテスタで測った電流値。VIOを加味しても400mA程度だとかなり大きな誤差が出た。メモ:AVRの内蔵レギュレーターの1.1Vを使ってA/D変換すれば、精度に目をつぶれば0mA~500mA程度まで測定できる。ATTiny13はADCはあるが、I2Cに対応していないのでLCDに表示できない。NXPのLPC810なら8PinでもI2Cが使えるが、3.3V駆動なので3.3VのLDOが必要。LCDが3.3V駆動なのでちょうどいいか。ATTiny85のDATASHEETを見るとGAINx20のADCが使えるようだ。Sideで測定できるかもしれない。DCFとDCAを組み合わせると結構不安定になり、フィルターのcutoff/resonaceのツマミの位置でブツブツ言ったり、発振してしまったりする。製品のように安定して使えるわけではないが、ギリギリのパラメーターを狙っていくのも面白いかもしれない。(←言い訳半分)ブレッドボードでの実験もそろそろ限界っぽいので、シーケンス打ち込み用のUIをつなぐ前に、ユニバーサル基板で組んでしまう予定。ch2:DCAの出力メモ:DCOの出力はGND~VDDの波形なのでACカップリングした。→GNDを中心に振れる波形になった。DCOの出力にデジタル歪が乗っているのでLPFを入れる。DCFがうまく動かなかった原因はOPAMPのICソケットの接触不良のようだ。丸ピンのICソケットを一段かませたら安定しているようだ。DCFの後段でACカップリングしたが、DCOとDCFの間に入れた方がいいか。「ヘッドホン・アンプ製作実例集」に付属のPCM2904基板とLME49600を使ったヘッドホンアンプをつないで実験してみた。PCM2904は単電源で、出力もGND~VDDで振れる。ACカップリングするのが普通だが、LME49600のDATASHEETに載っている参考回路はDCサーボが入っていて、DCオフセットをキャンセルするようになっている。(参考:「LME49600のヘッドホン・アンプをブレッドボードで実験してみた。」)したがって、理屈の上ではACカップリングしなくてもDCオフセットは除去される。ACカップリングしなくてもちゃんと動作するか確認してみた。1.54HzR1、R2は入力レベル調整用のボリュームで、ステップ解析した。配線図PCM2704の出力を10kΩ/AのPOTで減衰させ、CRで構成したHPFを通してLME49600のアンプ回路に入力している図。このCRを通す場合とバイパスした場合を見てみた。負荷にはLME49600の4PIN(VOUT)とGNDの間に47ΩのRを入れた。入力信号はWaveGeneで1kHzのサイン波を生成し、PCM2704から出力した。(DCオフセット)どちらもDCオフセットはほとんど除去されているが、ACカップリングした方が少なくなっている。ACカップリングしないと電源投入直後は出力も+側に偏っていて、じわじわとGNDに落ち着いてくるようだ。サイン波の場合はACカップリングしなくてもある程度大丈夫そうだが、音楽信号を入れるとそうでもなかった。ACカップリングなしACカップリングありACカップリングしないと出力もプラス側に偏ってしまう。PCM2704の出力に入れている10kΩ/AのPOTを最大付近にした場合だけこうなる。入力を少し絞ればGND付近に落ち着く。サイン波なら大丈夫で音楽信号だとだめな原因は謎。DCオフセットがあるとヘッドホンの振動版が常に偏ってしまうので特性も悪化するし、ヘッドホンにも悪い。ヘッドホンアンプ2016年7月16日土曜日Arduinoとアナログ・バンド・パスフィルタでなんちゃってFFTをしてみる。FFTというか周波数分離の実験です。BPFで周波数を選択してArduinoのADCに入力してやって周波数分布が見れるかどうかという実験。BPFはOPAMPを使ったアクティブ・フィルターもあるが、実装がめんどくさい。ADCの入力インピーダンスは高いようなので、信号源の出力インピーダンスを十分低くできればパッシブ・フィルターも使えそうだ。インダクタを使ったRLCフィルターもあるが、オーディオ帯域では定数がでかくなってしまってなかなか大変そう。RCのLPFとHPFを連結すればBPFになるので、これで実験してみた。Serial.println(lineBuffer);}自作のPCM5102Aを使ったファンクションジェネレータからサイン波を出力し、シリアル通信のグラフ化ツールのCPLTを使ってグラフ化してみた。高周波数になるとAuduinoのSerial通信やADC値の読み込みのせいで(だと思う)、サンプリング精度が低くなってファンクションジェネレータの出力のch1波形がぐちゃぐちゃになっている。精度は悪いが、一応特定の周波数に反応できているようだ。メモ:積セラを使うと精度が悪化するのでできればフィルムコンで。同じフィルムコンでもマイラとポリプロピレンのように特性が違うといろいろややこしくなりそう。ADCのサンプリングレートもある程度高くないと帯域が稼げない。(デジタル・オシロといっしょ)ほんとは増幅器を入れたいところだが、それだとアクティブフィルタと部品数がほとんど変わらないので意味がない(^q^;フィルタの位相ずれがあるので、プログラムでも入力値を平均化するなどした方が良さそう。(22)ベースマシン用のコントロール・パネルを作ってみた。アルミ板で制御盤を作る構想。少ないパーツで電流を検出する。NucleoシーケンサーとDCO、DCF、DCAの結合テスト(UIなし)LME49600とPCM2704基板をつないでみる実験Arduinoとアナログ・バンド・パスフィルタでなんちゃってFFTをしてみる。電流を検知するパイロットランプ(OPAMPと抵抗だけで考える)コモンモード・チョーク・フィルターをACアダプタにかけてみる実験。LME49600のヘッドホン・アンプをブレッドボードで実験してみた。電解コンデンサの標準品とオーディオ用を比較してみた。OPAMPの入力電圧が負電源の電圧以下になった場合をLTSpiceでシミュレーションしてみた。DACのPCM2704基板を使ってみる。