かずいの雑記帳4

趣味でいろいろ実験やってます。 2021年6月21日よりhttpsの利用が可能になりました。 当ブログも設定を変更しましたので、画面の乱れ等ありましたら教えて下さい。

2022年02月

シンクユニット用極性切替リレー

なんてこたぁない電源の極性切替リレー。
相変わらず某社のリレーの入荷状態がよろしくないので、シーケンサのシンクユニット向けに製作してみた。
先に使ったプリント基板用ラッチリレーだけど、100%受注生産で納期未定のキャンセル不可ってどんなガチャだよ。(´・ω・`)
設計変更して使わないようにしたけど、なんか腹たったので晒しとく。

さておき、サクッと設計。
短絡するので、Ry1とRy2の同時ONは禁止。
また、切替の際は必ず隙間を開けること。
WS500135



やっちまいがちなこととして、一見、リレーは一個で済むし、簡単そうに思えるのだけれど、メカ的な接点の開閉タイミングのズレMBB(Make Before Break)により、短絡を起こす可能性があるので、絶対禁止。

WS500136

完成。動作確認後、光硬化樹脂でモールドしてる。
IMG_5506

裏側。今回は空中線無しで済んだ。
極性を切り替えた際に極端に配線長が変化しないように配慮している。
IMG_5507

IMG_5508

正規の製品が入荷するまで、これでテストするべ。
G5V2 DC24V


G6AK-274P-ST DC24V

PLCとRS485とMODBUS通信 (その1)

MODBUS(モドバス)は所謂通信プロトコルの一種である。
すでに十分枯れた 歴史のある通信プロトコルであるし、ちょっとググると沢山引っかかるので、詳細の解説は他の方にお任せするとして、本ブログではより実践的にシーケンサを使用してFAのフィールドネットワークに寄せる方向で実験を行いたいと思う。1)

実験に使用するシーケンサはキーエンス社のKV-Nanoシリーズを予定している。
このモデルはオプションの増設シリアル通信カセット(形:KV-N11L)で、RS422,RS485(4線式)、RS485(2線式)が増設出来、しかもMODBUS マスター/スレーブプロトコルがいずれも標準で実装されていて、設定以外ユーザーはほぼ何もしなくていいという超お手軽仕様。
これに市販のMODBUS対応デバイスをぶら下げればあっという間に通信網の完成である。

で、あるが、このブログ的にはMODBUS通信が実際どのように成り立っているかを知ることが目的なので、あえて遠回りをして、CPUユニット内蔵RS232Cポートを経由したMODBUS通信でArduino等をリモート制御することをゴールにしたい。

まずはハードウェアを一歩づつ検証してみよう。

市販のMODBUS対応機器の多くにはRS485半二重(2線式)が採用されている。
うち、5V系で最もポピュラーなのはSN75176(TI)やMAX485(MI)を使ったものではないだろうか。
そこで、MAX485を使って信号の状態をモニタしてみた。

実験に使用した回路。
WS500133

電線のコネクタ処理の(ただそれだけの)ために、MAX485を一個づつ載せた基盤を2つ(も)作成。
IMG_5498


電源はセルフパワーUSB HUBからの5Vを取り、MAX485×2個を同一の電源から取得して、USBポートの電流をモニタしつつ、クリスタルオシレーターからTTL信号を入力する。
通信の配線には 仕事で手配ミスやらかしてデッドストックになってしまっていた ミスミの形:SS300SB-22-2P-50 AWG22,2Pツイストシールド,50mを使用した。

発信源のモニタをCH1で行いつつ、レシーバー側でRS485の信号レベルとROを確認する。
実験に使用したMAX485(HTC)のデータシートからICの周波数上限は5Mbpsとのことだが、製造元によっては2.5Mbpsとの記述もあるので、まずはそこから。
こういう時に周波数の切替がスイッチ一発で出来るオシレータは便利じゃのう。

左が485の差動信号のモニタ、右がTTL出力(RO)。
ケーブルのリアクタンスとキャパシタンスの影響を受けて波形が随分と鈍ってしまっているが、一応EIAの仕様を満たしているし、まぁまぁいい感じ。
2.5M4852.5MTTL

次に5Mbps。
2.5Mbpsの時よりさらに485の波形が鈍ってしまっている。
が、なんとか伝わっているようで、TTLの出力は出ている。
5M4855MTTL

おまけで10Mbps。
485の波が更に減衰。なおかつ、レシーバーが信号を拾えていないのでTTL出力はフラットなままだ。
10M48510MTTL

ケーブル長を10cmにした結果。
ケーブルのキャパに食われる分が減って電圧は上昇し、波形も改善している。
レシーバも何とかそれを拾ってる状態ではあるのだけれど、今度はICの出力側が追いついてない。
ICの生の入出力ではやはり5Mbpsが限界のようだ。
10M10cmケーブル48510M10cmケーブルttl


続いて、終端抵抗の影響を調べてみた。2)
入力を2.5Mbpsに戻して50mケーブルの送信側の終端抵抗のみ外した結果。
送信側の抵抗に食われていた電圧が乗って、若干電圧が上がっているものの、両端に終端抵抗がある場合に比べてほぼ変化がないことが解る。
ターミネーター受信側のみ

同じく、受信側の終端抵抗のみ外してみた結果。
反射波が重畳して尖った波形になった。
P-Pの電圧が2倍近くに上っていることが解る。
ターミネーター送信側のみ

終端抵抗を両方外してみた結果。
さらに電圧が上がってP-Pが11Vに!
慣性電流恐るべし。
ケーブルのリアクタンスやキャパシタンス次第ではICの絶対定格を超えて破壊してしまう可能性もあるので、絶対にこういった運用は避けるべし。
ターミネータ両側無し


視点を変えて、市販のRS485デバイスを10cmの配線で5連にして測定した。
この変換器はサージ対策回路としてすべてのデバイスに120Ωの抵抗とA/B相にプルアップ/プルダウンがされている。
こんなかんじで。
(リバースエンジニアリングしましたが、発表は自粛します)
WS500134M1
結果、5連にするとA/B間の抵抗は120/5=24Ωと低くなる。
あんまり沢山のノードをぶら下げると、信号レベルが下がりすぎて±0.2Vを割り込んでしまうだろうけど、プルアップ・ダウンが結構いい感じに効いていて、生ICの状態より485の波形が安定している。

このデバイスはTTLのほうにもプルアップとパスコンが仕込んであり、リプルが乗ってるのはその影響かと。
この後、入力を10Mbpsに上げても目立った乱れは見られなかった。
5連10cm4855連10cmTTL

実験中の模様。
IMG_5501

消費電流はこの状態でオシレータ込で0.18Aといったところ。
これなら、シーケンサに繋いでも壊れることは無いだろう。



つづく。



最初からこれ買ってれば余計な基盤を作らずに済んだのかも。
だが後悔はしていない。




続きを読む

クリスタルオシレータ EXO-3

はるか昔になるが、自社製品にこれを使っている発振器があって、年末大掃除の際に図面と一部の部品を発見したので温故知新してみた。
現在、装置は生産終了して、ICもディスコン。
なので、捨てちゃう前にデッドストック部品で遊んでみた。
20MHzという周波数ならPICの外部クロックとして使えるかもしれない。

KSS、EXO-3 20MHz
これ一個で分周周波数を選択して出せるという、ナゾの仕様。
電源入れてSTをHiにするだけで使えるという簡単さ。
WS500124

WS500125

実験中の模様
IMG_5438


Fの出力。
NewData1

C,B,A=LLL(分周率1/2)にしたときのDの出力。
NewData2


やや波形が乱れているのは、ブレッドボードだしパスコン入ってないからだろうね。
PICの専有ピンは一つで済むし、クリスタルとセラコンで外部クロックを作るより簡単で、セラミック発信子より高精度。
DIP8の場所を食うけど、これなら普通に使えそう。
PICの外部クロックとしてなら分周機能は必要ないので、いずれ現行品のオシレーターでも検討してみよう。

その後、ユニバーサル基板に載せて、パスコンを実装、セレクタスイッチで周波数の切り替えが出来る形で設計。
光硬化レジンでハンダ面をコーティングしてみた。
やはりそれなりにきれいな波形になった。
IMG_5497

キバンF

キバンD


電流バッファ LT1010 を単電源で試してみた

前述のようにLT1010は単電源でも使用できる。
自分の用途なら±電源を別途用意する必要が無いので、より実用的かと思い、単電源仕様のものを作ってみた。

前回からの仕様変更としては以下の通り。
・シリーズレギュレータで+15Vを作り、LT1010の電源とした。
・イネーブラを出力側に設け、出力OFFの際は電流バッファの出力回路を切って、出力端子をアースに落とした。
・出力短絡保護のため、シャント抵抗の抵抗値を大きくした。

WS020038


端子台は場所を食うので、配置が難しい。
懸命な配置検討と配線ルートの検討により(w)、ギリギリ一枚の基盤に入れることが出来た。
電圧・電流モニタ端子はXHコネクタにして場所を節約した。
IMG_5495
IMG_5496

電源を入れて動作確認。
TESTのジャンパでリレーをONにして測定を行った。
負荷が大きい(抵抗が小さい)とシャント抵抗で電圧を食われる分、出力の電圧が下がってしまうが、再現性があってドリフト量が少なければ問題ない。
WS020043

まずまずの結果ではなかろうか。
当たり前だけど、イネーブラOFFでちゃんと0Vになるし、出力短絡した状態で11V入力しても大丈夫。
後は耐久性の問題だけれど、ICに付け足したのは、外付け抵抗3個だから信頼性もへったくれもなかろう。

なんだかイケる気がする。続きを読む

Arduino Nano Every を導入してみた

思う所あって新規導入。

最初の一機目はちゃんとしたものでないと、上手く動かない時に自分の作業が悪いのか品物が悪いのかがわからなくなって困るので、今回はスイッチサイエンスさんで購入した。
IMG_5470

Nanoの後継機という位置付けらしく、ピン配列には互換性がある。

IMG_5471


前述のようにNanoNano Everyのピンアサインは互換性があるので、学習シールドはNano用が流用できるようだ。
だが、若干仕様が異なっているところもある。
この学習シールドとサンプルプログラムで問題になるのはD11のアナログ出力がD2に移動しているところだが、それ以外は問題ない。
あと、D20とD21のデジタル出力が増えたのだけれど、そこはもともと結線されていないので大丈夫。
動作確認は学習シールドの制作元である森のくまさんがサンプルプログラムを公開されていたので、使わせていただきました。

先達の教えに従って、IDEの準備をする。
IDEのボードマネージャーにmegaAVRのインストールをすればボードの機種選択にArduino Nano Everyが現れる。
さらに、このドライバのboards.txtにクロックのパラメータを追加すると、ATmega4809の本来のクロックが選択できるようになる。
(Arduinoを選択している時点で、あんまり意味ないようにも思うけど、出来るということに意味がある。)
WS020041
WS020042

スケッチはかようなものを使用。

// PWM機能を用いてLEDの明るさを変える
// 出力値は0から255で指定する

int i;

void setup() {
}

void loop() {
  for (i = 0; i <= 255; i++) {   //LEDを明るくする
    analogWrite(1, i);
    analogWrite(2, i);
    analogWrite(3, i);
    analogWrite(4, i);
    analogWrite(5, i);
    analogWrite(6, i);
    analogWrite(7, i);
    analogWrite(10, i);
    analogWrite(11, i);
    analogWrite(12, i);
    analogWrite(13, i);
    delay(20);
  }
  for (i = 255; i >= 0; i--) {   //LEDを暗くする
    analogWrite(1, i);
    analogWrite(2, i);
    analogWrite(3, i);
    analogWrite(4, i);
    analogWrite(5, i);
    analogWrite(6, i);
    analogWrite(7, i);
    analogWrite(10, i);
    analogWrite(11, i);
    analogWrite(12, i);
    analogWrite(13, i);
    delay(20);
  }
}
//ここまで



Nano互換品との比較。
何故かD2がアナログ制御出来ていない。
むーん。




続きを読む
記事検索
月別アーカイブ
プロフィール

かずい

QRコード
QRコード
  • ライブドアブログ