タグ別アーカイブ: diy

Night Runner Rainbow ATMega328P FUSE設定

【覚書】ナイトランナーレインボゥのフューズ設定、ブートローダー、Arduino IDEでの設定

チップ:ATmega328P
クロック:内蔵クロック 8MHz
電源電圧:3.3~5.0V

FUSE設定
 BODLEVEL = DISABLED
 RSTDISBL = [ ]
 DWEN = [ ]
 SPIEN = [X]
 WDTON = [ ]
 EESAVE = [ ]
 BOOTSZ = 1024W_3C00
 BOOTRST = [X]
 CKDIV8 = [ ]
 CKOUT = [ ]
 SUT_CKSEL = INTRCOSC_8MHZ_6CK_14CK_65MS

 EXTENDED = 0xFF (valid)
 HIGH = 0xDA (modified)
 LOW = 0xE2 (modified)

ブートローダー (Arduino)
 atmegaBoot_168_atmega328_pro8MHz.hex

Arduino IDEでのボード設定
 Arduino LilyPad
 Atmega328P

CIMG3111

自作リフロー装置への道 (5)

自作リフローオーブンは完成したので早速リフローしてみたいんですけど、基板にクリームはんだを塗るためのメタルマスク、ステンシルが必要です。
簡単そうなのはカッティングプロッタみたいだけど、持ってないんで、今回はリン青銅版をエッチングして作りました。

EagleのtCreamレイヤーを画像出力し、画像編集ソフト(GIMP)で編集。回りの黒い部分の塗り足しと両面からエッチングするために左右反転したのを並べて配置しました。
CIMG3090

それをレーザープリンタでOHP用紙に印刷。
OHP用紙を買いに行ったとき、探しても見つからないんで店員に「OHP用紙ありますか?」って聞いたら「それなんですか?」と聞き返されてしまった。。まあ、いまやOHPなんて使わないからなぁ。。
「OHP用の透明のフィルムみたいな。。」「OHPって何ですか?」「スライドみたいな。。」。。。
CIMG3097

裏表がぴったり合うように真ん中から半分に折ります。
CIMG3098

その間によく磨いたリン青銅版(暑さ0.1mm)を挟みます。
CIMG3099

アイロンで加熱します。
CIMG3100

そしてOHPをはがすとリン青銅版にトナーが転写されてます。
熱々のウチにはがすのがコツです。ただし、リン青銅版も熱々なのでご注意を。
こっちの面はいまいちでした。。
CIMG3101

いまいちトナーが移ってない部分は油性マジックで塗り足しました。
そしてどこの家庭にも大抵ある第二塩化鉄溶液でエッチング。
CIMG3095

ちょいと温度が低かったんで時間かかりました。
CIMG3096

エッチングできて穴があいたら水洗いして、スチールウールでこすってトナーを落とします。
あまりきれいじゃないけどとりあえずメタルマスクの完成。
CIMG3113

それでは基板に半田を塗りましょう。
不要な基板などで固定用のガイド枠をつくりました。セロテープで止めてるだけですけど。
CIMG3105

作ったメタルマスクをパッドの位置を合わせてこれもセロテープで固定。
CIMG3103

メタルマスクにソルダーペーストをちょっとおいて適当なスキージ、私は不要な基板でやったけど、弾力がある素材のほうがよさそう。プラスチック製のカードとかいいかもー、で印刷します。プリントゴッコの要領ね。
そしてメタルマスクをそっとめくると。。
CIMG3106
いい感じで半田が塗布できました。

そこにピンセットで電子部品を手乗せ。これが難しかった。エアで部品を吸い付かせて持ち上げるツール使ったんだけど途中で吸引力なくなって基板の上に部品を落しちゃったり。それが半田の上だったり。。。
結構苦労して全部の部品を置きました。
CIMG3107

とりあえず初リフローは1枚だけで。
CIMG3108

おお、お見事にきれいにはんだ付けできました。
CIMG3109

全てのパッドを拡大鏡で確認しました。
CIMG3110
ジャンパも半田不足もなく全ピンきれいにできてました。おみごと!!

