SSブログ

ds-DCCデコーダーで両渡り線ポイントN-PX280 (F)を動かす。(追記:動きは微妙)(その1) [ds-DCCデコーダ]

 トミックスの両渡り線ポイントN-PX280 (F)をどうしても欲しくなってしまい買ってしまった・・・。買ってしまったからには、どうしても動かしたくなり、ds-DCCデコーダーで動かすことにした。
 まず、ds-DCCデコーダーのトミックスポイント駆動は一つのポイントを駆動させるのがやっとなので、そのままでは使えない。(でも、2つ使えば出来そう)。
 また、前から、大きいコンデンサを使用して、ポイント駆動して見たかったこともあり、それで行くことにした。
 まず、大きいコンデンサのポイントデコーダーといえば、DS52がある。
 以前に、トミックスのポイントがうまく動かなそうだったときに、こっそり買ってあったので、その基板と実装部品から、どうなっているのかを確認した。(2層基板なので一生懸命見れば、なんとなく回路わかる気がする)
 DS52について.jpg
 コンデンサの付きかたはまず、12V電源から直列に 放電用 充電用の抵抗 22オームが二つと、型番不明のコイル、ダイオードがついている。そして、その後にでっかい2200uFのコンデンサが付いている。出力の切替はNMOS,PMOSを使用した、いわゆるモータードライバで、デコーダー本体はPICという構成である。美しくまとめると、WebNucky様のポイント用アクセサリデコーダ(FPM Decoder2)の回路図です(DS52のほうがモータードライバが単品のため、回路的には見にくいです)。
 しかし、私はここでなぜかモータードライバでなく、リレーを使いたくなってしまい(主に、モータードライバのTA7291Pを使うよりも半田付けが少ないかもと勝手に思い込んでただけ、少なくないし・・・)、リレーで作るでっかいコンデンサポイントドライバを作ることにした。
 全体的なシステムはこんな感じ。左からポイント二つ、コンデンサドライバ部、ds-DCCデコーダとなっている。
全体図.jpg
 で、適当に書いたコンデンサドライバ部の回路図がこちら。
回路図.png
 部品はすべて秋月電子で買っていて、値段も含めたイメージは
R1,R2:セメント抵抗22Ω 5W 30円 *2
a href="http://akizukidenshi.com/catalog/g/gP-05752/" target="_blank">C1:電解コンデンサ2200uF 50円
RL1,RL2:リレー12V 2A 60円 *2
D1:1N4148 2円
+ユニバーサル基板とかピンヘッダーとかジャンプワイヤーとか(結構高かったりする)。
 実際の回路は、表から、
回路、上から.jpg
 めくると、裏側は
 回路、下から.jpg
 で、+12V、GNDは、Arduino Pro miniの
RAW/VIN から+12V,
GNDからGND
をとる。
12Vの取り口.jpg
 スケッチも少々いじらなければならない。
 DSDCCAccessoryDecoderスケッチ途中の、void notifyDccAccState命令を以下のように書き換える。
 やっていることは今までPWMで0.3秒出していた信号を1秒間直流で出す。PWMでリレーを叩くとリレーが震えてかわいそうだし。
-----------------------
void notifyDccAccState( uint16_t Addr, uint16_t BoardAddr, uint8_t OutputAddr, uint8_t State)
{
	uint16_t aAccAdress = Addr;

		
		//DEBUG
		Serial.print("notifyDccAccState: ") ;
		Serial.print(Addr,DEC) ;
		Serial.print(",BAdr:");
		Serial.print(BoardAddr,DEC) ;
		Serial.print(",OAdr:");
		Serial.print(OutputAddr,DEC) ;
		Serial.print(", Target Adr:");
		Serial.print(aAccAdress,DEC) ;
		Serial.print(",");
		Serial.println(State, HEX) ;
	
	//アドレスチェック(CVから得た11bit分の信号を比較)
	if( gAccessoryAddress != aAccAdress)
	{
		return;
	}
	
	
	//前回の処理から1sec経過後ならば、ソレノイドを駆動する。
	//if( (millis() - gPreviousWorkTime) > 1000)
	//{
		//連続して信号がくるのでフィルタ用
		//gPreviousWorkTime = millis();
		OutputStop();	
	
		//Output DC pulse
		//if( State == 1)
		//{
  
                uint8_t aDir = (OutputAddr & 0b001);
  
			if(aDir  == 0)
			{
                      		Serial.println("Diverse") ;
				digitalWrite(MOTOR_PWM_B, 0);
				digitalWrite(MOTOR_PWM_A, 1);

			        //digitalWrite(LED,HIGH);
                        }
			else if( aDir == 1)
			{
                		Serial.println("Straight") ;
                		digitalWrite(MOTOR_PWM_A, 0);
				digitalWrite(MOTOR_PWM_B, 1);
			        //digitalWrite(LED,LOW);
			}
		//}
		
		//Wait 300ms
		delay(1000);
		
		//Stop output
		OutputStop();

	//}


}

-----------------------
 そして、動作確認。まずは普通のポイントをふたつで 動いた。

次に両渡り線ポイントN-PX280 (F)。動いた。→後日もう一度やったら動いたり動かなかったりでした。

 で、満足してしまい、車両と一緒に動かしていない・・・。
 なお、今回コンデンサが2200uFと大きいため、感電しますので気をつけてください。
 線路電源を切ると、数秒で放電するようです。Arduino pro miniの電源LED(赤)が徐々に消えて行くので、それでわかると思います。

 
nice!(0)  コメント(2)  トラックバック(0) 

nice! 0

コメント 2

Yaasan

DS52の不明となっているICは、うちにあるのだとNXPの汎用ロジックIC 74HC132でした。NANDの4回路入りです。

たぶん、DS-DCCデコーダのブリッジダイオード出力間にそこそこ大きいコンデンサ(~1000uF)を置いておけば、瞬間的に大きい電流をポイントのソレノイドに流せるようになるので、動きの悪いものでも動くかもしれません。
ぬっきいさんの回路やDS52にある初期充電抵抗(放電用ではありません)が無いので、線路へ電源投入時は要注意ではありますが・・・。

by Yaasan (2015-05-04 16:12) 

fujigaya2

 コメントありがとうございます。
>不明が74HC132
→うちのも同じでした。配線がICの下に入ってしまっているのか、どう配線されているか、と、機能がいまいちわからなかったので、不明にしてしまいました。電源投入時のPICが立ち上がるまでに誤動作するのを防ぐ細工か何かですかね。
>初期充電抵抗(放電用ではありません)
→ご指摘ありがとうございます。直しました。
>たぶん、DS-DCCデコーダのブリッジダイオード出力間にそこそこ大きいコンデンサ(~1000uF)を置いておけば、瞬間的に大きい電流をポイントのソレノイドに流せるようになるので、動きの悪いものでも動くかもしれません。
→コンデンサ2200uFはあまっているので、ちょっとやってみるかどうか考えます。大きすぎるかなあ。

by fujigaya2 (2015-05-06 20:23) 

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

※ブログオーナーが承認したコメントのみ表示されます。

トラックバック 0

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。