FC2ブログ

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

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

おしゃべりきらりんの修理(インダクタ端子破損)

1.患者
おしゃべりきらりん(Benesse)
おしゃべりきらりんの修理(インダクタ端子破損)外観1

おしゃべりきらりんの修理(インダクタ端子破損)外観2

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

3.診察
①基板には電池電圧が来ている。
おしゃべりきらりんの修理(インダクタ端子破損)診察1

②電源SW(タクトSW)には3Vが架かっていて、押下すると0Vになるので、SWは機能している。
おしゃべりきらりんの修理(インダクタ端子破損)診察2

③電源SWオンで、基板の3.3Vラインには0.3Vしか出て来ない。電源部の故障と思われる。
おしゃべりきらりんの修理(インダクタ端子破損)診察3

④電源昇圧回路はシリコン樹脂で覆われており、これを剥がさないと診察できない。カッターで少しずつ切り取っていく。
おしゃべりきらりんの修理(インダクタ端子破損)診察4

⑤シリコン樹脂を剥がしているときに、インダクタの半田が浮いているのを発見した。
おしゃべりきらりんの修理(インダクタ端子破損)診察5

おしゃべりきらりんの修理(インダクタ端子破損)診察6

⑥インダクタの端子は無くなっていた。そのままでは再度半田付けができないので、リード線で配線することにする。
おしゃべりきらりんの修理(インダクタ端子破損)診察7

⑦インダクタにリード線を付ける。
おしゃべりきらりんの修理(インダクタ端子破損)診察8

おしゃべりきらりんの修理(インダクタ端子破損)診察9
 接続を確認後にホットボンドで固めておく。

⑧基板へ配線する。
おしゃべりきらりんの修理(インダクタ端子破損)診察10

⑨電源SWオンで、オープニングが流れて、センサー内の赤外線LEDが点滅するようになった。基板の3.3Vラインには3.3Vが架かっていた。
おしゃべりきらりんの修理(インダクタ端子破損)診察11

⑩絵本にタッチすると正しく反応することが確認できた。

4.治療
①診察の過程で、インダクタを取り付け直したことで機能が回復した。

②インダクタをホットボンドで基板に固定する。
おしゃべりきらりんの修理(インダクタ端子破損)治療1

③ケースに収めて、最終的な動作確認をして治療完了した。

5.おまけ
①診察のついでにセンサーの信号を観測した。結果は別資料 「 おしゃべりきらりんセンサー波形 」 を参照。

②「アンパンマンことばずかんDX」と同様にこれもプロセッサーのクロックを変えても正常動作するのか、確認しようとしたら、これには外付けのクロック発振子が無かった。内蔵オシレータを使っているものと思われる。
スポンサーサイト
  1. 2015/03/21(土) 15:57:09|
  2. 電子・電気修理
  3. | コメント:0

PICで電子オルゴール+音声再生(テンポ制御)

【前振り】
PICで電子オルゴール+音声再生 」に機能改善を施した。

【改善内容】
①演奏途中でテンポを変えられるようにした。
音符コードにテンポ指定コードとして 0x09 を追加した。後続バイトに音価プリスケール値を置く。
音価プリスケール値は、曲データの先頭部分にある「エントリテーブル」に「音価プリスケール値」を設定するためのマクロps_mac を使う。

②曲演奏終了直後と音声再生終了直後に呼出されるコールバック関数を追加した。
連続して曲を演奏したり音声再生する場合に、定期間隔で呼び出されるコールバック関数で次の曲番号や音声番号を指示すると、開始までに時間が空いてしまう。10ms程度なのだが、音声信号としては無視できない。
このため、終了直後に呼び出されるコールバック関数を設けた。
以前のバージョンのPIC電子オルゴールには演奏終了後のコールバック関数があったのだが、音声再生と統合させたときにその機能を割愛してしまった。しかし、連続再生を考えると必要な機能だった訳だ。

③タイ・スラーを指定する音符コードを新設した。
タイ・スラーの表現はディケイタイムを0に指定して減衰させないことで実現していたが、タイ・スラーを終了するときに元のディケイタイムを再度指定する必要があり、音符データが嵩張るのとメンテナンスが遣り難くいので、専用の音符コードを割り当てた。
タイ・スラー開始は 0x0a 、タイ・スラー終了は 0x0b 。

