FC2ブログ

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

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

BRUIN(Licht und Sound Lok)の修理(マイコン換装)

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

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

メーカーの商品ページ
BRUIN(Licht und Sound Lok)(マイコン換装)外観

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

3.診察(依頼元で実施)

①リモコンからは赤外線信号が出ている。

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

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

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

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

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

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

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

・前進ボタン押下で前進し、離すと停止する。
・後進ボタン押下で後進し、離すと停止する。
・前進、後進の動作中はLEDを点滅し、停止で消灯する。
・音楽ボタン押下で電子オルゴールの1曲を演奏する。
・電子オルゴールは5曲を収容し、ラウンドロビンに演奏する。
・演奏中に音楽ボタンを押下すると、演奏を中止する。
・電子オルゴールの収容曲は演奏順で以下のとおり。
 1.ミッキーマウスマーチ
 2.犬のおまわりさん
 3.ぞうさん
 4.ぶんぶんぶん
 5.どんぐりころころ

③信号の定義

・赤外線信号は負論理で入力する。
・前進信号と後進信号はそれぞれのポートから正論理で出力する。
・LED信号は1ポートに正論理で出力する。
・音声信号(PWM)は正極性で出力する。

④電源制御

・外部の電源SWで電源供給を制御する。
・省電力設定は不要。

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

・フレーム
BRUIN(Licht und Sound Lok)(マイコン換装)フレーム

・機能コード
BRUIN(Licht und Sound Lok)(マイコン換装)機能コード

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

①電子オルゴールVer5_6をベースに、固有の処理を追加する。

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

・必要ポート数は5本で少ないが、メモリはオルゴールエンジン部で1kワード、5曲分の曲データで1.3kワード、初期化や固有処理等で0.3kワードを見込むと合計2.6kワード程度が必要であり、最廉価な16F1705(@100円、2017年秋月)を採用する。

③ポートの割り当て

;RA0:COG1A出力(負極性)、ICSPDAT
;RA1:ICSPCLK
;RA2:PWM3出力(正極性)
;RA3:Vpp
;RC0:IR信号入力(負論理)
;RC1:前進出力(正論理)
;RC2:後進出力(正論理)
;RC3:LED出力(正論理)
;RC5:TX(デバグ用)

④赤外線信号のデコード

・PWM周期(TMR2)の割込みで赤外線信号をポーリングする。PWM周期は32usであり、赤外線信号のパルス巾に対して十分な分解能を持つことができる。

・赤外線信号のオン、オフ共に128us以上のレベル継続で有効とする。

・赤外線のオフのパルス巾を評価してデコードを行う。

 5ms以上でフレームの開始とする。
 3~5msでビット値を1とする。
 3ms以下でビット値を0とする。

・8ビットを受信した時点で機能コードと照合し、該当の機能を実行する。

⑤モーターの制御

・前進、または後進の機能コードを受信すると前進、または後進のモーター制御信号を出力し、100ms後に出力を止める。フレームの繰り返し周期が約90msであるので、前進ボタン、または後進ボタンを押し続けると、モーター制御信号は途切れることなく出力される。

・前進と後進が切り替わるときは、10msのデッドタイム(全停止)を設ける。

⑥LEDの制御

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

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

・演奏の機能コードを受信すると、非演奏中の場合は曲番号を進めて演奏を開始し、演奏中の場合は演奏を中止する。

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

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

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

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

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

①赤外線信号のデコード

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

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

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

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

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

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

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

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

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

・前進または後進の操作が切れたときに100ms後にモーターを停止する。

・固有の処理(コールバック関数)の続きで処理を行う。

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

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

・デューティ50%周期1.2秒でLEDを点滅させる。

・固有の処理(コールバック関数)の続きで処理を行う。

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

【評価】
依頼元で評価をしていただいた。

・要件通りに機能を確認した。

・実際におもちゃのCOBに換装して、動作確認した。
スポンサーサイト
  1. 2017/10/24(火) 15:25:17|
  2. マイコン換装
  3. | コメント:0

27MHz~2.4GHz対応RFチェッカー(ラジコン電波検知器)表示部の省電力化(第2弾)

27MHz~2.4GHz対応RFチェッカー(ラジコン電波検知器) の頒布を始めて2か月が経ち、頒布先から色んなフィードバックをいただいている。その中で多かったのが、「省電力化」の要望だ。小型化するためにボタン電池を使っているケースが多いようだ。それで、今回はRFチェッカーの省電力化の第2弾を行う。


前回改善の振り返り】
WDTによる1ms周期の間欠動作をさせることで、LT5534を使ったRFチェッカーでは、消費電流は 16mA から 5mA に低減できた。

