SSブログ

S88 基板のためにレギュレータ交換 [自動運転]

 まず、秋月電子の通販からV7805-1000が届いた。で、L7805CVと交換した。
 私は、L7805を取るときは、はんだをランドにいっぱい盛って、3端子ともはんだごてからはんだを通して接合部を加熱しながら融かして抜いた。以前、部品が付いた状態ではんだ吸い取り線で一生懸命はんだを吸い取った後、加熱しながら部品を引き抜いたら、基板のランドごともげてしまった・・・。原因は、はんだが少ないところで加熱させてもコテ先から部品とランドに十分に熱が伝わらないためと思われる。 で、もう一回はんだを盛って、はんだ吸い取り線で温めながらはんだを吸って、スルーホールが空くようにしている。(でも、youtubeで吸い取ってから取ると言っている動画がある。スルーホールなし基板か?)
 V7805-1000は立てて使うタイプのようだが、FAN端子に被るので、カッコをつけて、寝かせて置いた。リードが細く、ぐらぐらする・・・。
re_DSC00335.jpg
 で、S88 基板を2枚つないだが、5Vレギュレータは温かくならずにちゃんと動いている。めでたし、めでたし。
((注意)もちろん改造は自己責任でお願いいたします。)


S88 Control基板接続時のDSmainR4の5Vレギュレータ発熱について [自動運転]

 日曜日は近くでやっていた江ノ電のタンコロ祭りに家族で行っていた。踏切や駅の非常ボタンを押せるコーナーがあり、押すとフニャリとしていて、思っていたのと違ってちょっと面白かった。
 江ノ電の一番新しい500系は、パンタグラフを2個とも上げており、4両編成ともなるとパンタグラフを4つも架線に上げており、結構変なのだが(東海道新幹線とか16両編成でパンタグラフ2個しか上げてないのに)、その理由を聞いた。
 500系はVVVF制御なのだが、一つだけパンタグラフを上げていると、本当にときどき、パンタグラフが架線から離線すること?場所?があり、離線すると故障の表示が出るので、500系のパンタグラフを二つとも上げて運転しているとのことだった。これで一つ江ノ電の謎が解けた気もしたが、4両編成でパンタグラフが4本とも上がっているのは、やっぱり変だなあと思う。
 で、本題だが、S88 Control基板をDSmainR4に繋ぐと、消費電流の影響で、5Vのレギュレータが結構熱くなる。ヒートシンク部分は触ると熱いので、「50度超えているなあ」と感じる。
 S88 Control基板はATMega328Pがおそらく20mA程度(ホーム、スマートホーム様ページ)S88 Detecorの赤外線LEDが一つ20mA(=(5V-1.2V)/220Ω)で、6個あるので、最高150mA程度使っているようである。(ちゃんと測っていない)
 Yaasan様によると、DSmainR4自体は200mA程度5Vを使用しており、S88ラインのほうは合計で100mA程度に抑えてほしいとのことで、大量に電流(電力)を使うなら、DSmainR4に5Vレギュレータにヒートシンクを点けるか、高効率に電圧を変換できるDCDCコンバータをつけたらどうでしょう?(ただし自己責任で)とのことだった。知らなかったのだが、レギュレータは電圧を熱で下げているとのこと。
 またはS88 Control基板に外部5V ACアダプターをつなげるようにするか?とのことだった。
(これについては基板改版時に考える)
 現状の電流量だが、赤外線LEDは100ms周期で40ms程度だけ光っている。電流消費量を抑えるため、これを100ms周期中のうち10ms程度まで光る時間を短くするスケッチを作ってみて、レギュレータが少し冷めないかを見てみたが、あまり変わらない。
 ということで、2個S88 Control基板をつけた状態で、5Vレギュレータにありあわせのヒートシンクをつけた。TO-220パッケージ用ではないので、適当につけている。
 re_DSC00333.jpg
 これで、レギュレータの発熱はある程度おさまり、ヒートシンクは熱い程度(たぶん40度台)となった。
 近日中にDCDCコンバータをDSmainR4に乗せ換えてみる予定。

