JP7FKFの備忘録

ヒトは,忘れる生き物だから.

MBPにSDカードを挿してストレージ問題を解消する話

わたしのMacBookProはMid2014な13inch retinaなやつ. もうしばらく使ってる.

私はメインPCをデータの倉庫にしてあり,そいつが最新になるように管理している. ラップトップにはそのメインPCからデータをコピーして持ち歩いている. コピーはバックアップを取る時にやるようにしてあり,メインPCで変更されたデータは,バックアップの時にラップトップにコピーされて更新される.それまでは前のデータがラップトップに入っていることになる.どうしても最新のデータが欲しい時はリモートデスクトップやらVPNやらでメインPCにアクセスしてデータを吸い出している.

基本的にデータを作ることよりも参照することの方が多いので,この方式を採用している. するとだんだんデータ量は増えて,ついに256GBなMBPのストレージを圧迫するようになってきた.

メインPCのデータを全てコピーしているわけではなく,持ち歩きたいデータを選別してコピーしているが,そのような状況だった.

macSSDを換装することも考えたが,このモデルはなかなか厳しいようである. 他にはUSB-HDDを持ち歩く方法であったり,小さいタイプのUSBメモリをさしっぱなしにしてストレージとして利用する方法などが考えられたが,私はSDカードのユニットが空いているのが気になって,そこを埋めようかと考えた.USBポートを使いたくないということもある.ただでさえ2ポートしかないのにUSBメモリさしっぱなしにすると1ポートしか使えなくて大変不便だ.

SDカードスロットに差し込むタイプのストレージとして販売されている,TrancendのJet Drive Liteなんてものもあるのだが,なんせこれが高価である.128GBで12000円ほど. 探してみると,SDカードスロットから頭が飛び出ないタイプのmicroSD->SD変換があるらしく,こいつにmicroSDを差し込んで使うことでそれなりに安価にできるのではないかという結論に至った.

ということでコイツらを買ってみた. iSlice Pro 13" MacBook Pro 13インチ Retinaディスプレイモデル (Late2012, Early2013, Mid2014, Early2015) 専用 microSDカードアダプター シルバー EAD-303ASV
Samsung microSDXCカード 128GB EVO Plus Class10 UHS-I U3対応 (最大読出速度100MB/s:最大書込速度90MB/s) Nintendo Switch 動作確認済 MB-MC128GA/ECO

f:id:jp7fkf:20171216154554j:plain:w600
f:id:jp7fkf:20171216154621j:plain:w600
f:id:jp7fkf:20171216154636j:plain:w600

値段は...JetDriveLiteと比べて大して変わらないかも...と思う.でも少し安い.さらに,microSDの容量を変えたく鳴った時に気軽に変えることができるし,もしこのmacを使わなくなったとしてもデジタルカメラ等でmicroSDを継続して利用できるメリットもある.なかなか良いと思う.

ということで,ストレージが圧迫することもなくなり,ストレージのことを気にして使う必要も無くなってすこぶる快適.まだこのMBPに頑張ってもらおうと思う.私はこのマシンに愛着があるし使いやすくて好きであるから.

勉強って難しいよねって言う話

ただ考えたことを書き殴る.読み手のことは考えていない.

勉強は2段階か3段階必要な気がする.ひとつはきっかけを作り,知る勉強.
そしてそれを確かめる勉強.確かめて自信になったものが自分のものとなる.

勉強することって難しいなって思った.

そもそも勉強ってなにさということにもなるしなんだこの哲学的な感じは.

いわゆる普通のお勉強って,いくつかの段階に分かれてる気がする.

  1. 知らないことを知るということ.
    無知の知ってやつなんだろうか

  2. 知らないことを知ったときにそれを知ること.
    知らないことを知りたいって思う好奇心みたいなものであったり,ある程度貪欲な姿勢だったり,知らないことに心を惹かれるかとか. そういう動機から,自分で自主的に知りたいから知ろうとしているか,それを実行して実際に知ることができたかとか,理解できたかとか.

  3. 知ったことを確かめるお勉強
    知ろうとして知ったことが本当に正しいかどうか.複数の情報源で確かめたかとか,実験してみたかとか.

  4. 人にある程度の自身を持って教えることができるかどうか.
    これくらいできるようになると,自分がきちんと知って,理解できたなっていうことだと思う. 「学びというのは人に教えることで成就する」ということばをもらったことがある.
    今は,この考え方で生きている.

