FC2ブログ

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

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

BRUIN(Licht und Sound Lok)(マイコン換装)事例2

本件は、 (東京都)あきしまおもちゃ病院様 の修理事例であり、つつじが丘おもちゃ病院(当院)はファームウェアの開発を請け負った。
当記事には依頼元の あきしまおもちゃ病院様 から提供していただいた情報や資料が含まれている。

このおもちゃのCOB換装については 過去に修理事例 があるが、今回は依頼元でオリジナルの動作仕様を調べていただき、よりオリジナルに近い機能を実現することができた。

1.患者
赤外線リモコンで操作する汽車のおもちゃ(トイザらス)

メーカーの商品ページ
http://www.toysrus.de/product/index.jsp?productId=58895431&prodFindSrc=search&fv=TRUDE%2F3935011&f=Taxonomy&fd=&fg=&keywords=Licht+und+sound+lok&foreSeeEnabled=false
BRUIN(Licht und Sound Lok)(マイコン換装)事例2外観

2.症状
①全く動作しない。

3.診察(依頼元で実施)
①リモコンからは赤外線信号が出ている。

②本体の赤外線受信モジュールからは送信側と同じ信号が出ている。

③赤外線信号のデコード、音楽演奏、モーターとLEDの制御は1チップのCOBで実装されていて、これが働いていない。

④COBへの電源供給と赤外線信号の入力を確認して、COBの不良と判断した。

4.治療
【方策】
①不良となったCOBをPICで換装する。

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

①電源は単三乾電池3本(標準4.5V)

②モコンの操作ボタンと本体の動作の定義

・前進ボタン押下で前進し、離すと停止する。
・後進ボタン押下で後進し、離すと停止する。
・前進、後進の動作中はLEDを点滅し、停止中は点灯する。
・ホーンボタン押下で汽笛音(ポッポー)を鳴らす。

③煙突の操作と動作の定義

・本体の煙突を押すとその先のSWがオンし、電子オルゴールの1曲を演奏する。
・演奏中に煙突を押すと、演奏を中止する。
・電子オルゴールは10曲程度を収容し、ラウンドロビンに演奏する。
・曲目は1~2歳向けの童謡を希望。

④本体の電源制御

・電源SWの操作で本体の電源を入り切りする。
・10分間操作が無かったらオートパワーオフする。
・赤外線受信モジュールの電源制御を行う。
・電源SWをオフ/オンすることで再起動する。
・煙突を押すことでも再起動する。

⑤信号の定義

・赤外線エンコード信号は負論理で入力する。
・前進駆動信号と後進駆動信号はそれぞれのポートから正論理で出力する。
・LED信号は1ポートに負論理で出力する。
・LEDの初期状態は点灯。オートパワーオフ時は消灯する。
・音声信号(PWM)は正極性で出力する。
・赤外線受信モジュールの電源制御信号は負論理で出力する

⑥赤外線信号のプロトコル

・フレームと機能コードは 前回の事例 と同じ。

⑦換装に伴う回路の変更

・依頼元から提示された回路図
BRUIN(Licht und Sound Lok)(マイコン換装)事例2回路図

【設計】
ファームウェアの開発は つつじが丘おもちゃ病院(当院) で実施した。

①電子オルゴールVer5_6をベースに、固有の処理を作り込む。

②ターゲットデバイスの選定

・必要ポート数は7本で少ないが、汽笛音がメモリを喰う。
・コストパフォーマンスの良い16F1705(@100円、2017年秋月)を前提とすると、オルゴールエンジン部で1kワード、10曲分の曲データで2.6kワード、初期化や固有処理等で0.5kワードを見込むと合計4.1kワード程度が必要であり、残り3.9kワードが汽笛音に充てられる。
・8kspsで記録すれば0.9秒になる。これで納められるか開発しながら検証することにして、16F1705に仮決めして進める。

③ポートの割り当て

