因为不需要树立杂乱的数学模型,大部分PID控制器靠杰出的PID系数整定就能作业的很好。而STM8S103F归于很小的8位单片机,它开发简略快捷、价格适合,是一种十分好用的单片机。本文中咱们运用STM8S103F3来制造一个安稳简略的升压电路。
STM8S103F3是一种TSSOP20封装很小的8位单片机,具有价格低、外设多、开发便利、以及宽作业电压等长处,均匀只需1块多就能买一片。这儿咱们要用到3个守时器、一个UART串口、一个I2C串口、一个SPI串口、一个10位16通道的高速AD,还有看门Doge等。简直每一个IO口都有自己的外部中止,内部具有多个一直源。
这儿暂时只用了两个守时器和ADC。IM1这个高档16位守时器用于发生固定频率可变占空比的PWM波,经过一个引脚进行输出TIM4这个一般8位守时器用于隔一段时间进行PI运算,然后安稳输出电压ADC中的4通道(AIN4)用于检测输出电压,而3通道(AIN3)用于供给一个参阅电压,约0.6-0.7V,这个电压运用二极管正导游通压降发生的。
运用参阅电压是因为ADC出来的成果是一个整数,还需要乘以单片机电源电压再除以2的10次放才是真实的电压。单片机的供电或许不安稳,假如没有这个参阅,那或许会形成输出不安稳。
电路图
运转时装备好守时器TIM1 TIM4还有ADC即可。然后在TIM4中守时运转PID算法。初始化TIM1,由主时钟直接驱动不分频,把它弄成向上计数模式:
TIM1_TimeBaseInit(0, TIM1_COUNTERMODE_UP, DUTYCYCLE_RESOLUTION, 0);
然后把输出通道1装备成PWM形式,高电平有用,一起敞开反向的输出,能够给同步整流的管子用wTIM1_OC1Init (TIM1_OCMODE_PWM1,TIM1_OUTPUTSTATE_ENABLE,TIM1_OUTPUTNSTATE_ENABLE,0,TIM1_OCPOLARITY_HIGH,TIM1_OCPOLARITY_HIGH,TIM1_OCIDLESTATE_RESET,TIM1_OCIDLESTATE_RESET);
发动守时器和PWM输出
TIM1_CtrlPWMOutputs(ENABLE);
TIM1_Cmd(ENABLE);
设置占空比为1/320
TIM1_SetCompare1(1);
初始化TIM4,由64次分频的主时钟驱动,当计数抵达255的时分触发一次中止。
TIM4_TimeBaseInit(TIM4_PRESCALER_64, 0xFF);
上来就得触发一次更新事情还有中止,让TIM4_PRESCALER_64收效。
TIM4_SetCounter(0xFF);
TIM4_ITConfig(TIM4_IT_UPDATE, ENABLE);
开总中止
rim();
开TIM4
TIM4_Cmd(ENABLE);
本电路设计中的PWM频率计算办法及成果如下:STM8中的主时钟为16MHz。本制造中让STM8全速作业:CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV1),也就是说驱动TIM1的预分频器的频率为16MHz,没有进行分频。当计数到320时主动重装计数器的值,得出PWM频率=16MHz/320=50KHz, PWM的分辨率为100/320%。