質問編集履歴

6

追記

2022/11/03 10:13

投稿

PHENIXa
PHENIXa

スコア47

test CHANGED
File without changes
test CHANGED
@@ -139,6 +139,15 @@
139
139
  ### 試していること
140
140
  ozwkさんの回答を参考に、起動から1.5〜2秒間はあるPIDパラメータにしその後別のパラメータの2段階のような形式となってしまいますが、その方法で現在試行中です。
141
141
 
142
+ フォトカプラ経由のフィードバック回路から分圧抵抗を直接接続する回路に変更しました。
143
+ 目標値のプログラムも変更しました。
144
+ (アナログデータとして読み取るため)
145
+ ```
146
+ const float Target = ; // 目標値
147
+ float Target = TargetVolt * ( R2) / (R1 + R2 ) / 3.3f * 4095.0f ;
148
+ //R1が上側抵抗値(回路図上のR6)でR2が下側抵抗値(回路図のR7+VR)
149
+ ```
150
+
142
151
 
143
152
  ### 確認したいこと
144
153
  このあたりのADCの読み取り・変換の部分で何か間違っているものはありますか?

5

波形の追加

2022/10/26 13:41

投稿

PHENIXa
PHENIXa

スコア47

test CHANGED
File without changes
test CHANGED
@@ -101,13 +101,22 @@
101
101
 
102
102
  /*
103
103
  タイマー反映処理
104
- */
104
+ */![イメージ説明](https://ddjkaamml8q8x.cloudfront.net/questions/2022-10-26/71e8ff8b-04d3-4b16-b175-00d35ba1e8e2.png)
105
105
  }
106
106
 
107
107
  /* USER CODE END 4 */
108
108
  ```
109
+
109
110
  ※void HAL_ADC_ConvCpltCallbac()は無限ループプログラムだと思ってもらって構いません。
110
111
  main関数等は省略しています。
112
+ ### 該当の波形
113
+
114
+ 起動時の波形(RL接続済)
115
+ ![イメージ説明](https://ddjkaamml8q8x.cloudfront.net/questions/2022-10-26/2cc210a9-1cfa-470f-ba3b-a69b37a12bce.png)
116
+ 抵抗RLを外す
117
+ ![イメージ説明](https://ddjkaamml8q8x.cloudfront.net/questions/2022-10-26/8ebc5be9-4824-4096-9c1f-4033bf87e6b8.png)
118
+ 抵抗RLを再取り付け
119
+ ![イメージ説明](https://ddjkaamml8q8x.cloudfront.net/questions/2022-10-26/2af42eef-9601-45c9-bc2e-f21878e83285.png)
111
120
 
112
121
  ### 試したこと
113
122
 

4

一部訂正

2022/10/10 11:22

投稿

PHENIXa
PHENIXa

スコア47

test CHANGED
File without changes
test CHANGED
@@ -31,7 +31,7 @@
31
31
  10/10 時点
32
32
  起動時の電圧が目標電圧の100Vになるようにはなった。(PID設定値にもよりオーバーシュートすることもあるが)
33
33
  目標値になった時点でRL負荷を外すと電圧が130V程度まで上がってしまう。(元に戻ろうとするが125Vで維持されてしまう。)
34
- 逆に外すと93V付近まで低下する(10秒程度は93Vを維持しその後0.5秒程度で100Vに戻る)
34
+ そこから再びRLを取り付ける93V付近まで低下する(10秒程度は93Vを維持しその後0.5秒程度で100Vに戻る)
35
35
 
36
36
  ### 該当の回路図
37
37
  ![イメージ説明](https://ddjkaamml8q8x.cloudfront.net/questions/2022-10-02/05dd64cf-300c-43a9-8871-20bf7540040d.png)

3

「試していること」、「発生している問題」を修正しました。

2022/10/10 10:21

投稿

PHENIXa
PHENIXa

スコア47

test CHANGED
File without changes
test CHANGED
@@ -23,10 +23,15 @@
23
23
 
24
24
  ### 発生している問題・エラーメッセージ
25
25
 
26
-
26
+ 10/2 時点
27
27
  1秒以内で立ち上がったり、立ち上がっても軽負荷になると目標電圧がズレる(上がる傾向にある)
28
28
  Kp=0.1,Ki=0.1,Kp=0.0 だと起動までに時間がかかって(負荷変動すると復旧まで時間がかかる
29
29
  抵抗負荷(回路図上のRL1)を取りつけた状態で起動し、取り外すと電圧が上昇してしまう(150V程度で維持されている?)
30
+
31
+ 10/10 時点
32
+ 起動時の電圧が目標電圧の100Vになるようにはなった。(PID設定値にもよりオーバーシュートすることもあるが)
33
+ 目標値になった時点でRL負荷を外すと電圧が130V程度まで上がってしまう。(元に戻ろうとするが125Vで維持されてしまう。)
34
+ 逆に外すと93V付近まで低下する(10秒程度は93Vを維持しその後0.5秒程度で100Vに戻る)
30
35
 
31
36
  ### 該当の回路図
32
37
  ![イメージ説明](https://ddjkaamml8q8x.cloudfront.net/questions/2022-10-02/05dd64cf-300c-43a9-8871-20bf7540040d.png)
@@ -123,7 +128,8 @@
123
128
 
124
129
  IとDを1,5,10,20と変化させたが立ち上がり・目標電圧は変わらず。
125
130
  ### 試していること
126
- ozwkさんの回答を参考に、ソフトスートてからの2段階のような形式となってしまいますが、その方法してみています。
131
+ ozwkさんの回答を参考に、起動から1.5〜2秒間はあるPIDパラメー後別のパラメータの2段階のような形式となってしまいますが、その方法で現在行中です。
132
+
127
133
 
128
134
  ### 確認したいこと
129
135
  このあたりのADCの読み取り・変換の部分で何か間違っているものはありますか?

2

一部変更しました

2022/10/10 00:22

投稿

PHENIXa
PHENIXa

スコア47

test CHANGED
File without changes
test CHANGED
@@ -14,7 +14,7 @@
14
14
  マイコン:Nucleo-F303K8
15
15
 
16
16
  ### 実現したいこと(仕様)
17
- - [ ] 起動時間:昇圧開始から1.5秒〜2秒(許容できて5秒)で100Vになるようにしたい(起動からではなく立ち上がり始めてから)
17
+ - [ ] 起動時間:昇圧開始から1.5秒〜2秒(許容できて5秒)で2段階でも構わないので100Vになるようにしたい(起動からではなく立ち上がり始めてから)
18
18
  - [ ] スイッチング周波数は100kHz固定(可変はしない)
19
19
  - [ ] TL431とPC817を使ったフィードバック回路を使用する。
20
20
  - [ ] duty比のリミット範囲は25%〜75%(25%のままだと1時間経過しても100Vに到達しない)
@@ -95,12 +95,13 @@
95
95
  }
96
96
 
97
97
  /*
98
- タイマー反映
98
+ タイマー反映処理
99
99
  */
100
100
  }
101
101
 
102
102
  /* USER CODE END 4 */
103
103
  ```