④若干のバグ吸収もした。(バグの内容はヒ・ミ・ツ!)

これで、PIC電子オルゴールは当初から目標にしていた機能が備わった、と思っている。
LPC電子オルゴールで実現している音源とエンベロープの波形テーブル化は、乗算命令が無いPICでは無理との判断だ。

設計の説明としてアセンブラソースコードのコメントをそのまま掲載する。

;1.機能
;①8パート(8和音)まで演奏可能
;②発声信号の波形はデューティ50%の矩形波
;③音高は125Hz~2KHz(4オクターブ)で、パート毎に15種類まで可能
; 足りない場合は音符毎に直接周波数指定が可能
;④音価はパート毎に15種類、3連符も可能
;⑤ベロシティを音符単位に設定可能
;⑥エンベロープ表現はディケイタイムのみ可能とし、音符単位に設定可能
; ディケイタイムを0とすると減衰せず、タイ・スラー演奏
; ディケイタイムを短くするとスタッカート演奏
;⑦テンポは演奏中に可変とする(現在この機能は未実装)
;⑧リピートは2系統で、回数設定可能
;⑨各パート毎に音符データは255個まで可能
;
;2.処理方式
;(1)発声処理
;①オルゴール演奏の各パートの出力値と音声再生の出力値の総和をPWMデューティとすることで、
; 発声信号を1つのPWMポートに出力する
;②アナログ出力の最大周波数を5KHzとすると周期は200us、その10倍のサンプルレートにするため
; にはPWM周期は20usである必要がある
; (実験したところPWM周期が20usを超えると音が濁ってきたので20us辺りが限界と
; 感じた)
;③一方音声再生は、サンプルレートが8KHzのとき周期は125usになるので、両者間のタイミング
; 誤差を小さくすることを考慮して、Fosc=32MHz、TMR2のスケーラ無しでPR2=167、PWM周期は
; 21us、音声再生は6倍オーバーサンプリングとする
;④PWM周期での割込み処理でCCPRxLを更新する
; 従って21usの時間でオルゴール演奏の実装パート数分の出力値の計算を行わなければなら
; ない
; この時間に実行可能な命令ステップ数は168ステップしかない
;⑤音声再生はオーバーサンプリングなので、出力値の更新周期がオルゴール演奏よりも長くなる
; のとパート数が1のため、CPU負荷はオルゴール演奏に比較して無視できる
;⑥演奏開始直後にはCPU負荷が集中するので、CCPRxLへのデューティ設定データをバッファリング
; することでアンダーランを防止する
;⑦エンベロープの表現は、アタック時の出力レベルをディケイタイムに沿って1づつ減じて行くことで
; 実装する
; タイ・スラー修飾のときは音価の全期間で出力レベルを変化させない、また次の音符へ進む
; ときにパート出力の連続性を維持する
;⑧デューティ設定は8ビット分解能(CCPRxLのみ)とすることでバッファメモリを節約する
; PWM周期のカウント値は168になるので、実効的なPWM分解能は7ビット強になる
;⑨ベロシティの合計値がPWMカウント値を超えないように、オルゴール演奏と音声再生のボリューム配分
; を%値で定義する
; オルゴール演奏に閉じては、各パートのベロシティの和が255以下になるように音符データを作成
; すれば、ボリューム配分はオルゴールエンジン内で自動反映する
; 音符データ中のベロシティ設定マクロでボリューム配分値を反映する
; 音声再生は、音声データを7ビットで作成すれば、ボリューム配分はオルゴールエンジン内で自動反映
; する
; 音声再生処理で個々のPCMデータにボリューム配分値を乗じて再生する
; 
;(2)タイミング制御
;①音高が2kHzのとき半周期は250usであり、1usを単位として数値化すれば0.4%の精度
; が確保できる
; 音高が125Hzのときは半周期は4000usになり、1us単位では16ビット長で数値化できる
; 音高の管理は、1usを単位とした半周期をPWM周期毎に評価して、半周期を超えたら
; パート出力を反転させることで、目的の周波数を発声させる
;②ディケイタイムの範囲を20ms~5sとすれば、その時間比は250であり8ビット長で数値化
; できる
; ディケイタイムの最小値20msの場合、ベロシティを200段階とすると1減算時間は100usとなり、
; PWM周期の21us単位では四捨五入して5カウントのプリスケーラを設ける
; ディケイタイムの管理は、100us毎にディケイタイムの時間比までカウントして、フルカウントでベロシティを
; 1減じていく
;③音符の長さを音価値として数値化するのに、付点音符を表現するには2で割切れる
; こと、3連符を表現するためには3で割切れることが必要であり、その最小値は6と
; なる
; 8ビット長で数値化できる音価値の範囲は、32分音符(=6)~全音符(=192)となる
;④テンポを100とすれば、音価の最小単位(32分音符の1/6)は12500us、PWM周期の21usで
; カウントすると595カウントとなる
; テンポを50~200に振らせても1190~298カウントとなる
; テンポは演奏中にもダイナミックに可変とするため、可変値を8ビットの数値にする必要があり
; ディケイタイムのプリスケーリング後に238~60でスケーリングし、さらに音価値でカウントする
; 音価値までフルカウントして次の音符へ進める
;
;(3)割込み処理
;①割込み処理はアンダーランを発生させないようにCCPRxLを設定するのみとする
;②割込み処理でのコンテキスト保存は必要最小限とする
;
;(4)曲構成のカスタマイズ
;①ソングデータの構成をテンプレート化し、共通のリスト処理でアクセスできるようにする
;②ソングデータへのポインタは1曲に付き1ラベルとし、曲名=ソースコードファイル名=ラベル名とする
;③演奏対象のソングデータのヘッダ部をレジスタ領域にコピーしておくことで、ソングデータへの
; アクセス手順を一律化する
;
;(5)メモリの有効利用
;①moviw命令により、256境界を跨るテーブルの検索を可能とし、メモリ空間を詰めてテーブルを
; 配置する
;②エンジン部分をPage0(0~0x3ff)に置き、その後にソングデータ部分と音声データ分部を
; 配置する
;
;(6)固有処理のカスタマイズ
;①プログラムソースをエンジン部と固有部に分け、エンジン部はブラックボックス化し、個別部ソースのみを
; カスタマイズすればよいようにする
;②固有の定数は個有部ソースに置き、エンジン部から参照する
;③割込み処理はCPU依存性があり、固有部ソースに配置する
;④固有のロジックは、CPU依存の初期設定処理やおもちゃ依存処理があり、コールバック関数と
; して個別部ソースに配置し、エンジン部から定期的にcallする仕組みにする
;⑤エンジン部の処理状態の把握のため、固有部からエンジン部の制御表を参照することは可能
;
;(7)ピン割当て、SFR指定のカスタマイズ
;①PWM出力のピン割当て、SFR指定は個別部で宣言する
;
;3.デバイスの選定
;ターゲットのデバイスはPIC12/16Fの18xx/19xx
;①強化命令使用
;②Foscは32MHz以上
;③PWM機能有り
;④データメモリは96バイト以上
;⑤プログラムメモリは2Kワード以上
;
;4.ソングデータフォーマット
;0x00:音符データの終了
;0x01:無条件分岐(次のバイトで分岐先を指定)
;0x02:リピート1回数設定(次のバイトで回数を指定)
;0x03:リピート1分岐(次のバイトで分岐先を指定)
;0x04:リピート2回数設定(次のバイトで回数を指定)
;0x05:リピート2分岐(次のバイトで分岐先を指定)
;0x06:ベロシティ設定(次のバイトでベロシティを指定)
; ベロシティは0~255
; 但し、オルゴール演奏と音声再生の合計がPWM周期カウント値を超えないように
; ベロシティを設定する必要があり、実際にはvel_macマクロで音符データ中に記述する
;0x07:ディケイタイム設定(次のバイトでディケイタイムを指定)
; ディケイタイムは1~255[10ms]
;0x08:直指定音符データ(次の3バイトで音価と音高を直接指定)
; 音価をマクロ命令(cho_mac、ch5_mac、或いはch3_mac)で指定
; 音高をマクロ命令(on_mac)で指定
;0x09:テンポ指定(次の1バイトでテンポを指定)
; テンポをマクロ命令(ps_mac)で指定
;0x0a:タイ・スラー開始(開始~終了区間を1つのエンベロープ表現する)
;0x0b:タイ・スラー終了
;0xX0:音価コードXで休符
;0xXY:音価コードXで音高コードYの発音

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;コールバック関数の要件
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;(1)固有の初期設定関数(CB_INIT)
;POR、およびリセット後に1度だけ呼び出される
;固有の初期設定の中では以下の処理を行う
;①周辺機能を構成する
;②演奏出力ポートを初期化する
;③おもちゃ固有の初期化を行う
;戻り値無し
;
;(2)固有の処理関数(CB_KOYUU)
;定期的(PLAY_OWN_MS[ms]毎)に呼び出される
;固有の処理の中では以下の処理を行う
;①オルゴール演奏の開始、再開始、中断を指示する
;②音声再生の開始、再開始、中断を指示する
;③LEDやモーター制御等のおもちゃ固有の処理を行う
;④必要により省電力設定をしてsleepする
;戻り値が0のときは処理を継続、!0のときはリセットベクタから再実行する
;
;(3)演奏終了時の処理(CB_SONG_END)
;曲の演奏が終了した直後に呼び出される
;「(2)固有の処理関数(CB_KOYUU)」と同様の処理を行うことができるが
;戻り値は返せない
;
;(4)演奏終了時の処理(CB_VOICE_END)
;音声再生が終了した直後に呼び出される
;「(2)固有の処理関数(CB_KOYUU)」と同様の処理を行うことができるが
;戻り値は返せない

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;コールバック関数で使用可能なエンジン部の関数
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;(1)曲選択処理関数
;input W:曲番号(0=演奏中断、1~255=指定曲番号を演奏開始)
;戻り値無し
;
;(2)音声選択処理関数
;input W:音声番号(0=発声中断、1~255=指定音声番号を再生開始)
;戻り値無し

