koheiのおもちゃ修理記録

宇部おもちゃ病院 毎月第2土曜日 13:00~16:00
宇部新天町の西の端、市民活動センターで開院してます。

7/21 断線チェッカー作ってみた

2019-07-20 | PIC・電子工作
いつもネット経由でお世話になっているおもちゃドクターの先輩が、PICのタッチセンスを使った「断線チェッカー」を作ったとの事。作った先輩曰く「修理としては新しいコードに交換するので、断線箇所が判ったとしても益は無い」との事だが、いやいや。マイクコードや、マウス・レジ型おもちゃのバーコードリーダー等で、多芯だったりして替えたくない・切り縮めで対応したいけど、本体側・末端側のどっちで断線してるか分からない、という時に役に立ちそう。
秋月で買い物する用事があったので、ついでにPIC16F1823を買って作ってみる事にした。

記事を読ませて頂いて、バーLED表示は不要(音だけでいい)と感じたけど、12F1822と16F1823は10円しか変わらない。買い物ついでで送料がまとめてなら、バーLEDも100円なので、16F1283でバーLED表示も付けて、フルバージョンで作ることにした。

普段、5V3Aのアダプタを持ち歩くので、電源は5Vにする。SW切り忘れ・節電を考える必要ないので、スリープはせず、Wake-upの為のタクトSWも付けない、といった仕様にする…が、いつもの様に人の作品を勝手に変更して作ると、すんなり完成しないのでした…。

元の回路はこんな感じ。

(※元の回路で、抵抗の入れ方に間違いがあったそうです。元記事は修正されたので、そちらを参照ください。)
これを、上記仕様で変更して作るのだが…、LEDハンダ付けする時にLEDの極性(A-K)間違えた~。ちゃんと確認して付けたつもりなんだけど…。でも慌てない、プログラムのLED点灯部の「0と1、2と3…」の点灯を逆にすれば大丈夫。

これで書き込んで動かすと…、音はちゃんと鳴るけれど、バーLEDの表示がなんだかバラバラ…。回路もプログラムもチェックするけど、間違いは見つからない…。 しかたないので、プログラムを「0~9までLEDを順番に点けるだけ」に書き換えて確認してみるも、やはりなんともバラバラである。改造プログラムのミスで、「0:点きっ放し」になっちゃった時に確認すると、0を点けたときに、2と9も点灯してる様である。よく見ると、2と9はちょっと暗めに点灯している。

回路をよ~~~く眺めてみると、「0を点けたときに、2と9も点灯する」のは、電源電圧を5Vに変更した事による必然でした。
5Vに変えたときの回路は下図。元の回路に、LEDの電流制限抵抗の値が書いてませんでしたが、電流計算して、470Ωとしました。

0を点けるには、RC0をH、RC3をL、その他はHi-Zにして、赤線の経路に電流が流れますが、オレンジのラインにも電流計路が出来てしまいます。
このままの回路でも、電源電圧を3.4Vまで下げれば、2も9も点かなくなるけど、3.5Vでもうっすら光ってしまう。
3.4Vの時の電流を計算して、「これなら大丈夫だろう」と電流制限抵抗を1.8kΩに取り替えてみたけど、まだ状況変わらない…。これは…、本来点けたいLEDが相当暗くなるまで抵抗上げないと、2と9の点灯を抑えられないのでは…?

これじゃあダメだ…。えーいめんどうだ!ポートも余ってる、LED点灯回路を変更しよう!ポートが6個あればできるはず。
しかしここで、もう1つマズそうな事が…。バーLEDのDatasheetによると、逆耐電圧は5Vと書いてある。正逆を反転して点灯を変えるこの仕組みだと、電源電圧5Vで使用すると、カタログ上の逆耐電圧の上限値が掛かってしまう。まあ、電流制限抵抗が入ってるので、なだれ降伏して無制限に電流が流れて焼き切れてしまう事はないとは思うけど、逆耐電圧の上限で使うのは気持ちが悪い…。

手持ちであった小電力用のダイオードを直列に入れて、そっちで逆電圧をブロックさせる事にする。余分にダイオードを入れたので、電流制限抵抗は470Ωに戻して、最終の回路は下図のようになった。
(いや~ちょい待て。電流制限抵抗が掛かってるので、逆方向のLEDには、光ってるLEDのVf=2.1Vの逆電圧しか掛からないわ~。という事は、ダイオードを直列に入れた意義は、印加電圧をVf=1V程度下げる効果だけだな~。これで作っちゃったのでもう取らないけど、正逆直列に入れたダイオードは不要だったw。)
音は最初、ケースに入りづらかったので、1cmぐらいの圧電ブザーを付けてみたけど、いまいち音が小さい。ドライブにMOSFETのAO3400を入れて、2cmのスピーカーを使いました。圧電ブザーでも家なら十分聞こえますが、おもちゃ病院会場だと多分聞きづらいので。

ケースに入れる前の基板はこんな感じ。表:

裏:

ケースに入れるとこんな感じで完成~。

右のネジの所をみのむしクリップでくわえて、断線を調べたい対象線と繋ぎます。
(元記事によると、「手でGNDに触って人体側をGNDに落すと、ノイズを拾っての誤作動を起こしにくい」とあったので、ケースのどこかにGND端子を出そうと思ってましたが、ケースに入れる前に動作確認した所、GNDを持っても持たなくても検出状況に変化無かったので、GNDは無視しました。)

さて、遅ればせなのですが、電源電圧5Vで「LEDと電流制限抵抗を2回通ったら点灯しない」が実現するのか、検証してみる。
Datasheetによると、使ったバーLEDのVfは2.1Vとの事。手持ちの多分Vf=1.8Vの赤色LEDで検証してみる。

電流制限抵抗を変えて、電源電圧を変えて、抵抗両端の電圧差を測定して電流を求める。
電源電圧抵抗V_LEDaV_LEDb,cIaIbLED-b,c
5V 2K1.821.741.6mA0.38mA点灯
5V 5.1K1.771.700.64mA0.16mA点灯
3.5V 5.1K1.741.610.34mA0.03mAかすかに点灯
5V 10K1.731.670.32mA0.09mA薄っすら点灯

5.1KΩで3.5Vまで落とした状態。LED-aはまだしっかり光るが、LED-b,cも分かる程度に光ってしまう。


10KΩで5Vの状態(LED-aの方の抵抗は、10KΩが足りなくて、5.1Ω×2になっている)。LED-aがだいぶ暗くなってるのに、LED-b,cはまだ薄っすら点灯してしまう。

「LEDは、電流によらずVfがほぼ一定」と聞いていたけど、さすがに電位差不足の時にはそうはならないらしい。そして、電位差不足で、公称のVf-0.3Vになるぐらいまで電流を落としても、目で見える程度に点灯する様ですね。 この結論からすると、電源電圧がVfの2倍に近い場合、もう少し詳しく言うと、電源電圧>(Vf-0.3)×2程度だと、この「LEDと電流制限抵抗を2回通ったら点灯しない」事を期待した回路は無理って事になるでしょうか。
(という事は、Vf=3.3Vの青色バーLEDを使えば、元の回路で5V電源でも大丈夫かもw?)
とっとと諦めて、点灯回路変更しといてよかったわ~w。

さてこれで、LEDの点灯部を変更したプログラムを書き込んで、「断線チェッカー」完成しました。フタして動作状況はこんな感じ。

(作動させて断線個所が探知できるか確認してたら、スピーカーがかなり発熱してたので、やむなく直列に抵抗を追加。100Ωでは音が小さすぎ。まだやや発熱するけど、20Ωを入れた。)

