リフローオーブンの自作2016年05月01日 17時37分54秒

リフローオーブン製作は着々と進行しています。 遊びの合間に仕事?というか電気工作遊びをしている感じですが・・・苦笑。 ほぼ部品はそろったので、ノートに接続回路を描きつつ個々のユニットを組立ています。 各ユニットの機能構成はこんな感じ↓。 【コントローラモジュール】 ArduioベースでLCD表示付き(スイッチサイエンスそのまま)。PCが接続できるようにFT232のUSBブリッジをサブ基板(手配線)を作って搭載。 サブ基板は、オーブンモジュールとのコネクタ配線中継ボードと12V→3.3Vのレギュレータを搭載します。 なお、オーブンモジュールとの接続ラインは熱電対ラインのほかに、D-SUB9でSSRと主電源パワーリレーの制御をします。 【オーブンモジュール】 見ての通り、SSR2コと冷却用ファンを搭載、簡単にメンテできるようにアルミ板でモジュール化しました。 このモジュールはオーブンが熱くなっても熱が伝わってこないように5mm程度浮かして固定する予定。 【ソフト】 取り合えすはオリジナルのスケッチで動作させますが、追々以下の改造を追加予定 ①温度ログが残せるようにする。 ②温度プロフィールをPCから変更・調整できるようにする。

Digilent Analog Discovery【備忘録】2016年05月04日 12時21分12秒

買ったまま半年近く放置していた「AnalogDiscovery」ですが、やっと手をつけ始めました。

何か開発したときは、仕上げの評価と調整にはちゃんと校正された測定器を使う(使いたい?)ところですが、ある程度まともな動作するまではそれほど精度も要求されないし、校正されたかどうかなんて気にしていません。 むしろどれだけ使いやすくて効率良く開発できるかの方を重用しするべきで・・・・(それでも、測定原理をしっかり理解したうえで測定器は使わねばならねいですけどね、苦笑)

そんな、開発途中で役立ちそうなツールがこれで「Analog Discovery」と言うそうです。 なにやらアメリカの優秀な大学の教授さん2人が、学生の教育の為に開発したそうで、いろいろな機能が巧くまとめられています。

オシロスコープ、ファンクションジェネレータ、ロジアナ(I2CやSPI解析もできる)、ロジックパターンジェネレータ、FFT、ネットワークアナライザ(ベクトル表示はできないようです)など嬉し機能が満載。

この前までRIGOLの4CHのオシロ・ロジアナの購入を検討していましたが、これを使い倒すまでしばらくお預けにします。(笑)

ちなみに、この「AnalogDiscovery」を評価された先人さんが、結構いらっしゃるようで以下を参考にさせていただきます。

http://www.denshi.club/pc/analogdiscovery/analog-discovery-1.html

http://designideas.cocolog-nifty.com/blog/analog_discovery/index.html

http://toragi.cqpub.co.jp/Portals/0/backnumber/2015/04/p051.pdf

【備忘録】ステンシルの製作は安価な海外2016年05月04日 17時22分05秒

ステンシル(メタルマスク)を自作でなんとか試みるWEB上の記事は見かけるが、どれもいまひとつです。

この程度の出費なら、海外の業者に依頼したほうがしっかりしたステンシルを作ってくれた手間も減りそう。

ちなみにfusionPCBでもステンシルの依頼はあるがこれほど安くは無いようです。 また、日本国内の安価なステンシルは¥9000程度・・・、もっと安いところはあるのかな。

https://www.oshstencils.com/index.php

【備忘録】arduioでのpulsein関数の精度が悪い2016年05月26日 13時47分50秒

arduioでサーボモータパルスを検出するプログラムを作っていたところ、pulsein関数で戻り値が不安定で精度がでない症状が現れた。

最初のテストでは、メインループの中でpulsein関数をコールして使うとほぼ想定内の値が戻ってくてる所までは確認。 諸々のタイマー割込を10msで動かしいろいろコードを付加していくと、pulsein関数の戻り値が不安定になってくることがわかった。

不安定さは割込処理内のコードを増やした分だけ多くなる感じです。 おそらく、このライブラリは他にこの関数の動作を邪魔をするものがいない条件で時間を計測しているみたいですね。

計測するパルス幅は2mSを越えることがないので、pulsein関数のある記述を割込処理に押し込んだら、この不安定は完全に解消。 自前でこの関数もどきをわざわざ作るのもめんどうなので割込処理内で計測されることにしました。

でも問題が・・・・追記へ続く

【追記】 実験していると色々見えてきました。 レファレンスにも書いてあったのですが、タイムアウト値を超えるパルスが入るとゼロを戻してきます。 戻り値で判定するときはこの点に注意しないと怪しい動きをすることになります。

ちょと使いにくいなぁ・・・、自前のライブラリを作ってしまいたくなりました。(でも、方法を調べて勉強しないと・・・苦笑)

その色々調べていたら、コールされるとそこからH区間をずーっと探し続けるので、タイムアウト値は周期分ないとダメな事がわかりました。(よく考えれば当然のこと、苦笑)

それから、puluse関数をコールして実行しているときは、割り込みを入れると計測誤差が一気に大きくなるので注意が必要です。

追記の前に前途したタイマーのなかにpuluseIn関数をいれるのは、1ms以内の計測であれば可能ですが、それ以上だとまともに動作させるのは難しいです。 そそれは、タイマー割り込みは仮に10mS間隔で設定しても基本は1mSで動いているので、この中にpulseIn関数をいれると1ms以内に抜け出ることができなくて割り込み処理のタイミングがめちゃくちゃになります。

【さらに追記】 内部構造を知る上でとても参考になるサイトがありました。 http://garretlab.web.fc2.com/arduino/inside/index.html