Intel Edison 用 yocto Linux をコンパイルする

Intelが出してきた Atom 搭載の Edisonモジュール。組み込み用途のLinuxはARMコアのしか触ったことが無かったので、少し気になることもあり購入してみました。表面に " What will you make? " という挑発ともとれる刻印が施されていますし。

このモジュールはRspberry Pi等と異なりSDカードスロットがなく、内蔵Flashから起動させるのが通常の方法の用です。拡張すればSDカードからkernel呼び出しも可能かもしれませんが。内蔵のFlashには購入時点で既に yocto Linux がインプリされています。なので、電源を入れればLinuxが起動します。この状態でも色々と使える訳ですが、kernelを自分でコンパイル出来る所まで出来るともう少し踏み込んだ事ができます。なので、先ずは yocto Linux をコンパイルしてみることにチャレンジしました。

やることは、公式フォーラムにアップされている "Intel Edison Board Support Package User Guide" に書かれているのですが、何というか、知っている人はできるが知らない人がみると先ず何をするのかが分からない状態に陥りそうな内容です。現に知らない人である私はスタートで躓きました。なので、私のやった事を備忘録も兼ねて書いておきます。

まず最初にする事は、Linux環境を構築する事です。Linux専用機を用意しても良いし、デュアルブートにしてもいいですが、私の場合前に書いたようにVMware上にUbuntu Linux をインストールしました。

コンパイル時に必要なコマンド(パッケージ)をインストールします。

$ sudo apt-get install build-essential git diffstat gawk chrpath texinfo libtool gcc-multilib


後はコンパイル用に用意してくれているファイルをダウンロードして実行するだけ…なんですが、初めて git をインストールした人は以下の設定で git に メールアドレスと名前を登録しておく必要があります。これをやらないと処理途中で止まってしまいます。

$ git config --global user.email "jujurou@hogehoge.co.jp"
$ git config --global user.name "jujurou"


自らダウンロードするファイルは Software Downloads のページにある "Edison Linux source files" です。現時点では edison-src-rel1-maint-rel1-ww42-14.tgz というファイル名になっていました。WindowsでダウンロードしてLinuxに渡すのがめんどくさかったので、リンク先を調べてLinux側で直接ダウンロードしました。

$ wget http://downloadmirror.intel.com/24389/eng/edison-src-rel1-maint-rel1-ww42-14.tgz
$ tar xvf ./edison-src-rel1-maint-rel1-ww42-14.tgz


ダウンロードした圧縮ファイルを展開すると edison-src というディレクトリが現れます。この中の device-software に setup.sh というファイルがあるので、これを実行します。

$ cd ./edison-src/
$ ./device-software/setup.sh


すると、edison-src ディレクトリ 直下 に build, poky ディレクトリができます。本当は setup.sh の実行時にダウンロード先を指定できるので、指定しておくと、今後複数の環境(kernelの修正を色々とするときなどです)を用意する時にダウンロードの時間を短縮できるのですが、指定しなかったらデフォルトの場所にダウンロードされるようです。次にコンパイル用の環境変数を登録します。

$ source poky/oe-init-build-env


このコマンドを実行すると勝手に build ディレクトリに移動してくれちゃいます。そこで bitbake コマンドを使用してイメージファイルを作成することになります。bitobake……少々いや~な気がしたのですが、的中しました。ようは bitbake を実行して必要なソースコードをダウンロードして全ての物をコンパイルするのです。kernel、コマンド…。つまり、ここからが結構時間がかかります。LANの通信回線が細い場合は尚更です。

いよいよコンパイルの開始です。回線の速度にもよりますが、4,5時間はかかるので余裕のあるときに実行するのが良いです。

$ bitbake edison-image
Parsing recipes: 100% |#########################################| Time: 00:01:14
Parsing of 905 .bb files complete (0 cached, 905 parsed). 1272 targets, 92 skipped, 0 masked, 0 errors.
NOTE: Resolving any missing task queue dependencies

Build Configuration:
BB_VERSION = "1.22.0"
BUILD_SYS = "x86_64-linux"
NATIVELSBSTRING = "Ubuntu-14.04"
TARGET_SYS = "i586-poky-linux"
MACHINE = "edison"
DISTRO = "poky-edison"
DISTRO_VERSION = "1.6"
TUNE_FEATURES = "m32 core2"
TARGET_FPU = ""
meta
meta-yocto
meta-yocto-bsp
meta-edison
meta-edison-distro
meta-edison-middleware
meta-edison-arduino
meta-edison-devtools = ":"