またもや、元の回路を勝手に改変して作るので一発で成功しないけど、まあ、失敗して試行錯誤するのこそが自作の楽しみ、という事にしておこうww。(今回は、元の制作者にヘルプを出さずに解決できたし。)
使う機会が来るかな~
コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

6/1 インテルHexフォーマットファイルのViewer、作ってみた~バージョンアップ

2019-06-01 | PIC・電子工作
ちょっと前に、「インテルHexフォーマットファイルのViewer、作ってみた~」で、インテルHexフォーマットのファイルを色付きで表示するViewer作ってみたのですが、先日使ってたら、なかなかいいww!
(書き換えやコピペもできるので、一応「エディター」ではあるのですが、元々IntelHexフォーマットを「見やすく表示する」ために作ったので、「ビューアー」という名前になってますw。)
特に使い勝手がいいのが、「新しいウインドゥを開く」で同じプログラムをもう1個起動して、並べて比較とか、別のファイルからコピー・ペースト等がやりやすい。

先日はまだ不具合や改善点があったけど、「まあ動く物ができた」ぐらいで放置してたのですが、もうちょっと良くして、他の人にも使って貰える(と思う)レベルに作り足しました。
実行ファイルが欲しいだけの人は→ココ(バグ修正最新版)
プロジェクト全部が欲しい人は→ココ(バグ修正最新版)
(.NET Frameworkが、古いと適用されるRTFも古くて字間の調整ができなかったので、「.NET Framework4.7.2」を使っています。OSが古いと「無いよ!」って怒られるかも。)
(2019/8/25)上書き保存ができない不具合修正

大きな不具合は、「*.hex」の拡張子紐付けしてエクスプローラから直接ファイルが開けるように設定したのに、空でプログラムが立ち上がるだけでファイルが開けなかった件。「System.Environment.GetCommandLineArgs()」でファイル名を取得して、直接開けるようにしました。
大きな改善点は、データ部の表示を1BYTE区切り/2BYTE区切りで表示できるようにした所です。
1BYTE区切りの表示:

2BYTE区切りの表示:

他、改善点やその度の苦労は多数ww。ネットで1つ1つ調べながら、苦労して解決しました。

参考にした・お世話になったサイトのリンクを貼っておきます。ありがとうございました!
帝国の野望ブログ:C#で作る、あなただけのメモ帳
メモ帳の様なアプリケーションを作るのに、フォームを作ってメニューを配置して、どう機能を作りこんでくか、一から丁寧に説明してくれていて、初めてアプリを作るのに、非常に参考になりました。
dobon.net
VisualStudioのVB/VCについて、非常に網羅的に詳細に説明があって、非常に頼りになるサイトです。いろんな事で何回も利用させて頂きました。例文も多くてすぐに応用できます。
どうしても困って、掲示板も1回使わせて貰いました。大変助かりました。
独り言はもうやめませんか:[VB.NET]TextBoxで無限アンドゥを実現
ファイルから読み込んだTextを、文字列処理でRTF文字列を作って書式設定するのですが、RTFを加工するところで、本来TextBoxが持ってるUndo機能がリセットされちゃって、使えなくなるんです。Undo出来ないと結構不便だったので、こちらのサイトのソースを使って、Undo機能を実装しました。(Windows本来のUndo機能は、多分もっと複雑なのですが、あまりサイズの大きくないテキストを元に戻す操作なら、このぐらいであまりメモリー負荷も高くなく実現できるのかな。)

それにしても、便利な世の中になったものですww。一昔(といっても20年ぐらい前?)だと、このぐらいのプログラム作ろうと思ったら、本5冊ぐらい買ってもまだ今回の全部の機能が実現できないぐらいだろうに、困った事はちょろっとネットで検索したらすぐ解決しますww。
ネットに情報を上げてる皆様、大変ありがとうございます。

さーてこれで一応公開しましたが、誰か使ってくれるかな~。(ダウンロードして使ってみた人が居れば、感想をコメントしてくれると幸せます~)

コメント (6)
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

5/4 GWの自由工作:第2弾

2019-05-19 | PIC・電子工作
という事で、GWの自由工作:第2弾、16F1705を使った電子オルゴール作品です。

別に完成品なおもちゃではない、あくまでも「デモ用」なので、できるだけお金は掛けず、バラック感たっぷりに作りましたww。外観はこんな。

ちゃんと大き目のユニバーサル基板にSW付ければ、もっとちゃんと作れるんだけど、新品のユニバーサル基板を1枚使いたくなかったのww。

回路・プログラムは、つつじが丘おもちゃ病院:大泉さんの「アンパンマンじゃかじゃか消防車」を使わせて貰いました。
裏はこんなです。

裏面に極力ビニール線を這わせたくないのですが、SW・LEDに行く配線が多いので、結構多くなってしまいました。
さて、ハードは簡単に出来たのですが、ソフトの書込み(フラッシュROMへの書込み)に苦労しました…。

前述の大泉さんの壮大な作品:「PICプログラマー」を勝手に改変した自作のプログラマーで24FC256に書き込もうとしたのですが、どーーーしても書き込めない…。何とか自力で解決したかったのですが、GW中に完成できない勢いになってきたので、元の作者である大泉さんにヘルプを出してしまいました…。

散々悩ませて助言もいっぱい頂いて、大変勉強にもなったのですが、結局、プログラマーのファームウェアをぼくが改変した所のちょっとした(かつ、致命的な)間違いを何とか自分で発見して、GWの休みが終わった数日後にやっと解決、フラッシュROMに書き込み出来て完成しました。大泉様、その節は大変ご迷惑をお掛けしました。
(題名の日付が「5/4」になってて日付の辻褄が合いませんが、次の記事との順番都合で、ご勘弁下さい…)

さて、完成して動かしてみる。「アンパンマン消防車、出動しま~す」といった音声が流れるのですが、いまいち雑音が多い気がする…。
この作品は、元々他院からの依頼をうけての製作で、「音声ソースは依頼者から提供」となってました。世の中には、開封動画とかおもちゃの使用レビューの動画みたいなのを出してる人がいっぱいいる(←理解できないww。でも時々参考にする。)ので、そんなものから取ったのかもしれません。動作させてそれをマイクで拾って録音すると、操作音や動作音や周囲の雑音等を拾ってしまい、音源の質が低下してしまいます。
アンパンマンのおもちゃの様に、声優さんが出してて自作出来ない音源は、いかにノイズの少ない良質な音源を手に入れるかが、マイコン換装品の出来を左右するのかもしれません…。
(ほんとは、著作権の侵害にあたりそうですが、商業目的でなく、金銭的利益を伴わないので、ご勘弁頂けるかしらww。)

前述の大泉さんも、先日ブログにて「音源取り」をやったという記事(これ)を書いておられました。
ぼくも、年間何十件もおもちゃの修理をするので、「これは」という物があったら、音源取りをやっておくといいかなぁ~。

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

5/3 GWの自由工作:第1弾

2019-05-19 | PIC・電子工作
いろいろと忙しくて、ブログがついて行ってません…。
GWが10連休でした。ボーっとしてないで、何か有意義に過ごさねば。

最近は、COBが壊れて修理不能なおもちゃを復旧できる「マイコン換装」ができるようになろうと、勉強中です。宇部おもちゃ病院のメンバーからも「どんな事が出来るの?」という質問が来てるので、いつも使わせて頂いている「つつじが丘おもちゃ病院」の大泉さんの諸作の中から、1つ2つ、作品例を作ってみようと思います。