【サンプル音】
演奏途中でテンポを変化させたアンニローリー+ジャンプ音

【サンプルソースコード】
PICで電子オルゴール+音声再生(テンポ制御)ソース

【ダウンロード】
詳細な設計情報と開発プロジェクトは ここから ダウンロードできる。
ディレクトリ名「orgel4」がファームウェアのMPLABプロジェクトディレクトリである。
音符データファイルは「anni_tempo.asm」。
ディレクトリ名「wab2tbl」が音声データ変換ツールのVisualStudio2008プロジェクトディレクトリである。
  1. 2015/03/15(日) 00:57:09|
  2. 電子オルゴール+音声
  3. | コメント:0

アンパンマンことばずかんの修理(電源SW)

1.患者
アンパンマンことばずかん
アンパンマンことばずかんの修理(電源SW)外観

2.症状
①しゃべらない。

②絵本にタッチしても反応しない。

3.診察
①電源が入らない状況だった。

②ハウジングケースを開けて、電源SWをオンすると電源が入った。電源SWの接触不良である。
アンパンマンことばずかんの修理(電源SW)診察1

4.治療
①SWの隙間から接点復活剤を注入すると良好になった。

②ペン先から赤外線発光の点滅が確認でき、絵本にタッチすると正しくしゃべった。
アンパンマンことばずかんの修理(電源SW)治療1

