STM32CubeIDEを使ってみよう How To STM32CubeIDE 日本語版 (14) PWMでサーボモーター(SERVO)を動かしてみよう


STM32CubeIDEを使ってみよう How To STM32CubeIDE 日本語版 (14) PWMでサーボモーター(SERVO)を動かしてみようの続きです。

今回は、STM32CubeIDEを使ってみよう How To STM32CubeIDE 日本語版 (13) ADCをOLEDへ表示させようを活用して可変抵抗に合わせてサーボモーターを動かしてみます。
(13)のファイルにSTM32CubeIDEを使ってみよう How To STM32CubeIDE 日本語版 (13) PWMでサーボモーター(SERVO)を動かしてみようを見てサーボの設定を加えます。

配線

STM32CubeIDEを使ってみよう How To STM32CubeIDE 日本語版 (12)にServoの配線を追加したものになります。

設定

ピン設定です。


前回同様内蔵クロックも設定します。

コード追加

PWMのスタートと、サーボの設定をします。

HAL_TIM_PWM_Start(&htim3, TIM_CHANNEL_1);

サーボは、今回 servovalを用意しました。

float servoval;

servovalには、可変抵抗の変化に合わせて値を入れていきます。
25~125の間で動いてほしい
可変抵抗は、0~4096です。
今回は、(adcval*0.024)+25としました。
この値は各自で調整してみてください
万が一、サーボモーターが発熱したり、異音を発していたら、コネクタを外してください。
範囲外に移動させようとすると異音や、発熱します。

servoval= (adcval*0.024)+25;
__HAL_TIM_SET_COMPARE(&htim3,TIM_CHANNEL_1,servoval);
HAL_Delay(500);

追加したコードです。




以上で、可変抵抗のボリュームに合わせてサーボモーターが動くようになったはずです。
プログラムはこちらで公開しています。
https://github.com/taisirou/STM32-CubeIDE-Full/tree/master