ポイントデコーダーを作りつつ放置。 [自動運転]

 前回、N-PX280の動きが微妙だった。で、ここでの問題はDSDecR1のドライバのBD6231Fの最大電流が1Aというのがわかっているので、昔ユニバーサル基板で作ったリレーのポイントを基板化しようと思って、土日、一生懸命、5cm*5cmの基板内に収めようとかんばっていた。駆動はダーリントンシンクドライバを使って、かずいの雑記帳3様のページを参考にまず回路図を書いた。Yaasan様のVeryCheapDccDecoderのWikiで、AruduinoProMiniの互換品が、10個で1600円ぐらいで買えるとのことだが、日本に売っているATMega328Pにしようとして、入れるのに苦労した。また、コンデンサの充電部はNucky様のポイントデコーダを参考にしている。
PointDecorderK1_sch.PNG
 そして、動作確認もせずに(というかIC自体持っていない・・・)アートワークをしていた。もともと、ニコリのナンバーリンクが大好きなので、ちょっと楽しくって。
 で、めでたく、5cm*5cmに入った。5cm*5cmだとElecrowで面付けうまくできそうだし。
PointControl.png
 満足感に浸りつつ、思わず秋葉原に行って、ダーリントンシンクドライバや4700μFのコンデンサなどを買いに行って、家に帰ってから、自分のブログをよく読むと、最後に、その日は動いたが、次の日は動きが芳しくないと、どこかで聞いたようなセリフが書いてある・・・。
 で、やる気がなくなって放置した。まあ、その時は2200μFで今回は4700μFにするつもりだからちょっと良くなるかもだが、リレーは2Aのモノのままだし。リレーとATMega328を使用したせいで、材料費だけで600円超えているし。
 まずは、ダーリントンシンクドライバでリレーがうまく動くか確認しないと。と思いつつやる気が出ない。

S88 Detectorを作る 追加頒布分到着しました [自動運転]

 Nucky様のワンコインデコーダ3が頒布開始とのことで、どれがいいかなあとウインドウショッピングしていたら、悩んでいる間に売り切れてしまいました。また、追加されるとのことで、どれにしようかなあともう少し悩もうと思っております。(趣味の買い物は、買うまでの悩んでいるときが楽しいので)
 ところで、11月19日(木)の朝に注文したS88 Control基板とS88 Detector基板が本日届きました。今回も最短っぽいDHLシンセンでの送付です。順次、振り込みのご案内をいたします。また、順次、送付いたしますので、よろしくお願いいたします。

S88 Detectorで自動運転 その2(N-PX280) [自動運転]

 Yaasan様の自動運転(スクリプト)のWikiを見ていたら、何例か出ているので、それ以外のをやろうと考えた。
 TomixのTCS自動運転ユニットN<5563>のページで、なんか、基本的で面白そうな運転がないか探したら、あった。モード4、ダブルクロスポイント運転モード。
 トミックスのN-PX280は、以前買って、とりあえずDSDecR1で動かせた時点で、おもちゃ箱にしまい込んでおいた。理由は簡単で、Katoの電車やMicroAceのSLとか脱線するから。おまけに鉄コレもクロス通過中で集電不良で止まったりするし・・・。私の中で、かっこいいが使えないポイントということにしておいた。
 ただ、DSDecR3にKeepAliveコンデンサ(100uF)をつけると、集電不良を無視して、それなりに動くこともわかっているので(EM13だと止まることも多い)、一日かけてやってみた。
 以下が最終的な実験写真(汚い)。PCから自動運転のコントロールを行い、DSMaiinR4で全体の制御を行う。S88基板は、3.5mmミニプラグコードが1mしかないので、手前と奥の線で分けるため、2枚をデイジーチェーン接続している。センサは1,2,17,18を使用。TomixのN-PX280の給電状態はよくわからないので、4本の支線すべてにDCフィーダーを配線し、ポイントコントロールのため、DSDecR1を2つ使用。スケッチは、Yaasan様の物にGreen/RedでLEDが点いたり、消えたりするよう細工したものを使用。
 re_DSC00322.jpg
 クロスポイントとセンサの拡大写真は以下。