GWの自由工作:第1弾として、通称「ミミクリーペット」と呼んでる、ボイスレコードでしゃべった言葉を1オクターブ高くしてオウム返しにするおもちゃのコピーを作ってみます。
回路・プログラムは、大泉さんの作品を使わせて貰います。使用デバイスはAttiny13a、メモリーは、今回は24FC256を使いました。

大泉さんの作品、日々改良されていきます。上のリンク(「ミミクリーペット」)は中期型?ぐらいで、つい最近もオートパワーオフ追加で改良されています。(使用する際には、なるべく新しい記事のバージョンを使った方がいいです。)
使うEEPROMは、その時見つけたなるだけ安いもので、24FC256→W25Q16→AT24C256と変わってきましたが、去年AliExpressで24FC256@70円を10個買っちゃったので、しばらくはこれを使います。

回路は当然、大泉さんのとほぼ同じですが、全ての部品を持ってる訳じゃないので、いろいろな判断の元、多少変わっています。

今回は試作品なので、破線の中のモータ駆動部は作っていません。
今回はモータ駆動しないので、電源平滑は330μF程大きい必要はなかったと思いますが、この試作品にモータ駆動追加してそのままおもちゃに組み込む可能性もあるので、大き目つけときました

試作品なので、小さく作る必要は無いのですが、AliExpressから安く大量に購入した表面実装部品を多用。ビニール線ハンダ付け前の基板裏はこんな感じ。

ICの下のスペースをもっと使えばまだ小さく作れますが、どうせ電源平滑コンデンサの下があくし、本チャンの基板もそこまで小さく作る必要はないと思うので、ビニール線がなるべく少なくて済むように配置検討。

スピーカまで全部付けて、表はこんな感じ。

ICソケットは使っておきました。SOP→DIP変換基板は、ピンヘッダを付けるのが普通かもしれませんが、リード線の切れ端の有効利用ですww。

配線全部終了後の裏面は、こんな感じ。

自作のライターでプログラム書き込んで動かしてみると…、ちゃんと一発で動きました!

部品代は、だいたい下記の感じ。
Attiny13a+基板 : 34.2円+5.8円
24FC256+基板  : 70.0円+5.8円
ICソケット  : 6円×2
2SC1815 : 1.6円
AO3400  : 2.2円
SMD-CR類 : 8円程度
ユニバーサル基板: 10円程度
330μF : 10円程度?
マイク : 手持ち最安10.6円

実際のおもちゃに使う際には、マイクはもちろん付いてた物を使います(コンデンサマイク、と~きどき壊れますが。)
その他、転用できるものは最大限転用するでしょう。電源平滑の330μFはきっと転用。マイクアンプ部も極力転用。スピーカ駆動のTrも転用…と、最大限元の部品を転用すれば、24FC256バージョンで、130円ぐらいかな…。
AT24C256なら最安12円ぐらいで買えるので、24FC256を使い切ってAT24C256に替えれば、75円ぐらいで作れるでしょう。
このぐらいの費用ならば「基板が壊れてて修理不能ですが、約100円で中身を作り直せます」と提案出来ますね。

さて、とっかかるまで腰が重かったですが、GWの自由工作:第1弾はすんなり完成。次は、大泉さん諸作の中から、PIC16F1705を使った電子オルゴールを作ってみようと思いますが、これは難航しました…。「GWの自由工作:第2弾」に続くww。
コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

4/18 可変電源作った~

2019-04-15 | PIC・電子工作
今日は、修理じゃなくて工作の紹介。おもちゃ修理・動作確認に使う、可変電源を作りました~。
まあ、おもちゃドクター始めて、3個目の製作になりますけど。

1個目は、可変の3端子レギュレータの定番:LM317Tを使って、18VのACアダプターを分解して内蔵して1.2~15V、ヒートシンクもしっかりつけて、1.5Aまで大丈夫!と思って作ったのですが…、作って使ってみると、1.5Vでプラレールが回せない!
もっと電圧が高い物だと動かせるのですが、電圧を下げると厳しくなる。たかだかプラレール程度の起動電流に耐えられず、過電流保護が働いて、電圧が下がってしまう…。
3端子レギュレータは、入力電圧から出力電圧へのドロップを熱で消費して調節するので、入力電圧に対して出力電圧が低いと、流せる電流がガックリ落ちるんですね…。これでは全然使えません…。

下の写真の左側が、2個目に作ったヤツ。中央のが、この度作ったヤツ。

2個目のヤツは、aitendoで16V4.7AのACアダプタとセットで850円で売ってた、DIPスイッチで電圧を切り替える降圧スイッチング電源基板から、DIPスイッチを外してボリューム付けて、aitendoの250円ぐらいのミニミニ電圧計を付けた物。今度は低い電圧でもちゃんと電流が流せました。

じゃあ、どうして作り替えるのかというと、
・1.3~16Vぐらいまで、普通の可変抵抗(回転角300°)で変えるので、つまみをちょっと動かしても電圧が大きく変わる。使いながらちょっと手が当たったら1~2Vぐらい上がっちゃったりして、危険…。
というのが一番の理由。
あと、セットで付いてきた16VのACアダプタが、メガネプラグのコンセントコードと本体とDCコードとで、コードがかさばるし、「ちょっと使いたい」時に出したり繋いだりするのが手間、といった理由です。

他の作品動かすのに5V・4Aのかさばらないアダプタ持ってて、これ持っとけば「5V欲しい!」って時にはすぐ使えるし、この5Vアダプタから昇/降圧にすると便利がいいなぁ…

という事で、このたび、電圧調整は10回転の多回転ポテンシオメータを使用。電源基板は、Aliで安く買えるXL6009使用の昇/降圧スイッチング基板で、ついでに電流・電圧表示のミニミニLED表示機搭載で、上の写真の様になりました。

中身はこんな感じ。

携帯性最重視です。なんせ、おもちゃ修理に行くときの荷物が多すぎる!
75x63x21.5mmの小物ケースに収納。先にケース買ってから他を集めたので、それにしてもギュウギュウww。

設定電圧は、固定抵抗:R1と可変抵抗:R2との比で、1.25×(1+R2/R1)で決まるとの事。元々付いてたのがR2=10KΩの多回転半固定抵抗とR1=330Ωだったので、Max:39.1Vという事になる。
今回買ってたのが20kΩのポテンシオメータだったので、R1=1.68kΩに付け替えて、Max:16.1Vに設定しました。

さてこれで、負荷は繋がずACアダプタを繋げてみると……、何故?!電圧表示が0.02Vぐらいで、電流が6A以上流れてる事になってる???
「こ、これはマズいんじゃない?」と遅ればせながらACアダプタを外してみる…。
何か配線間違いしたかしら…、どこもショートしたりしてないかしら…。で、1日ぐらい何故だかよ~く考えてみる。
そっか、電流測定の赤・黒の片方が、共通のグランドに繋がってるんだな?

上の図のように、電源基板のプラス出力側に電流計入れて、負荷に繋ぎました。だって、テスターで電流測る時は、いつもこの測りかたなもので。
ところが、破線で書いたように、電流計の黒線が、電流・電圧計の共通グランドに繋がっていて、電源出力に負荷無しで電流計を直結したような状態になって、低抵抗のシャント抵抗に大電流が流れちゃったんですね。

購入したショップの商品ページには、使い方とか全く書いてなかったのですが、他のサイトをあさくると、下記の様な注意書きが書いてある所がありました。
Description
Display voltage and current simultaneously in different colors,red for voltage,
blue for current.(the current is measured in the negative rail).

括弧の中、どうやら、プラスのラインに繋いではダメで、マイナスのラインに入れないといけなかったらしい…。

また、あちこち探してみると、

