FC2ブログ

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

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

CCP社W-DRIVEシリーズのプロトコル分析結果

CCP社W-DRIVEシリーズのプロトコル分析結果は 過去記事 で報告しているが、当時はバンドBとCの操作データを取り忘れていたため、今回全パターンの信号をキャプチャして分析を補完した。キャプチャデータは ここ にある。

1.フレーム構成
バンドA前進の波形
CCP社W-DRIVEシリーズのプロトコル分析結果波形1
フレームはデューティ50%のパルス列で構成されている。

「プリアンブル」
周期190usのパルスが4サイクル。
この部分は、受信側の超再生検波で正しく復調されない。超再生検波回路の動作が安定するまでの「捨てビット」として捉えればよい。

「スタートビット」
周期760usのパルスが1サイクル。
受信側では、この部分を捕捉して、以降の16ビットのデータを取込む。

「データ」
周期380usのパルスがビット値1、周期190usのパルスがビット値0を表し、16ビット長である。

「ストップビット」
周期190usのパルスが1サイクル

2.エンコードルール
キャプチャしたデータは以下の通り。

操作データ
バンドA
1110000000001000 前
1110000100000111 前+右
1110001000000110 前+左
1101000000001001 後
1101000100001000 後+右
1101001000000111 後+左
1100000100001001 右
1100001000001000 左
1100000000001010 停止

バンドB
0110000000000000 前
0110000100001111 前+右
0110001000001110 前+左
0101000000000001 後
0101000100000000 後+右
0101001000001111 後+左
0100000100000001 右
0100001000000000 左
0100000000000010 停止

バンドC
0010000000000100 前
0010000100000011 前+右
0010001000000010 前+左
0001000000000101 後
0001000100000100 後+右
0001001000000011 後+左
0000000100000101 右
0000001000000100 左
0000000000000110 停止

ペアリングA
1100000010000010

ペアリングB
0100000010001010

ペアリングC
0000000010001110

16ビットのデータはMSBから送信され、ビットの意味付けは以下の通り。
b15-14:バンド(A:11、B:01、C:00)
b13:前進(0:オフ、1:オン)
b12:後進(0:オフ、1:オン)
b11-10:常に0
b9:左折(0:オフ、1:オン)
b8:右折(0:オフ、1:オン)
b7:運転操作/ペアリングの区分(0:運転操作、1:ペアリング)
b6-4:常に0
b3-0:冗長ビット(算出式は不明)

冗長ビットの算出式が未解明であるが、エンコーダを作る場合は上記のコードでハードコードするのが早道だ。

3.フレームの繰り返し
CCP社W-DRIVEシリーズのプロトコル分析結果波形2

フレームの繰り返し周期は以下の通り。
操作信号
バンドA:64ms
バンドB:75ms
バンドC:47ms

ペアリング信号
バンドA:1600ms周期で1分弱繰返される
バンドB:1600ms周期で1分弱繰返される
バンドC:224ms周期で1分弱繰返される

各信号フレームの繰り返し後に、停止の操作データフレームが20~21回繰返される。
スポンサーサイト
  1. 2016/11/30(水) 20:03:17|
  2. レガシーラジコン
  3. | コメント:0

不思議なドレッサー ミラーナの修理(マイコン換装)

本件は、(千葉県)鎌ケ谷おもちゃの図書館「あ・そ・ぼ」おもちゃ病院様の修理事例であり、つつじが丘おもちゃ病院(当院)はファームウェアの開発を請け負った。
当記事には依頼元の 鎌ケ谷おもちゃの図書館「あ・そ・ぼ」おもちゃ病院様 から提供していただいた情報や資料が含まれている。
依頼元のブログは こちら

1.患者
ハローキティ 星がキラキラ!不思議なドレッサー ミラーナ (ジョイパレット)
不思議なドレッサー ミラーナ(マイコン換装)外観

メーカーの商品ページは ここ

参考動画は ここ

2.症状
①何も動かない。

3.診察
①依頼元でCOBチップの不良と診断された。

4.治療
①COBチップをマイコンで換装するため、当院へファームウェア開発が依頼された。

【要件】
②依頼元から提示された要件は以下の通り。

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
(1)ハード面
 ・単3電池3個:4.5V
 ・LED 8個:負論理で点灯(8ポート) 
   LED1:赤色 LED2:緑色 LED3:赤色 LED4:緑色
   LED5:赤色 LED6:緑色 LED7:赤色 LED8:緑色
