もう1年の半分が過ぎたんですが、天体写真を撮る機会はかなり少なくこのまま1年が終わるんじゃないかと思うくらいです。仕事が忙しかったんで放置状態のカメラ冷却ですが、ほんの少し最終形に近づきました。(いや、どちらかというと一歩後退したかも…)
まずは、おうちで実験するための電源をぽちりました。
中華製のお安いやつですが、12V 20A出せるらしいです。もちろん回路には10Aの電流制限をつけてるので、いきなりMAX電流が流れることはありません。
で、目標温度を5℃にして試してみたのですがなかなか冷えず、さらにはヒートシンクが結構熱くなっていることに気づきました。おそらく、放熱が間にあっていないようです。
試しにヒートシンク側ペルチェ素子のPWM MAX Dutyを3段階に変えて実験です。
条件1 ヒートシンク側ペルチェ素子 PWM MAX Duty60%ターゲット側のペルチェ素子 上記Dutyの1/4目標温度 5℃
条件2 ヒートシンク側ペルチェ素子 PWM MAX Duty80%ターゲット側のペルチェ素子 上記Dutyの1/4目標温度 5℃
条件3 ヒートシンク側ペルチェ素子 PWM MAX Duty99%ターゲット側のペルチェ素子 上記Dutyの1/4目標温度 5℃
予想通り、Duty最大でも10℃を下回らず。まあ、確かに12V 10A 近くを供給しているので、それだけでも120Wという熱量。ホットな飲み物ならしばらく保温できる量です。
こりゃいかんということで、ヒートシンクをごついのに変えて実験です。条件は下記の通り。
条件4 ヒートシンク側ペルチェ素子 PWM MAX Duty99%ターゲット側のペルチェ素子 上記Dutyの1/4目標温度 5℃
条件5 ヒートシンク側ペルチェ素子 PWM MAX Duty99%ターゲット側のペルチェ素子 上記Dutyの1/3目標温度 5℃
条件6 ヒートシンク側ペルチェ素子 PWM MAX Duty99%ターゲット側のペルチェ素子 上記Dutyの1/3目標温度 -5℃
9cmファンが取り付けられた、ヒートシンクです。これだとさすがにフィンを手で触ってもそんなに熱くなく、よく放熱されています。
-5℃の目標温度だと霜がびっしりです。
さて問題は、これをどうやってカメラに乗せるか?です。あきらかに重量があるので、しっかりとした取り付けが必要です。
ということで、完成はもう少し先になりそうです。
晴れないですね。今日の部分日食も曇って全然ダメでした。
なので、季節柄 あじさいをパチリ。
こういった花の撮影も超久しぶり。ほんの30分ほどの撮影時間でしたが楽しめました。こうなると星も映したいですが、あと数週間は星が撮影できない日が続きそうです。
その間に、カメラ冷却を進めねば…(まともに動かそうとしたら、いろいろ課題が見つかり修正中)
晴れない日が続いてます。なんかこのまま梅雨に突入しそうで、本来の目的が果たせずです。
嘆いても仕方ないので、そろそろCMOSカメラ冷却を完成させないとダメですね。
ペルチェ素子は2段にしているのですが、カメラと接触する部分は薄い銅板にしました。カメラとは当てるだけに。冷却能力が劣るのはやむを得ずです。
で、これをカメラに当てます。
うーん、やはりいい大きさになりますね。で、先立ってカメラの中に、乾燥シートを入れておきました。
このユニットを制御回路につなげるのですが、念のため電流制限回路を追加し全体回路を見直して、もう一度手配線しなおしました。
上側が追加した電流制限回路です。過電流を検出するとペルチェ素子への電圧がカットされるようにしています。スイッチング素子には電流が流れっぱなんでそこそこ熱くなるのが難点です。まあ、これ以上電源側を壊すわけにいかないので、これで良しとします。
パターンを起こすわけではないですが、配線の参考にするためにパターン図も作成し、これを見ながら、手配線しました。
結構ごちゃっとしましたが、自分で使うのでいいとしましょう。ちなみに、放熱板を背負っているスイッチング素子が過電流のときにOFFになる素子です。熱くなるので放熱する必要があります。(最初能力が低い素子を使って、チンチンに熱くなったのは内緒です)
とりあえず、お試しの16℃設定のまま冷やしてみました。
ソフトの設定で、3~4Aくらいで制限かけたままですが、一応冷えているみたいです。37.4℃が10分くらい33℃になりました。
何とか冷えそうですが、目標のセンサー温度10℃はなかなかきびしそうかなあ~。
次は電流制限を10Aに変更とケーシングして実践投入の準備だあ。
CMOSカメラを冷やすのにシステムも必要なんですが、その前にカメラとどうやって接続しようかと悩んでいました。まあ、あまり悩みすぎても仕方ないので作ってしまえとこんな感じでやってみました。
まずは、カメラに取り付けるベースプレートを棚の奥にあった透明アクリルで準備しました。四角にくりぬくのに、ルーターで削りました。
むむっ、透明なものは写りにくいですね。で、カメラに取り付けます。
アルミ板にしようかと思ったんですが、真ん中をくりぬけるか不安だったのでとりあえずアクリル板にしました。
こんな風に中央にペルチェ素子がはまります。とりあえず、組んだらこんな感じです。熱的に結合しないようにプレートとヒートシンクはアクリルビスで止めています。
さて次はプレートに念のため断熱材代わりのコルクを貼ります。
USBコネクタを指すところは貼らずにおいておきます。
さらに、カメラ本体も断熱材のようなもので覆います。今回はフロアマットを100均で勝て着て加工します。
あまり意味ないかもしれませんが、窓に貼る結露をとるシートも入れておきます。
コネクタ部分はこんな感じです。
さて、ペルチェ素子と合体させる前にソフトを完成させないといけません。実は先日実験してたらバグのせいでペルチェ素子がONしたままになり、電源として使っていたポータブルバッテリを壊してしまいました… 最終的には何らかの電流制限をかけないとダメそうです。まあ、それは後にするとして、作業を続けます。
温度検出にはサーミスタを使います。温度で抵抗値が変化するやつです。
まずは、カメラに取り付けるベースプレートを棚の奥にあった透明アクリルで準備しました。四角にくりぬくのに、ルーターで削りました。
むむっ、透明なものは写りにくいですね。で、カメラに取り付けます。
アルミ板にしようかと思ったんですが、真ん中をくりぬけるか不安だったのでとりあえずアクリル板にしました。
こんな風に中央にペルチェ素子がはまります。とりあえず、組んだらこんな感じです。熱的に結合しないようにプレートとヒートシンクはアクリルビスで止めています。
さて次はプレートに念のため断熱材代わりのコルクを貼ります。
USBコネクタを指すところは貼らずにおいておきます。
さらに、カメラ本体も断熱材のようなもので覆います。今回はフロアマットを100均で勝て着て加工します。
あまり意味ないかもしれませんが、窓に貼る結露をとるシートも入れておきます。
コネクタ部分はこんな感じです。
さて、ペルチェ素子と合体させる前にソフトを完成させないといけません。実は先日実験してたらバグのせいでペルチェ素子がONしたままになり、電源として使っていたポータブルバッテリを壊してしまいました… 最終的には何らかの電流制限をかけないとダメそうです。まあ、それは後にするとして、作業を続けます。
温度検出にはサーミスタを使います。温度で抵抗値が変化するやつです。
1/T=1/B*ln(R/R0)+1/T0
(B:B定数)
こんな式で、抵抗値から温度に変換できるのですが、このままだと上手く計算してくれなかったので、Maximaという数式を扱えるソフトで次のように変換して使いました。
T=B*T0/(T0*ln(R/R0)+B)
次はPID制御です。私自身比例制御はよくやっていたのですが、PID制御まではやってなかったので、Google先生に聞いてマイコンで扱える形式のPID制御式をゲット。
pertie1.duty = pertie1.duty_old + pertie1.Kp * (pertie1.en - pertie1.en1)
+ pertie1.Ki * pertie1.en
+ pertie1.Kd *((pertie1.en - pertie1.en1)-(pertie1.en1 - pertie1.en2));
(KP:比例定数、KI:積分定数、KD:微分定数、en en1 en2:目標温度と制御温度の差の現在値 t-1の値 t-2の値
,duty‗old:t-1の制御値、duty:現在の制御値)
とりあえず、適当に計算したkp=6.5 ki=0.5 kd=3.4で試してみました。
何もないと寂しいので(というか動いているかわからないので)有機ELディスプレイをつけて、温度などが見えるようにしました。もちろん、これ以上電源などを壊さないようにペルチェ素子の能力も半分以下にソフト的に制限を入れています。
温度変化の出力をUARTで吐き出してグラフ化すると…
目標値を16℃にして確認したのですが、1分ほどで目標温度になりました。もう少しチューニングは必要ですが、まずまずです。
ただ、ペルチェ素子の表面はうっすらと結露が発生。非常に気になるのでもうちょっと対策が要りそうです。先ほどやまぎりさんからシート状の湿気取りが良いと教えていただいたので試してみようと思います。
一番の課題は、消費電流ですね。実験で能力を抑えたにもかかわらず、5~6Aも流れていたので制限外すとあっという間に10A流れてヒューズが切れそうです。電流制限回路を追加しないとダメですね。完成までもう少しかかりそうです。
忘れたころにうれしいメールが入ってきました。そう、頼んでいたあれです。
予定通り、送付されました。コスモ工房様ありがとうございました。(うーん、黒は細かいところが見えないですね…)もちろん、図面通りの素晴らしい仕上がりです。
このように、M48のフィルターも純正品と同じく装備できます。でこれを本体にセットするとこんな感じで、軽やかにダイヤルを回してピント調整ができます。
部屋の中ではピントが合うことを確認できたので次は星を使っての確認ですね。私の計算が合っていればピントが出るはずなんですが、さてどうなることやら。ちなみに、右の青いのはカメラです。カメラを冷やす方のネタなんで、別の記事で紹介します。
予定通り、送付されました。コスモ工房様ありがとうございました。(うーん、黒は細かいところが見えないですね…)もちろん、図面通りの素晴らしい仕上がりです。
このように、M48のフィルターも純正品と同じく装備できます。でこれを本体にセットするとこんな感じで、軽やかにダイヤルを回してピント調整ができます。
部屋の中ではピントが合うことを確認できたので次は星を使っての確認ですね。私の計算が合っていればピントが出るはずなんですが、さてどうなることやら。ちなみに、右の青いのはカメラです。カメラを冷やす方のネタなんで、別の記事で紹介します。
思ったより、Qtを使ったアプリに移植するのに時間がかかりました。が、何とかUbuntu上で動くアプリが出来上がりました。(バーティノフマスクの補助機能はとりあえずおあずけ)
RP4のおかげで、Qt5 Creatorもサクサクでコンパイルも動作も問題なかったのですが、カメラから取得した画像を表示するのには苦労しました。
いろいろ試行錯誤の結果、
これで何とか無事に画像が表示されました。タイマーオブジェクトで定期的に表示され、それなりの速度で更新されるので、ピント合わせも結構楽です。
もちろん、カメラが複数あっても選択可能です。
アプリは面倒なんでサイズ変更不可にしてます。フルHD画面でないとはみ出ます。
趣味でLinuxアプリは初めてだったんですが、何とか無事出来上がりました。これで、ピント合わせの時にタブレットにつなぎなおす手間が省けます。
さて、実践投入はいつになることやら。
RP4のおかげで、Qt5 Creatorもサクサクでコンパイルも動作も問題なかったのですが、カメラから取得した画像を表示するのには苦労しました。
いろいろ試行錯誤の結果、
- OpenCVのMatオブジェクトをCV_8UC1で準備
- カメラはRAW8もしくはY8で動かして、取得した画像をMatオブジェクトにコピー
- MatオブジェクトをQImageにRGB888のフォーマットでコピー
- QGraphicsViewオブジェクトの描画エリアサイズに合わせて、アスペクト比を固定したままQImageをリサイズ
- QGraphicsViewオブジェクトのDrawImageメソッドで描画
これで何とか無事に画像が表示されました。タイマーオブジェクトで定期的に表示され、それなりの速度で更新されるので、ピント合わせも結構楽です。
もちろん、カメラが複数あっても選択可能です。
アプリは面倒なんでサイズ変更不可にしてます。フルHD画面でないとはみ出ます。
趣味でLinuxアプリは初めてだったんですが、何とか無事出来上がりました。これで、ピント合わせの時にタブレットにつなぎなおす手間が省けます。
さて、実践投入はいつになることやら。
とうとうGWも最終日となりましたが、やりたいことが終わらずじまいでした。
とりあえず、ソフトを完成させるべく進めていたのですが、バーティノフマスクの輝線を検出するのが上手くいかず、悩みまくりました。
少し考えた方法は次の手順です。
デバッグなんで、壁にピント調整時の写真を貼って取り込みます。その中央部を切り出し2値化。
それを、OpenCVの細線化関数にかけます。するとこんなヒョロヒョロの線になります。
次は、膨張処理をして少し太くします。この時点で不要な線が見えててあかん感じなんですが進めます。
最後はハフ変換で直線検出をして、なんとなくそれらしい感じになりました。ただ、ここから3本の線に集約するのが上手くいかず時間切れとなりました。
とりあえず目的のカメラ画像の表示と中央部拡大ができるようになったので、この状態でUbuntuに移植してみます。
GUIはQt5を使うつもりですが、フォームの準備とかが大変そうなんでwindowsにQt5をインストールして、試してからにしようと思います。
さて、Qt5の使い方の勉強だあ~
とりあえず、ソフトを完成させるべく進めていたのですが、バーティノフマスクの輝線を検出するのが上手くいかず、悩みまくりました。
少し考えた方法は次の手順です。
デバッグなんで、壁にピント調整時の写真を貼って取り込みます。その中央部を切り出し2値化。
それを、OpenCVの細線化関数にかけます。するとこんなヒョロヒョロの線になります。
次は、膨張処理をして少し太くします。この時点で不要な線が見えててあかん感じなんですが進めます。
最後はハフ変換で直線検出をして、なんとなくそれらしい感じになりました。ただ、ここから3本の線に集約するのが上手くいかず時間切れとなりました。
とりあえず目的のカメラ画像の表示と中央部拡大ができるようになったので、この状態でUbuntuに移植してみます。
GUIはQt5を使うつもりですが、フォームの準備とかが大変そうなんでwindowsにQt5をインストールして、試してからにしようと思います。
さて、Qt5の使い方の勉強だあ~
システムをRP4にしたのはいいのですが、ちょっと不便なことも出てきました。それは、初期の星の導入時とピント合わせ時のカメラ画像モニターです。今は、タブレットに接続して、ASICAPでモニターしています。
Or Captureもコンパイル&インストールしたのですが、すぐ落ちてしまうという残念な結果に。Windowsが入っていたStickPCを使っていた時は安定かつピント合わせのガイド機能があるSharpCapが便利だったなあと懐かしむ羽目に…
では、ないものは作ってしまえと昨日からぼちぼちプログラミングをはじめて、ようやく想定していたものになりました。
とりあえず、思った形になるかVisualStudio C++で作成しています。
もちろん、中央に星を導入できるようサークルも追加。細かい説明がないASIライブラリのドキュメントを見ながら試行錯誤してようやく絵が出ました。もう少し頑張って、中央部の拡大画像の表示とバーティノフマスクの光条に線を上書きして一致具合を見やすくする機能をつけるつもりです。
さて、これをLinuxに移植せねばならんのですが、ほとんどそちらでアプリを作ったことがないので、はたして上手くいくか?
ぼちぼち頑張ろうっと。
Or Captureもコンパイル&インストールしたのですが、すぐ落ちてしまうという残念な結果に。Windowsが入っていたStickPCを使っていた時は安定かつピント合わせのガイド機能があるSharpCapが便利だったなあと懐かしむ羽目に…
では、ないものは作ってしまえと昨日からぼちぼちプログラミングをはじめて、ようやく想定していたものになりました。
もちろん、中央に星を導入できるようサークルも追加。細かい説明がないASIライブラリのドキュメントを見ながら試行錯誤してようやく絵が出ました。もう少し頑張って、中央部の拡大画像の表示とバーティノフマスクの光条に線を上書きして一致具合を見やすくする機能をつけるつもりです。
さて、これをLinuxに移植せねばならんのですが、ほとんどそちらでアプリを作ったことがないので、はたして上手くいくか?
ぼちぼち頑張ろうっと。










































