無料ブログはココログ

2017年10月13日 (金)

7セグLEDドライバーのテスト

7SEG LEDドライバーIC

  電気屋の毎日のyaasanさんが 7SEG I2Cモジュールをミント缶DCCコントローラに使う事を提案されてます。http://powerele.sblo.jp/article/180453571.html
aitendoでTM1637Dチップを仕入れたので実験してみました。20ピンDIPで100円でした。Arduinoライブラリ"DigitalTube.zip"はキースキャンが出来ませんが、Arduino Forumにchmroさんのコードがアップされていましたので拝借しました。 https://forum.arduino.cc/index.php?topic=360318.0
TubeTab[]はDigitalTubeのデータに戻しました。またDigitalTubeをライブラリに登録したので、エラーが出ない様にクラス名をTM1637keyに書き変えました。 テストしたスケッチはDigitalTubeに付属するNumberFlow.inoで、0からFまでdisplay()で桁を移動しながら連続表示します。
ユーザズマニュアルで指定されている、CLKとDIOピンの10Kohmと100pは手抜きして取り付けていませんが、取り敢えず表示出来ました。

3桁7セグと1個のキーで実験

Img_1557

  display()関数は、桁を指定しないで表示データ配列のみを渡すと、複数の桁を一気に表示する様です。
キースキャンはSG1からSG8の8ビットをK1とK2で切り替えて、16個のキーを取得します。
uint8_t keypressed = tm1637key.keyscan();
スキャンデータは何も押さなければ255、K1-SEG1間に接続したスイッチを押すと247でビット3がオンです。おや、ユーザズマニュアルと一致しませんね。2バイトデータを1バイトにエンコードしているからでしょう。

2017年10月 8日 (日)

店頭でALTOISミント缶を発見

中身より人気のミント缶

   上野でアルトイズのミント缶を見つけました。 御徒町駅からアメ横ウェルカムモールに入り、少し先の輸入菓子店です。
ペパーミントは残念ながら訳有りで3個セット売り。中身はともかく、缶が空いてからは、電子回路のケース、水彩パレット、小物入れ、サバイバルキットなど、ミント缶DCCコントローラファンに限らず、Arduino UNO、BeagleBone Blackにも使えて用途は沢山。激安のケースです。

Image1

新しく設計する時は、ペパーミント色の基板も作ってみたいです。

2017年10月 5日 (木)

フォトセンサー入力式MP3プレイヤー

MP3デコーダV5にフォトセンサーを接続

Desktop StationのYaasanさんが、MP3デコーダをデジタル入力式MP3プレイヤーとして使う例を提案されています。
Yaasanさんの電気屋の毎日のブログ http://powerele.sblo.jp/archives/20170903-1.html
名古屋電鉄さんのHP http://www007.upp.so-net.ne.jp/nagoden/

デジタル入力のバリエーションとして、フォトセンサーで車輛を検出して、駅到着アナウンスを流すスケッチを作りました。

Mp3dec_di

  フォトLEDの電流制限抵抗はセンサー側に実装して、センサー入力はデコーダの入力ピンをプルアップ設定しました。内部プルアップは数10Kohm程度で、少し感度は落ちます。
  車輌の進行方向は、2個のフォトセンサーを使うべきところ、手抜きしてDCC速度信号の受信イベント notifyDccSpeed()から取得しました。

スケッチの要点

1. アドレスマスク無しのファンクションデコーダ設定
  //Dcc.init( MAN_ID_NUMBER, MAN_VER_NUMBER,   FLAGS_MY_ADDRESS_ONLY , 0 );
  Dcc.init( MAN_ID_NUMBER, MAN_VER_NUMBER, FLAGS_OUTPUT_ADDRESS_MODE, 0 );
  任意のアドレスの進行方向を取得する為です。2列車同時走行は禁止です。

2. フォトセンサー検出アルゴリズムを実装
  Fujigaya2さん作 S88_Control_K6スケッチのdetect_analog();を1CH分にして使いました。
  http://seesaawiki.jp/fujigaya2/d/S88%20Detector
  スケッチで使われている動作確認用のRUN_LEDをMP3Decに実装しました。

3. フォトセンサーオンならMP3を再生します。

  if(gbIRon)
  {
    if(gPwmDir > 0)
    {
      PlayMP3_Simple(3);  // 上り到着アナウンス
    }
    else
    {
      PlayMP3_Simple(4);  // 下り到着アナウンス
    }
  }

4. 出発アナウンスは手動ファンクションで再生
  アドレスマスク無しなので、ファンクション受信イベント関数にマイアドレスチェックを追加。