こういったことを経て,やっと自分で身についた/理解したなって思うことが多いかなと感じている.それだけ.

System workbench for STM32の.runインストーラからのインストール方法 on macOS

前にSW4STM32の.runでのインストールでつまずいて結局jarで入れたとか書いたけど,ちゃんとinstruction読んだらrunですんなりできたので報告.

Installing on MAC OSX

Warning: To run System Workbench for STM32 on MAC OSX systems, XCode is required. To download it, please refer to the Apple developper website (registration as Apple Developer is required).
The downloaded installer is an executable binary file. Your web browser might have removed the execution right of the file. Please set the execution right to the installer file (chmod 755 install_sw4stm32.run then ./install_sw4stm32.run) Launch it with /bin/bash (/bin/bash install_sw4stm32.run)

ということで

$ chmod 755 [.runファイル]
$ /bin/bash [.runファイル]

あとはウィンドウが出てくるので,適切にNEXTとかAGREEとかやってFINISH.

できちんとできてしまうのでした.取説読め案件である.

テクトロニクスのオシロスコープTDS3012Bを修理する話

テクトロニクスのオシロスコープヤフオクで入手した.
DPOなTDS3012Bである.
帯域100MHzの2ch入力品.

一応起動することは確認されて販売されていたが,到着して開封して操作して見ると,HORIZONTAL(時間軸)のつまみがおかしい.何やらどちらに回しても10sec/div等になってしまって思うように操作ができない.うまいこと操作すると(タイミングとか運による),時間軸が拡大されることもあるが,これではストレスが溜まってしまってダメである. なんとか自分で治すことができないかとチャレンジしてみた.

まずは筐体を分解する. コンセントを抜いて,まずは取っ手を外していく.マイナスドライバーで横のカバーを開けるとこんな感じ. f:id:jp7fkf:20171214140128j:plain

中央のトルクスネジを外して,左下の周り止めピンをラジオペンチ等で抜く. すると白い部品が外れてその奥の黒いパーツが回るようになる.これを抜ける位置まで回して引き抜くと取っ手が外れる.これを左右両方やる.この黒いパーツがカバーの固定も兼ねているので,これを引き抜くと外側のカバーも外せるようになる.

背面パラレルポートの下のトルクスネジを外し,コミュニケーションモジュールも取り外す. そうすると背面のカバーがすっぽりとはずれる. f:id:jp7fkf:20171214140157j:plain

勘で分解していく.まずはFDユニットを取り外す. 電源モジュールまわりのトルクスネジを外し,モジュールと接続されているコネクタを全て抜いて取り外す.フレキもあるので慎重に. するとメイン基板が見えてくる. f:id:jp7fkf:20171214140223j:plain

正面付近にあるIF基板にアクセスするためにさらに分解を進める.

液晶との接続ケーブルを慎重に外してIFパネルとのケーブルも外す. 左下の入力モジュールの部分にもトルクスネジが隠れているので忘れずに外す. f:id:jp7fkf:20171214140757j:plain

メイン基板の裏はこんなかんじ.すごい. f:id:jp7fkf:20171214140336j:plain

メイン基板が外れたところ. f:id:jp7fkf:20171214140358j:plain さらに液晶モジュールを外す. シールドと一緒になっているので注意. ここはタッピングで止まっているらしい.

そうするとIFボードが見える. f:id:jp7fkf:20171214140422j:plain このIFボードに異常があるはずだ. 正面から見て右側のコントロールパネル部と左側のボタンユニット. f:id:jp7fkf:20171214140442j:plain
f:id:jp7fkf:20171214140453j:plain
f:id:jp7fkf:20171214140526j:plain

ロータリーエンコーダのはんだ当て直し,チップまでの配線の確認とチップへのはんだ当て直し等行ったが改善せず.信号ラインに問題があるのかと紫のケーブルをチェックしたが問題なし.途中のトランジスタが死んでいるのかと検討をつけたがどうも正常のようだった.最終的にはロータリーエンコーダのチャタリングと推測した.しかしながらこのロータリーエンコーダはそう簡単に手に入るものではないように思えた.よって今回はロータリーエンコーダの信号線とGNDの間にチップセラミックコンデンサを追加しバイパスコンデンサとして動作させ,チャタリングを抑えるような対策を行った. f:id:jp7fkf:20171214140621j:plain この対策の結果,ロータリーエンコーダは正常動作するようになり,HORIOZONTAL軸が思い通りに動かせるようになった.

