マイコンの機能、静電容量式タッチセンサ(CTSU2L)、ADコンバータ、PWM等 書いてあります。
・資料
資料1*1 、資料2*2 、資料3*3 、資料4*4 、資料5*5 、資料6*6 、資料7*7 、資料8*8 、資料9*9 、資料10*10 、資料11*11 、資料12*12 、資料13*13 、資料14*14 、資料15*15
CPU
マイコンはRX-140(48MHz) です。

図1.CPUの使用機能

図2. CPU端子機能の割り付け

図3. メモリマップ
スタートアップとメインフロー
独立ウオッチドックタイマ
マイコンはリセット解除後、オプション設定メモリ(OFSM)の内容で動作します。
OFS0で、独立ウオッチドックタイマをオートスタートモードで開始し、タイムアウトでNMI(ノンマスカブル)割り込みに入るように設定しています。NMI割り込み内は無限ループです。ALM LEDを点灯し、SLGへの出力ポートをHighにしてCPU異常を通知します。

図4. 独立ウオッチドックタイマ
スタートアップ

図5. スタートアップ フロー図
メイン処理

図4. メインフロー図
静電容量式タッチセンサ(CTSU2L)
測定法
RX-140に搭載されているタッチセンサは、RL78/G16搭載のタッチセンサ(CTSUb)から機能追加がありますが、計測条件の設定、データ取得の手順には変更ありません。
参考 CTSUbの例: https://vabc.hatenadiary.jp/entry/2024/04/02/162725
1)CTSU レジスタ設定要求割り込み(CTSUWR)で、計測条件(ベースクロック周波数、計測回数)の設定
2)CTSU 計測結果読み出し要求割り込み(CTSURD)で、結果の読み出し
3)CTSU 計測終了割り込み(CTSUFN)で、全チャンネルの計測終了がわかります。

図5. タッチセンサ 2チャネルの測定

図6.「RL78ファミリ 静電容量センサユニット(CTSU2L)動作説明」(R01AN5744JJ0100)のページ26,27より
測定
・計測条件1(レジスタ名)
ベースクロック周波数=4MHz、測定回数=1回 (CTSUSO)
動作クロック PCLKB(=24[MHz])、自己容量方式、マルチスキャンモード、ランダムパルスモード、計測電源の最大供給電流=40[uA](CTSUCRA)
計測周期の基本単位(=637サイクル)、センサ安定待ち時間レジスタ値(0x10) (CTSUCRB)
・計測結果1
タッチしない状態:12000、タッチした状態:40000、計測時間(2ch分): 340[usec]
(基板を直接タッチ、オーバーレイ無し)

図7. 計測時間とカウント値(計測条件1)
(計測時間は、CTSU レジスタ設定要求割り込み(CTSUWR)から
CTSU 計測終了割り込み(CTSUFN)までを、デバック用ポートPE1をONして測定)
・計測条件2と結果2
計測周期の基本単位(=7サイクル) 、センサ安定待ち時間(=34サイクル)(CTSUCRB)とした場合(他は計測条件1と同じ)
タッチしない状態:3000、タッチした状態:10000、計測時間: 100[usec]

図8. 計測時間とカウント値(計測条件2)
・計測条件3と結果
計測電源の最大供給電流(CTSUCRAのATUNE1,2)を減少させると、カウント値が上がります。(「静電容量センサマイコン QE for Capacitive Touch アドバンスドモード(高度な設定)パラメータガイド」3.4 電流レンジ)

図9.電流レンジ(20,40[uA])とカウント値

図10. 電流レンジ(80[uA])とカウント値
A/Dコンバータ
モータ電流と、モータA、モータB速度調整用のボリューム値の測定に、12ビットA/Dコンバータ (S12ADE)を使用しています。
・チャンネル0(AN000)
モータ電流測定用です。モータ電流は、1Ωの抵抗の電圧をオペアンプ(非反転増幅回路、ゲイン=6)にいれ、AD値を求めています。
モータの起動時の電流が約500[mA]なので、ゲイン=6 とすれば、3[V]に収まります。

図11. モータ電流の測定
・チャンネル1,2(AN001,AN002)
モータBの速度調整用ボリュームのA/D値を AN001、モータAの速度調整用ボリュームのA/D値を AN002で測定します。