NOTE: Preparing runqueue
NOTE: Executing SetScene Tasks
NOTE: Executing RunQueue Tasks
WARNING: Failed to fetch URL ftp://ftp.debian.org/debian/pool/main/b/base-passwd/base-passwd_3.5.29.tar.gz, attempting MIRRORS if available
WARNING: Failed to fetch URL http://downloads.sourceforge.net/project/libpng/libpng16/1.6.8/libpng-1.6.8.tar.xz, attempting MIRRORS if available
WARNING: Failed to fetch URL ftp://ftp.debian.org/debian/pool/main/n/netbase/netbase_5.2.tar.gz, attempting MIRRORS if available
WARNING: Failed to fetch URL ftp://ftp.uni-erlangen.de/pub/Linux/LOCAL/dosfstools/dosfstools-2.11.src.tar.gz, attempting MIRRORS if available
WARNING: Failed to fetch URL ftp://lsof.itap.purdue.edu/pub/tools/unix/lsof/lsof_4.87.tar.bz2, attempting MIRRORS if available
WARNING: Failed to fetch URL ftp://ftp.debian.org/debian/pool/main/n/net-tools/net-tools_1.60-25.diff.gz;apply=no;name=patch, attempting MIRRORS if available
WARNING: Failed to fetch URL ftp://ftp.debian.org/debian/pool/main/d/dpkg/dpkg_1.17.4.tar.xz, attempting MIRRORS if available
WARNING: Failed to fetch URL http://ftp.de.debian.org/debian/pool/main/m/mklibs/mklibs_0.1.38.tar.gz, attempting MIRRORS if available
WARNING: Failed to fetch URL ftp://ftp.berlios.de/pub/cdrecord/alpha/cdrtools-3.01a20.tar.bz2, attempting MIRRORS if available
NOTE: validating kernel config, see log.do_kernel_configcheck for details
WARNING: QA Issue: ELF binary '/home/jujurou/edison/yocto/edison-src/build/tmp/work/core2-32-poky-linux/systemd/1_213+gitAUTOINC+c9679c652b-r0/packages-split/udev/bin/udevadm' has relocations in .text
WARNING: QA Issue: ELF binary '/home/jujurou/edison/yocto/edison-src/build/tmp/work/core2-32-poky-linux/systemd/1_213+gitAUTOINC+c9679c652b-r0/packages-split/systemd/lib/systemd/systemd-shutdown' has relocations in .text
WARNING: QA Issue: ELF binary '/home/jujurou/edison/yocto/edison-src/build/tmp/work/core2-32-poky-linux/systemd/1_213+gitAUTOINC+c9679c652b-r0/packages-split/systemd/lib/systemd/systemd-logind' has relocations in .text
WARNING: QA Issue: ELF binary '/home/jujurou/edison/yocto/edison-src/build/tmp/work/core2-32-poky-linux/systemd/1_213+gitAUTOINC+c9679c652b-r0/packages-split/systemd/lib/systemd/systemd-networkd' has relocations in .text
WARNING: QA Issue: ELF binary '/home/jujurou/edison/yocto/edison-src/build/tmp/work/core2-32-poky-linux/systemd/1_213+gitAUTOINC+c9679c652b-r0/packages-split/systemd/lib/systemd/systemd-machined' has relocations in .text
WARNING: QA Issue: ELF binary '/home/jujurou/edison/yocto/edison-src/build/tmp/work/core2-32-poky-linux/systemd/1_213+gitAUTOINC+c9679c652b-r0/packages-split/systemd/lib/systemd/systemd-random-seed' has relocations in .text
WARNING: QA Issue: ELF binary '/home/jujurou/edison/yocto/edison-src/build/tmp/work/core2-32-poky-linux/systemd/1_213+gitAUTOINC+c9679c652b-r0/packages-split/systemd/lib/systemd/systemd-localed' has relocations in .text
WARNING: QA Issue: ELF binary '/home/jujurou/edison/yocto/edison-src/build/tmp/work/core2-32-poky-linux/systemd/1_213+gitAUTOINC+c9679c652b-r0/packages-split/systemd/lib/systemd/systemd' has relocations in .text
WARNING: QA Issue: ELF binary '/home/jujurou/edison/yocto/edison-src/build/tmp/work/core2-32-poky-linux/systemd/1_213+gitAUTOINC+c9679c652b-r0/packages-split/systemd/lib/systemd/systemd-journald' has relocations in .text
WARNING: QA Issue: ELF binary '/home/jujurou/edison/yocto/edison-src/build/tmp/work/core2-32-poky-linux/systemd/1_213+gitAUTOINC+c9679c652b-r0/packages-split/systemd/lib/systemd/system-generators/systemd-fstab-generator' has relocations in .text
WARNING: QA Issue: ELF binary '/home/jujurou/edison/yocto/edison-src/build/tmp/work/core2-32-poky-linux/systemd/1_213+gitAUTOINC+c9679c652b-r0/packages-split/systemd/bin/systemd-tmpfiles' has relocations in .text
WARNING: QA Issue: ELF binary '/home/jujurou/edison/yocto/edison-src/build/tmp/work/core2-32-poky-linux/systemd/1_213+gitAUTOINC+c9679c652b-r0/packages-split/systemd/bin/systemctl' has relocations in .text
WARNING: QA Issue: ELF binary '/home/jujurou/edison/yocto/edison-src/build/tmp/work/core2-32-poky-linux/systemd/1_213+gitAUTOINC+c9679c652b-r0/packages-split/systemd/bin/systemd-tty-ask-password-agent' has relocations in .text
WARNING: QA Issue: ELF binary '/home/jujurou/edison/yocto/edison-src/build/tmp/work/core2-32-poky-linux/systemd/1_213+gitAUTOINC+c9679c652b-r0/packages-split/systemd/bin/machinectl' has relocations in .text
WARNING: QA Issue: ELF binary '/home/jujurou/edison/yocto/edison-src/build/tmp/work/core2-32-poky-linux/openssh/6.5p1-r0/packages-split/openssh-scp/usr/bin/scp.openssh' has relocations in .text
WARNING: QA Issue: ELF binary '/home/jujurou/edison/yocto/edison-src/build/tmp/work/core2-32-poky-linux/openssh/6.5p1-r0/packages-split/openssh-ssh/usr/bin/ssh.openssh' has relocations in .text
WARNING: iperf: No generic license file exists for: NewBSD in any provider
NOTE: Tasks Summary: Attempted 2802 tasks of which 29 didn't need to be rerun and all succeeded.

