R8Cを使ったタッチスイッチ(センサー)

以前に、RL78で実験したものをR8Cで焼きなおしたものです。

通常、マイコンの入力ポートは、非常にインピーダンスが高い入力元である事
を利用しています。


ガラスエポキシのユニバーサル基板上に、10mm角の銅版を載せ、表面をポ
リイミドテープなどで絶縁します。
この銅版を入力ポートに接続しておきます。
この銅版は、1Mオームの抵抗でプルアップしておきます。

・この銅版は、等価的には微小なコンデンサと考える事ができます。
・まずポートを出力として、GNDに落とし、コンデンサの電荷をリセットします。
・次に、ポートを入力にすると、1Mオームの抵抗を通じて、コンデンサがチ
ャージされ、微小な時間差で「H」になります。
・この実験では、この時間は、数マイクロ秒~数十マイクロ秒だと考えられます。
※銅版の大きさ、ベースとなるユニバーサル基板の誘電率などの条件で変化する。
※ある程度再現性はあると思うが、環境によって調整が必要。
・上記で計測した時間の違いで、「タッチ」されているか、「開放」なのかを
判断する。
※サンプルでは、通常は常に出力、Lにしておき、コンデンサをショート状態
にしてあり、計測の時だけ、入力にしている。

プログラムを単純にする為、CPUループ数で計測している。

uint16_t count_input_()
{
    uint16_t n = 0;
    INPUT::DIR = 0;  // 検出する場合だけ、「入力」にする。
    do {
        ++n;
    } while(INPUT::P() == 0) ;
    INPUT::DIR = 1;  // 出力
    INPUT::P = 0;    // 仮想コンデンサをショートしてリセット
    return n;
}

実験では、「開放時14」、「タッチ時18以上」となった。

Github

※計測値を単純に表示する場合、「DISP_REF」を有効にする。