現代の電子機器の世界では、タッチ入力は、携帯電話であろうとLCDモニタースイッチであろうと、ほとんどどこでも使用されています。静電容量式タッチはタッチセンサーセグメントで広く使用されており、以前はRaspberryPiで静電容量式タッチを使用していました。このプロジェクトでは、タッチセンサーを8051マイクロコントローラーAT89S52とインターフェースします。8051マイクロコントローラーを初めて使用する場合は、8051でLEDを点滅させることから始めることができます。
静電容量式タッチセンサーとは何ですか?
静電容量式タッチは、私たちの体にある静電荷に作用します。画面はすでに電界で充電されています。画面に触れると、体内を流れる静電荷により閉回路が形成されます。さらに、ソフトウェアが実行する場所とアクションを決定します。静電容量式タッチスクリーンは、指とスクリーンの間に伝導がないため、ハンドグローブでは機能しません。
このプロジェクトで使用されるタッチセンサー
このプロジェクトで使用されるタッチセンサーは静電容量式タッチセンサーモジュールであり、センサードライバーはドライバーICTTP223に基づいています。IC TTP23の動作電圧は2.0V〜5.5Vで、タッチセンサーの消費電流は非常に低くなっています。安価で消費電流が少なく、サポートの統合が容易なため、TTP223を備えたタッチセンサーはそのセグメントで広く人気があります。
上の画像では、ピン配置図がはっきりと見えるセンサーの両側が示されています。また、出力に関してセンサーを再構成するために使用できるはんだジャンパーもあります。ジャンパーはAとBです。デフォルト構成またははんだジャンパーのデフォルト状態では、センサーに触れると出力が低から高に変化します。ただし、ジャンパーを設定してセンサーを再構成すると、タッチセンサーがタッチを検出すると出力の状態が変化します。タッチセンサーの感度は、コンデンサーを変更することによっても構成できます。詳細については、TTP223のデータシートが非常に役立ちます。
下のグラフは、さまざまなジャンパー設定でのさまざまな出力を示しています-
ジャンパーA | ジャンパーB |
出力ロック状態 |
出力TTLレベル |
開いた | 開いた |
ロックなし |
高い |
開いた | 閉じる |
セルフロック |
高い |
閉じる | 開いた |
ロックなし |
低 |
閉じる | 閉じる |
セルフロック |
低 |
このプロジェクトでは、センサーは工場出荷時のリリース状態で利用可能なデフォルト構成で使用されます。このプロジェクトでは、タッチセンサーを使用してAT89S52マイクロコントローラーを使用してAC電球を制御します。
リレーは8051マイクロコントローラーとインターフェースします。リレーのピン配列は下の画像で見ることができます-
NOは通常開いており、NCは通常接続されています。L1とL2はリレーコイルの2つの端子です。電圧が印加されていない場合、リレーはオフになり、POLEはNCピンに接続されます。コイル端子間に電圧を印加すると、リレーのL1、L2がONし、POLEがNOに接続されます。そのため、リレーの動作状態を変えることで、POLEとNOの接続をON / OFFすることができます。
必要な材料
- AT89S528051マイクロコントローラー
- 標準キュービックリレー-5V
- 11.592MHzクリスタル
- 33pFコンデンサ-2個
- 2k抵抗-1個
- 4.7k抵抗-1個
- 10uFコンデンサ
- BC549Bトランジスタ
- TTP223センサー
- 1N4007ダイオード
- 電球ホルダー付き電球
- ブレッドボード
- 5V電源、電話充電器が動作します。
- ジャンパー線やベルグ線がたくさん。
- プログラマキットを備えたAT89S52プログラミング環境とコンパイラを備えたIDE
回路図
タッチセンサーと8051を使用して光を制御するための回路図を以下の画像に示します。
トランジスタは、リレーのオンとオフを切り替えるために使用されます。タッチセンサーはAT89S52マイクロコントローラーユニットに接続されています。回路はブレッドボードを使用して構築されます。
AtmegaAT89S52マイクロコントローラーのプログラミング
完全な8051コードが最後に示されています。ここでは、コードのいくつかの部分について説明します。8051マイクロコントローラを初めて使用する場合は、最初に8051マイクロコントローラをプログラムする方法を学び ます。以下のコード行は、リレーとタッチセンサーを8051マイクロコントローラーと統合するために使用されます。REGX52は、 AT89S52マイクロコントローラユニットのヘッダーファイルです。遅延関数も宣言されています。
#include
タッチとリレーは0として初期化されます。タッチセンサーはロジック0を1に変更します。タッチセンサーがアクティブ化されたときにステートメントがtrueの場合、これによりリレーの状態が変更されます。ただし、タッチを正確に検出するために、デバウンス遅延が使用されます。
//メイン関数 voidmain(void) { RELAY = 0; タッチ= 0; while(1){ if(Touch == 1){ delay(15); //遅延をデバウンス if(Touch == 1){ RELAY =!RELAY; // RELAYピン delay(30);を 切り替えます。} } } }
以下に遅延関数を記述します。この関数はミリ秒形式で入力を受け取り、2つの for ループを使用して遅延を生成 し ます。この遅延はあまり正確ではありませんが、許容範囲内であり、主にクロックサイクルのタイミングに依存します。
/ *遅延関連関数* / void delay(char ms){int a、b; for(a = 0; a <1295; a ++){for(b = 0; b
このタッチ制御ライト回路は、低電力電球が接続されたブレッドボードでテストされています。デモビデオ付きの完全なスケッチを以下に添付します。あなたはここでより多くのホームオートメーションプロジェクトをチェックすることができます。