電子回路

2022年5月 7日 (土)

PCM1704 16倍 24BitスーパーサンプリングDAC 基板頒布のお知らせ

PCM1704 16x 24Bit Super Sampling DAC Board Distribution Notice

Ss1704pic_20220508191601
写真1.PCM1704による16倍24BitスーパーサンプリングDAC基板
photo1. 16x 24 Bit Super Sampling DAC Board with PCM1704

今回、PCM1704を初めて入手し、16倍24BitスーパーサンプリングDACを新たに開発しました。

スーパーサンプリングDACは、デジタルデータ間を3次自然スプライン関数で補間する新しい技術で、従来のDACにくらべ、トランジェント応答に優れ、プリエコー、ポストエコーが大幅に抑えられたきめ細かい音質で音楽が楽しめます。

下位互換のPCM1702による16倍20BitスーパーサンプリングDACはすでに紹介していますが、PCM1702とPCM1704は電源ピンを一部変更するだけで互換性があるため、生基板はPCM1702スーパーサンプリングDACと共通です。

オシロで再生信号を見ただけでは、PCM1702や従来のSSDACとまったく同じですが、聴いた印象はかなり違います。
音はマルチビットのSS128(128倍16bit)やSS1702(16倍20bit)と同じ傾向ですが、PCM1704は繊細さがより際立っています。
具体的には、録音、Mixが派手なロックやラテンなどの音源も、とがってうるさい感じがかなり軽減し、その分裏に隠れていた微妙なニュアンスが聴こえてくるという印象です。
これはぜひとも多くの方々に聴いていただきたいと思いますので、今回も製作資料およびFPGAのオブジェクトファイルを公開します。

This time, I got the PCM1704 for the first time and developed a new 16x 24-bit supersampling DAC.

Supersampling DAC is a new technology that interpolates between digital data with a third-order natural spline function. Compared to conventional DACs, supersampling DACs have excellent transient response, and you can enjoy music with fine-tuned sound quality with significantly suppressed pre-echo and post-echo. We have already introduced a 16x 20- bit supersampling DAC

with a backward compatible PCM1702, but since the PCM1702 and PCM1704 are compatible with only a partial change in the power supply pin, the raw board is the same as the PCM1702 supersampling DAC. Just looking at the playback signal on the oscilloscope is exactly the same as the PCM1702 or conventional SSDAC, but the impression you hear is quite different. The sound has the same tendency as the multi-bit SS128 (128x 16bit) and SS1702 (16x 20bit), but the PCM1704 is more delicate. Specifically, the recording and sound sources such as rock and Latin with flashy mixes have a considerably reduced noisy feeling, and the impression is that the subtle nuances hidden behind them can be heard. I would like many people to listen to this, so I will publish the production materials and FPGA object files this time as well. 

製作マニュアル
図表
取扱説明書
FPGAオブジェクトファイル(10M08SCE144C8G用)


【主な仕様】
●Amanero COMBO384互換入力
●NOSおよび16倍24Bitスーパーサンプリング・サインマグニチュードDAC(PCM1704)音声差動出力
●入力電源:AC12V~AC15V x2(±電源)
●基板サイズ:112mm x 140mm

[Main specifications]
● Amanero COMBO 384 compatible input
● NOS and 16x 24 Bit Super Sampling Sign Magnitude DAC (PCM1704) Audio differential output
● Input power supply: AC12V to AC15V x2 (± power supply)
● Board size: 112mm x 140mm

Please contact us for overseas shipping.

 
次の3種類を頒布します。(すべて税、送料込み)
PCM1704を含む全部品実装基板②は、今回PCM1704が1台分のみ入手できたため、限定一台のみの頒布です。

①書き込み済みFPGA搭載基板   30,000円
・書き込み済みFPGAのみ搭載した基板です。
・納期:1週間~10日程度
※PCM1704は生産中止部品です。ご自分で手配される場合は不良品や偽品にご注意ください。

②全部品実装基板(動作確認済み) 180,000円
・書き込み済みFPGAを含む全部品を搭載した基板です。
・Amanero COMBO384は含まれません。
・すべて手実装です。
・納期:2~3週間程度(受注生産)

③生基板 3500円
・生基板のみの販売です。FPGA用pofファイルをダウンロードしてお使いいただけます。

●FPGA用pofファイルのダウンロードはこちら


購入ご希望の方は表題に「SSDAC1704頒布希望」とお書きのうえ、
dj_higo_officialアットhigon.sakura.ne.jp(アットを@に換えて)までメールにて
お申し込みください。
※ご希望のセット番号と、お名前、ご住所、電話番号をお書きください。
折り返し、代金振込先等のご案内をお送りします。

製造・頒布はSLDJ合同会社が行います。

| | コメント (0)

2022年4月24日 (日)

温湿度気圧計キットのAmbient対応

Onsitsudokiatsupic

写真1.ESP32-SOLO-1によるWIFI温湿度気圧計
Ambientにて計測値公開中(ベランダに設置したUV計もいっしょにd5に表示)。


 基板キット頒布中の温湿度気圧計に新たにAmbient送信機能を追加した。
これにより本機は、以下のデータ処理が可能になった。
・LCDによる表示
・WIFI、インターネット経由でFTPサーバへの測定データ送信 → インターネットブラウザで表示可能なので、共有可能。
・WIFIのUDPでデータを送信 → WIFIに接続されたPCで直接データ受信可能。
・WIFI、インターネット経由でAmbientサービスにデータ送信 new!! → データのグラフ化および蓄積が可能。

Ambientはインターネット経由で送信したデータのグラフ化および蓄積を行ってくれるサービスで、chあたり8データを合計8ch(64データ)まで無料で引き受けてくれるありがたいサービスだ。
本機では温度、湿度、気圧に加えて電池電圧をAmbientに送信する。使用例を図1に示す。


Ambientsample
図1.Ambient使用例
データは一年間蓄積可能で、8CHまで無料ということは本機を8台まで無料でデータ管理ができる。
またグラフだけではなく、蓄積されたデータをcsv形式でダウンロードできる。

本機を8台使用可能ということは、リビング、キッチン、ベランダ、実験机、冷蔵庫内、冷凍庫内に設置しても、まだ2ch余裕がある。

新しい取扱説明書およびファームウェアは製作記事よりリンクしていますのでご利用ください。
ドシドシ作って測定しまくってくださいね(^-^)

| | コメント (0)

2022年4月 4日 (月)

RDA5807MとPICマイコンによるFMラジオ(基板頒布あり)

Fmrcvblog

写真1.今回製作したRDA5807によるFMラジオ


【追記】※部品調達に関係するため先に書いておきます。
今回使用したRDA5807モジュールは最近秋月で販売開始したRDA5807Hと、それより以前から広く売られているRDA5807Mの2種類があり、内容は同じだと考えていたが、念のため比較したところ、ソフト制御はコンパチであるものの、ノイズ関係の処理の差なのか、電波が弱い場合の音質に差がある。結論を先に言うと、秋月のRDA5807Hよりも広く出回っているRDA5807Mのほうが音質が良いようだ。写真A参照。

5807h_m
写真A.RDA5807M(左:amazonで購入)とRDA5807H(右:秋月電子)

具体的には、室内などでの受信で受信信号レベルが低い場合に、RDA5807Hは高域が下がったくぐもったような音になる。対してRDA5807Mはそのような音質の変化は感じられない。電波が強く感度が十分な場合は両者に違いはない。
レジスタ設定で関係がありそうなところは、入力のLNA(ローノイズアンプ)の電流設定と、ソフトブレンドの設定くらいしかない。LNAの電流設定はRDA5807Hにしか付いておらず、これを変化させても上記の音質は改善しなかった。また、ソフトブレンドはノイズ軽減のためにLR信号をブレンドして再生する機能だが、この機能をON/OFFしても音質は変化しなかった。
RDA5807Hで高域が下がる現象は、おそらく受信信号レベルが低い場合のノイズ対策として、何らかの仕組みが働いているものと考えられるが、現在のところ解決できていない。
よって、おすすめはRDA5807Mとする。こちらの方が安いし入手性にもすぐれている。



