トドお父さん通信 -26ページ目

トドお父さん通信

北部九州在住 高BMI中高年のオタク趣味の活動記録

みなさんこんにちは、トドお父さんです。

近隣自治体のおもちゃ病院から、おもちゃ修理用のCPU基板の作成を要望されて、前回は

名張市つつじが丘のおもちゃ病院 大泉院長のプロジェクトをトレースしているところまででした。

 

今日はブレッドボードで試作をしたところと、PWMのノイズを外部アンプを付けて除去する試験を

した所をレポしたいと思います。

また丁寧に助言頂いた、糸魚川の 「おもちゃクリニックゆりかご」 のDr.わたなべ様にもお礼を申し上げます。

 

最初のブレッドボードはこんな感じです。

 

音声出力のトランジスタ2SC1815も省略して、220uFのケミコンを介して直接スピーカに接続しました。 こんな物でも、ちゃんと音がでるんですよ?

 

さて音はでたものの、どうもバックグランドノイズが気になる。

8kHz/(16kHz)でスイッチングしているので、PWMノイズでしょうか?

ローパスフィルタで除去したいですね。

 

いつも参考にしている、Technoblogyさんにローパスフィルタの例が記載されていました。

Four Sample Player のこの部分です。

 

 

時定数は τ=CxR= 0.1u x 1k = 100uS なので、10kHzに肩を持った-6dB/Octの

ローパスフィルタになりますね。

(追記:ローパスのカットオフ周波数は、f=1/2πRCなので、≒ 1.6KHzになります)

 

でも、これを試験するためには、AC結合されたアンプが必要になります。

できるだけ安価で部品点数が少なく、消費電流の小さいアンプがいいですね。

って探してたら、自分の過去ブログにこんな記事がありましたね。

 

スマホ用のICを使って超小型PCアンプを作りました Part3 (最終回)

これをパクりましょう。 回路図は下のようになります。20kは22k、0.47uFは1uFにして

手持ちの部品で組み立てます。

 

RfとCfでローパスフィルタも構成できるようです。ひとまず、Cfは1000pFを実装します。

 

手元にSOP8PとMSOP8Pの2種類のIS31AP4991Aがありました。

 

SOP8PのアンプICは貴重なので、MSOP8PでDIP8P変換基板に組んでみます。 変換基板にスペースが

あるので、チップ部品で一部の配線やパスコンの設置ができる、こっちの方が便利かもしれませんね。

 

これらを組んだ状態が、前回予告したこの写真になります。

 

ごちゃごちゃしましたね。 でも、音はいいですよ。1Wでますし。

中央下にある10kΩ半固定抵抗の下が0.1uFの青いセラコンです。

これを付けたり外したりしたら、音質の違いが確認できますかね。

 

やってみました、下の動画で確認できますよ。

 

 

バックグランドでジリジリ音がしているのが分かると思います。

0.1uFの青いセラコンを付けると明らかにノイズが減ってますね。

 

そのへんオシロでも、確認してみました。

上のCHが、ローパスフィルタ前、下のCHがローパスフィルタ後の信号です。

 

 

明らかに上のPWM信号をそのままアンプに入れるのは、振幅が3Vの8/16kHzが

入るのでまずそうです。 スピーカに直接入れるのなら、インダクタ成分に入力する

ことになるので、問題は少ないと思いますが、ノイズが出るのは気になりますよね。

この内容で、ファイナルアンサーにしたいと思います。半固定ボリュームで音量調整できますし

IS31AP4991A 1個 80円くらいで、安いんですよ。

 

追記:MOUSERで調べると、TIにも、同じようなICがありますね。

Class-AB オーディオ IC LM4818MX/NOPB も80円でいいんじゃないんでしょうか?

供給電圧もIS31AP4991Aの最低2.7Vに比べて2.0VまでOKの様です。在庫が切れたらこれに切り替えましょうかね?

 

IS31AP4991Aはさすがスマホ用のAB級アンプなので、スリープ入力がありSDB端子

が”L"の時は、MAXでも1uAになりますので、電池運用でもOKそうです。

スリープ信号は、大泉さんの獅子舞プロジェクトで音声再生中はモータを回転させる

ロジックを実装すればOKだと思います。

 

今回は、この辺で勘弁してやろう!(勘弁してねw)

それでは、次回以降は大泉さんのこの最新ファームにモータ回転とピエゾスイッチを

