FC2ブログ

名張市つつじが丘おもちゃ病院

三重県名張市つつじが丘でおもちゃの病院を開院しています。年中無休で修理は無料、部品代のみ実費です。おもちゃの修理依頼は tutuji@cb4.so-net.ne.jp へメールにてご連絡下さい。なお、宅配便での受け付けは行っておりません。このブログにはおもちゃ等の修理事例やツール製作などを載せていきます。故障診断や修理方法の改善等、ご意見をお寄せ下さい。

PIC電子オルゴールVer5_7でBTL出力機能を改善

【前振り】
PIC電子オルゴールにはBTL出力機能がある。その目的は、アンプを外付けすることなく、PICのポートで直接高インピーダンス(300Ω)スピーカを鳴らすことだ。
PICの送付出力モジュールを利用しているが、演奏停止時にも相補出力ポートには相補信号が出るのでスピーカには電流が流れっ放しになる。そこで、Sleepするときには送付出力ポートに同相の信号を出力するようにした。
そうすると、今度は信号が切り替わるときにポップノイズが出てしまう。
そのため、信号を切り替える際に時間を掛けて徐々に切り替えるようにした。また、BTL出力を利用しない場合も、出力を徐々に切っていくように対応する。
圧電スピーカは直流を通さないので同相出力に切り替える必要は無い。


【設計】
上記の対応を踏まえて、BTLの扱いを以下の3種類とした。

BTL=0 のときは BTL出力しない(シングル出力)
BTL=1 のときは BTL出力し、Sleep時は相補出力したままとする
BTL=2 のときは BTL出力し、Slepp時は同相出力に切り替える

それぞれの設定での出力信号の推移を以下に示す。

PIC電子オルゴールVer5_7でBTL出力機能を改善信号推移

ランプ波形の傾斜は GND→Vdd(またはVdd→GND)で約8ms。スピーカのコーンが動くのが見えるが音としては聴こえない。


【ダウンロード】
設計資料と開発プロジェクトは ここから ダウンロードできる。
スポンサーサイト



  1. 2018/09/25(火) 11:36:05|
  2. 電子オルゴール+音声再生
  3. | コメント:1

PIC電子オルゴールVer5_7で大容量SPIフラッシュメモリ(W25Qxx)をサポート

音声再生は音声データが嵩張るため、大きなメモリが必要になりコストが嵩む。そのためおもちゃ修理では収容する音声を極力短くしていた。
しかし、最近は64MビットのSPIフラッシュメモリ 「W25Q64」 が比較的安価に出回ってきた。8ビット8kspsで1024秒の音声が収容できる。
AliExpressでの購入実績は10個送料込み$3.64(2018年9月)。1個40円程度ならおもちゃ修理に使える。16MビットのW25Q16は20円弱だ。
それで、PIC電子オルゴールで 「W25xxシリーズ」 をサポートした。
PIC電子オルゴールのファームウェアではメモリの容量を意識しないので、適切な容量のものが使える。但し、パワーダウンモードから復帰する命令で必要なIDはデバイスの型番(容量)によって異なるので、区別が必要だ。


【インタフェース】
W25QおよびW25Xシリーズのインタフェースは、小容量の25系のSPIフラッシュメモリと同様で、ReadDataコマンドに続いて読み出し開始アドレスを送ると、シーケンシャルにデータを返してくる。大容量なのでアドレスは24ビットになっている。
ブロックやページの境界を跨いで連続して読み出しができる。

2ビット並列や4ビット並列の高速転送も可能だが、電子オルゴールではそこまでの性能は望まないので、制御のためのポート数が少ない標準SPIで繋いでいる。


【接続】

PIC電子オルゴールVer5_7で大容量SPIフラッシュメモリ(W25Q64)をサポート接続図


【省電力】
Sleep時にW25Q64をパワーダウンモードに設定することにより、消費電流は0.7uAになった。
16F1707と12F1840はXLPモードの設定で0.2uAになり、合計0.9uAの実績が得られた。


【再生音サンプル】
PIC電子オルゴールVer5_7で大容量SPIフラッシュメモリ(W25Q64)をサポート


