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

トドお父さん通信

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

最近は、おもちゃ病院でラジコン修理を預かることが多くなりました。

実はラジコン、苦手なんです。

 

でも、そうは言ってられません。

つぎからつぎへと修理依頼が来るからです。

 

今回は大宰府で預かった、ラジコンバギーです。

後進はするが、前進はしないという症状です。

 

 

まずは基板を解析するために分解していきます。

 

うっ、こりは大変そうです、防水のため基板へ行くケーブルが接着剤で固められています。

これを外さないと、基板を取り出せません。

ベテランドクターさんに相談しました。『M君、そりは穴を開けてほじくりだすしかないよ』

ゲナです。

これだから、ラジコンの修理はいやなんですよぅ(涙目)

 

仕方がないので、1.5mmのドリルで接着剤に穴を開けていきます。

 

 

最後はアンテナ側のケーブルを切って対応しました。

基板に水がかかって汚れていたので、基板クリーナできれいにします。

 

これが基板になります。

 

上の2個のICが後輪のモータをまわすブリッジICのようです。

品番は左がNP9926P、右は4953とマーキングがあります。

品番でググりましたが、マッチするICが見つかりませんでした。

(下のハンドル用のモータドライバはMX608Eとマーキングがあり、これはAliでみつかります)

 

後進のモータは回るから、モータドライバは壊れてない? とすると、前段の駆動トランジスタが

怪しいです。上の左側のICの下のトランジスタ2個、左が前進用、右が後進用のようです。

 

リモコンから前進信号をいれると、左のm6とマーキングがあるトランジスタのBase端子に信号が

出てくるようです。ただし、コレクタ側に信号の変化はありません。

これに対し、右のm6トランジスタはコレクタも動作しています。

 

これは、左側のトランジスタが壊れているかもしれません。

 

まず動作している右を外して、チェッカで調べます。

PNPでhfeは300くらいあります。 

やはり、m6マーキングのトランジスタはS9015のようです。

 

次に左の壊れているかもしれないトランジスタを外して調べます。

SMD部品なので、足を半田で付けて測定しました。

コレクタの3番ピンが壊れて接続されていないようですね。

 

さすがに、S9015 PNPのSOT23 SMD部品はもっていませんが、S8550 PNP SOT23なら在庫が

あります。 hfeがすこし違う程度なのでおそらく大丈夫でしょう。

外した基板のPADに半田付けをしてトランジスタを再び取り付けます。

 

まず左の正転信号に逆転側のM6トランジスタを実装します。 

テスト運転・・・正転で回った!

これで前進が動くようになりました!

右の後進側には、手持ちのS8550 SMDトランジスタを取り付けます。

こちらも問題なく回転しました。

 

あとは、元通りに組み立てる作業が残っています。

 

基板を入れているフタにあけた穴を、ホットボンドで固めます。

 

ケースを開けるために切ったアンテナには、別の黒線をつなぎました。

もとの電線と半田付けし、それから熱収縮チューブで保護します。

周波数は40MHzとありますが、長さが若干長くなりました。

 

 

あとは、順番を思いだして、ネジを止めていくだけです。

ボディを固定します。

 

前輪を固定しているパネルを取り付けます。

 

外していたサスペンションを固定。

 

できました1 これでミッションコンプリート!(のはずです)

また、おもちゃ暴飲まで持って行かんばなりません。

今日も持ち帰り深夜残業、お疲れさまでした!

 

とおもったら、また鳥栖で大型ラジコン ランドローバー の持ち帰り修理が入りました!

モータから煙が出て動かんゲナです。

 

まさにラジコン地獄、トドお父さん涙目です!

 

関連記事

【おもちゃ病院】60年前の学研 ラジコン フォード マスタングの修理
【おもちゃ病院】またまたJOZENのラジコンバギーのお持ち帰り修理です(前編)
【おもちゃ病院】またまたJOZENのラジコンバギーのお持ち帰り修理です(後編)
 【おもちゃ病院】ラジコンを2台 お持ち帰りで修理しました(前編)
【おもちゃ病院】ラジコンを2台 お持ち帰りで修理しました(続編)
【おもちゃ病院】大型ラジコン DeeRC社1/12サイズ ランドローバーを修理しました
【おもちゃ病院】大型ラジコンバギーをお持ち帰りで修理しました
【おもちゃ病院】動かないトイストーリー ウッディ ラジコンの修理
【Part2 完治】預かっていたマリオカートバギー基板が動きました!
【Part1】預かっていたマリオカートバギー基板が動きました!

 

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

 

PZEM-004Tを使った電力計、前回の続きになります。