各種ボタン部分の洗浄等も行い,綺麗に元どおりにした. これできちんと動作するオシロスコープになった.めでたし. f:id:jp7fkf:20171214140640j:plain

STM32/CubeMX/SW4STM32/ST-Linkv2(nucleo)でLチカする話

前回の記事でmacでのSTMマイコンの開発環境構築までを行った.
macでstm32な環境をとりあえず作る

今回は,構築した開発環境でプロジェクトを作成してプログラムを書き,プログラマ(ST-LINKv2)を利用してマイコンチップにプログラムの書き込みを行い,Lチカを動作させるところまでを紹介しようと思う.

前回の最後でDFUでの書き込みを行いたいと述べたが,ST-LINKを使った方が簡単だったので,まずはそちらの手法を述べたいと思う.

STM32CubeMXでコードを生成する

STMマイコンのプログラムを書くにあたって,ペリフェラルまわりの設定を簡単に行えて,それをコードとして吐き出してくれるのがこのSTM32CodeMXである.これを使うと初期設定がとても楽に行えるので,まずはこれで使うペリフェラルの設定を行う.

STM32CodeMXを開いて,New Projectを選択. f:id:jp7fkf:20171214090035p:plain

するとMCUを選択する画面が現れる.今回は秋月でも手に入る,STM32F042K6T6を利用する.PartNumberSearchから型番を選び,チップを選択してプロジェクトを作成する. f:id:jp7fkf:20171214090049p:plain f:id:jp7fkf:20171214090101p:plain

するとPinOutの画面が出る. 左側にはペリフェラルが並んでおり,使いたいペリフェラルがある場合はここで選択して欲しいペリフェラルを有効にする.すると右側のPinOutの画面にも出力/入力ピン等が反映されるようになっている. f:id:jp7fkf:20171214090117p:plain ここではLチカに最低限必要な設定を行う. 適当なGPIPピンを選択してGPIO_OutPutを選択する. すでに色が変化しているところは何かの機能がすでに予約されているピンなので注意する. f:id:jp7fkf:20171214093308p:plain すると選択したピンはGPIO_OutPutとして設定され,ピンの色が緑色に変化する. さらに,ピンの名前はピンを右クリックし,EnterUserLabelから自由に変更することが可能である. f:id:jp7fkf:20171214093415p:plain f:id:jp7fkf:20171214090301p:plain

次にMCUを動かすクロックの設定を行う. Clock Configurationタブをクリックしてクロックに関する設定を行う. f:id:jp7fkf:20171214090401p:plain 問題がなければそのままの設定で動作する. ペリフェラルによってはクロックの設定が誤っていると動作しないものがあるが,このソフトウェアはそのような状況の場合は警告を出し,自動で訂正する機能が備えてある. 今回は内臓クロック48MHzで動作させる.他にもConfigurationタブ等でペリフェラルの詳細設定ができるが,今回は行わない.参考までにUSBでDFUモードとして動作させる時はconfigurationタブでこんな設定をすれば良さそうである. f:id:jp7fkf:20171214090525p:plain

ここまでできたら,Generate Codeアイコンをクリックしてコードを生成するが,初回はsetting画面が出る. ToolChain/IDEは,System Workbench for STM32を使う場合はSW4STM32を選択する.
(出てこなかったらProject->Settingsを開いて設定する) f:id:jp7fkf:20171214090720p:plain OKをクリックするとコードが生成される. これで基本的なコードの生成は完了だ.

WorkbenchでSTM32CubeMXで生成されたコードを開いてLチカコードを挿入!

ここからは,STM32CubeMXで生成したコードをSystem Workbench for STM32で読み込んでプログラムを記述する過程を紹介する. まずは先ほどCubeMXで生成したコードをインポートする. インポートは下記のofficialのサイトが説明をしてくれているので参照する.
OpenSTM32 Community Site | Importing a STCubeMX generated project

Fileからimportを選択する. Existing Projects into Workspaceを選択して,先ほど生成したコードのディレクトリの該当ファイルをopenする. f:id:jp7fkf:20171214090900p:plain

