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

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

赤外線リモコンモニタの製作

家電品の赤外線リモコンの信号をモニタするツール

【経緯】
赤外線リモコンのおもちゃで送信機が壊れたり紛失したりしたときに、家電品の赤外線リモコンで代用することがある。
その場合、送信側の信号フォーマットに受信側のデコーダを合せる必要があり、送信機の赤外線信号を調べなければならない。
その都度波形を観測して調べるのは手間がかかるので、自動的に分析して信号の内容を表示してくれるツールを作った。

【特徴】
①信号フォーマット(NEC、家電協、SONYなど)を自動判別する。
②信号コードをキャプチャして、リアルタイムでPCへシリアル送信する。
③PC側ではTeraTermなどの通信ソフトでモニタからのキャプチャデータを表示する。

【全体像】
赤外線モニタ全体像
上記の画像中のボードは、赤外線関係の開発用ボードで、下記の回路図に記載された以外の部品も搭載されている。

【回路図】
赤外線モニタ回路図

【ファームウェア】
本モニタのファームウェアの機能は以下のとおり。
①リーダー部を検出し、その長さで信号フォーマットを判別する。

②信号フォーマットに応じて、データ部の信号コードを4ビット単位にキャプチャする。

③トレイラを検出する。

④信号ブランクの時間を計測する。

⑤モニタした結果はリアルタイムにPCへシリアル送信する。

【モニタ結果の見方】
赤外線モニタ見方

【ダウンロード】
設計資料とファームウェアの開発プロジェクトは ここから ダウンロードできる。
スポンサーサイト
  1. 2015/05/23(土) 23:39:13|
  2. 製作記事
  3. | コメント:0

メガザウルスの修理(赤外線デコーダ改造)

1.患者
メガザウルス(トイザらスオリジナル商品の赤外線リモコンの恐竜おもちゃ)
メガザウルスの修理(赤外線デコーダ換装)外観

2.症状
①赤外線リモコンで操作するおもちゃだが、送信機が無くて動かせられない。送信機は壊れて廃棄した、とのこと。

②TryMeのボタンを押すと首を振って吠える。目のLEDも点灯する。

3.診察
①ネットで検索するとトイザらスの商品ページが出てきた。このおもちゃはトイザらスオリジナル商品で下記の説明があった。

商品:赤外線リモートコントロール メガザウルス IR T-Rex
説明:コントローラーの右ボタンを押すと、恐竜独特の『ゴーゴー』という鳴き声を出しながら、目を赤く光らせて歩きます。左のボタンを押すと、首を回しながら迫力ある鳴き声を出します。

②送信機以外に故障個所が無いかの確認と合理的な改造方法を検討するため、先ずは分解して構造を把握する。
メガザウルスの修理(赤外線デコーダ換装)診察1
メカは「歩く」と、「首」の2系統だ。

メガザウルスの修理(赤外線デコーダ換装)診察2
小さいプリント基板で制御されている。ところで、「プリント基盤」と書かれているのをよく見かけるが、「プリント基板」が正しい。

③プリント基板を診る。
メガザウルスの修理(赤外線デコーダ換装)診察3

メガザウルスの修理(赤外線デコーダ換装)診察4
COBチップが搭載されていて、これが全体の制御を行っているようだ。ところで、「TOB」と書かれているのを見かけるが、チップ・オン・ボード(Chip On Board)の略称で「COB」が正しい。

メガザウルスの修理(赤外線デコーダ換装)診察5

メガザウルスの修理(赤外線デコーダ換装)診察6

信号名がシルク印刷されていて、診易い基板だ。見た目に綺麗なものは品質も良い傾向がある。ソフトも同じで、綺麗なソースコードにはバグが少ない。(これ蛇足)

基板のパターンを追いかけて判ったこと。
・COBチップで赤外線デコードとメカ制御、LED制御、音声再生を行っている。

・音声はCOBチップからのBTL出力で直接スピーカーを駆動している。

・電池3本の4.5VがVccで、モータードライブ回路の電源になっている。

・基板上の3端子レギュレータ6206A/30でVccの4.5Vを3.0Vに落として、マイコン回路のVddを供給している。

・R2が「歩く」メカの制御信号で正論理。これをQ5と8550でモーターを駆動している。

・R3が「首」メカの制御信号で正論理。これをQ3と8550でモーターを駆動している。

・「目のLED」はマイコンから直接駆動されていて、正論理。

・TryMeのボタンはマイコン回路のVdd側に配置されていて、正論理。COBチップ内でプルダウンされている。

・赤外線受信モジュールは2個並列接続されてCOBチップへ入っている。

③電子回路とメカの動作確認を行った。
・Q5のベースに信号を入れると「歩く」メカが動作し、「歩く」系統の回路は正常だ。