アンパンマンことばずかんの修理(電源SW)治療2

5.おまけ
①診察のついでにセンサーの信号を観測した。結果は別資料 「 アンパンマンことばずかんセンサー波形 」 を参照。

②ネットに 「IDイメージプロセッサーのクロックを変えても正常動作する」 との情報があり、これの真偽を確認した。元々16MHzのクリスタルが付いているが、これを11.275MHzに交換してみた。結果は正常動作した。やっていることはパターン認識なので、タイミングはデコード結果に影響しないのだろう。また、ホストCPUとの通信は2線式シリアルなので、ホストCPU側の通信タイミングに従うため、イメージプロセッサー側のクロックには同期しない。
アンパンマンことばずかんの修理(電源SW)治療3
  1. 2015/03/13(金) 23:01:08|
  2. 電子・電気修理
  3. | コメント:0

ビッグトラックの修理(電子オルゴール換装)

1.患者
BIG TRUCK
ビッグトラックの修理(電子オルゴール換装)外観

2.症状
①モーター、車輪は回り、明かりも点くが、音が鳴らない

3.診察
①基板に電源は来ている。
ビッグトラックの修理(電子オルゴール換装)診察1

②音声再生のICから音声信号が出てきていない。
ビッグトラックの修理(電子オルゴール換装)診察2

