google-site-verification: google3bd66dd162ef54c7.html
FC2ブログ

台風24号の通過に伴う気圧変化

 昨夜から今朝にかけて台風24号が紀伊半島から東北へ通過して行きましたが、その時の気圧変化を記録してみました。

 記録に使ったのは以前作った気圧計で、制御はArduino、気圧センサーはLPS25Hを使っています。

▼気圧計
気圧計(LPS25H)
 この気圧計は測定結果をシリアルに吐き出しているので、そのデーターをパソコンに取り込んで記録しました。

▼USBシリアルアダプタで読み出し
シリアルデーターを読み出す
 回路図を印刷したものを小さく折りたたんでケースの中に入れておいたので、接続箇所は簡単に判りました。なお、気圧の測定結果は10分間隔に送られてきて、データーレートは115200bpsです。

▼パソコンに取り込み
PCのteraTermに接続
 PCのTeraTermでデーターを受信し、タイムスタンプを付加してファイルに記録しました。このままモニタの電源を切って放置して寝てしまいました。

 翌朝、というか今朝はとっくに台風は通過していて良い天気になってます。

▼気圧変化グラフ
台風24号通過に伴う気圧変化
 記録されたファイルをエクセルで加工して気圧変化グラフにしました。

 台風は1時から2時くらいに当地に最接近していて、気圧は977hPaくらいまで下がっていました。

 ということで久しぶりに気圧のグラフを作ってみました。今回は手っ取り早くPCを使いましたが、ESP8266やRaspberry Pi などを使って、Webサーバーに直接データーを送り込むようなことがサクッと出来るとかっこいいのですが、まだまだそんな実力がありません。

▼気圧計の電池電圧
電池電圧
 ちょうど良い機会なので、気圧計の電池電圧をチェックしました。まだまだ電池は元気で、目標の3年間連続運転はいけそうな気配です。ちなみに、下の赤い点線まで電圧が下がるとバッテリー電圧低下を検出して自動停止する仕掛けになってます。

 なお、360日目あたりで、スリープさせる関数をdelayWDT2 に変更してより省エネ化したのですが、このタイミング以降の電圧低下のペースが遅くなっている感じなので、効果はあったようです。

LEDバッチの製作(MFT2018用)

 MFT2018が近付いてきましたが、たぶん土曜か日曜日のどちらかに行けそうです。MFTに行くと、ものすごく目立った格好をしている人がいますが、そこまでやらなくてもネームホルダーにLEDをチカチカさせている人とかいて、ああいうのいいなーと思っていました。

 そんなことで、LEDがチカチカ光るバッジを作ってみました。

▼LEDバッチ
ビニール袋に入れてバッチ化

 おなじみの秋月のC基板に組んだのですが、剥き出しのままでは危ないのでビニール袋に入れました。MFTの会場には小さな子供がいっぱいるので、こういう配慮は大事です。

▼部品面
全体
 基板の表はこうなっています。電源としてはボタン電池のCR2016を2個使い、コントローラーは私の記事ではおなじみのATmega328Pです。基板の右にあるのは5VのLDOな三端子レギュレーターです。

▼回路図(クリックで別窓に拡大図)
回路図
 これ、以前の記事と同じ物で、CPUのプルアップ抵抗でLEDを光らせています。こうすると外付け部品を減らせるので実装が楽になります。

▼LEDの配置検討図
LEDレイアウト検討
 クリスマスツリーの絵になっていますが、そのためのLEDの配置を検討した図です。LEDをハーフグリッド上に置くことで、表現の自由度を増やしています。

▼LED面(クリックで別窓に拡大図)
LED面(裏面)
 配線の様子が判ると思います。なお、使ったLEDは1608 です。(最近の超高輝度タイプを使わないと十分な明るさが得られません)

▼部品面
部品面

 プログラムはクロックが8MhzのArduino Pro/Pro mini用として作り、最後にCPUのヒューズを内蔵の8Mhz CRオシレーターに切り替えます。

 スケッチはこちら。LEDバッチのスケッチ

 新しい表示パターンを作りたかったのですが、実はこれ、以前作ったクリスマスツリーと同じものです。ただプログラムの中のディレイにdelayWDT2関数を使ってもう少し省エネ化しています。ちなみに、普通のdelay関数でやるとCPUの動作電流は8mA(@CPUクロック8MHz)くらい喰いますが、delayWDT2関数なら1/100以下に減らせます。とは言ってもLEDが全点灯するだけで2mAくらい消費するので、そこまでやる必要は無かったりします。

 ちなみに平均消費電流が1mA(半分のLEDが点灯)の場合、CR2016の電流容量が80mAhあるとすると、約80時間の連続点灯するはずです。

