macsbug

Archive for 9月 2019

M5Stack speaker noise reduction

leave a comment »

M5Stack の スピーカーノイズを 低減する方法。       2019.09.27

M5Stack の スピーカー は ノイズがでます。

Noiseless PROTO Module を 製作しました。


課題:
_ M5Stack の 課題に スピーカーの「ノイズ」と「歪み」があります。
_ 今回は ノイズの原因と対策が主題ですが、歪みの件も含めて記載しています。


方法:
_ 1. PROTO基板の製作時に GPIO25 Pin ( DAC ) を外します。
_ 2. もしくは PROTO基板の GPIO25ピンをカットします。この場合
_   ピンのカット面と M-BUS 側ピンの距離が近くならない事。


ノイズレス PROTO基板 の 接続方法と効果:
_ GPIO25ピン無しのPROTO基板 だけか 他のPROTO基板へ接続すると
_ スピーカーノイズは 無くなります。最も効果のある方法です。
_ ただし、M5Stackの基板で発生するノイズはそのままです。
_ M5Stackの基板上で発生するノイズは 機種やバージョンで異なります。
_ ディスプレーに表示する画像によっても異なります。


原因:以下、1と2に分類して述べます。
_ 1. PROTO Module と BOTTOM Module。
_ 2. M5Stack の設計 と レイアウト。


1. PROTO Module と BOTTOM Module。
_ 原因:MOSI (GPIO23) の 輻射ノイズ
_ 理由:接続したPROTO基板の GPIO23,25がアンテナになり GPIO25に乗る。

_ MOSI信号はディスプレー信号に使用しています。
_ 画像によっては MOSI の周波数成分が多くなりノイズが増えます。
_  M5Stack Electronic Animated Eyes でノイズ増加が解ります。
_ スケッチによっては 周波数が 80MHz に高くなる場合があります。
_ PROTO基板上に GPIO25のパターンがあるとノイズを拾います。
_  基板の長さ 50mm等の長い場合は かなり大きなノイズになります。
_  60mmのパターンの基板を作成しノイズが増加するのを確認しました。
_ M-BUS の GPIO25 ( DAC ) は ピン有るだけでも 隣のGPIO23( MOSI )
_  から輻射ノイズを拾います 。
_ M-BUSの設計:GPIO25は D級アンプの入力に使用している為、
_  GPIO23の隣 もしくは M-BUSにピンを立てるべきではない。

_ ノイズがでる要素:( してはいけない設計 )。
_  GPIO23 と GPIO25 の配置を 2.54mm 以内。
_  GPIO25 の長い配線。
_  M-BUSに GPIO25ピンを立てる。
_  BOTTOM Module を接続する。
_  GPIO25 のパターンが長い PROTO基板を接続する。
_  M5Stack Electronic Animated Eyes の様な複雑な画像を表示する。

_ 確認:テスターで誘導電圧を確認できます。
_  23と25間にワイヤーを近接すると誘導される事が解ります。
_  周波数成分の大きいMOSI信号時も同様です。

_ 原則:M-BUS MOSI と M-BUS DAC は 隣に配置してはいけない。
_  レイアウトミスと判断しています。


2. M5Stack の設計 と レイアウト。図は M5Stack BASIC の回路図。

_ 

_ 基本:M5Stack BASIC
_  基板のバージョンによってノイズの大きさが異なる。
_   BASIC:2017.6。BASIC:2018.3 NOIS 大。GRAY:2017.6。
_  液晶バックライトのPWM制御10KHz の影響(可視聴)がノイズになる。
_   10KHzの周波数を可視聴外に変更する案:
_   参考に記載した lovyan03氏の #142#147。lovyan03氏に感謝致します。

_  PGND:回路図は ANALOG GND だが 現物の配線はなし。
_   調査:PCB は基板 BAT Connector 横の日付(DATE CODE)です。
_   BASIC(PCB=2017.6 ) ;NS4150B_4 – C44 – open。
_   BASIC(PCB=2018.3 ) ;NS4150B_4 – C44 – open:*openをGNDでノイズ大。
_   GRAY (PCB=2017.6 ) ;NS4150B_4 – C44 – open。
_   GRAY (PCB=2017.11 );NS4150B_4 – C44 – GND。
_   FIRE (PCB=2018.2A) ;NS4150B_4 – none – GND。BASICより音質は良い。