Summary: There were 26 WARNING messages shown.


いくつかWARNINGがでましたが、問題ないレベルの内容でした。build/tmp/deploy/images/edison/ 下にコンパイルした内容が置かれています。

$ ls ./build/tmp/deploy/images/edison/
bzImage
bzImage--3.10.17+git0+6ad20f049a_c03195ed6e-r0-edison-20141116014354.bin
bzImage-edison.bin
edison-image-edison-20141116014354.hddimg
edison-image-edison-20141116014354.rootfs.ext4
edison-image-edison-20141116014354.rootfs.manifest
edison-image-edison.ext4
edison-image-edison.hddimg
edison-image-edison.manifest
modules--3.10.17+git0+6ad20f049a_c03195ed6e-r0-edison-20141116014354.tgz
modules-edison.tgz
README_-_DO_NOT_DELETE_FILES_IN_THIS_DIRECTORY.txt
u-boot.bin
u-boot-edison-2014.04-1-r0.bin
u-boot-edison-2014.04-1-r0.img
u-boot-edison.bin
u-boot-edison.img
u-boot-envs
u-boot.img


次に、これらをEdisonに書き込む準備をします。Flashライターのフォーマットに合わせる作業といったところでしょうか。

$ ./device-software/utils/flash/postBuild.sh
1+0 records in
1+0 records out
4194304 bytes (4.2 MB) copied, 0.0334677 s, 125 MB/s
1+0 records in
1+0 records out
4194304 bytes (4.2 MB) copied, 0.030057 s, 140 MB/s
1+0 records in
1+0 records out
4194304 bytes (4.2 MB) copied, 0.0233742 s, 179 MB/s
1+0 records in
1+0 records out
4194304 bytes (4.2 MB) copied, 0.0229158 s, 183 MB/s
1+0 records in
1+0 records out
4194304 bytes (4.2 MB) copied, 0.0208323 s, 201 MB/s
1+0 records in
1+0 records out
4194304 bytes (4.2 MB) copied, 0.0180647 s, 232 MB/s
1+0 records in
1+0 records out
4194304 bytes (4.2 MB) copied, 0.0210134 s, 200 MB/s
cp: cannot stat ‘/home/jujurou/edison/yocto/edison-src/build/tmp/deploy/images/edison/vmlinux’: No such file or directory
Image Name: Edison Updater script
Created: Sun Nov 16 04:26:02 2014
Image Type: PowerPC Linux Script (uncompressed)
Data Size: 14683 Bytes = 14.34 kB = 0.01 MB
Load Address: 00010000
Entry Point: 00010000
Contents:
Image 0: 14675 Bytes = 14.33 kB = 0.01 MB
**** Done ***
Files ready to flash in /home/jujurou/edison/yocto/edison-src/build/toFlash/
Run the flashall script there to start flashing.
*************
$ ls ./build/toFlash/
edison_dnx_fwr.bin edison_ifwi-dbg-03-dfu.bin filter-dfu-out.js
edison_dnx_osr.bin edison_ifwi-dbg-04.bin flashall.bat
edison_ifwi-dbg-00.bin edison_ifwi-dbg-04-dfu.bin flashall.sh
edison_ifwi-dbg-00-dfu.bin edison_ifwi-dbg-05.bin ota_update.scr
edison_ifwi-dbg-01.bin edison_ifwi-dbg-05-dfu.bin package-list.txt
edison_ifwi-dbg-01-dfu.bin edison_ifwi-dbg-06.bin pft-config-edison.xml
edison_ifwi-dbg-02.bin edison_ifwi-dbg-06-dfu.bin u-boot-edison.bin
edison_ifwi-dbg-02-dfu.bin edison-image-edison.ext4 u-boot-edison.img
edison_ifwi-dbg-03.bin edison-image-edison.hddimg u-boot-envs


