はるまきパタパタ

料理とDIYについて色々書きます。

低温調理用のコントローラを作る4

概要

 完成した基板に部品を実装して、低温調理用のコントローラを作成します。

 

コントローラを組み立てる

基板が届きました

 

f:id:harumaki_flipflop:20170812225650j:plain

 基板が届きました。発注から到着まではわりと早かったです。これに部品を実装してコントローラを完成させます。

 

使用する部品の調達

 使用するパーツは、設計時にすでに選定しています。以下のパーツを使います。いろいろ忙しかったこともあり、秋月電子の通信販売で部品の調達を行いました。別に秋月じゃなくてもいいですが、私は秋月大好きマンなので贔屓にしています。

 

部品番号 数量 部品名 通販コード
IC 1 ATMEGA328P-PU I-03142
Q1 1 水晶発振子 32.768KHz P-04005
LCD 1 LCDモジュールAQM1602A-RN-GBW P-08779
J1 1 2.1mm標準CDジャック 基板取付用 C-00077
X_TEMP1 1 ターミナルブロック 3ピン P-01307
X_HEATER 1 ターミナルブロック 2ピン P-01306
S1,S2 2 タクトスイッチ P-03647
ENC 1 ロータリーエンコーダ P-06357
LED1~3 3 5mm LED  
R1,R3,R7 3 470Ω カーボン抵抗 1/6W  
R2,R4~6 4 10KΩ カーボン抵抗 1/6W  
R8~11 4 100Ω カーボン抵抗 1/6W  
C1~3 3 1μF 積層セラミックコンデンサ  
C4~8 5 0.1μF 積層セラミックコンデンサ  
JP 1 2×2ピン 2.54mmピッチ ピンヘッダ  
- 2 ジャンパピン 2.54mmピッチ  
CON1 1 2×3ピン 2.54mmピッチ ピンヘッダ  
CON2 1 1×6ピン 2.54mmピッチ ピンヘッダ  

 

はんだ付け

 特段いうことも無いです。背が低くて、熱に強い部品から実装していきます。一号機は色々する予定なので、AVRは直接はんだ付けせずにICソケットを噛ませます。LCDと水晶発振子は、はんだだけだと固定強度に不安があるので、別途ホットボンドで固定しました。

 はんだ付けがおわるとこんな感じ。温度センサも接続しています。f:id:harumaki_flipflop:20170812225659j:plain

はんだ付けの確認

 検図済みですし、特に検証はしなくていいでしょう。はんだ付けが失敗していないかだけ確認します。 

 

動作確認

ジャンパの設定

 ACアダプタの極性がどちらでもいいようにジャンパを設けました。センタープラスのアダプタを使うときは1-2、3-4と接続します。

温度センサの接続

 Amazonで買った温度センサを接続します。左のコネクタにそれぞれ接続します。大体黒がGND、赤がVCCです。

 

プログラムの書き込み

 ここまできたら、プログラムを書き込みます。CON1にAVRライタを接続してPCからプログラムを焼きます。

f:id:harumaki_flipflop:20170812234531j:plain

これでコントローラの完成です。

 プログラムの実装と中身については別途紹介します。

 

 

Elecrow での穴加工

概要

Eleclowでの穴の指定方法まとめ。

 

長穴

DCコネクタとかの取付用に、長穴を開けたい場合があります。EagleではMillingレイヤに書き込むことで実現できます。最小1mm幅の穴が作成できます。

この方法で指定した穴は、特に指定しないとメッキ加工されます。メッキ加工が不要ならば、その旨をNOTE.TXT等適当な名前のファイルに書き込んで、ZIPに忍ばせておけばよいと思います。

 

スルーホール・普通の穴

Eagleでのレイヤは、Drills/Holesレイヤです。スルーホールだけならば、*.TXTを提出します。

普通の穴も開ける場合は、ファイルをスルホール用のデータ(*-PTH.TXT)と、非スルホールのデータ(*-NPTH.TXT)の2つを提出します。

 

*.TXTの提出だけでも、データを見てスルホール/非スルホールをElecrowの中の人が判断してくれている説もありますが、分けておいたほうが無難です。

Elecrowのサイトで入手できるCAMファイルは、スルーホールだけの設定になっています。普通の穴も開ける場合は、CAM出力時にHolesレイヤの指定を外してDrillsのみで出力し、後からProcess SectionでHolesを追加出力するのが良さそうです。

 

下の画面で、右のリストで出力するレイヤを指定できます。

f:id:harumaki_flipflop:20170221003826p:plain

 

困ったときは

「ここをこうしたいんだけど、あってる?間違ってたら連絡くれ」とメモを残しておけば、Elecrowの技術者側で、ある程度融通を効かせてくれます。

困ったら、素直に問い合わせてみるなりするのがやはり正道です。Twitterが反応はやくておすすめです。

 

 