re_DSC00323.jpg
 いろいろ引っかかりまくって、朝始めたのに、出来上がったのは夕方・・・。こんなパターンばっか。
 まず、はじめの失敗。デコーダ開発ボード+琴電(アナログモータ)でやったのだが、クロスポイント中央辺りで集電不良で止まる。一生懸命、電車もポイントも掃除したが、余り良化せず、断念。
 で、昭和の鉄道模型を作る1巻のおまけ電車をDCC化(+KeepAliveコンデンサ100uF)したものでやることにした。スケッチもVVVFのK97にして、CV3,CV4の加速率、減速率は10とかですぐに止まるように設定。
 次に、二つ目の失敗。因縁のN-PX280制御のため、DSDecR1を二つ出して、KeepAliveコンデンサを一つは470uFで、もう一つは1000uFにつないだ。コンデンサの充電時の制限抵抗は2W?、47Ω。そして、DSMainR4の12V出力を入れても、動かない!。TB6643KQの過電流検出機能に引っかかってるとのこと。DSDecR1はレール経由で給電したら起動した。昭和おまけ電車も動かない!  たぶん、コンデンサの突入電流のせいでDSMainR4のポリスイッチが働いているんじゃないかなあと思って、ポイント用コンデンサを外してやったが、やっぱり動かない。  よくわからんので、全部外してDSDecR1一つにしたら(ポイント用コンデンサは外した状態)12V Onで動く。二つつなぐと動かない・・・。  昔の実験を見たら、DCC/MM2シールドでやっている。ここら辺の違いはポリスイッチ(3A)かなあと思い、まずは12V On(RUN/STOPボタン)して、その後、制限抵抗をつけたDSDecR1を一つずつそーっとつなぐと、ちゃんと電源Onできた。  途中で、電源容量かなあと思って、12V 1Aと4AのACアダプタを試してみたが、症状は同じで最終的には1Aのアダプタで普通に動いている。
 以下が、ポイント配線周りの写真。(実験だけで終わらせる予定なので、ワニ口クリップで。あと、470uF側のー側が抜けているが、実験中はちゃんとつながっていました)
re_DSC00324.jpg
 初めて4つのセンサを使ったのだが、センサ調整用のボリュームの位置は200KΩ中の左 目いっぱいとか中心とかなので、固定抵抗の200kΩか100kΩでいいんじゃないのかとふと思ってしまった・・・。そうしたら、そこの部分の価格は300円(=ボリューム50円*6)→6円(=固定抵抗1円*6)だが・・・。
 あと、気になったのは、S88を二つもつなぐと5Vを結構使うせいなのか、DSMainR4のIC3(LM7805)が結構熱くなる。触れる程度のすごい熱い程度なので、50℃~55℃かなあと思う。
 このときの、センサ部のスクリプトは、以下。4つセンサがあるので、4つあるが、中身としては、ポイントの切り替え二つ(ダブルクロスポイントのため)と電車の方向転換の組み合わせである。
 センサ位置は、全体写真の右下がセンサ1、左下がセンサ2、右上がセンサ18、左上がセンサ17で、開始トリガはすべて[進入](たぶん在線でも同じ動き)。昭和おまけ電車の番号は3。右方向が正方向。

[センサ1]

DESKTOPSTATION,SCRIPT,2013
SPEED,0,0,0
WAIT,10,,0
ACCESSORY,1,0,0
WAIT,10,,0
ACCESSORY,3,0,0
DIRECTION,0,2,0
WAIT,10,,0
SPEED,0,200,0
WAIT,50,,0
EXIT,,,0

[センサ2]

DESKTOPSTATION,SCRIPT,2013
SPEED,0,0,0
WAIT,10,,0
ACCESSORY,1,1,0
WAIT,10,,0
ACCESSORY,3,1,0
DIRECTION,0,1,0
WAIT,10,,0
SPEED,0,200,0
WAIT,50,,0
EXIT,,,0

[センサ17]

DESKTOPSTATION,SCRIPT,2013
SPEED,0,0,0
WAIT,10,,0
ACCESSORY,1,0,0
WAIT,10,,0
ACCESSORY,3,0,0
DIRECTION,0,2,0
WAIT,10,,0
SPEED,0,200,0
WAIT,50,,0
EXIT,,,0