104
+ ※void HAL_ADC_ConvCpltCallbac()は無限ループプログラムだと思ってもらって構いません。
104
105
  main関数等は省略しています。
105
106
 
106
107
  ### 試したこと
@@ -124,6 +125,30 @@
124
125
  ### 試していること
125
126
  ozwkさんの回答を参考に、ソフトスタートしてからの2段階のような形式となってしまいますが、その方法も試してみています。
126
127
 
128
+ ### 確認したいこと
129
+ このあたりのADCの読み取り・変換の部分で何か間違っているものはありますか?
130
+ ```
131
+ x = HAL_ADC_GetValue(&hadc1);
132
+ x = (x / 4095.0f) * TIM1->ARR ;
133
+ ```
134
+ この辺りのPID制御処理の計算が間違っているものはありますか?
135
+ ```
136
+ // 偏差の計算
137
+ P = Target - x;
138
+
139
+ // 積分項の計算
140
+ I += P * (us_time * 1e-6);
141
+
142
+ //微分項の計算
143
+ D = (P - Old_P) / (us_time * 1e-6) ;
144
+
145
+ //偏差の更新
146
+ Old_P = P ;
147
+
148
+ // 操作量の計算(PID 制御)
149
+ u = kp * P + ki * I + kd * D ;
150
+ ```
151
+
127
152
  ### 補足情報(FW/ツールのバージョンなど)
128
153
 
129
154
  参考サイト

1

項目の追加

2022/10/03 14:01

投稿

PHENIXa
PHENIXa

スコア47

test CHANGED
File without changes
test CHANGED
@@ -121,6 +121,8 @@
121
121
 
122
122
 
123
123
  IとDを1,5,10,20と変化させたが立ち上がり・目標電圧は変わらず。
124
+ ### 試していること
125
+ ozwkさんの回答を参考に、ソフトスタートしてからの2段階のような形式となってしまいますが、その方法も試してみています。
124
126
 
125
127
  ### 補足情報(FW/ツールのバージョンなど)
126
128