・TryMeのボタンを押すと「首」メカが動作し、「目のLED」が点灯し、「吠え声」もする。これらの回路も正常だ。まぁ、この機能は来院時に動いていたものだ。

④受信側の電子回路とメカは正常で、送信機が無いだけの問題だ。

4.治療
①送信機を用意すればよい訳だが、信号フォーマットを受信側と合わせる必要がある。受信側のCOBチップは型番等が不明で信号フォーマットが判明しない。そこで送信機は家電用赤外線リモコンのジャンクを再利用して、送信機の信号フォーマットに合わせて受信側を改造することにする。新規に送信機を作るのはケース加工等の工作が非常にメンドイしコストも掛かるので、ジャンク品の再利用が得策だ。

②【設計】
・「吠え声」の音声再生機能がCOBチップに含まれているのでCOBチップはそのまま利用する。「吠え声」以外の機能も殺さず生かしておく。基板の改造を避けるためだ。従って、正規の送信機があれば、元の通りに操作可能である。

・家電用赤外線リモコンでも操作できるように、PICでデコード機能を追加する。本記事のタイトルは「デコーダ改造」としているが、厳密には「デコーダ追加」である。

・既存の制御信号とPICからの制御信号がぶつからないように、ワイヤードORの結線で追加する。

・「吠え声」をトリガするにはTryMeのボタンを利用するしかない。現状ではTryMeボタンで「吠え声」と同時に「首」と「目のLED」も動作するが、これらを独立して制御する意味はあまりないと考え、改造後はリモコンでTryMeボタンを押下するイメージとする。これでプリント基板の改造は不要になる。

・PICへの入力は赤外線受信モジュールからの赤外線信号のみである。これは既存回路のとおり負論理で受ける。PIC側ではプルアップしない。

・PICからの出力は「歩く」と「TryMeトリガ」の2つの制御信号を出す。

・「歩く」の制御信号は既存回路のとおり正論理で出力する。1kΩを通してQ5のベースに入れることでCOBチップからの制御信号とワイヤードORにする。

・「歩く」はPWMによる3段階の速度制御を行う。これは元々には無い仕様だが、折角PICで換装するので機能アップしてあげる(これ蛇足)。デューティは50%、83%、100%の3段階とする。

・「TryMeトリガ」の制御信号はTryMeのボタンと並列にして正論理でCOBチップへ入れる。信号をLにしたいときは、PICからはLを出力しないでHigh-ZとすることでワイヤードORにする。PIC側ではプルダウンしない。

・TryMeボタンは元々手動で操作するものなので、「TryMeトリガ」の制御信号の継続時間は0.5秒程度とする。

・リモコンの操作は「歩く」と「TryMeトリガ」の2つとする。

・「歩く」は3段階の速度制御を行うため、リモコンの2つのボタンを割り当てて1つは増速、もう1つは減速を指示する。

・「TryMeトリガ」はリモコンの1つのボタンを割り当てる。

③【回路】
・PICは所要機能とコストの観点から12F509-I/P(2015年秋月価格50円)を採用した。

・内蔵4MHzクロックを利用し、外付け部品は電源パスコンのセラミ103と「歩く」信号をQ5のベースに入れるための抵抗1kΩ1本のみ。

・組み付け後にも調整のためファームウェアの書き換えを可能とするよう、ICSP用ピン(GP0、GP1、GP3)はターゲットには繋がず、オープンにしておく。そのため、ポートは以下の割り当てにした。
 GP5:「歩く」制御信号
 GP4:「TryMeトリガ」制御信号
 GP2:赤外線受信モジュールからの入力

・「歩く」モーターにフライホイールダイオードが付いていなかったので、今回PWM制御するようにしたことから装着する。

④送信機は、偶々在庫していたHITACHIのジャンク品を改造無しで使う。
メガザウルスの修理(赤外線デコーダ換装)治療1

ボタンと機能の割当ては以下のとおりとした。
チャンネルUP:「歩く」の増速
チャンネルDOWN:「歩く」の減速
入力切替:「TryMeトリガ」

このリモコンの信号フォーマットはIrモニター(自作ツール)で分析した。自動的に信号フォーマットを切り分けて信号コードの分析結果をシリアルでPCへ送信する。PC側ではTeraTermで分析結果を表示する。
【Irモニター】
メガザウルスの修理(赤外線デコーダ換装)治療2

【分析結果】
メガザウルスの修理(赤外線デコーダ換装)治療3

信号フォーマットはNECフォーマット、機能コードは以下のとおりであった。
チャンネルUP:0x98。
チャンネルDOWN:0x18。
入力切替:0x2c。