_   図面通りの GND(DC) にすると 基板のバージョンによっては多少改善
_   されるが ノイズは解決しない。
_   理由1:
_    IC:回路図は NS4148 だが 現物は NS4150 ( NS4150B )。
_    NS4150 Data Sheet V1.0 の Typical Application Circuit には
_    入力( INP, INN ) に 30KΩが接続されているが M5Stack は無し。
_    内部抵抗 30KΩ内蔵のNS4148 を取り付けてみましたが 動作不可。
_    mはげ氏は NS4150Bの入力に 30KΩを接続したが 結果得られず。

_    歪み:アンプの入力範囲が狭い設計になっている。
_    mはげ氏の情報:この件でハードとソフトで多大な調査と努力を
_     されています。mはげ氏に感謝致します。
_    @Tw_Mhage:M5Stackのスピーカーの音質が悪い原因と対策
_    以下は 上記の記事、mはげ氏の記事と画像を記載させて頂きます。
_    「M5StackのD級アンプNS4150の出力測定結果。テスト信号は
_     800Hz 正弦波。NS4150推奨回路の入力抵抗はなくても入出力
_     はほぼ比例し ゲインは約2.94。出力は±1.6Vでクリップされる。
_     音が割れないようにするためにはDAC出力の振幅を0.54V以内
_     に抑えればいい。」
_    結論:プログラミング:
_     NS4150B をプログラムで使用する場合、入力は 最大 0.54Vac
_     に押さえる必要があります。これを超える入力をすると出力が
_     歪みます。つまり M5StackのDAC出力の振幅は0.54V以内
_     ある事。
_     
_     

_   理由2:GND電位がゼロにならず 不安定になり ノイズが発生する。
_    レイアウト設計の不足。
_    NS4150 の入出力から M-BUS への配線は ノイズ対策が不足。
_    ただし、回路としてはこの程度かと判断しています。

_    他社の製品:
_    理由は 他の ODROID-GO ( ESP32 + PAM8304Aアンプ) の回路では
_     入力抵抗を付け 特別なノイズ対策無くとも ノイズ無く動作している。

_      以下の図は ODROID-GO の回路図。
_    

_   TTGO製品(ESP32)の場合:TTGO製品は多数のバージョンがある。
_    TTGO T4_v1.3 は NS4150 4pin PGND は OPEN。パラメーターは異なる。
_    
_    TTGO T10_v1.8 は PCM5102Aを採用している。
_    
_    結果、TTGO の AMPは変更され NS4150 は問題である事を示しています。

_   M5Stack Fire は C44 を除去しノイズが低下している。
_    対策:M5Stack Team はノイズ問題を認識し C44 Remove を考案した
_       事を示しています。
_    理由:部品からノイズを拾う事を防止している。

_   M5StickC Speaker AMP:
_    D CLASS AMP は PAM8303 を使用しています。
_    これは NS4150 でなく PAM8303 が正解である事を示しています。

_  電源:USB電源使用せず EA3036(LDO)の入力に バッテリー入力
_     (DC電池)のみでもスピーカーノイズは出る。

_  NS4150B の電源停止方法:
_   EA3036 LDO にある T1 端子をショートします。
_   ショートにより EA3036-19 ( sw3 ) がオフになり AMP PWR が無くなります。

_ ソフトによるノイズの低減:
_  以下を記載し DAC をオフにし スピーカーを無音にします。

dac_output_disable(DAC_CHANNEL_1);  // Sound OFF

_   dacWrite(25, 0); で AMP を OFF にし 効果がでる場合もあります。

_  結論:本体基板のハードの改善は無理がある。
_     パターン幅が小さく 素人では パターンが剥がれる。
_     ハードの改修も可能ですが 改造は多くの人には無理です。

 


❌ ノイズ対策の無い製品:
スイッチサイエンス販売 委託品:幾つかの製品を見かけます。
_ 1. 使用しないにもかかわらず、GPIO25 のパターンを配線している。
_ 2. M-BUS GPIO23, 25 で 1.27mm ハーフピッッチでスルーホール
_  を作り配線している。距離が短くなり さらにノイズがでます。
_  
_ 3. M-BUS の延長と称してフラットケーブルで延長するボード。
_  これは確実にノイズが出ます。
_ どうも 設計ミスの製品が多い事と 不完全な商品を販売しています。

⭕ ノイズ対策をしている基板:
_ この情報を得てか M5Stack で開発している ある基板は
_ GPIO25 ピンは配線していません。