[センサ18]

DESKTOPSTATION,SCRIPT,2013
SPEED,0,0,0
WAIT,10,,0
ACCESSORY,1,1,0
WAIT,10,,0
ACCESSORY,3,1,0
DIRECTION,0,1,0
WAIT,10,,0
SPEED,0,200,0
WAIT,50,,0
EXIT,,,0

 そして、以下が、完成した時の動画。なんとなく、2パターン取っておいた。
その1(正面から)


その2(いろいろな制御機器の光などの確認、ポイント、S88のセンサ状態)


 
 

S88 Detectorで自動運転 その1 [自動運転]

 前回、単純な往復運転をしたのだが、いくつか問題点があった。
(1)DesktopStationでセンサを踏んでイベントを開始してから、イベント中にもう一度センサを踏むと、最初からイベントが開始されてしまい、動きが変になる。
 具体的には、センサを踏んだら、まず電車を止めて、方向転換して、走り出す、イベントがもう一回起きないようにWAITを入れておく。とやったのだが、センサを二回踏むため、そこで再イベントが発生し、はじめから(つまりまた止まる!)となってしまっていた。
(2)S88の検出間隔は1秒~3秒で選べるが、もっと頻繁にイベントを見てほしい。(1秒間隔だと列車通過後のイベント開始が結構ばらつくため(最大1秒))
(3)VVVFスケッチは音を滑らかにするため、速度にLPF計算(中身は60回分の速度バッファ)を持っており、すぐに止まらない。使いづらい・・・。
(4)S88 Control基板のRUN LEDが意味もなくピカピカ光っててイラつく(たぶん100ms周期)。

 一つ、一つ、解決したので記す。
(1)再イベント問題
 Yaasan様に確認したら、イベントの最後にExitを入れないと、再イベントになります。とのこと。
以前のスクリプトは

DESKTOPSTATION,SCRIPT,2013
SPEED,0,0,0
WAIT,20,,0
DIRECTION,0,2,0
SPEED,0,250,20
WAIT,50,,0

で、Exitを入れていない・・・。
で、直して、

DESKTOPSTATION,SCRIPT,2013
SPEED,0,0,0
WAIT,20,,0
DIRECTION,0,1,0
SPEED,0,250,20
WAIT,50,,0
EXIT,,,0

としたら、ちゃんと、WAIT後まで、再イベントが開始されなくなった。
(上記スクリプトはDESKTOPSTATION,からEXIT,,,0を選んで、EVスクリプトの画面で貼り付けするとそのまま、貼り付けられる)
スクリプトの説明は、Yaasan様のWikiにあるのだが、やはり、読んでからやらないとだめね。(日本語のページありませんでしたっけ?)
また、最新DesktopStation V0.94 (Nov 19, 2015)では、EVスクリプトタブの実行状態タブの実行ログ内でExit無しで再イベントが始まった警告(ForceExit)が出るようになり、わかりやすい。

(2)S88の取り込み周期
 Yaasan様の最新DesktopStation V0.94 (Nov 19, 2015)で0.2秒間隔で取ってこれるようになっている。これで、イベント開始のばらつきが減ったので、停止位置が安定するようになった。

(3)VVVFスケッチはいわゆる加速率、減速率を緩慢にして、その状態でパラメータを固定のため、きびきびした運転ができない。この理由はデコーダー内部でモーター指示値を補間してやって、モーター音階を連続にするためである。DCCから一秒に数回モーター制御デコーダに指令が行くが、これを正直にVVVF音化すると、悲しいことに、全部ドレミファインバーター化する。(おまけにちょっとカッコ悪い音になる)。今回、この部分を普通のデコーダーのように加速率、減速率を変更できるようにした。だから、これで、即応にすると、ドレミファインバーター(カッコ悪い)になる。
スケッチはこちら(K97)
CV3 加速率 0:即応、~255:緩慢
CV4 減速率 0:即応、~255:緩慢
(0~20あたりが実用域かなあと思う。電車、VVVFの選びによって違いそうだが)
 最初、新しくCV値を作ろうとしてたが、Yaasan様から、それはCV3,4だと指摘され気づいた。(そんな基本的なパラメータがないわけないですよね)
 あとは、DSmainR5からCV読み値機能が付くそうで、それ用に、notifyCVAck部分を少々書き直した。(CV読み込み対応のコントローラを持っていないのでこれで合っているかどうかはわからない)
 なんか、Win10のPCを再インストールして、ArduinoのIDEを1.6.6にしたら、PWMDacSynthがWarningを出すようになった。まあ、ちゃんと動いているしいいか。

