忍者ブログ

あやの

NゲージをベースとしたDCCについての日記を 書いています。 ある程度貯まりましたら、鉄道模型のDCCのまとめサイトに まとめています。 借りている容量が最大に達しましたので、移転します。 ★移転先:http://maison-dcc.sblo.jp/

2024/03    02« 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  31  »04
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

KiCadの3Dビュワーでいつも板厚が1.6mmでなんだかなーと思っていましたが、
板厚の設定が変更できることがわかりました。
デザインルール→レイヤセットアップで板厚の変更ができます。





1.6mm設定

0.6mm設定。うすい!

PADの位置を色々検討していまして、上下に配置してみてます。
O1とO2は、両極性のFX1,FX2  O3,O4はFX3とFX4
V1とV2は12V出力

I1とI2はRAIL、12VとGNDはTOMA-RUN用端子です。






拍手[2回]

PR
ちょこっとSmileFunctionDecoderSlim(両極性+2FX FunctionDecoder)に向かいました。





FL12と比べると十分に小さいでしょ!



パターンは明日検討してみるかな。

拍手[2回]

早起きして、SmileFunctionDecoderキットの部品動作確認の為、
試しに5枚実装してみた。
両面に実装して約2時間。検査も多分1枚30分くらいかかりそう。
昼の仕事のローディングでやったら、原価すごいことになりますw
家内制手工業だと時給2000円は欲しいな(ぼりすぎ?)


シリコンマットのお皿に、部品をあらかじめ出しておきます。


余計な所にハンダが付かない様にマスキングして作業開始!


抵抗アレイとかDual FETとかめんどくさいやつ


抵抗アレイは、全pinにハンダ持っちゃって、ハンダ網で余計なハンダを
吸い取った方が簡単です。


完成〜。








拍手[1回]

最近のDecoder基板の薄型化に触発されて板厚0.6mmバージョンの
SmileFunctionDecoderを検討しています。

回路はこんな感じ。
CPU Attiny85
両極性端子(ヘッドライト:調光可能/テールライト:On/Offのみ) 2FXとしても使用可能
2FX(室内灯とかパンタスパークとか車掌灯など)
LED用電源は12V
LED用の電流制限抵抗は載せたい・・・

新しい事は
ブリッジダイオードはRoHMのUMR12N SOT-363パッケージで小型!
5V電源はツェナーダイオードを使用
両極性ドライバとしてHブリッジのMP6513(モータは動かせないよ!)
2FXドライバとしてRoHMのUMG1Nのデジタルトランジスタ



この抵抗はLED用の電流制限抵抗です。



大きさは、25.4mm x 7.62mm 厚さは1.6mmくらい。
SmileConnectorが不要な方はミシン目から切り離せる感じに。


もう一つのパターンは、部品を両面に実装して、長手方向をシェイプアップした
タイプ。
大きさは、15.494mm x 7.62mm 厚さは3.2mmくらい。





【追記】
 議論用のスレッドを立ち上げました!



拍手[2回]

ファンクッションは当初
出発時 F4
PM9 F5
AM0 F6
AM3 F7
AM6 F8
ヤード F9
で作りましたが、DCS50k がF9認識しなかったので、AM6無くしてF8 ヤードになっています。

また、DCS50Kは電源を入れ直しても、前回のファンクッションを覚えている様で
いろいろ対策入れました。
勝手にF4が始まるのはガードしきれていません。
ヤードはランダムに点灯する様に作ってみました。




