無料ブログはココログ

« 2021年9月 | トップページ | 2021年11月 »

2021年10月

2021年10月23日 (土)

Arduino nano の互換性

Arduino nano Every

手持ちの台数不足のため、自動運転スケッチは nano3だけで、nano Everyの動作チェックは行っていませんでした。「秋月電子の部品だけで完成します」と謳っている立場上まずいので、DSairから取り出して動かしてみたら端っからビルドエラーが。
S88.cpp:318:3: error: '_delay_us' was not declared in this scope
S88.cppはゲヌマ・フジガヤ2さんのS88 Detectorから拝借したフォトリフレクタ処理コードです。delayMicroseconds()に置き換えるとビルドは通りますが、ネットの情報によると精度が悪いそうなので、sakuraさんのサイトの wait()関数を拝借しました。チックカウントを取得する micros()を使ってディレイを作る関数です。
Arduino nano Everyボードはチェックが厳格なのか requestFrom()の引数の型でワーニングが出たので、(uint8_t, size_t)にキャストしました。Wire.hにはrequestFrom(int, int)とrequestFrom(uint8_t, size_t)のオーバーロードがあります。

NoboriKudari

無事、Everyで自動運転が出来ました。

 

2021年10月18日 (月)

ミント缶の進行方向転換

予期せぬ進行方向転換

ミント缶IVのスイッチ付速度調整ダイヤルは、停車時にスイッチがオフになり易く、予期せぬ進行方向の転換が起きます。以前のボリュームでは起きない現象ですが、スイッチの構造に大きな差は無い筈なので、特性を調べました。
左の波形がダイヤル式、右がボリュームです。時間軸は50msec/DIVです。ATMEGAの入力をプルアップしているので、進行中はローレベル、停車してスイッチがオフになるとハイレベルに変わります。

Rv12mmR09gs

右の波形のとおり、ボリュームでも「カチッ」という前にオフになります。バネが固い性か僅かなオフならツマミから手を放すとオンに戻りますが、強めに回して停車させると進行方向が換わってしまいます。ダイヤルではそっと回してもオフになる時間が長く、バネが柔らかい感触です。また、ダイヤルは径が25mm、ボリュームのツマミは15mmなので、バネの固さだけでなくツマミ径によるモーメントの違いが影響していると思われます。
メカ的な対策は難しいので、スケッチでスイッチのオフから検知フラグを立てるまでに遅延するコードを入れて、僅かなオフをキャンセルしてみました。遅延が長すぎると転換しない事もあるので0.5秒くらいが限界でした。

2021年10月16日 (土)

対向運転3

RailComで在線検知

コントローラのアドレスを運転前に自動選択出来ると都合がよいので、在線検知ダイオードをRailComアドレスリーダーに置き換えました。ところが、C-SizeDCCが不定期にリセットする謎の現象が。電源に異常は無く、I2Cを全く行なっていないのに何故かです。

Reset_20211016161401

止む無く、OLEDが老眼にキツいミント缶を久しぶりに掘り出したら、全く現象が出ず自動運転を継続出来ています。自動運転開始前に運転停止ボタンを押すと、RailComで読み出したアドレスでミント缶のアドレスを設定します。

Ontrackbidi

頻発するケアレスミス

どうせ捨てる基板だと、いい加減にパターンカットしたり頻繁に部品を換えたりで、基板に加わったストレスで動作が不安定。おまけに自作のI2C接続コードの断線も加わり、3か月惰眠を貪り、ようやく動作が安定しました。

対向運転

ミント缶の選択アドレスと自動運転のアドレスが重複した場合の排他的処理は行っていませんので、RailComを使った2列車対向運転スケッチは作っていません。ミント缶2台接続の時はスロットル側を無効に、自動運転の場合はミント缶を無効にしたいので、排他的処理は今後の課題です。

 

« 2021年9月 | トップページ | 2021年11月 »