2015年08月08日

割り込み処理 -第3回:チャタリング防止

前回は割り込み処理を使ってLEDの点灯と消灯を切り替えようとしましたが、チャタリング(スイッチをON/OFFした瞬間の数[ms]〜数十[ms]の間に信号が何度もHIGHとLOWに変化すること)という問題が発生しました。

06_チャタリング_1.png
※この図ではスイッチの立ち上がり変化(LOWからHIGHへの変化)で割り込み処理を発生させています

今回はチャタリングの除去を行い、LEDの消点灯を正しく切り替えられるようにします。


目次



1. チャタリングの除去

1. 割り込み処理を使用しない場合の除去方法

チャタリング除去は以前作成したタイマーでも行っています。そのときに用いた除去の方法は信号がチャタリング発生時間より長い間安定してから行いたい処理をするというものでした。

06_チャタリング_2.png

この方法を行うためには信号を一定時間ごとに読み続ける必要があります。一方、割り込み処理は割り込みが発生した瞬間(=信号が変化した瞬間)しか行うことが出来ないため、信号を読み続けるというのはできず、安定したかどうかを判断することが出来ません
ですので、割り込み処理を使ってチャタリングを除去するためには別の方法で行う必要があります。

2. 割り込み処理を使用する場合の除去方法

割り込み処理でのチャタリング対策として、前回の割り込み発生から短い時間で発生した割り込みでは何もしないという処理を行います。この除去方法はM.IさんとA.IさんのブログMaicommon.ciao.jpの自学のページ 2.2.Arduino入門 5.割り込み処理を参考にしました。この場を借りてお礼申し上げます。

06_チャタリング_3.png
※この図ではスイッチの立ち上がり変化(LOWからHIGHへの変化)で割り込み処理を発生させています

チャタリングはわずかな時間の間に発生します。逆に言えばわずかな時間の間に信号が変化したならばそれはチャタリングです。ですので前回の割り込みからわずかな時間で発生した割り込みの場合は処理を行わないことで、チャタリングによる誤動作を防ぐことが出来ます。
どのくらい時間をわずかな時間とするかですが、チャタリング発生時間より長くスイッチを操作する間隔より短くする必要があります。場合によると思いますが、100[ms]前後であれば大抵の状況に対応できると思います。


2. 回路

回路は前回と同じです。プルダウンのスイッチ回路と、LED回路から構成されています。

31_attachinterrupt_schem.png

31_attachinterrupt_bb.png


3. スケッチ

作成したスケッチを以下にアップロードしています。本来の拡張子は".ino"ですが、".txt"に書き換えています。
なおチャタリング除去の時間は実機で調節し20[ms]としました。

割り込み処理の条件はスイッチの立ち上がり変化(RISING)にする予定でしたが、それだとスイッチを離したときのチャタリングでLEDの消点灯が切り替わってしまいました

06_チャタリング_4.png
※この図ではスイッチの立ち上がり変化で割り込み処理を発生させています

そこで、割り込み処理の条件をスイッチの立ち上がり立ち下がり両変化(CHANGE)とし、スイッチがLOWのときに割り込みが発生した場合のみLED消点灯を切り替えるようにしました。
このようにすることで、スイッチを押したときのみLED消点灯を切り替えることが出来ました。

06_チャタリング_5.png
※この図ではスイッチの立ち上がり立ち下がり両変化で割り込み処理を発生させています


4. 動作

これが実際に動かしている映像です。スイッチを押したときのみLEDの消灯と点灯が切り替わっており、正しく動いていることが分かります。



これで割り込み処理を使ったLEDの消灯と点灯の切り替えは完成です。
次回の詳細は未定ですが、シリアル通信を使ってみようと思います。


参考資料

  1. 作者名:M.I, A.I . "割り込み処理とメソッド". サイト名:Maicommon.ciao.jp. http://maicommon.ciao.jp/ss/Arduino_g/intrupt/index.htm, (参照日:2015-08-07)


AVRマイコン・プログラミング入門 [ 廣田修一 ]

価格:3,132円
(2015/8/8 12:31時点)


posted by ました at 12:33| Comment(0) | TrackBack(0) | 電子工作の知識 | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

※ブログオーナーが承認したコメントのみ表示されます。

この記事へのトラックバック