【ダウンロード】
設計資料と開発プロジェクトは ここから ダウンロードできる。

サンプルプロジェクトは下記の4つ。
onsei_PIC1705_SPI.X
onseiPIC1840_SPI.X
onsei_PIC18325_SPI.X
onsei_PIC18313_SPI.X
  1. 2018/09/25(火) 08:55:48|
  2. 電子オルゴール+音声再生
  3. | コメント:0

2.4GHzラジコン用ファームウェア製作(16F18325をサポート)

【前振り】
2.4GHzラジコンに限らず、僕のファームウェアでは全般的に16F1705使ってきた。コストパフォーマンスが良かったからだ。しかし、以前は100円(秋月2017年)だったが、今は110円(DIPタイプ秋月2018年)に値上がっている。おもちゃの患者さんとしては10円でも安い方がいいと思うので、100円(秋月2018年)の16F18325をサポートした。これでサポート済みのPICは、16F1503、16F18325、16F1705の3種になった。

と言うことで話は終わってしまうのだが、それでは味気ないので、今回の移植作業の状況でも。


【移植作業】
トランシーバへのアクセスエンジンは同じだし、デモボードの扱いも既存踏襲なので、PICの差異を吸収するだけだ。従来は16F1503と16F1705をサポートしていたので、16F18325に近しい方の16F1705のソースコードをベースに書き換えた。16F1705との違いは

・オシレータ設定 → OSCFRQの設定を追加
・PWMモジュールの番号の値 → PWM3、4をPWM5、6に変更
・内部プルアップの設定 → OPTION_REGのnWPUENビットが無くなり、WPUxのみで設定

上記を変更して、SE8R01(含むnRF24L01+)、CC2500はスンナリ動いた。しかし、A7105が送信側、受信側ともサッパリ動かない。RFチェッカーでモニタすると、送信時間が短くなっている。トランシーバへの設定は何も変更していないので???だ。