するとimportされ,Src->main.cを見るとこのようになっている. これらがCubeMXで生成されたコードになる. f:id:jp7fkf:20171214090924p:plain

/* USER CODE BEGIN 〜 */

/* USER CODE END 〜 */

という範囲があるがこのBEGINとENDの中にコードを記述していく. この範囲に記述することで,あとでCubeMXに戻って再度ペリフェラル等の設定を変更してCode Generate を再度行っても,この範囲にあるコードは変更されずに残り,ペリフェラルの初期化コード等がキチンと追加されるようになっている.つまりこの範囲外に書いたコードは再びCode Generate すると消えてしまうことになるので注意する.

ここでコードを一瞥してもらうと,下の方にGPIOのinitがあり,先ほど定義したRED_LED等が見える. f:id:jp7fkf:20171214091011p:plain

これらのGPIOを繰り返しON/OFFするコードを追加しよう.

mainループのwhile内に,

  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {
  /* USER CODE END WHILE */

  /* USER CODE BEGIN 3 */

  }
  /* USER CODE END 3 */

という記述があるが,この/* USER CODE BEGIN 3 */の下に

HAL_GPIO_TogglePin(GPIOF, GPIO_PIN_0);
HAL_GPIO_TogglePin(GPIOF, RED_LED_Pin);
HAL_Delay(1000);

を追加しよう. f:id:jp7fkf:20171214091048p:plain

これらメソッドは,HAL Driverを使ってMCUのGPIOとDelayを制御するメソッドである. STM32CubeMXをつかうと自動的にHALなコードが生成され,以前のStdPeriphではなく,HALを使ってコードを書いていくことになるらしい.StdPeriphと比べ,HALは抽象化されており,よりオブジェクト指向的な要素が強いようである.これからの開発にはHALを用いることが推奨されているようなので,今回はHALを用いて書いていく.

HAL_GPIO_TogglePin(GPIOF, GPIO_PIN_0);

はGPIOFのGPIO_PIN_0のOUTPUTを反転させるメソッドである. この辺りの引数に何を入れるかは,先ほど見たMX_GPIO_Initメソッドを覗くことで理解できると思うので割愛する. ピン名には先ほどCubeMXで自分が変更したRED_LEDというPinもLED_RED_Pinという形で指定することができるようだ.

ここまで終了したらBuildをする. とんかちのアイコンをクリックすることでBuildできる. 正しくBuildされるとプロジェクトツリーにBinariesの下に.elfという拡張子でバイナリファイルが生成されているはずである.こいつを次のセクションでMCUに書き込む.

書き込み!

ST-LINKv2をつくる

書き込みをするにあたってwriterを必要とする. 今回はST-LINKv2を使って書き込みを行っていこうと思うが,この書き込み機を買うと結構なお値段となる.今回はSWD方式での書き込みをやっていこうと思うが,SWD方式の書き込み機であれば秋月でも手に入るnucleo boardという開発ボードの一部がこの書き込み機となっており,分離して使用することができる.お値段的にもこちらのほうがリーズナブルなので,今回はこちらのnucleo boardの書き込み機部分(ST-LINKv2部分)を分離して書き込み機に変身させる. とはいっても作業はものすごく簡単で,パキッと折るだけである. 作業自体は下記の記事を参考にすると良いと思う.

NucleoとかいうST-LinkをFRISKケースに入れる - STM32 - Tokoro's Tech-Note
STM32に手を出してみた

あとはピンヘッダ等が邪魔なので取り除く. ジャンパピン部分はジャンパする必要は特にない. CN4という左側の6本のピンヘッダがMCUと接続するピンとなっているので,書き込み機として使いやすいようなコネクタ等に付け替えておくと便利だ. 私は普通のピンヘッダのメスを横につけており,そこからオスオスの延長ケーブル経由で書き込んだりということもできるようにしてある.なかなか便利だ. f:id:jp7fkf:20171214092704j:plain f:id:jp7fkf:20171214092727j:plain 書き込み機の準備はこれで完了である.

チップに配線!

ST-LINKのCN4は上(1番ピン)から下記のようなピンアサインとなっている.

Pin No. Name
1 VDD_TARGET
2 SWCLK
3 GND
4 SWDIO
5 NRST
6 SWO