eagle+elecrowでPCB発注まとめ

概要

eagleでデザインしたPCBを、Elecrowに発注する際の色々をまとめます。

対象の工程は、ガーバーの出力から商品の受取までで、PCBの設計は完了している状態から開始します。

 

基本の流れ

基本的には、以下のページを参考にしてもらえば問題ないと思います。

make.bcde.jp

 

Elecrowはここ。

www.elecrow.com

デザインルールチェック

基本は出てきたエラーを潰していくだけ。

”Stop Mask”エラーが山ほど出る場合があります。これは、シルクがStopレイヤにかかっているときにでます。無視してOKです。

Elecrowに限った話ではないですが、DRのギリギリを攻めると不良率が高くなります。格安PCBサービスを使う場合は、攻めない設計が無難だと思います。

 

ガーバーデータの出力

出力後に確認しよう

出力した後に、ビューワーなどで確認するとミスがわかりやすくて良いです。特にシルクについては、サイズや位置のずれが結構あるので、やっておくと吉。

私は、ビューワーにgerbvを使っています。

sourceforge.net

 

先に発注用ファイルを抜き出す

やっておいたほうがいいです。余分なファイルが混ざっているとミスも見つかりづらいですし、発注時に間違えると面倒です。

適当に作ったWindows用のバッチおいておきます。適当な名前.batとしてeagleプロジェクト直下に置いて使ってやってください。 

@echo off

setlocal

 

echo "Extract Gxx Files"

 

set /P DST_DIRNAME="output dir name:"

 

mkdir %DST_DIRNAME%

 

echo "Top layer:*.GTL"

move *.GTL %DST_DIRNAME%

echo "Bottom layer:*.GBL"

move *.GBL %DST_DIRNAME%

echo "Solder Stop Mask Top:*.GTS"

move *.GTS %DST_DIRNAME%

echo "Solder Stop Mask Bottom:*.GBS"

move *.GBS %DST_DIRNAME%

echo "Silk Top:*.GTO"

move *.GTO %DST_DIRNAME%

echo "Silk Bottom:*.GBO"

move *.GBO %DST_DIRNAME%

echo "NC Drill:*.TXT"

move *.TXT %DST_DIRNAME%

echo "Mechanical layer :*.GML"

move *.GML %DST_DIRNAME%

 

echo "end."

pause

 

ビューワでドリルの位置がずれる問題

ElecrowのCAMファイルでは、ドリルデータが.TXTで出力されます。これはEXCELLONという形式なのですが、一部のビューワでは位置ずれが出て、正常に読めないことがあるようです。(Elecrowでの製造はこの形式で問題なし)

ビューワで確認したい!という場合は、CamProcessor画面のDrillsHolesタブで、出力フォーマットにEXCELLON_24を選んで、Process Sectionボタンから別のTXTデータを出力してみてください。これなら問題なく確認できると思います。

f:id:harumaki_flipflop:20170216220128p:plain

 

 [追記] 最新のEagleでは、出力画面が旧Eagleと異なっています。フォーマットが選択できずにビューワで穴ズレが起きてしまいます。ずれ方も、大きくではなく、微妙にずれている感じ…。

しかし、製造はズレなくできるので問題ないようです。Elecrowで配布されているCAMファイルを使ってください。

 

発注

発注は、適当に項目を選んでカートに入れてお支払してください。

ちなみに、英語で住所かけなかったらローマ字でOKです。船だろうが航空機だろうが、最初は”Japan”しか見ないので。Japan以降の住所を確認されるのは、国内に入ってからなので問題ないです。

支払いは、クレジットカードで支払ったほうが、Paypalよりも若干レートが有利です。微々たる差かもしれませんが。

 

着荷

後は待っていれば届けてくれます。Elecrowは発送時に写真付きメールでお知らせしてくれます。

だいたい1枚から3枚ぐらいおまけでついてきます。これはElecrowのサービス精神の現れと同時に、不良があっても許してねという意思表示(だと思っています)なので、不良品が入っていたら残念、なかったらラッキー程度で構えたほうがいいです。おまけに期待しちゃダメ。

届いたらTwitterで写真付き報告すると、公式アカウントに補足されます。

SSRでACをPWM制御する

概要

 家庭用電源などのACを、SSRPWM制御します。gnuplotのリハビリも兼ねて。

 

SSRとは

 Solid State Relayの略です。半導体を使ったリレーのことです。機械接点がないので壊れにくいのですが、リレーとは異なる動きもするので注意が必要です。

 

OFFのタイミングは制御できない

 SSRは、トライアックという半導体部品で回路のオンオフを実現しています。ゲートに小さな電流を流すことで、T1,T2間を導通させることができます。

