🌏

電子工作 その9(丸型圧力センサー:FSR402で、マイクロサーボモーター:SG90のスピードをコントロール)

2023/05/20に公開

こんにちは、Ideagearの鈴木陽介です。

今回は、丸型圧力センサー(FSR402)で、マイクロサーボモーター(SG90)のスピードをコントロールする方法をご紹介します。

参考記事

Arduinoでサーボモーターを制御します。
https://miraluna.hatenablog.com/entry/penguin

感圧センサー(Interlink FSR402)使い方【Arduino超入門】
https://instanttry.com/arduino/fsrsensor-instruction/

はじめに

本記事は、2023年5月21日の午後に華強北(深セン市福田区にある秋葉原の30倍の広さがある電気街)で開催された電子工作のワークショップ用のテキストとして使用しました。

下記は当ワークショップのチラシです。

ワークショップの前半では、下記記事を元にArduino IDEの設定からLチカまでを学びました。
https://zenn.dev/suzuky/articles/2d140912417bc8

今回は、上記記事を参考に事前に各自のPCにArduino IDEをインストールしてから参加してもらいましたが、主に以下の2つのトラブルが発生したため共有します。

1.Arduino IDEの最新バージョン(arduino-ide_2.1.0_Windows_64bit.exe)が使えない。

最新版をインストールすると使えない人が半分くらいいたため、私のPCに保管してあった旧バージョン  (arduino-1.8.19-windows.exe)を渡して事なきを得ました。

※よく見ると、Arduinoの公式ウェブサイトのsoftwareの下の方にも、Legacy IDE (1.8.X)として旧バージョンが公開されていました。このことからも、最新版が使えない人がまだまだ多そうですね。
https://www.arduino.cc/en/software

2.Arduino IDEのボード選択にArduino AVR Boardsがない。


通常であれば、上記の通り、ツール > ボード > Arduino AVR Boards > Arduino Unoと順に選択し、Arduino Unoを選択できるのですが、今回のワークショップ参加者の何人かは、ボートのところでArduino AVR Boardsが表示されないという現象がありました。

ただ、解決方法はカンタンで、ツール > ボード > ボードマネージャ から、Arduino AVR Boardsをインストールすれば大丈夫です。

なお、本記事は、当ワークショップ後半のテキストとして活用しました。

配線

ブレッドボードとワニ口(FSR402との配線用)を使って下記の通り配線してください。

Arduino Uno FSR402 SG90
5V 5V 赤色
GND ※抵抗 茶色
A0 ※抵抗 -
6番ピン - オレンジ

※GND→抵抗(1k)→A0→圧力センサー

実際の配線は以下の通りです。

ただ、圧力センサーとの配線にワニ口を使ったため、ワニ口とワニ口とのショートなどの影響もあり、ワークショップ参加者の半分くらいが苦戦していました。このため、圧力センサーをブレッドボードに直挿しする人が続出しました(笑)

したがいまして、実際の配線時は、下記写真のようにFSR402を直接ブレッドボードに挿して配線することをオススメします。


ソースコード


実際のソースコードは以下の通りです。下記をコピペしてそのまま使ってください。
※Arduino IDEには、<Servo.h>というライブラリーがデフォルトでインクルードされています。

#include <Servo.h>//サーボのためのライブラリ
Servo panda;//サーボの名称をpandaとした

void setup() {
  panda.attach(6);//PWMにつなぐ。[~]マークの3,5,6,9,10,11。今回は6pin
  Serial.begin(9600);// シリアルモニタの通信速度(ボーレート)の設定
}

void loop() {
  //圧力センサー(FSR402)の部分
  int sensorValue = analogRead(A0);  // アナログピンA0の入力値を読み込む
  Serial.println(sensorValue);  // 読み込んだ状態をPC側へシリアル通信で送信
  delay(1);// 動作安定化のため0.001秒=1msの遅延を入れている
  //マイクロサーボモーター(SG90)の部分

  panda.write(0);//0度の位置まで回転
  delay(1000-sensorValue);//圧力センサーが反応していない時は約1秒、反応した場合はその値分を引くことで回転スピードが上がる
  panda.write(180);//180度の位置まで回転
  delay(1000-sensorValue);//圧力センサーが反応していない時は約1秒、反応した場合はその値分を引くことで回転スピードが上がる
}

動作確認

下記のように動作すれば成功です。
https://twitter.com/Ideaport_Suzuky/status/1652338594101751814

下記は、FSR402直挿し版です。
https://twitter.com/Ideaport_Suzuky/status/1660589838985469952

四角型圧力センサーの動作確認

丸型のFSR402に対して、その約5倍の表面積がある四角型のSEN-09376という圧力センサーがあります。


こちらは単に表面積がFSR402より広いというだけで、配線は全く同じ。検出可能な値もほぼ同じですが、面積が広いだけに最大値は約20%増しになっています。

以下は、SEN-09376の動作の様子です。
https://twitter.com/Ideaport_Suzuky/status/1660639710002434048

モーター4台同時制御(おまけ)

2023.6.14_追記
バッテリー駆動で、モーター4台を同時にコントロールしてみました。
https://twitter.com/Ideaport_Suzuky/status/1668838370699780098

まとめ

いかがでしたでしょうか?

今回使用した丸型圧力センサー(FSR402)とマイクロサーボモーター(SG90)はどちらも配線がカンタンで、かつソースコード上でもそれをマージ(融合)させて使用するのは難しくありません。

ただ、センサーを複数使用する場合は、当たり前ですが、回路図的に正しく電気を流すようにしないと正しく動作しないということを改めて認識したワークショップでした。

では、次は別の圧力センサーについてご紹介します!

Discussion