今回はFMラジオICモジュールRDA5807とPICマイコンを使って、高感度高音質のステレオFMラジオを製作しました。夏休みの自由研究にいかがでしょうか。
このラジオを使って放送局に受信報告書を送ってベリカードを集めるのもおもしろいかもしれません(^-^)


2016年頃、FMラジオIC、RDA5807とPICマイコンを使ってFMラジオを製作したところ、思いがけず高感度高音質で、翌年には手作りアンプの会での製作会を行い、2018年にはトランジスタ技術10月号に製作記事を掲載していただいた。その後2021年4月にはCQ出版社より「AM/FMラジオ&トランスミッタの製作集」(写真2)が刊行され、このRDA5807のFMラジオが裏表紙を飾った\(^o^)/ワーイ(写真3)


Cqbunko1 Cqbunko2
     写真2.ラジオ製作集            写真3.裏表紙にFMラジオ


今回はRDA5807を使用したモジュールRDA5807Mの入手性が良くなったことに加え、3.3Vの高性能LDOも入手できるようになったので、改良版を製作した。主な改良点は次の通り。

①電源オフの動作を、Sleep動作から電源遮断に変更
従来の電源オフ動作はマイコンのSleepを使用しており、OFF時の消費電流が50μA程度あったため、250mAhのリチウムイオン電池使用でも半年から一年程度で電池が空になり、使わずに放置しておくと電池がダメになるという欠点があった。
今回はMOSFETを使った電源遮断回路を搭載し、電源OFF時の消費電流をほぼゼロとすることで、長期未使用による電池劣化が起こりにくくなった。
②LCDパネル標準搭載
従来品ではLCDパネルは配線を引き出して接続するオプション扱いとなっており、LCDモジュールのばらつきや電源電圧によっては表示濃度(コントラスト)にばらつきが出ることがあった。今回はLCD用のソケットを実装して標準装備とし、LCDコントラストの調整機能を追加した。
③選局、音量、LCDコントラストは電源OFF時にメモリに書き込まれ、次回の使用時に反映されるようにした。
④従来、iPod用のUSB電源アダプタを使用して充電する仕様だったが、今回は汎用性を重視してUSB-Cでの充電とした。
⑤ヘッドホン駆動用オペアンプにAD8532を採用し、負荷駆動力が向上した。
⑥ボタン型リチウムイオン電池LIR2450取り付け用パターンを追加した。


本機は非常に感度が良く、SLDJ本社(中野区)のベランダで聴いてみると、なんと17局が受信できた。受信局は以下。
78.0MHz  bay fm
78.6MHz  FM FUJI
79.5MHz  FM NACK5
80.0MHz  TOKYO FM
80.7MHz  NHK千葉
81.3MHz      J-WAVE
81.9MHz  NHK神奈川
82.5MHz  NHK東京
83.4MHz  エフエム世田谷
84.7MHz  FMヨコハマ
85.1MHz  NHKさいたま
86.6MHz  TOKYO FM檜原中継局
89.7MHz  inter FM
90.5MHz  TBS
91.6MHz  文化放送
92.4MHz  ラジオ日本
93.0MHz  ニッポン放送

私が小中学生だった頃は、”エアチェック”といって、FMで流れた音楽をカセットテープに録音して聴いていたもので、できるだけ高音質で録音して聴きたいのだが、その当時住んでいた神奈川県大和市では受信できる放送局はNHK FMとFM東京の2局しかなく、そのたった2局のために、FMチューナーやアンテナにどこまで投資するのか、というのは非常におおきな悩みだった。
それが今やこの局数である。
しかも従来AMラジオ帯にいた放送局がほとんどFMに移動し、2028年にはAM放送がほぼ全廃されるということだ。
現在わかっているところでは、AMにとどまる放送局は北海道のSTVラジオ、北海道放送、それに秋田放送の3局と、NHK各局、AFN(アメリカ軍ラジオ)ということらしい。その中でNHK第一と第二は1つにまとめられるという話があるので、在京ではNHKとAFNの2局のみとなり、上に書いた当時のFMと逆転状態になる。

AM放送は中波帯という周波数帯であり、波長が長く電離層反射が起きるため、海外の放送局が聞こえるなど、到達範囲は非常に広い。また検波(電波から音声を抽出すること)が非常に簡単にできる。欠点は、波長が長いため送信設備が大がかりになる、ノイズに弱く、音質はいまいち。
FM放送は、超短波帯という周波数帯であり、波長が短く電離層反射はほぼ起こらないため、到達範囲は見通し範囲内となる。検波方式は複雑だが、半面雑音に強く音質にすぐれ、波長が短いため送信設備もAM局よりも小規模に構成できる。
AM/FMというのは変調方式の呼称であり、周波数帯とは関係がない。おおむね50MHz以上ではAMよりもFMが使われることが多いが、118MHz~136MHzの航空無線ではAMが使われる。これはなぜかというと、同一周波数で電波が出ている場合、FMでは受信強度が強い一波のみが受信されるが、AMでは混信状態となる。航空無線の場合は救難通信などを取りこぼさないため、同一周波数で重なっても打ち消されないAMが使われる。

今後AMラジオが衰退していった場合に、非常時の情報伝達にどのような影響が出るか考えておく方がよさそうだ。
FMでは到達範囲が狭いため、遠方の情報は得られない。
たとえば無人島に漂着したり、不明な場所に不時着したような場合(滅多にはないことだが)、AMラジオならダイオード1本とイヤホンがあれば受信機を作れる可能性があるが、FMでは簡単には作れないし、そもそも電波が届かない可能性が高い。


今回製作したFMラジオの資料を以下に公開します。

回路図・部品表・寸法図
製作マニュアル
取扱説明書
ファームウェア(PIC16F1503用HEXファイル)


今回プリント基板を作りましたので、自作してみたい方に次のとおり頒布します。

①生基板のみ 1枚 900円(税・送料込み)
・生基板のみです。

②チップ部品実装基板+リード部品 1セット 5600円(税・送料込み)
・書き込み済みマイコン、RDA5807モジュールを含むすべてのチップ部品を実装した基板と、液晶モジュールAE-AQM0802を含む未実装リード部品のセットです。
・リチウムイオン電池は別途必要です。ご用意ください。


ご希望の方は表題に「FMラジオ基板頒布」、
本文にご希望のセット番号と数量、お名前、送付先郵便番号、ご住所、電話番号をお書きのうえ、

dj_higo_officialアットhigon.sakura.ne.jp
(アットを@に替えてお送りください)

までメールをお送りください。

代金の振込先のご案内メールをお送りします。入金が確認でき次第発送します。

基板なしでもバラックで製作できますので、興味のある方はぜひ作ってみてください(^-^)



【3Dプリントケース】2022/04/07追記
3Dプリンタによるケースを製作しました。

2_20220407122601 Photo_20220407122601
     写真4.3Dプリントケース(フタを開けたところ)       写真5.3Dプリントケース


STLデータを次のとおり公開するので、必要な方はお使いください。

下箱
ダウンロード - 20220406radio_basebox000.stl

パネル(社名刻字なし)
ダウンロード - 20220404radio_top002.stl

 




| | コメント (0)

2022年3月22日 (火)

ESP32-SOLO-1によるWIFI温湿度気圧計の製作(基板頒布あり)

Onsitsudokiatsupic
写真1.ESP32-SOLO-1とBME280によるWIFI温湿度気圧計


今回はシングルコアWIFIマイコンESP32-SOLO-1と温湿度気圧センサBME280モジュールを使ったWIFI温湿度気圧計を製作したので紹介します。夏休みの自由研究用にいかがでしょうか(^-^)


シングルコアのESP32-SOLO-1は発売されて久しいが、あまり人気がないようで話題に上らない。当ブログでの検証では、従来のデュアルコアのESP32に比べ、3割以上の低消費電力化が確認された

