IoT開発、設備・DIYのブログ!
ラズパイのGPIOを使うとき、実はいろいろな制限があります。
ピンの出力電圧は3,3V、流せる電流はピンごとでは8mA、トータルで50mA程度が最大だそうです。
例えばこんなパトランプを制御しようとすると…
ダメですね。0.14Aも流れているのでまったく動かせません。というよりそもそもUSB出力なので5V仕様です。
USB出力を動かすやり方は2つあります。
①ラズパイのUSB出力を制御する。
②トランジスタを使って増幅させる。
①はラズパイのUSB出力をシェルスクリプトでON、OFFさせる方法です。
USB OFF のスクリプト
sudo hub-ctrl -b 1 -d 2 -P 2 -p 0
USB ON のスクリプト
sudo hub-ctrl -b 1 -d 2 -P 2 -p 1
ラズパイ3B+でしか試していませんが、USB出力すべてが動作してしまうため、あまり使い勝手がよくありません。USBのWEBカメラなども接続している場合は停止してしまいます。
続いて②です。arduinoのように5VでGPIO出力できなくてもピンとしては5V電源は取れるので
下記のように接続し、GPIOの信号で負荷に5V印加できるようにします。
※8/10図を修正しました。指摘の多かった電流制限抵抗とフライホイールダイオードを入れています。
USBのメス側とトランジスタ(2C1815)が必要です。
パトランプは負荷のところへ挟み込み、片方はラズパイの5V出力につなぎます。3.3VのGPIO出力はベースとしてトランジスタへ接続します。コレクタに流せる最大電流は150mAなので問題ありません。
あとはGPIOを制御するプログラムを作るだけです。このやり方はラズパイだけではなく、ESP32
あたりのモジュールでも使うのですが、今回「あれ?どうやってやるんだっけ?」ってなったので備忘でまとめました。直流モーターを制御するときに必要です。
…こんなめんどくさいことしなくていいようにラズパイに5Vの入出力端子デフォルトで作ってほしいですけどね。
1. 無題
最大16mAらしいので余裕をみて270Ω以上の抵抗をgpioとトランジスタのベースの間に入れるべきです。
また、負荷にモーターやリレーを繋ぐ場合は、スイッチング時に発生するサージでトランジットを壊す可能性がありますので、負荷と並列に逆方向になるようにフライホイールダイオードを接続した方がいいです。
Re:無題
コメントありがとうございます。
図を修正させていただきました!!