こんな配線例が載ってるところもありました。ちゃんと調べないといけませんね…。

気を取り直して配線し直しますが、電源のダイオードが壊れてました…。

60V3AのSchottkyBarrierDiodeのSS36、右隅の「6」のあたりに何か溶けだしたような突起があります。ショートモードの破損で、双方向ツーツーになってました…。
XL6009には過電流保護がついてるはずで、その結果が6.4Aぐらいだったんだろうけど、それで他が壊れちゃうんじゃ、過電流保護の意味がないじゃ~ん。
まあでも、XL6009が壊れてなくて幸い。手持ちで、間違えて買って使う予定の無い電源基板からSS34を取って移植。(SS36との差は耐圧のみで、SS34は40Vまで)

配線変更で、こんな感じ。(ターミナルまで配線繋ぐと、フタが全部開かないww)

やっと完成、FA-130モーターを負荷に繋いだ状態。

とりあえず使ってみると…、リフレッシュがちょっと遅すぎる気がする…。似た物でスペックが書いてるヤツは、だいたい500msと書いてあるけど、1秒1回ぐらいしか表示が更新されない気がする。
電圧表示は正確でした。買って40年経つアナログテスターの表示値に対して+0.1V、3000円ぐらいで買った安物DMMの表示とはほぼ同じぐらいでした。
電流精度の確認はしてません。あちこちサイトを見ると、「1A以下の測定に使うと、誤差が大きい」と書いてありましたが、正常に動いてるか(断線orショートしてないか)どうかの目安程度で使うつもりなので、精度はあまり気にしませんw。
さあこれで、次回から使ってみよう~。
コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

3/7 インテルHexフォーマットファイルのViewer、作ってみた~

2019-03-07 | PIC・電子工作
先日、ATtiny13用のプログラマーを作ったのだけど、Atmelに限らずPICも、コンパイルするとインテルHexフォーマットのファイルが出来ます。
作ったプログラマーは、ヒューズビットやロックビットをHexファイルに埋め込んでおくので、Hexファイルを編集する必要がありました。

インテルHexファイルはテキストファイルなので、メモ帳やワードパッドで開けるのですが、ヘッダー部分(レコード長やアドレス部分)とデータ部分の区別がつかないので、非常に見にくい…。
WikipediaのインテルHexフォーマットの解説の様に色分けしたら見やすいんだけど、そんないいツールは見当たらない…。
…じゃあ、自分で作ってみよう!

と、VisualStudio(VB)で作ってみた!

目標は、インテルHexフォーマットを開いて編集するのに、メモ帳で開くよりもマシなソフト。

始めてVBで作ったプログラムだったのでいろいろと苦労したけど、とりあえずできたww。
何となく出来たので、公開してみますww。ココ→Yahooボックス
(※2019/6/3追記:バージョンアップしました。変更点や最新のダウンロードは「6/1 インテルHexフォーマットファイルのViewer、作ってみた~バージョンアップ」からお願いします~)。

[ツール]の[データチェック&チェックサム再計算]で、
・一文字目がコロン":"かどうか
・16進以外の文字が含まれてないか
・ヘッダーの「データ長(バイトカウント)」と実際のデータ個数があっているかどうか
を確認してから、チェックサムを計算して、行の最後のチェックサム部分に書き込みます。

[表示]の[文字を大きく/小さく]で、フォントの大きさを変えられます。
デフォルトは12ptです。INIファイルに入れてあります。実行中に大きさを変えたら、INIファイルが更新されて、次からは閉じたときのフォントの大きさに変わります。

[ファイル]の[新しいウィンドウを開く]で、もう一つ開くので、そちらでもう一つファイルを開いて、コピー&ペーストできます。
(書式付きでコピーしちゃうので、表示が崩れたら、[表示]の[再表示]で戻せます。書式なしでコピーする様にするんだったなぁ…。)

いろいろと苦労話もある。もっといろんな機能、アドレスの重複チェックとか、アドレスイメージの表示とか、やりたい事もある。でもまあ、VisualStudioで初めて作ったプログラムにしては、まあぼちぼちがんばったかなぁ~。
ニーズがあるかどうか分かりませんが、ダウンロードして使ってみた人が居れば、ブログに感想コメント下さいww。
コメント (2)
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

2/3 Attiny13用プログラマーを作ろう!

2019-02-03 | PIC・電子工作
さて、去年11月に、悩みに悩んでPickit3を購入しました。中国直輸入のZIFアダプタ付き互換品で1,360円と、めっちゃお得でした。
まだまだシロウトで、自分でプログラムを作成するところまで到達できないので、とりあえず目標は「つつじが丘おもちゃ病院」の大泉さんが作ったプログラムをそのまま使わせて頂く事としますが、使用されているデバイスへの書き込みが必要です。

スタートとして、秋月で16F1503:10個や、16F1705:10個等をばっさり購入(送料が高いので、最大限まとめ買いします)。Pickitを買ったので、「後はメモリーチップ(24FC××とW25Q××)への書き込みができればいい」という事で、大泉さんの「シリアルフラッシュROM(24/25)ライター」を作ろう!と、16F1454も一緒に買いました。

ところが…、大泉さんの著作も日々進行し、ATTiny13を使った作品の中で使わせて欲しい物が出てきたのですが、ATTiny13へのプログラム書き込み、特にHVS(高電圧シリアルプログラミング)がどうもめんどう。安く買える、又は簡単に作れるプログラマーがありません。
買ったPickit3はMPLABとの連携が良く、一発でビルド&書き込みが出来てシロウトには使いやすいと思うので、後悔はしていませんが、メモリーチップとAVRへの書き込みツールが必要です…。

だいぶネットを探したのですが、結局大泉さんの巨大プロジェクト「PICプログラマー」が最適です。(そりゃそうだよね、大泉さんの作ったプログラムを使わせて貰おうと思ってるんだからww)
ところが、16F1459を買うのにまた高い送料が掛かるし、せっかく買った16F1454が無駄になってしまう。16F1454は16F1459とファミリーですが、USBインターフェースの付いた高機能PICで、おもちゃ換装用には使いそうにない…。

大泉さんの「PICプログラマー」は、USBからの給電のみで何でもできる、非常に高機能な作品。もうちょっと機能を絞れば、ファミリーである16F1454で代替できるのでは…?

20PIN→14PINなので、使用ポートに6個余裕があればいい。
「PICプログラマー」のVpp生成は、シロウトにはカルチャーショックな、すばらしい作りです。「ソフトの介在無しにVppを生成」が「?」でしたが、コンパレータで直接PWMを制御して、昇圧回路の電圧を安定化させてる様で、PICの機能を余す所なく使ってると感じます。
しかし、おもちゃドクターであれば、可変電源は必ず持ってる(べき!)ので、USBからの単一電源供給にこだわらず、Vppは外部から与えてあげればいいのでは?という事で、
・Vpp生成はせず、Vppは外部から供給する→2ポート
・外部オシレータ不使用→2ポート
・LEDを1個に減らした→1ポート
・VDDの5V/3V切り替えをなくす→1ポート
で、計6ポート空きができ、16F1454で実現できるはず。
つまり、フルバージョンの「PICプログラマー」と16F1454を使った簡易版「シリアルフラッシュROM(24/25)ライター」の「中間品」を勝手に作ろう!という企画ですww。

さて、前置きが長くなりましたが、部品は極力、他のおもちゃ修理にもよく使いそうな部品で、中国直輸入で「100個200円」といった買い方ができる物を使います。
ATTiny13への書き込みを主目的として、基板上での配線しやすさ等も若干考慮してポートを再定義して、下記の回路としました。