LED9:赤色 LED10:緑色       
 ・スイッチ3個:
   SW1:スライドスイッチ PICへの電源供給 
   SW1-1:スライドスイッチ PICへの電源供給、BGM音鳴る 正論理で入力(1ポート)
   SW2:磁石型基板実装 正論理で入力(1ポート)
   SW3:リードスイッチ 正論理で入力(1ポート)
 ・スピーカー:8オーム 0.25W(1ポート)

(2)スイッチ等機能
 ・SW1:オンでPICへの電源供給、オフで停止
 ・SW1-1:オンでPICへの電源供給、BGM音繰り返し演奏、オフで停止
 ・SW2:プッシュオン型スイッチ
 ・SW3:外部ステッキ(磁石)を近づけるとリードスイッチ
      演奏中、再度近づけても無視する
 ・LED点灯:
   パターン1 赤色、緑色1秒ごとに交互に点灯
          LED1、3、5、7、9(赤色)同時点灯
          LED2、4、6、8、10(緑色)同時点灯
   パターン2 LED2、4、6、8、10(緑色)同時点灯
   パターン3 LED1、3、5、7、9(赤色)同時点灯
     

(3)BGM音、効果音、音声合成音
 ・BGM音:電子オルゴール音でミッキーマウスマーチ
 ・音声再生音1:”きらきら~ん”
 ・音声再生音2:”シャリ~ン”
 ・音声合成音:文言をHARUKAちゃん(ミラーナ2.WAV)
           
(4)動作内容:時系列
 ①SW1オンでマイコンへ電源供給:無音、LED消灯で待機状態
 ②SW2:プッシュオンで
       音声再生音2”シャリ~ン”とLEDパターン2
      次のプッシュオンで
       音声再生音2”シャリ~ン”とLEDパターン3
      次のプッシュオンで
       音声再生音2”シャリ~ン”とパターン2とパターン3同時点灯
      次のプッシュオンで消灯し、最初に戻り繰り返す
 ③SW3オンで次のパターンを繰り返す
   ・音声再生音1+”きらきらおめめ、可愛いでしょう”、LEDパターン1
   ・音声再生音1+”アイドルみたい”、LEDパターン1
   ・音声再生音1+”今日のおしゃれは完璧”、LEDパターン1
   ・音声再生音1+”笑顔が、すてき”、LEDパターン1
 ④SW1オフでマイコンへ電源供給停止
  
 
 上記①でSW1-1オンでPICへの電源供給、BGM音繰り返し演奏し
 ②、③を実行する
 ④SW1-1オフでマイコンへ電源供給停止、BGM音停止
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++


③LED点滅の動作仕様は実際に動かしてみないと評価し辛いので、依頼元でカスタマイズが可能なように、動作シナリオを自由に登録する方式とし、登録用のマクロを提供した。

【マクロ定義】
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;LEDの点滅シーケンス定義マクロ
;マクロ書式
;  LED_MAC  led_r,led_g,jikan
;パラメータ
;  led_r:LED赤1-5点灯パターンを5ビットで指定する(0=消灯、1=点灯)
;  led_g:LED緑1-5点灯パターンを5ビットで指定する(0=消灯、1=点灯)
;  jikan:持続時間を100msの単位で指定する(0~15)
;説明
;  jikanが0のときはシナリオを終了し、led_rとled_gの点灯パターンを持続する
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
LED_MAC  macro  led_r,led_g,jikan
    dw  (led_r<<9)+(led_g<<4)+jikan
    endm


【設定例】
LED_SEQ3 ;星SW3回目(ランダム回転)
    LED_MAC  b'10010',b'01010',3
    LED_MAC  b'00101',b'10100',3
    LED_MAC  b'01010',b'01001',3

    LED_MAC  b'00110',b'00001',3
    LED_MAC  b'01100',b'00010',3
    LED_MAC  b'11000',b'00100',3

    LED_MAC  0,0,0

④女の子のおしゃべりは適当な音源が入手できなかったので、テキスト読み上げの音声合成を利用してPCMデータを作った。どんな文言でもしゃべらせられるのと性別や年齢などの声質や喜怒の感情を加味できるので、音源が無い場合にはこのやり方は重宝する。

⑤音声は全体で8秒強になるため、16F1705のプログラムメモリと24FC512に分散して格納した。I2Cメモリからの再生は同時には1音声に限られるので、シリアルに再生するものを24FC512に格納する。

⑥依頼元からの要件には無かったが、オートパワーオフの機能を盛り込んだ。無操作で11分経過するとLEDを消灯してSleepする。BGMがオンのときはBGMの曲の途中では止めずに曲の終わりでSleepする。Sleep時の消費電流は24FC512の電源消費も含めて12uAになった。「星ボタン」か「ステッキ」の操作でWakeUpし動作を再開する。

