■2017年07月

■積層セラミックコンデンサの特性メモ

積層セラミックコンデンサ(MLCC)の特性については村田製作所ウェブサイトのコンデンサPLAZAに記載されています。それによると、高誘電率系MLCCは温度・時間経過・DCバイアス・AC電圧といった各条件により容量が変化してしまうということです。電源部分によく使われるMLCCですが、今回はハイパスフィルタ(HPF)・ローパスフィルタ(LPF)で使用し、さらにDCバイアス電圧をかけて特性を測定してみます。

10_191_1mlccp.jpg
今回使用したMLCCは高誘電率系の耐圧50V、F特性(JIS規格)のものです。たぶんEIA規格ではY5V特性に近いだろうと思います。実測値約94nFのもの2個を使いましたが、測定値はすぐ変動するためあまりあてになりません。比較用にフィルムコンデンサも準備しました。実測値はそれぞれ103nF、103nF、82nF(34nF+48nF並列)、82nFです。

▽回路図
10_191_2mlccs.gif
C1とC2を変更します。電圧は0V(GND)、4.5V、9Vの3パターンですが、フィルムコンデンサは電圧による容量変化がほとんどないので、0Vのみの測定です。電圧を変えてすぐは値が安定しないため、数分放置してから測定しました。PCの出力は約1Vrmsです。

▽結果
10_191_3mlcc.gif
<周波数特性>
0V、4.5Vの場合は103nFのフィルムコンデンサと比較すると高域側(LPF)で差がやや大きくなっています。9Vだと82nFのフィルムコンデンサよりズレていて、かなりの容量低下となるようです。X7R特性であればもっと容量変化は少なくなると思います。
<歪率>
バイアス電圧が高い方が歪率が悪化しています。低域は特に悪化していますが、もともとレベルが下がっている部分なので音への影響はそれほどないかもしれません。むしろ倍音が増えていい感じになるかもと思いMLCC10個直列や並列での測定もしてみましたが、歪率はほとんど変わりませんでした。

エフェクターに使うコンデンサとしてはやはりフィルムコンデンサが無難で、無理にMLCCを使う必要はないでしょう。一応省スペースで若干安いという利点はあるので、自分用のエフェクターには適宜使っていくと思います。

■RasPd2 プログラミング編

参考になるかわかりませんが、とりあえずRasPd2に入っているファイルをアップロードしておきます。(直リンクできないようなのでこちらの別ページにダウンロードリンクを載せています。)

▽コントロール割り当て
左スイッチ: エフェクト切替、切替時に右LEDが点滅
中央スイッチ: 特殊機能(ブースト機能等)オン・オフ、オン時中央LED点灯
右スイッチ: 長押しでシャットダウン
各ポット: エフェクトパラメータ
フットスイッチ: エフェクトオン・オフ、オン時左LED点灯

今回の内部プログラムはRasPd1のプログラムを単に移植しただけのものです。エフェクトを3種類入れているものの、エフェクトを切り替えた後いちいち各ポットを設定しなおさなければいけない仕様なので、現実的な運用は面倒だと思います。もちろん中身は自由に変更できるので、今後いろいろと発展させていきたいです。変態的なエフェクトをプログラムするのもいいし、スマートフォンと連携してエフェクトを操作するなんてこともできるかもしれません。



<スイッチ・LED>
RasPd1と同様、GPIOピンによるスイッチやLEDの制御を行っています。
こちらで丁寧に解説されています。→RaspberryPi電子工作入門

<可変抵抗>
エフェクトパラメータ設定は、ポットで分圧した電圧値をADコンバータMCP3008で読み取るという方式です。
こちらのページのプログラムを改変して利用しました。→Raspberry PiのPythonからTMP36のアナログ温度センサとMCP3008のADコンバータを使う
値の取得は0.3秒ごとにしています。取得した値が前回の値から変化していたとき、RasPd1と同様pdsendでPdへデータ送信しています。ポットを回したとき反応が遅く雑音が発生しますが、ワウペダルではないので実用上問題ないでしょう。

<データ保存>
RasPd1からの名残でパラメータ保存機能は一応残っています。しかしすぐにパラメータが上書きされてしまうため、意味がない状態です。工夫次第ではプリセット保存・呼び出しといった機能をつけることも可能だと思います。



ハードウェア編へ  ソフトウェア編

■RasPd2 ソフトウェア編

Pure Dataやオーディオを優先的に動かすため、下準備をしていきます(太字表記はコマンド)。
Raspberry Pi zeroの基本設定はこちら

通信に使うUSBケーブルは5V給電できないよう加工しています(外部から5V給電しているため)。さらに、うまく挿し込めるように角度を変えています。
03_188_1raspd2u.jpg