まずプログラムの説明をします(といっても、ラジオペンチさんのプログラムからの変更部だけですw)

新ファーム1

新STM32ファームの先頭部です。

 

EEPROMのREAD()WRITE()ができるようにして、PZEM004Tのライブラリをincludeして、

Wire.h でI2Cが使えるようにします。

Adafruit‗GFXはグラフィック、Adafruit‗SSD1306は”0.96ディスプレイで液晶文字を描画する

ライブラリです。 MsTimer2.hは、ms単位でタイマーを設定して割り込みがかかるライブラリです。

STM32では使えませんのでコメントアウトして、代わりにHardwareTimerというメソッドを使います。

 

次は各種係数とクラスライブラリのインスタンス生成です。

 

VCal, ICal は測定値の補正係数です。 値が分かっている負荷で校正しますが、とりあえずこのまま。

SelPin, EntPinは、タクトSWの入力用のポートを設定します。空きのPB12、PB13を設定します。

次はPzem004のシリアル通信のポート設定です。

 

当初設定していたPB7(RX1), PB8(TX1)はSerial1として、USB CDCのシリアル通信に使われている

ので、Serial2をPzemとの通信用に使います。PortはPA3(RX2), PA4(TX2)を指定します。

 

Arduinoはソフトシリアルですが、STM32はUARTが数本ありますので、ここはHardwareSerialメソッ

ドで、Serial2を生成します。

PZEM004v30クラスライブラリでpzemを生成するときのパラメータとして、Serial2を指定すれば

STM32とPZEM004間で通信ができるようになります。この辺はライブラリのExampleを参照くださ

い。

HardwareTimer timer(TIM1)は、前に言ったようにSTM32割り込みタイマーのオブジェクトです。

STM32はタイマー資源がTIM1,TIM2,TIM3… と沢山ありますが、ここではTIM1を指定してます。

 

つぎはsetup()です。

Wire() メソッドのSCLとSDAのポートをそれぞれ、PB6とPB7に設定します。

液晶ディスプレイが表示しない現象が発生したので、I2Cクロックを400 → 100kHzに変更しました

が、後述するようにこれは原因ではなかったのでコメントアウトしています。

 

次のdelay(200)ですが、BluePillのリセットがArduinoより早く、液晶ディスプレイSSD1306のリセットが間に合わないため、SSD1306のセットアップができず液晶が反応しませんでした。

ディレイを100mS以上入れるとOKになりました。(これは液晶を壊したかと、結構焦りました)

 

つぎはselectボタンとenterボタンの入力設定です。どちらもプルアップして通常”H"です。

BluePillの緑LEDはPC13に接続されていますので、デバッグ用にここも出力ピンに指定しています。

selectボタンを押すと消灯、enterボタンを押すと点灯するようにしました。

 

最後のuuPinOutputLow()ですが、ラジオペンチさんの配慮で未使用のピンを出力にして”L"で設定するようにしています。

ここはArduinoではなく、STM32なのでピンの名称が違うので、一応コメントアウトしました。

 

さて、setup()の後半です。

測定間隔はset intervalでtimeTologに設定されます。

次に、measure(), logPrint(), dispInf() はコメントの通りの動作をします。

そのあとのMsTimer2はSTM32で使えないので、HardWareTimer で書き直しています。

クロックが72MHzなので、Prescaler7200 Overflow 1000にして、7200x1000で分周し

1秒周期でTimer割り込み(timer2IRQ) を入れます。

そのあとは、selectピンとenterピンはピン変化(立ち下がり) で割り込みを入れる設定です。

 

以上のような内容が異なるだけで、他の部分はラジオペンチさんが作られた内容と同じです。

 

ソフトの説明が終わりましたので、次はハードウェアの説明ですね。

 

ポートが変わっただけで、ほとんどラジオペンチさんの回路図と変わりません。

まずは、ブレッドボードで動作を確認します。

 

前回説明しましたように、まずはSTLINK/V2でBluePillへの書き込みを確認しました。

STM32CubeIDEでも、ArduinoIDEでも書き込みができました。

 

次に、PZEM-004Tとシリアル通信を確認します。

PZEM-004TにTx、RxのLEDがついていますので、1秒毎に点滅すれば接続はOKです。

 

SSD1306 OELD 液晶ディスプレイを接続します。 I2CポートをPB6,PB7に指定して動作しました!

ノードパソコンの電源をつないで、きちんと測定できているらしいことを確認しました。

 

TeratermでパソコンがわにUSB経由で測定データも送信できています。

 

これで動作確認は完了です、次はケースに組込みを行います。

ダイソーとかを探したのですが、適当なケースが見つからず。

 

