ハードウェア」カテゴリーアーカイブ

どうしてもCAN BUSが動かなかった

CAN BUSってなに?

CAN BUSとは…ボツシュが開発した車両用のネットワークであり、これにつなげられると車速や燃料噴射量などを取得できる。

車両にはOBD2端子というものがダッシュボード下に出ていて、自動車工場にある自動診断装置を接続すると、車両の情報を読んで、故障を診断する。厳密にはコマンドのハンドシェイクによってプロトコル名が違うのだが、基本はCAN BUSからデータを読んでいる。

我々素人がCANを読むにはOBD2アダプタというものを買えば、基本的にはOK。安いし、スマホのアプリにBluetoothで飛ばして電子メーターとか可能になる。

だから、わざわざハードウェアを作る理由は、実はあんまりない。でも、昔からスマホでドラレコとかやっていた身から言わせてもらえれば、スマホは「設置」するのも「接続」するのもけっこう大変だ。正直言ってだるい。

車両機器は、できればダッシュボードにがっちり固定しておきたい。Raspberry Piの場合はHDMI出力があるから、CANが読めれば電子メーターや累積燃費系みたいなものをリッチにつくることができるだろう。

どうしてもCAN BUSが動かなかった

これまで作ってきたボードは、大した周辺チップが載っておらず特に問題なかったのだ。でもCANは動かなかった。動かない原因がわからない。

机の上の惨状

机の上の惨状

リフローオーブンの温度ミスで部品が焼けたのか、CANコントローラMCP2515とトランシーバMCP2551の回路の結線ミスなのか、Raspberry PiのOS側の設定ミスなのか、ヤフオクで落としたプリウスのヨーレートセンサーの中古が壊れているのか、もう皆目見当がつかないわけである。

手元にある測定機器といえば、10年前に買ったフルークのテスター1個・・・・・ロジアナもオシロもなしに、表面実装部品のボードを開発すること自体が、あまりに無謀で常軌を逸していたのは否めない。しかしもはや測定機器を買うお金がない。これまで投入してきた金額は5万円以上。到底趣味の範囲で買えるものではなかった。

ふと・・・初心にかえって

実物を目の前にして、なお調べようもないので、ボード設計時のデータを見直すことにした。

図面上はつながっていると思われたが・・・

図面上はつながっていると思われたが・・・

電源にパスコンはいってない素人丸出しの回路図はおいておくとして、一応MCP2515の電源に3.3Vはつながっているように思えた・・・・

ああ、なんということでしょう

ああ、なんということでしょう

しかし・・・基板の方は未配線だったのだ!(図中の黄色い線)

どうしてこんなことがおきたかというと、せっかくEagle CADが出してくれていた警告を1度無視する操作をしてしまった。Eagleの仕様上、未配線を無視すると図面からも消滅するのであった。ワーニングには必ず意味がある。ブラインドでポチポチしてはいけなかった。

手配線で3.3Vを20番ピンに投入したら、めでたく動き出した・・・ここまで2週間。本当に疲れた。

 

初めてフル搭載した基板を焼いた

初めてフル搭載した基板を焼いた

おまえなんかレンジでチンだ!

できあがった基板はCARMOD1、と呼びます。

CARMOD1

CARMOD1

自動車のOBD2端子からCANデータをひっぱってきて、Raspberry Piに渡すだけです。バッテリー直結を見越して、電圧監視とRaspberry Pi本体への電源供給を管理します。ついでに、ソフトではいまいちうまく動いていないウォッチドックタイマーを外部に持ち、Raspberry Piがおかしくなったらリセットできます。

・・・・・できるはずでした!!次回以降に続きます。

リフロープログラム公開&リフローの勘所

スイッチサイエンスのリフローキットのプログラム

Papanda_SSR_Solder_Toaster_Controller_Platform (GitHub)