しかし、1ms周期はかなり長く、間引き動作しているのが見えてしまう。トイラジコンの送信時間は短いもので200us程度しかないので、間欠動作時間をそれ以下にしないとピーク値の取りこぼしが発生する可能性がある。

【改善策】
WDTのタイムアウトによるWakeUpに代えて、外部に時定数回路を設けてWakeUpのタイミングをとる。

具体的なやり方は

・RC3~GNDにコンデンサを繋ぐ。

・Sleep直前に放電させる。

・Sleep中に内部プルアップにて充電させる。

・IOC割込みでWakeUpさせる。

4xPLLはスタートアップに2msも掛かるので採用できない。今回はHFINTOSCの16MHzを採用した。HFINTOSCのスタートアップタイムは最大8usだ。

HFINTOSCの立ち上がり時の様子を観測すると、起動後32usくらいは周波数がふら付くが16MHzを超えることは無いことが判ったので、ADCクロックはFosc/16(周期は1us)の設定で行くことにした。

【改善結果】
・間欠動作の周期は約120usにした。

・消費電流はRFデテクタ(LT5534使用)とCPUを合わせて 2mA 、バーLEDを加えた全体では 6mA になった。

【回路図】
RFデテクタ部(LT5534)
RFチェッカー表示部の省電力化(第2弾)LT5534回路図

RFデテクタ部(AD8314)
RFチェッカー表示部の省電力化(第2弾)AD8314回路図

表示部
RC3に外部の時定数回路を構成している。
RFチェッカー表示部の省電力化(第2弾)表示部回路図

【ファームウェア】
ファームウェアのプロジェクトは ここから ダウンロードできる。

プロジェクト名は以下のとおり。
LT5534用(FVR=2.048V) は RFchecker3_FVR2_1705
AD8314用(FVR=1.024V) は RFchecker3_FVR1_1705

【動作タイミングの検証】
RFチェッカー表示部の省電力化(第2弾)動作タイミング検証
RFデテクタOUTの立上りとADCアクイジションで約15usが確保されている。
  1. 2017/10/16(月) 19:16:44|
  2. 2.4GHzラジコン
  3. | コメント:0

2.4GHzラジコン用ファームウェアの開発(SE8R01)

この記事はトランシーバモジュール 「SE8R01」 を使ったものだ。 「nRF24L01+」 を使ったものは こちら


【当初のブログアップからの追加情報】
おもちゃ病院 新津(新潟)」様 が本ファームウェアを利用して、実際のラジコン修理で送受信機の換装を行った。換装作業の状況と動作確認の結果は、彼の ブログ記事 で詳しくレポートされている。限られたスペースに格納するため表面実装で細かい工作をされていて、いつも感心させられる。結果は 「30m前後まで完璧に動作した」 とのことだ。

2.4GHzラジコンの修理については今年(2017年)春から、RFチェッカーの検討と合わせて、彼と2人3脚で進めてきたプロジェクトだ。それが良好な結果を以って完了し、おもちゃ病院業界での2.4GHzラジコンの修理の道筋をつけることができた。

当初はトランシーバの種類(SE8R01とnRF24L01+)で使い方が異なっていたため、別のファームウェアとして開発していたが、現在はそれらを統合して、SE8R01用のファームウェアで両方のトランシーバを区別なく使えるように改善している。

統合版のファームウェア を使って、フルアクション制御とプロポ制御が実演できる デモボード を作った。

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
【前振り】
2.4GHzのラジコンはRF部分とエンコーダ/デコーダ部分が一体化して1個のCOBで実装されているものが多い。こうなると故障部位のみを修理することができず、全体を換装することになってしまう。また、RFモジュールが別物になっていても、インタフェースが不明なので結局は全体を換装せざるを得ないことになる。更に問題なのは、コントローラ側と本体側の双方を同じタイプのトランシーバモジュールで、且つ同じプロトコルのファームウェアで換装しないと通信できないことだ。それでコストが多大になり、修理することができなかった。

しかし、最近は2.4GHzのトランシーバモジュールが安く出回るようになってきたので、比較的低コストで全体を換装できる可能性が出て来た。そこで、2.4GHzラジコン用のファームウェアの評価版ができたので、みんなでブラシアップして行きたいと思う。評価結果やコメント、改善提案などをいただきたい。

【構成】
2.4GHzトランシーバモジュールは応用事例が多く比較的廉価な SE8R01 (2017年9月時点で@40円くらい)を採用した。
こんなに廉価に入手出来るので、レガシーバンドのラジコンの場合でもディスクリート部品で作るよりこれで換装した方が安くつく。