こんな感じです。
後はEdisonに書き込み………なんですが、VMwareで実行している場合、直接Linux(VMware内)から書き込みが出来ませんでした。電源ONによるリセットタイミングとUSBの認識タイミングによると思われます。なので、書き込みはWindowsから行いました。

Windwosから書き込みを行う場合は、先ほど用意した書き込み用ファイルをWindows側のファイル名に全角文字等が入らない所に置いておきます。私はDドライブ直下に置きました。また、Windows用の DFU-UTIL を貰ってきて、flashall.batと同じフォルダに入れておきます。

WindowsにEdisonを繋でいない状態でコマンドプロンプトから flashall.bat を実行します。"Please plug and reboot the board" と出たらEdisonのJ16のUSBコネクタとPCを繋ぐと書き込みが開始されます。
※ USBの繋ぐタイミングがあるようで、"Dfu device found" に進まない時があります。その時はUSB抜いて flashall.bat を実行するところからやり直してみてください。

D:\toFlash>flashall.bat
Using U-boot target: edison-blank
Now waiting for dfu device 8087:0a99
Please plug and reboot the board
Dfu device found
Flashing IFWI
Download [=========================] 100% 4194304 bytes
Download done.
Download [=========================] 100% 4194304 bytes
Download done.
Flashing U-Boot
Download [=========================] 100% 245760 bytes
Download done.
Flashing U-Boot Environment
Download [=========================] 100% 65536 bytes
Download done.
Flashing U-Boot Environment Backup
Download [=========================] 100% 65536 bytes
Download done.
Flashing boot partition (kernel)
Download [=========================] 100% 5799936 bytes
Download done.
Flashing rootfs, (it can take up to 5 minutes... Please be patient)
Download [=========================] 100% 536870912 bytes
Download done.
Rebooting
U-boot & Kernel System Flash Success...
Your board needs to reboot twice to complete the flashing procedure, please do n
ot unplug it for 2 minutes.


Edisonを起動してバージョンを確認してみます。

# cat /etc/version
Custom Edison build by jujurou@ubuntu 2014-11-15 17:42:50 PST


作成したファイルが書き込まれているみたいですね。
さて、これからどのように煮たり焼いたりしましょうかね。
スポンサーサイト

tag : Edison

tag : bitbake

VMwareで CUI Linux の実行

今回は、VMwareをらしからぬ使い方をしている私の環境を書きます。
手っ取り早くいえば、TeraTermからSSHでログインしてWinSCPでファイルのアップ/ダウンロードをしているって事です。