⑤【ファームウェア開発】
・「百均プラレールの赤外線リモコン化」で製作したファームウェアが今回の要件にマッチしているので、それをベースに必要最小限のカスタマイズを行った。元々はフルブリッジのPWM制御の機能になっていて、今回のカスタマイズの結果、無用なコードが多数残っているが敢えて整理はしない。

・カスタマイズ項目は以下のとおり。
 ポート割り当ての変更
 PWMタイマーカウント値の変更
 速度制御値の変更
 機能コードの追加・変更
 TryMeトリガ出力機能の追加

・PWM信号(「歩く」の制御信号)の実測波形を以下に示す。
速度0
メガザウルスの修理(赤外線デコーダ換装)治療4

速度1
メガザウルスの修理(赤外線デコーダ換装)治療5

速度2
メガザウルスの修理(赤外線デコーダ換装)治療6

速度3
メガザウルスの修理(赤外線デコーダ換装)治療7

⑥【実装】
PICはピンをリード線で配線する。
メガザウルスの修理(赤外線デコーダ換装)治療9

メガザウルスの修理(赤外線デコーダ換装)治療10

フライホイールダイオードを取り付ける。
メガザウルスの修理(赤外線デコーダ換装)治療11

「歩く」信号入力用抵抗(1kΩ)をQ5のベースに装着する。
メガザウルスの修理(赤外線デコーダ換装)治療12

マイコンのリード線を基板に配線する。
メガザウルスの修理(赤外線デコーダ換装)治療13

メガザウルスの修理(赤外線デコーダ換装)治療14

メガザウルスの修理(赤外線デコーダ換装)治療15

メガザウルスの修理(赤外線デコーダ換装)治療16

⑦動作テストの結果は良好。
・「歩く」増速
・「歩く」減速
・「TryMeトリガ」動作
・「歩く」とTryMeの同時実行
3段階の速度制御は、速度の変化がちょうど良い感じだ。

⑧リード線の配線とPICをホットボンドで固定して、修理完了。
メガザウルスの修理(赤外線デコーダ換装)治療17

5.ダウンロード
製作したファームウェアの開発プロジェクトは ここから ダウンロードできる。
波形や画像のファイルも含んでいるので、より鮮明に確認できる。
  1. 2015/05/23(土) 18:09:56|
  2. 修理事例
  3. | コメント:0

PIC電子オルゴールVer5(音源とエンベロープの波形データ化)

【前振り】
お馴染みのPIC電子オルゴールの機能改善だが、今回は音源とエンベロープの波形データ化を行った。

<従前の方式>
音源は50%デューティの矩形波で、その周期を音高に従って変化させることで音階を表現していた。

<今回の方式>
音源波形をPCMデータで記録しておき、その再生速度を音高に合せて変化させることで音階を表現するようにした。サンプラー式シンセのようなものだ。エンベロープ波形もPCMデータで記録し、再生するようにした。

音源とエンベロープの波形データ化は、 LPC電子オルゴール では既に実現していたのだが、PIC16では乗算命令が無いので処理が追いつかないと諦めていた。

【設計】
8ビットの乗算をソフトでやると32MHzクロックでも12usほど掛かる。オルゴールの演奏出力の計算は21us周期で行なう必要があるため、パート毎に1回の乗算としても2パート分の処理ができないことになる。

しかし、この判断は間違っていることに気が付いた。

演奏出力の計算を21us周期でやることにした理由は、実際に演奏させて音色が劣化する限界が20usを超えた辺りからだったことによる。音高の最大値を2KHzとし、その5次高調波までを発声させるとすれば、帯域は10KHzになる。これをDA変換で再現するにはサンプリングレートは20Kspsが必要となり、その周期は50usになる。ナイキスト定理では50usでよいハズだが、実際には20usを超えると音色が劣化してくるのは何故か。

音源をキレイな矩形波にしているため、音源は5次を超える高調波成分を多量に含んでおり、折り返しノイズが現れているものと考えられる。だから、音源を波形データ化して、5次を超える高調波成分を含ませないようにすれば、演奏出力の計算周期の許容値は50usになるのではないか、と考えた。音源を波形データ化すると演算負荷は増えるが、処理時間の許容値は緩和される訳だ。

矩形波のフーリエ級数展開は
PIC電子オルゴールVer5(音源とエンベロープの波形データ化)フーリエ矩形波1

これを5次高調波成分までに絞ってグラフに表すと以下のようになる。
PIC電子オルゴールVer5(音源とエンベロープの波形データ化)SQUARE

その他の音源波形は以下のとおり。
のこぎり波(5次高調波まで)
PIC電子オルゴールVer5(音源とエンベロープの波形データ化)SAW

正弦波(基本のみ)
PIC電子オルゴールVer5(音源とエンベロープの波形データ化)SIN

