電子回路 マイコン制御
O. マイコン制御(Microcontroller & Embedded Control)
マイコン(Microcontroller, MCU)は、組込みシステムの中心的デバイスであり、
センサの読み取り、アクチュエータ制御、通信処理、制御アルゴリズム実行など、
電子回路と制御工学をつなぐ実務の核を担う。
本章では:
- MCU の内部構造(CPU・メモリ・周辺機能)
- GPIO・ADC・DAC・PWM の利用
- 割り込み(Interrupt)とタイマ
- UART / SPI / I²C など周辺インターフェイス
- 組込み制御(PID・イベント駆動)
- RTOS / タスクスケジューリング
O1. マイコンの基本構造
(1) MCU の内部ブロック
- CPU(コア:ARM Cortex-M / AVR / RISC-V など)
- フラッシュメモリ(プログラム格納)
- RAM(データ格納)
- 周辺機能(Peripheral)
- GPIO(入出力)
- ADC / DAC
- PWM / タイマ
- UART / SPI / I²C / CAN
- DMA(高速転送)
(2) クロック源
- 内部 RC オシレータ
- 外部クリスタル(高精度)
- PLL による周波数逓倍
(3) 消費電力と動作モード
- Run(通常動作)
- Sleep(CPU 停止、周辺のみ稼働)
- Deep Sleep / Standby(最低電力)
O2. GPIO(デジタル入出力)
(1) 入出力モード
- 入力(Pull-up / Pull-down)
- 出力(Push-Pull / Open-Drain)
(2) スイッチ読み取り例
内部プルアップを使えば、スイッチで GND に落とし、
「押す=Low」を簡単に実装できる。
(3) LED 駆動
GPIO の最大電流(例:20mA)を超えないよう注意。
O3. ADC / DAC(アナログ入出力)
(1) ADC 入力
基本式:
\[
\text{digital} = \frac{V_{\mathrm{in}}}{V_{\mathrm{ref}}}(2^N - 1)
\]
ここで \(N\) は分解能(12bit など)。
(2) サンプリングとフィルタリング
- アンチエイリアシングフィルタ(LPF)が必須
- サンプル時間(Sample Hold)に注意
(3) DAC 出力
PWM+LPF で DAC 相当の出力を作る方法も一般的。
O4. タイマ・PWM・割り込み
(1) タイマ
一定周期で割り込みを発生し、制御周期を作る(例:1kHz)。
(2) PWM(Pulse Width Modulation)
デューティ比 \(D\) により平均電力を制御:
\[
V_{\mathrm{avg}} = D \, V_{\mathrm{in}}
\]
(3) 割り込み処理
- 外部割り込み(スイッチ入力・センサ出力)
- タイマ割り込み(周期的制御)
- 通信割り込み(UART 受信など)
割り込み内では処理を軽くし、重い処理はメインへ回す。
O5. 通信インターフェイス:UART / SPI / I²C / CAN
(1) UART
非同期シリアル。デバッグ用途に最適(printf)。
(2) SPI
- 高速(数十 MHz)
- ADC/DAC/メモリで使用
(3) I²C
2線式で多デバイス接続が可能。
(4) CAN
産業・車載用途。差動、ノイズに強い。
O6. マイコンによる制御(Embedded Control)
(1) 制御周期
制御工学では離散化が必要。制御周期 \(T_s\) を決める。
(2) 離散 PID 制御
代表的な後退差分(backward Euler)による PID は:
\[
u[k] = K_p e[k]
+ K_i T_s \sum_{i=0}^{k} e[i]
+ K_d\frac{e[k]-e[k-1]}{T_s}
\]
(3) センサノイズ対策
- 移動平均フィルタ(MA)
- 一次 LPF(IIR フィルタ)
- カルマンフィルタ(高度)
(4) 状態機械(State Machine)
家電・ロボットなどの制御に必須。
O7. RTOS(リアルタイム OS)
(1) RTOS の役割
- 複数タスクの管理
- 優先度制御
- スケジューリング(Preemptive)
(2) メカニズム
- タスク(Thread)
- セマフォ・ミューテックス
- キュー
(3) FreeRTOS の例
典型タスク周期:
\[
vTaskDelay(\mathrm{pdMS\_TO\_TICKS}(1))
\]
O8. 実務的注意点(電源・ノイズ・信頼性)
(1) 電源とデカップリング
- 0.1 μF + 1 μF のデカップリング
- アナログ系とデジタル系の GND 分離
(2) EMC / ノイズ対策
- ADC 周りはアナログ配線を短く
- クロック/SPI など高速信号は別レイヤで処理
(2) ウォッチドッグタイマ
暴走検出のため、定期的にリフレッシュが必要。
(3) フェイルセーフ設計
異常時は安全側に倒す(例:モータ OFF)。