2020年12月16日水曜日

自動車用 故障診断機(OBD2スキャンツール)

 先日クルマで外出中「ABS警告灯」が点灯。古いクルマだし、ついに来たという感じでした。電装系に詳しそうな整備工場に持ち込むと、車輪の回転速度検知に使われるセンサー(ホール素子)の不良とのこと。センサーは、車輪のハブに取り付けられており、錆だらけです。ボルトの六角穴はすでに角が取れ、取り外しに手間取ったそうですが、部品交換してもらって修理完了でした。

作業の様子を見ていますと、整備士の方は、故障診断機の画面で故障箇所を特定。部品交換後には同じく異常履歴のリセットもしていました。

この故障診断機、社外品の簡易なものであれば個人でも手が届く価格で購入できます。修理も完了したし、あえて必要は無いのですが、Bluetooth接続のドングルタイプがとにかく安いので、ものは試しと購入しました。(アマゾン、ebay、Ali等で買えます)

ELM327

購入したドングルはELM327という商品です。同じ名前のドングルがたくさん売られていますが、もともとELM327は、カナダELM ElectronicsのOBD-RS232変換ICの名称です。データシートによるとPIC18F2x8xファミリがベースだと書いてあります。

このICのクローンが中国で大量に作られていることから、ELM327はこの手の(社外品)故障診断機のデファクトスタンダードのような位置づけになっているようです。ただ、この手の商品レビューでは、本物か偽物か、とか本家の仕様と異なるとか、色々書いてあります。クローンといっても玉石混淆で、仕様を似せて作ったものにELM327の名前を付けて売っているだけじゃ無いのかなとも思えます。中には所定の機能(コマンド)を備えていないものも横行しており、その機能を検証するためのアプリまで広まっている有様です。

外装を開けて見ました。OBD2からプロトコル変換してBluetoothに飛ばすだけと思われます。キーデバイスの品名を列挙します。

  • PIC18F25K80-1/SS: ELM327のクローン
  • VC1040: CANトランシーバ(TJA1040クローン)
  • YC1021: Yichip Electronics/Bluetooth 3.0 BR/EDR + BLE
  • 24C32A: 32K EEPROM



OBD2コネクタに取付

このドングルを自動車に取り付けてみます。OBD2コネクタには、自動車のバッテリーから直流電源が給電されているので外部電源は不要です。ウチのクルマには、アクセルペダルの奥に目立たぬようOBD2コネクタがありました。紫色の角形コネクタがそれです。スマホを操作してBluetooth接続(PINは1234でした)できたのでまずは一安心です。



次にアプリをインストールします。ELM327は自動車のECUとおしゃべりするだけのプロトコル変換機能しか無いので、各種のコマンドの発行はアプリ任せということになります。Google Playで"ELM327"を検索すると沢山のアプリが出てきます。各自動車メーカ共通のコマンドが使える故障コードの表示等はどのアプリでも対応できるはずですが、メーカや車種固有のコマンドへの対応は付加価値ということで課金による拡張機能扱いのアプリが多いです。アプリの説明を見ると、それが差別化のポイントだから詳しくアピールされています。今回は動作確認できれば良いので、定番らしいTorqueをインストールしてみました。アクセルを踏むとリアルタイムでメータが変化しますし、あいにく(?)異常が無かったのですが異常コードの表示もできました。





ELM327の機能を検証

次に、ELM327 Identifierで、ELM327が対応している機能を検証してみます。この結果によるとバージョン1.4までの機能をサポートしていることがわかります。コマンド表示画面を見ると、アプリが何をやっているか想像できますね。



2020年11月29日日曜日

基板撮影用 照明ボックス

基板の撮影は、照明が映り込んでしまったりして意外に難しいものです。何か良い方法はないのかとWeb検索したら照明の自作例を見かけたので真似してみました。

しなぷすの独り言 - 基板専用の撮影ボックスを作った

Tachi technical blog - 基板撮影箱を作る


仕組みはご覧の通りで、ダイソーのタッパー容器の内側にLEDテープを貼り付けただけです。環状ではありませんけどリングライトと呼ぶらしいです。ちなみに容器の底に置いている黒いのはIC用の導電スポンジです。