▼ヒューズ書き換え画面
ヒューズ書き換え
 内部8Mhzオシレーターで動くようにヒューズを書き換えます。久しぶりにAtmel Studio を立ち上げました。

▼動いている様子


◆まとめ
 C基板とAtmega328Pを使ったLEDバッチ作りは、なかなか面白い物が出来そうな気がします。何しろ17LEDを任意に点滅出来るので、固定部の絵を書き加えれば、簡易アニメのようなものが出来そうな気がします。

 このバッチを首から下げてMFT2018の会場に行く予定です。お気づきの方はお声がけいただくと嬉しいです。

【追記】
 MFT2018でLEDバッチの作者の方からお話を伺うことが出来たのですが、わざわざ5Vの電源を用意しなくても、コイン電池の3VでLEDを点灯させるだけで十分な輝度が得られるとのことです。但し、ダイナミック点灯させて平均電流を下げる必要がありす。今度やってみたいと思います。

デジカメの絞りユニットをArduinoで動かす(ソフト作成と動作確認)

 前の記事で、ハードが完成したので、今回の記事ではソフトを作ります。と言っても全くスクラッチから作るのではなくて、以前作った(作りかけた)ポタ赤用のパルスモーターのドライブソフトをちょっと手直しして使うことにします。

▼絞りユニット
S110の絞りユニット
 前の記事の写真の使いまわしですみませんが、動かすのはこのユニットです。

 パルスモーターは1-2相励磁で動かすことにします。また、反射センサーによる原点位置の検出機能があるので、初期化の処理を行って絞り羽根の位置出しを行うことにしました。

▼プログラムは以下の通りです
/* コンデジの絞りユニットの動作テスト(ステッピングモーターを1-2相励磁)
フォトセンサーを使った自動原点登録機能付き 2017/7/8 ラジオペンチ 
http://radiopench.blog96.fc2.com/
*/

#define coilAp 2 // coil A + へ接続
#define coilAn 3 // coil A -
#define coilBp 4 // coil B +
#define coilBn 5 // coil B -
#define orgSens 6 // ホームポジションセンサ

unsigned int pos = 32000; // 回転位置記録用変数(回転範囲は約±3000パルス)
long tt = 16000; // パルスレート(単位:μs max16383) 最高速は500
int offset = 5; // 原点センサのオフセット補正量

void setup() {
Serial.begin(115200);
pinMode(coilAp, OUTPUT);
pinMode(coilAn, OUTPUT);
pinMode(coilBp, OUTPUT);
pinMode(coilBn, OUTPUT);
pinMode(orgSens, INPUT);
homeReturn(); // カムの原点登録
}

void loop() {
for (int j = 0; j < 5; j++) { // 指定回数
cw(33); // 30パルス閉じる
delay(500);
ccw(33); // 30パルス開ける
delay(500);
}
cw(15); // 15パルス閉じて終わり
while (1) {}
}

void homeReturn() { // 位置初期化
if (digitalRead(orgSens) == 1) { // もし原点センサがONなら
Serial.println("Org. SW. is ON. move +20");
cw(30); // 正回転してセンサーをOFFの領域に入れる
delay(200); // センサーが安定するまで待つ
}
Serial.print("Serching Org SW. ");
while (digitalRead(orgSens) == 0) { // センサーがONになるまで
ccwP(); // 1パルス逆回転
Serial.print("."); // 進度表示
delay(20); // センサーのレスポンス待ち
}
Serial.println(); Serial.println("Org SW. found");
cw(offset); // センサーとカム位置のオフセットを補正
delay(100);
}

void cw(int n) { // CW方向に指定パルス数回転
for (int i = 0; i < n; i++) {
cwP();
}
}

void ccw(int n) { // ccw方向に指定パルス数回転
for (int i = 0; i < n; i++) {
ccwP();
}
}

void cwP() { // CW方向へ1パルス
pos++;
PMdrive(pos);
}

void ccwP() { // CCW方向へ1パルス
pos--;
PMdrive(pos);
}