【回路図】
⑦ポートの割当てと周辺の回路は以下とした。ポート数を節約するため、10個のLEDは5×2のマトリクス接続にした。それでも16F1705のポート数に収まらないため、3個のSWを2本のポートで読み込むようにした。
不思議なドレッサー ミラーナ(マイコン換装)回路図

【ICSPの考慮】
⑧ICSPDATとICSPCLKのピンはLED制御出力に充てて、ICSP時に影響が無いようにしている。ICSPではMCLRのピンに高電圧が印加されるので、ICSP時には星ボタンを押さないよう運用対応する。

⑨24FC512のWPピンはプルアップしているので、内容を書き換える際はWPピンをGNDに落として行うよう運用対応する。

【ファームウェア開発】
⑩開発したファームウェアの設計資料、開発プロジェクトおよび資材は ここから ダウンロードできる。

【再生音】
⑪本ファームウェアの再生音
再生音はこれ

⑫マイコン換装後の動作動画は 依頼元のブログ を参照
  1. 2016/11/28(月) 23:25:13|
  2. マイコン換装
  3. | コメント:0

プロポ受信機「FutabaFP-R114H」の修理(RFC断線)

1.患者
プロポ受信機(FutabaFP-R114H)
プロポ受信機FutabaFP-R114H(RFC断線)外観

2.症状
①サーボが動かない。

3.診察
①Bソケットに電源5Vを供給したが、電源電流が流れない。

②正常な送信機から信号を送っても、どのソケットからも制御信号が出力されない。

③電源消費が無いことから電源ラインの不具合と見て、ソケットの+VとGNDの接続を辿っていく。

④GNDはデコード回路基板を経由して受信機回路まで繋がっていた。

⑤+Vのラインは、ソケットの+Vピンからデコード回路へ繋がるRFC(820uH)で途切れていた。配線パターン切れや半田付け不良ではなく、RFC内部の断線を確認した。
プロポ受信機FutabaFP-R114H(RFC断線)診察1
下図が内部断線していたRFC(820uH)
プロポ受信機FutabaFP-R114H(RFC断線)診察2

4.治療
①820uHの持ち合わせが無かったので、1mHで代用した。

下図の → が交換後のRFC
プロポ受信機FutabaFP-R114H(RFC断線)診察3

②RFC交換後は4chとも制御信号が出るようになり、実際にサーボを繋いで動作確認の結果、良好となった。

  1. 2016/11/28(月) 20:18:17|
  2. 電子・電気修理
  3. | コメント:0

PICプログラマーで 16F18313/18325 をサポート

お馴染みの「USB接続PICプログラマー」のソフトウェアをバージョンアップした。

++++++++++++++++++++++++++++++++++
2016年11月14日の改変

秋月から今秋に発売になった 16F18313/18325 をサポートした。

「12F609/615/16F610/12HV609/615/16HV610/12F617/16F616/16HV616 
 ←616/617以外では消去書込みで消去されない不具合あり、未解決
 12F615等の1ワード書込みデバイスではRowEraseはできないのではないか?」
上記は当然な話と思う。それで、 616/617 以外は消去書込みの機能を削除した。従って、「消去」と「書込み」の2つに分けて操作して貰うことになる。

「RUN」するときにもVdd指定値のチェックをしているが、プログラミング仕様での規定値を基準にしている。しかも、バルクイレースやチップイレース等のより厳しいケースの値を使っている。これはヘンな考え方で、プログラミング時の規定を「RUN」時にも適用するのは不適切だ。例えば12F509をVdd=3Vで「RUN」させようとすると、「Vdd指定値(30)がデバイスの最小値(45)未満である」と言われてイラっとしてしまう。それで、「RUN」時のVdd値の下限チェックを行わないようにした。上限のチェックは従前どおりに行う。