さあ、これで表面実装どんとこい!
これからは面実装中心で基板設計することにしまーす!
とりあえずカッティングプロッタがほしいぞ!!!

CIMG3087

自作リフロー装置への道 (4)

いよいよ制御部分です。
メインの基板はArduino leonardoを使いました。理由は余っていたから。それだけ。でも後々これがめんどくさかったり、よかったり。。

そして、熱電対はスイッチサイエンス熱電対センサモジュールキットを購入しました。
マキシムのMAX31855という石を使っていて、センサモジュールとのやり取りはSPI通信でできます。
Arduinoに入っているSPIライブラリでそのまま動くだろうと思ってサンプルスケッチを動かしてみました。
ところが受信する値はずーっとゼロ。。おかしい。。。
LeonardoはSPI関連のピン配置が純血UNO系と違うんですよ。こんな感じにISPコネクタとMISOやSCKをつながなきゃいけないんす。
CIMG3062
まあこれは想定していて、このせいかな~と思ってたんだけど、でもデータこない。
SPIライブラリの中をちょっと見たら、SSピンが固定なってたりしたんでLeonardoではコネクタにつながっていないSS(D17)をつないでみたり。でもこれは関係なかった。

これはモジュール側でMISO端子がグランドにショートしてるのかも??
オシロでSPIの波形みたり、いや、MISO端子とグランドをテスターであたるだけでも良かったのだが、結構はまっててもう嫌になってて、勝手にモジュールが悪いと決めてかかってました。

そんで、スイッチサイエンスさんに状況を説明したら、新しいのを送ってくれました。いつもながら素早い対応ありがとうございます。
んで新しいMAX31855モジュールで試したら、、、試したけど、、、状況変わらず。。。
こりゃ、SPIライブラリじゃね??ちゃんとクロック出てんのかよ???つかLeonardoに対応してるのか???

なんかSPIライブラリが信用できなかったので、ソフトSPIのライブラリを探して拾ってきました。
というか、MAX31855ライブラリがありました。Rocket Scream ElectronicsというところのMAX31855ライブラリ
ソースみたらソフトでSPI通信やってます。これだ。これならマイコン種別かんけーないぞ。

ということでこのライブラリ使ってやってみたら、はい!ちゃんとデータ読めてます。
スイッチサイエンスさんごめんなさい。。不良品じゃなかったです。。。

CIMG3058CIMG3059

このセンサモジュールにコネクタメスをつなぎました。LeonardoのISPコネクタにつながるようにしたんです。

そしてLeonardoにつなげるとこんな感じ。
CIMG3057

その他はグラフィックLCD、これは秋月で買って使ってなかったやつ。
GLCDライブラリというのがあったのでこれで。ただ、ピンアサインが固定になってたんでその辺はライブラリ修正してピンアサインを自由に変えられる様にしました。
あ、Leonardoはアナログピンをデジタルピンとして使うときはポート番号が他のArduinoと違うのでそこも注意。LCDのバックライトはつきっぱにしました。
適当にステータス表示用にLEDを3個つなぎました。
SSRに3本。押釦スイッチを2個。

グラフィックLCDがデータ8本、CSが2本、RS、RW、ENで13本もポートを使用。
熱電対モジュールとの通信がSCK、DATA、CSで3本
LEDが3本、SSRが3本、押釦が2本でこれで合計22本!
なんとUNOだったらポート足りませんでしたわ。Leonardoにしてよかったのはこれです。

というわけでポート割り当て表

D0:ヒーター上
D1:ヒーター下
D2:ファン
D3:LED紫
D4:GLCD DB0
D5:GLCD DB1
D6:GLCD DB2
D7:GLCD DB3
D8:GLCD DB4
D9:GLCD DB5
D10:GLCD DB6
D11:GLCD DB7
D12:LED緑
D13:LED赤
D14:温度センサ MISO
D15:温度センサ CS
D16:温度センサ SCK
D17:押釦スイッチ2
D18:GLCD CS1
D19:GLCD CS2
D20:GLCD RS
D21:GLCD RW
D22:GLCD EN
D23:押釦スイッチ1