<CPU周波数スケーリング>
CPUのクロック周波数を常に1000MHzで動作するよう設定変更します。
$ sudo nano /boot/config.txt
#arm_freq=800 を arm_freq=1000 に変更
$ sudo apt-get install cpufrequtils(cpufrequtilsインストール)
$ sudo nano /etc/init.d/cpufrequtils
43行目あたり GOVERNOR="performance"



<不要なプログラムを停止>
RasPd1 ソフトウェア編その1と同じです。



<オーディオ設定>
WM8731のドライバを有効化します。
$ sudo nano /boot/config.txt
#dtparam=audio=on (コメントアウトしてオンボードのオーディオをオフに)
dtoverlay=rpi-proto (追加記載)

再起動後、オーディオ設定プログラムを起動します。
$ alsamixer
F5で全表示、スペースキー・↑↓キー・mキーで機能オン(OO)・オフ(MM)や機能切替です。設定は自動で保存されます。
Master 56 [dB gain: -9.00, -9.00]
Master Playback ZC [Off, Off]
Sidetone 0 [dB gain: -15.00]
Line CAPTURE
Mic [Off]
Mic Boost 0 [dB gain: 0.00]
Mic Boost 0 [dB gain: 0.00]
Playback Deemphasis [Off]
Capture 87 [dB gain: 9.00, 9.00]
ADC High Pass Filter オフ
Input Mux [Line In]
Output Mixer HiFi オン
Output Mixer Line Bypass [Off]
Output Mixer Mic Sidetone [Off]
Store DC Offset [Off]



<Pure Data(Pd)設定>
RasPd1 ソフトウェア編その2と同じですが、さらに低レイテンシー設定が可能です。また、44.1kHzには対応していませんので注意が必要です。Pd設定ファイルの下記該当箇所を変更しました。
$ nano .pdsettings
audiobuf: 5
rate: 48000



<自動起動設定>
RasPd1 ソフトウェア編その2と同じです。
今回のメインプログラム名は main2.py です。