原因はA7105のSPIはMISOとMOSIがピンを共用していて、MISOのピン割当ての定義(#define)がそのようになっていなかったことだ。MISOは空きピンに定義されていた。

今回の移植作業は、「ターボ機能の仕様変更」(後述)も併せて行った。これは先にSE8R01で行ったので、移植作業はSE8R01と16F1705のソースコードをベースにして、それを他のトランシーバ、そして他のPICへとコピペして行った。16F1503に対しては、ピン割り当てを含む構成定義の部分を16F1503の既存コードから戻したので正しく書き替えられたが、16F18325は新規だったので、違いを意識していた部分のみを個別に書き換えていた。そのときにA7105のヘンなSPIを失念してしまった。

MISOが空きピンに定義された結果、空きピンはL出力設定のため読み込みデータは常に0となっていた。MISOをセンスするのはレジスタの読み込み時で、送信側ではキャリブレーションと送信の実行完了のチェックに使っていた。実際にはまだ送信中なのに完了したと誤認識していた。そのため、送信時間が短くなってしまい、データペイロードが尻切れトンボになってしまったのだ。

内部のバグを告知してどうなのかと思うが、A7105のSPIはMOSIとMISOが共用されているヘンな仕様だということで、よもやま話のネタにでもなればと。このようなヘンな仕様はピン数の節約には効果的だ。

以上がA7105で手古摺ったことの顛末で、次は「ターボ機能の仕様変更」の話に移る。


【ターボ機能の仕様変更】
フルアクションラジコンではターボ機能を搭載したものがあり、僕の2.4GHzラジコンでもターボ機能を搭載しているのだが、ターボのオン/オフのビットをデータペイロードのラジコン操作データの部分ではなく、制御タイプを設定するバイトに置いていた。これは、制御タイプを動的に変更するデモ向けの機能をターボボタンの操作で行う仕組みにしていたからだ。機能追加を重ねる過程でこのような間に合わせ的な設計をしてしまったのだが、ずっと気になっていた。それで、今回はターボのオン/オフをCH3の制御値に設定することにした。フルアクションの制御タイプでは、CH1が前後進、CH2が右左折、CH3がターボのオン/オフになった。これで気持ちは晴れ晴れスッキリした。プロポ制御タイプとESC制御タイプではターボ設定はあまり意味はないが、CH3に設定している。なお、この仕様変更は内部の処理の是正のみなので、回路や操作には影響はない。但し、送信側と受信側は共に今回のバージョンを使う必要がある。


【ダウンロード】
デモボードとファームウェアの設計資料と開発プロジェクトは ここから ダウンロードできる。

当初は SE8R01 と nRF24L01+ とはインタフェースを共通化して同じファームウェアを適用していたが、トランシーバのバージョンによっては非互換があることが判ったので、その後は SE8R01 と nRF24L01 のそれぞれに専用のプロジェクトを作っている。

プロジェクト名に トランシーバ名、TX/RXの別、PIC型番 を織り込んでいる。
  1. 2018/09/14(金) 08:02:47|
  2. 2.4GHzラジコン
  3. | コメント:0

アンパンマンことばずかんのセンサー信号

アンパンマンことばずかんのセンサー信号について、 「DDR SDRAM のようにクロックの正負のエッジを使っているような気がします。」 との情報があったため、実測してみた。

CLK、SD0、SD1、CMDの4つの信号を観測した。下図は 1ms/div での観測波形。
アンパンマンことばずかんセンサー信号1

下図は 100ns/div に拡大したもの。
アンパンマンことばずかんセンサー信号2

クロックの立上りと立下りの両方でSD0とSD1が確定されているように見える。
クロックの立上りまたは立下がりでSD0とSD1がHまたはLに復帰する様子は見られない。
従って、 「DDR SDRAM のようにクロックの正負のエッジを使っているような気がします。」 は否定できないと考える。

こんなことはデータシートで確認すれば済むことなのだが、そのデータシートが見付からない。イメージプロセッサのファミリーチップのデータシート 「SN9P701_v1.02.pdf」 とセンサーのデータシート 「SN9S102CE_Specification.pdf」 には

Data output: 2-bit nibble format

との記述があるだけで、詳細な記述がない。センサーとデコーダはSONIX指定のペアで使え、と言うことなのだろう。

もし、ご存知の方がいらっしゃれば情報提供をお願いしたい。
  1. 2018/09/13(木) 21:55:53|
  2. 電子・電気修理
  3. | コメント:2

PIC電子オルゴールVer5_7で操作SWとしてCdSを使ったサンプルを追加

PIC電子オルゴールで、操作にCdSを使ったサンプルを追加した。

【要件】
想定している応用は
①オルゴールを宝石箱に入れておき、箱を開けるとオルゴールが鳴り始める。
②閉じると鳴り止む。
③再び開けるとラウンドロビンに次の曲が鳴る。
④箱から出して、手をかざしてオルゴールを鳴らしたり止めたりする。

省電力は
①鳴っていないときは省電力Sleepさせて、電源SWは無くてもよい。
②オルゴールを外に出していても明るさが変化しなければ電源を殆ど消費しない。
③オルゴールを外に出していても使用しないときのために電源SWを設ける。

明るさの判定は
①環境の明るさに適応するように、固定のレベルではなく、明るさの変化で判定する。
②ゆっくりした(数10秒以上の)明るさの変化は無視することで、環境の明るさの変化に反応しないようにする。
③逆に、瞬間的な(数100ms未満)の変化を無視することで、チャタリングを防止する。
④判定結果がバタ付くのを防ぐため、明るさの判定にデッドバンドを持たせる。
⑤一定の固定レベルより暗くなったら動作を止める。


【設計】
・CdSはADC入力ポートとGND間に配置し、ポートを内部プルアップする。
 Sleep中はポートの内部プルアップを解除し、消費電流を無くす。

・オルゴールを演奏していないときはSleepし、WDTで定期的(32ms毎)にWakeUpしてCdSをセンスする。


【省電力の実績値】
Vdd=3Vで以下の消費電流だった。
16F1705 3uA@3V
12F1840 3uA@3V
16F18326 5uA@3V


【ダウンロード】
設計資料と開発プロジェクトは ここから ダウンロードできる。

プロジェクトは下記の3つ。
CdS_PIC1705.X
CdS_PIC1840.X
CdS_PIC183256.X
  1. 2018/09/08(土) 21:43:02|
  2. 電子オルゴール+音声再生
  3. | コメント:2

アンパンマンカラーパソコンの修理(リード線断線)

1.患者
アンパンマンカラーパソコン(バンダイ)
アンパンマンカラーパソコン(リード線断線)外観1
アンパンマンカラーパソコン(リード線断線)外観2

2.症状
①電源が入らない。

3.診察

①電源ボタンを押すと起動するときもある。しかし起動してもすぐに切れてしまう。

・突然全体がダウンしてしまうので、電源ラインかCPU不良のようだ。

②電池と電池受け金具はOK。

③キーボード側の裏蓋を外して電源ラインを見たが、リード線外れは無し。

④ディスプレイ側の全面パネルを剥がして、表蓋を開けて、電源ラインを追う。

・ディスプレイ側の裏蓋を開けるのに全面の絵柄パネルを剥がすのがいつも苦労する。裏側からのネジ止めにして貰いたい。

・基板の電源端子には電圧が出たり出なかったりで電源ラインの断線仕掛りのようだ。

・電池ボックスと基板間で導通をチェックすると、GNDラインが断線していた。

4.治療
①電池ボックスと基板間のGNDラインをバイパス配線した。

キーボード側の内部。紫色のコードがバイパス配線。
アンパンマンカラーパソコン(リード線断線)下側1
アンパンマンカラーパソコン(リード線断線)下側2

・ディスプレイ側の内部。紫色のコードがバイパス配線。
アンパンマンカラーパソコン(リード線断線)上側1
アンパンマンカラーパソコン(リード線断線)上側2

②マウスを使ってみると効いたり効かなかったりで、これもコードの断線仕掛りだった。

・7芯コードだったので、8芯のLANコードで交換した。


  1. 2018/09/04(火) 08:14:47|
  2. 電子・電気修理
  3. | コメント:0

プロフィール

大泉茂幸

Author:大泉茂幸
名張市つつじが丘おもちゃ病院
名張市つつじが丘南3番町129
tutuji@cb4.so-net.ne.jp
090-5534-6494
連絡は上記のメール、またはSMSでお願いします。

子どもの頃から趣味は電子工作一筋でやってきました。理科離れが進む中で科学技術に興味を持つ子どもが少しでも増えて行くことを願って、子ども達に電子工作の活動の場を提供しています。

1981年からおもちゃ病院の活動を始め、2014年に三重県名張市への移住を機に「つつじが丘おもちゃ病院」を開院しました。自分でおもちゃを設計し製作する【おもちゃ工房】と、マイコンを応用した電子工作を楽しむ【マイコンクラブ】も併設しています。新規参加メンバーを募集しています。

当ブログで公開している技術情報や成果物の複製、改変および再配布はフリーです。読者様のおもちゃ病院活動のお役に立てば幸いです。ご利用いただいた結果や感想等を記事へのコメントやメールでフィードバックしていただけると有難いです。なお、公開ファイルは最新版を載せているので、古い記事の内容から変わっている場合があります。

カテゴリ

おもちゃ修理技術 (124)
¦ ・電子オルゴール+音声再生 (52)
¦ ・音声再生・録音再生 (13)
¦ ・2.4GHzラジコン (35)
¦ ・レガシーラジコン (13)
¦ ・赤外線リモコン (4)
¦ ・RFID (3)
¦ ・タッチセンス (4)
ツール製作 (35)
¦ ・プログラマー (27)
¦ ・USB-シリアル変換 (3)
¦ ・その他のツール (5)
修理事例 (157)
¦ ・マイコン換装 (75)
¦ ・電子・電気修理 (59)
¦ ・メカ修理 (23)
製作記事 (5)
PIC開発 (4)
おもちゃ病院 (9)
ドクター研修会 (2)
未分類 (0)

最新記事

最新コメント

月別アーカイブ

訪問者数

検索フォーム

RSSリンクの表示

リンク

このブログをリンクに追加する

QRコード

QR