LEDテープは、安くて演色性の良いものを、と探しCRI(Color Rendering Index>=90と称するものをebayで見つけました。色は、cool white, warm white, 4000K whiteが選べました。warm whiteは電球色、4000K whiteは昼白色より色温度低めでしょうか。撮影照明用にはcool white(昼光色)が適しているようです。



LEDテープを使うのは、初めてです。はさみマークのところであれば任意の長さに切断できます。9Vで弱く光り、定格の12Vでは眩しく輝きます。どうやらLED 3個直列+100Ω抵抗を一組として並列接続されています。


LEDテープ裏に付けられた粘着テープでタッパー容器に貼り付けます。LEDは熱くなります。おそらく50度くらいになっていそう。いずれテープが剥がれてしまうでしょうが、そのときに考えましょう。

今回はLEDを30組 90個を点灯させています。電流は電源投入直後0.89A、徐々に上昇を続け0.916Aで落ち着きました。調べてみたらLEDの順方向降下電圧は-2mV/℃の温特を持っているそうで、納得。このテープは抵抗で電流制限掛けているので仕方ありません。

ローム - LED : 注意が必要な特性


使用結果

デスクライトとの比較では、照明の映り込みが緩和されているのがわかります。照明ボックスでは照明の位置調整が要らなくなるのでめちゃラクになりました。


照明ボックス使用時


デスクライト使用時


2020年6月6日土曜日

miniDSP MCHStreamer マルチチャンネルUSBオーディオ: 残念な話

香港miniDSPのUSBオーディオインターフェースMCHStreamer Kitを試してみました。この基板はDACやADCを搭載していませんが、XMOSベースで384kHz入力対応というのがポイントです。ただ今回テストした範囲では192kHzまでしか使えません。ご覧の通り基板の完成度が高いのに残念です。


インターフェース仕様

SPDIF: ステレオ入出力 24bit 44.1~192kHz(光入出力もあり)
I2S: 最大8ch入出力 24/32bit 8~384kHz(⇒ 192kHzだよね!)
TDM8: 最大24ch入出力 44.1~96k
PDM: 最大16ch 24bit 8~48kHz
DSD: 最大8ch出力 DSD64/128/256

ステレオは2チャンネルと数えるので8chはステレオ4系統相当です。電源はバスパワー動作も可能ですが、ヘッダピンから5Vを供給することもできます。

MCHStreamerはクロックマスタで動作します。I2Sクロック MCLK, LRCLK, BCLK はすべて出力なので、接続するADC/DACはスレーブモードで動作させることになります。

対応できるサンプルレートは、動作モードにより違いがあります。384kHz対応は、AllRate(入出力)、Oi2o_DSD(PCM出力)、Oi8o_DSD(PCM出力)の3つ。そのちI2S入力に対応するのはAllRateのみです。


Windowsで使用する

miniDSPのユーザダウンロードページからWindowsドライバ(ASIO)をダウンロードし、MCHStreamer KitをUSB接続した状態で、ドライバのsetupファイルを実行します。すると、基板のデフォルトであるI2S_TOSLINKファームウェアが有効になっているので、I2S 8chとTOSLINK 2chの計10ch、44.1~192kHzが使えます。


さて、とりあえず動作試験をしたいところ、9/10チャンネルにアサインされているトスリンクから音を出そうとしましたが、WaveGeneでは8チャンネルまでしか選べないし、良いツールが見当たりません。そこで付属の更新ツールminiDSPUAC2Dfuを使いファームウェアをTOSLINK_Onlyに差し替えて、TOSLINKを通じての動作確認ができました。


今回は、I2S 384kHzを使えるようにしたいのでファームウェアをAllRateに変更します。ただI2Sの対応デバイスがありませんから、とりあえずI2S入出力を直結してループバック動作させることにしました。

ところが、WaveSpectra(他のソフトでも)では192kHzまでしか使えません。



念のため、Oi2o_DSD/Oi8o_DSDファームウェアに変えたところ、384kHz出力はできますが入力は非対応です。



これは、おかしいとサポートに問い合わせたところ、次の回答が届きました。

  • AllRateは、パケットサイズがUSBリンク速度を越えるため、384kHz 8chをサポートしていない
  • 384kHz 2ch 双方向オーディオには対応していない

ええー!?と驚きです。資料では384kHz双方向で使えるかのように書いてあるのですが、現状で使えそうもありません。
いちおうLinuxでも試してみたところ、ラズパイ4でドライバを追加することなくASIOで使用できます。ただ、AllRateファームウェアでのループバック動作はやはり192kHzまででした。

サポートは、USBリンク速度の制約を受けていると言っています。オーディオの転送レートは、32ビット×384ksps×8チャンネル×2双方向=196.608Mbsとなかなかのものです。もしUSBの接続速度がそれ以下なら、ぜったい通りません。UsbTreeViewでUSBインターフェースの接続状態を確認したところ、High-Speed(480Mbps)で接続ですから大丈夫のはずです。


High-Speed接続なのに、なぜリンク速度が不足するというのか、詳しい方に尋ねてみたところ、ドライバのディスクリプタの書き方次第で上限が変わるらしいんですね。何か物理的な制約があるのか、何らかの事情があってソフトを頑張っていないのか、外野からは知る由がありません。とはいえ、384kHz対応と謳うくらいであれば、この製品のようにチャンネル数を削減して384kHz双方向通信ができるドライバをリリースしてほしいものです。

マルチチャンネル

マルチチャンネルデバイスは使ったことがなく、Windowsからどのように見えるのか興味津々でした。画面コピーを貼り付けておきます。

コントロールパネル ⇒ サウンド
再生タブ(スピーカー MCHStreamer Multi-channels)



録音タブ(ライン MCHStreamer Multi-channels)


スタートメニュー ⇒ miniDSP Ltd ⇒ miniDAC UAC2 Control Panel



2020年5月12日火曜日

CYC1000 Cyclone10 LP FPGAボード

安いので目的もなく買ってしまいました。Cyclone10 LPとUSB書込器が載っています。FPGAの規模はDE0nanoと同じくらいでしょうか。製品はTrenz ElectronicのTEI0003をArrowが販売しているように見えます。公式ドキュメントはこちらにあります。



概要

  • 25K LE FPGA (Intel 10CL025YU256C8G)
  • Arrow USBプログラマ (FT2232H-56Q) ※UARTとしても使用可
  • コンフィグメモリ 16Mbit FLASH (EPCQ16SI8N)
  • 64Mbit SDRAM (W9864G6JT-6)
  • (Arduino)MKRヘッダ
  • (Digilent)PMODヘッダ
  • プッシュスイッチ2個 リセット/汎用 各1個
  • 赤色LED8個
  • 3軸加速度センサ (LIS3DH)
  • MEMSオシレータ 12MHz (DSC6011ME2A-012.0000T)


ピンアサイン

GPIOは、GPIO0-24とPmodコネクタのI/Oも含めれば33本あります。ただし、GPIO0はGPIOの入力リファレンス電圧供給用端子も兼ねていて0.1uFが並列接続されています。


Pmod端子で面食らったのが、ピン番号の配置です。よくあるヘッダピンの数え方と同じと思っていましたらドキュメントとの整合がとれず困惑しました。Digilent Pmod Interface Specificationよりピン配置を示します。

2020.5.24追記
Pmod端子は、ハーフピッチずれています。ここにヘッダピンを実装するとブレッドボードに差し込めなくなる場合がありますからご注意ください。

電源

電源入力は、ヘッダピン(J2 13pin)5Vを優先にてmicroUSBコネクタ VBUSと自動切替されます。この5VはJ2 14pinから取り出せるほか、オンボードのスイッチング電源 EP53A7HQI で降圧された3.3VがJ2 12pinに接続されています。
なおスイッチング電源の発振周波数は5MHzです。ノイズ輻射はいかに?

Lチカを試す

オンボードのArrow USBプログラマを使うためドライバをインストールします。
  • CYC1000をWindows PCに接続し、FTDI USBドライバがインストールされているか確認するため、デバイスマネージャを開きます。次のデバイスが認識されていなければD2XXドライバをインストールします。

ユニバーサル シリアル バス コントローラー
USB Serial Converter A
USB Serial Converter B 
ポート(COMとLPT)
USB Serial Port (COM ??)


無事Quartusから認識され、書き込みもできました。




LEDが眩しい。3.3V/100Ωと電流流し過ぎかもです。

2020年5月9日土曜日

SA9227 USBオーディオで384kHzハイレゾ再生

『SA9227+PCM5102A 32BIT/384KHZ USB DAC/HIFI Asynchronous Decoder』と称する中華USBオーディオ基板を動作させてみました。ebayで購入してお蔵入りしていたもので今更感がありますが、なかなか良いものです。


Windowsドライバのインストール

SA9227用のものを探してみました。Savitech SA9227 driverをインストール後に基板を接続します。コントロールパネル ⇒ サウンド ⇒ 再生タブ ⇒ HD USB Audioのプロパティでサポートされる形式 タブにてすべてのサンプルレートにチェックを入れます。



ドライバとともにBRAVO-HD Audio CPLというアプリがインストールされているはずです。アプリ上部はUSBオーディオの既定値を示しています。下部はマウスで設定でき、ビット深度は次回再生開始から有効となりますので再生するビット深度より大きくしておきます。最下部の赤字はステータス表示です。


WaveGeneからトーン信号再生

WaveGeneをASIO 384kHz 32bitとしてトーン信号を出力してみます。


ハイレゾ音源を再生

あいにく手持ちには384kHz音源がありません。フリーの波形編集ソフトウェアHi-Res Editorを使ってCD音源等を384kHzに変換します。このソフトはDSD 11.2MHz/PCM 384kHz 32bit、ファイル形式wav/dsf/dffにも対応しています。


Hi-Res EditorはASIO対応で再生も可能です。リアルタイム変換もできるようですが、当方の環境では音が途切れてしまうので、いったん384kHzにファイル変換してから再生します。


基板の回路図

入手当時、SA9227にI2S入力をできないかなと基板の回路図を書いていたようです。その後、EEPROMの設定(要NDA)が必要とわかりお蔵入りしていました。半ば想像図のはずです、そのつもりでご覧ください。なお、USBバスパワーでの基板の消費電流170mAでした。


2020年5月6日水曜日

ラズベリーパイでradikoラジオをつくる: その14 ケースに入れて完成


ケースに収納

ケースに入れて日常使いできるようになりました。手元のメモを調べましたら、2019年4月に資料集めを開始していましたので、足かけ1年での完成です。
今回は、市販のプラスチックケース使って、加工アラを目立たせにくく、かつ見栄え良く仕上げることを意識しました。まずベースとなるケースには、パネル面に段差がなく、かつ側板を取り外して加工ができるタカチのPFケースを選びました。そもそもタカチを選んだのは、有料で穴開け加工を請け負ってくれるからなのですが、後から見積もりをとったら予算オーバーとなり目論見が外れてしまいました。その後、紆余曲折あり工作名人F氏の好意に甘え、加工をお願いすることになりました。


仕上げとしてパネル全面をアクリル板で覆う設計としています。アクリル板の加工は専門会社が比較的低コストで受託してくれますから、パネルだけは製品品質を追求できます。副次的な効果として、プラスチップケースに貼り付けたシール紙やテプラを保護できますし、プラケースの加工アラを目立ちにくくできます。アクリル板の加工は、はざいや に依頼しました。Web画面で加工位置を入力すると図面まで表示される驚異の自動見積システムを備えています。(2020年5月現在、コロナ禍の影響で自動見積もりは運用中止)


ケース内部は、このような感じです。F氏の発案で秋月の50円スピーカを内蔵しています。まさに「ラジオの音」が出ます。


私は、ふだん内蔵スピーカを使用せず、外部スピーカに接続しています。スピーカ上部のハンドルはカインズホームの鋳物取手です。


さらにradikoラジオをスピーカ上部にマジックテープで固定しました。


謝辞

最後になりましたが、マルチスレッドプログラミングのヒントを頂いたb様、加工・バグ出し・操作性の向上に協力をいただいたF様・H様、そしてWeb上に有用なソフトウエアを提供してくださっている皆様に感謝を申し上げます。