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

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

PICで電子オルゴール+音声再生(16F1705)

【前振り】
PICで作る電子オルゴールの対応デバイスに16F1705を追加した。
16F1705は8kワードあり10数曲は載せられる。音声なら2秒弱だ。
価格は@110円(2015年秋月)で、コストパフォーマンスが良い。
PIC電子オルゴール(16F1705)外観

【設計】
170x系と18xx系との違いがいくつかある。
①PWMを制御するレジスタがPWMxCONとPWMxDCHに変わった。
②PWM信号を出力するピンをRxyPPSレジスタで設定する必要がある。
データシートに設定方法が書かれているのでその通りにすれば良いのだが、ユーザーはてんでんばらばらなアーキテクチャに翻弄されて非常に疲れる。今回の対応で、プログラムの共通部と個別部の線引きを再考する必要を感じた。

【サンプル音】
お馴染みのアンニローリ+ダメを16F1705に演奏させた。
デバイスが変わっても出力信号は変わらないので、18xxと同じ音色だ。
再生音はこれ

【ダウンロード】
開発の資材一式は ここから ダウンロードできる。
ディレクトリ「demo_1705.X」がMPLABXのプロジェクトになっている。

16F1705はMPLABで非サポートのため、今回初めてMPLABXを使った。慣れていないためプロジェクト構成やソースの体裁(タブ、インデント)が悪く、今後改善したい。

スポンサーサイト
  1. 2015/02/27(金) 09:55:17|
  2. 製作記事
  3. | コメント:0

PICプログラマーの製作(12F1501/16F150x/16F170xのサポート)

【前振り】
PICの新品種(12F1501/16F150x/16F170x)が、秋月で取り扱われるようになった。
16F1705は8kワードで@110円(2015年秋月価格)。
既存の品種に比べてコストパフォーマンスが良いので、今後はおもちゃ修理には新品種を使って行きたい。
そのためには先ず、 自作のPICプログラマー で新品種をサポートする必要がある。
普通ならPICkit3を買ってきて、ファームウェアの開発に傾注するんだろうけど、僕の場合は「プログラマー製作」が趣味なので。

プログラマー外観
このPICプログラマーは以下の特徴を持った優れものだ(自画自賛)。
①PIC10FからPIC32MXまで、幅広いデバイスをサポート
②PIC以外にもAVRやI2Cメモリ、SPIメモリもサポート
③USBバスパワーで電源アダプタが不要
④3cm×4cmの超小型
⑤500円くらいで作れる

【設計】
12F1501/16F150x/16F170xのプログラミング仕様を見たところ、読み書きのコマンドとフローは12F1822と同じで、データメモリが実装されていないだけだ。
構造化が綺麗にできている (自画自賛) ので、12F1822用のプログラミングロジックをコピーしてデータメモリの読み書きをコールする部分の2行をカットするだけで、プログラムの変更は完了。
後はデバイステーブルに新品種のエントリーを追加して、メモリサイズや消去・書き込みのブロックサイズなどを設定して終了。
PC側のプログラムの変更のみで、プログラマー側のファームウェアの変更は不要だ。これもプログラム間の機能分担が綺麗に分けられているから(自画自賛)。

【試験】
実機での動作確認は、12F1501と16F1705で代表して行った。

【ダウンロード】
改変後の資材一式(PC側プログラムのVisualStudio2008プロジェクト、プログラマー側ファームウェアのMPLABプロジェクト、回路図、プログラミングシーケンス、ソケットアダプタ結線、設計資料など)は ここから ダウンロードできる。好きなだけ持って行って下さい。
  1. 2015/02/26(木) 19:55:30|
  2. PIC開発
  3. | コメント:0

デアゴスティーニ零戦エンジンの修理(モーターブラシ端子半田浮き)

1.患者
デアゴスティーニ零戦エンジン
デアゴスティーニ零戦エンジンの修理(モーターブラシ端子半田浮き)外観
左側が故障した零戦エンジンで、右側はジャンクを利用して作ったクローンの赤外線リモコン送信機