void Elm_Control(){
  static char state = 0;    // ステート
  static char lamp[8]={0,0,0,0,0,0,0};
  static char sw = 0;
  static long cnt=0;
  long selL  =0;
  
  switch(state){
    case 0:
      if(gState_F4 == 0){
        lamp[0] = 0;
      } else {
        lamp[0] = 1;
      }
      if(gState_F5 == 0){
        lamp[1] = 0;
      } else {
        lamp[1] = 1;
      }
      if(gState_F6 == 0){
        lamp[2] = 0;
      } else {
        lamp[2] = 1;
      }
      if(gState_F7 == 0){
        lamp[3] = 0;
      } else {
        lamp[3] = 1;
      }
      if(gState_F8 == 0){
        lamp[4] = 0;
      } else {
        lamp[4] = 1;
      }
      if(gState_F9 == 0){
        lamp[5] = 0;
      } else {
        lamp[5] = 1;
      }
      digitalWrite(O1, LOW);
      digitalWrite(O2, LOW);
      digitalWrite(O3, LOW);
      digitalWrite(O4, LOW);
      
      cnt ++;
      if (cnt==10){
          state = 1;
           cnt =0;      
      }
      break;
      
    case 1:
      if(gState_F4 != lamp[0]){
        // F4 受信時の処理
        // 出発時
        digitalWrite(O1, LOW);
        digitalWrite(O2, HIGH);
        digitalWrite(O3, LOW);
        digitalWrite(O4, LOW);
        lamp[0] = gState_F4;
        break;
      }
      if(gState_F5 != lamp[1]){
        // F5 受信時の処理
        // PM9時
        digitalWrite(O1, HIGH);
        digitalWrite(O2, HIGH);
        digitalWrite(O3, HIGH);
        digitalWrite(O4, HIGH);
        lamp[1] = gState_F5;
        break;
      }
      if(gState_F6 != lamp[2]){
        // F6 受信時の処理
        // AM0時
        digitalWrite(O1, HIGH);
         digitalWrite(O2, HIGH);
        digitalWrite(O3, HIGH);
        digitalWrite(O4, LOW);
        analogWrite(O4, 10);
        lamp[2] = gState_F6;
        break;
      }
      if(gState_F7 != lamp[3]){
        // F7 受信時の処理
        // AM0時
        digitalWrite(O1, HIGH);
        digitalWrite(O2, HIGH);
        digitalWrite(O3, HIGH);
        digitalWrite(O4, LOW);
        lamp[3] = gState_F7;
        break;
      }
      if(gState_F8 != lamp[4]){
        // F8 受信時の処理
        // AM6時
        digitalWrite(O1, LOW);
        digitalWrite(O2, LOW);
        digitalWrite(O3, LOW);
        digitalWrite(O4, LOW);
        state = 2;
        lamp[4] = gState_F8;
        break;
      }
      if(gState_F9 != lamp[5]){
        // F9 受信時の処理
        // ヤード
        digitalWrite(O1, LOW);
        digitalWrite(O2, LOW);
        digitalWrite(O3, LOW);
        digitalWrite(O4, LOW);
        state=2;
        lamp[5] = gState_F9;
        break;
      }
     
    break;
    case 2:
        if(gState_F4 != lamp[0]){
          state =1;
          break;
        }
        selL = random(3);// 0 - 2
        cnt = random(1,5);
        FlashTimer = millis();
        switch(selL){
          case 0:
            state = 3;
            break;
          case 1:
            state = 4;
            break;
          case 2:
            state = 5;
          default:
            break;
        }
        break;
      case 3:
        if((millis()-FlashTimer) >= 200){
          FlashTimer = millis();
          
          if(sw==0) {
            digitalWrite(O1, LOW);
            sw = 1;
            cnt--;
          } else {
            digitalWrite(O1, HIGH);          
            sw = 0;
          }
          if(cnt==0){
             state = 2;
          }          
        }
        break;
      case 4:
        if((millis()-FlashTimer) >= 300){
          FlashTimer = millis();
          
          if(sw==0) {
            digitalWrite(O3, LOW);
            cnt--;
            sw = 1;
          } else { 
            digitalWrite(O3, HIGH);          
            sw = 0;
          }
          if(cnt==0){
             state = 2;
          }          
        }
        break;
      case 5:
        if((millis()-FlashTimer) >= 400){
          FlashTimer = millis();
          
          if(sw==0) {
            digitalWrite(O4, LOW);
            sw = 1;
            cnt--;
          } else{
               digitalWrite(O4, HIGH);          
            sw = 0;         
          }
          if(cnt==0){
             state = 2;
          }          
        }
        break;
    default:
      break;
  }
}


拍手[0回]

ブログ内検索

プロフィール

HN:
あやのすけ
性別:
非公開
<< Back  | HOME Next >>
Copyright ©  -- あやの --  All Rights Reserved
Design by CriCri / Material by もずねこ / powered by NINJA TOOLS / 忍者ブログ / [PR]