WIFI温湿度気圧計を作った!といっても、「ふ~ん…で?」と薄い反応をされるのだが、温湿度気圧の3種類が同時に計れると思いのほかおもしろい。台風や低気圧が来れば気圧は下がるし、雨が降れば湿度が高くなる。気圧が下がると頭痛になることがあるが、その経過観察もできる。実験机に置いておいてログを取っておけば実験環境があとからでも確認できる。寒い冬の朝に、ベランダに置いた温湿度気圧計のデータを暖かい部屋の中からWIFI→インターネット経由でブラウザで見ることができるので、服装を考えるのにも役立つ。冷蔵庫や冷凍庫に放り込んでおけば、内部がどんな温度になっているのか、扉を閉めたまま確認できる。離れて暮らすお年寄りの部屋で使ってもらえば、インターネットで室内環境がわかるので、異常がないかどうかの目安になる。ほかにもおもしろい使い方があるかもしれない。

今回製作した温湿度気圧計の主な仕様は次のとおり。

・マイコン     ESP32-SOLO-1
・センサ      BME280
・測定間隔     15分、30分、60分から選択
・測定データ送信  FTPサーバーにアップロード(インターネットブラウザで閲覧可能)、UDP送信可能。
・データ送信先   任意の送信先FTPサーバーアドレスを設定可能。UDP送信はIPアドレス192.168.0.255、ポート10001固定。
・液晶表示     AE-AQM0802液晶モジュールを搭載することで表示が可能。液晶のコントラスト調整付き。
・消費電流     平均0.8mA(測定15分間隔、LCDなし)、平均1mA(同LCD付き)
・使用電池     1セルリチウムイオン電池、または単3型電池2本(オプションTPS63802レギュレータ使用時)
・充電機能     USB-Cポートによるリチウムイオン電池充電回路付き

実際の動作時は、インターネットブラウザで図1に示すように表示される。UDP送信も併せて行った場合は、UDP受信ソフトにより図2のように表示される。
筆者のベランダに設置した本機のデータは次のURLでご覧いただけます。
http://higon.sakura.ne.jp/higo_veranda.html


Thp_brwz
図1.インターネットブラウザで測定値を表示


Udprcv001
図2.UDP表示ソフトでの表示


各資料は次からダウンロードしてください。

取扱説明書

製作マニュアル

回路図、部品表、コネクタ表、寸法図

●ファームウェアのダウンロードはこちら

今回はプリント基板を作りましたので、自作してみたい方に次のとおり頒布します。
この基板は温湿度気圧計だけではなく、ESP32用のブレークアウトボードとしても利用可能です。シリアルインタフェイスは未実装で、レギュレータは外付け対応可能なので、消費電流の検証などにも便利です。


①生基板のみ 1枚 900円(税・送料込み)
・生基板のみです。

②チップ部品実装基板+リード部品 1セット 3480円(税・送料込み)
・書き込み済みマイコンを含むすべてのチップ部品を実装した基板と、未実装のリード部品のセットです。
・センサーモジュールBME280、液晶モジュールAE-AQM0802、リチウムイオン電池は別途必要です。

③完成品 1セット 7900円(税・送料込み)
・センサーモジュールBME280、液晶モジュールAE-AQM0802を含む、動作確認済みの完成品セットです。
・リチウムイオン電池は別途必要です。

ご希望の方は表題に「WIFI温湿度気圧計基板頒布」、
本文にご希望のセット番号と数量、お名前、送付先郵便番号、ご住所、電話番号をお書きのうえ、

dj_higo_officialアットhigon.sakura.ne.jp
(アットを@に替えてお送りください)

までメールをお送りください。

代金の振込先のご案内メールをお送りします。入金が確認でき次第発送します。



基板なしでもバラックで製作できますので、興味のある方はぜひ作ってみてくださいね(^-^)

| | コメント (0)

2022年2月26日 (土)

RIAAフォノイコライザをIIRデジタルフィルタで実装する ⑤Octaveによる位相検証

かなり間があいてしまったが、この記事は、

RIAAフォノイコライザをIIRデジタルフィルタで実装する ①準備編
RIAAフォノイコライザをIIRデジタルフィルタで実装する ②係数計算編
RIAAフォノイコライザをIIRデジタルフィルタで実装する ③シミュレーション編
RIAAフォノイコライザをIIRデジタルフィルタで実装する ④実装・評価編

の続きで、IIRデジタルフィルタで実装したレコード再生用のRIAAイコライザに関するものです。

IIRデジタルフィルタは、位相特性も含めてアナログフィルタを等価的に再現できる。
とはいえ、扱う信号の周波数がナイキスト周波数(サンプリング周波数の1/2)に近づくにつれ誤差が大きくなる。
前回までのシミュレーション及び実機検証でも96kHz サンプリングにおいて、20kHzでおよそ+0.5dBのゲイン誤差を確認している。
今回はゲイン誤差に加えて、位相誤差がサンプリング周波数によってどの程度ちがうかを確認するため、フリーで使用できる数値解析用のプログラミング言語Octaveを使って解析した。

①アナログCR RIAAイコライザ回路のLTSpiceでのシミュレーション
データ検証の基準として、アナログ構成のCR型RIAAイコライザをLTSpiceによってシミュレーションする。
シミュレーションした回路と、AC解析結果をそれぞれ図1,図2に示す。

Ltspice_eq_sch
図1.基準とするRIAAイコライザ回路
RIAAフォノイコライザをIIRデジタルフィルタで実装する ①準備編で計算した定数による回路。


Ltspice_eq_gpneg
図2.AC解析結果(Gain-Phase)
LTSpiceのAC解析シミュレーション。


②OctaveによるIIRデジタルRIAAイコライザのシミュレーション
数値解析用プログラミング言語Octaveを使って、RIAAフォノイコライザをIIRデジタルフィルタで実装する ②係数計算編で算出した係数を使い、RIAAイコライザ回路のシミュレーションを行った。
Octaveは非常に便利な解析用プログラミング言語で、行列計算を基本として、あらゆる数値解析に応用できる。
今回はOctaveのIIRフィルタ解析の機能を使ってシミュレーションを行った。
使用したOctaveは最新版のVer.6.4.0GUI。ダウンロードはこちら
OctaveでIIRフィルタのシミュレーションを行うには次のようにする。

式1で与えられるIIRフィルタを考える。

Formura_iir  ……式1
ただし、
B1 、B2、 A1、 A2

このとき、
b = G*conv(b1,b2);
a = conv(a1,a2);
[h,w]=freqz(b,a,4096,'whole',96000);
を行うと、式1で示されるIIRフィルタ出力の角周波数ベクトルwと応答周波数ベクトルhが得られるので、h,wをプロットすることでゲイン特性と位相特性のグラフが得られる。
ここで、convはベクトルの畳み込み演算(多項式同士の乗算)、freqzはデジタルフィルタの周波数応答を計算する関数、4096はサンプル数、96000はサンプリング周波数。
RIAAフォノイコライザをIIRデジタルフィルタで実装する ②係数計算編で計算したサンプリング周波数96kHzでの双一次変換によるRIAAイコライザの伝達関数は、

96kiir_riaa……式2
なので、
b1=[1 0]
b2=[1 ‐0.96777105  0]
a1=[1 0]
a2=[1 -1.866859545 0.86728426]
G=1
とすれば、このRIAAイコライザの特性がシミュレーションできる。
実際のコードは次のとおり。(コード中ではG=b0=1)
(注)subplotは複数のグラフを並べて表示する関数(今回はゲインのグラフと位相のグラフ)、semilogxはx軸を対数にする関数。

b0 = 1;
b1 = [1 0];
b2 = [1 -0.96777105  0];
a1 = [1 0];
a2 = [1 -1.866859545 0.86728426];
b = b0*conv(b1,b2);
a = conv(a1,a2);
[h,w]=freqz(b,a,4096,'whole',96000);
subplot(2,1,1);
semilogx(w,20*log10(abs(h)));
grid;
ylabel('Magnitude (dB)');
title('Bilinear Transform RIAA EQ @96kHz');
subplot(2,1,2);
semilogx(w,angle(h)*180/pi);
grid;
ylabel('Phase (Deg)');
xlabel('Normalized Frequency (Hz)');

