Article header library 129501  1

[お掃除ロボ/バッカス] 第3話 ふるえるぞハード!燃えつきるほどヒート!

実装配線図に「弱点」はない

こんにちは、バッカス です。
前回の、[お掃除ロボ/バッカス] 第2話 ありのまま、今起こったことを評価するぜ!ではセンサの評価を行いました。
この第3話ではいよいよHW製作に入ります!

回路図を作成したら、半田付けを行う前に実装配線図を作成します。
これは先輩社員に作った方が良いよと何度も言われました。

作らなかった タロー先輩の記事 と作った ウッディ先輩の記事 を見比べたら、嫌でも作らなきゃという気持ちになります!

ちなみに、私の実装配線図のこだわりは、実際の半田付けと同じように表と裏で作成したことです。
先輩社員からもお客様が作るパターンレイアウトに近いものが作成できたと言って頂けました!

というわけで、実際に作った実装配線図と半田付けが以下になります。
今回は特に部品が多いCPLD層を載せています。

Article header library 129501 pic01  1

実装配線図(表)

 

Article header library 129501 pic02  1

実装基板(表)

 

Article header library 129501 pic03  1

実装配線図(裏)

 

Article header library 129501 pic04  1

実装基板(裏)

ほとんど同じようにできていると思いませんか?

私自身も想像していたよりも飛び配線や複雑な部分を減らすことができて、満足しています!

配線が綺麗になったので、第2話で出てきたGNDと電源ショートを見つけることができました。
配線が綺麗になり、デバッグしやすくなる実装配線図に「弱点」はありません!

CPLDが最も恐ろしいィィ

配線が綺麗になったことによって、様々な問題がすぐ見つかりました。
その中で、特に苦労した問題がCPLDについての問題です。

まずは、こちらの写真をご覧ください。

Article header library 129501 pic05  1

CPLD基板

一見何の問題もありません。
しかし、50ピンと52ピンの2つだけ出力電圧が半減していました。

テスターで調べると、電源とGNDはそれぞれのピンに接続されており、他のピンもきちんと接続されていて、隣のピン同士でショートもしていません。
作成した論理回路も間違っていませんでした。

いったい何が原因なのでしょうか?

解答

実は、50ピンと52ピンが、間にある51ピンをまたいでブリッジしていました。
以下にイメージ図を載せます。

Article header library 129501 pic06  3

50ピンと52ピンのブリッジイメージ

テスターでは、となりと導通しているかを確認していました。
つまり50ピンと51ピン、51ピンと52ピンを導通チェックしていたため、50ピンと52ピンのショートを見つけられなかったのです。

見つけたときは、ピンをまたいでつながることがあるのかと驚きました。
思い込みで細部まで確認していなかったのは、まずかったですね。

突然回り出すプロペラ

半田付けを終えて、いよいよ動かしてみます。
安定化電源につなげて電圧を加えると・・・。

プロペラが勝手に回ったんです!
最初は動作しないはずなのに!

ホラーではないですよ

ひとりでに回っているプロペラに恐怖を覚えましたが、冷静さを取り戻して原因を探ります。

プロペラはCPLDの出力で動作が決まるので、真理値表を調べます。

以下がプロペラの真理値表になります。
プロペラの真理値表
動 作 19 (IN) 21 (IN) 23 (IN) 53 (OUT) 55 (OUT) 59 (OUT) 61 (OUT)
停 止 0 0 0 理論値 0 0 0 0
実測値 0 0 0 0
回 収 0 0 1 理論値 0 0 0 1
実測値 0 0 0 1
排 出 0 1 0 理論値 1 0 1 0
実測値 1 0 1 0
糸下げ 0 1 1 理論値 0 1 1 0
実測値 0 1 1 0
押し出し 1 0 0 理論値 0 0 1 0
実測値 0 0 1 0
1 0 1 理論値 0 0 0 0
実測値 0 0 0 1
1 1 0 理論値 0 0 0 0
実測値 1 0 0 0
1 1 1 理論値 0 0 0 0
実測値 0 1 0 0

マイコンからの入力は (0,0,0) から (1,0,0) が入り、5種類の動作を考えて論理回路を作っていました。
(1,0,1) から (1,1,1) の入力はマイコンからCPLDに入力されなく、特に動作を考えず論理回路を作っていいたため、誤動作が起きるようになっていました。

では、設定していない入力がなぜ入力された?

それは、今回使用したCPLDは信号が何も入力されないとき(LowもHighもないとき)にプルアップされて自動的にHighになるからです。
入力信号がないときは自動的に (1,1,1) になるため、誤動作が起きてプロペラが勝手に回転していたのです。

そこで、(1,0,1) から (1,1,1) の入力がもしも入力された場合も考えて論理回路を作りなおすと、勝手な回転はしなくなりました。

最後に

自分が考慮できなかった半田不良や考慮しなかった動作が原因で問題が出てきました。作業に入る前に思考をめぐらせて、考えぬくことの大事さを実感しました。

次回は、[お掃除ロボ/バッカス] 第4話 ようこそ・・・「ソフトの世界」へ・・・ です。こうご期待!

この記事で使用した商品はこちら

2018年度 翔け新人!エンジニア奮闘記はこちら

翔け!エンジニア奮闘記とは?

マクニカのエンジニアが新人時代に研修中に感じた疑問、制作実習での奮闘、発生したトラブルを解決するまでのフローなど紹介します。個性あふれる新人たちが奮闘から会得した実用的なノウハウを業務にご活用ください。

翔け新人!エンジニア奮闘記 著者紹介はこちら

関連タグ