私のメインマシンは Windows7 64bit ですが、色々と…特に組み込みLinux関連を触っているとLinuxマシンが必要となってきます。しかし、ノートPCしか持っていないのと、2台を起動して両者を行ったり来たりするのはいやだし、何といってもLinux側はたまにしか起動しないので専用PCを用意したりはしたくありません…今のところ。こういったわがままな要求につきあってくれるのが仮想PCソフトです。私はその中でも有名所のVMwareを使用しています。VMware Player は非営利目的であれば無償で使えます。なので、自作環境では無償版を使用しています。

Linuxを使用するといっても主にクロスコンパイル用で、コマンドラインで操作し、エディタはviを使います。つまり、GUIの機能をほとんど使ってないのです。こんな使用用途の場合、インストールするディストリビューションもCUIで十分。GUIにするとCPUパワーを使うのでもったいないのと、ディスク容量も半端無く膨れあがってしまいます。昔から使い慣れている環境はDebian系で、今は有名所のUbuntuを使用しています。UbuntuにもCUIのバージョンはあります。いわゆるサーバ用途のバージョンなんですがね。


■ VMware環境を構築する
VMwareのページから自分の環境に合った VMware Player をダウンロードしてインストールしてください。私のPCは Windows7 64bit版 なのでそれようのをインストールしています。

次に、Ubuntu の ISO イメージファイルを入手します。今現在の最新版は Ubuntu 14.10 ですが、あまり最新過ぎるとネット上で情報が少なかったりするので、Ubuntu 14.04.1 LTS をインストールします。64bit版でも32bit版でもどちらでもよいのですが、今後の作業内容を見越して 64bit版を選択しています。32bit版の方が有利な場合もあるのでVMwareはディスク容量さえ十分にあれば複数のバージョンをインストールできるので、両方いれるのも選択の一つです。

VMwareを起動し、「新しい仮想マシン」を選択すると iso ファイルを要求してきますので、ダウンロードしておいたファイルを選択します。Ubuntu 14.04.1は簡易インストール(VMwareが自動的にインストール作業をしてくれる)対応してくれているのでインストールが楽です。

vmware_ubuntu_server14_04_01.png

フルネーム、ユーザ名、パスワードを入力します。

vmware_ubuntu_server14_04_02.png

VMware上での管理名として仮想マシン名を入力し、インストール場所を選択します。

vmware_ubuntu_server14_04_03.png

ディスク容量の指定をします。デフォルトでは20GBですが、今後の用途を考え60GBを選択しています。大きい分には問題ないのですが、小さく指定してしまうとクロスコンパイル等でオブジェクトファイルが膨大になってディスク容量を食い潰されるというアッチョンブリケな現象に陥ったことが多々ありました。この場合は物理的なディスク容量に余裕があればパーティションの拡張をすれば解決するのですが、パーティション拡張ソフトを使う必要があるので厄介です。

vmware_ubuntu_server14_04_04.png

これらを選択したらインストールスタートです。後はインストールが完了するまでひたすら待ちます。

vmware_ubuntu_server14_04_05.png

インストール時に設定したユーザ名とパスワードを使用してログインします。キー配列が英語配列になっているので特殊文字を使用する場合は注意してください。その上で、以下のコマンドを入力してパッケージを最新にし、SSHを有効にします。

$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt-get ssh


これで私の使い方ではVMware上での作業は終了です。あっ、ifconfigでIPを調べておいてください。

この後どうするかというと、Windows上でTeraTerm経由でUbuntuに接続して作業を進めます。なんでこんな事をするかというと、CUI版のUbuntuではWindows上でコピーした内容をペイスト出来ないとか、画面出力された内容をコピーできないとか何かと融通が利かないのでUNIX系本来の使い方であるリモートログインで作業を行います。TeraTermだとそれなりにWindowsライクな使い方が出来ますしね。

TeraTermはCOMポート用に使ってたりしたので、インストール画面を取れていません。ほとんどデフォルトでインストールしたと思います。SSHさえチェックを入れておけば良いのです。Cygwinとかは……使いたい人はチェックを入れてください。