実装していく予定です。

 

ピエゾでスイッチ ? ネットでググるとピエゾスピーカ(ブザー)をマイクとして

使うようです。 この辺の調査から始めたいと思います。

待機中に電流を流すといけないので、省電力のマイクアンプも検討が必要になりそうです。

 

それでは、またね~

 

関連記事 

【Part2】Sound Player基板V2の音声データの作成方法と特性検討
【Part1】Sound Player基板V2の音声データの作成方法と特性検討

ATTINY202/402のFUSEビットをAVRDUDESSを使って書く方法
おもちゃ修理用のSOUND PLAYER基板の小型版 V2を設計しました!
[Part2ピエゾアンプ]ATTINY用Sounds Player基板を作って動作確認しました!
[Part1] ATTINY用Sounds Player基板を作って動作確認しました!
[Part2 テスト終了です] ATTINY402で音声再生のテストをしました
[Part1] ATTINY402で音声再生のテストをしました
ATTINY402に電子オルゴールのHVPプログラム書き込みテストをしました
[Part2 完成しました!]HVP対応のUPDI プログラマーを作成中です
[Part1] HVP対応のUPDI プログラマーを作成中です
[Part4 IRリモコン完成!] ATTINY202への書き込みとプログラムをやっています!
[Part3] ATTINY202への書き込みとプログラムをやっています!
[Part2] ATTINY202への書き込みとプログラムをやっています!
[Part1] ATTINY202への書き込みとプログラムをやっています!
ATTINY85 CPUを使って小型の赤外リモコンを作りました!

 

先週行った久留米おもちゃ病院で、クリスマスおもちゃの修理用の置き換えCPU基板を要望されました。

ピエゾセンサーがあり、手を叩く等で音声が入力されると起動してモータを回し、おもちゃが動くのと同時にクリスマスソングを再生する機能があるおもちゃらしいです。

 

ATITNY202/402を使うとすると、つつじが丘おもちゃ病院の大泉さんの踊る獅子舞プロジェクト

ずばり当てはまりそうです。

さきにATTINY402でオルゴール再生はテストして動いたので、先行テストとしてそのコードを使って

音声再生を試してみましょう。

まずは、大泉院長の最新のこちらのプロジェクトからプロジェクト一式をダウンロードします。

tinyAVR電子オルゴールVer1_2(tiny402をサポート)

 

ATTINY402に電子オルゴールの書き込みテスト の時と同じ手順で、デフォールトの設計が

外部フラッシュメモリ(W25Qxx)より音声データを読みだしてPCMで音声再生を行う設定にします。

TINY402は8ピンしかないので、電源/GNDに2ピン、メモリとのSPI IFに3線(SOとSIは共通に接続します)、音声の出力に1ピンで6ピンを消費します。

今回HV書き込みができるようになりましたので、起動用のスイッチ SW0をUPDI信号線のPA0に

アサインすると、空きピンはPA6のみになります。(このピンは後でモータ起動用に使います)

 

ATMEL STUDIOでダウンロードしたファイルのorgel_SW_402フォルダ内にあるorgel_SW_402.atsln
(ソルーション)ファイルを開きます。MicrosoftのVS Codeを使っているので、この辺に慣れた人は

なんとなくわかると思います。(ちなみに自分は慣れてないですw)

 

main.c はSLEEPとスイッチ(SW)のみEN(イネーブル)の設定です。

 

orgel_cfgは VOICE_S  1、 PART_N 0 に戻します。(外部フラッシュで音声再生の設定)

頭の#define BTL もデフォールトのまま、0にします(正出力のみ=シングル出力)

 

次に音声データの作成と音声HEXファイルのフラッシュメモリICへの書き込みです。

まずは、用意した音声データをWAV形式で変換するフォルダにコピーします。

 

MP3 から WAV への変換および、サンプルレートの変換はAudacityを使うと便利です。

Adafruitのこの資料に、詳細が書かれています。Convert Sound Files in Audacity

 

今回は、同じフォルダ階層にvoice_SANTAというフォルダを作って必要なファイルを

voice_TRUTHよりコピペしてきます。
変更が必要なのは、wavlixt.txt とwav2hex.batの2つのみです。

 

 

今回は、16bitでサンプルするので、メモリに入るのはこの3曲です。

 

