ラベル B051 : WAV MODULE の投稿を表示しています。 すべての投稿を表示
ラベル B051 : WAV MODULE の投稿を表示しています。 すべての投稿を表示

2010年7月17日土曜日

B057 : mp3 player kit

先日のSTM32開発環境構築と共に進めていたmp3 player kitについての仕様を詰めてみます。

今考えているのはちょうどB046 : uMP3PLAYERとB051 : WAV MODULEを混ぜたような内容。
B046の液晶表示器は扱いづらかったのでそれを変更し、B051のオーディオ出力を付けたような感じになると思います。
  • mp3ファイルなどをmicroSDカードから再生できる。
  • LCDに再生状況を表示できる。
  • 赤外線リモコンで制御できる。
  • 時計機能が付いていて目覚ましmp3プレイヤーとしても機能する。
  • ステレオスピーカ内蔵でアンプいらず。
  • プラスチックケースに入っていて扱いやすい。
本格的に実運用できるような物にしたいと思います。

2010年5月16日日曜日

B051 : WAV MODULEのデバッグ - 2

再生音がノイズだらけ

ファームウェア側の処理の問題と思っていましたが違いました。

真の原因は
  • DACとAMP間にDC成分を取り除くキャパシタが直列に入っていない。よってDC成分も含めてAMPが増幅する結果、電源電圧でクリッピングが生じる。
  • ゲインを調整する機構(可変抵抗)が無い。このため、クリッピングに対して対処できない。
でした。

出力波形を見ながら電気図面を見て呆然。
でもこの瞬間にすっきりしましたが。

以下はDACの出力。正弦波がきれいに出ています。

アンプの出力段はというと、歪過ぎです。

真の原因は判明しています。
ですから、DACとAMPの間に以下の回路を入れて確認します。

当然ながらアンプの出力もきれいな正弦波となりました。

困った事にこの対応はお世辞にも美しい改造にはなりません。
そこで以下のようにしました。
  • AMPとその周辺受動素子を未実装とする。
  • AMP周辺受動素子のうち負荷に直列に入るCのみ残す。
  • AMPの基板パット間を短絡する。(AMP入力パット-AMP出力パット)

1倍のアンプを搭載することで基板に直接スピーカを接続できるようにする予定でしたが、これを諦めてDACの出力を外部に供給するという算段です。少し残念ですが仕方ありません。

B051 : WAV MODULEのデバッグ - 1

音が出ると液晶のバックライトがちらつく


消費電力計算でのマージン設定が完全に誤りでした。
以下は5.0[V]から三端子レギュレータで降圧した直後の3.3[V]の波形。
問題ないですね。

LCD直近で5.0[V]を測定すると、音が出る度に電圧がドロップしています。
これでは当然バックライトはチカチカします。

AC-DCアダプタから電力の供給を受けた後、ポリスイッチを入れているのですが、そこでも5.0[V]が同様の波形になっています。

* 電力は5.0[V]と3.3[V]の2系統である。* 5.0[V]はポリスイッチの直近で電圧がドロップしている。
* 3.3[V]は問題ない。

よくよく見返すと設計時点でのポリスイッチ容量は100m[A]です。
LCDのバックライトはティピカルで60m[A]で最大120m[A]となっています。
この最大値は電流制限抵抗の値によって決まるものですので設計者が制御可能なわけですが、データシート上で最大120m[A]となっている時点でポリスイッチの容量100m[A]は良い値とは言えません。
LEDのVfによっても電流値は変わりますので、その点も考慮が必要です。

全体の電力を再計算してポリスイッチの値は再選定ということになりました。
基板パターンが小さい容量向けになっているので、ちょっと格好の悪い実装になるかもしれません。

2010年5月10日月曜日

B051 : WAV MODULEのSPIが動作しない件

B051 : WAV MODULEのSPIが動作しない件を調査しました。
冷静になってシミュレーションをしてみるとおかしな点を発見。


SPDR(SPI Data Register)に値をセットした時にSPSR(SPI Status Register)のWCOL(Write Collision Flag)がセットされています。


WCOLビットはデータ転送中にSPDRに書き込みを行った時にセットされます。
データはシフトレジスタによって1ビットずつ転送されていくのです。
言わば途中でデータが変更されたことを検出するためのビットです。

ですが、今回は最初の1バイト目の転送でこのような状態になっていました。
最初の1バイト目なので先に書き込んだデータがあるはずありません。

コリジョンが発生しているために転送が開始されず、転送しているつもりになっているコードはいつまで経ってもSPDRのSPIFビットが立つのを待っているというのが今回の現象です。

悶々としながらデータシートを見直していると気になる記述を発見。


「マスタSPIとして使用する場合、SSピンのデータディレクションはDDB2によって制御されます。」
「SPIによって入力ポートとして設定される場合、PORTB2ビットによるプルアップも有効です。」

そして、


「マスタはシフトするためのデータをSPDRに書き込むか、SSラインをプルアップしてパケットの終了を通知します。」