2.症状
①音は出るが、プロペラが回らない。

3.診察
①下画像の青コードと緑コードがモーターへの配線である。基板上でモーター駆動電圧は3V強が出力されていた。
デアゴスティーニ零戦エンジンの修理(モーターブラシ端子半田浮き)診察1

②モーター側で配線コードの電圧を図ると、3V強架かっていた。
デアゴスティーニ零戦エンジンの修理(モーターブラシ端子半田浮き)診察2

③導通チェックをすると、導通が無かった。

④モーター不良かと思い、モーターを外すためにコードとパスコンを外そうとブラシ端子の半田付け分部をよく見たら、半田浮きが見えた。

⑤下の拡大画像で、端子に半田が流れていないのが判る。
デアゴスティーニ零戦エンジンの修理(モーターブラシ端子半田浮き)診察3

⑥ブラシ端子を掴んで導通チェックすると数10Ωが測定された。モーター自体はOKのようだ。

⑦ブラシ部分のコードを押え付けると、モーターが回転することを確認した。

4.治療
①モーターのブラシ端子から配線コードとパスコンを外して、酸化膜を削り取ってから半田付けをやり直した。
デアゴスティーニ零戦エンジンの修理(モーターブラシ端子半田浮き)治療1

②組み立てて、動作確認は良好だった。
  1. 2015/02/24(火) 18:06:34|
  2. 修理事例
  3. | コメント:0

LPCで電子オルゴール(音源データ作成 ピアノ音)

【前振り】
今回は、LPC電子オルゴールの音源作成の続きで、ピアノ音を作ってみた。

【作成】
プログラムは変更しないで、ピアノ音の音源データとエンベロープデータを作る。

①リアルピアノから音をwavファイルで採取する。ピアノの音域の中間より左(低い)側にあるC3の音程で採取した。試行錯誤の結果、原音より高い音程で発声させると音色が良いことが判った。

②wavファイルを48ksps8ビットモノラルに変更する。

③wavファイルのPCMデータ部分をツールでCSVファイルに出す。

④Excelに喰わせて、折れ線グラフを表示させるとオシロスコープのように波形が目視できる。

⑤折れ線グラフを見て、1周期分のデータ範囲を定めて、手動でデータ範囲をトリミングする。

⑥音源ファイルのソースコードにデータを突っ込む。

⑦エンベロープは、短めのアタックタイムで最大ベロシティを保った後、長めの指数減衰にした。内容はエンベロープ波形データを参照。

⑧最初はC3の音程で採取した音源波形でメロディと伴奏の両方を演奏させていたが、伴奏の音色がエレピみたいになっていた。音域によって音色の特性が異なるようで、C2の音程で採取した音源波形で伴奏を演奏させるとかなり感じが良くなった。

【演奏結果】
ピアノ音と言う先入観を持って聴けばピアノ的だ。
演奏音はこれ

【タイミング考察】
①メロディの演奏で使っているC3の原音の周波数は132Hz、これを48kでサンプリングすると、1周期は364サンプルになる。それを今回は93サンプル分で1周期分の音源波形にしている。つまり4倍高調波以上の成分で演奏していることになる。

②伴奏の演奏で使っているC2の原音の周波数は66Hz、これを48kでサンプリングすると、1周期は727サンプルになる。それを今回は182サンプル分で1周期分の音源波形にしている。つまり、こちらも4倍高調波以上の成分で演奏していることになる。

③原音に忠実な音色にするためには原音に近いレートで再生するのが良いと思うのだが、試行錯誤の結果では上記①と②のタイミングの方が良いという結果になった。

【ダウンロード】
詳細な設計情報と開発プロジェクトは ここから ダウンロードできる。
ディレクトリ名「orgel5」がファームウェアのuVision4プロジェクトディレクトリである。
  1. 2015/02/09(月) 00:02:53|
  2. 製作記事
  3. | コメント:1

LPCで電子オルゴール+音声再生(エンベロープ波形のサポート)