www.tij.co.jp

 しかし、ゲートへ電流を流すのをやめたとしても、トランジスタのようにオフにはできません。一度T1,T2間が導通すると、電流が流れ続ける限りONのままです。

 交流の場合は、電流がゼロになるタイミングがあるので、そのタイミングでOFFになります。つまり、ごく短いパルスをゲートに加えると、50Hz地域なら最大10msだけONになります。

 原理上、直流は制御できません(ONにはできるけど…)直流の場合は、リレーやFET、IGBTを使いましょう。

 

デューティー比=エネルギー比ではない

 下図は、デューティー比10%のときのSSR動作イメージです。素直に実装しようとすると、こんなイメージを持つかと思います。

f:id:harumaki_flipflop:20170123232225p:plain

  これでは、負荷に10%のエネルギーを与えられていません。

 DCでは電圧が一定のため、デューティー比とエネルギー比が一致しますが、ACは電圧が変化するためデューティー比とエネルギー比が一致しません。もちろん計算で求めることができますが、三角関数使うので、少し面倒です。

 

 タイミングがシビア

 SSRを使ったPWMでは、OFFのタイミングが負荷側電源の周期に依存します。正確に制御するためには、制御入力のパルス周期と位相を負荷側電源の周期×2(または×1)に合わせてあげる必要があります。

 

 ダメな例1。電源周波数50Hz、PWMのパルス周期11ms、周期がずれている場合のイメージです。

f:id:harumaki_flipflop:20170124002052p:plain

少しづつずれていって、長期的にみると出力50%になってしまいます。  

 

 ダメな例2と3。電源周波数が50Hz、PWMのパルス周期10msと周期は合っているが、位相がずれている場合のイメージです。f:id:harumaki_flipflop:20170123232233p:plain

 

f:id:harumaki_flipflop:20170123232228p:plain

どちらも10%ではないですね。マイコンから制御しようと思うのであれば、AC100Vと周期・位相を合わせるのは大変です。絶縁も大変だし、部品が増えるし…。

 

ではどうするか

 パルス周期を電源周期に合わせるのではなく、長くしましょう。パルス周期を長いほど、出力の精度が上がります。

 下図は、電源周波数が50Hz、パルス周期100sデューティー比40%です。

f:id:harumaki_flipflop:20170123232239p:plain

このようにすれば、位相を気にせず可変出力が得られます。

 

 

 

低温調理用のコントローラを作る3

概要

 低温調理用のコントローラ回路・基板を設計して、発注します。

 

設計

 まずは回路を設計します。私は回路設計にeagleを使用しています。ちょこっとした基板ならFree版で十分ですし、色々なサイトで使用例が出ているので、困ったときには調べられるので、おすすめです。

 

ライブラリの準備

 まずは基本的な部品はライブラリに登録されていますが、今回使う部品でないものだけを追加します。今回は、LCDがなかったので実物と添付資料をもとにライブラリを作成します。

 

回路図の作成

 ATMEGA328を中心に、周辺の回路を書き込みます。今回は下記の機能を使います。

  • INT0割り込み(ロータリーエンコーダ)
  • PCINT割り込み(タクトスイッチ)
  • Timer1 PWM出力(ヒーター制御)
  • Timer2 非同期タイマ(RTC)
  • ISP
  • I2C(LCD制御)
  • USART(デバッグ用)

 I2Cなどの機能ポートは使用するピンを変更できないので、機能ピンを優先して配置して、その他の配線をしていきます。真面目に線を引くと、ごちゃごちゃしてわからなくなってしまうので、配線に名前をつけたり、ラベルを振ったりして読みやすい回路図にします。

 

回路の確認

 回路が出来上がったら、ブレットボードで動作確認をします。これ以降の工程では、ミスを検出しづらいので、ここで確実につぶしておくことが重要です。

 

基板のレイアウト

レイアウト・配線

 回路図が出来上がったら、ボードエディタに切り替えて、基板の上に部品を配置していきます。

 

レイアウトの確認

 ある程度レイアウトと配線が完了したら、高さのある部品やコネクタなどが干渉しないかを確認します。

 おすすめはプリントアウトして実際の部品をはめ込む方法。、画面で確認するより早いですし、バランスを確認しやすいです。

f:id:harumaki_flipflop:20170122154803j:plain

 

発注

Elecrowへ発注しよう

  最近は、基板の発注がかなり安い。今回はElecrowのPCBサービスを使います。送料は別ですが、5×5cm10枚で9.5ドルです。品質や納期の評判もそこそこ良いです。

www.elecrow.com

 

日本語に対応しているようですが、翻訳が少し怪しいです。ショップには、その他電子工作関連のパーツなどがいっぱいあるので、PCBサービス以外にも、目を通すと欲しいものが見つかるかもしれません。100ドル以上買うと送料無料になるようですが、PCBサービスについては送料無料の恩恵が受けられないみたいです。

 