(4)S88 Control基板のピカピカLEDがイラつく
 6個のセンサーの在線フラグが一つでも立っていると、RUN_LEDが付くようにした。これで、最初のセッティング時にシリアルコネクタをつけてPCで見なくても、センサとボリュームだけでどうにかなるはず?
スケッチは、こちら(K4)
 




S88 Detectorを作る 頒布のお知らせ(追記5) [自動運転]

<追記5>
 ご希望のかたがいらっしゃいましたら、こちらのページでご確認ください。
 現状、在庫ありませんが、ある程度枚数がまとまりましたら、追加頒布を検討いたします。

S88 Control基板 1枚 600円
S88 Detector基板 12枚セット 600円
送料 200円

S88 Detectorを作る その4(とりあえず完成) [自動運転]

 11月8日に基板の設計が出来た!ということで、夜中、Elecrowに注文した。前回、基板が4日程度で製造されたにもかかわらず、送料をケチった(多分SALとかいうやつ)ため、その後11日間、着かないなあとウジウジしていた思い出があるので、今回はDHL(shenzhen 4 business day?)と言う、見かけ一番早そうな送付にしてみた。ただし、高くなった。(基板2種で6000円ぐらい。趣味の立場で言うと円安嫌い。)
 結果、11月12日にシンセンから送付、11月14日の夕方に家(神奈川県)に到着という、注文後5~6日で来て、中国すごいと思った。DHLのトラッキングによると、11月13日の昼に輸送業者に引き渡しとなって、その後トラッキングできないという悪評通りだったが、次の日佐川急便の方が持ってきてくれた。
 今回は、もし、しくじっていたら嫌だったので、S88 Contorol基板を単体で、S88 Detector基板を面付けで10㎝*5㎝サイズで10枚ずつ頼んだ。10cm*10cmサイズにして、設計間違えていたら、立ち直れないような気がしたので。(値段はあまり変わらないような気もするのだが)
 そして、これが到着した基板の写真。S88 Detectorの方は8枚面付けを想定していたのだが、12枚面付けしてくれた。Elecrow太っ腹!
DSC00308-1.jpg
 左がS88 Detector基板で右がS88 Control基板。
 基板の接続には3.5mmジャックを使うのだが、基板の穴パターンが長穴になる。で、Elecrowへの長穴の頼み方が分からず、Yaasan様にお聞きしたら、DS MainR5で4pinの3.5㎜ジャックを使っていて、製作実績がある部品図をお分けいただいて、今回それをコピペして作った。ちゃんと長穴になっていた。Yaasan様ありがとうございます。
 で、次に、ATMEGA328P-PUのブートローダーをどうするか。今回ケチって秋月電子から生のATMEGA328(ブートローダー無し)を買っている。
 スマイルライター+デコーダー開発ボードを組み合わせて、生のATMEGA328にブートローダーを書き込めばよいのだが、今回は、以前、スマイラー様からいただいた、(幻の)DSDecR2b(スマイルデコーダー初版)の基板に余りがあったので、こちらを使った。スマイラー様ありがとうございます。
 DSC00309-1.jpg
 28PinのDIPソケットとセラロック(16MHz)だけつければ完成なので、それで、ブートローダー書き込みをした。
 DSC00310-1.jpg
 それで、あとは、何も考えずに、図面通りに、はんだ付けして、
DSC00311-1.jpg
S88 Control基板は完成。S88 RJ45のIn側は繋がないので、実装しなかった。Out側をDSMinR4につなぐ。(何か間違っていたらご指摘ください。何せ、S88の本物を持っていないものでよくわかっていません)
 次に、S88 Detector基板だが、TomixのS70(70㎜直線線路)に付ける予定で作ったら、あとで気づいたが、S72.5だった。まあ、2.5㎜の違いだし細かいことは気にしない。
 まずは線路の裏に基板を載せて位置決め。フィーダー線をつける真ん中にPC1(photo detector)が来るように基板位置を決める。
