=23この記事は、以前cERLでLaserOscillatorの微小温度制御用ヒーターを作った時のものです。[[br]]4まだ、EPICS環境が少し古い状態のまま作成していますが、やっていることは同じなので、作成例として転載します。==89Laserで使用しているoscillatorは、出力するレーザー周波数を加速器の周波数に同期させるためにpiezoを使って調整しているが、piezoの調整範囲を超えるとリセットがかかり、再度同期するまで周波数が不定になる。burstではさほど問題ではないがCWでは問題になるので、piezoの調整範囲(35~65)を超えそうになった場合には、一旦ビームを止めて手動でリセットしていた。[[br]]10偶に測定中に勝手にリセットがかかり、測定が中断することがあったので、この問題をある程度解決するために、oscillatorの下にヒータを入れて温度制御してやることにした。==1314ヒーターをPWM制御することで、温度調整を行うようにした。[[br]]15回路としては、ヒーター電源をリレーでON/OFFすることでDUTYを調整する。===1819ヒーター本体は、ユニバーサル基板に1w10Ω抵抗を4つ直列に接続したものを6列並列接続したものを作成。===2223ヒーター用の電源は18V汎用直流電源を使用。Black(以下、BBB)に専用ユニバーサル基盤を載せて、リレー回路を実装したものを作成。[[br]]28リレーの回路図は以下のようにした。2930[[Image(relay_schematic.png,300)]]3132このリレー回路のON/OFFは、BBBのP8-11(GPIO45)pinに接続した。[[br]]33このピンを使用したのは、起動時に特別は設定を行わなくてもGPIOとしてLOW状態のまま使用可能なため。起動時にHIGHになっているピンもある。==3738BBBのOSはDebian7.0で、開発環境はBBBのローカルに構築して今の所はNFSは使用していない。[[br]]39BBB用のepics環境は、{{{/opt/epics}}}に構築するように設定している。ファイルは他のBBBで以前構築したものをコピーして使用。[[br]]40{{{/cerl/epics/embed/BeagleBoneBlack/debian/epics_bbb_debian.tar.gz}}}にコピーしておく。epics-devgpio]を使用してみた。[[br]]45以下のようにしてインストール。ファイルはgit-hubからダウンロードしたものをコピー。===6061appはrootのホームディレクトリに作成。マニュアル]を参照して作成。"H")87}8889}}}9091コンパイル時には、{{{dioApp/src/Makefile}}}にdevgpioの設定を追加。devgpio96}}}979899ブレッドボード上にLEDをつけて、起動時にOFF状態でレコードからON/OFFできることは確認した。[[br]]100リレーのON/OFF時間をPWM制御する部分はsequencerで作成。10秒を1サイクルとしてON/OFFするようにした。===103104始めは手動でdutyを変えていたが、キチンと制御するために、以前iBNCTで作成した冷却水温度のPI制御シーケンスを使用することにした。[[br]]105sequencerは、duty制御用とは別に作成し、piezoの値変化から、dutyを制御するように作成した。[[br]]106以下のようになって、一応制御できているようだ。300)]]109110111但し、現状では0%や100%になった場合には、手の出しようがないのでそのまま任せておくしかない。[[br]]112これを解決するには、電源電圧を上げるか、抵抗を増やして発熱量を上げるか、外部からの温度変化が少なくなるように工夫するしかない。