KORG のオンラインショップに注文をいれていた Nutube がとどきました。5400 円は正直高いですが 1 個くらい持っててもええかということで購入した次第。
Nutube(6P1) のピンは 2mm ピッチ(0.7φ)なのと、マイクロフォニックノイズは出るらしいのでマウント基板作って、スポンジに貼り付ける方法がやっぱいいいかなと思うところですが、手間を考えると基板1枚にまとめてしまいところです。
試作で基板作ってみましょうかね。
このサイトは楠 昌浩が興味をもったことに対して広く浅くネタ集めしております。
次のアンプの真空管を 71A にするべと海外サイト見ていましたら 3B28 整流管を発見。71A 買うついでに整流管もポチっとなした次第。3B28 は TUNG-SOL 製のを既に持っているのですが、アノードの傘とヒーターの筒部分が金属ケースで覆われていてキセノンガスの発光が見られないものでした。3B28 は水銀整流管 866A と置き換え可能な整流管です。866A は水銀蒸気が発生するまでのプリヒート時間が長かったりするのですが、3B28 はデータシートには 10秒と書かれています。ヒーターが十分あたたまれば通電可能と思います。立ち上がり早いのはありがたいです。
実際に動かしてみても、隙間からちょろっと紫色の光が漏れるのを見るくらいの感じ。
TUNG-SOL 3B28 です。
CETRON 3B28 です。アノードまわりの覆いがないので、発光するところを楽しめそうであります。
早速差し替えして通電確認。いい具合に紫色に光ます。水銀整流管の水色同様に不思議な感じの光を見ていて飽きません。
この週末は、Nutube(6P1) のヘッドアンプの視聴をちょっとだけして終わりました。使ったのは SENNHEISER HD-25-1 II と AKG Q701 です。
HD-25-1 は密封型なので小柄ながら低音がドコドコ鳴る感じのヘッドホン。AKG Q701 はオープンエア型なのでデカイ割には低音は軽めの感じです。Nutube のイヤホン出力の視聴では AKG Q701 が中音がすっきりでたので JAZZ ボーカルな CD などが気持ちよくリスニング出来ました。また、hd-25-1 II は、小規模コンサートホールなどでよくあるオフマイクで録音されたピアノやバイオリンなどの CD がよかった印象です。
Nutube ヘッドホンアンプの持ち主から、改造 OK の許可もいただいてたりするのですが、今日のところはこの2つ使って楽しませてもらいました。
KORG Nutube ヘッドフォンアンプを使ってみた (Part-2) の Blog 主さんから一時預かり。ひとまず f 特を採取しておこうと思います。
ということで、Analog Discovery 2 で簡易 f 特測定実施。測定範囲は 5Hz から 200kHz です。
入力 100mV イヤホン出力 負荷 16Ω の f 特
入力 100mV イヤホン出力 負荷 32Ω の f 特
入力 100mV イヤホン出力 負荷 72Ω の f 特
負荷抵抗の差でゲインに違いは出ます。そのせいなのか 72Ω負荷のときの特性が 16Ωにくらべて特性はフラットな見え方になりました。大した差では無いので気にすることは無いレベルと思います。
入力 1kHz イヤホン出力 負荷 16Ω の高調波の出具合を見たところ 2次歪みがよく出ています。3次以降もグラフからは見えます。
RCA 出力 入力 100mV の f 特。イヤホン出力よりも下が伸びてました。位相のグラフが180度回転しているように見えますが RCA 出力は反転なのでこれであっています。ここにバッファアンプをつないだら結構遊べるんではないかなと。
入力 1kHz RCA 出力の高調波の出具合を見たところ 2次歪みがよく出ています。3次以降もグラフからは見えます。
蛍光表示管ですが真空管の特徴が出ていあたりはよく作りはったと思います。個人向サンプル 5000円程度が気軽に求められる値段になれば使用例も増えますかねぇ。
KORG の 6P1 (Nutube) がぼちぼち流通しはじめて、一部の方は現物を入手されたりしている模様。なのですが、積極的にお出かけしないと入手できない状況なので私はまだ持っていません。この真空管は蛍光表示管と同じような構造をしています。
あれが増幅するんやったら家にある蛍光表示管でも増幅するんじゃね?的考えで LD8113 と IV-27 をひっぱりだしてきました。今回の実験は LD8113 さんに犠牲になってもらうことにしました。
ブレッドボードに適当に組んだ回路に 100mV 入れて出力電圧を測定。アノード側で使用した電極(セグメント)は 8 の字として、真ん中の縦棒とドットは使用しないこととしました。
トライ & トライで、300mV 程度取れました。
裸特性もついでに撮っておきました。一応増幅していることは確認できました。バッファ付けてヘッドホン鳴らしてみたいですね。
Raspberry Pi 2 Model B に PCM5122 の DAC を搭載したサウンドカード RaspyPlay4 を載せてミュージックサーバーなるものを作ってみました。今は Raspberry Pi 用に様々な DAC 搭載したボードが販売されていて、載せた例も多数 Web 公開されています。私もそういうのを見て、ちょっと組んでみようと思った次第。
今回購入したのは、たまたま RS の通販見ててみつけた RaspyPlay4 という MikroElektronika 製のボード。runeaudio 対応らしいです。
ボードは完成品なので、Raspberry Pi のコネクタに差してしまえば使えます。今回は volumio を Raspberry Pi にインストールしました。volumio には RaspyPlay4 の設定はありませんが、おなじ PCM5122 搭載のボードを選択したら動いたので問題ないかと思います。
このままで使用しても問題ないのですが、基板中央部に LCD と書いたスルーホールがありましたのでやっぱりキャラク液晶付けてみようと設定開始。最終的には、CPU の平均負荷と、空きメモリを表示するようにしてみました。ボリウムの値は MPD, AirPlay, mixer などのボリュームが複数あって、整理出来てなかったためひとまず CPU 負荷とかを出すことに決定しました。
Raspberry Pi でキャラクタ液晶の制御というと、Python の RPi-GPIO モジュールを使うのが簡単らしいので、Python を使うことにしました。よそ様の Web とかに apt-get install python-rpi.gpio すればインストール出来るようなことが書いてあったので、やってみたところパッケージが見つかりません。あれこれ探しましたが見つけられなかったので、本家のソースからビルドすることにしました。
volumio を入れた Raspberry Pi に ssh ログインして作業開始。raspberry-gpio-python
のサイトから RPi.GPIO-0.6.2.tar.gz をダウンロードして、tar zxvf で展開。ビルドするパッケージもインストールして Rpi.GPIO をインストールします。
# wget https://pypi.python.org/packages/c1/a8/de92cf6d04376f541ce250de420f4fe7cbb2b32a7128929a600bc89aede5/RPi.GPI O-0.6.2.tar.gz wget の URL は、ブラウザなどで確認したアドレスを wget に渡すか、 いったんブラウザで RPi.GPI O-0.6.2.tar.gz をダウンロードしてから Raspberry Pi にアップロードしてください。 # tar ztvf RPi.GPIO-0.6.2.tar.gz # cd RPi.GPIO-0.6.2 # python setup.py install コンパイル環境が無いのでエラーになる # apt-get install gcc # apt-get install arm-linux-gnueabihf-gcc # apt-get install python-dev # python setup.py install ワーニングメッセージが出力されるけど、ビルドは通ってライブラリのインストール成功
今回使用した液晶モジュールは共立で買ってきた OLEDディスプレイ キャラクタ表示タイプ 16文字x2行 黄文字 WEH001602A というものです。
で、付録の紙の初期化をやっても動かず、散々苦労した結果動いた Python ソースコードは以下のとおりであります。Adafrit のサンプルが無かったらマジ捨ててたと思う。
#!/usr/bin/env python # # WINSTAR OLED 16x2 CHARACTER DISPLAY # +----+-----+--------------------| # | No | Pin | Desc | # +----+-----+--------------------| # | 1 | VSS | GND | # | 2 | VDD | 3.3V or 5V | # | 3 | NC | Not Used | # | 4 | RS | 0: Command 1: Data | # | 5 | RW | 0: Write 1: Read | # | 6 | E | Enable | # | 7 | D0 | Data bit 0 | # | 8 | D1 | Data bit 1 | # | 9 | D2 | Data bit 2 | # | 10 | D3 | Data bit 3 | # | 11 | D4 | Data bit 4 | # | 12 | D5 | Data bit 5 | # | 13 | D6 | Data bit 6 | # | 14 | D7 | Data bit 7 | # | 15 | NC | Not Used | # | 16 | NC | Not Used | # +----+-----+--------------------| import RPi.GPIO as GPIO import time import subprocess RS = 7 E = 8 D4 = 25 D5 = 24 D6 = 23 D7 = 22 DATA = True COMMAND = False def main(): i = 0 setup() while True: vmstatout = subprocess.check_output(["vmstat"]) cpuidle = int(vmstatout[233:236]) cpubusy = 100 - cpuidle lcdSetPos(0,0) lcdPutStr("CPU{:>3d}%".format(cpubusy)) lcdSetPos(1,0) memfree = int(vmstatout[174:181]) lcdPutStr("FREE{:7d}KB".format(memfree)) lcdSetPos(1,15) if i == 0: lcdPutStr("-") if i == 1: lcdPutStr("*") if i == 2: lcdPutStr("|") if i == 3: lcdPutStr("*") i = i + 1 if i > 3: i = 0 time.sleep(1) def setup(): GPIO.setwarnings(False) GPIO.setmode(GPIO.BCM) GPIO.setup(E, GPIO.OUT) GPIO.setup(RS, GPIO.OUT) GPIO.setup(D4, GPIO.OUT) GPIO.setup(D5, GPIO.OUT) GPIO.setup(D6, GPIO.OUT) GPIO.setup(D7, GPIO.OUT) time.sleep(0.05) lcdPut4bit(0x03) time.sleep(0.005) lcdPut4bit(0x08) time.sleep(0.005) lcdPut4bit(0x02) time.sleep(0.005) lcdPut4bit(0x02) time.sleep(0.005) lcdPut4bit(0x08) time.sleep(0.005) lcdPutByte(0x08,COMMAND) time.sleep(0.005) lcdPutByte(0x01,COMMAND) time.sleep(0.005) lcdPutByte(0x06,COMMAND) time.sleep(0.005) lcdPutByte(0x02,COMMAND) time.sleep(0.005) lcdPutByte(0x0c,COMMAND) time.sleep(0.005) def lcdPutByte(byte, mode): GPIO.output(RS, mode) time.sleep(0.0001) GPIO.output(D4, GPIO.LOW) GPIO.output(D5, GPIO.LOW) GPIO.output(D6, GPIO.LOW) GPIO.output(D7, GPIO.LOW) if byte & 0x10 == 0x10: GPIO.output(D4, GPIO.HIGH) if byte & 0x20 == 0x20: GPIO.output(D5, GPIO.HIGH) if byte & 0x40 == 0x40: GPIO.output(D6, GPIO.HIGH) if byte & 0x80 == 0x80: GPIO.output(D7, GPIO.HIGH) lcdE() GPIO.output(D4, GPIO.LOW) GPIO.output(D5, GPIO.LOW) GPIO.output(D6, GPIO.LOW) GPIO.output(D7, GPIO.LOW) if byte & 0x01 == 0x01: GPIO.output(D4, GPIO.HIGH) if byte & 0x02 == 0x02: GPIO.output(D5, GPIO.HIGH) if byte & 0x04 == 0x04: GPIO.output(D6, GPIO.HIGH) if byte & 0x08 == 0x08: GPIO.output(D7, GPIO.HIGH) lcdE() def lcdPut4bit(byte): GPIO.output(RS, GPIO.LOW) time.sleep(0.0001) GPIO.output(D4, GPIO.LOW) GPIO.output(D5, GPIO.LOW) GPIO.output(D6, GPIO.LOW) GPIO.output(D7, GPIO.LOW) if byte & 0x01 == 0x01: GPIO.output(D4, GPIO.HIGH) if byte & 0x02 == 0x02: GPIO.output(D5, GPIO.HIGH) if byte & 0x04 == 0x04: GPIO.output(D6, GPIO.HIGH) if byte & 0x08 == 0x08: GPIO.output(D7, GPIO.HIGH) lcdE() def lcdE(): time.sleep(0.0001) GPIO.output(E, GPIO.HIGH) time.sleep(0.0001) GPIO.output(E, GPIO.LOW) time.sleep(0.0001) def lcdSetPos(line, col): rowOffset = (0x80, 0xc0) lcdPutByte(rowOffset[line] | col, COMMAND) def lcdPutStr(str): length = len(str) for i in range(length): lcdPutByte(ord(str[i]),DATA) def lcdClear(): lcdPutByte(0x01, COMMAND) if __name__ == '__main__': try: main() except KeyboardInterrupt: pass finally: lcdClear() lcdSetPos(0,0) lcdPutStr("Goodbye!") GPIO.cleanup()
vmstat コマンドの結果を液晶に表示しているだけです。この部分を変更することで、表示する内容を変更できます。
Raspberry Pi 3 での動作確認は面倒なのでやっていません。もし動かない場合は def lcdE(): の sleep 時間を増やせば動く確率は上がるかと思います。
root@volumio0726:~# cat /etc/rc.local #!/bin/sh -e # # rc.local # # This script is executed at the end of each multiuser runlevel. # Make sure that the script will "exit 0" on success or any other # value on error. # # In order to enable or disable this script just change the execution # bits. # # By default this script does nothing. /home/volumio/pythonスクリプト.py & exit 0
Raspberry Pi を立ち上げたときに、自動起動するように rc.local に /home/volumio/pythonスクリプト.py & (pythonスクリプトは作成されたファイル名に置き換えてください)を記述します。
LED って電気起きるの? というのは知識としては知ってたというやつですが、やったことがなかったので測ってみました。ブレッドボードに赤色LEDを向かい合わせで配置して測定です。
最初は単純に、1kHz のサイン波出して受光側 LED の出力を見てみました。発光側はサイン波の+(プラス)側でしか光りません。(もうちょっと細かいことを言うと VF 2V 程度あるのでそれ以上の電圧)
受光側は矩形波っぽい波形が出てきました。電圧は無負荷で 1.5V です。
条件を変えたら受光側でもサイン波っぽいの出てくるんじゃね? 的な考えで、オシレータの電圧を 1.75V かさ上げ。振幅は 100mV とかなり小さくしてみましたところ、受光側 LED の信号もサイン波みたいな感じになってきました。LED 間の距離とかの調整で光の強さは加減出来るので音声をそのまま伝える程度なら遊べるかもですね。
もうちょっと、正確な信号を伝えたかったら搬送波を作って FM 変調で送るのがいいかもということで、今日の簡単な実験はしゅーりょー
関ハム 2016 に行ってきました。場所は池田市の市民会館です。廃局してコールサイン無しなのですが、この手のイベントは結構ひさしぶりな気がします。今日は、PUP さんと会えるかな?ということでお出かけです。
会場をひとまわりして Si4735 ラジオ発見。関ハムでこんなん展示してるの1箇所しか無いですから間違いありません。隣の抵抗類は、北神電子サービスさん のスペースの売り物です。
簡単にご挨拶だけしてあとは世間話をしつつ時間が流れます。プログラムの修正などはわかる範囲でのポイントなどをお話したりしてました。また時を同じくしてこちらのブースに来られたレーザーカットをはじめに、プリントサービスなどをやっておられる、「利助屋」 さんとも少しお話させていただきました。
Si4735 ラジオの原型は私のところで作成して公開しましたが、JG3PUP さんは基板作成+短波受信改造されて公開。いくつかの派生バージョンの基板をもとに現在は DIP 版ラジオを設計されていま
す。
テスト版入手された 旅の途中 さんが中波のイメージ対策でアンテナまわりの回路改良などを web ページ内の pupさんのFRISK_Si4735Radio_Full_DIP Ver にて改良点などを公開されたりしています。
Si4735 ラジオモジュールを使った記事は 2013 年のものですが、今もネタとして生きているのをこの目で見ることが出来て嬉しかったです。
頒布物のページですが、現在の www.mkusunoki.net から www.em9system.com に移動いたします。今は個人の Blog に頒布サイトも同居させているのですが、Wordpress のテーマ変更など行ないますと、ショッピングカートのページが見づらい状況になったりしているのが現状です。
同じサーバーを使用しますが、マルチドメインで頒布物ページを独立させまして見易いよう変更します。今後頒布アイテムを移行していきます。ご不便・ご迷惑おかけいたしますが今後共よろしくお願いします。