無料ブログはココログ

4. SmileSlim85デコーダ

  • ATtiny841を使用したSmileSlimデコーダ開発を目的として試作した、非実用的なATtiny85暫定版NEM651のデコーダ
  • Bトレ機関車タイプに組み込む事を確かめるため、片面実装とし可能な限り薄型とする
  • 非対称DCC検出の非実用的な実験回路
  • モータ最大電流0.5A
  • DCC最大ピーク電圧18V
  • ※スマイルコネクタでArduinoスケッチ(プログラム)の書き変えが可能

 

※スマイルコネクタは、スマイラーさんが提案されたDCCデコーダ向け書き込み規格です。

 

 

基板

 

Smileslim85_a_3 Smileslim85_b

 

 

回路図

Smileslim85_sch

 

 

部品リスト

 

部品番号 仕様 型式 入手先 通販コード 購入単位 価格 単価 数量 備考
C1 1608チップ積層セラミック 10μ35V 秋月電子 P-13161 10個 ¥150 @15 1個  
C2 2012チップ積層セラミック 22μ25V 秋月電子 P-08240 10個 ¥180 @18 1個  
C4 1608チップ積層セラミック 0.1μ50V 秋月電子 P-13374 40個 ¥100 @2.5 1個  
D1,2,3,4 ショットキーバリアダイオード RSX101VA/1A 秋月電子 I-05951 20個 ¥180 @9 4個  
D6 ショットキーバリアダイオード RB751S-40/0.03A 秋月電子 I-01370 25個 ¥100 @4 1個  
J1 1.27mmピンヘッダ 2200SA-25G-34 秋月電子 C-03865 1x40 ¥90 @2.25 6ピン  
R1,2 1608チップ抵抗 47K 1/10W 千石電商   10個 ¥53 @5.3 1個  
R3 1608チップ抵抗 100K 1/10W 千石電商   10個 ¥53 @5.3 2個  
R4 1608チップ抵抗 22K 1/10W 千石電商   10個 ¥53 @5.3 1個  
U1 フルブリッジモータードライバー A4953ELJTR-T 秋月電子 I-12317 1個 ¥160 @160 1個  
U2 3端子レギュレータ TA78L05F 秋月電子 I-00494 10個 ¥250 @25 1個  
U3 AVRマイコン ATTINY85-20SUR 秋月電子 I-09574 1個 ¥250 @250 1個  

 

 

スケッチの注意事項

    1. Drazzy Core ATtiny85でanalogWrite関数が動作するTimer1PWMはD4のOC1Bだけですが、下記urlでとても便利な関数が紹介されていましたので、無断で活用させて頂きました。
      Four PWM Outputs from the ATtiny85
      オリジナルの関数名はSetColour()ですが、モータ駆動に使うのでpwmWrite()にリネームしています。関数のパラメータはTimer1限定に変更しました。

      const int motor_pwma = 0;
      const int motor_pwmb = 1;
      volatile uint8_t* Port[] = {&OCR1A, &OCR1B};
      int Pin[] = {1, 4};

       

      void pwmWrite(int colour, int intensity) {
        *Port[colour] = intensity;
      }

    2. コンパイルスイッチ1:#define PWM_ONBRAKE
          モータドライバーにA4953を使用しています。このドライバーはOn-FreePWMなので、PWMオフの間逆起電力の逃げ場が無く、リニアな駆動ができません。そのためOn-BrakePWMモードにするスイッチです

      #ifdef PWM_ONBRAKE
        pwmWrite(motor_pwmb, 255 - aPWMRef);
        pwmWrite(motor_pwma, 255);
      #else
        pwmWrite(motor_pwmb, aPWMRef);
        pwmWrite(motor_pwma, 0);
      #endif

 

  1. コンパイルスイッチ2:#define _ACCESSORY
        ATtiny841など、IOピンの多いチップで機能拡張に備え、不足気味のフラッシュエリアを節約するため、NmraDccライブラリのアクセサリ機能をコメントアウトするスイッチを追記しました。
    #ifdef _ACCESSORY
      if( CV29Value & CV29_ACCESSORY_DECODER )  // Accessory Decoder?
      {
    ...
    これで10%程度節約して、使用量は80%に収まっています。
  2. OPS CV書き込みモードを追加
        NmraDccライブラリはOPSモードでもCV書き込みを実行しますが、アドレスチェックはユーザのスケッチで行わなければなりません。またOPSモードの時はAckを実行ないコードもスケッチに追加しました。
  3. 統括制御アドレスを追加
        重連運転など、複数の固有アドレスを一時的に一つの統括制御アドレスで操作する事が出来ます。ヘッドライトの点灯制御も追加しました。

 

 

スケッチのダウンロード

SmileMotor85_diet_0315.zip