このコードをOctaveのコマンドウィンドウにコピペすれば、次のグラフが表示される。

Bl96k
図3.双一次変換法による96kHzサンプリングRIAAイコライザ特性

※上記のプログラムリストを、テキストエディタでbilinear96.mと名前をつけてunicode(UTF-8)で保存し、
保存したホルダをOctaveの”現在のディレクトリ”に指定した上で、コマンドウィンドウで
>>bilinear96
としてENTER↓でも実行できる。


同じく192kHzサンプリングでは、

b0 = 1;
b1 = [1 0];
b2 = [1 -0.98375463 0];
a1 = [1 0];
a2 = [1 -1.93124941 0.93135924];
b = b0*conv(b1,b2);
a = conv(a1,a2);
[h,w]=freqz(b,a,4096,'whole',192000);
subplot(2,1,1);
semilogx(w,20*log10(abs(h)));
grid;
ylabel('Magnitude (dB)');
title('Bilinear Transform RIAA EQ @192kHz');
subplot(2,1,2);
semilogx(w,angle(h)*180/pi);
grid;
ylabel('Phase (Deg)');
xlabel('Normalized Frequency (Hz)');

Bl192k
図4.双一次変換法による192kHzサンプリングRIAAイコライザ特性


同様に384kHzサンプリングでは、

b0 = 1;
b1 = [1 0];
b2 = [1 -0.99184419 0];
a1 = [1 0];
a2 = [1 -1.96505172 0.96507966];
b = b0*conv(b1,b2);
a = conv(a1,a2);
[h,w]=freqz(b,a,4096,'whole',384000);
subplot(2,1,1);
semilogx(w,20*log10(abs(h)));
grid;
ylabel('Magnitude (dB)');
title('Bilinear Transform RIAA EQ @384kHz');
subplot(2,1,2);
semilogx(w,angle(h)*180/pi);
grid;
ylabel('Phase (Deg)');
xlabel('Normalized Frequency (Hz)');

Bl384k
図5.双一次変換法による384kHzサンプリングRIAAイコライザ特性


③アナログ回路およびサンプリング周波数別の特性比較
今回のテーマは、RIAAイコライザの理論値(=アナログ回路のLTSpiceシミュレーション)とIIRフィルタによるデジタルRIAAでサンプリング周波数ごとに、どの程度誤差が出るかを検証することなので、図2~図5を比較する。
100hz、1kHz、10kHz、20kHzでのゲインと位相の値を表1に示す。これは得られたグラフにカーソル当てて直読した。

表1.各回路の周波数ごとのゲイン、位相
※ゲインは1kHzで-20dBとなるように正規化した。
Gpmatrix

前回までの記事で、96kHzサンプリングのデジタルRIAAでは、20kHzのゲインにおよそ+0.5dB程度誤差が出ることが確認されているが、今回のシミュレーションでも同じ結果となった。
今回は位相について注目したい。一番下の黄色のマスが、LTSPICEによるアナログRIAA回路でのシミュレーション結果で、これを基準とする。
このときの各回路での位相誤差を図6に示す。

Samplingvsphase
図6.位相特性の比較

図6の一番下の黄色いプロットが基準となるアナログ回路によるRIAAのシミュレーションで、20kHzにおける位相が-85°だ。
サンプリング周波数が384kHz、192kHz、96kHzと減少するにつれ、位相は-76°、-67°、-48°と乖離してゆく。
これが聴感上どの程度の差になって表れるか定量化することは難しいが、IIRによるRIAAイコライザで高域の位相特性まで忠実に再現しようとするなら、サンプリング周波数は高いほど良いということになる。
予想としては「96kHzのサンプリング周波数であれば必要十分」程度に考えていたので、意外な結果と言える。


●2022/02/26追記
RIAAフォノイコライザをIIRデジタルフィルタで実装する ②係数計算編で触れたが、双一次変換によって計算した伝達関数である式2は、
もともと式3として算出されたものに対してz^-1項の係数をネグって、z^-2項の係数をz^-1にシフトしたものだ。

Formula_org …式3


96kiir_riaa …式2(再掲)

これはRIAAフォノイコライザをIIRデジタルフィルタで実装する ②係数計算編で書いた通り、式2を採用することで高域のゲイン誤差が抑えられるということがわかったが、Octaveで解析したところ式3のほうが位相誤差が小さい。
そのため追加評価として式3での解析結果を以下に記しておく。

式3によって計算すると、96k㎐サンプリングのOctaveコードと得られた特性は次のとおり。

b0 = 1;
b1 = [1 0];
b2 = [1 0.03222895 -0.96777105];
a1 = [1 0];
a2 = [1 -1.866859545 0.86728426];
b = b0*conv(b1,b2);
a = conv(a1,a2);
[h,w]=freqz(b,a,4096,'whole',96000);
subplot(2,1,1);
semilogx(w,20*log10(abs(h)));
grid;
ylabel('Magnitude (dB)');
title('Bilinear Transform RIAA EQ @96kHz(2)');
subplot(2,1,2);
semilogx(w,angle(h)*180/pi);
grid;
ylabel('Phase (Deg)');
xlabel('Normalized Frequency (Hz)');

Riaa96k2
図7.双一次変換法による96kHzサンプリングRIAAイコライザ特性(式3による)


同じく192k㎐サンプリングでは、

b0 = 1;
b1 = [1 0];
b2 = [1 -0.98375463 0];
a1 = [1 0];
a2 = [1 -1.93124941 0.93135924];
b = b0*conv(b1,b2);
a = conv(a1,a2);
[h,w]=freqz(b,a,4096,'whole',192000);
subplot(2,1,1);
semilogx(w,20*log10(abs(h)));
grid;
ylabel('Magnitude (dB)');
title('Bilinear Transform RIAA EQ @192kHz(2)');
subplot(2,1,2);
semilogx(w,angle(h)*180/pi);
grid;
ylabel('Phase (Deg)');
xlabel('Normalized Frequency (Hz)');

Riaa192k2
図8.双一次変換法による192kHzサンプリングRIAAイコライザ特性(式3による)


同様に384k㎐サンプリングでは、

b0 = 1;
b1 = [1 0];
b2 = [1 0.00815581 -0.99184419];
a1 = [1 0];
a2 = [1 -1.96505172 0.96507966];
b = b0*conv(b1,b2);
a = conv(a1,a2);
[h,w]=freqz(b,a,4096,'whole',384000);
subplot(2,1,1);
semilogx(w,20*log10(abs(h)));
grid;
ylabel('Magnitude (dB)');
title('Bilinear Transform RIAA EQ @384kHz(2)');
subplot(2,1,2);
semilogx(w,angle(h)*180/pi);
grid;
ylabel('Phase (Deg)');
xlabel('Normalized Frequency (Hz)');

Riaa384k2
図9.双一次変換法による384kHzサンプリングRIAAイコライザ特性(式3による)


以上のシミュレーション結果による各周波数でのゲイン、位相を表2に示す。

表2.各回路の周波数ごとのゲイン、位相(式3による)
Fullgp

以上より、式3による計算方式では、96k㎐サンプリングのゲインにおよぞ-1.4dBの誤差が出たが、位相誤差はほぼゼロとなった。
サンプリング192k㎐ではゲイン、位相ともに問題のないレベルで、必要十分といえそうだ。

なので、結論としては、

・リソースの都合で96k㎐サンプリングで行いたい場合は、ゲイン誤差を優先して式2による係数にするか、位相誤差を優先して式3による係数にするか要検討。

・192k㎐サンプリングが許される場合は、式3による係数を採用すればゲイン、位相ともにほぼ誤差のない結果が得られる。