【前振り】
おもちゃの修理用に、LPCマイコンで電子オルゴール を作っているが、楽音の表現をより豊かにしようと改善に取り組んでいる。
音源波形のテーブル化 に続いて、今回はエンベロープ波形のテーブル化を行った。
これまでは一定時間毎にベロシティを一定量ずつ下げて行く、つまりランプ減衰のディケイ表現しかできなかったが、エンベロープ波形をテーブル化して自由なエンベロープが表現できるようにした。

【設計】
やり方は単純で、音源波形のデータ値とエンベロープ波形のデータ値の積を発声データ値とする。実際には更にベロシティ値を乗じる必要がある。LPCマイコンには乗算命令があるので、これが簡単に実現できる訳だ。そのため、今回はLPCマイコンのみの対応となる。

①エンベロープ波形の持ち方は、音源波形および音声データの持ち方と同じにした。先頭にサンプル数を持ち、以降に8ビットPCMデータを並べる。

②一定時間毎にエンベロープ波形テーブルを読み進めて行く。最後のサンプルまで行ったらその後は最後の値を保持する。

【エンベロープ波形のサンプルコード】
サンプル音「アタックをランプ上昇にして、その後は指数減衰」のエンベロープ波形のソースコードを以下に示す。

LPCで電子オルゴール+音声再生(エンベロープ波形のサポート)エンベロープ波形ソースコード

【サンプル音】
最も自然な指数減衰

アタックをランプ上昇にして、その後は指数減衰
アタックタイムを長くして、シンセ風の音になった。

【ダウンロード】
ファームウェアの開発プロジェクトと設計資料は ここから ダウンロードできる。
ディレクトリ「orgel5」が、uVision4のプロジェクトディレクトリになっている。
サンプル音のエンベロープ波形は「enve_exp_fast.s」と「enve_exp_slow.s」に入っている。
「最も自然な指数減衰」に該当するHEXファイルは「test_LPC810fast.hex」
「アタックをランプ上昇にして、その後は指数減衰」に該当するHEXファイルは「test_LPC810slow.hex」
  1. 2015/02/05(木) 12:48:53|
  2. 製作記事
  3. | コメント:0

LPCで電子オルゴール+音声再生(LPC810をサポート)

【前振り】
LPC1114で電子オルゴール を作っていたが、今回はLPC810をサポートした。
LPC810M021FN8は、32ビットで@75円(2015年秋月価格)の大廉価。PICでPWMを搭載し高速動作するものは12F1822で@100円(2015年秋月価格)。それより安いので、当面のおもちゃ修理にはLPC810を使って行こうと思う。秋月の販売価格によって開発方針は変わって行く。

【設計】
LPC1114に比べて、LPC810は動作クロックがデータシート上ではMAX30MHzで少し遅い。しかし、LPC1114と同じクロック設定にして48MHzのオーバースペックで動かしてみると問題なく動いたので、それで進める。

タイマーがSCTになってPWM信号の作り方は大きく変わる。

LPC1114にはマッチレジスタがリアルタイムに更新される(シャドウレジスタが無い)ため、分解能を目一杯利用することができない。当方の事例ではデューティは5%~99%となった。LPC810はリミット発生時にマッチレジスタが一斉に更新される、まともな仕様になっている。PICでもシャドウレジスタがあるのだから、LPC1114が不完全な仕様だと思う。
従って、LPC1114と比較してPWMの分解能が5%良くなっているのだが、聞いたところ違いは感じられない。

音源波形データ、音符データ、音声データも共通に使える。

LPCで電子オルゴール+音声再生(LPC810をサポート)回路図

LPCで電子オルゴール+音声再生(LPC810をサポート)テスト基板

【ダウンロード】
ファームウェアの開発プロジェクトと設計資料は ここから ダウンロードできる。
「orgel4」がuVision4のプロジェクトディレクトリ
「・・・LPC1114・・・」はLPC1114関連のファイル
「・・・LPC810・・・」はLPC810関連のファイル
その他は共通のファイル になっている。
  1. 2015/02/02(月) 23:24:07|
  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