extern void notifyDccFunc(...
{
  if(Addr == gCV1_SAddr)
  {
    ...
  }
}

走行テスト

Circle_run

2017年10月 1日 (日)

鉄コレ12m級小型電車Aをサウンド化

SmileDecoderR6n

  サウンドデコーダ製作のエキスパートなごでんさんの、擬似走行音を出す車載デコーダ"SmileDecoderR6n"は改良の為リリースが少し延期されました。待ち焦がれている方も多いと思いますが、DCC電子工作連合の特権を使って、R6nのES版を動作確認目的で組み込んでみました。
SmileDecoderR6nについてはこちら。
  http://www007.upp.so-net.ne.jp/nagoden/

鉄コレ12m級小型電車A

  中古で見つけた12m級小型電車Aを暫く放置していましたが、急遽TM-03動力ユニットを仕入れてDCC化にチャレンジです。へのへのもへじのおもちゃ箱さん
  https://blogs.yahoo.co.jp/henohenomoheji707/14037163.html
の記事で『窓ガラスを外すと何とかなる』を真似たら入りました。
動力ユニットはDCモードの動作確認をするまでも無くいきなり分解です。

Image1

集電板とモータを結ぶ電極を撤去すれば、デコーダの組み込みは簡単そうです。

リード線引き出しとデコーダを縮小

  集電板とモータに直接リード線をハンダ付けしました。デコーダ側は2mmピッチのコネクタを使います。 デコーダはスマイルコネクタが、斜めに傾いているモータのお尻に接触するので、エッジ部をカットしました。

Image2

  後でもスケッチを書き込む為に、aitendoで見つけた0.68mm径のP50B1(アイテンドーでの名称はテストプローブですhttp://www.aitendo.com/product/9822)をユニバーサル基板に立てて、スマイルコネクタの内側に並んでいるスルーホールに当てます。

Image3

クランプ機構を作る予定でしたがうまく行かず、厚紙で作ったスペーサを挟んで上から押さえつけました。妄想中のSmileSlim841は基板の幅が異なるので、クランプでは無く押さえ機構を考えたいです。

デコーダ組み込み

  DIYキューブは高さを縮小。トマランコンデンサはスペースが足りない様なので、10MFの電解直付けです。

Image4 Image5

感想

  なんとか収まりました。サウンド選択の初期値は、小型電車Aに相応しい吊掛け音ですが、面白いのでCV47を書き変えてドレミファインバータに変更しました。サウンドスケッチは既にMPUパワーの限界に達していて、DCCパケット精度の影響かサウンドが停止する事があります。サウンドトラックスのDSXデコーダと共通の課題となる予感がします。

2017年9月15日 (金)

ロクハンに室内灯デコーダを組み込む

室内灯デコーダ

  前回のキハ52動力車改造は、yaasanさんの了解を得られたので、すっかり「やりたい放題モード」に入ってしまい、今度はキハ52トレーラ車に、DCC館の汎用室内灯デコーダ SmileFunctionLightを組み込みました。オーナー様の電子工作の楽しみを奪ってしまい、申し訳ございません。
  デコーダのサイズは145mm x 7.8mm、9個の角形LEDが並列に実装されていて、組み込む車両に合わせてLED1個分毎に基板をカット出来る構造です。LEDは白と暖白があり、キハなのと個人的な好みで暖白を選択しました。
  室内灯はPWMA出力なので調光が可能です。他にPWMBとデジタル固定出力が有ります。PWMBはヘッドライトに、デジタルはテールライトに使用しました。オリジナルのヘッドライト基板は双方向タイプなので、テールライトを独立させた基板をユニバーサルで手作りしました。

基板を加工する

  キハ52の内部に基板を載せるスペースは実測77mmに限られますので、この長さに合わせるため、スマイルコネクター側から4個のLEDをカット、そして反対側のDCC入力パッドをカットしました。幸いな事にパッドは2か所ありますので、一か所をカットしても支障は有りません。

Pcb_cut

  基板のボトム面にはトマランコンデンサ用の巨大なダイオードが!、あと2012サイズのデカップコンで車体が浮くので此れも撤去。

Parts

  トマラン回路が必要な時は外付けとし、デカップコンはトップ面にウレタン線で空中配線しました。一か所だけロクハンオリジナルの室内灯基板固定ボスとLEDが干渉しますので、LEDを撤去して1.2mmの丸穴を開けました。

Parts_move

スケッチを書き込む

  スケッチはスマイルコネクターをカットする前に書き込みます。スマイルデコーダの形状ガイドラインは、生みの親のスマイラーさんが公開されています。url=http://d.hatena.ne.jp/har_amc/20160517
基板の幅が9.8mmのカードエッジ幅より2mm狭いので、隙間を埋めるスペーサを低発砲塩ビ板で手作りです。紙の様にカッターで切り取る事が出来ます。

Spacer

室内灯点灯

  書き込むスケッチは、sfd5_light-master.inoをベースに手直しして、F0をヘッドライトに、F1を室内灯にしました。調光はDCC館ブログで紹介されている小田急5000系を真似て、ファンクションオンオフの繰り返しで行う方法にしました。

Kiha_light

void LightControl()
{
  static char state_room_light = 0;
  static char State_diff = 0;
  
// O1の処理 室内灯

  if(State_O[1][1] != State_diff) {
    switch(state_room_light) {
      case 0: 
        pwmWrite(room_light, Brightnes_low);
        state_room_light = 1;
        break;
      case 1: 
        pwmWrite(room_light, Brightnes_mid);
        state_room_light = 2;
        break;
      case 2: pwmWrite(room_light, Brightnes_hi);
              state_room_light = 3;
        break;
      case 3: 
              pwmWrite(room_light, 0);
              state_room_light = 0;
        break;
    }
    State_diff = State_O[1][1];
  }

注:室内灯を点灯させると、以降全くパケット処理が出来ない現象に遭遇しましたが、タイマー1のプリスケーラーを1/128に変更したら解消しました。パケット処理はタイマー0で影響は無い筈なので、タイマー1のカウントアップが頻発してMPUの処理能力が低下するのかもしれません。

«ロクハンにワンコインデコーダを押し込む