本節では、制御理論を マイコン・組込み環境(C/Arduino等) へ展開するための考え方と設計法を解説します。
離散時間制御・近似モデル・固定小数点演算など、実装面の注意点を押さえます。
連続時間PID制御器:
\[u(t) = K_p e(t) + K_i \int e(t)dt + K_d \frac{de(t)}{dt}\]これをTustin近似で離散化すると:
// C/Arduino用の離散PID制御アルゴリズム
float e = ref - y;
integral += e * dt;
derivative = (e - prev_e) / dt;
u = Kp * e + Ki * integral + Kd * derivative;
prev_e = e;
• ref:目標値
• y:現在の出力
• dt:サンプリング周期
• Kp, Ki, Kd:各ゲイン
以下は、Arduinoや組み込み環境でPID制御を行う際の一般的な構成例です。
構成要素 | 役割 | 具体例 |
---|---|---|
Arduino UNO / STM32 | 制御演算の実行 | PID計算・PWM出力 |
モータ+ドライバ | アクチュエータ(動力) | DCモータ、TB6612FNGなど |
センサ類 | 状態観測(速度・角度など) | ホールIC、ロータリエンコーダ |
シリアル通信 | PCとの連携・データ可視化 | Serial.print() や Python連携 |
💡 センサからの入力 → 制御演算 → アクチュエータへの出力(PWM)という制御ループを形成します。
組み込み環境では、制御の「時間精度」が安定動作の鍵になります。
項目 | 推奨 / 注意点 |
---|---|
サンプリング周期 | 通常 10ms〜100ms 程度(10Hz〜100Hz) |
実行時間 | 制御計算+出力が周期内に収まる必要 |
割り込み制御 | TimerInterrupt を用いると安定 |
delay()の使用 | 非推奨(タイミング精度が落ちる) |
周波数選定 | 制御対象の応答速度に応じて決定 |
⚠️ 応答が速いモータでは 1kHz以上の制御周期 が必要になる場合もあります。
Arduino UNO のような8bitマイコンでは浮動小数点演算(float)が遅い/重いため、
実装では以下のように固定小数点演算(int型+スケーリング)が推奨されます。
// 16bit整数でPID(Kp = 32, scale = 5 → 実効Kp=1.0)
int16_t e = ref - y;
int32_t p_term = (int32_t)(Kp * e) >> scale;
• Kp = 32、scale = 5 ⇒ 実効ゲイン = 32 / 2⁵ = 1.0
• >> scale は「除算より高速なビットシフト演算」
本教材では、以下のような組み込み制御実験用コード・ツールを別途提供します。
ファイル名 | 内容 |
---|---|
pid_embedded.ino |
Arduinoによる離散PID制御ループの実装 |
sensor_plotter.py |
Python側でセンサデータをプロット表示 |
arduino_serial_logger.py |
シリアル通信ログ収集用の補助ツール |
🔧
pid_embedded.ino
は、DCモータ制御や温度制御などにそのまま適用可能です。
デバッグや可視化のために、Pythonとの連携が効果的です。
# sensor_plotter.py の基本構成例
import serial
import matplotlib.pyplot as plt
ser = serial.Serial('COM3', 9600)
data = []
for _ in range(200):
line = ser.readline().decode().strip()
data.append(float(line))
plt.plot(data)
plt.title("Sensor Output from Arduino")
plt.grid()
plt.show()
組み込み制御技術は、多種多様な対象に応用可能です。
以下は、教育・実験・産業用においてよく利用される例です。
制御対象 | 内容・特徴 | 備考 |
---|---|---|
DCモータ速度制御 | エンコーダで回転速度を計測し、PWM制御 | 回転数の安定化・追従制御に使用 |
温度制御 | サーミスタ+ヒーター制御 | インキュベータ・恒温槽など |
電流制御 | シャント抵抗+スイッチング制御 | 電源・バッテリ充電系等 |
2輪自律移動体 | 左右モータを個別制御、姿勢安定化 | 倒立振子・ライントレース |
LED輝度制御 | 照度センサとフィードバック制御 | 環境適応型照明に応用可 |
実験キットとしては、スイッチサイエンスや秋月電子などのDCモータセット、温度制御キットが利用できます。
part04_digital/
:離散制御の理論part05_practical/simulation/
:制御演習コードpart06_ai/
:AI制御との連携(次世代展開)