なんとleonardoのポートを全部使いました!
そんで、アルミ板を切り抜いたパネルにArduino LeonardoとGLCDとスイッチとLEDを固定

CIMG3086CIMG3078CIMG3077CIMG3073

一度組み立てた後、「スイッチはひとつでよくね?」と思って一つに変更しました。
もともとはスイッチ1がスタート/ストップボタン、スイッチ2はプロファイル選択ボタンにするつもりだったんだけど、プロファイル変更することってあんまないな(鉛フリーかそうじゃないかぐらいかと)って思ってスイッチ2を廃止しました。
フロントパネルに穴が残っちゃうんでここにはUSBのBコネクタをつけて、フロントパネルはめたままデバッグやプログラムの書き換え、場合によっちゃあPC側アプリを作ってPC側でモニタリングやプロファイルの変更や管理ができるようにしましょということで。
上の写真はボタン廃止してUSBコネクタつけた後の写真でした。

とりあえずこの状態で各機能が動作することを確認。さあ次はソフトです。

ヒーターとファンはPWM制御します。ところが割り当てたポートはPWMじゃありません。
ま、ヒーターとファンだから遅くても問題なし。ソフトPWMのライブラリを作成しました。

#include
softPWM heater1(0, 255, 0, 10); // pin, max, init, resolution(ms)

こんな感じでインスタンス作ってやって、あとはメインループでloop()を呼んであげればポートパタパタしてくれるってライブラリです。
タイマ使ってもよかったんだけど精度そんなにいらないし、タイマ資源消費したくなかったのでこんな適当PWMにしました。

void loop(){
 heater1.loop();
  ・
  ・
 heater1.setValue(value);
}

ソフトの方でもう一つ必要なのがPID制御ライブラリ。今回ファンはオンかオフかだけにしましたけど、ヒーターは目的とする温度に調整するにはやはりPID制御が必要かと。
探してみたところPIDライブラリがすぐに見つかったのでそれ使いました。

PID制御するにはまず、素の状態のパルス応答を計測してパラメータを決めます。
というわけでパルス応答の測定です。
CIMG3064

まだまだグラフは右上がり中ですがオーブンがぶっ壊れそうなんでやめました。
本当なら温度が飽和するまではかって、やっと飽和温度や傾きが求まるんですけど。。。
ですが、結局はPID制御のパラメータ、Kp、Ki、Kdは試行錯誤して決める事になりました。

そして決まった値と設定したプロファイルで試してみたのがこのグラフ。青い線が温度、赤い線がヒーターのPWM値。この後も若干調整していてプレヒート期間を長くしています。
ハード構成的には上下のヒーターを別々でコントロールできるようにしていますがいまのところ上下のヒーターを同時に制御してます。
CIMG3067
しかし冷めるのが遅い。。

GLCDにグラフを描く様にして最初から実験。
CIMG3085
よさそーです。

ということでフロントパネルを筐体にねじ止め
CIMG3079
なかなかカッコいいオーブンが完成しました♪

CIMG3087
紫LEDまぶしぃ~~

さてそれでは、このリフロー装置で実際にリフローしてみましょう!
と、これまた(5)に続きます。。。

CIMG3050

自作リフロー装置への道 (3)

いよいよ内部の改造
上下のヒーターとファンを別々にスイッチできるようにそれぞれの電源ラインにSSRを入れました。
なんか昔作った時に買って余ってた秋月のSSRキットを使いました。
ヒーターの上下は別々に制御するのかわかりませんがとりあえず別にしとけば後でどうにでもできます。
トライアックは念のために放熱板つけました。これも部品箱に余ってたやつ。これ上にもねじが切ってあったので写真みたく適当な穴に固定しました。

CIMG3052

アルミのダクトテープが貼ってあるのは、なんか作り付けがチャチくてファンの隙間があいてたから。
余計なとこから熱風が入ってこられても困りますから。

CIMG3050

上の写真でわかるでしょうか?SSRを3個使ってます。前の方の上部から熱電対を庫内に入れてます。
そしてファンの右下にある黒いのが小型のスイッチングアダプタです。コンセント使うスペースなかったのでスイッチングアダプタに直接はんだ付けしてます。
ちなみに写真で見えるファンの羽はモーターの冷却用で、板金の反対側、内側にメインのファンがついてます。が、しょぼいぐらい風量すくねーし。。

