トドお父さん通信 -2ページ目

トドお父さん通信

北部九州在住 高BMI中高年のオタク趣味の活動記録

みなさんこんばんは。トドお父さんです。

 

今回は、I2C Scanner のATTINY85からATTINY402への移植です。

ちなみにこちらが、ATTINY85での前回の記事です。

[Part3 完成です] ATTINY85でMicro I2C Scannerを作りました!

 

ラジオペンチさんのブログ記事を参考に、ATMEL STUDIOで、ATITINY85に書き直し、

 

① 最上列(8データ分)を表示せず、代わりに最下列(8データ分)がゴミデータを表示するバグ
② I2Cアドレスが78h(SSD1366の場合)と偶数8bit表示になっている。これを7bit表示3Chに修正する
対策を行いました。
 
今回は、価格が安価なため、おもちゃ病院の修理用に使いはじめた、ATTINY202/402への移植を
行いましたので、記事としてポストしますね。
 
つつじが丘おもちゃ病院の大泉さんが、おもちゃ修理用のオルゴール基板として、ATTINY402の
サポートを始めたのがこの記事です。
 
その後、色々な機能を入れてバージョンアップされ、こちらが最新版になっています。
 

WAVファイルを音声HEXファイルに変換して、音声再生(Sound Player)をするだけなら、容量の

小さいATTINY202でもOKですが、オルゴール対応では音符ファイルをCPUのメモリに書き込む必要

がありますので、最低でも4kB入ったATTINY402が必要で、欲を言えば16kBのATTINY1614が望ま

しいと思います。

 

このように、つつじが丘おもちゃ病院の大泉さんが、音声再生用のCPUとして、ATTINY1614を

始めとするNew ATTINY系列を使い始めたので、自分も対応せざるを得なくなったというのが実情

です。

というわけで、New ATTINY事始めとして、8ピンのATTINY202を使い始めたのが、この記事です。

ATtiny402はメモリが4kBあるだけで、他は同じです。最近は402を良く使うようになりました。

[Part1] ATTINY202への書き込みとプログラムをやっています!

 

レガシーのATTINY85等と、New ATTINY 0/1/2との違いは、

① 書き込みが、3線のAVR ISPから、1線のUPDIになった。

② プログラムの書法が、ポートアクセスがSTM32ライクな構造体になったのを始め、大幅に変わった。

③ まだ、よくわかってません (爆)

 

開発環境は、おなじATMEL STUDIOが使えるからいいですが、書き込み機はAVRISP MK2が使えない

ので、UPDI Serialというものを自分で作りました。

[Part2] ATTINY202への書き込みとプログラムをやっています!

 

8ピンのATTINY202/402はピン数が少ないので、UPDIプログラム用のPA0端子をGPIOで

使いたいときは、FUSEを書き換えてUPDI → GPIOに設定しますが、今回は必要ないですね。

 

閑話休題:前回のATTINY85のプログラムをATTINY402に書き換えたプログラムをここに置きます。

ここからは、置き換える手順を説明しますね~。

 

SS1306とTiny402接続の回路図も置いておきますね。

SSD1306のSDAとSCLはPA1とPA2に、I2C scan用のssdaとssclは、PA6とPA7に接続します。

 

1. ターゲットDeviceの切り替え

 I2C Scanner_t85を

  CAVR Studioの上のメニューで Project → I2C scanner propertyを選択して開きます。

change deviceボタンを押して、デバイスを選びます。

 
ATTINY402を選んで、OKします。これでターゲットデバイスがTiny402に変更されましたね。
 
次に、2.プログラムの変更です。
変更するのは、まず grobal.h
ここをこんな風に修正しました。New ATTINYのポートアクセス書法に合わせます。
 
 
次に、port.h を編集します。
Tiny85では、こんな感じです。
 
これも、Tiny402のポートアクセス書法に合わせます。
 
I2C.cpp は一部を変更します。
 
bitclr()を書き換えます。
 
I2C.hもポート書法を書き換えます。Tiny85の記述から、
 
Tiny402での書法に書き換えます。
 
最後に、main.cppの書き換えです。元のTiny85から、
 
