現場で使うIoT機器の動作プログラムをプレゼンするのに下記を買ってしまいました!
まあ、自分へのクリスマスということで・・・
詳しく書かれてませんが、モータはNEMA17と思われます。
メカ部分組立済。動作検証などをちょっとやってみるのに便利だろうと思いました。
パルスモータ駆動は以前にもやってるので、あとは応用です。
で、これに関連しまして、機械装置の原点や動作限界点を検出するために
よく使われるフォトインタラプタを秋月電子から下記のものを購入しました。
■[112270]透過型フォトインタラプター LBT-131:1個価格:¥50
↑めっちゃ安い。
■データシートから端子アサインを確認
↑スリット部を遮光すると回路が切れるしくみ。
■配線
・マイコン:ラズパイPICO-W(今回はWifiを使いませんが手持ち空きで適用)
・3.3Vから抵抗を介して①へ接続、②③はグランド、④をGPIO16に接続しました。
・データシートには順方向電流最大50mAとあります。
330Ωアレイ抵抗の2つのピンを使って660Ωにてつなぎました。
これなら5mA以下になるのかも・・・とテキトーです。
↑赤3.3V、黒GND、青正電圧、白信号
・インタラプタはボードの端に配置し、遮光しやすくしました。
・PICOは3.3Vが片側にしかないし、ブレッドボードはつなぎが要るし、
やけに配線が多いのは電源共通のつなぎがあるためです。
汎用性を無視して直接繋げば4本と抵抗1本で済みますね。
■テストプログラム
・出力はThonnyへの標準出力だけ。
・micropython、標準ライブラリのみ使用。
・フォトインタラプタの動作有無がわかればよいので簡単なコードです。
from machine import Pin, I2C
import time
# フォトインタラプタのオブジェクト設定
pisw = machine.Pin(16, machine.Pin.IN, machine.Pin.PULL_UP)
# プログラム開始
print("Start")
# 無限ループでフォトインタラプタタの状態確認と状態表示の無限ループ
while(True):
# フォトインタラプタが遮光されたらON表示、そうでなければoff表示
if pisw.value() == 1:
print(" SW ON!")
else:
print(" SW off")
# 0.1秒待ち
time.sleep(0.1)
■結果
・良好に動作しました。遮光するとちゃんとONが表示されます。
標準出力printのかわりにLED点滅にしたら、
タイムリープ0.001秒でも行けるんじゃないかと思います。
■今後
・リニアユニットが来たら動作限界点に使う。
・遮光状態が変化したらmqttのPublishを行うようにコード改造し、
Wifi+PICO+mqtt+フォトインタラプタ
の場合での最高反応周期を見ておきたい。
10回/秒行けばIoTに十分使える。
以上