DSC00312-1.jpg
 マジックで削る場所だけ黒く塗って、
DSC00313-1.jpg
プラモデル用ニッパで切る。(最初リューターでやろうと思ったが、たぶんプラモデル用ニッパの方が楽と思われる)
DSC00314-1.jpg
 基板を線路の裏に両面テープでつけて、センサ用の穴を開ける。基板の穴は1.0㎜なので、ピンバイスは0.8㎜とした。センサはTPR-105だが、0.8㎜の穴でICの足が通った。
 そして、センサと3.5㎜ジャックを半田付けする。ここで、3.5mmジャックの足があると線路が斜めってしまうので、足のうち出てしまう部分は、はんだ付け前に切った。また、センサ側のはんだを盛りすぎると線路下より飛び出てしまうので、盛り具合に気を付ける必要がある。
 あと、センサ面は、当たり前だが真上を向くようにしてやらないと、感度が悪くなる。ある程度はボリュームで調整可能だが。
 できたものの写真が以下。
DSC00315-1.jpg
 3.5mmジャックは4端子版を使用しているが、使っているのは3線だけなので、Daisoの両側3.5㎜プラグ線が使用可能である。(Yaasan様のアイディア)
DSC00316-1.jpg

 一応、動作確認のため、単線の往復をさせてみた。VVVFスケッチは音を滑らかにするため、速度を0にしてもすぐに止まらないのだが、それでやると電車のターンでセンサをオーバーしてしまい、ターンで行き/帰りとセンサを二回踏んでしまい、DesktopStationのS88イベントが2回起きてしまい、いろいろと面倒である。今回は、センサ内で止めるために、センサを踏んだら方向転換とした。そうすればVVVFスケッチでも即時停止するため。


 次に、複数個接続の確認を行った。とりあえずできた。
DSC00317-1.jpg

 あと、2つ注意点があり、
(1)純正品のマニュアルによると、RJ45の1pinは5Vか12Vが選べるらしいが、今回の基板は5V駆動だけを考えて作っている。12Vを入れると、マイコン(耐圧5.5V)と、Photo ReflectorのLEDが飛ぶ。
(2)Arduinoのソフト書き込みのために6pin端子を付けているが、これはS88端子ではない。DSMainのS88端子に繋ぐと悲しいことが起きる可能性がある。

 作り方やスケッチについては、Wikiにまとめる予定。(Yaasan様からいただいた元の図面なども掲載予定)
 少々お待ちください。

 

S88 Detectorを作る その2 [自動運転]

 明日11月2日にかわね路号が届くらしいので、明日以降に蒸気機関車にどうDCCを載せるかを考える。
 数日前に、東海道線で電車待ちをしていたら、EF64 1000番台 JR貨物新更新色(3024-1)が走っているのを初めて見てしまい、欲しくて仕方なくなってしまったのだが、(ヨドバシでもAmazonでもなんか安売りっぽくなっているし)、トミックスのロマンスカーとか、Katoの京急2100系とかも欲しいからと、ぐっとこらえている。こらえられないかもだが。
 で、S88 Detectorだが、
(1)rudysmodelrailway様のスケッチがDSMainR4で動くか確認
(2)Analogポート(6ポート)だけ使うので、16ポート→6ポートに減らせるか確認
(3)S88スケッチを2個つなげて動くか確認。(どうせ6ポートじゃ足りないし)
(4)S88 PhotoReceptorスケッチの作成と確認。
(あとはまた今度)
という感じで進める。

