2020年12月11日

ラッチボード作成&ログ採取君稼働開始

信号データのラッチ機構を作るためNOR回路74HC03APとラッチ回路74HC573を調達。
ブレッドボードで軽く組んでみて、ちゃんとトリガー信号を契機にその時点の入出力信号がラッチ(保持)されるようになるのを確認。

ブレッドボードではテストジャンパー線が鬼なことになったのでユニバーサル基盤で実装することにした。
前回の74HC05ボードでは半田ブリッジが多くて面倒だったので、今回は横ラインが繋がってるユニバーサル基盤を使用。

74HC05ボードと同様に信号線はテストジャンパー線でワイヤープログラマブルにできるようにした。
半田付けも手抜きできるし一石二鳥。

ささっと配線&半田付けして
ラッチボード完成。
トリガー信号2bitをNORで反転しLE(Latch enable)信号を作って74HC573のLEに入れて入出力信号をラッチする仕組み。

20201210_01.jpg

結線。
計測対象IC→テストクリップ→ラッチボード→74HC05ボード→16bit拡張I/Oボード→ラズパイという流れ。
上側の仮想ボードの入力信号を手配線でGND/VDDでセットして入力bitを与えるが、トリガー信号をONしないと反映されなくなった。
これでラッチ対応は完了し、ログ採取君@もようやく完成。
74HC05ボードの入力段8pin×2があまったけど、ラッチボードからはこっちにいれてやるほうが見た目いいな。あとで接続しなおそう。
20201210_02.jpg

あとはラッチすることでトリガーした瞬間が取れなくなったので、モノマルチのICでワンショットトリガーでも作ってやろうかとも思ったが
それも面倒くさいので、ロガースクリプトのDB書き込みフローを修正することで対応することにした。
ログ採取君Aのほうで、リレー信号から開始を判定しレコードINSERT→ログ採取君@ではこのレコードにラッチされている入出力信号をUPDATEするよう修正。