【サポートデバイス一覧】
// 10F200/204/220/202/206/222
// 10F320/322
// 12F508/509/510/16F506 ←12F510のチップ消去がVpp先行でないと働かないことが未解決
// 16F54/57/59 ←57/59も1ワード書込み、実機テストは54と57で実施
// 12F609/615/16F610/12HV609/615/16HV610/12F617/16F616/16HV616
// 16F627/628/LF627/628
// 16F627A/628A/648A/LF627A/628A/648A
// 12F629/675/16F630/676
// 12F6xx/16F6xx
// 16C711
// 16F716
// 16F785/HV785
// 16F818/819
// 16F84A
// 16F87/88
// 16F87x
// 16F87xA
// 16F88x
// 16F91X/946 ←机上チェックのみ
// 16F145x/LF145x ←机上チェックのみ
// 12F1501/LF1501/16F150x/LF150x ←実機テストは12F1501、16F1503のみ実施
// 16F151x/LF151x/F152x/LF152x ←机上チェックのみ
// 12F1612/LF1612/16F1613/LF1613 ←実機テストは12F1612のみ実施
// 16F170x/LF170x ←実機テストは16F1705のみ実施
// 16F171x/LF171x ←机上チェックのみ
// 16F178x/LF178x ←机上チェックのみ
// 12F182x/LF182x/16F182x/LF182x
// 12F1840/LF1840 ←机上チェックのみ
// 16F18313/18325
// 16LF190x/F193x/LF193x/F194x/LF194x ←実機テストは16F1938のみ実施
// 18F1320/2320 ←机上チェックのみ
// 18F2550/4550
// 18F1xK22/LF1xK22/F1xK50
// 18F2xK20/4xK20
// 18F2xK22/4xK22
// 18F2xJxx/4xJxx
// 24FJxxxGA0xx
// 30F ←机上チェックのみ
// 33F/24H
// 32MX
// 24FCxxx(ページサイズ32バイト以上のデバイス) ←実機テストは24FC256、24FC512のみ実施
// 24FC1025/1026 ←実機テストは24FC1025のみ実施
// CAT24M01 ←机上チェックのみ
// 25AAxxx/LCxxx(ページサイズ32バイト以上のデバイス) ←机上チェックのみ
// 90S1200 ←ID読込みがオール0となるがチップのバグ?
// 90S2313
// 90S2323 ←ID読込みがオール0となるがチップのバグ? Vcc=5Vでの書込みが失敗する
// tiny2313
// tiny13 ←机上チェックのみ
// mega48/88/168/328 ←実機テストはmega328のみ実施

【今回の変更プログラム】
ISPdll.dll
ISP.exe

【ダウンロード】
「USB接続PICプログラマー」の最新のソフトウェアは ここから ダウンロードできる。

【当初の製作記事】
プログラマーのハードウェアを含む全体の製作記事は こちら を参照。

++++++++++++++++++++++++++++++++++
2016年7月1日の改変

今更な話だが、PIC内蔵オシレータのキャリブレーション値の扱いについて、ずっと悩み続けてきた。プログラミング仕様書には 「デバイスを消去する場合はキャリブレーション値の退避/回復をせよ」 と書かれている。しかし、その通りにやっていても何らかのトラブルで書込み動作が中断されてしまったときはどうするのか。そのための良い方法がある。デバイスに荷札を付けて工場出荷時の値を書き留めておけばよいのだ。

そもそもプログラム領域の消去でキャリブレーション値も消えてしまうような設計が間違っている。後に出てきたデバイスでは安易には消されないところに 「バックアップキャリブレーション値」 が格納されるようになった。そのため荷札は必要がなくなり、キャリブレーション値が消えても 「バックアップキャリブレーション値」 から復元することが可能になった。今回はデバイスの書き込み時におけるキャリブレーション値の引継ぎ方法を整理した。

リセットベクタに内蔵オシレータのキャリブレーション値を置くデバイス(10F2xx、12F5xx、12F629/675、16F54/57/59)でHEXファイルにキャリブレーション値が指定されていない場合はデバイスから引き継ぐようにした。処理倫理は以下の通り。

1.HEXファイルのキャリブレーション値を最優先する。

2.HEXファイルにキャリブレーション値が無い場合はデバイスのキャリブレーション値を引継ぐ。

3.デバイスにキャリブレーション値が設定されていない(消去されている)場合はバックアップキャリブレーション値をリセットベクタに書込む。但し、バックアップキャリブレーション値を持たないデバイス(12F629/675、16F54/57/59)は除く。

この機能を活かすために消去書込みの実行機能を新設する。但し、消去はプログラム領域とコンフィギュレーションワードのみとするため、ID領域とバックアップキャリブレーション値の書換えはしない。

どのキャリブレーション値を採ればよいかはケースバイケースだと思う。それで、操作画面の CalErase チェックボタンの設定で判断を変えられるようにした。チェックされている場合は、デバイスのキャリブレーション値を消去してHEXファイルのキャリブレーション値を書き込む意図があると理解して、上述のロジックで動く。

CalErase がチェックされていない場合は、デバイスのキャリブレーション値は消さない意図があると理解して、以下のロジックで動く。

1.デバイスのキャリブレーション値を引継ぐ。

2.デバイスにキャリブレーション値が設定されていない(消去されている)場合はバックアップキャリブレーション値をリセットベクタに書込む。但し、バックアップキャリブレーション値を持たないデバイス(12F629/675、16F54/57/59)は除く。