(1)rudysmodelrailway様のスケッチがDSMainR4で動くか確認
まず、S88のコネクタだが、(私はS88の本物を見たことがない)
DSMainの端子の名前と配列は
1:Data
2:GND
3:CLK
4:LOAD
5:RST
6:+5V
で、rudysmodelrailway様の名前付けは、
1:DATA
2:GND
3:CLOCK
4:PS
5:RESET
6:5V
となっている。細かいことは知らないが、たぶん、一緒でしょうと推測して、
スケッチのコメント通りに、
1:data->13
2:GND->GND
3:Clock->2(interrupt 0)
4:PS->3(interrupt1)
5:Reset->not used
6:Vcc->Vin(Vinは7V以上と書いてあるが、5V端子から給電すると壊れることがあるとどっかに書いてあるし)
とArduinoUnoをつないで、動かしたら、まんまで動いた。よかったよかった。

(2)Analogポート(6ポート)だけ使うので、16ポート→6ポートに減らせるか確認
 RB-S88スケッチのvoid clock()命令内の
clockCounter =(clockCounter +1) % 16;
で、16を必要なポート数に変更すれば(今回は6)、出来そうだったので、そうしたら、できた。
ただし、DSMainR4で使用時の癖なのかS88というものがそうなのかは知らないが、ポートは16個ずつ開くようで、6に変えると、1~6までは送られているが、7~15までは信号が送られないためか、緑になる。(下記キャプチャ参照)
センサイメージ.png
 となり、なにか、S88について突然不安になった

(3)S88スケッチAruduinoUnoを2個つなげて動くか確認。(どうせ6ポートじゃ足りないし)
 ということで、デイジーチェーン接続してどうなるかを確認するために、もう一つArudinoUnoを用意して、どちらも6ポートだけ開くようにして、実験したら、思惑通りに1~6,7~12ポートは開いて、13~16ポートは緑色という振る舞いになったので、OK。

DSC00282-1.jpg

 まあ、なんか、4ポートずっと緑になるのも微妙なので(どんどんずれてくし、8ポートにして、6ポートはアナログから取り込んで、2ポートはデジタルから取り込むとかにするか?)これはまた考える。

(4)S88 PhotoReceptorスケッチの作成と確認。
 で、とりあえず、6ポートのアナログで動かすスケッチを作った。できた。
一応こちら(すごいことに、外部ライブラリが一つもない)だが、このブレッドボード用の回路図すら作っていない。
早く作らなきゃ。
ソフトの説明をすると、
1.ポートをAnalog6ポートに制限
→void clock()の中身で
clockCounter =(clockCounter +1) % 16;

clockCounter =(clockCounter +1) % ANALOG_PORT_NUM;
として、ANALOG_PORT_NUMは、
#define ANALOG_PORT_NUM 6
で宣言。
2.センサーの検知ルーチンは、Loopから呼ばれるvoid detect_analog()で、
20msごとにステートを進めていくステートマシンにしている。
State0:赤外線LED On
State1:赤外線LED On時のフォトトランジスタ値を読む
State2:赤外線LED Off
State3:赤外線LED Off時のフォトトランジスタ値を読む
State4:On時の値 - Off時の値が diff_value_threshold(=200) 以上なら在線、以下なら車両無し
ということで、1サイクル100[msec]というところ。

3.もともとのスケッチの機能で、S88の信号は、interrupt0,1で対処。
とした。
S88信号の割り込みとLoop内のdetect_analog()がバッティングした時にどういう振る舞いになるかは知らない・・・。

S88 Detectorを作る その1 [自動運転]

 かわね路号は11月1日にお店を出荷とのメールが来たので、SoundOptionの件は、そこまでやらないことにした。
 少し前にYaasan様からBEMF対応のSmileDecoderをいただいたのだが、まだ作っていない・・・。
 その時に、ArduinoでS88の検出器を作ってみたいと思っていますというメールをしたら、まえ途中まで作ったのがありますので、ご自由にお使いくださいと図面をいただいた。
 制御部分については、どういう風に作ろうと思っていたかというと、rudysmodelrailway様のスケッチ(Arduino used as a 16-sensor S88 detector board)をベースにLEDのOnOffと検出部分を作るつもり。
 このとき、検出器は、前作った通りに4線(LED_ONOFF(A0),+5V(A1),SIGNAL_IN(A2),GND)で繋ごうと思っていた。せっかくだから線路下の基板も0.8㎜厚とかで作ろうかと思っている。多分TomixのS70用になると思う。
 信号センサ部(Fujigaya).PNG
 Yaasan様から3線(LED_ONOFF,SIGNAL_IN,GND)でできると思いますよとのことで、以下の5Vをオープンコレクタでやる図面をいただいた。3線だと、オーディオ用の3.5mmジャック系の線が100円ショップのが使えて、安いからとのことだった。(確かに4線ある3.5㎜のは300円ぐらいから始まり高い)
 PCDetector_Parts.PNG
 ただし、動作確認はしていませんとのことだった。

 で、まずは、秋月のTPR-105とユニバーサル基板とを線路につないで、ArduinoUnoで試してみることにした。
 TPR-105の線路への感じは以下。
 DSC00279-1.jpg

 適当に、LEDをオンオフさせながら、Yaasan様のデフォルト抵抗値で信号がデジタルで取れるかやってみた。残念ながら、だめだった。
 デジタルでやっていても難しそうだったので、まずはアナログでやることにした。
 以下がその時の写真。
