なんでも作っちゃう、かも。

Arduino/Make/フィジカルコンピューティング/電子工作あたりで活動しています。スタバの空きカップを使ったスタバカップアンプなど製作。最近はもっぱらArduinoと3Dプリンタの自作に興味があります。

床拭きロボットの製作(3)- フィードバック制御でDCモータの回転速度を制御する

Posted by arms22 on 2017年02月26日 0  0

フィードバック制御を組み込んで速度制御を行えるようになったので、その制御方法と結果についてまとめておきます。


速度制御


速度制御処理

速度指令は1秒あたりのパルス数=パルス秒としました。エンコーダ入力との差分をPID制御器に入力し、PID制御器の演算結果をPWMのデューティーとして使用しています。
 PID制御器の出力はPWMデューティー幅に制限し、リセットワインドアップの対策としてPID制御器の出力がPWMデューティーの範囲を超えたら積分の演算を止めるようにしました。
 エンコーダからの入力はA相のパルス間隔をタイマーのインプットキャプチャ機能を使って計測し、速度(パルス秒)に変換しています。


制御成績

実験に使用したモータはPololu社のエンコーダ付きギアードモータで、負荷としてタミヤのスポーツタイヤを取り付けています。計測はタイヤを浮かした状態(空転)で行いました。PIDのパラメータはステップ応答法、またステップ応答法の1種であるCHR法で求めました。縦軸は速度(パルス秒)、横軸は時間(ミリ秒)です。

ステップ応答法で求めたPIDパラメータを使用した場合のP制御とPI制御それとPID制御の結果を以下に示します。またCHR法で求めたPIDパラメータを使用したPID制御の結果も以下に示します。

Pololu 20.4:1 金属ギヤードモータ 25Dx50L mm LP 6V 48CPRエンコーダ付き
タミヤ スポーツタイヤセット(56mm径)


P制御 Kp 3.74491
P制御


PI制御 Kp 3.37042 Ki 127.66741
PI制御


PID制御 Kp 4.49389 Ki 280.86830 Kd 0.01798
PID制御


CHR法(目標追従:0%)Kp 2.24695 Ki 54.80357 Kd 0.00899
PID制御-CHR法目標追従0%


CHR法(目標追従:0%)Kp 2.24695 Ki 54.80357 Kd 0.00899 1200ppsから1000pps
PID制御-CHR法目標追従0%-1200_1000


ソースコード

ソースコードはgithubで公開しています。
arms22/motor_pid_test: DC motor PID control test code


参考URL

PID制御 - Wikipedia
PID controller - Wikipedia
PID制御 - MATLAB & Simulink
モータの制御法
滑らかで安定したライントレースを実現する (1/2)

スポンサーサイト

センサーの値が一定量変化したら送信する - Wifi温度湿度計の製作(11)

Posted by arms22 on 2017年02月19日 0  0

温湿度センサー一定量変化があった時のグラフ
ESP8266 with HDC1000 Module Temperature/Humidity Monitor in Kyoto

ThingSpeakへのセンサーデータの送信間隔を一定間隔(5分)から一定量変化があったら送信するように変更しました。温度変化が激しい朝晩は5〜15分間隔、深夜から朝方にかけては温度がほぼ一定なので数時間間隔で送信しているのがわかります。1日のセンサーデータの送信回数が288回から30回〜40回に減って電池の消費量も大幅に減った、かも。これで半年ぐらい保つかな?


スケッチ


DeepSleepに入るとメインメモリのデータは保持されないので、RTCメモリにセンサーデータをバックアップして次回起動時にRTCメモリから前回データを読み出すようにしました。ThingSpeakへのセンサーデータの送信タイミングは温度±0.5度または湿度±2.0%または電源±0.02V変化があった場合としています。起床間隔は従来どおり5分。


該当の記事は見つかりませんでした。
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。