【今回の変更プログラム】
ISPdll.dll

【ダウンロード】
「USB接続PICプログラマー」の最新のソフトウェアは ここから ダウンロードできる。

【当初の製作記事】
プログラマーのハードウェアを含む全体の製作記事は こちら を参照。

++++++++++++++++++++++++++++++++++
2016年6月19日の改変

2016年5月末頃に秋月で新発売となったデバイスを中心に兄弟分もまとめてサポートした。

・16F145x (16FでUSB内蔵。@230円で値上げ後の18F14K50と同じだが、メモリが大きい)
・12F1612/1613
・16F151x/152x
・12F1612/16F1613
・16F170x/171x/178x
・16F182x/184x
・CAT24M1 (ONセミのI2Cインタフェース1MビットEEPROM、@150円安い!)

【サポートデバイス一覧】
10F200/204/220/202/206/222 
10F320/322 
12F508/509/510/16F506 
16F54/57/59 ←57/59も1ワード書込み、実機テストは54のみ実施 
12F609/615/16F610/12HV609/615/16HV610/12F617/16F616/16HV616 
 ←616/617以外では消去書込みで消去されない不具合あり、未解決
 12F615等の1ワード書込みデバイスではRowEraseはできないのではないか?
16F627/628/LF627/628 
16F627A/628A/648A/LF627A/628A/648A 
12F629/675/16F630/676 
12F6xx/16F6xx 
16C711 
16F716 
16F785/HV785 
16F818/819
16F84A
16F87/88
16F87x
16F87xA
16F88x
16F91X/946 ←机上チェックのみ
16F145x/LF145x ←机上チェックのみ
12F1501/LF1501/16F150x/LF150x ←実機テストは12F1501、16F1503のみ実施
16F151x/LF151x/F152x/LF152x ←机上チェックのみ
12F1612/LF1612//16F1613/LF1613 ←机上チェックのみ
16F170x/LF170x ←実機テストは16F1705のみ実施
16F171x/LF171x ←机上チェックのみ
16F178x/LF178x ←机上チェックのみ
12F182x/LF182x/16F182x/LF182x
12F1840/LF1840 ←机上チェックのみ
16LF190x/F193x/LF193x/F194x/LF194x ←実機テストは16F1938のみ実施
18F1320/2320 ←机上チェックのみ
18F2550/4550
18F1xK22/LF1xK22/F1xK50
18F2xK20/4xK20
18F2xK22/4xK22
18F2xJxx/4xJxx
24FJxxxGA0xx
30F ←机上チェックのみ
33F/24H
32MX
24FCxxx(ページサイズ32バイト以上のデバイス) ←実機テストは24FC256、24FC512のみ実施
24FC1025/1026 ←実機テストは24FC1025のみ実施
CAT24M01 ←机上チェックのみ
25AAxxx/LCxxx(ページサイズ32バイト以上のデバイス) ←机上チェックのみ
90S1200 ←ID読込みがオール0となるがチップのバグ?
90S2313
90S2323 ←ID読込みがオール0となるがチップのバグ? Vcc=5Vでの書込みが失敗する
tiny2313
tiny13 ←机上チェックのみ
mega48/88/168/328 ←実機テストはmega328のみ実施

【今回の変更プログラム】
ISPdll.dll
ISP.exe
  1. 2016/11/14(月) 22:20:46|
  2. プログラマー
  3. | コメント:0

プロフィール

大泉茂幸

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

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

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

当ブログで公開している技術情報や成果物のご利用および再配布はフリーです。読者様の技術活動のお役に立てば幸いです。ご利用いただいた結果や感想等を記事へのコメントやメールでフィードバックしていただけると有難いです。

カテゴリ

おもちゃ修理技術 (83)
¦ ・電子オルゴール+音声 (28)
¦ ・音声再生・録音再生 (4)
¦ ・2.4GHzラジコン (29)
¦ ・レガシーラジコン (12)
¦ ・赤外線リモコン (4)
¦ ・RFID (3)
¦ ・タッチセンス (3)
ツール製作 (22)
¦ ・プログラマー (15)
¦ ・USB-シリアル変換 (3)
¦ ・その他のツール (4)
修理事例 (149)
¦ ・マイコン換装 (69)
¦ ・電子・電気修理 (58)
¦ ・メカ修理 (22)
製作記事 (4)
PIC開発 (4)
おもちゃ病院 (8)
ドクター研修会 (2)
未分類 (2)

最新記事

最新コメント

月別アーカイブ

訪問者数

検索フォーム

RSSリンクの表示

リンク

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

ブロとも申請フォーム

この人とブロともになる

QRコード

QR