◯ ノイズ対策の回答:対症療法
_ M5Stack Community での ノイズの質問は 「BOTTOM を外して見てください」
_ と言う対症療法の回答があります。 これは BOTTOMの配線で GPIO25が
_ 延長され ノイズが発生する事を示しています。


参考:
NS4148:NS4148 Data Sheet V1.1
NS4150:NS4150 Data Sheet V1.0
Odroid-GO:
_ 回路図:Hardware tunning for silent the sound volume of ODROID-GO
_ Odroid PAM8304A:Odroid-GO support #10
_ PAM8304 pdf
mはげ氏の M5Stack D級AMPの調査
@Tw_Mhage:M5Stackのスピーカーの音質が悪い原因と対策
M5Stack Community:So much noise!:dacWrite(25, 0); でも消えない。
M5Stack Community:Noise on speaker
_ オーディオラインが適切に設計およびシールドされていない。
_ ledcDetachPin(SPEAKER_PIN); pinMode(SPEAKER_PIN,INPUT);
ESPRESSIF:M5Stack to be Relaunched with ESP32
lovyan03:PWM control of the backlight emits unpleasant 10 kHz noise #142
_   バックライトのPWM制御は10KHzで聞こえる周波数。これを44.1KHzに
_   すると不快な10KHzノイズをオフにできる。
lovyan03:Modify: Suppress the mosquito noise that LCD backlight PWM emits. #147
BLOG:M5stack tetris with sound:無音にするメモ。
BLOG:Low cost PROTO Module of M5STACK:国内製品のコネクターを使用できます。
BLOG:Low cost PROTO module of M5STACK Part 2:国内製品のコネクターを使用。
_ 国内製品のコネクターを使用すると M-BUS との接触が良くなります。
_ 理由は オリジナルは M-BUS コネクター下 0.1mm, コネクター間の隙間 0.1mm
_  があり 接触が低下。国内製品のコネクターを使用すると 合計 0.2 mm
_  分の接触を得る事が出来 良くなります。


感想:
1. NS4150:NS4148 や NS4150 は既存のスマホに使用され 動作的に完成
_ されていますが M5Stack は ノイズがでます。
_ アンプの設計とレイアウトの 作り込みが少ないと判断します。

2. 実験による数値:
_ 実験も踏まえ電圧値も取得しましたが 対策がある為 数値は記載しません。

3. 設計:
_ レイアウトの重要性:Display 信号のMOSI (23) と SCK (18) が 逆の配置
_           ならば ノイズは発生しません。
_ M5Stack のバージョン:
_  ATMEGA328P, ESP8266, ESP32 の多数のバージョンがあります。
_  バージョンによって M-BUS の配置が異なっています。
_  例として ESP32版でも幾つかあります。
_  ESP32 M5Stack は 2017年3月28日に ESPRESSIF と契約。
_  この時の M5の内部レイアウトと M-BUS(M5-BUS) は現在とは異なる配置。
_  ESPRESSIF:M5Stack to be Relaunched with ESP32
_ 
_  この時の MOSI(9)とDAC 1(16) の配置は離れています。
_  つまり あるバージョンでは M-BUSの配置が異なる為に ノイズの発生は
_  無いが 何かの理由で 現在の配置になり 輻射波の問題が発生した。
_  と言う経過です。
_  M5Stack Store からの販売は 2017.10.23 (BASIC $35.00) からです。
_ 原因を踏まえ  M5Stack で基板を開発している人に 参考になればと
_ 思います。是非、素晴らしい基板を設計、製作する事を期待しています。

4. 投稿:かなり以前に下書きをしていましたが 投稿が遅れました。

5. 使用している基板は tomorrow56氏に 製作して頂きました。
_ 低価格で沢山あると 今回の様な 実験や使用が簡単にできます。
_ M5Stack の PROTO基板とは異なる「ある工夫」がしてあります。
_ 精度によりますが 個人の3D Printer でケースを製作する事が可能です。
_ この PROTO Module は 私と都内で合える場合はお渡し出来ると思います。
_ tomorrow56氏に販売をリクエストすると 答えてくれるかと思います。
_ tomorrow56氏は thousandiy で 幾つかの開発製品を販売しています。
_ 基板を見ると解るかと思いますが 氏の技術レベルは高く信頼性があります。

 

.


M5Stack ,  スピーカー , ノイズ , NS4148 , NS4150 , NS4150B , FIRE , DAC ,
MOSI , EA306 , T1 ,

Written by macsbug

9月 27, 2019 at 3:00 pm

カテゴリー: M5STACK