;RA0:ICSPDAT(入力モード、内部プルアップ)
;RA1:ICSPCLK(入力モード、内部プルアップ)
;RA2:PWM3出力(正極性)
;RA3:ICSPVpp(入力モード、内部プルアップ)
;RA4:煙突SW入力(負論理)(内部プルアップ)
;RA5:デバグ用TX出力(非デバグ時は入力モード、内部プルアップ)
;RC0:IR信号入力(負論理)
;RC1:前進出力(正論理)
;RC2:後進出力(正論理)
;RC3:LED出力(負論理)
;RC4:IR受信モジュール電源制御出力(負論理)
;RC5:未使用(入力モード、内部プルアップ)

④赤外線信号のデコード

・PWM周期(TMR2)の割込みで赤外線信号をポーリングする。PWM周期は32usとし、赤外線信号のパルス巾に対して十分な分解能を持つことができる。
・赤外線信号のオン、オフ共に128us以上の信号レベル継続で有効とする。
・赤外線のオフのパルス巾を評価してデコードを行う。
 5ms以上でフレームの開始とする。
 3~5msでビット値を1とする。
 3ms以下でビット値を0とする。
・8ビットを受信した時点で機能コードと照合し、該当の機能を実行する。

⑤モーターの制御

・前進/後進の機能コードは、リモコンの前進/後進ボタンを押下している間はフレーム周期90msで連続して送信される。
・前進/後進の機能コードを受信すると前進/後進のモーター制御信号をオン出力し、100ms後にオフする。フレームの繰り返し周期が約90msであるので、前進/後進ボタンを押し続けると、モーター制御信号は途切れることなくオン出力される。
・前進と後進が切り替わるときは最低10msの停止時間を設けて、Hブリッジの貫通電流の発生を防止する。

⑥LEDの制御

・前進/後進のモーター制御信号をオン出力している間は、周期1.2s、デューティ50%でLEDを点滅する。

⑦汽笛音の音声再生

・ホーンの機能コードは、リモコンのホーンボタンを押下する毎に1フレームのみが送信される。
・ホーンの機能コードを受信すると汽笛音を3回繰り返し再生する。
・汽笛音を再生中にホーンの機能コードを受信すると、再生済み回数をリセットして、その後に3回再生を繰返す。
・汽笛音は依頼元からmp3で支給され、当方にてPCMデータを作成した。
・汽笛音は1.1秒あり、サンプリングレートを6.3kspsに落として、16F1705のメモリに収容できた。6.3kspsでも良い音で再生できている。

⑧電子オルゴール演奏の制御

・煙突のSWがオンすると、非演奏中の場合は曲番号を進めて演奏を開始し、演奏中の場合は演奏を中止する。
・最初の演奏曲は曲番号1番とする。
・煙突のSWのチャタリング対策として、SWの読み込みは固有処理のコールバック周期の10ms毎に行い、オフ状態が70ms以上続いた後にオンとなった場合に、操作を有効とする。

⑨汽笛音と電子オルゴールの同時発声

・つつじが丘の電子オルゴールエンジンは音声再生とオルゴール演奏を同時に鳴らすことができるようになっている。
・D/A変換での音質を担保するためには、それぞれの出力レベルを最大限大きくしておくことが重要だが、そうすると両者の音が重なると出力レベルが飽和してしまう。
・それを避けるために、汽笛音を鳴らすときには電子オルゴール音のレベルを1/2にして出力レベルが飽和しないようにする。
・この処理は、電子オルゴールエンジンのAPI「MUTE_SET」を利用する。

【発声音】
100円のマイコンでここまでできるということを認識していただき、故障したCOBのマイコン換装でおもちゃ修理の範囲を広げて行って欲しい。
発声音はこれ

再生できない場合は、ダウンロードファイル中のmp3ファイルをお聴き下さい。

【ダウンロード】
開発したファームウェアと設計資料は ここから ダウンロードできる。