↓ACアダプタ部分のアップ写真
CIMG3051

制御基板はフロントパネルに固定して、フロントからアクセスできるようにするつもり。
なので、もう、筐体は元のように組み立ててもOKです。
でもその前に一応SSRの制御線をHIGH/LOWしてみてヒーターやファンがON/OFFするのを確認しました。
そして、筐体を元通りに組立!

CIMG3055

フロントに出てきている線は
・ACアダプタからの電源ライン
・熱電対
・SSRの制御線3本とグランド1本
です。

(4)につづく~

CIMG3015

自作リフロー装置への道 (2)

ブログ更新してませんが、もうできてます。ちゃんと動いてます。

前回このオーブンの素の特性を測定しなんとか使えそうだと分かったので、まずは分解です。
CIMG3019CIMG3013CIMG3014CIMG3015CIMG3020CIMG3017

スイッチ、サーモスタット、タイマーはマイコン制御になるので全部不要!とっぱらいました。
これらを外した空間にマイコンボードと液晶とSSRなどを配置するつもりです。
でも気になったのがこの空間はオーブン使ってる時に熱くならないのか?ってこと。気になったのでもう一度組み立ててこの空間の温度を測定してみました。

CIMG3027

20分間通電しつづけて34度でした。これなら大丈夫でしょう。

CIMG3031

サーモスタットとスイッチとタイマーのついていたこのフロントパネル部分の穴を何かでふさいで、液晶やらスイッチやらを付けたいと思います。
なにか適当なものがないか探していたら、ちょうどよさげなサイズのアルミ板が出てきました。

CIMG3028

適当にマジックでマークしてはさみでチョキチョキ
CIMG3030

オーブン側はハンドニップラでジョキジョキ、
CIMG3035CIMG3032

ジョキジョキというほど簡単ではなくて結構力いります。
全部くりぬいき終わった時には握力も終わってました。
CIMG3036

アルミ板は傷だらけだったので、耐水ペーパーで磨きました。
こんな感じにします。アルミ板は後でラッカーで着色します。何色にしようかな。
CIMG3037

さて、いよいよ本体内部の改造です。
(つづく)

CIMG3006

自作リフロー装置への道 (1)

最近老眼の進行が早く、SMDの手によるハンダ付けがこたえるようになってきた。
しかも自分の老化とは反対に電子部品はどんどん小さくなり、モノによってはパッケージラインナップにDIPがないものも増えてきた。
ということで俺もリフロー作るぜ~、っていうリフロー装置を自作するシリーズwです。

既に世の中は自宅リフローなんて普通に行われています。ぐーぐる先生に聞いてみたところ、簡単にヒートガンでやっちゃう例やホットプレートでリフローしちゃう方法が沢山でてきました。日本で主流はホットプレートみたいです。
ですが私のやりたいのは両面。となるとオーブントースターの方がよさそうじゃね?
トースター、リフローでぐぐったらそれはそれは沢山の自宅リフローがヒットしました。海外ではホットプレートじゃなくてオーブントースターの方が主流ですね。
oven reflowでググるとそれはそれは専用のコントローラまで売ってるぐらいwww

いろいろと見てると、オーブントースターでも「コンベクション」オーブンがリフローには適しているという情報もゲットしました。
ヒーターで熱するのだと、基板のパッドが光を反射してしまい温まり難いのだとか。コンベクションオーブンとはファンがついていて熱風を循環させ、熱風によって素材(この場合基板)を熱する仕組みらしい。確かに産業用のリフローもハロゲンヒーター&ファンで調理してますね。

とーいうわけで安い「コンベクションオーブン」を探しました。ありました。
なんともあやしい「ロイヤル通販」のコンベクションオーブン、amazonで4,780円+送料
楽天にも同じ値段でありましたけどレビューを強要していたのでamazonで購入。

上下ヒーターとファンを別々にPWM制御しようと思ってるんで、後々分解する予定なのですが、とりあえずオーブンとしての実力測定。
改造したけどリフローとしての性能が出なかったじゃ悲しいしね。