TeraTermを起動すると接続先を聞いてきますので、SSH, TCPポート:22を選択してホスト欄にVMware上で動いているUbuntuのIPを記入します。このIPはVMwareにインストールする度に変わるみたいです。逆にインストールしなおさなければ次回も同じIPになります(自分で設定する事もできますが…)。SSH認証画面になります。初めてログインする場合はホスト鍵のフィンガープリントの登録画面になるので、接続を選択しておいてください。SSH認証画面ではユーザ名とパスワード(Ubuntuで設定した物)を入力してOKボタンを押下するとログイン出来ます。

teraterm_01.png

teraterm_02.png

teraterm_03.png

これでCUI環境は確立されました。独立したマシンとして使用するならこのままの使用でも良いのですが、Windows上にファイルを持ってきたいとかその逆とかをする場合はVMwareでフォルダの共有設定をします。が、それが面倒な場合は奥の手を使います。いや、正攻法かな?

SSHを利用してファイルのやりとりをするWinSCPというソフトを使用します。使い勝手はFFFTPみたいな感じです……知らない人は……使ってみてください。

winscp_vmware_ssh.png

私の Linux on VMware 環境はこんな感じです。GUIを使うソフトを扱う場合はUbuntu desktop版もインストールしているのでそちらも使いますが、結構GUIでCPUパワーを取られてしまいます。

tag : Linux

tag : VMware

トランス式 USB-DAC LCフィルタ版 その3

その2 ではトランスの2次側に 12kΩ の抵抗を繋いでいました(後続のプリアンプの入力抵抗が 50kΩ のボリュームになるので、合成抵抗が 10kΩ くらいになります)。が、E24系列では 13kΩ を繋いだ方がより 10kΩ に近づくので、13kΩ で再度計測してみました。

combined_resistance.png

LC_Filter_L1_2_7mH_C1_0012uF_VR1_0_VR2_820_R_13k_freq.png LC_Filter_L1_2_7mH_C1_0012uF_VR1_0_VR2_820_R_13k_dist.png
L1=2.7mH, C1=0.012μF, VR1=0Ω, VR2=820Ω, R1=13kΩ

周波数特性も雑音歪率もほとんど変わりませんでした。なので 13kΩ にした状態でよしとし、前に作成した トランス式 USB-DAC CRフィルタ版 の中身をごっそりと入れ替えることにしました。配線とかコネクタ、LEDはそのままにして、USB-DAC基板とトランス周りの基板を入れ替えました。

RIMG0608.jpg RIMG0607.jpg

音だし確認をしてみたところ、以前とは比べものにならないほどクリアになった気がします。低音部分も癖が無くなりました。まっ、USB-DACも取り替えてしまっているので電解コンデンサ部分がまだなじんでないのかもしれないです。

以前使用していたトランス(TPAS-2S)はもう1台USB-DACを作る必要があるので、そちらに回すことにします。

tag : DAC

tag : ぺるけ

トランス式 USB-DAC LCフィルタ版 その2

その1で計測した周波数特性ですが、6Hz付近がポッコリと膨らんでいます。入力波形の振幅を下げるとポッコリがなくなるかも…という話がありましたので、-6dBの波形を取ってみましたが、今度は20Hz以下で徐々に上昇していくというとんでもない波形になってきました。

LC_Filter_L1_2_7mH_C1_0012uF_VR1_10_VR2_820_R_12k_02_freq.png

周波数特性を計測するときに使用している電子電圧計はテクシオ・テクノロジーのGVT-417Bで周波数応答が20Hz~200kHz:±3%、10Hz~1MHz:±10% となっています。なので、20Hz以下って全然当てにならなさそうなんですね。こりゃまいった…です。なだらかに落ちていってくれているとあまり気にしなかったのですが、ポッコリと出っ張っていたり、上昇していったりなのでこの部分を正確に知りたくなってきました。

そこで白羽の矢が刺さったのがデジタルオシロスコープです。岩通のDS-5354で500MHz,2GS/sと高速サンプリングが可能です。タイ米を叩きましたから…。このオシロの補助機能でRMSを出してみると、-6dBFSではフラットな特性が続いている事が分かりました。それと次のように周波数が低くなってくると妙な歪み方をしている事が分かりました。

LC_Filter_L2_7mH_C0012μF_R820_R_12k_7Hz
L1=2.7mH, C1=0.012μF, VR1=0Ω, VR2=820Ω, R1=12kΩ, 7Hz

LC_Filter_L2_7mH_C0012μF_R820_R_12k_6Hz
L1=2.7mH, C1=0.012μF, VR1=0Ω, VR2=820Ω, R1=12kΩ, 6Hz