図12. ボリュームの測定
・スキャン
シングルスキャンモードで、3チャンネルA/D変換を行います。
イベントリンクコントローラ(ELC)のトリガ (1msec毎)で、AD変換を開始します。
AN000,AN001,AN002の3チャンネルのスキャン時間は、約 4[use]でした。

図13. スキャン間隔とスキャン時間
(スキャン時間は、CMT1のコンペアマッチ (1msec毎)から、スキャン終了割り込みまでの時間。デバック用ポートの出力で測定)
イベントリンクコントローラ(ELC)
CTSUとAD変換の開始は、CPUの割り込み処理を使用せずに、イベントリンクコントローラを使用しています。

図14. ELCによる測定開始トリガ
キー入力処理
1[msec]毎に、タッチの有り/無しを判断します。ON閾値以上が10回連続(10msec以上継続)で、モードを変更します。SW1 は Run/Stopモードを変更し、RunでLED点灯、StopでLED消灯します。SW2は Auto/Manualモードを変更し、AutoでLED点灯、ManualでLED消灯します。

図15. タッチの確認処理
回転速度の測定
モータAの速度計測にはフォトインタラプタを使い、フォトインタラプタからのパルス発生間隔を測定します。モータが1回転で1パルス発生します。
マルチファンクションタイマパルスユニット2(MTU2a)のインプットキャプチャ機能を使用して、MTIOC0B端子に入力されるパルスの時間間隔を測定しています。パルス入力の立ち上がりエッジでTCNTの値をキャプチャし、インプットキャプチャレジスタ TGRBへ格納します。 カウント用のクロックは、PCLKB(=24[MHz])の64分周、0.375[MHz](周期=2.67[usec]) カウント値が32000ならば、 32000x2.67[usec] =85[msec] 85[msec]で1回転なので、1分では706回転。 706[rpm]となります。

図16. 回転速度の測定
モータの回転がゆっくりで、174msec(=65535x2.67[usec])以内にパルスが入らない場合、TCNTがオーバフローします。実験装置(モータ2つを輪ゴムでつなげた状態)の最低速度は700[rpm](カウント値=32000)なので、オーバフローはしませんが、停止すると、キャプチャデータが更新されないので、監視タイマー(CMT0)により、174[msec]を計測し、パルスが入らない場合は速度=0としています。

図17. 回転速度の測定(パルス無しの場合)

図18. パルス幅の測定
PWM
PWM出力でモータAとモータBの速度制御を行います。マルチファンクションタイマパルスユニット2 (MTU2a)のPWMモード2を使用します。モード2では、複数のPWM出力に対し、1つの周期レジスタ、PWM出力分のデューティレジスタを使用します。
モータAのPWMのデューティはMTU1.TGRAに設定し、 モータBのPWMのデューティはMTU1.TGRBに設定します。周期はMTU2.TGRAに設定します。MTU1とMTU2のタイマは同期設定を行います。タイマカウンタクリア時(周期設定レジスタ MTU1.TGRAのコンペアマッチ割り込み)で、デューティ設定レジスタを変更します。
周期は100[uec](0.1[msec])に設定しています。

図19. PWMモード2 レジスタ

図20. PWMモード2 出力

図21. PWMモード2 フロー

図22. PWM出力 0%,50%

図23. PWM出力 75%,100%
モータの駆動回路
ドライバボードのモータ駆動回路の各部分(A点,B点,C点,D点)の電圧を測定しました。

図24. モータ駆動回路
1) PWM出力(MV)=20%,50%の場合
黄色:A点、緑色:B点、青:C点(ゲート)、赤:D点(電流測定用の抵抗)

図25. 駆動回路の波形(MV=20%,50%)
2)PWM出力(MV)=90%,100%の場合

図26. 駆動回路の波形(MV=90%,100%)
3) 還流ダイオードを無しで実験
還流ダイオードが無い場合、OFF直後にモータのマイナス側は、電源電圧の数倍になる。(オフ直後にモータのインダクタンスが電流を流し続けようとするため)

図28. ダイオード無しの場合の波形(MV=50%,78%)