DIPタイプ(表)
2400MGHzラジコン用ファームウェア(SE8R01)外観2

DIPタイプ(裏)
2400MGHzラジコン用ファームウェア(SE8R01)外観3

DIPタイプ(ピン接)
2400MGHzラジコン用ファームウェア(SE8R01)DIPタイプピン接

SMDタイプ(表)
2400MGHzラジコン用ファームウェア(SE8R01)外観4

SMDタイプ(裏)
2400MGHzラジコン用ファームウェア(SE8R01)外観5

SMDタイプ(ピン接)
2400MGHzラジコン用ファームウェア(SE8R01)SMDタイプピン接

制御用のマイコンはポピュラーな 16F1503T-I/SL (2017年9月時点で@70円)を想定し、トランシーバモジュールとのインタフェース機能と、コントローラ側では操作スティックの読み取りとエンコード、本体側ではデコードとHブリッジへの信号出力を行う。デバグにはUARTを内蔵した 16F1705 を使っている。
2400MHzラジコン用ファームウェア(SE8R01)外観説明

コントローラ側と本体側のハード構成は同じで、搭載するファームウェアをコントローラ用と本体用に分けている。


【ファームウェアの機能】
前進/ターボ前進/後進、左折/直進/右折のフルアクションコントロール、または8chデジタルプロポーショナルコントロールを行う。どちらを実行するかは、送信側のSW操作によって決定し、受信側へ伝えられる。

ノーコン状態(0.2秒以上の無受信)になったら、フルアクションでは全停止、プロポーショナルではサーボを各ch毎に定義された停止位置に戻させる。

フルアクションでは、ボタン操作が無くなったときはSTOPコードを10回送信してSleepする。ボタン操作でWakeUpする。

フレームの送信時間は約110us、フレーム間隔は約17ms。

サーボ信号のパルス巾は1~255[10us]の範囲で設定可能であり、ボリューム可変範囲の設定も可能である。

サーボ信号の周期は20ms。

フルアクションでは、モーターの正転と逆転の間にデッドタイム(1ms)を確保する

ポートの割り当てはソースコード中のコメントを参照。

データ形式

・8chデジタルプロポに対応できるように、データペイロードは9バイトにしている。

・操作データのフォーマット
//バイト位置:内容
//0:制御タイプ(b7-4:0xa=フルアクション・0xc=プロポ、b3-0:ch番号)
//1:ch1制御値(フルアクション制御:b0=後進・b1=前進・b2=右折・b3=左折・b4=ターボ、プロポ制御:サーボパルス巾[10us])
//2:ch2制御値(フルアクション制御:0を設定、プロポ制御:サーボパルス巾[10us])
//3:ch3制御値(フルアクション制御:0を設定、プロポ制御:サーボパルス巾[10us])
//4:ch4制御値(フルアクション制御:0を設定、プロポ制御:サーボパルス巾[10us])
//5:ch5制御値(フルアクション制御:0を設定、プロポ制御:サーボパルス巾[10us])
//6:ch6制御値(フルアクション制御:0を設定、プロポ制御:サーボパルス巾[10us])
//7:ch7制御値(フルアクション制御:0を設定、プロポ制御:サーボパルス巾[10us])
//8:ch8制御値(フルアクション制御:0を設定、プロポ制御:サーボパルス巾[10us])

・無線通信としては9バイトのデータペイロードを伝送するだけなので、制御データの意味付け、使い方は個々の応用にて適宜決めればよい。

トランシーバモジュールの設定

・キャリブレーションとRF設定

 nRF24L01+ではこのような処理は要らなかったが、SE8R01ではこれを実行しないと動かない。データシートにはこの辺りの記述が見当たらず、先達の事例に倣って処理を行ったところ動き出した。複数の事例で内容が微妙に異なる部分があり、最終的には試行錯誤で完成に至った。確たる情報をお持ちの方はコメントをいただきたい。

・自動応答しない指定でのペイロード送信
 これは同一のキャリア周波数で 1:n の通信モデル(ブロードキャスト)を実現するため、個々の受信側が応答を返さない設定にしている。

・送受信アドレスは4バイト、「'S','R','C',0x01」に固定
 無闇に長くする必要性は無い。

・自動再送しない
 自動応答しない、と同じ理由による。

・チャネルは40(キャリア周波数は2440MHz)
 特に40にする意図はない。

・データレートは2Mbps
 実験の結果、飛距離はボーレートにあまり左右されなかったので、2Mbpsとした。

・CRCは2バイト
 特に2バイトにする意図はない。トランシーバにてCRCチェックが為されるので、ファームウェア側ではデータの正常性検証は行わない。