最初に「これでいいだろう」と思って考えた回路は、いろいろと間違いがありました。
AliExpressでN-chMOSFETは買ってたのですが、P-chMOSは買ってなかったので、N-chMOSで行けないかと思ったのですが、VppとVddのON/OFFは、ハイサイドでのスイッチングが必要で、ハイサイドでのON/OFFはP-chMOS又はPNPトランジスタじゃないとできないのでした。
(正確には、できなくはない。ONしたい電圧より3V程度高い電圧を準備してやって、G-S/B-E間に掛けないとONできない。普通はそんな面倒なことはしたくないので、ほぼできない…。)

今の所、ICSPはあまり考えていない。それならば「Vddプリチャージ」や、Vpp(MCLRピン)のHi-Zは必要ない気がしますが、一応機能としては残す事にしました。
「Vddプリチャージ」は、「多分こんな機能だろう」と推測し、PNPトランジスタでベース電流を下げて、供給電流を制限する事にしました。

PNPトランジスタは、壊れた家電からたまたま回収したMarking:AHRの2SB1197使いました。Vce(sat)が低くて、良さげです。(他、無謀にも、抵抗のほとんどや10μFのコンデンサも、同じ家電からの回収品を使いましたww。)

さて、おもちゃじゃないので小さく作る必要は無いのですが、たまたまあったユニバーサル基板の切れ端を使って、こんな感じ。

表面実装品の多用で、裏はこんな感じになりました。

ネットをうろうろしてたら、「ユニバーサル基板での製作で、ハンダ面にビニール線で配線するのは良くない」と書いている記事がありました。
・被覆がリード線の先で傷ついたり他のハンダ付け時に溶けたりして、ショートの可能性がある。(実際こないだやってしまった…。)
・配線ミスが発見しにくい、後から修正しにくい。

おもちゃではスペースに制限があって無理なこともありますが、今回はスペースに余裕があるので、その意見を採用して、ビニール線は表だけにしました。
表は若干配線が目立ちますが、裏はすっきりしました。

この回路で元の機能が動くように、プログラムを変更します。
ポートの設定は「app_device_cdc_basic.c」の冒頭部分「// ユーザアプリで使う定数」で定義されているので、ここを注意深く書き換えていきます。
次の「// プログラマーへのコマンドデータ」の所は触りません。
「// プログラマーを初期化」の部分は、ポートの変更に合わせて、ポートの初期化を注意深く変更すると共に、Vpp生成部分をばっさりコメントアウト。
「//コマンドシーケンスを実行する」の部分は、使わない様にする機能は、枠だけ残してコメントアウト。LEDのポートも変更したので、「leds.c」のポート定義も変更します。

これで、パソコン側のプログラムは変更せずに、プログラマーがちゃんと動くはず!
パソコン側のプログラムを解凍して起動。一発でうまくいくかな……いかないよね…ww。

まず疑わしいのは、USBドライバーの設定。
大泉さんHPでは
『PICプログラマーを始めて導入するときはUSBドライバーの登録が必要。USBドライバー本体はWindows標準のものを使用する。infファイルとcatファイルは「PICプログラマー\ISP\ISPpic18F14k50\Windows」(中略)にある。』
とありますが、作ったPICプログラマー、USBポートに差しただけで、デバイスマネージャーに「COM6」が出たので、ドライバー登録せずとも認識・通信できるのかと思ったのですが、そうはいかないのかな…。

指定の通り、フォルダにあるinfファイルをインストールしようとしたのですが、「ファイルが見つかりません」とエラーが出てインストールできません…。
infファイルの中身を見ながら、怪しそうなファイル名のものについて、場所を確認してpathを通してみたりと、だいぶ悩みました。
調べてくと、PICのUSBを使うためのinfとcatファイルは、元はMicrochipのMLAの中にある様なので、MLAの中のinfファイルを見つけてインストールを掛けたら、インストール成功しました!

(結局、infファイル内で指定してる\i386や\amd64のフォルダが、infファイルと同じ場所に無いのが原因だったのかな?と思います。)

よしっ、これでどうだ!……まだ動かない…。
1ヶ所、ポートの初期化に間違いがあったので修正したけど、まだ動かない…。
「読込み」は、エラー無く終了して、何らかHexファイルができるけど、ちゃんと読めてるかどうか怪しい…。
「書込み」は失敗に終わる…。書き込んだつもりだけど、読込みベリファイしたら違います、というメッセージの様子。

AtmelStudioでコンパイルすると「eepファイル」もできるので、これを選択して書き込みすると、エラーが出ないけど、書き込み出来てるか分からない…。(上記画面コピーログの「15:57:36」の方。)

さて、なんとか元々の制作者である大泉さんに問い合せせずに自力で完成させたかったのですが、そろそろ問い合せをするしかないかしら…。
土曜日1日中悩んで、土曜の夕方にとうとう大泉さんに問合せ。

とにかく、知らないことが多すぎるww!
Hexファイルの見方が分からなかった。「Hexファイル」というからには「バイナリーかな…?」と思ってたので、「Hexファイルエディター」みたいなヤツをダウンロードして開いてみるも、「なんで0x30が一杯あるの…?」という状態。
夕方に、回路図とプログラム(ファーム)の変更部分と送って大泉さんに問合せした後もゴソゴソしてて、AtmelStudioからHexファイルが見れることを発見!
なんかデータ読めてる。下の方に「FB・LB等のデータかな?」という部分もある。
という事で、夜のうちに大泉さんから第一段の回答頂きましたが、引き続き読み込んだHexファイルを送って、回答待ち。
読み込んだHexファイルはこんな感じ。
:020000040000FA
:1000000000000000000000000000000000000000F0
:1000100000000000000000000000000000000000E0
 (中略)
:1001F00000000000000000000000000000000000FF
:1002000001000100010001000100010001000100E6
:1002100001000100010001000100010001000100D6
 (中略)
:1003F00001000100010001000100010001000100F5
:020000040010EA
:0200000079F88D
:020000040020DA
:01000000FC03
:020000040030CA
:030000001E900748
:020000040040BA
:020000005C5D45
:00000001FF

日が変わって日曜日。朝早々に大泉さんからの回答を頂き。
> 添付されていたHEXファイルは tiny13A を読み込んだ結果ですね。
> 正しく読めていると思います。その根拠は
> ・デバイスID(0x1e9007)が読めている
> ・ヒューズビット(0x79f8)がそれらしい値で読めている
> ・内部オシレータ校正値(0x5c5d)がそれらしい値で読めている
> ・ロックバイト(0xfc)がそれらしい値で読めている
> ・ロックバイトは読み書きともプログラムされているため、内容の読み出しはできていない。
> お使いのtiny13Aはプロテクトが掛かっていますので、「チップ消去」を行えば、読み書きできるようになると思います。

昨日から頭が痛くて泣きそうなのだけど、朝から「インテルHexフォーマット」の勉強。そっか、バイナリーじゃなくて、ASCII文字列なんだー!
そして、大泉さんのPICプログラマーの使い方説明の中の「FB、LB、SB、CBの情報をHEXファイルでやり取りする。FBはアドレス0x100000、LBはアドレス0x200000、SBはアドレス0x300000、CBはアドレス0x400000 に配置している。FBとLBの設定値をHEXファイルに埋め込んでおけば…」の意味もやっと分かった~。

そして、Attiny13aのデータシートも勉強。LBが「0xfc」だと、プログラム書き込みができないだけでなく、読込(ベリファイ)も出来ないんだ~。
しかも、ヒューズビットからすると、RESET無効で通常のISPも不可。なんてヒドい設定!

