ユーザ用ツール

サイト用ツール


ja-jp_commands:reference:ipidreset

差分

このページの2つのバージョン間の差分を表示します。

この比較画面へのリンク

両方とも前のリビジョン前のリビジョン
ja-jp_commands:reference:ipidreset [2026/09/08 00:53] – 바깥 편집 127.0.0.1ja-jp_commands:reference:ipidreset [2026/09/14 20:30] (現在) – 外部編集 127.0.0.1
行 14: 行 14:
  
 ===== 使用例 ===== ===== 使用例 =====
 +
 +MPINO-16A8R8TのA0をPIDの現在値として読みます。D22入力がLOWからHIGHに変わると、PIDの内部状態を一度初期化します。計算結果はシリアルモニタにのみ表示します。A0の設定とD22の配線は製品仕様で確認してください。
  
 <code cpp> <code cpp>
 const uint8_t PID_ID = 0; const uint8_t PID_ID = 0;
-const float SETPOINT_C = 45.0F; 
  
 void setup() { void setup() {
   Serial.begin(115200);   Serial.begin(115200);
-  if (!IpidSet(PID_ID, 2.0F, 0.4F, 0.1F, 100, 0.0F, 100.0F)) return;  // PID係数、計算周期、出力範囲を設定します。 +  IpidSet(PID_ID, 2.0F, 0.4F, 0.1F, 100, 0.0F, 1023.0F);  // PID係数、計算周期、出力範囲を設定します。
-  IpidItermLimit(PID_ID, -20.0F, 20.0F);  // PID積分項の最小値と最大値を制限します。 +
-  IpidReverse(PID_ID, false);  // PIDの正動作または逆動作を選択します。+
 } }
  
 void loop() { void loop() {
-  const float temperature ntcReadf(0);  // NTC 3950 10kΩセンサの温度を℃単位の浮動小数点値で返します。 +  static bool wasHigh = false; 
-  if (IdigitalRead(0, 5)) IpidReset(PID_ID);  // 入力を連続して複数回読み、すべて一致した場合み状態を更新します。HIGHとLOW混在する場合は前の安定状態を保持します。 / PIDの積分値と内部状態を初期化します。 +  const bool isHigh digitalRead(22== HIGH
-  const float demand IpidRun(PID_ID, temperature, SETPOINT_C);  // 現在と設定値からPID力を計算します。 +  if (isHigh && !wasHigh) IpidReset(PID_ID);  // D22立ち上りでPID内部状態を初期化します。 
-  const float lastDemand IpidOutput(PID_ID);  // 最後に計算したPID出力します。 +  wasHigh = isHigh; 
-  IanalogWritef(0, 0.0F, 100.0F, lastDemand);  // ユーザーの浮動小数点値をアナログ出力範囲に変換して出力します。 +  const float currentValue analogRead(A0);  // A0のADC生を読み出します。 
-  delay(20);+  const float result IpidRun(PID_ID, currentValue, 512.0F);  // A0の生値と目標値512からPID出力を計算します。 
 +  Serial.println(result); 
 +  delay(100);
 } }
 </code> </code>
ja-jp_commands/reference/ipidreset.1788796400.txt.gz · 最終更新: by 127.0.0.1

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki