ハードウェアからサーバ・アプリまでワンストップで開発

PLC(3) - ハードウェア

ちょっと間が空きましたが、PLC話の続きです。

今回は、ハードウェアの基本デザインについて。

概要

今でこそ、PLCの出力には、いろんなインターフェイスがありますが、基本的には「スイッチ」です。もうちょっと具体的には、リレーの接点が出ているものです。ですから、電源と負荷を用意してやれば、負荷をオンオフ制御出来るわけです。もちろん、どのようなスイッチであっても「容量」というものがありますからあまりに無茶なことは出来ませんが、常識の範囲の使い方であれば、

電子制御のあるスイッチ

と考えて扱うことが出来ます。つまり、制御するために、特に外部に回路を用意しなくても良いということです。この「特に外部に回路を用意しなくても良い」というのは、PLCをとても便利にしている思想で、スイッチに限らずいろんなデバイスは特別にインターフェイスのことを考えなくても、電気的にも論理的にも、サクっとつながるように考えられています。

試作機の回路

PLCの出力が「電子制御のあるスイッチ」であるという性質は、「手軽に電子制御を使う」にはとても便利なものなので、ぜひ実装したいものです。試作機では、マイコンボードの上にMOS-FETのドライバ回路等を載せていて、LEDやちょっとしたモータくらいなら、直接ドライブ出来るようにしています。使ったトランジスタの仕様的には、5Aくらい流せます。「おもちゃ」の駆動には十分じゃないかと思います。ちなみに、工業用のPLCでは100mAくらいに抑えられています。どっちにしても、ある程度以上になればそれ用のインターフェイスを用意するか、外部にリレーをつないだりする必要があります。100mAでなくて5Aにしたのは、なるべく面倒なく使ってもらうためです。

試作機では、マイコンとしてESP8266を採用しました。これはWi-Fiが使えて便利ということはもちろんですが、その他に「あまりピンがない」という制約があるためです。ピンがないのは不利なように思えますが、下手にピンが多いと「どう使おうか」ということに悩んでしまったり、つまらない欲が出てしまって方針が定まりにくくなってしまって、「試作」の用を成さなくなってしまいます。また、使わないピンの扱いが厄介だったり、配線が面倒だったりもするので、まずは小ピンのマイコンを使って応用を考えてみることにします。いろいろやってみて「もっと欲しい」ということになったら、他のものを考えればいいわけです。

センサーデバイス

その他のデバイスとしては、BME-280を載せています。これにそれ程深い意味はないですが、環境センサーが載っていれば、それを使うプログラムが作れるかなと思ってのことです。PLCとして使わなくても、Follogerのセンサーデバイスとして使うことも出来ますから。

その他には、GROVEコネクタにI2Cを出しました。また、1Wire(DS18B20接続)用の口も用意しました。GROVEコネクタにI2Cを出しておけば、GROVEのいろんなデバイスを使うことが出来て便利ですね。DS18B20は水温とか測るのに便利です。

12

AliExpressにはこんな感じのが売ってます。10個買ったので、1つは会社の冷凍庫の温度を記録するのに使っています。

これは元々のきっかけが、

  • 時間が来たら水槽の照明を点滅する
  • 水温を測って、一定以上ならファンを回す、一定以下ならヒーターをつける
  • 計測した水温や環境についてのデータや動作状況はFollogerに送る

というような制御をするシステムをどう実装するかというあたりだったからです。だから、水温が測れるのはmustなのです。

こういったの、処理としてはどうってことないのですが、簡単で単純であるがゆえに、「どうまとめれば良いか」ということを考え過ぎたりするものです。

出力回路

出力は、前述のようにマイコンの出力をトランジスタ(MOS-FET)でコントロールしています。

普通のPLCでは、マイコンと出力トランジスタの間にフォトカプラを入れて絶縁しているのですが、これは省略しています。出力トランジスタの使い方をある程度限定して、また無茶な使い方をしなければ、なければないで何とかなるからです。普通お手軽工作する時は、電源は単一であることがほとんどですから、特に絶縁とか考える必要はないので。

また、どうしても絶縁が必要なスイッチ(たとえば電灯線をコントロールしたいとか)が必要であれば、「Modbusの使えるリレーボード」というのが安く売られています。

6_

こういった奴をModbusでコントロールしてやれば良いわけです(このボードで40ドルくらい)。

トランジスタ出力なので、PWMにすることも可能です。

外部接続

電源と出力はターミナルブロックを使うようにしています。これは、はんだづけとかしなくても、手軽に配線が出来るようにするためです。通常こういった使い方の時には、ピンコネクタを使ったりするのですが、これらもはんだづけが必要になってしまって、「子ども」が使うのにはちょっとハードルがあるためです。またターミナルブロックもワンタッチタイプにして、ドライバを使う必要もなくしました。これも同じ理由です。試作機では「その辺で買える」ということで、写真のようなものを使いましたが、量産する時はもっと背の低いターミナルにしようと思ってます。

回路図

ということで、雑な回路図を以下に示します。

まぁ、ぱっと見は「出力トランジスタのついたESP-WROOM-02のボード」でしかありません。実際回路としてはそうですから。この回路図は古いので、BME-280については言及していません。

ターミナルブロックのところに電源が配線されているのは、お手軽にそこから負荷用の配線が出来るようにするためです。

こんな感じに配線出来ると、使う時に楽ですよね。これは工業用のPLCでも、そういった配線がされているものもあります。

これでとりあえずは動いて試せるハードウェアが出来たので、ハード作りはちょっとお休みして、ソフトウェアの開発ということになります。

最近のエントリー

会計システム「Hieronymus」の現状

OrangePi5にZabbixをインストールする

レビュー等の依頼について

オープンソースのノートアプリ「SiYuan」 - CasaOS AppStoreレビュー

お気に入りの色さがし1

創立記念日

現在の営業品目(2)

現在の営業品目(1)

SPDX License Listをデータ化した

Orange Pi5でC3TR-Adapterを試す

CasaOS上で会計システム「Hieronymus」を動かす

会計システム「Hieronymus」v1.0.0 リリースしました

CasaOSでファイル同期アプリSyncthingをセットアップする

第11回 Freshmeat

オープンソースノーコード「Activepieces」でワークフローを作る

RaspberryPiにパーソナルクラウドOS「CasaOS」を導入する

sequelize-cliでdb:migrateすると「SyntaxError: Unexpected token ':'」が出る

LED行燈の試作(2)

CMSの社内向けサービスのリニューアル

LED行燈の試作(1)