【おまけ】
今回使用した数値解析用プログラミング言語Octaveは、有名なMATLAB(有償)と互換性があり、フリーで使えるツールです。
今回のようなオーディオの解析だけではなくありとあらゆる数値解析やグラフ表示に使うことができるのでたいへん有用です。

・3次元プロットの例
Octave3dgraph

上の3Dプロットのプログラムは次のとおり。

tx = ty = linspace (-8, 8, 41)';
[xx, yy] = meshgrid (tx, ty);
r = sqrt (xx .^ 2 + yy .^ 2) + eps;
tz = sin (r) ./ r;
mesh (tx, ty, tz);
xlabel ("tx");
ylabel ("ty");
zlabel ("tz");
title ("3-D Sombrero plot");

| | コメント (0)

2022年2月16日 (水)

PIC16F1705とBME280による温湿度気圧計

Pic_bme280
写真1.ブレッドボードに組んだ温湿度気圧計
PIC16F1705で温湿度気圧センサBME280モジュールを駆動し、LCD(AQM0802)に表示する。


今回はPICマイコンの開発環境MPLAB X IDEでMCC(Microchip Code Configurator)を使って、温湿度気圧センサBME280をI2Cで駆動して、測定した温湿度気圧をI2CのLCDパネルに表示する温湿度気圧計の試作をした。
PICマイコンのレジスタ設定等をGUIで行えるMCCを使う練習をするのが今回の主な目的だ。

これまで、PICの開発はMCCを使わずにやっていたが、最近のPICマイコンは機能が増え、レジスタ設定が非常に複雑になってきたため、手作業でレジスタ設定を行うことが困難になり始めていた。
Microchip側としてもそのあたりを考慮して、GUIで簡単にレジスタ設定ができるMCCをリリースした。
MCCを使うと、レジスタ設定は非常に簡単に行えるようになるが、その反面レジスタ分類ごとにファイルが生成されるため、慣れないとどこで何を設定しているのかがわかりにくく、全体として見通しが悪くなる。そのためいままで敬遠してきたが、今回使ってみて、慣れてくるととても便利だということがわかった。

【温湿度気圧計仕様】
今回試作した温湿度気圧計の仕様と開発環境は次のとおり。

PICマイコン      PIC16F1705-I/P
温湿度気圧センサ     BME280(I2C)
LCD           AQM0802(I2C)
開発環境         MPLAB X IDE v5.35
             XC8 v2.31
             MCC v4.0.2 ※
測定間隔         270.6秒
電源電圧         2.6~4.2V
消費電流         0.2~0.25mA

※MCCはMPLAB X IDEにプラグインとしてインストールする。


【回路】
16f1705_bme280sch_20220216104701

図1.回路図


図1に今回製作した回路図を示す。
温湿度気圧センサBME280は、3.3VLDOを搭載したモジュールを使用した。(写真2)

Bme280module
写真2.BME280モジュール
amazonやaliexpressなどで購入可能。

表示用LCDは秋月のAQM0802を使用した。これは安価でコンパクトなので、実験によく使用する。
ただ、電源電圧が変わると表示のコントラストが変わってしまう。そのため、今回はPICマイコンのA/Dコンバータ(ADC)で電池電圧をモニタし、電圧が3.5V以下に下がるとLCDコントラストを濃くするように調整している。
ADCには電池電圧を100kΩx2で分圧して入力しているが、ここで電流を消費しないように、測定時のみMOSFET AO3406で抵抗分圧をONしている。
主要部品の動作電圧範囲は、
PIC1705  2.3~5.5V
BME280   1.71~3.6V(LDOなしのBME280単体)
AQM0802  2.7~5.5V
となっており、BME280モジュールは3.3VLDO搭載なので、リチウムポリマ電池(最大4.2V)をそのまま使用した。
BME280とAQM0802はI2Cインタフェイスなので、SCLとSDAにプルアップ抵抗が必要だが、今回はBME280モジュールとAQM0802内部にそれぞれ10kΩが搭載されており、合成でそれぞれ5kΩのプルアップ抵抗になっている。

【ソフトウェア】
今回のソースファイルをプロジェクトホルダごとアーカイブしてこの記事の末尾にリンクしておく。
PICマイコンは、測定、表示が済むとSLEEPに入り、WDT(ウォッチドッグタイマ)によってSLEEPから目覚めて測定表示、再びSLEEP、を繰り返す。測定時は目印として一瞬LEDを点灯する。
WDTの最大時間は、MCCでポストスケーラーを最大値の8388608に設定したとき270.6秒となる。つまり、4分30秒に一度測定、表示更新をする。
WDTでSLEEPから目覚めたときは、SLEEPの直後の命令から復帰する。リセットではないので注意が必要だ。
LCDのコントラストが電池電圧によって変わってしまい、電圧が3Vを切るとほとんど見えなくなってしまうため、ADCで電池電圧をモニタし、3.5Vを堺にコントラスト設定を変えている。これはmain.cで電圧低下フラグBattLowを立ててi2c_lcd.cの113行目からの記述で行っている。

【動作】
SLEEP状態での消費電流はおよそ0.2mAで、測定時には瞬間的に1mA程度(LED点灯含む)となる。平均電流はおおむね0.2~0.25mA程度。
400mAhのリチウムポリマ電池での実動作では72日程度の動作を確認した。
SLEEP状態での消費電流は、BME280モジュールに搭載されたLDOのIqが大きいのではないかと思っていたが、実際に確認してみるとIqでの消費はきわめて小さく、LCD(AQM0802)の消費電流が支配的だった。

【ソース】

ダウンロード - 20220214bmeaqm_1705adc_000ok.x.zip


そういうわけでMCCはとても便利なので、どんどん使いましょう(^-^)
MCCの使い方は、トランジスタ技術2021年9月号別冊付録「PIC開発マニュアル2021」を参考にしました。

| | コメント (0)

2022年1月31日 (月)

SSDAC用FPGA pofファイル公開のお知らせ

コロナ禍以降、半導体を始めとする電子部品の世界的な品薄が続いており、SSDACキットについてもFPGAの調達が困難になっています。
つきましては今回、ご自分で部品を調達できる人向けに、各SSDACの生基板の頒布およびFPGAオブジェクトファイル(pof)の公開を開始しました。
ダウンロード規約に同意の上、ダウンロードしてお使いいただけます。

ダウンロードページはこちら

| | コメント (0)

2021年10月15日 (金)

無帰還電流駆動ヘッドホンアンプ改良 (基板頒布あり)

Hpa0


【訂正情報】
・2021/10/21
Q9,Q11,Q21,Q23(2SA1020)のHFEが間違っていました。マニュアルおよび回路図の記載を280→240に訂正しました。


以前開発した、無帰還電流駆動ヘッドホンアンプを改良して基板を起こしたので報告する。

