cancel
Showing results for 
Search instead for 
Did you mean: 

P-NUCLEO-IHM001 : BLDC Speed Control with potentiometer and clear Speed Feedback error.

Karan 123
Senior

Hi,

I am working on below setup.

1) P-NUCLEO-IHM001 with BLDC Motor

2) mcsdk 5.4.6

3) IAR 9.10.1

4) STMCubeMX 5.6.0

I am able to Start/Stop the motor with push button available on kit as below code .

1) How do I control Speed of Motor with potentiometer (ADC) available on Kit .

(Which function should I use )

2) If any how (By holding rotor with hand) speed feedback error comes how do I clear

speed Feedback error in code

And motor will restart after some time ( say 1 min).

(Which function should I use )

 while (1)
 
 {
 
  /* USER CODE END WHILE */
 
 
 
  /* USER CODE BEGIN 3 */
 
   
 
   if(MC_GetSTMStateMotor1() == RUN)
 
   {
 
       HAL_GPIO_WritePin( Green_LED_GPIO_Port  , Green_LED_Pin , GPIO_PIN_SET ) ;
 
   }
 
   else
 
   {
 
       HAL_GPIO_WritePin( Green_LED_GPIO_Port  , Green_LED_Pin , GPIO_PIN_RESET ) ;
 
 
 
   }
 
    if(MC_GetSTMStateMotor1() ==  FAULT_NOW || MC_GetSTMStateMotor1() ==  FAULT_OVER )
 
   {
 
       HAL_GPIO_WritePin( Red_LED_GPIO_Port  , Red_LED_Pin , GPIO_PIN_SET ) ;
 
   }
 
   else
 
   {
 
       HAL_GPIO_WritePin( Red_LED_GPIO_Port  , Red_LED_Pin , GPIO_PIN_RESET ) ;
 
   }  
 
   
 
   
 
 }
 
void HAL_GPIO_EXTI_Rising_Callback(uint16_t GPIO_Pin)
 
{
 
	 if (GPIO_Pin == Start_Stop_Pin)
 
	 {
 
		State_t MState = MC_GetSTMStateMotor1();
 
        int16_t MSpeed = (MC_GetMecSpeedAverageMotor1()*6);
 
		if(MState == IDLE)
 
		{
 
			MC_ProgramSpeedRampMotor1(1000,2000);
 
			MC_StartMotor1() ;		
 
		}
 
	 }
 
	 else
 
	 {
 
		MC_StopMotor1() ;		
 
	 }
 
}
 

--

Karan

2 REPLIES 2
Laurent Ca...
Lead II

Dear @Community member​ 

Did you have a look on the examples with potentiometer in STM32 MC SDK ?

Best regards

Laurent Ca...

Karan 123
Senior

Dear Laurent Ca... (ST Employee)

Not yet ,

Which SDK Example should I see ?

--

Regards

Karan