目次
前
次
Relay emulate
マイコンのファームウエアで、リレーをMAKEかBREAKする
信号を出すことになりました。
実際のリレーがないとして、ファームウエアを書かない
わけにいかないので、LEDを使ってエミュレートする基板
を半田付けしました。
MAKE、BREAKの信号は、正論理で'1'と'0'にし
NPNトランジスタ2SC1815で、LEDを点灯する
回路は以下。
個別トランジスタの手持ちが、少なかったので
ゲートICを使って12個のリレーを制御する回路
にしてみました。
ArduinoMega2560で動かすときの関数は、次のようにして
動作確認しました。
#define ENTRY_RELAY 34
#define ENTRY_RELAY_EXIT 46
void init_relay()
{
byte ii ;
/* scan */
for ( ii = ENTRY_RELAY ; ii < ENTRY_RELAY_EXIT ; ii++ ) {
digitalWrite( ii , LOW );
pinMode( ii , OUTPUT );
}
}
void put_relay(word rx)
{
byte ii ;
byte jj ;
word tmp ;
word rr ;
boolean btmp ;
/* copy */
rr = rx ;
/* scan */
for ( ii = 0 ; ii < RELAY_MAX_SIZE ; ii++ ) {
/* address */
jj = ENTRY_RELAY + ii ;
/* get bit value and impress */
tmp = (1 << ii) ;
/* judge */
btmp = LOW ;
if ( tmp & rr ) { btmp = HIGH ; }
/* impress */
digitalWrite(jj,btmp);
}
}
12ビットなので0から4095を与えると、対応するLEDが
点灯することにしてみました。
ArduinoMega2560を使った基板では、次のように接続。
目次
前
次