Tiny402でのClock設定 SYSCLK_Init()を入れます。
クロックを内部クロックに設定し、1/4分周します。FUSEで内部クロックを16MHzに設定すると
4MHzになりますね。
I2C.cppと同様、bitclr()もTiny402での書法に書き換えます。
以上で、プログラムの修正は終了です。
Build → Rebuild Solusionでコンパイルしてくださいね。エラーが出なければOKです。
出力指定をReleaseか、Debugで指定したフォルダにelfファイルとHexファイルが出力されます。
 
3. 次はデバイスへの書き込みです。エラーがなければ、出力されるHexファイルを使います。
こちらのポストを参考にしてください。
 
FUSE書き込みは、AVRDUDESSのAdditional command argsに
-U fuse2:w:0x01:m を入れるだけでOKです。
 
さぁ、書き込みができましたよ。
Tiny85の時と同様に、SSD1306 OLED表示機にアドレスが表示されればOKです!
ここでは、HV対応のUPDIプログラマを使いました。
 
次は、基板に部品を実装してI2C検出ガジェットをつくらんば、いけませんね。
 
お疲れさまでした。

前回は、マリオカートの基板の後輪モータ駆動用のHブリッジICを交換したが、回転が弱弱しい

ので、手戻りしたところまででしたよね。

 

それからコロナに罹患したので、しばらく手付かずでした。

8月17日が、久留米のおもちゃ病院の開院日だったので、夏休みの宿題のように、頭にひっかか

っていました。

I2Cスキャナの宿題を先に片付けたので、次はおもちゃ病院の宿題2つを片付ける番です。

① おもちゃ修理用のSound Player基板を小型化する(60x50mm → 50x35mm)

② マリオカート基板の後輪駆動が力強く動くようにする。

 

①は別にレポするとして、今回は②ですね。

モータドライバ用のHブリッジIC、中華のAli Expressでいろいろ出ています。MX630bという

ICが一番電流が流せそうですが、データシートがない。データシートが見つかるICで、最も

電流が流せるのは。MX615bでした。 データシートは下記です

 

通常動作で電流値は1.7Aになっていますね。これで少しは安心です。

 

さて、交換してみましょう。

MX615b Ali Expressで5個 480円くらいでした。遅い時は4週間、今回は2週間ほどで届きました。

 

 

 

 

前に交換したMX08Lを取り外し、MX615bを付けます。だいぶ交換もなれてきました。

ICが外れました。

  

半田吸い取り線できれいにします   きれいになりました

 

ICが外れた状態で、急がば回れ、基板の回路図を手書きでトレースしました。

保存する必要もありませんので、こんなのでOKです。

電流検出とおもわれた、R010 は、COBの制御回路とモータ駆動のパワー系のグランドを

分離しているので、接続点にこの10mΩを介してアース間をつないでいます。

 

パワー系は、モータドライバのVddには電池から、PTCを介して直接、VccやCOB制御回路の

3Vには、LDO ICで3Vを生成して繋いでいます。ドライバへは直接、COBには10Ωを介して

繋いでいます。LEDの電流制限は1.5kΩです。

 

いろいろと分かってきましたね。 FZMOS-5Xの接続回路は、MX08やMX615bと同じでした。

1PはEnableではなく、内部のロジックを動かす(A相、B相を検知する)ためのVccでした。

 

さて、これからMX615bを実装して動かしてみます。

あれ、モータが動くとモータ駆動電圧Vddが低下していますね。

モータに250mA流れると、1V近くに低下します。ペアリングを示す赤LEDも不安定になります。

 

その際の写真を失念したので、前の画像です。 Vdd電圧が1V近くに低下していますね。

電池から、Vddまでの抵抗値を測ると10Ωくらいありました。どこが原因でしょうか?

 

まず、PTCの両端は… 10Ωもあります!

ドライバ破壊以外の原因は、過電流防止用のPTC(パワーサーミスタ)の特性不良でした。

ここは0Ω~1Ωくらいでないと困りますね。

 

試しにTCの両端を追い半田してみました。

すると、0.5Ωに下がりました! 半田クラックだったのでしょうか?

上がモータのA出力電圧、下がVdd電圧です。 モータ回転前。

 

上がモータのA出力電圧、下がVdd電圧です。 モータ回転中。

ドライバのA出力をみると3V近くでるようになりました。モータのトルクも十分です。