仕方がないので、少し小さいですが前に秋月で買ったポリカーボの117-Mというケースに組込みます。

サイズは94x64x22.6mmと小さいですが、なんとかこの中に入れましょう!

 

PZEM004Tのケースはあきらめます。

 

 

 

 

こないだコメリで買ったマキタのドライバドリルが活躍します。

 

穴開けを部屋の中で行うと切りくずゴミの処理が大変です。

3mmネジとスペーサでムリクリ押し込みます。

 

あとはSSD1306 OELD液晶と、タクトスイッチ2個を付けるだけです。

 

できました!

なんとか動作しています。

 

最後は飛ばしましたが、なんとか電力計を作ってSTM32F103 BluePillに移植し、ケースに押し込む所までできました。

あとは内蔵のRTCを動かして、SD Card基板を追加し、FatFsでSDカードに記録する処理を入れる

ことができれば完璧なんですが、なにしろケースが小さいのでムリゲーそうです。

ケースの上のAdafruit SD Card基板

 

それでは、今日はこの辺で。 皆さんお休みなさい!


それでは、皆さんおやすみなさい
関連記事

 

   完成した電力計ロガーです

 

大分前にAliExpressをサーフしていて、PZEM-004Tという電力計をポチっとしていました。

いろんな仕様があるのですが、自分が買ったのは電源を直接ケースにいれて電流検出抵抗で

電流値を検出するタイプです。 電流容量も10Aと低めです。

 

 

最近、円安で政府の補助がなくなったこともあり電気代が高くなったので、これを使って

電力計を作ってみようと思い立ちました。

 

ラッキーなことに、ラジオペンチさんのホームページにSSD1306 OLED表示器を組み合わせて

電力計ロガーを作る記事があったので、早速作ってみることにしました。

 

 

まずは、ブレッドボードで組んでみます。

記事通りまずは、Arduino Nanoを使って作ってみました。

回路図は、こちらのハード製作編から拝借させていただきます。

 

 

回路図です(実態配線図)

 

このとおりにブレッドボードで組んで、USB経由でArduinoのスケッチをダウンロードすると

あっけなく動作しました。 ACケーブルはおすすめのダイソーで買った1m 300円のものです。

 

 ノートPCの消費電力測定中

 

ここで欲がでてきました。『Arduino NanoはAVR 16MHzで能力が低いため、SDカードへの記録等

の対応が難しい。手持ちのSTM32F103C BluePillに移植したらどうだろうか?』ということです。

 

ラジオペンチさんがベンチマーク表を作られているので、転載しますね。(ありがとうございます)

 

これによると、Arduino Nanoに搭載されているATmega168 (16MHz)はマンデンブロ描画に1018mS

STM32F103 (72MHz) は178mSですから、約 5.7倍のパフォーマンスがあるということになります。

 

それでは、STM32F103C8T6を搭載したBluePill基板の紹介です。

AliExpressで200円前後で買えるので、やすいですね。

自分はおもちゃ修理にSTM32を使うアイデアがあるので、勉強用に3枚買いました。

 

その場合は、開発環境はSTM32CubeIDEかKEILというものを使う必要があるのですが、

今回はArduinoベースなので、Arduino STM32Coreというものを使います。

これだと、STM32でArduinoのライブラリが使えるので、非常にラクですね。

 

ArduinoのボードマネージャでSTM32Coreというものを組み込むのですが、この辺の情報は

巷にあふれていますので、割愛します。ただし、Arduinoは最新のVerを使ってくださいね。

 

もうひとつ、BluePillを使うためには、Amazonで中華製のST-LINK/V2というプログラマを

買うことをお勧めします。 自分の場合は、500円くらいで十分使えました。

 

 

ST-LINKが必要なのは、中華製の廉価BluePillはプログラムが書き込まれてないまっさらの状態のためです。 例えばArduinoに接続する場合、BootLoader(USBのCDC)が書き込まれていれば、BOOT1のJumperを”1”に切り替えてUSB経由で書き込みができますが、まっさらではお手上げです。

 

そこでSTLINKで接続すれば、BootLoaderの書き込みをを行うことができるので、Arduinoから書き込み

ができるようになります。

 

ここでも、細かい話はネットの情報で確認下さい。

ST-LINKで接続すると細かい話はおいといて、プログラムの書き込みができるようになりました。

 

さて、Arduino Nanoから、STM32F103C8T6 BluePillに移植したプログラムですが、こちら

おいています。

 

回路図はこちらです。

説明が長くなってきたので、続きは次回にしますね~。

こうご期待 !


それでは、皆さんおやすみなさい
関連記事