void PMdrive(unsigned int n) { // 1-2相励磁でパルスモータドライブ
int phase;
phase = n % 8; // 位相を求め
switch (phase) { // 相当する状態に通電
case 0:
digitalWrite(coilAp, HIGH); // A+
digitalWrite(coilAn, LOW);
digitalWrite(coilBp, LOW);
digitalWrite(coilBn, LOW);
break;
case 1:
digitalWrite(coilAp, HIGH); // A+
digitalWrite(coilAn, LOW);
digitalWrite(coilBp, HIGH); // B+
digitalWrite(coilBn, LOW);
break;
case 2:
digitalWrite(coilAp, LOW);
digitalWrite(coilAn, LOW);
digitalWrite(coilBp, HIGH); // B+
digitalWrite(coilBn, LOW);
break;
case 3:
digitalWrite(coilAp, LOW);
digitalWrite(coilAn, HIGH); // A-
digitalWrite(coilBp, HIGH); // B+
digitalWrite(coilBn, LOW);
break;
case 4:
digitalWrite(coilAp, LOW);
digitalWrite(coilAn, HIGH); // A-
digitalWrite(coilBp, LOW);
digitalWrite(coilBn, LOW);
break;
case 5:
digitalWrite(coilAp, LOW);
digitalWrite(coilAn, HIGH); // A-
digitalWrite(coilBp, LOW);
digitalWrite(coilBn, HIGH); // B-
break;
case 6:
digitalWrite(coilAp, LOW);
digitalWrite(coilAn, LOW);
digitalWrite(coilBp, LOW);
digitalWrite(coilBn, HIGH); // B-
break;
case 7:
digitalWrite(coilAp, HIGH); // A+
digitalWrite(coilAn, LOW);
digitalWrite(coilBp, LOW);
digitalWrite(coilBn, HIGH); // B-
break;
}
delayMicroseconds(tt); // 指定時間待つ
}
 homeReturn 関数で、絞り羽根の原点登録を行っています。絞りの開放側に原点スイッチがあるのですが、絞り羽根が全開になってから少し先の位置で原点スイッチが入ります。つまり原点位置には少しオフセットがあるので、その量を14行目のoffset で補正しています。
 まあ絞りを動かすデモだけならこんなことまでやる必要は無いのですが、後々のことを考えて真面目に作っておきました。

 ちなみにこのオフセット量には個体差があるはずなので、ひょっとしたらメーカーの出荷試験で、個別に調整が行われているのかも知れません(結果はEEPROMなどに保存)。もしそうなら、絞りユニットを交換するとオフセット量が合わなくなって、露出が少し狂うかも知れません。

 13行目の変数 tt でモーターのパルス間隔をμs 単位で指定しており、値が小さくなると高速で動きます。400μs くらいが限界だったので、少し余裕を見て500μsあたりまでで使うのが良さそうです。モーターの電流を増やせばもっと高速で動かせると思いますが、まあこれくらいの速度で動けば充分でしょう。
 一方で遅い方は、ここの数字を大きくすればいいのですが、delayMicroseconds 関数の制限から、16383μsより大きな値を入れることは出来ません。

 あと、説明が後になってしまいましたが、このモーターを1-2相励磁で使った場合、40パルスで1回転します。

 動作の様子は下記の動画をご覧下さい。

▼説明動画

 ちょっと愚痴ですが、動画のテロップは、以前はyoutube のアノテーション機能を使っていたのですが、それが1年前に廃止になり、仕方なく Windows Live Movie Maker を使っていました。ところがそれもいつの間にか動かなっていました。そんなことで、今回の動画の字幕は OpenShot Video Editer というフリーソフトで作りましたが、慣れるまで大変でした。

◆まとめ
 ということでめでたく絞りユニットを動かすことが出来ました。最高速だとものすごい速さで絞りが動きます。流石に完成された工業製品だけのことはあります。

 せっかくここまでやったのですが、とりあえずこの絞りの使い道はありません。まあ、持っていれば何かの時に役立つはずなので、安全に保管しておくことにします。ドキュメントはこのブログを読めば判るはずです。

 デジカメの修理から始まったこの話ですが、何か手を動かせば、それに関連した情報や経験を得ることが出来るということでしょうね。実際にやってみることは大切です。
カレンダー
10 | 2018/11 | 12
- - - - 1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 -
プロフィール

ラジオペンチ

Author:ラジオペンチ
電子工作を中心としたブログです。たまに近所(東京都稲城市)の話題など。60過ぎて視力や器用さの衰えを感じつつ日々挑戦!
コメントを入れる時にメールアドレスの記入は不要です。なお、非公開コメントは受け付けていません。

記事が気に入ったらクリックを!
最新記事
カテゴリ
最新コメント
リンク
FC2カウンター
検索フォーム
月別アーカイブ
RSSリンクの表示
QRコード
QRコード