LC_Filter_L2_7mH_C0012μF_R820_R_12k_5Hz
L1=2.7mH, C1=0.012μF, VR1=0Ω, VR2=820Ω, R1=12kΩ, 5Hz

LC_Filter_L2_7mH_C0012μF_R820_R_12k_4Hz
L1=2.7mH, C1=0.012μF, VR1=0Ω, VR2=820Ω, R1=12kΩ, 4Hz

LC_Filter_L2_7mH_C0012μF_R820_R_12k_3Hz
L1=2.7mH, C1=0.012μF, VR1=0Ω, VR2=820Ω, R1=12kΩ, 3Hz

LC_Filter_L2_7mH_C0012μF_R820_R_12k_2Hz
L1=2.7mH, C1=0.012μF, VR1=0Ω, VR2=820Ω, R1=12kΩ, 2Hz

LC_Filter_L2_7mH_C0012μF_R820_R_12k_1Hz
L1=2.7mH, C1=0.012μF, VR1=0Ω, VR2=820Ω, R1=12kΩ, 1Hz

AKI-DACのC5,C6でHPFが形成されているのは周波数が低くなるにつれて振幅が小さくなっている事から分かるのですが、ここまで波形が歪むとは思ってもいませんでした。


低周波数での歪みの事はさておき、テスト治具のL1,C1,VR1,VR2を変更した時の波形を計測してみました(いくつかはオシロの存在に気がつく前に測定した結果です)。L,Cの選定は共振周波数を計算して適度に組み合わせています。

LFP_resonance_frequency.png

LC_Filter_L1_2_7mH_C1_0012uF_VR1_0_VR2_820_R_12k_freq.png
L1=2.7mH, C1=0.012μF, VR1=0Ω, VR2=820Ω, R1=12kΩ

LC_Filter_L1_2_7mH_C1_0012uF_VR1_5_6_VR2_820_R_12k_freq.png
L1=2.7mH, C1=0.012μF, VR1=5.6Ω, VR2=820Ω, R1=12kΩ

LC_Filter_L1_2_7mH_C1_0012uF_VR1_10_VR2_680_R_12k_freq.png
L1=2.7mH, C1=0.012μF, VR1=10Ω, VR2=680Ω, R1=12kΩ

LC_Filter_L1_2_7mH_C1_0012uF_VR1_10_VR2_820_R_12k_02_freq.png
L1=2.7mH, C1=0.012μF, VR1=10Ω, VR2=820Ω, R1=12kΩ

LC_Filter_L1_3_3mH_C1_001uF_VR1_0_VR2_750_R_12k_freq.png
L1=3.3mH, C1=0.01μF, VR1=0Ω, VR2=750Ω, R1=12kΩ

LC_Filter_L1_3_3mH_C1_001uF_VR1_0_VR2_820_R_12k_freq.png
L1=3.3mH, C1=0.01μF, VR1=0Ω, VR2=820Ω, R1=12kΩ

LC_Filter_L1_3_3mH_C1_8200pF_VR1_0_VR2_820_R_12k_freq.png
L1=3.3mH, C1=8200pF, VR1=0Ω, VR2=820Ω, R1=12kΩ

ここから分かったのは、L1=2.7mH, C1=0.012μF, VR2=820Ω の時にかなり良い特性を引き出す事ができるという点です。VR2の値を変化させると右肩の鋭さが変わってきます。L1,C1を変化させるとLPFの鋭さが変わってくるのか全体の傾向が変化します。VR1 の値は周波数特性に関してはあまり関係ないみたいです。ただし、雑音歪率に影響していそうです。

LC_Filter_L1_2_7mH_C1_0012uF_VR1_0_VR2_820_R_12k_dist.png
L1=2.7mH, C1=0.012μF, VR1=0Ω, VR2=820Ω, R1=12KΩ

LC_Filter_L1_2_7mH_C1_0012uF_VR1_10_VR2_820_R_12k_dist.png
L1=2.7mH, C1=0.012μF, VR1=10Ω, VR2=820Ω, R1=12KΩ