これらをチップの適切な端子に接続する. 接続するピンに関してはデータシートを参照する.

電源ライン,およびBOOT0ピンの配線も行う. BOOT0ピンはGNDレベルにすることでFlashからロードするモードとなるので,今回はGNDに落とす.

いよいよ書く!

書き込むにはデバイスにあらかじめ3.3Vの電源を供給しておく必要がある.これを忘れると書き込み時にWrong Device Detectedと言われて書き込むことができない.

書き込みを実行するにあたり,Debugのconfigurationを行う. Run -> Debug Configurations を選択し,Ac6 STM32 Debuggingにプロジェクトが設定されていることを確認する.DebugをクリックするとBuildされ,書き込まれる. なお上部のバーの虫のアイコン(BUGだ)でも同様のことができる. f:id:jp7fkf:20171214091450p:plain 書き込みするときのコンソールはこんな感じ.

Open On-Chip Debugger 0.10.0-dev-00275-gd486ac2-dirty (2017-03-06-15:17)
Licensed under GNU GPL v2
For bug reports, read
    http://openocd.org/doc/doxygen/bugs.html
Info : The selected transport took over low-level target control. The results might differ compared to plain JTAG/SWD
adapter speed: 1000 kHz
adapter_nsrst_delay: 100
srst_only separate srst_nogate srst_open_drain connect_assert_srst
srst_only separate srst_nogate srst_open_drain connect_assert_srst
Info : Unable to match requested speed 1000 kHz, using 950 kHz
Info : Unable to match requested speed 1000 kHz, using 950 kHz
Info : clock speed 950 kHz
Info : STLINK v2 JTAG v23 API v2 M v10 VID 0x0483 PID 0x374B
Info : using stlink api v2
Info : Target voltage: 0.007890
Error: target voltage may be too low for reliable debugging
Info : STM32F042K6Tx.cpu: hardware has 4 breakpoints, 2 watchpoints
Info : Unable to match requested speed 1000 kHz, using 950 kHz
Info : Unable to match requested speed 1000 kHz, using 950 kHz
adapter speed: 950 kHz
STM32F042K6Tx.cpu: target state: halted
target halted due to debug-request, current mode: Thread 
xPSR: 0xc1000000 pc: 0x08000e74 msp: 0x20001800
Info : Unable to match requested speed 8000 kHz, using 4000 kHz
Info : Unable to match requested speed 8000 kHz, using 4000 kHz
adapter speed: 4000 kHz
** Programming Started **
auto erase enabled
Info : device id = 0x10006445
Info : flash size = 32kbytes
STM32F042K6Tx.cpu: target state: halted
target halted due to breakpoint, current mode: Thread 
xPSR: 0x61000000 pc: 0x2000003a msp: 0x20001800
wrote 5120 bytes from file Debug/led_test.elf in 0.310023s (16.128 KiB/s)
** Programming Finished **
** Verify Started **
STM32F042K6Tx.cpu: target state: halted
target halted due to breakpoint, current mode: Thread 
xPSR: 0x61000000 pc: 0x2000002e msp: 0x20001800
verified 4612 bytes in 0.047620s (94.580 KiB/s)
** Verified OK **
** Resetting Target **
Info : Unable to match requested speed 1000 kHz, using 950 kHz
Info : Unable to match requested speed 1000 kHz, using 950 kHz
adapter speed: 950 kHz
shutdown command invoked

きちんとSTLINKv2として認識されて書き込みとVerifyができた. 正しく書き込めるとnucleoなST-LINKv2のLEDが緑色に光るようだ. 書き込み機をマイコンから外して,電源ON/OFFまたはリセットをしてもきちんと動く.

f:id:jp7fkf:20171214092958j:plain

これでLチカまで到達できた. Lチカができたということは開発の一通りの流れが理解できたということなので,ここまでくればこっちのものである.あとは自由にペリフェラルを追加して自分の思うままにコードを書くだけだ.めでたし.

ちなみに種々のペリフェラルに関しては下記の記事がとても参考になる. CubeHALでSTM32を使うお勉強 : しろうさぎのblog

References

TDR測定用のパルス生成器を作ってみた話

TDRって.

