3
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

STM32CubeIDEを使ってみよう How To STM32CubeIDE 日本語版(16) モーターを回そう

Posted at

STM32CubeIDEを使ってみよう How To STM32CubeIDE 日本語版 (15) TimerでLチカしようの続きです。
https://qiita.com/usashirou/items/59410a385ac930e0f5b2
今回は、PWMを使用してモーターを回してみましょう。
##使用機材
マイコンでモーターを直接駆動させることは難しく、モータードライバーやMOSFETなどを使用します。
今回は、AlieExpressで売っていたMX1508を使用しました。
ただし、MX1508は1枚50円以下ですが、10Vまでの電圧にしか対応していないので今回はUSBの5Vで動作させます。
MX1508は入力電圧を調整することで回転数を変更することができます。
NucleのDAC(PWM)をそれぞれの入力に入れて動かします。
(モータードライバーによっては出力調整のピンが各方向1個のものと、それぞれのものなどがあります)
DSC_0936 (2).JPG
今回使用するモーターは、エンコーダーモーターを使用しました。
定格が12Vですが5Vで使用します。
DCモーター等でも使用可能です。
6本の端子がありますが、今回は、モーター駆動用の2ピンのみ使用します。
##設定
プログラムを作ってみましょう。
今回は、Timer1のCH1とCH2を使いモーターを駆動させます。
使用する周波数はServoモーターと同じ50Hzとします。

STM32CubeIDEを使ってみよう How To STM32CubeIDE 日本語版 (13) PWMでサーボモーター(SERVO)を動かしてみよう
を参考に設定しましょう。
https://qiita.com/usashirou/items/2d0fedf59a3cef083b87
image.png
ClockSource:InternalClock
Channel1:PWM Generation CH1
Channel2:PWM Generation CH2
Count Settings
Prescaler:840
Count Perioad:1000
クロック周波数:42MHz
image.png
これでPA8とPA9がPWM出力として使えるようになります。
##プログラム
プログラムです。
PWMスタート

HAL_TIM_PWM_Start(&htim1, TIM_CHANNEL_1);
HAL_TIM_PWM_Start(&htim1, TIM_CHANNEL_2);

停止

__HAL_TIM_SET_COMPARE(&htim1,TIM_CHANNEL_1,0);
__HAL_TIM_SET_COMPARE(&htim1,TIM_CHANNEL_2,0);

回転

__HAL_TIM_SET_COMPARE(&htim1,TIM_CHANNEL_1,200);
__HAL_TIM_SET_COMPARE(&htim1,TIM_CHANNEL_2,0);

##メインプログラム

  /* USER CODE BEGIN 2 */
  HAL_TIM_PWM_Start(&htim1, TIM_CHANNEL_1);
  HAL_TIM_PWM_Start(&htim1, TIM_CHANNEL_2);
  /* USER CODE END 2 */

  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
      /*Add Code*/
      __HAL_TIM_SET_COMPARE(&htim1,TIM_CHANNEL_1,0);
      __HAL_TIM_SET_COMPARE(&htim1,TIM_CHANNEL_2,0);
      HAL_Delay(2000);
      __HAL_TIM_SET_COMPARE(&htim1,TIM_CHANNEL_1,300);
      __HAL_TIM_SET_COMPARE(&htim1,TIM_CHANNEL_2,0);
      HAL_Delay(2000);
      __HAL_TIM_SET_COMPARE(&htim1,TIM_CHANNEL_1,500);
      __HAL_TIM_SET_COMPARE(&htim1,TIM_CHANNEL_2,0);
      HAL_Delay(2000);
      __HAL_TIM_SET_COMPARE(&htim1,TIM_CHANNEL_1,0);
      __HAL_TIM_SET_COMPARE(&htim1,TIM_CHANNEL_2,0);
      HAL_Delay(2000);
      __HAL_TIM_SET_COMPARE(&htim1,TIM_CHANNEL_1,0);
      __HAL_TIM_SET_COMPARE(&htim1,TIM_CHANNEL_2,300);
      HAL_Delay(2000);
  }

##接続
それでは、最後に、マイコンとモータドライバ、モーター、電源を繋いでみましょう。
STM32Nuleoの5VとGNDを+-に
PA8とPA9をIN1、IN2に接続
Out1、Out2をモーターにつなぎます。
DSC_0942 (2).JPG
プログラムを実行するとモーターが回転すると思います。
以上でモーターを回す事が出来ました。

3
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?