AliExpressで5個171円→@34円のSOPのATtiny13aを買ったんだけど、まっさらな新品じゃなかったのかしら?
変換基板も含めると秋月で買うのとあまり変わらないのだけど、送料掛からない分だけ安いかな?と思ったのですが、「何かの製品に使おうと思って、プログラム書き込みして、読みも書きもできないようにロック掛けた後、やっぱり使うのやめて廃棄にした」みたいな商品かしら?
これだと、HVSが出来ない(するつもりのない)環境の人は、買った時点で終了じゃん?
(まあぼくの場合は、どうせHVSするつもりだったから、最終的にはいいんだけどww。)

さてさて、全部解明されて準備完了!なんとかがんばって、今日中に「Lチカ」まで辿り着こう!
まずは、RESETピン有効のまま、「SW押してる間だけ、LEDが点滅する」にチャレンジ。(RESETピンは20kΩでプルアップ)
(ポートの操作が、ArduinoともPICとも違って独特…。最初は書き方がよく分からず、一発では動きませんでした…。)

うまく行ったので、引き続き、RESETピン(ピン1)を入力に使ったプログラムにチャレンジ。晒すほどの内容でもないのですが、最終のプログラムはこんな感じ。

(ほんとは、割り込みを使うとか、SW押されるまではsleepするとかすれば、もっと勉強になるのに…ww。)
同様にブレッドボードで動作確認。

バッチリ動いて、これでATtiny13aのプログラミング準備、完了です!長い戦いだった~www。
コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

12/2 2.4GHzラジコン直すぞ!~第1段

2018-12-16 | PIC・電子工作
随分前になってしまいました、8/25のリユース出張開院で預かった2.4GHzのラジコン、受信機のIC不良で修理不可としてしまいましたが、直らなかったらもはやゴミなので、そのまま預かりっ放しにしてあります。
依頼者さんには「壊れた送受信機を再生するワザがある。すぐには出来ないけど、復活出来たら連絡します。」と言ってあります。

8/25の記事で、すぐに出来ない言い訳をしてありますが、中国直輸入でいろいろ資材仕入れて、やっとこさ、2.4GHzラジコンの復活にチャレンジします。
2.4GHzラジコンの復活は、名張市つつじが丘おもちゃ病院の大泉さんという方の開発したプロジェクトです。まだまだレベルが足りてないので、そのまま使わせて頂きます。

悩んだプログラマーは、結局Pickit3互換品を購入しました。写真は、大泉さんの「評価用ボード」(写真左上)を作って、PICに書き込み中の写真です。

Pickit3は、秋月で買うと単品で5,000円(純正)、Amazonで2,180円(アダプタ付きで互換品)ですが、中国直輸入で1,360円(アダプタ付きで互換品)で買えました。送料も無料で、めっちゃお得~。
ZIF(ゼロプレッシャーソケット)付が良かったので、アダプタセットで買いましたが、このアダプタ、裏面におおざっぱなPIC位置とジャンパ設定が書いてあるだけで、説明書もないし、ネットにも情報が見つかりません。ので、まず回路を確認してから使います。

一番最初に秋月のライターを買ったときには、ZIFにPICをセットする位置とかは暗号の様な物で、意味を全然理解してませんでしたが、最近はもうちょっと勉強が進みましたw。 データシートを確認して、今使おうと思ってる16F系のPICでは、裏面に書いてある位置・ジャンパで概ね問題ない様でした。
(必要ないピンにVddが掛かってしまう箇所があるのがちょっと気になりますが、PICは多分、動いてない時や書き込み中は、使わないピンはHi-Z。大丈夫と信じよう…)
(アダプタの情報は、回路を全部解明した後に、灯台下暗し、おもちゃ病院新津HPにて、詳しく解明・解説されてました。まあ、自分で確認するのが一番でしょうw。色も付けて分かりやすくしたし。)

PIC開発環境としては、MPLAB X IDE v5.05を入れました。書き込みはちょっと悩みました。 最初「targetにVddが供給されておらず、PICを認識できません」のアラームが出ます。プロジェクトのプロパティから、「PickitからtargetのVddを供給する」を選びます。
次に、「Pickitは5.00Vを供給しようとしたのですが、4.75Vしか掛かりませんでした」というアラーム出ました。Pickitは、Vdd供給ラインが弱く、基板の抵抗を短絡して電流アップしないといけない、みたいな評判だったので「それか?」と思ったのですが、供給電圧を4.75Vに変更したら動くようになりました。(まあ、USBから5V供給して、ON-OFFやら制御掛けたら、5Vは出ないよね。)

色々(PICへのプログラム書き込み等)不安だったので、大泉さんが作られてる「デモボード」を作って試すことにしました。(今回直そうとしてるヤツは「フルアクション」しか使わないので、ボリュームは付けてません。)
最初、SE8R01を刺してみましたが、何も光らないので、nRF24L01+に差し替え…。動いた~、けどおかしい…。
ターボ(赤LED)と上(緑)と左(黄)が、何も押さなくても点きっ放し。時々チラチラと点滅するので、その時SWを押すと、点滅→点灯になる。これは…、プルアップがちゃんとできてない状態?
プログラムの内部プルアップ指定の辺りをゴソゴソしてたら、ターボの付きっ放しだけは良くなった。けど残りは変わらない…。

基板に抵抗追加して外部プルアップしてみたり、パスコン追加してみたりしましたが、結局、プログラム側でのアホなミスをしておりました…。

大泉さんのプログラムは、デモボード評価用として、「デジタル入力フルアクション制御/アナログ入力フルアクション制御/サーボ制御/ESC制御の4種類の操作タイプを動的に切り替えられるようにする」作りになっています。
実機に使う際には、操作タイプを指定するのですが、その指定するコードを間違えて、「アナログ入力フルアクション」になってました…。(「フルアクション」の字に釣られて、間違えた~ww)

やっと間違いに気付いて、追加した外部プルアップも全部外して仕切り直し…。ちゃんと動いた~。

差し直したら動くやつがあったので、SE8R01でテストしてます。
写真左側、下に8個写ってるのがSE8R01、上の5個がnRF24L01+。
SE8R01の方、ハンダはくすみ切ってるしCOBも何だか煤けてるしで、大変怪しかったのですが、ヘッダーピンがサビ気味で接触悪いだけで、全部動作はしました。
SE8R01は、ネットで検索しても出てこないので大泉さんに問い合わせたところ、「similar nRF24L01+」で出るとの事。10個で$3.03→@35円で購入。
nRF24L01+は、「enhanced」と書いてある「強化版」のヤツで、5個で$3.12→@72円で購入。

到達距離確認をしました。SE8R01の方は、5~8mぐらいしか届かない感じ。5cmのビニール線アンテナを追加してみましたが、特に延びた感じがしない…。あまりスピードの速くないラジコンに限られるかも。
nRF24L01+のenhancedは、サイトに「100m届く!」と書いてありますが、30mぐらいで確実に届くのを確認しました。スピードの出るラジコンの屋外使用に充分耐えられそうです。