プロジェクトは BRUIN_Lok_PIC1705.X
ソースコードは BRUIN_Lok_PIC1705.asm
TX はテスト用のリモコン側のファームウェアである。

【ファームウェアの解説】
オルゴールエンジンを使えば、アプリケーションの固有の処理のみをコールバック関数として記述するだけで、簡単にファームウェアを開発することができる。

このおもちゃの機能要件では電子オルゴールの演奏、効果音の音声再生、赤外線信号のデコード、機能コード対応の制御、モーターとLEDのタイマー処理、およびそれらのコンカレント実行を実現する必要がある。

これらをゼロから作り始めると相当な開発期間が掛かってしまうが、今回の開発規模はたったの300ステップで、数日で完成させることができた。その内容を以下に解説する。

①赤外線信号のデコード

・エンジン部のPWM周期(TMR2)の割り込み処理から固有の割り込み処理をコールバックすることを宣言する。

BRUIN(Licht und Sound Lok)(マイコン換装)事例2解説1

・固有の割り込み処理(コールバック関数)で赤外線信号をデコードする。

BRUIN(Licht und Sound Lok)(マイコン換装)事例2解説2

BRUIN(Licht und Sound Lok)(マイコン換装)事例2解説3

②オートパワーオフの制御

・固有の処理(コールバック関数)で、無操作の時間を計測し規定の期間に達すると動作を停止させ、Sleepする。
・Sleep前に、赤外線受信モジュールからの入力ポートを出力モード設定にしてLを出力しておく。入力モードのままにしておくとポートの電位が定まらないため、Sleep時の消費電流が増大する。
・また、煙突SWの立下りでWakeUpするように、IOC割込みを許可しておく。
・WakeUpしたら、reset命令で再起動する。

BRUIN(Licht und Sound Lok)(マイコン換装)事例2解説4

③電子オルゴールの演奏制御

・固有の処理(コールバック関数)で、煙突SWがオンしたら電子オルゴールの演奏を制御する。

BRUIN(Licht und Sound Lok)(マイコン換装)事例2解説5

④機能コード対応のおもちゃの制御

・固有の処理(コールバック関数)で受信した機能コードに対応する処理を行う。

BRUIN(Licht und Sound Lok)(マイコン換装)事例2解説6

⑤モーター稼働のタイマー制御

・前進または後進の操作が切れたときに100ms後にモーターを停止する。
・固有の処理(コールバック関数)の続きで処理を行う。

BRUIN(Licht und Sound Lok)(マイコン換装)事例2解説7

⑥前進または後進の動作中のLED点滅制御。

・デューティ50%周期1.2秒でLEDを点滅させる。
・固有の処理(コールバック関数)の続きで処理を行う。

BRUIN(Licht und Sound Lok)(マイコン換装)事例2解説8

⑦汽笛音の繰り返し再生の制御

・音声再生終了処理(コールバック関数)で繰り返し再生回数をチェックして、回数残があれば、続けて音声再生を起動する。

BRUIN(Licht und Sound Lok)(マイコン換装)事例2解説9

【評価】
依頼元で実装と評価をしていただき、結果は良好との連絡をいただいた。

関連記事
スポンサーサイト
  1. 2017/12/07(木) 22:12:17|
  2. マイコン換装
  3. | コメント:0
<<アンパンマン電動レールでGO!GO!DX(マイコン換装)事例3 | ホーム | PIC電子オルゴールVer5_6で(糸魚川)Dr.渡辺氏の曲目を追加 (第2弾)>>

コメント

コメントの投稿


管理者にだけ表示を許可する

プロフィール

大泉茂幸

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

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

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

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

カテゴリ

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

最新記事

最新コメント

月別アーカイブ

訪問者数

検索フォーム

RSSリンクの表示

リンク

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

ブロとも申請フォーム

この人とブロともになる

QRコード

QR