<ADコンバータ MCP3008用設定>
$ sudo nano /boot/config.txt
dtparam=spi=on (#を外してSPI通信をオンに)
$ sudo apt-get install python-spidev(SPI通信に必要なPythonライブラリをインストール)



ハードウェア編へ  プログラミング編

■Raspberry Pi zero 設定メモ

SSH接続とファイル操作ができるようになるまでの自分用設定メモです(太字表記はコマンド)。
Raspberry Pi 3 の設定メモはこちら
※Raspberry PiやRaspbianの仕様変更によりうまくいかなくなる可能性があります。



Raspbian Stretch Liteダウンロード、Win32 Disk ImagerでmicroSDカードに書き込み
/boot/ ディレクトリに ssh という名前のファイルを置いておく



(Raspberry Pi zero用)
データ通信できるmicroUSBケーブルをPCと接続するだけで通信可能(OTGモード)
WindowsからTera TermでSSH接続
参考ページ→ノートパソコンだけで raspberry pi zero をセットアップする方法

<インターネット接続>
参考ページ→SSH接続で raspberry pi zero の設定を行う1(インターネットに接続する)

<IPアドレス固定>
$ ifconfig (usb0 の inet addr: を確認)
$ sudo nano /etc/dhcpcd.conf
以下を追記(割り当てられたアドレスが192.168.137.99の場合)
interface usb0
static ip_address=192.168.137.99
static routers=192.168.137.1
static domain_name_servers=192.168.137.1



(Raspberry Pi zero W用)
<無線LAN設定>
Raspberry Pi 起動前に、以下の内容の wpa_supplicant.conf という名前のファイルを/boot/ ディレクトリに置いておく
country=JP
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
network={
ssid="SSID"
psk="password"
}

起動後、Tera Termで raspberrypi.local にSSH接続

パスワードをわかりにくくする場合以下の操作をしておく
$ sudo bash -c 'wpa_passphrase "SSID" "password" >> /etc/wpa_supplicant/wpa_supplicant.conf'
$ sudo nano /etc/wpa_supplicant/wpa_supplicant.conf
すでに記載がある「network={…}」や「#psk="password"」を消去

<IPアドレス固定>
$ sudo nano /etc/dhcpcd.conf
以下を追記(ルーターのアドレスが192.168.10.1の場合)
interface wlan0
static ip_address=192.168.10.99/24
static routers=192.168.10.1
static domain_name_servers=192.168.10.1



再起動後、WindowsからTera Termで固定したIPアドレスにSSH接続

<アップデート>
$ sudo apt-get update
$ sudo apt-get upgrade

<初期設定>
$ sudo raspi-config
Change User Password
Boot Options > Desktop / CLI > Console Autologin
Localisation Options > Change Timezone > asia > tokyo
※Pure Dataと相性が悪そうなので日本語表示しない

<ルートパスワード変更>
$ sudo passwd root

<Samba設定>
$ sudo apt-get install samba
$ sudo nano /etc/samba/smb.conf
Samba設定参考サイト→ツール・ラボ » 第14回 Raspberry Piのファイルサーバ設定をする
※プログラムが実行可能なように、ファイルのパーミッションも0775にしておく
Sambaのユーザ登録
$ sudo smbpasswd -a pi

Windowsのエクスプローラーのアドレスに\\raspberrypi\piを入力、ユーザー名・パスワードを入れアクセス

■タグ : RaspberryPi

■RasPd2 ハードウェア編

03_187_1raspd2p.jpg
Raspberry Pi Zeroを使い、コンパクトなデジタルエフェクターを作りました。今回はLCDがなく、単機能エフェクターとして使うことを想定しています。オーディオインターフェイスはUSBではなくI2Sで通信するとレイテンシーが低減できるようで、WM8731というICを使用しました。レイテンシー実測値は7msとほとんどリアルタイムに近いレベルとなりました。

WM8731については、別記事に記載しています。
WM8731 設定メモ
Raspberry Pi Zeroでもほとんど設定は同じですが、ADC High Pass Filterはオンにするとノイズが増えたためオフにしました。音量は Master 56(-9dB) Capture 87(+9dB) です。

SN比を稼ぐため、RasPd1のときには外部回路で入力前増幅→出力後減衰を行っていました。WM8731のデータシートを見てみると、IC内部でアナログな増幅・減衰ができるため外部回路は入力バッファのみとしました。電源電圧が3.3Vと低いですが、+9dB(2.8倍)程度までは歪まないだろうと思います。

▽回路図
03_187_2raspd2s.gif
出力のコンデンサが100uFと大きい値なのはイヤホンを直接繋ぐためでしたが、誤って大出力になったとき危険なのでイヤホンでのテストはしない方がいいでしょう。各スイッチには少し面倒ですがチャタリング防止の抵抗やコンデンサを入れています。とりあえずたくさんコントロールを準備したという感じで、割り当てをどうするかは未定です。WM8731への接続に入っている抵抗(ダンピング抵抗)はありあわせの22Ωにしましたが、役割はあまり理解していません。

ノイズ対策のため、電源・GNDは4系統に分かれています。
 [アナログ9V電源・GND(バッファ用)]
   ↓
 [デジタル5V電源・GND(Raspberry Pi用)] → [アナログ3.3V電源・GND(WM8731用)]
   ↓
 [デジタル3.3V電源・GND(WM8731用)]

▽レイアウト
03_187_3raspd2l.png
▽PCB(横111.8mm縦73.7mm)
03_187_4raspd2lp.png
あまり見慣れない水晶振動子というパーツがありますが、ケースが金属なので基板から少し浮かせて取り付けています。周波数の値はそんなに高精度のものでなくていいようです。WM8731には、シングルタイプのピンソケットを使うことでICの下にパーツを配置できるようにしています。レイアウト上部の基板間の配線は、着脱式にして後からの修正をしやすくしました。また、GND等のいくつかのジャンパーは基板の裏側(半田面)で配線しています。

今回もノイズには悩まされました。まずサーというホワイトノイズがRasPd1より多く出ていました。Raspberry Pi自体から電磁波的ノイズが出ているのかと思いアルミホイルでシールドしてみましたが効果なしでした。pedalSHIELD DUEのようにRチャネルに位相反転した入力を入れて、ノイズキャンセルしようとしましたがこれもダメでした(LとRでノイズの乗り方が違うようです)。結局電源を分離すると解決したため、ノイズ源はWM8731用アナログ電源だったようです。

その他にもギターを繋いだときに少しキーン&プツプツというノイズが出ていました。RasPd2内蔵のバッファを一旦外し、別電源のバッファを前段に繋いだ場合はほとんどノイズが消えたため、電源とGNDの取り方が原因と考えました。試行錯誤の結果、絶縁型のDC-DCコンバータを使用し、その出力部に各GNDを集めるというレイアウトになっています。

下写真のように基板を2枚重ねにしています。
03_187_5raspd2g.jpg
ケースは高さがあるHAMMOND1590BSです。発熱が心配ですが、裏フタをあけた状態ではCPU温度50℃程度で安定しているようです。そのうち無線接続可能なRaspberry Pi Zero Wに変更し、改めて長時間使用時の安定性を調べようと思います。



ソフトウェア編へ  プログラミング編

管理人

ブログ内検索

メールフォーム

当ブログに関するお問い合わせはこちらからお願いします。 ※FAQ(よくある質問)もお読みください。

お名前
メールアドレス
件名
本文

アクセスカウンター