若干ではありますが、VR1=0Ωの方が雑音歪率が良いです。
ここまでの計測結果から、L1=2.7mH, C1=0.012μF, VR1=0Ω, VR2=820Ω, R1=12kΩに設定すると良い特性が得られそうです。ただ、NIHON KOHDEN TKD-T-2(600Ω:10kΩ)は2次側が10kΩであり、私はその後続に50kΩのボリュームを付ける事になる事から、R1=12kΩとするより、R1=13kΩとする方が合成抵抗が10kΩに近づきます。手持ちに13kΩが無かったので今回は試せていませんが、調達して計測してみようと思います。

tag : DAC

tag : ぺるけ

トランス式 USB-DAC LCフィルタ版 その1

以前作成したトランス式USB-DACだが、元となったぺるけさんのHPでLFPをCRフィルタからLCフィルタに変更したら性能がかなり向上したとの情報が入って来ました。ただし現段階(2014/10/19)では記事が改訂中のようです。何気に本日付けで定数も落ち着いたとの情報も記載されていましたが…。そこは見なかった事にして…。

掲示板上では少し前からLCフィルタにすると向上するとの記載とまだ実験途中の定数が提示されていました。その時に使用されていたコイル (千石電商で販売していた2.2mH/18Ω LHL06NB222J) はあっという間に売り切れてしまいました。ぺるけ効果は絶大です。そんな中、掲示板の方へ特殊電機株式会社なる所が似たようなコイルを販売しているとの書き込みがありました。コイルのDCR(直流抵抗)は8Ω前後と少々低いですが、抵抗成分であれば抵抗器を直列に繋いでやればいい話です。それにこの会社は Web Shop もやっていて、連続した値の物を買えるので実験する人にとっては非常に助かる存在です。秋葉原で売っているのはピンポイントな値の物しかないので、実験材料を買うのにはちょっといただけない状況でしたから。このような店(会社)を見逃す手はありません。何種類か購入して実験してみることにしました。

実験回路はおんにょさんのblogを参考に作成しました。抵抗を測定する時にSWを使って回路から切り離すって発想が無かったので非常に参考になりました。L側の抵抗はボリュームの値だけでなく、コイルを含めた抵抗値を測れるようにしてみました。

LC_filter_test.png RIMG0602.jpg

この回路を使って計測してみます。
トランスは以前ヤフオクで購入したNIHON KOHDEN TKD-T-2(600Ω:10kΩ)です。

RIMG0601.jpg

AKI-DACのR-chに作成した基板を取り付け、トランス、次段入力抵抗(ボリューム 50kΩ)を取り付けています。出力側には12kΩの抵抗を入れ、次段入力抵抗との合成で役10kΩになるようにしています。まずはぺるけさんの作例を参考に L1=2.2mH, C1=0.012μF を取り付けました。下に敷いている青い板はアルミ板です。これをGNDと繋げて外部からのノイズを低減しています。

VR1,VR2を変えると周波数特性が変化したり、歪率が変化したりして面白いのですが、変更出来る箇所が多くかつ、計測に時間がかかるので、大変な作業です。まだまだ最適値ではありませんが、VR1=10Ω(コイルと合わせて18Ω), VR2=820Ωにしたところ、次の特性が得られました。

LC_Filter_L1_2_2mH_C1_0012uF_VR1_10_VR2_820_freq.png LC_Filter_L1_2_2mH_C1_0012uF_VR1_10_VR2_820_dist.png

雑音歪率がメチャ低いです。驚きです。
まだ周波数特性で10Hz以下に膨らみがあるので、もっと追い込めそうです。

tag : DAC

tag : ぺるけ

黒ねこ時計 くろック D02
プロフィール

jujurou

Author:jujurou
運営HP:チャコの部屋
Twitter:jujurou

カレンダー
10 | 2017/11 | 12
- - - 1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 - -
最新記事
最新コメント
カテゴリ
ユーザタグ

ぺるけ RaspberryPi Linux TRminiWatterPart4 トランジスタ式ミニワッター MPD イーサネットコンバータ OpenOCD buildroot DAC FON2405E FM3ペリフェラル BeagleBoneBlack ODROID-U2 mingw FM3評価ボード library OpenGL FM4 bitbake KiCad 計測 プリアンプ Edison VMware 6P43P ミニワッター 6N6P シングル TL-WR700N 

月別アーカイブ
ランキング

FC2 Blog Ranking

カウンター
検索フォーム
リンク
RSSリンクの表示
QRコード
QRコード
ライセンス
クリエイティブ・コモンズ・ライセンス
Twitter