これ以上持っていても仕方がないのでとりあえず公開しておきます。実は純正プログラムも、最初はPID制御をしていたけど後に辞めた、ということを知ったのはPIDライブラリで書きなおしたあとでした(^^;

TSSOP-8パッケージのリフロー成功

まだ、1608パッドの周辺はダマになってるけど、狭ピッチのICもリフローできるようになってきたよ。

TSSOP-8リフローの様子

秘訣は….

クリームはんだを撹拌すること

でした….マジかよ。要するに上澄みの方は有機溶剤が飛んでいて、十分な濡れ性を確保できていなかったようだ。表面張力で引き寄せられない部分がダマになるってわけ。均一性が崩れるので撹拌しすぎるのも良くないらしいけど。

世間を見回せば、今回買ったような容器タイプじゃなくて、シリンジタイプのものがたくさんあるのね。これは有機溶剤が飛ばないようにするためのものだと思う。

正直、通販だと賞味期限とか保管時の温度とか信頼できないわけだけど、最低限撹拌はするというのが勘所かしら。

 

温度プロファイルの条件出し

最終的な温度プロファイルは以下に。

最終温度プロファイル

正直最初のころとあまり変わっていない。プリヒート工程を2段にしたことくらいかな。パラメータは以下に。

  • ヒーター: 下段のみ
  • TimeInterval: 2000 ms
  • Kp: 107
  • Ki: 0.65
  • Kd: 18.5
  • 工程: 80度/120度/230度

PID使っちゃったのが運のつきなんだけど、PID理論についてはモータのPID制御法 というページが一番わかりやすかったです。今回のヒーターの場合はKdがあまり小さいと追従性がいまいちということがわかりました。

あと色々苦労した経験上、やっぱりプログラムや熱電対だけでは実際の基板の温度がわからないので、下記のような放射温度計がどーしても必要です。参照基板に熱電対をカプトンテープで固定しているのですが、隣接する実際の基板と20度以上違うことも珍しくありませんでした。

熱せないとクリームはんだ溶けませんけど、熱し過ぎるとチップが壊れるので測定重要です。

Eagleの設定し忘れ

余談ですが。

どうも以前から気になっていたのだが、PCBステンシルを使ってパッドに盛ったクリームはんだの量が多い。写真でも確認できるけど1608のパッドはてんこ盛りである。デザインルールはElecrowからダウンロードしたものをそのまま使っていたので再確認してみると…Masksの設定が全くされていない(オール0)であることに気づいた。いつからだ….

Cream項目設定し忘れ

このうちのStopがストップマスクの設定で、Creamがクリームはんだを塗る領域を指定する指標らしいんだな。しかし、今これを気づいたところで、また基板とステンシルを再発注ということになってしまうのであった。

ほんと経験がないから金ばっかりかかってもう….ハード屋さんが身近にいれば色々助かるんだけどねえ。

クリームはんだ、ダマ地獄

まあ写真を見てくださいよ・・・・

ダマみえます?パッド周辺に細かいダマのようなものができてるでしょ。LPC1114周辺はさらに怪しくて短絡している始末。正直手はんだの方が高クォリティですよ。

せっかく炉まで作ったのに。温度プロファイルをアレコレ変えても今のところ打開策なし。ソーク工程を短くすると少しマシにはなりますが力尽きた。

クリームはんだそのものの問題?

温度のせいだけじゃないと思うんですよ。フラックスがヘタってるとしか思えないんだよね。なぜならPCBステンシル経由で塗付する時点ですでにダマっぽいので。クリームはんだの品質は、温度管理等様々な劣化要因があることは知ってて、もっとも安心そうな東京デバイセズから買って、それで駄目ならどうすりゃええんや・・・・

ほんと、ハードウェア趣味は金がかかるなあ。

てなわけで、しばらく日記をお休みしていたのは、こんな初歩的なところで躓いていたからなのでした。

自作基板の部品表を作ってみた

自作基板の部品表を作ってみた

今回は表面実装部品が多いので、秋月で都度買ってくるということもできなそうなので、ためしに部品表を作ってみました。部品はテープでくるので1個単位で買えないものも多いのでロット合計も出してみました。

bom1

最低金額3.5万円!

特に高いのがセンサー類。そして1個から買うのが難しいものが多いから、総額が高くなってしまうのです。600円のチップでも、10個が最小ロットなら6000円になってしまうから。センサー以外でも、小さいから良いと思っていたリアルタイムクロックのM41T62も533円とかなりお高い万円。ところが、ストロベリーリナックスでM41T62のブレイクアウトボードを買うと500円なのよね・・・あちらは基板に電池ホルダーまでついているというのに。量産効果なんだろうけど、少量生産が如何に割に合わないかを体感しています。

1枚当たり部品代をみても4300円は下回らない感じです。それでいてできることと言ったら、Raspberry Piを8V~30Vの間で安全に動かせて、リセットボタンとウォッチドックが追加されて、時計と加速度と気温大気圧計がついて、ファンコン用の12Vスイッチが1つ。これは需要ないですかね・・・商品企画失敗というやつ?

仕事なら、即座にやめるべき案件なんでしょうけど。趣味の場合、ボードを作るまでやり遂げることが重要なのか、改めて自問自答しています。

Raspberry Pi Zero

「金がない」という葛藤の中、さらに運の悪いことにRaspberry Pi Zeroという新製品が出てしまいました。一応GPIOピンに互換性はあるものの、フォームファクター的に従来のHAT基板の外形が合わなくなってしまったことも、悩みを深めた原因です。

sk_raspberry_01

個人がセンサー1チップ調達するのと同じ値段で、Linuxが動く完全な32bit ARM SBCが変えてしまう・・・・そう考えると益々個人が何をやるべきなのか問われそうです。

USBにHDMIまでついたマイコンボードが600円弱という社会的インパクトは大きいですね。消費電力にこだわる用途以外では、ほぼこのボードで賄えてしまうでしょうから、mbed含めたショボイマイコンボードはすべて吹き飛んでしまうかもしれません。

 

Eagle CADのフレーム(小ネタ)

そんなところにあったのか!Eagle CADのフレーム

他人の書いた回路図をみていると、ちょうど地図みたいいに横がA,B,C,D…縦が1,2,3..という枠に囲まれて、右下に署名がはいっているものを良く目にします。それをEagleで実現したくて、ページ設定のようなものがないかなーとメニューを探して数ヶ月。どうしても見つからなくて半ば諦めていたのです。

現在、リフローオーブンをArduinoで作っているのですが、開発元のボードの回路を確認したくてスイッチサイエンスさんの書いた回路図を見たら、Eagleで書かれているのにがついてるじゃないですか!

まさか!と思って再調査したところ、あっさり見つかりました。部品ライブラリの中に・・・・

sheet1

frames.lbrってずばりのファイルがあったよ。トランジスタなどと同じところにこんな枠が並んで入っているの酷くない?

わかっかっつーの!!!!(怒)

PID制御は試行錯誤の連続

PID制御は試行錯誤の連続

制御理論に挑戦したかったのです。例えば、ボイラーから特定の温度のお湯を得たいとか。特定の位置でタイヤや関節を止めるとか。全てに制御理論がある訳です。今回のリフロー炉もそうで、基本的にON/OFFしかできないヒーターで、いかに所望の温度プロファイルを実現するか、がカギな訳です。

reflow0

上記は、ある表面実装部品の温度プロファイルです。140-170度の平坦部分がプリヒートとかソークとかいうクリームはんだの濡れ性を確保する領域で、少なくとも60秒必要。そこからガッとリフロー領域にはいって210-220度、但し183度以上は50秒しか許されていない、という感じです。

今回採用したPID制御には、Kp,Ki,Kdという3つのパラメータがあり、それぞれ比例制御、積分制御、微分制御のパラメータで、本当は決めるのにいくつも推定方法があるのですが、それらを真似してもあまりうまくいかず。場当たり的にパラメータを変えてはオーブンちーん!を繰り返しているところです。

まだリレー回路を組んでいないのでコンソールを見ながらの手動の温度コントロールですが、ここまで追い込んでいます。

reflow1

しかし、色々問題が。今回買った小泉のオーブントースター、密閉性が良過ぎて冷えるのがとても遅いわけです。するとリフロー領域で180度以上の区間がとても長くなってしまうわけですね。実は暖めるより、高速に冷やす方が難しい気がします。とりあえず温度勾配を液晶にダンプするように改造したファームで観察する限り、ヒーターON時は2.5度/s、ヒーターOFF時の自然空冷は0.6度/sくらいなので、全然無理っぽい。いっそ上部天板を開けておく前提でパラメータを出した方が良い気がしてきました。

なかなか基板製造にはいれない……

 

リフロー炉の開発

トースターを買いました

もちろん焼くのはパンではなく基板です・・・・

コントロールキットも買ったが・・・・

スイッチサイエンスのリフロートースターコントロールキットも買いました。あくまでリフロー炉は表面実装部品をはんだ付けする手段に過ぎない!こんなところに手間かけたくない!

・・・・などと思っていたのですが、色々問題があって。組み合わせるソリッドステートリレーに秋月の大容量SSRを選択してしまって、コントロールキットのI/Oの電圧では動作せず。12V DCをMOSFET通してスイッチングしてSSRに・・・などと回路を組んでいたら、ブレッドボードが1枚増えた(汗;

ごついなー

やれやれ・・・とデフォルトのままで動かしてみると、テスト時点で超過熱状態になってしまい。ここで初めて「ああ、このコントローラのプログラムをいじる=Arduinoの開発環境に慣れる」ことに気付くのでした。

そもそもArduinoがつまらなそうだからmbedで勉強始めたのに、もう本末転倒としかいいようがないです。そしてgithubのソースコードを読んでみたら、温度制御なのにPID制御のようなアルゴリズムが全く入っていない、所定の温度に到達したら次の段階に移るというだけの「素うどん」みたいなプログラムでした。

そこで自分で制御理論を勉強し、PIDのパラメータ出し・・・などとやっていると果たしてキットを買った意味があったのか、あやふやになってきます。素直に熱電対モジュールを買ってRaspberry Piにつなげて自前で作ればよかったんちゃうか!!

電子回路CAD Eagleのライセンス登録

電子回路CAD Eagleのライセンス登録

「これしか使えない」という理由で、素人は電子回路CAD Eagleを使っています。無料ライセンスだと商用利用不可で、まあそれは大した問題じゃないんですが、schファイルを公開したりすると、シリアルが書き込まれているらしく、どこかで問題になる可能性があるとのこと。

それではライセンスを買うか仕方ないから、と、日本の代理店のページを見ると….なんか手作り感満載ですごい躊躇したので、本家から登録することにしました。

しかしハマりどころがいくつかあったのでちょっと残しておきたいと思います。

のっけから....

まずReference Number。そんな番号ねーよ?!と思ったのですが、1社で大量にライセンスを買う場合など、自分のための整理番号らしいので適当に入力。

再入力

paypalでlite editionの金額$69を払うと、Cadsoft社からPacking List PDFと Invoice PDFが送られてくる。Packing List PDFを開くと、ダウンロードURLSerial NumberDownload Codeが書かれているので、所定のURLにアクセスし、入力を行う。

ほんまにハマる

ライセンスファイルをダウンロードする前に罠が。画面上にInstallation Codeが出てくる。これはソフトの登録時に必要な番号であるにも関わらず、表示されるだけで、自分でメモしないとインスコできなくなるので注意!

やっとこ

これでやっとライセンスキーがダウンロードできる。これをソフトに読み込ませればOK。

まあ、わざわざ本家からライセンス買う人がどれだけいるか分かりませんが、何かの参考になれば。

Elecrow新基板とステンシル

Elecrow新基板とステンシル

Raspberry Pi2 用ソーラー電源基板RASP_PWR3のバージョンBを、Elecrowに発注していました。

Elecrow基板

Elecrowは最近のDIY基板作りでは一番人気のところのようです。基板のカラー指定が無料できるし、PCBステンシル(メタルマスク)が格安で作れるので、表面実装部品をリフローで載せる際には大変重宝します。

ユニクラフト&FusionPCB版では、DIP部品を使っていたためギッチギチで、センサー類が一切載らなかったので、今回は表面実装部品を使いたかったのです。

基板はFusionPCBなどと同等の条件(10枚、1.6mm、HASL処理)で、PCBステンシルをつけてみました。基板は$31.90、今回は発送にDHLを使い($18.81)、合計$50.71となりました。

時間軸は以下の通りです。

  • 10月8日 基板発注
  • 10月9日 Processing
  • 10月9日 In Production
  • 10月13日 Traceable
  • 10月16日 日本に到着(DHL)
  • 10月18日 受け取り(佐川)

うーん速い・・・ちょっとDHLが馬鹿で、住所がわからないと発狂して佐川に丸投げされて到着が遅れましたが、それでも8日でステンシル付きの基板できちゃうんですから我々未来を生きていますよ、本当に。

それで品質はどうなのよ?

シルクが汚いなあ

やっぱり長穴はずれてないよなあ!そうだと思ったんだよ。FusionPCBでずれてたのは不具合だろてめえ!!設計のせいではなさそうなので一安心ですけども。しかしElecrowはシルクが0.5mmくらいずれてるみたい(^^;というかシルク印刷が汚いですね、事前の噂通り。まあ、この値段で文句を言う筋合いもないですが。

世間では、リードタイムや、ガーバーデータ形式が全く同一であることなどから、FusionPCBとElecrowは全く同一の工場を使っているという見方が大勢なのですが、パッと見でも品質が異なるので私は不可解に思えます。同じ製造設備使ってても、現地担当者の質で変わっちゃうものなのかな、やっぱり。

あと、よく基板見比べると、FusionPCBもElecrowもHASL後のパッドに微妙な擦り傷がある基板があって、E-TESTを行っているのかもしれません。ユニクラフトはツルツルでしたので違いがわかります(※ユニクラフトは無料版だからE-TESTやっていないことはわかっているため)。

バージョンBの変更点

バージョンBでは、以下の3つを載せられるように設計しています。

まだ仕様をきちっと決めていませんが、少なくともM41T62によるディープパワーダウンには挑戦しようと思っています。ソーラーパネル+カーバッテリー運用を考えたとき、回路がつながっているだけで電力を消費してしまう問題、いわゆるバッテリードレイン問題への対処はやりすぎということはないと思うのです。

元々、Raspberry Piでバッテリー電圧を監視をする構造では、Raspberry Pi自体の電力消費が問題になるだろうと思い、より消費電力の少ないマイコン付き電源ボードを企画しました。まあ、この話を嫁にしたら「なんだコンピュータのスイッチ作ってんの?」って失笑された(血涙)んですけどね!

今回は、さらに時計機能だけの極小チップ(RTC)を載せて「コンピュータのスイッチのスイッチ」を作ろうと思っているわけです。つまり電圧が極端に低くなったような緊急時には、メインマイコンのLPC1114をディープパワーダウンで停止させ、数日間で待ってからRTCからH/W割り込みをかけてウェイクアップするというもくろみです。どのくらい違うかっていうとこんな感じになります。

  • Raspberry Pi2 動作時 → 300mA
  • LPC1114通常待機時→ 30mA (1/10)
  • M41T62+LPC1114パワーダウン時→ 0.3mA(1/100)

やりすぎですかね。まあ、別にこんな極端な動作条件だけでなくて、元々Raspberry PiにはRTCが搭載されておらず、毎回時計を忘れてしまうおちゃめさんな欠点を補うこともできます。

BME280は温度監視に使います。今回の設計では、P-ch MOSFETの回路を1組増やして、ペリフェラル電源を独立コントロールできるようにしてあります。BME280では温度/湿度を1チップで測れるので、屋外等の過酷な環境下では、温度や湿度を監視し、外部FANを自動で回して強制排気などできるようにする予定です。

実は温度を測るだけならもっとハンダ付けしやすくて安いセンサーが沢山あるのですが、これまたRaspberry Piから読めるのであれば大気圧とかも読めた方がいいかなと思って、わざわざ実装難易度の高くて値段も高いセンサーを採用しています。女性には有名な頭痛ーるの私家版を作る事もできますね。

リフロー炉が欲しい

TSSOPパッケージは意地で手ハンダしましたが、今回BME280はLGA、M41T62はLCC-8パッケージで、もうリフローができないとハンダ付けは殆ど絶望的であります。パッドがチップの真下にありますからね。

一応、オーブントースターを改造してホームリフロー炉を作るつもりではいますが、いつになるやら・・・・・ほんとうにハードウェア開発は金がかかる趣味でめっちゃ肩身が狭いです。

パトロンは随時募集中です!(ぐはぁ吐血)