いらない基板に熱電対をカプトンテープで固定。アミを中段にセットして加熱性能を測定します。

CIMG3004

本体の設定温度を250度、モード切り替えスイッチを「上下ヒーター+ファン」、タイマーを連続にセットして計測スタート

CIMG3006

およそ5分で250度になりました。鉛フリーでも十分リフローとして使えそうです。

CIMG3008

そのまま何度まで温度上昇するのか継続して計ってみました。その後2分、電源いれてから約7分で315度。
温度設定のダイヤルは250度ってセットしたんですが、たぶん上限にセットしたんで通電しっぱなし。サーモスタットONしっぱなしなんでしょうね。
どこまで上がるか試したかったんだけど基板の焦げる異臭がしてきたので停止!
CIMG3011

全自動にしたいので扉を開けずに基板を取り出せる温度、60度にまで冷める時間を計測。約22分で60度になりました。

CIMG3012

ヒーターだけOFFにして、ファンを全力で回し続ければ強制空冷でもっと早く冷めるでしょう。
サーモスタットの設定を最高温度、モードをヒーター&ファン、タイマーを連続にすれば、電源の制御だけでリフローとして十分使えそうです。

購入前は改造する前提でしたが、無改造でも十分使えそうってわかってじゃあそのまま使うか?って思ったけど、やっぱり強制空冷したいから改造しますっ!

つづく

(そおいえば昔、「タム○FAシステムズ」って会社が作ってる産業用リフロー装置のプログラム作ったことあったな~、なつかしのOS-9で!)

DSC02524

電池駆動Arduino

低消費電力Arduino互換システム。3V/8MHzで動いてます。
8MHz用にビルドしたArduinoのブートローダーと内蔵クロック/電源電圧3V用のフューズ設定を書き込んだATMega328P
Arduino用ボード設定ファイルにも設定を追加したのでArduino IDEがそのまま使えてそのまま書き込みできます。

この状態で基板起こそうかな。Denchi-Duinoとか命名してw
MobDuinoというのもいいかも。

内蔵8MHzのArduinoに関してはこのページを参考にしました。って自分のブログw
フューズはクロック設定とあとBOD (Brown Out Detection)の設定に注意。BODは1.8Vに設定しました。
標準のArduinoのBOD設定だと2.7Vになってるから電池で使うのには不適っす。

写真のブレッドボードではその他周辺として、RTC、気圧センサ、温度センサ、小型液晶、microSDカード、スイッチとかをつないでます。
基本ほとんどsleep状態。キー入力(Port Change Interrupt)かRTCからの1Hz割り込みで起きてるので、非常に低消費電力なシステムになってます。
でもAVRよか1800番台PICの方がはるかに低消費電力なんだよねぇ。。。値段も安いし。。。

このプロジェクト、ArduinoにこだわらずにPICにするかな。

でも一番のお気に入りはArduinoでもPICでもなくてNetduino
なんたって開発環境が最高!!チップの値段が最大のネック。。。

DSC02435

秘密兵器

【ハセツネに持ってったライト達】
ヘッドライトはPrinston TechのApex Proを改造したもの。リチウムイオン電池18650の4本仕様です。総容量は約40Wh、6V500mAでライト駆動しても12時間使えます♪1本~4本の何本でも動きます。インテリジェントなDC/DCコンバータ(入力電圧に応じてステップアップ/ステップダウンを自動切替)内蔵です。
4本使用の通常時は効率90%のステップダウンモードでドライブし、電池に優しく3.3Vで出力を停止する回路を組み込んでいます。これでもワイド側のランプのみなら余裕なのですが、スポットを多用してると容量足りなくなる可能性もあり。
そんな時はスイッチを切り替えて、「電池死ぬまで駆動モード」に切り替えます。すると今度はステップアップDC/DCモードになって残りの電力を全部使い切ります。これでまた数時間はLEDを光らせることができます。電池も死ぬけどね。。。