今回「デモボード」を作成した際の、部品・価格表です。
部品名 送信機  受信機 購入状況
ユニバーサル基板 72円? 72円? 多分秋月
16F1503 82円 82円 秋月
14Pソケット 7円 7円 Ali:10個69円
2Pターミナル 5円 5円 Ali:20個97円
ピンソケット 約10円 約10円 秋月42Pをカット
10μF電解コン 約10円 約10円 Aitendo11種/計110個セット
タクトSW 約8円 Ali:100個$1.26→146円
LED 25円 Aitendo?
抵抗 約6円 Aitendo21種/計420個セット
合計 194円 217円
これに、SE8R01@35円かnRF24L01+@72円で完成。
こうして見ると、ユニバーサル基板が高すぎるww。今なら中国から買うけどね~。PICはAliExpressにはあまり売ってないし、安くない。Aliで調べると、秋月のPICは相当安いと思われます。強い仕入ルートがあるのでしょうか。(ただ、送料が掛かってしまうのが痛い…。)
モータードライブは既設を転用できるとして、実機に実装時にはPICとRFモジュールと基板だけで行けるので、送受信機合計で、SE8R01なら約260円、nRF24L01+なら約320円ぐらいで直せるかな?
おもちゃ修理としては、何とかギリギリなコストかしら…。

まだ、ボリュームフルアクションとかESC制御(PWM?)とか、試さないといけない事がありますが、とりあえず直す(というより「作る」)目途が立ちました。
さあ、冬休みの宿題にしよう~ww。
コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

4/29 arduinoでオシロスープ&サーキュレータ用DCモーターの調査

2018-04-29 | PIC・電子工作
珍しく、修理以外の記事です。うまくいってうれしかったので。

ちょっと調べたいことがあって、とうとうオシロスコープが欲しくなり、2週間ほどネットオークションを物色して何件か入札掛けてみたのですが、なかなかお手軽な値段では落とせない。
ちょっといいスペック・状態の物は、やっぱりそこそこの値段まで上がってしまう。まあ、当然だよね~。
やっぱりデジタルオシロでないと。デジタルでもブラウン管のヤツはブラウン管が逝ったらおしまいだから、やっぱりデジタルオシロで液晶モニターがいいなぁ…。
使い方に慣れるまでは、スタンドアローンよりもパソコンにつないで使うUSBオシロの方がいいかしら…。
最低でも20MHzは欲しい。27Mhzのラジコン電波が見れた方がいいかしら。100MHzぐらいあれば文句ないけどなぁ…。

秋月のキットは、カラー液晶でかっこよくて¥3,780だけど200kHzまでのと、1MHzまで測れるけど白黒液晶で¥4,700のとあるけど、どっちもどっち。果たして出費に見合う性能だろうか…。

と、長らく悩んでいましたが、ふと、「arduinoで簡単にUSBオシロができる」という話があるのを思い出しました。「オシロが欲しい」の検討の中で、arduinoは所詮クロックが16MHzなので、測定可能な周波数も限られるし、スタンドアローンが欲しかったので眼中になかったのですが、目前の調べたいことに対しては役に立つかも。

で、調べてみると、やっぱり簡単そう。
九州工業大学の情報工学部(飯塚キャンパス)さんが作ってくれたプログラムです。
https://www.iizuka.kyutech.ac.jp/faculty/physicalcomputing/pc_kitscope

arduinoはとりあえず持ってないけど、事実上「Rxduino」のGR-SAKURAが1台ある。クロックが違うけど、移植できるかしら…、と妄想を膨らましていたらば、arduinoはunoじゃなくてnanoでも行けるとの事。
だいぶ前にaitendoで買ったnano互換品を1個持ってるじゃないか!

という事で、家にある部品だけで、構想・製作:半日、長らく悩んでたオシロスコープが、あっという間に出来ましたww。

こちらのサイト→Arduino講座 1000円で作れる簡易USBオシロスコープも参考にさせてもらいました。(参考というより、そのまんまですww)
ブレッドボードで試作せずに、いきなりユニバーサル基板で作っちゃいました。
nanoの取付には、手持ちであったピンソケットを使いました。ちょっと不必要に背が高くなって見栄えが悪いですが。
トリガー機能用の1μFコンデンサと100kΩ抵抗は、nanoの下に隠れてます。

任意周波数の矩形波生成がついてるので、作ってすぐ動作確認もできます。
どうやら、100kHzあたりが限界の様で、波形がだいぶなまってしまいます。

画面もオシャレかっこいいです。上記画像が、自分(nano)で生成した100kHzを測った結果の画面です。

さて、オシロができたので、早速調べたかった物を調べてみよう。
調べたかった物は、ブログ題名の通り、サーキューレータ用DCモーターの制御信号です。

話せば長いのですが…、「8×8×8 LED-CUBE」に続くLED工作第2弾として、「LED GLOBE(又はLED Sphare)」なるものを作ってみようかと。
円周状に並べたLEDを高速で回転させると、残像で球状に見える。LEDを高速で点滅制御させて、地球儀の様な表示をさせる物です。(「バーサライター」という分類名の装置の一種になるらしい。)

どうやって回転させようかしら…。マブチのRE-280ぐらいじゃ力が足りなそう。RS-540ぐらいならどうかしら。でも、減速機が必要かしら。プーリ・ベルト駆動かしら…。
でも、模型用モーターはブラシの耐久性が問題。ディスプレーで何時間も回すと、すぐダメになりそう…。

耐久性で言えば、ブラシレスDCモーターがいい!でも高い!
ホビーユースでも、コントローラと合わせて1万円ぐらいする…。
そうだ、回転軸に直接磁石くっつけて、ブラシレスモーターを自作してしまおう!と、いろいろ調査&勉強。しかし、なんだかんだで結構お金かかってしまう…。

そうだ!扇風機とかサーキュレーターファンとかの家電のモーターを使おう!
と、ネットオークションを漁ってたら、いいのが出てました!
「サーキュレーターが動かなくなったので直そうとしたけど直らなかった」という、バラバラにしたサーキュレータが¥199で出てました。そのまま最初の価格で落札出来ちゃいました。(送料が1300円掛かりましたが。)

落としたサーキュレータの基板・メインモーター部が下の写真。

ほとんどの線がぶった切ってありましたww。コンセント(電源コード)もついてませんでした。

首振りモーターの線はぶった切って、基板確認して電源コードつなげて、切れてたモーター行きの線3本を色の通りに繋いで、コンセント差してみると、ちゃんとモーター回りました。速度も5段階、ちゃんと切り替わりました。
ラッキーでした。モーターのコイル(外磁)だけ使おうというつもりで購入しましたが、モーター生きてれば、駆動回路を手作りしよう。
でも、駆動回路も生きてるなら、電源IN・速度切り替え等の制御をなんとかすれば、そのまんま使えるわ~。

速度切り替えやタイマー・首振り等は、写真右下:緑の操作基板の方に乗ってるマイコンがやってます。操作スイッチは静電容量式の?タッチスイッチなんですね。
メインの方の基板には、8ピンのFETの様なICが3つ乗ってます。

ブラシレスDCモーターの3相のON-OFFの為かと思いきや、型番調べたらトライアックでした。DCモーター制御なのに何故トライアック?と思ったら、この3つは、左右首振り用の交流シンクロナスモーターと、上下首振り用の交流正逆回転シンクロナスモーターの駆動用でした。

DCモーターの中身は、こんなんなってました。

モーター巻き線からは「U,V,W」の3本線が出ており、3相ブラシレスDCモーターには違いないようですが、モーターへの線3本は、黒がGND、赤がDC24V、黄色は制御線の様です。
センサーレスと思われますが、モーターについてる基板上のICが、各相のON-OFFも含めた制御全てをやってる様です。
メイン基板の回路を起こそうかと思ったものの、結構複雑で無理でしたが、どうやらメイン基板はDCモーターへの24V電源供給しかしてないようです。

黄色の制御線は、DMMで測ると2.4Vと出ます。PWMかしら…。でも、速度切り替えても電圧変わらない。PWMならDMMでの測定電圧変わると思うんだけど…。

