koheiのおもちゃ修理記録

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

2/9 宇部おもちゃ病院定期開院

2019-02-22 | おもちゃ
2月度の宇部おもちゃ病院定期開院です。

まず小さい物を3つ(同じ人の)。1件目、バス。

後輪の車軸が曲がって、ちゃんと走らなくなったとの事。
ローレットではまってる後輪を片側コネて抜いて、ペンチで車軸を修正。ベストではないものの、ほぼ走る様になりました。

2件目、スバルのアイサイトのおもちゃ。

後輪(駆動輪)が空回り。分解したら、前面に赤外線受光モジュールがついてたので、「リモコン操作じゃないですか?」と聞きましたが、「アイサイト」で、前方の障害物を検知して止まる作りでした。
ギアの割れかと思ったのですが、車軸とホイールの空回りでした。
両側共コネて抜いて、軸の段をニッパで噛んでみましたが、硬くてあまり傷が入らない…。どちらも気休めかもしれませんが、エポキシ塗って突っ込んでおきました。
多分、ミニカーの様に手で押して走らせようとして、空回りに至ったのではないかと想像します…。同じことすると再発しそうで不安ですが、とりあえずは走るので終了とします。

3件目、トミカのキャリアカー。(後ろのキャリア部分は、ひっくり返した状態の写真。)

トラクター(運転席の方)とトレーラーとを連結する部分、本来は突起が出てて、90°曲げた位置で突っ込むと、後は抜けにくくなる構造ですが、連結部の凸が折れて、引っ掛かりが無くなった状態…。
合金の鋳物の様な破断面です。ヤスリで頭を削って溝を掘って、プラスチック片をはめ込んでエポキシで固定して、凸を再生しました。強度的に不安ではありますが、ちゃんとはまるし、着脱可能になりました。

さて4件目、ミッキーの…、3輪車のハンドル部分。

「スイッチの入りが時々悪い。ベルが固い」との事。

スイッチはカギを回す作りですが、中身はスライドSWでした。分解したところ、接点変色気味だったので、ヤスリで磨いてよさげな感じ。
ベルは、摺動部のスベリが悪い様で、ちょっとヤスリを掛けようかとも思ったのですが、グリス塗るだけで良くなりました。

5件目、いつものIWAYAの犬です。

とりあえず、左前脚の骨折との事。分解してみると、いつもの「後ろ足の位置決め支点」も折損でした。

左前足は、支点の軸が刺さる部分がモゲてて、エポキシ固定としました。
「後ろ足の位置決め支点」は、いつもの様にφ4mmのプラ棒で補修。

入院で預かりにしてはいたのですが、ここまで開院時間内に補修して、終わったら置いて帰ろうと思い、ぬいぐるみを着せ直して試運転してみたのですが、なんか動きがおかしい…。足のバランスが悪くて、ちゃんと歩けないし、「イザリ」の動きも傾いてる…。

止む無く持って帰って、再度分解。右側の前足のクランクが外れてる(下記写真矢印部)…。固定されてないけど、普通外れないんだけど…と思って見てると、右前足の支点部に亀裂が入ってました。

多少盛っても大丈夫そうだったので、エポキシで盛って固定としました。
この補修で、ちゃんと歩くようになりました。

ここからは困難なヤツ…。6件目、メリー。

これは、開院中に他のドクターが対応してて、プーリーベルトの伸びによる空回りの判断で、ぼくの手持ちの手芸用コードで代替するべく手伝ってたのですが、どうしても回らず、ぼくが持って帰る羽目になった物です…。

家に持って帰って、長さちょい変えてコード繋ぎ直して再チャレンジするも、どうしても回らず…。
ケース閉めないとギアが定位置に固定されないので回らないし、閉めると中が見えず、どうして回らないか分からない…。
プーリー軸の両端をマイナスドライバ等で押さえて、奥さん(妻)に電池直結して貰って、回らない状況を観察。
プーリーちょっと浮かすと回り出す。その時、「ガシュー」っとこすれる音がする(開院会場では、うるさくて気付かなかった)。プーリーの下側がケーシングに当たって、見るとケーシングがだいぶ削れてます。どうして?最初から?

リューターでケーシング側をだいぶ削りましたが、まだ当たる。これ以上削ると、穴が明きそう…。モーター側に余裕が無いのだけど、プーリーずらして、なんとか当たらないようにしました。

これで回るはずなのに、組んでみるとまだ回らない…。何回も組んだりばらしたり。
また押さえて回転を見てみると、プーリーは回ってるのに、ウォームの次のギアが回ってない?

写真じゃちょっと分からないかもしれませんが、ウォーム右側、1mm弱程歯が摩耗していびつになってました。これを予備品に取り替えたら、や~っと回る様になりました。

さて最後、7件目。夢の子ネルルちゃんです。

「目(瞼)が途中で止まってしまう」との事。6件目に続いて、プーリーベルト滑りの予感…。

いつもの様に、電池BOXを留めてる結束バンドを外して、頭の手縫い部分をほどいて分解。(いつもは、薄い白い布のミシン掛けの部分もほどいてたのですが、今回は、ミシン掛け部はほどかず、手縫い部分だけほどいて修理チャレンジ。)

顔(目)の部分だけを分解したいのですが、胴体・首から全部バラしてかないと、頭部が分解できない構造…。バラバラにして、やっと駆動部に到達。
ギアBOX、最初反対側を開けて、おやコッチじゃなかった。

プーリー側を分解。ベルトは…、伸びてるっちゃ伸びてるだろうか…。

φ1mmの手芸用コードを繋いでベルト作成。取り替えて組み戻して回してみるも…、回らない…。
どこが回らないか、結局反対のギアの側を分解して確認。ケース組まないと、ギアがしっかり定位置にこないので確認しづらいが、指先で軸を押さえて動作確認してみると…、回ってるのに噛んでないギアが!

ピニオンの端っこの方で噛んでたようですが、その端っこの方の歯がボロボロになってる~。
摩耗というより、油?グリス?で劣化して朽ちたような感じ。どうという事のないm=0.5、10Tのピニオンですが、下の平歯車と一体なので、単純な取り替えだけでは無理…。ピニオンのとこだけ切り落として、何とか繋ぐことにします。

ノコで切ろうとしましたが、全然切れず。カッターで押したら、簡単に切れました。
さてどうしよう…。スペースに余裕があるので、平歯車側の軸に少し溝を切って、ゼムクリップを切った物を凸にして、ピニオンに噛ませる事にしました。(ああ、写真がちょっとピンボケ…)

これで軸にピニオンを圧入して、平歯車をセットしたらば、ちゃんと組で回る様になりました!
結局、プーリーベルトは替える必要なかったのかもしれませんが、全部組み戻して縫い戻して、終了です。
コメント
  • 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でシェアする