以前にも、このようにして、壊したことがあるので、LX200の電源LEDを自己点滅型に交換して動作していることがわかるようにしてある。それでもこの有様なので、懸案となっている安全対策を考えることにした。
比較的単純なのは、LIMIT SWである。写真のようなマイクロスイッチを適当な場所に取り付けて、赤径・赤緯軸が限界まで回転すると動作するようにして電源を切るなどして、動作を止める。この方法は、単純で確実なのだが、赤道儀に適切に取り付けるのがめんどうである。
角度センサーは秋月などで入手できるものがいろいろあるが、単にチルトを検出するだけだったり、アナログ出力だったりして、使えない。そんなわけで、秋月で取り扱っている加速度センサーADXL345を使って角度を検出することにした。
このセンサーは安価なわりにはかなり高機能であり、使い方も複雑なのだが、Arduinoのライブラリがあるため、簡単に使うことができる。図のように接続して、サンプルをたよりにプログラムを書いてテストする。
こんなふうにボードを傾けて置いたりして、シリアルモニタに出力したところ、らしい値が検出された。
LX200に実装するには、もうすこしいろいろなことを詰めないといけないけれども、とりえず角度を検出するという初期の目標はクリア。
参考までに、Arduino のスケッチ。
動作は、Arduinoシリアルモニタで確認する。何か一文字送信すると、加速度を検出し、角度を計算してPCに送信する。
/*******************************************************
Name: ADXL345_Angle
Function: ADXL345加速度センサーモジュール角度検出
Notes:
1. Originally from http://bildr.org/2011/03/adxl345-arduino/
2. Compiled Arduino 1.66
********************************************************/
#include <Wire.h>
#include <ADXL345.h>
ADXL345 adxl; //variable adxl is an instance of the ADXL345 library
char incoming_char; // Character read from serial stream
void setup(){
Serial.begin(9600);
adxl.powerOn(); // Sensor Power ON
}
void loop(){
int x,y,z; // X,Y,Z value
double Xangle,Yangle;
//Check for character
if(Serial.available()>0){
incoming_char = Serial.read();
adxl.readAccel(&x, &y, &z); // Read the accelerometer values and store them in variables x,y,z
// Output x,y,z values
Xangle = atan2(x,z)/3.14*180; // Calcurate angle
Yangle = atan2(y,z)/3.14*180;
Serial.print("X= "); Serial.print(x);
Serial.print(" Xangle= "); Serial.println(Xangle,1);
Serial.print("Y= "); Serial.print(y);
Serial.print(" Yangle= "); Serial.println(Yangle,1);
Serial.print("Z= ");
Serial.println(z); Serial.println();
delay(10) ; // Wait 10 msec
}
}