TDRとはTime Domain Reflectometryの略で,TDR測定というものは,時間領域反射測定ということになる.これで何をしようかというと,ケーブル類の障害点などがわかったりするのだ.なぜそのようなことができるのかというと,ケーブル類にパルス状の電気信号を入力すると,ケーブル内を伝搬する.ここで単一のインピーダンスを持つ同軸ケーブル内で障害があると,インピーダンスが不連続になったりする.このインピーダンス不連続点で,入力したパルスの信号の反射が起こる.この反射を検知し,入力したパルスと反射して戻ってきたパルスの時間差と,ケーブルの速度係数等を用いると,入射端から障害点(インピーダンス不連続点)までのケーブルの長さを求めることができる.

これは実際の通信の現場でも用いられており,例えば世界中に張り巡らされている光ファイバーがあるが,光ファイバーの障害を検知するためにこのTDRが用いられている.これはOTDR(Optical Time Domain Reflectometry)と呼ばれており,電気信号の代わりに,光を入射しその波形をモニタすることで,反射減衰量や,光損失,長さの測定ができるというものである.銅や樹脂で構成されている同軸ケーブル等でも,同じような測定が可能である.

今回は同軸ケーブル等の測定が行える,電気信号のパルスを出力するパルス生成器を製作してみた.

参考にしたのはこの記事である.
Nano Sec Pulser for TDR Measurement: アナログ回路のおもちゃ箱
この記事をもとに,回路図のトポロジはほぼ変えずに作った. 使ったものは,パルス発振器NE555,4回路入りコンパレータNJM2901,ANDゲート74HC08である.これは手近な部品を漁った結果,上記の記事にあるような高速コンパレータ等を用意できなかったことがある.とりあえず手近な部品で作ってみたという感じである. ただ,一つコンパレータの遅延用の抵抗値を変更している.少々高い抵抗に変更をしたので,立ち上がり時間が遅くなる原因になっているかもしれない.ちなみに,このパルス生成機で重要なのは立ち上がりが素早いことなのである.これにより分解能が上がり,より正確に距離を求めることができる.あと,使ったこのコンパレータはオープンコレクタ仕様になっていることに組み上げた後に気づいて発狂した.適当に出力ポートを抵抗を介して電源に接続してプルアップしておいた.

完成したモノはこんな感じ. f:id:jp7fkf:20171110171303j:plain
f:id:jp7fkf:20171110171335j:plain
電源供給用のDCコネクタ,電源SWとLED,出力用のBNCコネクタをケースに取り付け,内部の回路は適当にユニ基盤に実装してホッドメルトで固定している. これで測定を行うとこのような感じになる.
f:id:jp7fkf:20171110171518j:plain
一つ目のパルスと二つ目のパルスが見て取れると思う.この間隔を読み取ると約nsである.この測定したケーブルは1.5mのRG316のSMAケーブルをSMA-JJで2連結したものであり,末端は解放となっている.このRG316ケーブルの速度係数は0.7らしい.
パルス間隔は読み取ると約30nsであるから,これをもとに計算を行うと
length[m] = cvt/2
(ここで,c: 光速[m/s], v: 速度係数, t:遅延時間[s]である.)
から,
0.2998 * 0.7 * 30 / 2 = 3.1479[m]
ということで,BNCの変換ケーブルやら,SMA-JJの長さ等を考えると,ある程度の誤差がありつつも,大体のケーブル長が求められたと思う.

このように,インピーダンスの不連続点が電気的な測定で求めることができるのである. 例えば特性インピーダンス50Ωの同軸ケーブルの先に75Ωの特性インピーダンス同軸ケーブルを接続したりすると,合計3つのパルスが得られ,接続点で振幅が変化したりする.ちなみに末端をショートすると,振幅が逆になったパルスが帰ってくる.これは反射係数が1から-1までであり,ショート状態の場合は反射係数が-1となり,信号の符号が逆転するということを端的に表しているわかりやすい例だと思う.

という感じで,パルス生成器を作って,TDR測定ができることが確認できました.同軸が怪しかったりしたらこいつで測定して修理の目安になったりしてよさそうです.

References

SONY APMスピーカーのエッジ張り替えをしてみた話