ハンドライトも同じ電池を使うものです。自作品。
ハイビームにすると3Aも流れて(18650は流せるんです!)明るさはなんと1000ルーメン♪危険ですww
ただ、ハイビームにすると1時間もちませんwww
PWMで出力を20%にした状態で5時間ぐらい使えます。これでも十分明るい。
電池はヘッデンと同じなので、ハンドライトの電池がなくなったらヘッデンのバッテリーボックスから1本借用すればいいしね。

今回走れる部分ではスポット、登りではワイドを基本に使い分けてましたが電池は最後まで持ちました。一部ガスっていたトコではハンドライトメインに使ってました。
今回のライトは大成功♪

もう一つの開発中の秘密兵器は実用に間に合いませんでした。。。来年のUTMF???TGG???には持って行きたいなぁ~

DSC01337

アルデバランβ2

3月にプロトタイプを作成したアルデバラン、その後何度か使ってみてその都度少しづつ手直ししてやっとβ2状態になりました。
ほんとは使ってみてわかったことを反映させて1から作り直したいところですが、もう時間もない(明後日!)のでこの状態でレース参戦します。

変更したところは、

  • ウェストベルトをなくした(UTMFでそんなに激しく走る事はないと思い、またウェストポケットがないので)
  • 点滅LEDの削除
  • ナイトライダースキャナ搭載
  • ポケット追加(ウェストポケットがない分、アクセスのよいポケットがもうすこし欲しかった)
  • いのさん考案のギアループ風のストックホルダ追加

前側で変更したところは、

  • チェストベルトをベルクロ固定式に変更
  • ボトルポケットにスマイルワッペン(きっこに貰ったお守り)
  • チェストベルトにハイドレーションチューブ固定用のベルクロ
  • ハンドライト固定用のゴムを追加(より角度の調整が出来るように)

そしてとりあえずUTMFの持っていくのをパッキングしてみました。
あとは携帯食料と水ぐらいかな。

明後日スタートですね。ドキドキして仕事にならないよぉ。。。

DSC01128

PrincetonTec APEX改 バッテリーライフテスト

PrincetonTecのヘッデン – APEX PRO、元々はCR123A×2本使いだったんだけど、長時間動作用に18650×2本直列のバッテリケース外付けに改造してました。これでトータル6時間以上動作。
ところが電圧高くなった分(6V→7.4V)放熱が問題に。。長時間連続点灯しておくと保護回路働いちゃって消えちゃうんです。
センサ(サーミスタ)が冷めた頃に再び電源投入でちゃんと点くんですけど一晩中つけっぱが予想されるレースとかじゃ困っちゃう。。

というわけで、18650×2本を並列にしたバッテリーケースを作りました。そして電池交換が簡単に出来るようにΦ2.5mmジャック&プラグをつけました。
電圧が下がった分暗くなりそうですけどどうなんだろ??中にDC/DC入ってれば関係ないし。。逆に電圧下がり過ぎると減電圧検出で電源供給カットされちゃうかも。。

そんな時は実験です。

まずはこのヘッデンの消費電流の測定

スポット、光量大 850mA
スポット、光量小 240mA
拡散、光量大   320mA
拡散、光量小   047mA

18650の容量はまあ2200mAhぐらいでしょうか、手持ちの中には3000mAhなんてのもありますが、、、

このヘッデン、通常は拡散モードの明るい方で使ってます。
平地や下り坂で飛ばす時はスポットを使うこともあるけど、まあ殆どは拡散モード。
とりあえず机上で拡散モードでのバッテリーライフを計算してみると。。

2200[mAh] * 2 / 320[mA] = 13.75[hour] = 13時間45分

90%ケースで考えても12時間22分
おお、日の長い5月なら一晩持ちますね。

そして実測、バッテリはフル充電。拡散モードの光量大で連続点灯。

【結果】
11時間30分で一度減電圧表示(LEDが2回点滅)、でもそのまま点灯し続けました。
14時間ちょうど連続点灯しました。ほぼ計算通り。すばらしい!
減電圧検出時はアラート返すだけなのですね。よかった。

このバッテリケースを2個作りました。バッテリ交換は接続のジャック&プラグを差し替えるだけ。
ふふふ、いいね♪