改めて実機接続してロガープログラムを実行。
入出力信号の変化が正しくDBへ書き込みされていくのを確認。
やはり、正規のICと異なり、入力→出力の信号が何らかの法則で書き変わってる(汗

一体全体どうやってこんなIC製造するんだよ・・・・中国とか台湾とかで作ってるのか?
多分石をこじ開けるとすんごいちっこいPICとかのマイコンが入ってるんだろうな

まぁいい。ちょっと予定が遅れたがテスターに廻して数日間ログを取ってもらう。
posted by 平場長 at 04:50| Comment(0) | 電子工作 | このブログの読者になる | 更新情報をチェックする

2020年12月09日

トリガー信号計測

さっそく実機のトリガー信号をオシロで計測してみた。

久しぶりのオシロなのでまずはプローブの校正をする。
次にGNDとトリガー信号線をプローブに繋いで
Ch1のシングルショットモードで実機稼働。

うん。信号来た来た。

Ch1(緑色):トリガー信号1
Ch2(黄色):トリガー信号2

計測グラフ:縦目盛1つが5V 横目盛1つが1μs
トリガー信号は負論理なのでCh1=0V Ch2=0Vでトリガーオン
cap20201209_01.png

何とトリガーオン状態はたったの0.5μsしかない。
これじゃソフトポーリングで検出できるはずもねぇし(汗

ちなみにラズパイGPIOのエッジ割込の遅延に関する良記事があった。

この記事を見るとPythonコードによるエッジ割込のコールバックで100μs~150μsのDelay
出力側も単なる出力→10μs待機→出力で100μs単位のDelayが出てるし・・・・
C言語に変えたところでLinuxのThread処理は変わらないので推して知るべし。
GPIOエッジ割込は素直にあきらめよう。

やっぱりハードでラッチ作って保持することに決定。
取りあえずユニバ基盤とか抵抗とかピンヘッダソケット類とかの補充部材と、ラッチ74HC573APとNOR74HC02APを多めに買ってこよう。

posted by 平場長 at 11:27| Comment(0) | 電子工作 | このブログの読者になる | 更新情報をチェックする

ログ採取君@失敗

いよいよ実機にログ採取君それぞれを慎重に接続。

それぞれネットワークを調整してロガープログラムを起動。
実機電源ONして稼働してみた結果・・・

ログ採取君A
 想定していたチャタリングもなく正常に動作。所詮電磁リレーの観測だし動かないはずはない。

ログ採取君@
 入力信号は取れているが、トリガー信号と出力信号が全く取れてない。トリガーは常にOFF。
 実機では出力信号がプルアップされてるらしく、トリガーOFF時の出力側信号はZではなく常に1

多分トリガーONOFF状態が速すぎてソフトウェアのポーリング監視では到底おいついてないようだ・・・。
そもそもLinuxはRT-OSじゃないし、所詮スクリプトのpythonでロギングしてるんで速度的には厳しいし。
多分信号幅なんて10μs未満だろうしね。Cで書き直してもいいけどLinuxのスレッドだしCでも間に合うか厳しそう。

しかたない信号しらべないとな。
アレを探すか・・・・

ダンボールをゴソゴソ。
あったあった。

7-8年前くらいに買ったUSBオシロ(右)
たしか200MHzまで計測できるはずなんで、実機のトリガー信号をワンショット観測して信号幅を計測するか・・・

(左)ついでに初代ラズパイも発見。一緒に眠ってた(笑
今見るとGPIOちっちゃ(26pin)※現在のラズパイは40pin
こいつはまだ電源ICがクソで色々トラブルがあったもんだ。

cap20201209_01.jpg

信号は観測できたとしても、対策をどうするか。
色々考えてみた。

@ラズパイのGPIOにトリガー信号いれた上で、エッジ割込モードを使ってONになった瞬間にすかさず入出力を読む。
 →トリガー信号をGPIOに入れるにはフォトカプラで絶縁しないといけないし、割込んだ瞬間に読んでもおそらく間に合わないであろうと予想

Aハードウェアで入出力信号を保持させる
 まずトリガー信号2bitをNOR回路(74HC02)で受けてトリガー信号がL-Lの時だけHを出力する
 次にこのトリガー反転信号を、8bitラッチ(74HC573)のLE入力(Latch Enable)に入れてやり、ラッチの入力ゲート8bit(Dn)には現在の入力信号6bit+トリガー2bitまたは出力信号6bit(上位2bitはプルダウン)を入れてやる。OE(Output Enable)は常にL(プルダウン)
 8bitラッチ(74HC573)は入力信号用と出力信号用の2個必要。
 あとはラッチ(保持)されている出力ゲート8bit(Qn)を現在の74HC05ボードに入れてやってソフトウェア側でまったり読み込む。

どう考えても本筋はAだろう。
だが74HC02も74HC573も持ってないし、秋葉原に買い出しにいってくるか・・・。
ついでにフォトカプラも2種類くらい買ってこよう。

posted by 平場長 at 00:54| Comment(0) | 電子工作 | このブログの読者になる | 更新情報をチェックする

2020年12月08日

ログ採取君完成

ブレッドボードで組んだ74HC05を、手持ちの部材を使ってユニバーサル基盤で実装。

何年振りかのはんだ付けで腕が鈍ってるのか、それとも部材が相当古いので電極や半田面が賞味期限切れで酸化してるせいなのか
イモハンダやテンプラを量産してしてしまった・・・

導通チェックで接触不良もかなりあったので半田大盛り目の流しこみで修正。
2.54mmでこんなに不良半田出すとは・・
老眼きついわ。

入出力はリード線直付けでも良かったのだが、もしかすると別の用途にも使うかもしれんので
ワイヤープログラマブルで可変にするためICソケットを使用。
任意の入力出力ポートのICソケットをジャンパー線で接続する。
テストクリップからの入力ラインはすべて10kΩの抵抗で電源にプルアップしてスッキリ。

完成。
cap20201208_01.jpg

よしよし全ピンとも導通問題なくなったぜ。
仮想ボードの抵抗を取り払って、テストクリップ接続コードもまとめてQI8pinソケットに換装。
ついでに8線延長ケーブルを付けたので、テストクリップだけを実筐体に入れてやれば良くなった。

イザ結線!!

ロガープログラム始動!!

ん?
入力信号と出力信号のビット位置が違う(汗
8pinソケット左右出しにしたので、左と右とで上下逆になってるのを忘れてた。
こういうこともあろうかとリード線はんだ直付けにしなくて助かったぜ・・

再結線&プログラム実行。
右端仮想ボードの白色トリガー線をVDDに接続し、緑色入力信号線をGNDまたはVDDに接続して入力bitを与えてからトリガー線をGND接続。
うん。ちゃんとデータ採取できてる。
問題ない。

これでログ採取君@も完成。
トリガー信号OFF→ONで、入出力信号が外部DBへINSERTされるようになった。
このレコードに対して、先に完成させているログ採取君Aがリレー出力の度に更新を掛ける仕組み。
リレーのチャッターがどの程度あるか少し気になるが、
チャタリングが出る場合は、少しの区間無視するタイマーを入れて調整する予定。
ハード屋さんだとコンデンサ入れてるとかするだろうけどソフト屋さんなのでなるべくソフトで解決。

cap20201208_02.jpg

今日はいよいよ実際の貸与機にテストクリップを接続して、ラズパイをセットアップ。
念のため、主基板の該当ICのVDDとGNDをテスターで確認後電源を落としてから慎重にクリップを噛ませることにする。

あとは長時間のログ採取はテスターにまかせて、後日蓄積された信号の変化を調査する。

12月残りタスク、次に入る。
いよいよ競馬AI開発の環境構築。
あとは次の次タスクで使う撮影機材のセットアップ。


posted by 平場長 at 08:33| Comment(0) | 電子工作 | このブログの読者になる | 更新情報をチェックする

2020年12月06日

プログラム実装と入力テスト完了

ログ採取君@のI2C通信プログラムを書いて仮想ブレッドボードのICの入出力信号をロギングしてみた。
最初、入力信号は取れるが出力信号が取れなかったので焦ったが、入力ポートの外部電源のジャンパ線が接触不良してただけだった。

外部電源入力の接続を改めて入出力信号とも取れるようになったが
ターゲットICのトリガー2bitが00以外の場合に、出力側信号がバタバタしている。

ターゲットICの仕様書をみると出力は3ステートでどうやらトリガー00以外の場合は「Z」でハイインピーダンスになる模様。
出力信号をそのまま74HCの入力に入れてたので、「Z」だと74HC05の入力が接地してないのでブレッドボードを触るだけでバタバタしてしまう。そりゃそうだわ。

本物の偽装ICの場合どうなのかは不明だが
取りあえず仮想ボード側に入力信号のところは10KΩの制限抵抗を付けて5V電源にプルアップ。
出力信号側は10KΩの制限抵抗をGNDに繋いでプルダウンすることにした。
これで安定して入出力信号ともにロギングできるようになった。

cap20201206_01.jpg

しかし、このまま筐体に入れても、振動で確実に接触不良になるのは目に見えてるので
真ん中の74hC05のブレッドボードはユニバーサル基盤とスズメッキ線で自作することにする。
各信号線の入力制限抵抗もこのボード側に実装。
posted by 平場長 at 12:27| Comment(0) | 電子工作 | このブログの読者になる | 更新情報をチェックする