無帰還電流駆動ヘッドホンアンプを開発試作したのは2016年のことで、製作記事をこのブログにもアップした
その後、手作りアンプの会2016年冬のお寺大会に出品したところ、ありがたいことに最優秀賞をいただいた
手作りアンプの会での評価は、実際の試聴による音質に重きが置かれていて、評価されたことはとてもうれしかった。
作ってみたいという人が何人かいたため、基板を起こそうとも思ったのだが、いくつか問題点があって、どうしようか考えているうちに5年経ってしまった(^-^;

まず、この無帰還電流駆動ヘッドホンアンプとはどういうものなのか、簡単に説明したい。
通常、スピーカーやヘッドホンは電圧で駆動する。つまり入力信号に比例した出力電圧で負荷を駆動する。この場合、負荷の状態はまったく無関係で、たとえスピーカーがつながっていなくても電圧で音楽信号が出力される。逆にスピーカー端がGNDとショートされていたら、出力電流が無限に流れるので、アンプが壊れるかヒューズが飛ぶ。
対して、電流駆動の場合は、負荷に対して入力信号に比例した電流で負荷を駆動する。たとえ出力がショートされても問題なく出力電流が流れるため、スピーカー出力をショートするタイプの保護回路が使える。出力がオープンの場合は、負荷インピーダンスが無限大になるため、そこに電流を流すように動作して、出力はクリップしてしまう。
通常、スピーカーやヘッドホンは電圧駆動をする前提で、電圧駆動した時にフラットな特性が出るように開発、設計されている。
これを電流駆動するとどうなるかというと、スピーカーやヘッドホンのインピーダンス特性に沿った音圧特性で駆動される。
通常、スピーカーやイヤホンのインピーダンス特性はどのようになっているかというと、最低共振周波数f0で最大になり、その後一旦下がるが、高域では徐々に上昇する。
こういった特性を持ったスピーカーやイヤホンでも、通常の電圧駆動をすることで、フラットな特性を得るわけだが、電流駆動するとインピーダンス特性に沿った音圧特性になるのでインピーダンスが上昇するf0や高域が増強される。
見方を変えれば、インピーダンスが上昇するポイントは、そのスピーカーやヘッドホンが鳴らすのを得意とする帯域なので、その得意な帯域を伸び伸びと鳴らさせてあげる!というアンプだということもできる(こじつけくさくないか?)
そういうわけで、ほとんどのスピーカーやヘッドホンは電流駆動すると、f0付近と高域が持ち上がって、ドンシャリ傾向の音になる。
ただし、もしインピーダンス特性がフラットなスピーカーやヘッドホンなら、電圧駆動、電流駆動で差が出にくいとも考えられる。(もっとも出力インピーダンスがまったく真逆なので、ダンピング特性の差は出るだろうと思われるが)

そもそも無帰還電流駆動ヘッドホンアンプは、その前身となる無帰還電流駆動アンプをヘッドホン用にリメイクしたものだ。
無帰還電流駆動アンプはもともと、オーラトーン5Cを慣らすための専用アンプとして開発したものだ。

さて、上述のように、電流駆動アンプの特徴として出力をショートするタイプの保護回路が組めるので、ミュート&保護回路のリレー接点による音質劣化に悩まされないで済む。ただ、DCが出力されて保護回路が働いたということは、アンプに何か異常がある可能性があるので、その状態で出力をGNDに短絡すれば事故が起きる可能性がある。そのため、無帰還電流駆動アンプでは、保護回路動作時は出力をショートするとともに、SSR(ソリッドステートリレー)を使ってAC100V電源を遮断するという構成にした。

無帰還電流駆動ヘッドホンアンプの場合は、バッテリー駆動ということもあって、そこまでの検討はしていなかった。ショート方式の保護回路には欠点があって、出力にDCを検出したときに出力端をショートすると、検出されていたDCが0になってしまうので、保護回路が解除される。するとまたDCが発生し……ということ繰り返してしまう。つまりひとたび保護回路が働いたらラッチがかかって、リセットしない限り再起動できないような仕掛けが必要になる。そういう意味では上で説明した無帰還電流駆動アンプのACを落としてしまうやり方は合理的だ。
ヘッドホンアンプの場合、バッテリー駆動だし、ヒューズかポリスイッチでも入れとけばいいかな……でもなあ、電源のインピーダンスが上がるのできもちわるいよなあ……やるとしたら±両方の電源を同時に落とす仕掛けも必要だし……うーんうーん……とかやっているうちに5年の歳月が(^-^;

今回はちょっとがんばって±のバッテリー電源を両方遮断する回路を設計して搭載した。
これでいちばん大きな問題点がひとつ解決した(^-^)
ただ、少しスイッチの構成が特殊で、電源ONのタクトスイッチSW1と電源OFFのタクトスイッチSW2が別になっていて、ON時はSW1を長押し、OFF時はSW2を押す、という構成になった。ロジック回路かマイコンを使えばスイッチひとつでもできると思うが、どうもアナログアンプにデジタル回路を積む気になれなかったので、今回のような構成になった。

あとは細々した問題点として、前回の設計では終段に2SA1668/2SC4382を使っていたが、これでは大きすぎて小型化が難しい。今回はこれらを2SA1020/2SC2655に変更することで小型化した。
次に、前回はニッカド電池を8本つかって±4.8Vの構成にしたが、これでは大きくなりすぎる上に電池持ちもよくないので、これを±3.8Vのリチウムイオン電池にした。
動作電圧を下げたことで、保護回路も定数変更した。保護回路は前回同様、±150mV以上のDCを検出すると働く。

最終的な回路を図1,図2に示す。図1がアンプ回路で、図2が電源と保護回路だ。
見やすいきちんとした図面は、この記事の最後に頒布用のマニュアルをリンクするのでそちらを参照してほしい。

Hpac_sch
図1.無帰還電流駆動ヘッドホンアンプ回路(片チャンネル)


Protectsch
図2.電源回路および保護回路


図2の左上にあるJ3,J4がそれぞれマイナス側とプラス側のバッテリー入力で、そのすぐ右側がMOSFETを使った電源ON/OFF回路だ。マイナス側のON/OFFはプラス側に追従するようになっている。
同じ図2の中央より下の回路はDC検出保護回路で、従来トランジスタのVBEに反応して0.6V以上でプロテクトがかかる典型的な回路に対して、ショットキーダイオードを使って基準電圧を底上げすることで0.15Vでプロテクトがかかるようにしている。

このあたりの開発経緯も、前回の無帰還電流ヘッドホンアンプの記事に書かれているので参照してほしい。

今回設計した基板による諸特性を以下に紹介する。

まずはひずみ率雑音特性。左右チャンネルにつき、それぞれ負荷が33Ω、100Ωの場合のTHD+N(%)を図3~図6に示す。

Thdn33_l Thdn33_r
図3.Lch 33Ω負荷 THD+N               図4.Rch 33Ω負荷 THD+N



Thdn100_l Thdn100_r
図5.Lch 100Ω負荷 THD+N              図6.Rch 100Ω負荷 THD+N


ひずみ率雑音特性THD+Nは、ボトムでおよそ0.03%、実用域で0.1%以下で、これは前回とほぼ同じだ。

次に周波数特性。
周波数対ゲインのグラフを図7、図8に示す。L、R同等だったので、Lchのみ。

Ftoku33l Ftoku100l
 図7.周波数ゲイン特性 33Ω負荷(Lch)           図8.周波数ゲイン特性 100Ω負荷(Lch)

100Ω負荷では-3dBポイントが1MHz、33Ω負荷では1MHz超となり、前回よりも改善した。


次は方形波出力波形。
これもL、Rで差がなかったのでLchのみ、33Ω、100Ω負荷に対してそれぞれ10kHz、100kHの波形を図9~図12に示す。

10khz33ohml 100khz33ohml
図9.方形波出力33Ω10kHz(Lch)          図10.方形波出力33Ω100kHz(Lch)

10khz100ohml 100khz100ohml
図11.方形波出力100Ω10kHz(Lch)          図12.方形波出力100Ω100kHz(Lch)

以上のように、オーバーシュートやリンギングは一切ないので、位相補償は行っていない。

次は出力インピーダンス。
今回は1kΩと2kΩ負荷を切り替えてのON/OFF法で測定した。これもL、Rで大差ないので、Lchのみ表1に示す。

表1.出力インピーダンス(Lch)
Impedancel_20211017223901

前回の測定結果は11kΩだったので悪化しているが、測定方法の違いも影響があるかもしれない。
ヘッドホンのインピーダンスが16Ω~100Ω程度だと考えれば十分な値だろう。

最後に主要諸元を表2にまとめておく。

表2.主要諸元
Syogen

音質については電流駆動故に、使用するヘッドホン、イヤホンの個性が非常によく出る。
普段使いのパイオニアHDJ-1500とは相性がよく、低域、高域が若干持ち上がり気味で
メリハリの強い、なおかつクリアな音質となった。
ヘッドホン、イヤホンに対する音質の違いについても前回の記事で書いているので参照してほしい。

2021/10/18追記
3Dプリンタで専用ケースを製作した。単三型(14500)リチウムイオン電池がそのまま入れられるように、電池ホルダを一体形成した。
写真1にケース入りのヘッドホンアンプ(下)とスーパーサンプリングSDプレイヤーSSSDP4490(上)を示す。
写真2はフタを外したところ。

Hpacincase
写真1.今回製作した無帰還電流駆動ヘッドホンアンプ(下)とスーパーサンプリングSDプレイヤー(上)


Hpacincase2
写真2.フタを外したところ。左側の電池は単三型リチウムイオン電池2本。


ケースのstlデータ
ダウンロード - 20211017hpac_top000.zip



【基板頒布のお知らせ】
この記事の無帰還電流駆動ヘッドホンアンプ生基板をご希望の方に頒布します。
生基板1枚と、製作説明書と回路図、部品表等の資料、LTSPICEのシミュレーションファイルをセットで
1880円(税、送料込み)で頒布します。(自力で部品収集、部品選別、調整できる方が対象です。)

ご希望の方は表題に「無帰還電流ヘッドホンアンプ基板頒布」、
本文にお名前、送付先郵便番号、ご住所、電話番号をお書きのうえ、

dj_higo_officialアットhigon.sakura.ne.jp
(アットを@に替えてお送りください)

までメールをお送りください。

代金の振込先のご案内メールをお送りします。入金が確認でき次第発送します。

製作マニュアル、回路図、部品表、その他

| | コメント (0)

2021年10月 9日 (土)

LTspiceでフォノイコライザシミュレーション

以前、フォノイコライザをIIRフィルタで構成してFPGAに実装する記事を書いたが、今回はLTspiceでフォノイコライザのシミュレーションを行ったので、紹介する。

LTspiceでのシミュレーションでは回路に対してトランジェント解析で波形の応答を見ることもできるし、AC解析で周波数特性を見ることもできるが、ほかに非常におもしろい機能があって、WAVファイル(音声データ)を入力して、シミュレーション結果を同じくWAVファイルとして出力することができる。
今回はレコードからフォノイコライザなしでダイレクトリッピングしたWAVファイルを、LTspiceでのフォノイコライザ回路シミュレーションを通してWAVファイルで出力する検証を行った。


1.実際に使用しているフォノイコライザ回路
図1に実際に部屋で使用しているフォノイコライザの回路を示す。使用カートリッジはDL-103。

Usingeqsch
図1.実際に使用しているフォノイコライザ回路
MJの安井章氏の回路を参考にして設計した。

図1の回路ではカートリッジ入力を最初のオペアンプで120倍したあとCRイコライザを通し、次段で100倍増幅して、カップリングコンデンサを通して出力している。電源はエネループを8個使って±4.8Vとしている。


2.シミュレーション用回路
シミュレーションに使う回路は基本的に実使用中の図1の回路と同じだが、オペアンプを電圧制御電圧源に置き換えている。図2にオペアンプの非反転増幅回路と、電圧制御電圧源を使った帰還型増幅回路の置き換えを示す。

Opampvsvdv
図2.オペアンプ非反転増幅回路の、電圧制御電圧源での置き換え
電圧制御電圧源のゲインを1000万倍(140dB)として、負帰還増幅器を構成している。

図2ではオペアンプを使った非反転の10倍アンプを、電圧制御電圧源を使った10倍アンプに置き換えている。
電圧制御電圧源のゲインは1000万倍として、1/10の帰還をかけることでオペアンプ回路と同等の機能を持たせている。

ただ、電圧制御電圧源はゲインが自由に設定できるので、単に図3のようにしてもよい。

Vdv20db
図3.ゲイン10倍の電圧制御電圧源

今回評価するフォノイコライザ回路は、図3のように電圧制御電圧源に直接必要なゲインをもたせるやり方で、オペアンプを置き換えることにする。
今回評価したシミュレーション回路を図4に示す。

Simeq_wav
図4.今回使用したフォノイコライザシミュレーション回路
レコードのダイレクトリッピングゲインを160倍としたため、フォノイコライザのゲインは入力側32倍、出力側2倍のトータル64倍とした。またオフセットは無視できるのでカップリングコンデンサは省略した。

この回路の周波数特性を図5に示す。

Eq_gainphase
図5.今回の回路のAC解析

シミュレーション用のファイルは以下。
ダウンロード

3.WAVファイルを使ったシミュレーション手順
①LTspiceに回路を入力する
・回路の入力に上記wavファイルを割り付けるが、回路入力では単に電圧源(voltage source)を使う。
②実際に使用するwavファイルを用意する。
・今回は44.1kHz16bitステレオのwavファイルを使う。長いとシミュレーションに時間がかかるので、短いものを使う。(40秒の曲を処理するのに30分以上かかる)
・用意したwavファイルをLTspiceの回路(.ascファイル)と同じホルダに入れておく。ファイル名は任意だが、スペースは使えない。
・今回実際に使用したwavファイル名は、"night_in_tunisia_Direct40sec.wav"
③回路に対してwavファイルの入出力設定を記述する
・入力の電圧源(図4ではv4)を右クリックして"advanced"をクリックして詳細設定に入る。
・PWL FILEを選び、BrowseからファイルタイプをAll Files(*.*)として、上で用意したwavファイルを設定する。
●回路に戻ると電圧源のソースが”PWL file=night_in_tunisia_Direct40sec.wav”と表示されているので、これを右クリックして、手入力で編集し、
"wavefile=night_in_tunisia_Direct40sec.wav channel=0"
に変更する。
・同じようにv3に対して"wavefile=night_in_tunisia_Direct40sec.wav channel=1"を設定する。
・.opボタンを押して、".wave soundout00.wav 16 44.1k V(voutL) V(voutR)"と入力して、回路上に貼り付ける。soundout00.wavは出力されるファイル名(任意)。
・SimulateのEdit Simulation CmdのTransientタブで、
 Stop time = 40(今回のwavの長さ)
   Time to start saving data = 0
   Maximum Time step = 0.708u(1411kbpsの逆数)
としてOK。".tran 0 40 0 0.708u"が回路図上に配置される。

以上ができたら、SimulateのRun(走るボタン)を実行すると、しばらく演算した後、同じホルダに出力ファイル"soundout00.wav"が生成される。
※とにかく実行には時間がかかるので、最初は短いファイル(数秒レベル)で確認してみるとよい。

4.シミュレーション結果
上述の通り、DL-103からゲイン160倍でダイレクトリッピングしたファイルと、処理後の出力ファイルは次の通り。

・ダイレクトリッピングファイル
night_in_tunisia_Direct40sec.wav

・フォノイコライザシミュレーション出力ファイル
soundout00.wav

ちなみにこの音源は、
Hot Salsa meets Swedish Jazz
というLPに収録されたお気に入りの一曲です。

順序が前後してしまったが、ダイレクトリッピングに使用した回路を図6に示す。


Directripsch
図6.ダイレクトリッピングに使用した回路


5.まとめ
以上のように、LTspiceを使って、wavファイルの信号処理を行うことができる。
・今回はオペアンプの代わりに電圧制御電圧源を使ったが、もちろんオペアンプを使ったシミュレーションもできる。ただし、シミュレーションの時間が猛烈にかかる。(以前オペアンプでシミュレーションしたら、3分の曲を処理するのに一晩かかった)
・シミュレーションは仮想現実であり、今回の実験は現世のwavファイルを仮想現実世界で処理して、それをまた現世に持って帰ってくる、というような感覚がして非常におもしろいと思う。
・レコードのダイレクトリッピングを今回の方法で処理するやり方は、膨大な時間がかかることから実用的ではないが、ごく短いサンプル音源を使って、エフェクター回路の検証を行うといったような使い方は想定できる。

実際に音が出ると感動するので、ぜひやってみてください(^-^)

| | コメント (0)

2021年8月11日 (水)

シングルコアESP32-SOLO-1とクロックダウンと低消費電力化について 11/6追記

前回予告したとおり、シングルコアのESP32-SOLO-1と従来のESP32(デュアルコア)の比較において、
低消費電力化の検証を行ったので、その報告をする。

【20211106追記】
この記事をあげた当初、電池持ちに関し「実稼働で35日」と記載したが、これは初期バージョンの数値で、現行バージョンでは再現しないため、比較対象とはせずに参考値とする。現行品ではESP32ノーマル品(デュアルコア)で18日程度。
初期バージョンと現行品の主な違いは次のとおり。
・ソフトに初期設定モードと、タイムサーバーによるsleep時間補正機能を追加。
・初期設定モード追加に伴い、SW1,JP1,LED,R2,R3,R4を追加。
これらの変更は消費電流にはほとんど影響を与えないだろうと考えていたが、実際には稼働日数35日→18日に短縮した。
●ESP32(ノーマル品)→ESP32-SOLOに変更した場合、実稼働18日→25日に改善した。(1.39倍)


1.測定に使ったWIFI気象計の概要
検証に使った回路は図1のとおりで、これは一定時間(実運用は900秒)毎に温度、湿度、気圧を測定し、測定結果をWIFIのUDPと、WIFI越しのFTPサーバーに送信する気象計だ。1回の測定、送信に要する時間は10秒前後で、測定、送信が終わったら次のタイミングまでDeepSleepするようになっている。ソフト開発はArduino。

Weathercheckersch
図1.今回の検証に使用したWIFI気象計回路図


今回の測定では図1に示すとおり、外部の電源から3.3VPを与え、直列抵抗Rsの両端電圧をオシロで観測し消費電流を算出した。
実際には、電源として3.7V400mAhのリチウムポリマ電池にTPS63000という昇降圧スイッチングレギュレータICを用いた3.3V電源回路を付加して運用しており、その際のレギュレータ消費電流IQはおよそ55μA。
回路図中、J1は書き込みおよびモニタ用のシリアル入出力で通常時は未使用、J2は書き込み時に使用するタクトスイッチでこれも通常時は未使用、LEDのD1とSW1およびJP1は設定時に使用するが運転中はオープン(未使用)、U1のBME280は温湿度気圧センサで、これはI2Cで接続していて、I2Cのプルアップ抵抗は各10kΩがモジュール側に実装されている。

このWIFI気象計の動作フローは次のとおり。

①Sleepから目覚める
②初期設定
③フラッシュメモリから動作設定を読込
④WIFI接続 → 接続ができるまで1秒ごとに10秒までリトライ、接続不可なら設定時間のsleepに入る
⑤温湿度気圧をBME280から取得、電池電圧をADCから取得
⑥NTPから現在の年月日時間を取得
⑦上記取得データをUDP送信
⑧上記取得データをファイル化してFTPサーバーに送信
⑨設定時間(=900秒)のsleepに入る

DJ HIGO宅のベランダに設置した気象計の送信データが見たい方はこちら
ただし、現在は設定時間1800秒で運用している。


2.測定条件
次の4通りについて消費電流の測定を行った。
①従来のESP32でCPUクロック240MHz動作
②従来のESP32でCPUクロック80MHz動作
③ESP32-SOLO-1でCPUクロック240MHz動作
④ESP32-SOLO-1でCPUクロック80MHz動作

3.測定結果
測定結果を表1に示す。測定内容の詳細については後述する。
動作時の測定電流の単位はミリアンペア・秒とした。これは電池持ちと平均電流の計算をしやすくするため。
たとえば、900mAsecであれば、これが900秒ごとに発生した場合は平均で900mAsec/900sec=1,つまり平均電流は1mAである。

表1.測定結果(20210818DeepSleep電流差し替え
Deepsleep

①DeepSleep電流
DeepSleep時の回路電流は、従来のESP32、ESP32-SOLO-1はほぼ同じだった。

②従来のESP32の動作電流
・クロック240MHzと80MHzでは差が10%以下であった。ただし、後述するが80MHzでは接続リトライのためか3.7秒ほど時間が余計にかかっているため、その影響で差が少ない可能性あり。

③ESP32-SOLO-1の動作電流
・クロック80MHzでは240MHzの75%程度に消費電流が減少している。
・クロック80MHzでの消費電流は従来のESP32(240MHz)にくらべ32%減となっており、明らかに効果が認められる。


4.測定データ
実際の測定データを以下に示す。

①DeepSleep電流波形
図2に従来のESP32、図3にESP32-SOLO-1のDeepSleep電流波形を示す。

Esp32sleep
図2.従来のESP32のDeepSleep電流波形
検出抵抗10kΩで検出。55mV/10kΩ=5.5μA


Esp32solosleep
図3.ESP32-SOLO-1DeepSleep電流波形
50mV/10kΩ=5μA

②動作電流波形
従来のESP32の240MHz、80MHzそれぞれの動作電流波形を図4、図5に、
ESP32-SOLO-1の240MHz、80MHzそれぞれの動作電流波形を図6、図7に示す。

20210811esp32_240mhz
図4.従来のESP32の240MHz動作電流波形
長いヒゲ状のピーク電流は無視した。櫛状の73mAの部分はデュティ1/3程度と仮定している。


20210811esp32_80mhz
図5.従来のESP32の80MHz動作電流波形
動作時間が240MHzの場合とくらべて3.7秒多い。WIFI接続のリトライなどが原因か。


20210811esp32solo240mhz
図6.ESP32-SOLO-1の240MHz動作電流波形


20210811esp32solo80mhz
図7.ESP32-SOLO-1の80MHz動作電流波形


5.考察
①リチウムポリマ電池による実動作時間
以上の測定結果による条件で、400mAhのリチウムポリマ電池で900秒ごとに動作させた場合の理論稼働時間は、

a. 従来のESP32でクロック240MHzの場合
・動作電流979mAsec、レギュレータIQ=55μA、Sleep電流5.5μA、測定間隔900秒とすると、平均電流Iav(mA)は
Iav=979/900 + 0.055  + 0.0055 = 1.148 (mA)
・400mAhリチウムポリマ電池での稼働時間Dt(h)は
Dt=400 / 1.148 = 348(h)=14.5(日)
と計算できる。
ところが実際にこの条件で動作させたところ、およそ35日の稼働となった。
原因としては、今回の測定精度、とくに動作波形の読み取り精度が甘いこと、また、400mAhの電池に対して放電終止電圧を何ボルトに設定するかによっても変わる。実際の稼働ではレギュレータの働きにより2.1V程度まで動作していた。(20211106削除)
実機による稼働時間は、
試験機①    18日
試験機②    18日
だった。

b.ESP32-SOLO-1でクロック80MHzの場合
上記測定結果によれば、ESP32-SOLO-1で80MHzで駆動した場合は665mAsecであり、消費電流は従来のESP32(240MHz)よりおよそ3割減が見込まれる。上述した実稼働日数35日に対して3割増とすれば45日程度の稼働日数となるが、これは現在実動検証中だ。(20211106削除)
上記試験機②をESP32-SOLO-1に差し替えて実測した稼働時間は、
試験機②(ESP32-SOLO-1に差し替え) 25日(3.9割増し)

②ESP32の動作クロック変更方法
ESP32の動作クロック変更は、Arduinoのsetup()で
int ret = setCpuFrequencyMhz(240);
とすればよい。()内にはクロック周波数(240,160,80,40,20,10)が使用できるが、今回は40MHz以下では動作しなかったため、下限を80MHzとした。初期値は240MHz。

【結論】
ESP32ノーマル品(デュアルコア)とESP32-SOLO-1(シングルコア)では、ディープスリープ電流には差がなかったが、実稼働時の消費電流には差があり、今回評価したWIFI気象計では、ESP32(デュアルコア、クロック240MMz)からESP32SOLO(シングルコア、クロック80MHz)に変更することで電池持ちが計算上3割、実測では3.9割改善した。
よって、クロック速度やマルチコアよりも消費電流が優先される用途には、ESP32-SOLOを80MHzで使用すると効果が期待できる。

| | コメント (0)

より以前の記事一覧