つまり、少なくともAVRのSPIペリフェラルはコリジョンの判定をSSラインの状態でも行っていそうだというところに行きあたりました。

確認してみるとB051はSSをスイッチの入力に割り当てています。


肝心のSDカードのCSは・・・


GPIOに接続しています。

過去に設計した基板は全てこのSSを何らかの形でCS(Chip Select)に使用していました。
ですから今回のような現象には遭遇しません。

CSはGPIOで正しく制御しているので、本来のSS側が何かまずそうです。

テストコードを確かめるとSSのプルアップは指定していません。
これを試しにプルアップして動作させてみました。

結果はビンゴ。
コリジョンが発生することもなく期待通りの動作をします。

勘違いはこうです。

誤:「SPIをマスタに設定した時にはSSは自分で制御する。だからどのポートでも良い。」
正:「SPIをマスタに設定した時にはSSは自分で制御する。だけどポートはSSを使う。」


データシートを斜め読みしていると「マスターの時はSSはユーザ設定だなぁ。」とだけ思います。
「だけ」というのが今回のポイント。
きちんと書いてあります。「SPI Pin Overrides」と。

2010年5月9日日曜日

B051 : WAV MODULEデバッグ開始

本格的にデバッグ開始ということで全ての部品を実装。


組み立てると上の写真のようになる代物です。
中身は


のようになっています。
今日はオーディオ周辺とSDカード周辺を確認。
オーディオ回路は大雑把に確認。電気的には問題なさそうだ。

問題はSDカード。
もう3つのプロジェクトで使っていて何の問題もなかったのに何かにはまっています。
おかしいなぁ。回路もコードもほとんど流用なんだけどなぁ。
個体の問題も疑ってかなり慎重に見たのですが、今日はあえなく撃沈です。

B051 : WAV MODULE基板到着

2010/04/17に発注したB051 : WAV MODULEの基板が到着しました。


発注から到着までざっと3週間といったところでしょうか。

今回は余裕を持ちたいので「発送はフェデックスで」とオーダーしていたはずなのですが、そういえば注文書の時点でエアメールになっていました。

やっぱりちゃんとREADME読んでくれないのね・・・。

数年前に両面シルクで頼んだ時も片面だったね・・・。
この時の注文書はきちんと両面になってたけど・・・。

でも、良いです。
問題なし!


毎回嬉しいのです。
可愛くて仕方ない基板達。
もしかして自分はマニアなんじゃないだろうか・・・。と思うこともある。


両面の仕上がりをチェック。
ファームウェア設計実装のための一台を製造します。


今回は後戻りする余裕がないので慎重に一歩一歩作戦。
まずはプロセッサ周辺のみを実装。


徐々にデバッグを進めて現在LCDまでを確認。


一ヶ所だけ実装に問題がありそうな気配。
LCD用のマウント支柱とチップ抵抗があたりそう。
今日は元気に一日を終えたいのでこれには触れないでおこう。


8x2文字の可愛いLCDを搭載。
明日はオーディオ周辺を確認予定。

これもがんばって良い形でMTM05に出展したいなぁ。

2010年4月17日土曜日

B051 : WAV MODULEの基板発注

今回はOlimexに発注。
同様の設計ルールでPCBCARTに頼んだ事があるが、正直8年くらい前のOlimexの品質に近かった。
Olimexは以前に比べて格段に品質が向上している。
製造環境や使用部材を更新しているのかもしれない。

今回は少し急いで出荷はFedExを指定。

2010年4月14日水曜日

B051 : WAV MODULEの電気図面の振り返りレビュー

ざっと引いた図面には大抵の場合「何かの穴」があります。
それらを見つけて修正する機会を与えるのが振り返りレビューです。
電気図面を引いた後に数日寝かせてこれを自分で行います。
印刷した電気図面に思いつく突っ込みをどんどん書いていきます。
通常であればこの時点でいくつもの疑問が出てきます。
基板を製造した後で見つかるバグの大部分はこういった地味な取り組みで取り除くことができます。

ポイントをまとめてみました。

ポイント
  • バラバラに集められたデータシートがあれば一カ所に集約しておく。
  • 振り返りは必ず日付を跨いで行う。(天気や場所などが違えばなお良い。気持ちが切り替わる。) 
  • 振り返りは複数回やると効果的。
  • 参照して良い技術文書はデータシートのみとする。
他にも色々あるかもしれませんが、今朝思いついたのはこのくらい。

2010年4月12日月曜日

B051 : WAV MODULEの設計

WAVファイルをチープな音で再生するためのモジュールとして設計。

外出先で3時間かけて配線したのが下記ボード。
家に帰って原寸大で印刷してみたらイマイチ盛り上がりに欠ける。
何か中途半端さを感じてしまう。
 そこでやるんだったらということで液晶表示機を追加する仕様に急きょ変更。
結局配線も初めからやり直しです。