4. SmileSlim85デコーダ
- ATtiny841を使用したSmileSlimデコーダ開発を目的として試作した、非実用的なATtiny85暫定版NEM651のデコーダ
- Bトレ機関車タイプに組み込む事を確かめるため、片面実装とし可能な限り薄型とする
非対称DCC検出の非実用的な実験回路- モータ最大電流0.5A
- DCC最大ピーク電圧18V
- ※スマイルコネクタでArduinoスケッチ(プログラム)の書き変えが可能
※スマイルコネクタは、スマイラーさんが提案されたDCCデコーダ向け書き込み規格です。
基板
回路図
部品リスト
部品番号 | 仕様 | 型式 | 入手先 | 通販コード | 購入単位 | 価格 | 単価 | 数量 | 備考 |
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個 |
スケッチの注意事項
- 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};
*Port[colour] = intensity;
} - コンパイルスイッチ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
- コンパイルスイッチ2:#define _ACCESSORY
ATtiny841など、IOピンの多いチップで機能拡張に備え、不足気味のフラッシュエリアを節約するため、NmraDccライブラリのアクセサリ機能をコメントアウトするスイッチを追記しました。
#ifdef _ACCESSORY
if( CV29Value & CV29_ACCESSORY_DECODER ) // Accessory Decoder?
{
...
これで10%程度節約して、使用量は80%に収まっています。 - OPS CV書き込みモードを追加
NmraDccライブラリはOPSモードでもCV書き込みを実行しますが、アドレスチェックはユーザのスケッチで行わなければなりません。またOPSモードの時はAckを実行ないコードもスケッチに追加しました。 - 統括制御アドレスを追加
重連運転など、複数の固有アドレスを一時的に一つの統括制御アドレスで操作する事が出来ます。ヘッドライトの点灯制御も追加しました。
スケッチのダウンロード
最近のコメント