大泉さんの説明に従って、batファイルを書き換えます。 今回 16000(16ksps) 8(8bit/データ)

に設定します。サンプルは8kより16kの方が音質はいいですが、メモリの容量とのバーターになります。

 

 

このフォルダ上で、batファイルをダブルクリックすると、音声データのHEXファイルが生成されます。

 

W25Q64_SANTA フォルダを開いてみると、13735KB(13MB)で、W25Q16の64Mbit =8MB

をオーバーしているように見えます。でも、インテルHEXはチェックサムやらアドレスやらの

オーバヘッドがあるので、注意が必要です。

 

実際の容量は下記のvos_mac.txtで分かります。vos_mac(0x390ab5,0x1396e5,16000)の0x390ab5と0x1396e5を足した値、0x4CA19A(5022106 byte ≒ 4.79MBになります。

 

さて、このVOS_MAC値はTINY402が複数の音声データを順次アクセスするためのINDEX値として

プログラム内に登録が必要です。

さきほどのmain.c に下記のようにvos_mac.txtの値をコピペして、Build → Rebuild Solutionでコンパイルを行います。

これで、プログラムの準備はできました。

 

次に、TL866II書き込み器を使って、フラッシュメモリ W25Q64JV(別の品番でもOK)に生成した音声データを書き込みます。

 

起動画面でSelect Device WinBond → W25Q64JVを選択します。

次に書き込みファイルを読みだします。

先ほどwav2hex.batで作成したHEXファイルは、voice_SANTAのフォルダに入っているので

それを選択して、読み出し を行います。

 

次に、デバイスをZIFコネクタの最上段にセットして、書き込みを行います。

 

 

書き込みを行ったら、音声データの準備は完了です。お疲れさまでした。

 

さて、ここからいよいよ回路をブレッドボードに組み立てて動作確認をしますよ

ブレッドボードに上に、下図にしたがって配線を行います。

ここから先は、PART2にしますね。

 

次回予告です。 このように出来上がりました。

 

 

動作している様子は、下記のYoutubeで確認できますよ。

 

 

本日もお疲れさまでした。

 

関連記事 

【Part2】Sound Player基板V2の音声データの作成方法と特性検討
【Part1】Sound Player基板V2の音声データの作成方法と特性検討

ATTINY202/402のFUSEビットをAVRDUDESSを使って書く方法
おもちゃ修理用のSOUND PLAYER基板の小型版 V2を設計しました!
[Part2ピエゾアンプ]ATTINY用Sounds Player基板を作って動作確認しました!
[Part1] ATTINY用Sounds Player基板を作って動作確認しました!
[Part2 テスト終了です] ATTINY402で音声再生のテストをしました
[Part1] ATTINY402で音声再生のテストをしました
ATTINY402に電子オルゴールのHVPプログラム書き込みテストをしました
[Part2 完成しました!]HVP対応のUPDI プログラマーを作成中です
[Part1] HVP対応のUPDI プログラマーを作成中です
[Part4 IRリモコン完成!] ATTINY202への書き込みとプログラムをやっています!
[Part3] ATTINY202への書き込みとプログラムをやっています!
[Part2] ATTINY202への書き込みとプログラムをやっています!
[Part1] ATTINY202への書き込みとプログラムをやっています!
ATTINY85 CPUを使って小型の赤外リモコンを作りました!

 

 

きのう、5月20日の夕方にJLCPCBさんに頼んでいた基板が届きました。

5月12日の夕方にJLCPCBで基板を手配して、たった8日間で届いたことになります。

 

料金も基板$2、OCS NEP送料が$1、PayPal手数料が$0.5で合計 $3.5、550円でした。

この料金でこの納期で手作りの基板が手に入るとは、いい世の中になったものです。

 

早速開封すると、40x33mmの基板が5枚入っています。

面付けして、30枚も注文してなくてよかったです。5枚もあれば、十分でしょう。

 

 

回路も、前に手作りで作っているので、KICADのパターン設計が間違ってなければ

大丈夫でしょう。

 

夕食が終わってから、家庭内無給残業ですw

 

ほとんどチップ部品を使ってますので、慣れてない人には一部大変かもしれません。

部品は1608サイズのチップ部品がほとんどです。ICやFETはピッチが細かいですが

それでも、0.65mmピッチくらいですので、少し練習すればなんとかなると思います。

 

小物部品からつけていきますよ。

 

チップ部品のCR類は、秋月から買ったり、ALiExpessからチップ部品セットを買ったりしてます。

 

はんだ付けスタンドもあると便利ですよ。

 

さて、できました。

これから、ターゲットのATTINY402のブレッドボードを付けて動作確認します。

 

あれ、どうもうまくいきません。

パワーオンリセットのスイッチを押してもなかなか3.3Vが下がらず、スイッチを離しても

UDPIラインに12Vのパルスが出てくれません。

なんでだろうと四苦八苦していたら、12時を回っていました。

なんと、家庭内深夜残業になってしまいました。

 上がUPDI信号線、下がTG_Vcc

 

いろいろと調べて、原因はターゲットの電源に付けていた100uFのパスコンとわかりました。

これを外すと、ちゃんとパワーオンリセットしたあとに200uSの12V HVPパルスがでるように

なりました。

 

 上がUPDI信号線、下がTG_Vcc

 

でもいけませんね、ターゲットにパスコンついているのは普通ですから。

対策を考えました。

まず、ターゲットへの電源ライン TG_Vccのブリーダ抵抗 10kΩ → 1kΩに変更します。

ターゲット基板の電流値が小さくて、パワーオンリセット(POR)時にダラダラ電圧が下がっている

ためです。 これで3V時 3mA、5V時 5mA流れるので、立下りは改善されるはずです。

 

 立下り、3秒くらいかかってました

 

次に、PORの立ち上がりが遅い時の問題対策です。もともとQ2の時定数はR5 100kΩとC1 0.01uF

で決まり、τ=CxR= 1mS です。τは電圧が0.69になる時間ですから、Q2 AO3400のオン電圧は

もっと低いので、400uSくらいでオンしていました。

これを10倍くらいにしちゃいましょう! C1 0..01uF → 0.1uFです。

この2つの対策でどうでしょうか?

 

 

 上がUPDI信号線、下がTG_Vcc

ターゲットのパスコン 100uFの時のPOR立ち上がり

 

 上がUPDI信号線、下がTG_Vcc

ターゲットのパスコン 10uFの時のPOR立ち上がり

 

おっ、うまくいきましたね。

まず、PORスイッチを押した時のTG_Vccの電圧立下りが早くなりました。

スイッチを離したときの立ち上がりは前と変わりませんが、HVパルス発生までの遅延が3~4mS

くらいあるので、電源がほぼ完全に立ち上がってから12V HVパルスが出るようになりました。

 

ターゲットのパスコンが10uFくらいなら、全く問題なし。

100uFではPORスイッチをチョン押しだと、TG_Vccが十分下がらずリセットがかからない時が

あります。 この時は、1秒くらい押してくださいね。

 

 

もちろん、UPDI信号線にHVPを掛けるためには、同時にHVPスイッチも押すことが必要です。

さて、これで新型ATTINY用のHVP対応UDPIプログラマーが完成です。

定数を修正した最終の回路図を添付しますね。

 

 

次は、ATTINY402を使って音声再生、ATTINY1614を使って複数曲オルゴール再生、

音声アンプの試験等を行う予定です。

 

それでは、次回以降をお楽しみに~

 

関連記事 

【Part2】Sound Player基板V2の音声データの作成方法と特性検討
【Part1】Sound Player基板V2の音声データの作成方法と特性検討

ATTINY202/402のFUSEビットをAVRDUDESSを使って書く方法
おもちゃ修理用のSOUND PLAYER基板の小型版 V2を設計しました!
[Part2ピエゾアンプ]ATTINY用Sounds Player基板を作って動作確認しました!
[Part1] ATTINY用Sounds Player基板を作って動作確認しました!
[Part2 テスト終了です] ATTINY402で音声再生のテストをしました
[Part1] ATTINY402で音声再生のテストをしました
ATTINY402に電子オルゴールのHVPプログラム書き込みテストをしました
[Part2 完成しました!]HVP対応のUPDI プログラマーを作成中です
[Part1] HVP対応のUPDI プログラマーを作成中です
[Part4 IRリモコン完成!] ATTINY202への書き込みとプログラムをやっています!
[Part3] ATTINY202への書き込みとプログラムをやっています!
[Part2] ATTINY202への書き込みとプログラムをやっています!
[Part1] ATTINY202への書き込みとプログラムをやっています!
ATTINY85 CPUを使って小型の赤外リモコンを作りました!