正弦波(基本+4次高調波)
PIC電子オルゴールVer5(音源とエンベロープの波形データ化)SIN14

正弦波基本と3次高調波とのリング変調
PIC電子オルゴールVer5(音源とエンベロープの波形データ化)RING3

正弦波基本と4次高調波とのリング変調
PIC電子オルゴールVer5(音源とエンベロープの波形データ化)RING4

正弦波基本と5次高調波とのリング変調
PIC電子オルゴールVer5(音源とエンベロープの波形データ化)RING5

Fosc=32MHz、TMRクロック8MHzでPWMサイクルを256カウントにするとPWM周期は32usとなる。このくらいなら可聴周波数を超えているのでよいだろう。これを2分周した64usを演奏出力の計算周期とした。64usあれば、2パート演奏には足りるであろう。帯域を逆算すると7.8KHz、これを5次高調波とすると基本波は1.5KHzになる。実際に演奏させるとLPC電子オルゴール並のいい感じの音色が出た。

そうすると欲が出てきて、3パート演奏させてみたら処理が追い付かずNGだった。しかし、演奏出力の計算周期をPWM周期の3倍の96usにしたらOKになった。サンプリングレートが10Kspsに落ちて帯域が5KHzになった訳だが、音の劣化は感じられなかった。

4パート演奏は、BANK0に4パート分のデータを収容し切れず実装できなかった。
PICはデータメモリが分断されていて、データを分散配置すれば4パート以上のデータも収容可能になるが、CPUも足りないしそこまではやる気がしない。

<従前の方式>
PWM周期=21us 演奏出力の計算周期=42us

<今回の方式>
PWM周期=32us 演奏出力の計算周期=64us
メモリとCPUを節約するため、音源波形は256サンプル、エンベロープ波形は64サンプル固定とした。

処理タイミングの観点では性能が悪くなっているのだが、音質面では格段に良くなった。

今回の方式では演奏パート数を多くできないが、実際に演奏音を聴き比べるとパート数よりも音質の方が重要であると感じた。パート数と音質を両立させたいなら LPC電子オルゴール を使って欲しい。

<PIANOサンプリング音源>
LPC電子オルゴールで実現していた生ピアノのサンプリング音源をPIC用に作った。下図の波形の1周期分のPCMデータで音源テーブルを作る。

生ピアノ音源波形(C3)
PIC電子オルゴールVer5(音源とエンベロープの波形データ化)PINO_C3

生ピアノ音源波形(C2)
PIC電子オルゴールVer5(音源とエンベロープの波形データ化)PINO_C2

【サンプル演奏】
<従前方式との音色の比較(大きな古時計)>
従前方式(Ver4)での演奏(真に四角い矩形波音源)

今回方式(Ver5)での演奏(5次高調波までの矩形波音源)

今回方式(Ver5)での演奏(基本+4次の正弦波音源)

<音色のバリエーション(アンニローリー)>
矩形波(5次高調波まで)音源

のこぎり波(5次高調波まで)音源

正弦波(基本のみ)音源

正弦波(基本+4次高調波)音源

正弦波基本と3次高調波とのリング変調音源

正弦波基本と4次高調波とのリング変調音源

正弦波基本と5次高調波とのリング変調音源

ピアノサンプリング音源

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

ターゲットのPICは、秋月で廉価に販売されているものをプログラムフラッシュの大きさによって使い分けている。

12F1822 2Kワード @100円(2015年5月秋月価格)
16F1705 8Kワード @110円(2015年5月秋月価格)

開発環境は、基本はMPLABを使っている。MPLABXは処理が重たいのとシミュレーションデバグが旨く動かないことがあったりして、敬遠している。しかし、16F1705はMPLABでは非サポートなので、これはMPLABXを使っている。
MPLABXv2.35を使っているが、16F1705のリンカースクリプトがデフォルトでは4Kワードを超えるリンクができなかった。ダウンロードファイルには8Kワードを連続してユーザアプリで使えるようにしたリンカースクリプト「16f1705_g.lkr」が含まれているので、外さないで使って欲しい。

ファイルの構成については「orgel5\ドキュメント\PIC電子オルゴールreadme.txt」を参照。
  1. 2015/05/08(金) 23:46:20|
  2. 製作記事
  3. | コメント:0

プロフィール

大泉茂幸

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

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

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

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

最新記事

最新コメント

月別アーカイブ

カテゴリ

おもちゃ病院 (7)
技術情報 (9)
修理事例 (143)
製作記事 (77)
ドクター研修会 (2)
PIC開発 (9)
未分類 (9)

訪問者数

検索フォーム

RSSリンクの表示

リンク

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

ブロとも申請フォーム

この人とブロともになる

QRコード

QR