開発日記(~USB通信編~)
こんにちは、新入社員のAです。
先日、知人の会社ではオフィスにBGMを流しているという話を聞きました。
「へぇ~いいね!」と思いましたが、たしかにUSENを導入している工場なんかもありますね。
私も自宅で作業(家事やPC・読書)しているときは音楽を流しています。
気分が乗ったりリラックスできますし、余計な雑音が消えて集中できる気がするんです。
仕事中に関しても静かすぎるのはちょっと苦手でして。
静かな方が集中できると思いきや、逆にちょっとした物音が気になって集中が途切れるので、音楽が流れてるほうが気分的に良い気がします。
とはいえ人によって感じ方が違うので職場に取り入れるのはなかなか難しいかなとも思います。
話が飛躍してしまいますが、音楽に限らず全てが自分の最適な環境で仕事ができたらどれくらい効率が上がるのかはちょっと興味あります。室温、PC、机、椅子、作業スペース、試験機材、休憩時間、人間関係等、全てが自分にとって最適だったら仕事効率は爆上がりするかもしれませんね。
さて、今回は日常の開発風景について少しご紹介してみようと思います。
テーマは技術習得も兼ねて「PCとモータドライバ間でシリアル通信を行う」ための開発についてです。
弊社の標準モータドライバにはシリアル通信用の端子を搭載しております。標準ではシリアル通信機能は使用しておりませんが、お客様の要望によってはシリアル通信機能を組み込むことで、アプリを使用してのデータの取得やパラメータ変更等を行うことが可能です。
ただし、その際には下の写真の様なUSBシリアル変換機能が搭載された専用の通信ケーブルが必要になります。(価格は数千円程度)
もし通信機能を搭載した機種を量産するとなった場合には、専用ケーブルを購入するのはコスト的にも入手性についても現実的ではありません。
そこで!
USBシリアル変換回路をドライバ基板の方に搭載しようという話になりました。
それによってモータドライバとPC間で通信する際に高価な専用の通信ケーブルが不要になり、下の写真の様な数百円程度で買える市販のUSBケーブルでも通信が可能になるわけです。
ということで基板にUSBシリアル変換回路を搭載するべく開発を始めました。(今回は標準のドライバ基板ではなくカスタム基板に搭載します)
この様なカスタム対応が必要な場合はご相談ください。
1、調査
まずはUSBシリアル通信について調査します。
書籍やネット検索、チャットGPT等も駆使して情報を集めます。通信規格や電源、必要な部品等調べることが多いです。調べた内容に不明な点があれば、それに対してまた調べるといったループにハマることもあり、なかなか時間の掛かる作業です。なんかマトリョーシカみたいな、、、いやちょっと違うか。
この段階で全てが分かるわけではなく、開発を進めていくうちにわかってくることもありますし、時間も無いのである程度分かってきたところで次に進みます。
2、回路検討
ある程度情報収集したところで回路に落とし込みます。
まずは手書きで回路をメモ。
仕様を見ながら部品の選定や、外部との接続を検討します。
雑に書きすぎて、しばらく経ってこのメモを見ると自分でもよくわからないといったこともあるので、後からでも読めるように気をつけています。
ある程度の構想ができたら必要な部品も購入します。
3、仮回路テスト
回路メモをもとにブレッドボードに部品を乗っけて配線しつつ動作テストします。
ここでうまくいかないことも多く、根本的に回路構成が間違っていることもあれば、ちょっとした接続ミスなんかもあります。
今回も一発で成功とはいかず、何度もトライ&エラーを繰り返しつつ動作するまでガンバリマス。
通信アプリを使用してテストをったので、アプリ制作者のK’z氏の力も借りました。
4、図面作成
テスト回路の動作が確認できれば、修正も含めて回路CADで正式な回路図を作成。
新しい部品を使用するので回路図用の部品ライブラリも自作します。
基板の部品配置を考えつつパターン図も作成。
今回はベースとなる基板にUSBシリアル変換回路を追加するかたちになるので、まずは基板上に部品を配置するスペースを確保します。既存の配置部品を移動したり、配線経路を変更したり。試行錯誤しつつ全部品が基板に収まるように配置配線します。
既存の配置配線を変更することになってしまうので、それによって正常な既存回路に不具合が生じることが無い様に慎重に何度も確認します。
回路図作成後、出来上がった回路データで基板製造の発注をし、基板が届くのを待ちます。
5、基板実装
基板が届いたら部品を実装します。
リードタイプの部品を使った小規模な基板の場合は社内で実装することもありますし、表面実装タイプの部品を使用している場合は外注します。
半田付けは細かい作業です。イモ半田にならないようにしっかり半田を溶かして部品をつけましょう。
6、基板評価
出来上がった基板を評価します。
ブレッドボード上のテストでは動作したのに、出来上がった基板ではうまく動作しないということもあるので実際に動作確認できるまで安心はできません。
今回は既存の回路に新たな回路を追加したかたちになるので、既存回路が以前と同様の動作ができているかという点も確認します。
ということで電源を入れて動作確認していきます。
いきなり電源を入れるのは怖いので、基板の電源ラインがショートしていないことだけは事前に確認しておきました。
まずは既存回路の動作を確。OKです。
続いて今回追加した通信回路のテストをしてみますが・・・通信できない。。
落ち着いてもう一度電源を入れ直してみます。
・・・通信できません。
原因を調査します。
回路図と見比べ、テスターで導通チェック、部品の確認等、考えられる点を一つずつチェックしていきます。
原因調査中・・・・・・・・・⌛️
しばらく調査を続けていると、原因を発見しました!
直接的な原因は抵抗の付け間違えでしたが、根本的な原因としては基板パターン図の部品記号の記載ミスでした。
リードタイプの抵抗だったので、数分で付け替えは完了。 合わせてパターン図も修正しておきます。間違え箇所の修正によって無事に通信できることが確認できました。
今回は比較的早期に原因がわかりましたが、なかなか原因の特定ができずに気づいたら1日終わっちゃったなんてこともあります。
ここまでの段階で通信機能の確認はできましたが、その後、外部と接続する場合の絶縁問題なんかも発覚しましたし、改めて自分の知識不足を実感しております。
まぁでも、開発の段階でいろんな失敗を経験することも人の成長には必要かなと思いますね。
イーロン・マスク氏の名言にもこのようなものがありました。
「Failure is an option here. If things are not failing, you are not innovating enough.」
と言い訳をしつつ、今回は以上です。