身の回りに壊れたスピーカーがあったので修理してみた. スピーカーのコーン部分は,エッジと呼ばれる部品を通して外側のフレームに固定されている. このエッジは,コーン紙を支える役割や,ボイスコイル,コーン紙の振動により生じた音圧のうち,フロント側に出るものとバック側に出るものを分けてやる効果などがあるようだ.これがないと特に低周波でフロント側の信号とバック側に出た逆位相の信号が打ち消しあってしまい,キャンセルされて低音が出にくくなったりしてしまう.

このスピーカーエッジなのだが,素材としてウレタンが多く利用されていたりする.このウレタンは,長期間使用していると経年劣化で加水分解し,ボロボロになってしまい,スピーカーエッジとしての機能を果たさなくなってしまう.こうなってしまった当該スピーカーが以下のような感じだ.中を開けてみると.

f:id:jp7fkf:20171110155217j:plain
f:id:jp7fkf:20171110155404j:plain
f:id:jp7fkf:20171110155322j:plain
f:id:jp7fkf:20171110155449j:plain

完全にウレタンがボロボロになり取れてしまっている.
一方はセンターキャップが凹んでしまっていたので手で曲げて直してやった. f:id:jp7fkf:20171110155816j:plain
曲げ直してあげてこんな感じ.薄いアルミ版か,スズかなんかでできているような気がする.とても柔らかい. ちなみにこのスピーカーはSONYAPMと呼ばれるシリーズで四角い平面の振動板が特徴であるそうだ.今回はこのウレタンエッジを除去し,このスピーカーに合うエッジを自作して交換してみた.

まずは振動板や外側のフレームに残留しているウレタンエッジを綺麗に除去するところから.完全に除去しないと音に影響があるとかそういうのはよくわからないが,交換するのだから前のゴミが残っているのは接着するときにもよくないと思う.なのでできる限り綺麗に掃除してあげよう.掃除には無水エタノールや,カッターナイフの刃とかを使ってあげて,ウレタンエッジを引き剥がしてやる.

さて,ここからが問題である. 高級なスピーカーだとメーカーからエッジ修理キットなどが販売されており,これを利用すると替えのエッジと,接着用のボンドなどがセットになっており,比較的簡単に交換が可能である. しかしながらこのAPMはそのようなものは提供されていないようで,しかも拾い物のスピーカなので,あまり修理にお金をかけたくはない.なのでスピーカーエッジそのものを自作してみることにした.

スピーカーエッジを製作するにあたって,材料は次のようにした.主材料は黒い薄い布を用い,これに液体ゴムを塗布する.流れとしては,まず,エッジとしての形を作るために,3Dプリンタでエッジの型を製作する.これに両面テープ等で布を接着し,形を作った上で液体ゴムを塗布していく.固まったら型から引き剥がし,適当な大きさに切って,スピーカーにボンドで接着する. 人によってはシリコンコーキング剤をシンナーで薄めて塗布していたりするらしい.私は下記の人の記事を参考にしながらやったのだが,この人はシリコンでやっていた.私は手近に液体ゴムがあったのと,水溶性で扱いやすそうであるから液体ゴムを選択した.
APM33W エッジ修理

このAPM スピーカーのフレーム,振動板の大きさを考えて,内寸48mm程度,外寸55mm程度,厚み3mm程度の正方形状のオブジェクトを作成し,各辺に接するような円を作成しなめらかなエッジとなるようにした.言葉だけではわからないので,モデルは以下の画像ような感じ.
f:id:jp7fkf:20171110155944p:plain
こいつを3Dプリンタで出力して型にする. これに黒い布を両面テープで接着して,液体ゴムを塗る. 塗って乾燥を2〜3回程度繰り返し,厚みを調整する.これは好みの暑さになればいいと思う.私はそれなりの形状保持ができる程度の厚みとした. これを実際のスピーカーユニットに適合するように切断して
f:id:jp7fkf:20171110160826j:plain
ボンドで接着をする. f:id:jp7fkf:20171110160927j:plain
見た目はエッジっぽくなった.
ちなみにボンドはこいつを使った. コニシ ボンド Gクリヤースリム #14329 20ml
乾燥したら組み上げ直して,いよいよ音を出す. エッジがボロボロだった時とは打って変わって,低音がしっかりと出力されるようになった.好みでエージングとかやって見ても良いと思う.

というわけで,スピーカーエッジはうまく動いているみたいです.前までは低音が全然出なくて聞くに耐えなかったけど,いまでは問題なく聞けるレベルになっています.めでたし.

References