DSC00278-1.jpg
 SIGNAL_INをA0(Analog_In)に繋いで、LED_ONOFFをしながら、信号がどのように変わるかを確認すると、LEDがOnだろうがOffだろうが、電車がセンサの上にあろうがなかろうが、ずっとHighっぽいことが分かった。
 ということで、パラメータとして動かせそうな、LEDの電流制限用の抵抗470ΩとSIGNAL_INの5Vに吊っている6.8kΩの抵抗を変更してみることにした。TPR-105のLEDは50mAが電流MAXとのことで、470Ωだと、LEDの電圧降下を1.2Vとして、8mA程度流れているようなので、220Ω(17mA)、100Ω(38mA)で、抵抗を下げるほど、明るくなり(スマホのカメラは安物で、赤外線が見える)、車両がフォトリフレクタの上に来たときの反応もよい。しかし、LEDに20mA以上流すのはなんとなく気が引けるのと、将来的に、S88 Detectorボードで複数のLEDを駆動させるわけだが、そうすると、電流は少ない方が良い、と思ったので、220Ωで17mAとした。
 で、次にオープンコレクタ入力をするところの抵抗だが、6.8kΩよりも大きくすれば大きくするほど、反応が良くなることが分かった。また、車両の裏を白くすると(今回は両面テープを貼った)、反射率が高くなり、検出がやりやすくなるが、できるだけ、車両への加工(底面を白く塗るなど)はしたくないと思う。
 車両の裏に両面テープ(反射率をよくするため)の写真。
DSC00280-1.jpg

 以下がその時の表。On、OffはLEDのOn、Off。値はArduinoUnoのA0をAnalogInputで読み取った値で(0~1023)が(0V~5V)。
車両無いとき 車両あるとき 車両テープあるとき
抵抗 offonoffonoffon
6.8k 98599110239521020600
22k 91789910238001014 33
66k 7076521021395 998 21
88k 6866371021406 996 20
110k 5225261021 90 986 19
154k 4072931018 32 970 17

 車両がないときと、車両があるときに明確にパターンが分かれればいいとおもう。
・表の中で、水色の感じなら、車両がないときはLEDのOn.OffにかかわらずHighとなりそうだ。ただし、ここは、環境光の影響をもろに受け、太陽光がもっと差し込んだ時間では、154kΩのとき、Off:242,On:152などとなった。
・表の中で、黄緑色の感じなら、車両があるときはLEDのOffでHigh、OnでLowとなりそうだ。
 デジタル入力端子でやる場合は、オープンコレクタの吊る抵抗は可変抵抗(200kΩ or 500kΩ)にするのが良いだろうか?でも、アナログ入力でやるにしても、可変抵抗をつけておいた方が良さそう。
 アナログにするなら、ArduinoUnoは6ポートしか取れないが、LEDのOn,Offの差を取れるので、車両のないときは電圧差があまりない(最大200ぐらい)と車両のある時のLEDのOn,Off時の電圧差が大きい(800以上ぐらい)ととやればよいので、そのやり方が良さそうとなる。
 LEDで17mAも取るとなると、いっぱいセンサをつなぐと、5V系を結構使いそうとか、なんか、いろいろと考え中のまま、今日は終わり。