③ICをラジペンで掴むと音が出た。数回音楽と物音がして、その後はご臨終になった。COBのIC不良と判断した。
ビッグトラックの修理(電子オルゴール換装)診察3

4.治療
①音声を録音する間もなくご臨終になったので、再現は不可能。ネットを探しても、動作している動画等は見付からず。

②お客様に相談した結果、電子オルゴールに換装することになった。

③マイコンはPIC12F1822(2015年秋月価格@100円)とし、以下の4曲を入れた。
アンパンマンマーチ・アンパンマンたいそう、小さな世界、ミッキーマウスマーチ

④ポートの割当ては以下のとおり
RA2:音声PWM出力(正極性)
RA4:ランプ制御(正論理)

⑤方向指示器にランプが装着されていて、音声再生ICから点滅制御されていたので、PICから点滅させるようにした。パート0(メロディ)の音高コードの最下位ビットで点滅させることで、メロディに合わせて点滅しているように見せる。
ビッグトラックの修理(電子オルゴール換装)治療1

ビッグトラックの修理(電子オルゴール換装)治療2

ビッグトラックの修理(電子オルゴール換装)治療3

⑥ファームウェアは ここから ダウンロードできる。
ディレクトリ 「iga20150308」 がMPLABプロジェクトディレクトリになっている。
  1. 2015/03/13(金) 22:42:59|
  2. マイコン換装
  3. | コメント:0

ゾウさん水遊びの修理(パターン切れ)

1.患者
ゾウさんの水遊び
ゾウさん水遊びの修理(パターン切れ)外観

2.症状
①ボタンを押しても、鳴らない。

3.診察
①基板が腐食して、パターンが断線していた。

4.治療
①パターンの断線箇所をパイバス配線した。腐植がかなり進んでいて半田のノリが非常に悪く、辛うじて導通を確保できた。いつまで持つかは保証の限りでない。
ゾウさん水遊びの修理(パターン切れ)治療1

ゾウさん水遊びの修理(パターン切れ)治療2

ゾウさん水遊びの修理(パターン切れ)治療3

ゾウさん水遊びの修理(パターン切れ)治療4

ゾウさん水遊びの修理(パターン切れ)治療5


  1. 2015/03/13(金) 01:11:36|
  2. 電子・電気修理
  3. | コメント:0

アンパンマンことばずかんDXの修理(基板腐食)

1.患者
アンパンマンことばずかんDX
アンパンマンことばずかんDX(基板腐食)外観

2.症状
①電源は入るが、しゃべらない。

②絵本をタッチしても反応しない。

3.診察
①ペンの基板が腐食していた。電池ボックスの真下に当たる部分で、電池ボックスには電池の液漏れの跡があった。
アンパンマンことばずかんDX(基板腐食)診察1

アンパンマンことばずかんDX(基板腐食)診察2

②パターン切れは無かったが、表面実装部品の半田付けが腐植により導通が無くなっている個所があった。

4.治療
①表面実装部品の半田付けをやり直した。幸い半田が旨く流れて、導通が復旧した。

②「R12」の抵抗は半田が流れず、部品の半田端子に導通がなくなっていたので、リードタイプの抵抗に交換した。抵抗値は「8R2」の表示が読めたので、8.2Ωを取り付けた。(IDイメージプロセッサSN9P700FG-201のデータシートに応用回路例が載っていて、センサー部のLED制御回路のTrのエミッタ抵抗に8Ωが使われており、当該基板の実装と符合する)
アンパンマンことばずかんDX(基板腐食)治療1

(SN9P700FG-201データシート)
アンパンマンことばずかんDX(基板腐食)回路図

アンパンマンことばずかんDX(基板腐食)治療2

③半田付けのやり直しによって、イメージプロセッサのクロック発振が正常になり、赤外線LEDの点滅発光が確認できた。
アンパンマンことばずかんDX(基板腐食)治療3
アンパンマンことばずかんDX(基板腐食)治療4

④絵本にタッチすると正常にしゃべることを確認した。

5.センサー信号の観測
センサー信号の観測結果は ここから ダウンロードできる。
  1. 2015/03/13(金) 00:42:28|
  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