定電圧電源で動作させています。付属のLiPO電池だと、もっと電圧低下は少ないです。

 

PTCの不良については、とりあえず様子を見ることにしました。

PTCなんて部品は持ってませんので、このまま経過観察しましょう。

 

さて、週末に久留米のおもちゃ病院にもっていって、組み込んでもらいました。

基板も組み込みます。

 

組み立て中。左右のステアリングが逆接続でした。

 

さて、組みあがりました。テスト走行です。

おっ、元気に動きますね。

ミッション・コンプリートです。

 

3か月間もドクターさんをたらいまわしにされた、難病のマリオカート君

無事完治してよかったです。

 

【追記】PTCって、ポリスイッチのことなんですね。

ポリスイッチなら、秋月電子にいろんなバリエーションがあります。

 

技術資料もありますね。さすが秋月

ポリスイッチの概要と選定方法

ひししぶりにおもちゃ病院ネタです。

 

1か月ほど前 久留米おもちゃ病院に出勤したときに、「Mさん、ハンダ付け上手ですね、このマリオカートの基板を直してくれませんか?」とおだてられ預かったマリオカートバギーの基板とモータのセット。

 

前輪(左右ステアリング)は動くが、後輪が回らないとのこと。

 

 

数か月前から何人ものドクターさんに回されているとのことで、モータ駆動用のHブリッジICを

交換する必要があるということでした。

 

基板を見てみると、HブリッジIC (8ピンSOP)の刻印はFZMOS-5Xと書かれています。

このICのデータシートを始め、情報はネットで見つかりません。この方の解析情報のみ。

 

 

この接続を信じて、オシロをつないで制御信号と出力電圧を見てみました。

 

 

上2CHが、A相、B相の制御信号。 下CHがA, B出力です。

出力が ノイジーでバタバタしていますね。

 

ちなみに、こちらは正常な前輪モータ駆動波形です。(制御信号は入ってません)

  

 

こちらは、ちゃんとA,B出力に電圧が出てました。(後で考えると電圧が低かったですが……)

モータドライバICが壊れているのは間違いないでしょう。

 

さきほど調べたピン配置、音声再生用に買った、手持ちのMX08Lと同じです。

さくっと交換しましょう。

SOP ICの交換は、まず① 両側のピンにハンダを盛って、半田ごてを2つ使って両方から熱して

ICを外します。

② 半田吸い取り線で、残ったハンダを丁寧に吸い取ります。

③ その後、端のピンに少しはんだを盛って、位置を慎重に調整しながら、ピン1つを半田付けします。

④ 続けてICの位置に気を付けながら、残りのピンを半田付けします。

⑤ ピン間がブリッジしたら、半田吸い取り線を当てて余分な半田を除去してブリッジを直します。

左上のICを外します。

 

  

  半田を盛ります。       半田こて2本で外します。

 

MX08Lに付け替えます。

 

さて、HブリッジICの交換が終わりました。

この、MX08L の仕様を下に示します。

 

 

駆動電流が通常で1A、最大でも1.5Aと少ないですね。
本当は、通常で1.5Aくらい流せるHブリッジICがあるといいんですがね。
 
さて、交換が終わりました。
さきほどの、信号を再度みてみましょう。
 
  
おうっ、今度は前輪と同じように、A相、B相を入力すると、A出力、B出力に
電圧がでて、後輪モータが回転しますね。
 
後輪はディファレンシャルがあるので、軸を抑えると止まるので、こんなもんでしょうか?
(実は、本来はもっとトルクがあるということは、後でわかりました……)
 
次の週は、お隣の鳥栖市のおもちゃ病院があったので、喜び勇んで持っていきました。
依頼されたドクターさんに渡して、マリオカートに組み込んで動作確認すると!?
 
「Mさん、これの動きがおかしいですよ。こちら(正常動作品 ルイージ?)と比較すると
 モータの回転が弱弱しいですよ!」あれっ、そんなはずは!?
 
修理した時は、もっと力強く回っていたと思ったけどなぁ。
「わかりました、モータドライバICが手持ちのもので、1A品だったためかもしれません。
 もう少し流せるドライバICを探して交換します!」って、まさかの手戻り。
 
次回Part2に続く!