で、このたび、arduinoオシロ作って測定しました。180~700Hzぐらいの、Max約5V、DUTY50%の方形波が出てました。(だから、DMMで2.4Vだったんですね。)
左が「速度4」、右が「速度5」の測定結果です。
 
測定画面、下にFFT結果を表示できます。拡大してカーソルを合わせると、周波数が出せます。
速度1~5で、180,350,450,510,700Hzぐらいの周波数の様です。速度設定を切り替えると、ゆっくりと周波数が変わる様になってます。
速度5の時のFFTでカーソルを合わせたときの表示が、こんな感じ。

九工大さんの作品、なんて便利!方形波ジェネレータも付いてるので、制御のテストもできちゃいました。
SWとかのついてる制御基板を外しちゃって、arduinoからの方形波出力を直結して、150~700Hzを出すと、ちゃんと速度制御でモーター回せました。
これで、LED Globeに向けての準備着々です~!
コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

11/5 8×8×8 LED-Cube作りました

2017-11-04 | PIC・電子工作
ここのブログは、いつも修理したおもちゃの記録のみを書いてるのですが、ちょっと更新滞ってるので、去年作った「8×8×8 LED-Cube」の紹介(自慢?)を書いてみます。
(修理件数が多くて、何をやったか把握できなくなってきて…。ちょっと受付簿かカルテを確認してから記事を書こうかと。)


とりあえず、「動画はこちら」から。

完成したのは、ちょうど1年ぐらい前なのですが、明日の宇部まつり出張開院時にディスプレイとして展示するのにプログラムをちょこっと追加したついでに、記事にしてみます。
ほぼ「初めてのデジタル作品」で、いろいろと苦労しました…。

コントローラには、下記の様な理由で、PICやArduinoではなく、ルネサス製のがじぇっと「GR-SAKURA」を使用しました。
・初めてのLEDダイナミック点灯、しかも数が多い。どのぐらいの処理速度が必要かよく分からないのに対し、SAKURAはクロックが90MHzもあり、PICやArduinoよりも高速。
・どのぐらいの容量のプログラムになるか、想像がつかないのに対し、メモリ容量が大きい。
・三角関数等を使うのに、高級言語が使いたい。速度も欲しい。
・SAKURA基板がかわいくって、単に使いたい…。

製作記:
①LED-CUBE体作成
8×8の穴を開けた台を作って、1段ずつ作っていきます。

LEDは、1個3円の格安な5mm青色LEDを使い、600個購入して、使用分は点灯チェックをして使いましたが、格安のせいか後で苦労する事に…。

1段作ったら台から外して、次の段を作成。
8段作ったら、今度は一番上の段を再度台に差し込んで、2段目以降を重ねて、段を連結していきます。
1段を作るのに1時間×8、8段を連結するのにさらに8時間、ぐらいの時間が掛かったかな~?

②回路検討
512個のLEDを制御するのに、ラッチシフトレジスタの74HC595を使う事にしました。
回路図はこんな感じ。

その後、トラブルで若干手を加えますが、後述の「苦労話」の所で。

データ構造は下記。

SAKURAの豊富なI/Oを使って、データは1BYTE一括で送信、8個の74HC595に一括でシフトを入力、8個データ送り終わったら、やはり8個の74HC595に一括でラッチを送信で、1段64個のLEDを同時に制御します。

層の切り替え(点灯)は、1段当たり64個のLEDを点けないといけないので、Trダーリントン接続にしました。

③基板作成
基板おもては、こんな感じ。(トラブル発生・修正後の状態。)

なかなかきれいに配置できたのではないかと思っています。
(基板ウラは…、あんまり見せたくない状況なので、ヒミツ…)

LEDへのケーブルと、SAKURAとの接続をすると、こんな感じ。


④プログラム
GR-SAKURAは、多分ほぼArduino準拠。という事は、多分ほぼC(C++)。
プログラミング自体は楽勝でした。(もしこれをアセンブルですると思うと、ぞっとします…。)
Arduinoはプログラムの汎用性を重視するので、「1ポートまとめての制御」の情報があまりなく、その辺ではちょっと苦労しました。(ネットでだいぶ探した。)

「どんな表示をさせるか」→「それをプログラムと式でどう実現するか」なので、何を表示させるかが重要。技術はそれなりにあってもセンスがなくって…。

苦労話:
①LEDの不良
最初にCUBEと基板とが出来て、試しに斜め1列にLEDを点灯させるだけのプログラムを走らせてみると…、指定してない箇所のLEDが点灯する…。
何故かしら…? 散々ソフトを悩んで、ハードを悩んで…。調べていくと、2段目のLEDに常に電流が流れてしまって、他の段で点灯を指定したのと同じ位置の2段目のLEDが点灯してしまう状態。どこか配線のショートかと、1個ずつ動作を確認していくと、2段目の端っこのLED一個の逆方向に導通があって、それを経由して、HC595のLOW出力のシンクに電流がながれて2段目のLEDが点灯してしまうみたいでした。
逆方向に導通があるLEDを取り替えたら、ちゃんと指定したLEDだけ光る様になりました。
1個目はCUBEの端っこだったので、取り替えは簡単でしたが、そのうち、6段目のど真ん中のLEDも1個不良になり、取り替えるのに相当苦労しました…。
(さらに、全部完成後にも、下の方のど真ん中らへんのLEDが2個いかれて、大変でした。)

点灯しないならすぐ分かるのですが、点灯するのに、逆電流が流れてしまうという、困った不良…。やはり、格安LEDのせいかしら…。

②74HC595が壊れた~
「さて出来た!」と、点灯させてたら、いつのまにか縦2列:74HC595の2個分、点灯しなくなってる…。
どうにも、HC595が壊れたとしか思えない…。
気になるのは、SAKURAにプログラム書き込み中に、CUBEのLEDのあちこちがチラチラ点灯する事。
「プログラム書き込み中のSAKURAのポート出力はどうなってるのだろう…?」と、困ってルネサスのサポートページに質問。
「プログラム書き込み中は、ポートはデフォルトの『入力状態』で、つまり『ハイ・インピーダンス』の状態。」との事。
サポートページのベテランの皆さんの指摘によると、「層の点灯制御がダーリントン接続。増幅率が非常に高いので、微小なノイズでTrがONしてしまい、全層が一遍にONしてしまう可能性があり、そうなるとHC595がもたない。SAKURAのポートがハイ・インピーダンスだと、Trの入力が宙ぶらりんなので、誤作動防止のためには、プルダウンが必要」との助言。
HC595の入力にも、プルアップかプルダウンが必要、との助言でした。

で結局、層切り替えのTrの入力は5kΩでプルダウン、HC595のデータ・ラッチ・シフトの各入力は
10kΩでプルダウンして、プログラム書き込み時のLEDチラチラはなくなりました。

③SAKURA暴走?
上記プルダウン改造前ですが、4時間ぐらい順調に動いていた後、急に表示が乱れて、SAKURA基板のリセットも効かない状態に~。
続けてルネサスのサポートページに相談を出すと、「これだけの大電流を高速でON-OFFさせると、電源は相当に不安定。CPU動作不安定の一因になる。消費端のできるだけ近くに大容量のコンデンサ、SAKURAへの電源供給の近くにもコンデンサを追加。基板の電源ラインとGNDラインは、できるだけ短く太く」といった助言を頂きました。

結局、電源ラインの引き直し・太線化、電源ラインに470μFの電解コンデンサ追加、SAKURA電源供給ラインに47μFの電解コンデンサ追加、の処置を取りました。

そんなこんなで、デジタル回路初心者がいきなり大作にチャレンジして、いろいろと苦労しましたが、なんとか完成にこぎつけました。
コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする