オーバーランを検出したら、SSRをOFFにして、LX200の電源をOFFにするしくみ。そのコントロールBOXは、写真のとおり。
電源をOFFにしたら、もとに戻すには、クランプをゆるめて動かすことになるが、ハンドセットやリモートでも動かせるように、強制電源ONのスイッチも取り付けた。
参考までに、回路図は、
Arduino のスケッチ(プログラム)は、以下のとおり。
加速度センサーから読み込んで、角度を検出し、東西それぞれのLimit を超えたら、SSR をOFFにして電源を切るという簡単なもの。
加速度センサーからの出力の精度が良くないため、検出に際して ON/OFF のヒステリシスを設定してバタツキを抑えている。
/*******************************************************
Name: ADXL345_AngleSSR2
Function: ADXL345加速度センサーモジュール角度検出
SSR Power Controle
Notes:
1. Originally from http://bildr.org/2011/03/adxl345-arduino/
2. Compile Arduino 1.66
********************************************************/
#include <Wire.h>
#include <ADXL345.h>
// include the library code:
ADXL345 adxl; //variable adxl is an instance of the ADXL345 library
char incoming_char; // Character read from serial stream
const int LED = 13;
const int SSR = 2;
const int LimitLED = 3;
const double LimitEast = -60.0; // Set East Limit
const double LimitWest = 60.0; // Set East Limit
const double Hyster = 5.0; // Set Hysteresis
boolean LimitON;
void setup(){
adxl.powerOn(); // ADXL345加速度センサーSensor Power ON
pinMode(SSR, OUTPUT); // SSR
pinMode(LimitLED, OUTPUT); // Limit LED
LimitON = false; // Initial set
}
void loop(){
int x,y,z; // X,Y,Z value
double Xangle,Yangle;
adxl.readAccel(&x, &y, &z); // Read the accelerometer values and store
Xangle = atan2(x,z)/3.14*180; // Calcurate X Y angle
Yangle = atan2(y,z)/3.14*180;
if (LimitON ==false){ // Limit not Detected
digitalWrite(LED,LOW);
digitalWrite(SSR,HIGH); // SSR ON
digitalWrite(LimitLED,HIGH); // Limit LED OFF
// re-Check Limit
if *1 LimitON = true;
}
else { // Limit Detected
digitalWrite(SSR,LOW); // SSR OFF
digitalWrite(LimitLED,LOW); // Limit LED ON
// re-Check Limit
if (!(( Yangle > (LimitWest - Hyster) )||( Yangle < (LimitEast + Hyster )))) LimitON = false;
}
delay(100) ; // Wait 100 msec
}
*1: Yangle > LimitWest )||( Yangle < LimitEast