・RF送信レベルは+5dBm
 信号到達距離10mを確保するため、最大レベルを設定する。

パワーダウンモード

・コントローラ(送信機)に電源SWが無い場合への対応として、操作をしていないときはSE8R01をパワーダウンモードに設定して、PICはSleepする。このときの消費電流は22uAであった。

・コントローラが操作されるとPICがIOC割込みにてWakeUpし、SE8R01を送信モードに設定する。このときの消費電流の平均値は1mAであった。

【ダウンロード】
開発プロジェクトの一式は ここから ダウンロードできる。
プロジェクト名にTX/RXの区別とターゲットのデバイス名を織り込んでいる。

実際のおもちゃの修理では、色んな要件が被さってくると思うので、カスタマイズが必要であれば 「故障したICやマイコンの代替品をお作りするサービス」 で依頼をして欲しい。
  1. 2017/10/12(木) 17:57:24|
  2. 2.4GHzラジコン
  3. | コメント:0

27MHz~2.4GHz対応RFチェッカー(ラジコン電波検知器)表示部の省電力化

27MHz~2.4GHz対応RFチェッカー(ラジコン電波検知器) の頒布を始めて2か月が経ち、頒布先から色んなフィードバックをいただいている。その中で多かったのが、「省電力化」の要望だ。小型化するためにボタン電池を使っているケースが多いようだ。それで、今回はRFチェッカーの省電力化を行う。


【現状】
RFデテクタとCPUは常時稼働していて、表示部を合わせた消費電流は 16mA だ。

消費電流の内訳は以下のとおり。

RFデテクタ(LT5534使用) 10mA
バーLED 3mA
CPU 3mA


【省電力化の対策】
・RFデテクタはADCのアクイジションタイムの約4.62usだけ稼動させて、それ以外の時間は停止させる。

・メインループの周期を長くしてCPUを間欠的に動作させる。Sleep中にも稼働できるタイマーはWDTしか無く、その最短周期は 1ms だ。長過ぎる感がするが、仕方無く 1ms でやってみる。


【改善結果】
・RFデテクタ(LT5534使用)とCPUを合わせて 13mA 消費していたのが、 1mA になった。

・バーLEDの消費電流は、表示を切り替える時間の割合が減ったため 4mA になった。全体の消費電流は 16mA から 5mA への低減になった。LED電流を調整すれば、全体で 4mA にできる。

・メインループの周期を 13us から 1ms に長くしたことで、表示のちらつきが無くなった。バトロボーグのようにペアリングの周期が長い(200ms)ものでは間引きされているのがバレてしまうが、大半のコントローラの電波は違和感なく表示されている。


【課題】
・バーLEDが消費電流の大半を占めることになったので、更に改善するにはバーLEDを高輝度のものに替えるしかない。

・間欠動作させるので、電波の包絡線を音で聴くことはできない。また、レガシーバンドでのプロトコル分析もできなくなる。その用途でも使うためには、常時稼働させるモードが必要だ。


【回路図】
RFデテクタを間欠動作させるために LT5534のENピン、または AD8314のENBLピン を 16F1705 から制御する。

RFデテクタ部(LT5534使用)
RFチェッカー表示部の省電力化LT5534回路図

RFデテクタ部(AD8314使用)
RFチェッカー表示部の省電力化AD8314回路図

表示部
RFチェッカー表示部の省電力化表示部回路図


【ファームウェア】
ファームウェアのプロジェクトは ここから ダウンロードできる。

プロジェクト名は以下のとおり。
LT5534用(FVR=2.048V) は RFchecker2_FVR2_1705
AD8314用(FVR=1.024V) は RFchecker2_FVR1_1705


【後日談】
WDTの最短周期が1msであるため緩慢な動作になってしまうのを改善しようと画策した。

方策1 タイマーによるWakeUpは諦めて、外部の時定数回路を設けてWakeUpのタイミングをとる。

やり方は
・RC3~GNDにコンデンサを繋ぐ。
・Sleep直前に放電させる。
・Sleep中に内部プルアップにて充電させる。
・IOC割込みでWakeUpさせる。

結果、WakeUpしてからx4PLLが稼働するまでは8MHzのクロックで動作するため、稼働時間の短縮にはならず、メインループが200us程度でも、電源電流は8mAに留まった。

方策2 Sleepしないでダミーループによりメインループの周期を長くして、RFデテクタの稼働率を下げる。

メインループが100us程度でも、電源電流は7mAに留まった。


今回の改善方法は最善とは言えないので、今後も改善が続くと思われる。
  1. 2017/10/06(金) 13:28:08|
  2. 2.4GHzラジコン
  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