金牌会员
- 积分
- 2150
- 威望
- 1012
- 贡献
- 618
- 兑换币
- 635
- 注册时间
- 2014-4-16
- 在线时间
- 260 小时
|
我只会简单的判断 看技术报告知道找最大值 归一化等 但是我不知道改怎么加进去 求大神讲的具体点
void main()
{
u16 AD_v[6]={0,0,0,0,0,0};
uart_init(UART1, 19200);
adc_init(ADC1, SE4a); //PE0
adc_init(ADC1, SE5a); //PE1
adc_init(ADC1, SE6a); //PE2
adc_init(ADC1, SE7a); // PE3
adc_init(ADC1, SE8); //PB0
adc_init(ADC1, SE9); //PB1
FTM_PWM_init(FTM2, CH0,300, 50);
delayms(200);
while(1)
{
AD_v[0]=ad_ave(ADC1, SE4a, ADC_8bit,5);
// printf("PE0:%d\n\n", AD_v[0]);
// delayms(200);
AD_v[1]=ad_ave(ADC1, SE5a, ADC_8bit,5);
// printf("PE1:%d\n\n", AD_v[1]);
// delayms(200);
AD_v[2]=ad_ave(ADC1, SE6a, ADC_8bit,5);
// printf("PE2:%d\n\n", AD_v[2]);
// delayms(200);
AD_v[3]=ad_ave(ADC1, SE7a, ADC_8bit,5);
// printf("PE3:%d\n\n", AD_v[3]);
// delayms(200);
AD_v[4]=ad_ave(ADC1, SE8, ADC_8bit,5);
// printf("PB0:%d\n\n", AD_v[4]);
// delayms(200);
AD_v[5]=ad_ave(ADC1, SE9, ADC_8bit,5);
// printf("PB1:%d\n\n", AD_v[5]);
// delayms(200);
if(AD_v[0]>=120&&AD_v[1]>=120&&AD_v[2]>=110&&AD_v[3]>=125)//初始位置
{
FTM_PWM_Duty(FTM2, CH0, 50);
}
else if(AD_v[0]>=120&&AD_v[1]>=120&&AD_v[2]>=70&&AD_v[3]>=150)//3号电感处于中心线位置
{
FTM_PWM_Duty(FTM2, CH0, 44);
}
else if(AD_v[0]>=150&&AD_v[1]>=120&&AD_v[2]>=30&&AD_v[3]>=106||AD_v[4]==0)//1号电感处于中心线位置
{
FTM_PWM_Duty(FTM2, CH0, 40);
}
else if(AD_v[0]>=120&&AD_v[1]>=120&&AD_v[2]>=148&&AD_v[3]>=88)//4号电感处于中心位置
{
FTM_PWM_Duty(FTM2, CH0, 56);
}
else if(AD_v[0]>=120&&AD_v[1]>=130&&AD_v[2]>=130&&AD_v[3]>=40||AD_v[5]==0)//6号电感处于中心位置
{
FTM_PWM_Duty(FTM2, CH0, 60);
}
else if(AD_v[0]>=120&&AD_v[1]>=120&&AD_v[2]>=50&&AD_v[2]<=90&&AD_v[3]>=10&&AD_v[3]<=30)//所有电感在中心线右边
{
FTM_PWM_Duty(FTM2, CH0, 64);
delayms(50);
}
else if(AD_v[0]>=120&&AD_v[1]>=120&&AD_v[2]>=10&&AD_v[2]<=50&&AD_v[3]>=50)//所有电感在中心线左边
{
FTM_PWM_Duty(FTM2, CH0, 34);
delayms(50);
}
}
这就是我的全部了 求指点
|
|