デザインルールの確認

 まずは、レイアウトした基板がElecrowで製造できるルールにしたがっているかを確認します。Elecrowの商品詳細画面から、デザインルールファイルを取得できます。

 パッドにシルクがかぶっているとStop Maskの警告がたくさん出ますが、これは無視しても問題なさそうです。

 

ガーバーファイルの生成

 同じくElecrowの商品詳細画面から、今度はCAM Fileを取得してきます。取得したCAM Fileを使って、ガーバーデータを生成します。

 下記の8ファイルが必要なので、これをzipで固めておきます。

Top layer:pcbname.GTL

Bottom layer:pcbname.GBL

Solder Stop Mask top:pcbname.GTS

Solder Stop Mask Bottom:pcbname.GBS

Silk Top:pcbname.GTO

Silk Bottom:pcbname.GBO

NC Drill:pcbname.TXT

Mechanical layer :pcbname.GML

 

発注

…と思ったら、春節のお休みなので、休みが明け次第発注します。

低温調理用のコントローラを作る2

概要

 今回は低温調理器を作るにあたって、主要な部品の選定について話します。

 

ちなみに

 コントローラなんて作らなくてもいいよ、ただ使いたいんだよ!って方は、既製品を購入してもらったほうが早いです。ものによってはヒータ以外セットになってますし、それなりに安いです。

 

必要なもの

 低温調理器は、制御の入門書などでよく見る、水槽の温度制御そのものです。制御対象は水温なので、制御対象の状態を知るために温度計が必要です。水温の操作は、上げるためにヒーターが必要です。下げるためにはクーラーが必要ですが、目標値は室温よりも高いため、クーラは必要ないでしょう。あとはヒーターのON/OFFを行うリレーと、制御用のCPUを選定します。

 

温度計

 熱電対やアナログ出力の温度センサは、基準電圧の生成・管理が面倒なので、デジタル出力の温度センサを使うことにします。さらに、水につけるため防水加工が必要です。

 

 デジタル出力のセンサにはいくつか候補がありますが、パッケージ化+防水加工されているものがAmazonで売られているので、DS18B20というセンサをつかいます。複数のところから同じような製品が出ているので、DS18B20を使ったものであればどれでもいいと思います。秋月電子で、センサ単体が250円ということを考えると、自分で単品を買ってきて防水加工する必要はないでしょう。約300円也。

 

ヒーター

 試算したところ、温度の維持だけであれば100Wもあれば十分な感じです。やはり防水でなければならないので、まずは調理用の湯沸かし器を探しました。

 Amazonで見つけた投げ込み式の湯沸かし器ですが、ワット数が高すぎるのと、熱源剥き出し、更に電源が海外仕様なので、ちょっと怪しい感じ。

 

 他に良さそうなものがないので、代替案とりあえず水槽用のヒーターを使います。サーモスタット必要なタイプのヒーターを選んでください。オートヒーターではだめです。熱源が露出していないヒーターを使うことにします。約1,900也。

当然本来の用途と違う上、これを使う以上はAC100Vを扱うことになるので、取扱時にはそれなりに注意が必要です。場合によっては、他の加熱方法を考えます。

 

リレー

 ヒステリシス制御であればリレーで良いですが、PID制御の実装を考えているので、PWM制御のしやすいSSRを使います。 Amazonに完成済みのモジュールが安く売られていますが、レビューに怪しいコメントがあるのを見つけてしまったので、中が見えて安心なものを使います、今回は秋月のキットを使います。250円也。

ソリッド・ステート・リレー(SSR)キット 25A(20A)タイプ

  放熱をしなくても2A程度まで使用できるので100Wのヒーターなら十分でしょう。

 

制御用のCPU

 ArduinoやmbedやRaspberry pi等のプラットフォームをつかうと実装が楽なのですが、そこそこのお値段がするので、水没・水ぬれする危険がある制御に使うのは気が引けます。なのでマイコンをそのまま使います。

 入手しやすいのはPICとAVRですが、ライターの調達難易度からAVRを使います。PWMが使えて、そこそこGPIO数がある品を選びます。250円也。

AVRマイコン ATMEGA328P-PU

 制御プログラムを書いてみて、十分か判断しますがよっぽど大丈夫でしょう。

 

その他

 調理するたびにPCなんて出したくないので、制御基板一枚で低温調理が完結してほしい。そのため、UIとして、以下の部品を使います。

  • キャラクタLCD(I2C接続のもの)約500円
  • ロータリーエンコーダ 80円
  • タクトスイッチ 10円×2
  • LED 3つ

これらと、抵抗などの必要な部品は手元にあったものを使います。諸々の部品含めると、コントローラだけで2000円ぐらいで仕上がるかと思います。

 

次回は、基板の設計と検証までをまとめます。