傾きセンサと人感センサのArduinoプログラミング


スイッチ-マイコン間の配線のインピーダンスに注目

スイッチ-マイコン間の配線のインピーダンスに注目

図1 人体から強い誘導ノイズが加わる操作スイッチのON/OFF状態を確実に判別する回路設計は地味だが重要.数k~数十k$\Omega$の抵抗を追加して,電位不定の配線のインピーダンスを下げるのが定石.画像クリックで動画を見る.または記事を読む.詳しくは,DigiKeyチャンネル

傾きセンサと人感センサのArduinoプログラミング

Arduinoを用いたセンサとスイッチの利用

Arduinoは,さまざまなセンサやスイッチを簡単にプログラミングできるため,電子回路やIoT開発に広く使われています.

1.押しボタン・スイッチとプルアップ/プルダウン回路の基本

スイッチ入力回路は,Arduinoのディジタル・ピンを使ってHレベル(5V)やLレベル(0V)を判定する構造です.スイッチが押されているかどうかを正しく判別するためには,回路の安定化が不可欠です.

例えば,以下のようなコードを使用すると,Arduinoの内部プルアップ抵抗を活用できます,

```cpp const int Butt_{on}Pin = 6; void setup() { pinMode(Butt_{on}Pin, INPUT_PULLUP);// 内部プルアップ抵抗を有効化 } ```

このように,スイッチが押されていないとき(OFF)はピンがHIGH(5V)を維持し,押されたとき(ON)にグラウンドへ接続されてLOW(0V)になります.この方法により,回路の電圧が不定になる問題を防ぎます.

プルダウン抵抗を使う場合は逆の動作となり,スイッチを押すとピンがHレベルになります.10k$\Omega$の抵抗を用いることでノイズの影響を抑え,信号の誤判定を防ぐことができます.

2.傾きセンサ(チルト・スイッチ)の応用

傾きセンサは,物体の傾きを検出するスイッチです.センサが傾くと内部の接点が閉じ,Arduinoのディジタル・ピン(D8など)がHレベルに変わります.この動作により,次のような制御が可能になります.

  1. ドアの開閉を監視するセキュリティ・システム
  2. 機器が倒れたときの自動停止装置
  3. モーション・コントロールのトリガ

3.焦電型赤外線センサの特徴と利用

焦電型赤外線センサは,人の体温が放出する赤外線を検知します.このセンサは,フレネルレンズを用いて赤外線を効率よく集光し,熱エネルギを電荷に変換する焦電効果を利用します.具体的な応用例として,以下の用途が挙げられます.

  1. トイレの自動照明
  2. エアコンの自動ON/OFF
  3. 防犯用モーション・センサ

センサはArduinoのディジタル・ピン(D12など)に接続され,人が通ったときに割り込み処理を行うことで,効率的にプログラムの処理を切り替えます.

4.割り込み処理を使った効率的なプログラム制御

Arduinoでは,スイッチやセンサの入力を割り込み処理によって扱うことで,反応速度を向上させることができます.割り込み処理は,プログラムのメイン・ループを一時的に中断し,特定のイベント(例:スイッチの状態変化)が起きたときに別の関数を実行します.

```cpp attachInterrupt(digitalPinToInterrupt(6), toggleLED, FALLING); ```

上記の例では,FALLINGエッジ(HIGH→LOWの変化)で割り込みが発生し,`toggleLED`関数が実行されます.この機能を活用することで,スイッチの押下と同時に素早くLEDの点灯/消灯を切り替えることが可能です.

ノイズに強いスイッチ回路設計のポイント

電子回路でのスイッチ入力は,チャタリングやノイズによって不安定になることがあります.特に,指から発生するノイズや,外部からの干渉が原因で,正しいスイッチの状態を取得できないことがあります.

このような問題を解決するための手法として,以下のポイントが重要です.

  1. プルアップ/プルダウン抵抗の適切な選定
  2. 一般的に10k$\Omega$の抵抗を使用することで,電圧の不安定を防止し,ノイズの影響を軽減します.
  3. ディジタル・フィルタリングとソフトウェアによるチャタリング対策
  4. ソフトウェアで一定時間の遅延を設け,連続する信号変化を無視することでチャタリングを防ぎます.
  5. シールド・ケーブルの使用や基板の適切な設計
  6. 外部からの電磁ノイズを防ぐために,シールドケーブルや適切なグラウンド設計が推奨されます.

これらの対策を講じることで,信頼性の高いスイッチ入力回路を構築でき,誤作動を防ぐことができます.〈著:ZEPマガジン〉

動画を見る,または記事を読む

チャプタ・リスト

  • 1:08 押しボタン・スイッチとは
  • 2:34 digitalRead関数
  • 3:45 プルアップとプルダウン
  • 5:53 チルト・センサ
  • 7:43 人感センサ
  • 9:06 割り込み処理

著者紹介

  • 2009年3月 京都大学大学院情報学研究科博士後期課程修了.日本学術振興会特別研究員(DC2),舞鶴工業高等専門学校助教,京都大学特定助教,奈良先端科学技術大学院大学助教,大阪大学講師
  • 2019年3月 大阪大学大学院工学研究科機械工学専攻准教授.ノイズシェーピング理論に基づく量子化器設計およびその応用に関する研究に従事.博士(情報学).

著書

  1. [VOD]Pythonで一緒に!ロボット制御のモデルベース設計【ロバスト制御編】,ZEPエンジニアリング株式会社.
  2. [VOD]Pythonで一緒に!ロボット制御のモデルベース設計【PID制御編】,ZEPエンジニアリング株式会社.
  3. [VOD]Pythonで一緒に!ロボット制御のモデルベース設計【状態フィードバック制御編】,ZEPエンジニアリング株式会社.
  4. [VOD/Pi2W KIT]ラズパイ×Pythonで動かして学ぶモータ制御入門,ZEPエンジニアリング株式会社.
  5. [VOD/KIT]ラズパイ×Pythonで動かして学ぶモータ制御入門,ZEPエンジニアリング株式会社.
  6. Pythonによる制御工学入門(改訂2版),オーム社(2024).
  7. 制御系設計論,コロナ社(2021).
  8. やさしくわかるシーケンス制御,オーム社(2020).
  9. Pythonによる制御工学入門,オーム社(2019).
  10. 倒立振子で学ぶ 制御工学,森北出版(2017).
  11. Arduino×Pythonで動かしながら学ぶモータ制御入門,トランジスタ技術 2020年9月号,CQ出版社.

参考文献

  1. [VOD/Pi KIT]MATLAB/Simulink×ラズパイで学ぶロボット制御入門,ZEPエンジニアリング株式会社.
  2. [VOD/KIT]MATLAB/Simulink×ラズパイで学ぶロボット制御入門,ZEPエンジニアリング株式会社.
  3. [VOD/Pi400 KIT]SLAMロボット&ラズパイ付き!ROSプログラミング超入門,ZEPエンジニアリング株式会社.
  4. [VOD/KIT]確率・統計処理&真値推定!自動運転時代のカルマン・フィルタ入門,ZEPエンジニアリング株式会社.