静電容量式タッチセンサでステッピングモータを動作させます。タッチセンサの実験、モニタ用のWindowsアプリ、ステッピングモータドライバICへのパルス出力法について記載しています。
全体フロー
静電容量式タッチセンサ(CTSUb)
計測方法
静電容量式タッチセンサは、人の持っている静電容量を検出することで、タッチ有り/無しを判定します。
本実験での測定対象は 4ch(TS06,TS08,TS10,TS13)です。自己容量マルチスキャンモードで測定します。
計測開始トリガは、12ビット・インターバル・タイマのインターバル割り込み信号(10msec毎)を使用しています。
計測は若いチャンネル番号から開始されます。
計測開始により、INTCTSUWR (設定レジスタ書き込み割り込み)が発生し、計測対象チャンネルの計測用設定データを書き込みます。
1チャンネルの測定が完了すると、INTCTSURD (計測データ転送完了割り込み)が発生します。
全チャンネルの測定が完了すると、INTCTSUFN (計測終了割り込み)が発生します。
計測条件と計測時間
CTSU動作クロック = fclk = 16[MHz] (CTSU 制御レジスタ1(CTSUCR1))
計測回数=1回 (CTSU センサオフセットレジスタ0(CTSUSO0))
ベースクロック周期: 1 [usec] ( 1[MHz]=CTSU動作クロック(16[MHz]の16分周)(CTSU センサオフセットレジスタ1(CTSUSO1))
とした場合、4chの測定に1.2[msec]かかりました。
CTSU設定フロー
CTSU割り込みフロー
実験
タッチキーの電極はプリント基板のレジスト(Solder resist)が塗られています。その上にパネル(overlay)をおいてタッチします。
1) パネル厚とカウント値
パネルを、パネル無し、0.2mm厚、1mm厚、2mm厚と変えて、カウント値を測定しました。
パネルが厚いとカウント値が小さくなり、感度が弱くなります。
2) タッチセンサの位置とカウント値
配線等の寄生容量のため、両端のタッチセンサ(TS06,TS13)のカウント値は、中央(TS8,TS10)に比較して高い値となります。
シリアル通信
シリアル・アレイ・ユニット (SAU)
本CPU RL78/G16(32ピン)にはシリアル・アレイ・ユニット は2ユニットあり、ユニット0 は、4ch、ユニット1は 2chの通信制御部があります。UART は、UART0(TxD0,RxD0),UART1(TxD1,RxD1),UART2(TxD2,RxD2)の3チャンネルが使用できます。(シリアル・アレイ・ユニットは、簡易SPI(CSI)、簡易I2Cとしても使用できます。ここでは、UARTに限定して記載しています。)
ここでは、UART1(シリアルアレイユニット0のチャンネル2と3)を使用します。
UART1の初期化フロー
送受信処理
受信割り込みで、CTSUの読み出しコマンド受信後、メインループ内でレスポンス(4ch分のCTSUデータ)を作成し、送信を開始します。
コマンドとレスポンス
パソコン側からのコマンドを受信すると、4ch分のCTSUデータをレスポンスとして送信します。
モニタ用ソフト
マイコンからタッチセンサ4ch分のデータを読み出して表示します。通信速度は1[Mbps]、更新周期は1秒です。マイコンへのデータの書き込みはできません。
①チャンネル読出しデータ表示部
タッチセンサ 4ch分のカウント値と設定データを表示します。
②操作部
「Serial Port」でCOMポートを開いた後、「Start」でモニタを開始します。「熱電対付きサーモグラフィの試作(モニタソフト)」(https://vabc.hatenadiary.jp/entry/2023/09/25/112223)と同じです。
③グラフ部
カウント値(4ch)と、タッチ有無の判定値(Threshold)のグラフ表示です。
④ グラフ表示選択部
グラフ表示チャンネルの選択、チャンネルのカウント値、最大値、最小値の表示、タッチ有無の判定値(Threshold)の入力を行います。
⑤CTSUエラー表示部
CTSU エラーステータスレジスタ(CTSUERRS)の内容です。(資料1 15.3.19) CTSUERRSのbit15=1の場合、「TSCAP 電圧異常」となります。
ステッピングモータ
動かし方
バイポーラ方式のステッピングモータを、定電流で駆動します。
ステッピングモータドライバICは、DRV8825を使用します。ドライバICのSTEP端子に1パルス入力すると、モータは1ステップ動作します。モータが1回転=200ステップならば、1.8度回転します。パルスの周期が短くなれば、早く動きます。DIR端子のLow/Highで回転方向(時計まわり、反時計まわり)が決まります。
ドライバICにはマイクロステップ機能があります。マイクロステップ 1/32では、1パルスで1/32ステップ動作し、動作が滑らかになります。
マイコンのタイマアレイユニットを使用してパルス出力を行います。
タイマアレイユニットの方形波出力
タイマアレイユニット0、チャンネル4のタイマ出力を方形波で出力します。(資料1 「6.1.1 単独チャンネル動作機能 (2)方形波出力」)
初期値(タイマデータレジスタの値)からダウンカウントを行い、0になると初期値から再開します。その際にタイマ出力を反転させます。
ここでは周期は4[msec]の方形波を出力します。CPU割り込み処理は不要です。
初期値は、(資料1 「6.8.1 インターバル・タイマ/方形波出力としての動作」)より、
TO04 からの出力方形波の周期= カウント・クロックの周期 x ( TDR04 の設定値 + 1) x 2
4[msec] = 0.002[msec] x ( TDR04 の設定値 + 1) x 2
( TDR04 の設定値 + 1 ) = 4 / 0.004
TDR04 の設定値 = 1000 - 1
タイマカウントに使用するクロックは 500[KHz]とします。
P17に、チャンネル4の出力 TO04 を 割り当てます。
タイマアレイの初期化フロー
出力波形
周期 4[msec]のタイマ出力です。
TS06(SW4)がタッチ有りの場合、「反時計方向」へ回転させるため、方向信号はLowとしています。TS08(SW3)がタッチ有りの場合、「時計方向」へ回転させるため、方向信号をHighとしています。
ファイル一覧
・ RL78/G16
登録場所:: https://github.com/vABCWork/rl78_ctsu
・開発環境
無償評価版 CS+ for CC V8.11.00 [30 Nov 2023]
CC-RL V1.13.00
・パソコン
登録場所:: https://github.com/vABCWork/WPF-rl78-touch_monitor
・ ScottPlotのパッケージのインストールが必要です。
MainWindow 以外のファイルは別Windowになっています。メインウインドウに追加して使用します。
開発環境:
Windows 11 Pro , 23H2 .NET Framework 4.8
Microsoft Visual Studio Community 2022 (64 ビット) – Current Version 17.7.4
WPF アプリ(.NET Framework) ( C#,XAML,Windows,デスクトップ)
ScottPlot 4.1.68