初级会员

- 积分
- 76
- 金钱
- 76
- 注册时间
- 2019-7-16
- 在线时间
- 17 小时
|
15金钱
最近用STM32驱动一个舵机,今天把舵机安装好后发现舵机不动,测量了下,信号先的PWM波是正常的,可以跟随摇杆改变占空比
测量了下电压是7.7v(舵机要求7.4v),但是都连上后发现动不了
在测量电压的时候我发现了一个比较奇怪的事,用万用表测量红色部分可以测得电压,测量蓝色部分则电压为0,图可能有点小,不知道能不能放大看下
下图是测得的PWM波
另外再付一段代码,其中TIM3_CH4和TIM3_CH3是舵机
u8 sw=0;
u8 re=0;
u8 su=0;
u8 sd=0;
u8 su_p=0;
u8 sd_p=0;
uint16_t res_u16;
int main(void)
{
u16 adc_wx; //ò¡¸ËW£¨XÏò£©
u16 adc_wy; //ò¡¸ËW£¨YÏò£©
u16 adc_e; //μçλ¼ÆE
u16 motor_a; //μç»úaÕ¼¿Õ±è
u16 motor_b; //μç»úbÕ¼¿Õ±è
u16 motor_c1temp=108;
u16 motor_c2temp=108;
u16 motor_c1=108; //¶æ»úc1Õ¼¿Õ±è 72-108-144
u16 motor_c2=108; //¶æ»úc1Õ¼¿Õ±è
delay_init();
Adc_Init();
uart_init(115200);
// Usart_Init();
GPIOB_67_Init();
SetLORA_Prepare();
Lora_Init();
delay_ms(100);
StartCommunication();
KEY_Init();
TIM2_PWM_Init(1439,999); //PWMÆμÂê=72000000/((1439+1)*(999+1))=5-0Hz
TIM3_PWM_Init(1439,999); //PWMÆμÂê=72000000/((1439+1)*(999+1))=50Hz
TIM_SetCompare3(TIM3,108); //¿ØÖƶæ»ú1 ¸ßμçÆ½Õ¼1440μÄ100
TIM_SetCompare4(TIM3,108); //¿ØÖƶæ»ú2
/*
72--1ms 108--1.5ms 144--2ms
*/
while(1)
{
adc_e=Get_Adc_Average(ADC_Channel_5,10); //è¡μÃDyÅ¥êyÖμ
adc_wx=Get_Adc_Average(ADC_Channel_3,10);
adc_wy=Get_Adc_Average(ADC_Channel_4,10);
KEY_Scan_RE();
if(re==0)
{
motor_a=108-adc_e*(4100-adc_wx)/466261; //ËãμöÔó|μç»úμÄ WM
motor_b=108-adc_e*adc_wx/466261;
TIM_SetCompare2(TIM2,motor_a); //¸Ä±äABμç»úμÄ WMêä3ö
TIM_SetCompare3(TIM2,motor_b);
}
if(re==1)
{
motor_a=108+adc_e*(4100-adc_wx)/466261; //ËãμöÔó|μç»úμÄ WM
motor_b=108+adc_e*adc_wx/466261;
TIM_SetCompare2(TIM2,motor_a); //¸Ä±äABμç»úμÄ WMêä3ö
TIM_SetCompare3(TIM2,motor_b);
}
motor_c1=72+adc_wy/57;
motor_c2=144-adc_wy/57;
TIM_SetCompare3(TIM3,motor_c1);
TIM_SetCompare4(TIM3,motor_c2);
delay_ms(300);
// Usart_SendByte(USART2,res_u16);
KEY_Scan_SU();
if(su==1)
{
if(su_p==0)
{
Usart_SendString(USART1,"u");
su_p=1;
}
}
KEY_Scan_SD();
if(sd==1)
{
if(sd_p==0)
{
Usart_SendString(USART1,"d");
sd_p=1;
}
}
}
}
|
|