资源简介
采用stm系列单片机,根据温度来实验对风扇转速的自动调节。

代码片段和文件信息
#include “control.h“
#include “usart.h“
#include “ds18b20.h“
float SpeedSet=2000;
float Kp=1.2;
float Ki=0.2;
float Integral_MAX=230;
float JIFEN_YUZHI=100;
float SpeedControlOutMax=3500;
int Encoder;
int Moto1;
int temperature;
int z;
/*************************************************
速度部分变量
*************************************************/
float Real
I0
SpeedControlOut;
int real;
/**************************************************************************
作者:平衡小车之家
我的淘宝小店:http://shop114407458.taobao.com/
**************************************************************************/
//int Encoder;
//int Moto1;
//int Target_velocity; //设定速度控制的目标速度为50个脉冲每10ms
//int TIM2_IRQHandler(void)
//{
// if(TIM2->SR&0X0001)//10ms定时中断
// {
// TIM2->SR&=~(1<<0); //===清除定时器1中断标志位
// Encoder=Read_Encoder(4); //===读取编码器的值,M法测速,输出为每10ms的脉冲数
// Encoder=Encoder*CAR_SPEED_CONSTANT; //===LED闪烁;指示单片机正常运行
// Xianfu_Pwm(); //===PWM限幅
// //Moto1=1000;
// Moto1=Incremental_PI(EncoderTarget_velocity); //===速度PI控制器
// Set_Pwm(Moto1); //===赋值给PWM寄存器
// }
// return 0;
//}
void TIM2_IRQHandler(void) //TIM3中断
{
if (TIM_GetITStatus(TIM2 TIM_IT_Update) != RESET) //检查指定的TIM中断发生与否:TIM 中断源
{
TIM_ClearITPendingBit(TIM2 TIM_IT_Update); //清除TIMx的中断待处理位:TIM 中断?
Encoder= Read_Encoder(4);
real=(int)(Encoder*(1500/334));
Moto1=(int)Incremental_PI(SpeedSet); //===速度PI控制器
TIM3->CCR2=Moto1*2;
temperature=(int)DS18B20_Get_Temp();
z++;
}
TIM_ClearITPendingBit(TIM2TIM_IT_Update);
}
/**************************************************************************
函数功能:赋值给PWM寄存器
入口参数:PWM
返回 值:无
**************************************************************************/
/**************************************************************************
函数功能:限制PWM赋值
入口参数:无
返回 值:无
**************************************************************************/
/**************************************************************************
函数功能:绝对值函数
入口参数:int
返回 值:unsigned int
**************************************************************************/
/**************************************************************************
函数功能:增量PI控制器
入口参数:编码器测量值,目标速度
返回 值:电机PWM
根据增量式离散PID公式
pwm+=Kp[e(k)-e(k-1)]+Ki*e(k)+Kd[e(k)-2e(k-1)+e(k-2)]
e(k)代表本次偏差
e(k-1)代表上一次的偏差 以此类推
pwm代表增量输出
在我们的速度控制闭环系统里面,只使用PI控制
pwm+=Kp[e(k)-e(k-1)]+Ki*e(k)
**************************************************************************/
int Incremental_PI (int Target)
{
// float Kp=5Ki=1;
// float PI;
volatile static int BiasLast_biasIntegral_bias;
Bias=Target-real; //计算偏差
if((Bias
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 3895 2019-01-02 16:38 test1 - 1602正常 1x4键盘 加减调速 加温控\CONTROL\control.c
文件 486 2018-11-18 15:14 test1 - 1602正常 1x4键盘 加减调速 加温控\CONTROL\control.h
文件 17273 2010-06-07 10:25 test1 - 1602正常 1x4键盘 加减调速 加温控\CORE\core_cm3.c
文件 85714 2011-02-09 14:59 test1 - 1602正常 1x4键盘 加减调速 加温控\CORE\core_cm3.h
文件 15503 2011-03-10 10:52 test1 - 1602正常 1x4键盘 加减调速 加温控\CORE\startup_stm32f10x_hd.s
文件 3893 2015-03-13 20:05 test1 - 1602正常 1x4键盘 加减调速 加温控\HARDWARE\DS18B20\ds18b20.c
文件 1208 2012-09-17 11:49 test1 - 1602正常 1x4键盘 加减调速 加温控\HARDWARE\DS18B20\ds18b20.h
文件 2166 2018-12-02 12:25 test1 - 1602正常 1x4键盘 加减调速 加温控\HARDWARE\ENCODER\encoder.c
文件 216 2018-11-17 10:12 test1 - 1602正常 1x4键盘 加减调速 加温控\HARDWARE\ENCODER\encoder.h
文件 4731 2018-11-23 21:40 test1 - 1602正常 1x4键盘 加减调速 加温控\HARDWARE\HC05\hc05.c
文件 972 2015-04-30 10:47 test1 - 1602正常 1x4键盘 加减调速 加温控\HARDWARE\HC05\hc05.h
文件 1827 2018-11-24 17:11 test1 - 1602正常 1x4键盘 加减调速 加温控\HARDWARE\KEY\key.c
文件 1186 2018-11-24 17:10 test1 - 1602正常 1x4键盘 加减调速 加温控\HARDWARE\KEY\key.h
文件 2978 2018-11-27 19:01 test1 - 1602正常 1x4键盘 加减调速 加温控\HARDWARE\LCD\lcd1602.c
文件 942 2018-11-24 22:52 test1 - 1602正常 1x4键盘 加减调速 加温控\HARDWARE\LCD\lcd1602.h
文件 1298 2012-09-13 13:13 test1 - 1602正常 1x4键盘 加减调速 加温控\HARDWARE\LED\led.c
文件 638 2012-09-13 09:45 test1 - 1602正常 1x4键盘 加减调速 加温控\HARDWARE\LED\led.h
文件 380 2018-11-23 21:11 test1 - 1602正常 1x4键盘 加减调速 加温控\HARDWARE\MOTOR\motor.c
文件 80 2018-11-17 10:12 test1 - 1602正常 1x4键盘 加减调速 加温控\HARDWARE\MOTOR\motor.h
文件 35016 2015-03-13 14:54 test1 - 1602正常 1x4键盘 加减调速 加温控\HARDWARE\TFT\font.h
文件 85363 2015-04-24 11:50 test1 - 1602正常 1x4键盘 加减调速 加温控\HARDWARE\TFT\lcd.c
文件 7529 2018-11-22 17:27 test1 - 1602正常 1x4键盘 加减调速 加温控\HARDWARE\TFT\lcd.h
文件 7691 2018-11-27 19:12 test1 - 1602正常 1x4键盘 加减调速 加温控\HARDWARE\TIMER\timer.c
文件 653 2018-11-18 20:09 test1 - 1602正常 1x4键盘 加减调速 加温控\HARDWARE\TIMER\timer.h
文件 4263 2018-11-18 21:18 test1 - 1602正常 1x4键盘 加减调速 加温控\HARDWARE\USART3\usart3.c
文件 1053 2015-04-30 10:47 test1 - 1602正常 1x4键盘 加减调速 加温控\HARDWARE\USART3\usart3.h
文件 399 2011-04-23 10:24 test1 - 1602正常 1x4键盘 加减调速 加温控\keilkilll.bat
文件 355495 2019-01-02 16:38 test1 - 1602正常 1x4键盘 加减调速 加温控\OBJ\control.crf
文件 1876 2019-01-02 16:38 test1 - 1602正常 1x4键盘 加减调速 加温控\OBJ\control.d
文件 391192 2019-01-02 16:38 test1 - 1602正常 1x4键盘 加减调速 加温控\OBJ\control.o
............此处省略178个文件信息
相关资源
- I2C读写AT24C02 基于STM32F103 cube116540
- 基于stm32f103ve的程序——跑马灯实验
- 基于STM32RCT6的步进电机驱动程序
- stm32f407上的两个can发送和接收例程
- STM32 led 时钟
- STM32 2.4G通信例程
- 直流无刷电机方波驱动 stm32 例程代码
- STM32中文资料
- STM32蓝牙和串口程序
- STM32f103超声波模块例程
- stm32f103c8t6 4 oled.rar
- stm32f030 IAP Demo(原创)
- STM32基于rt_thread操作系统的SDHC卡文件
- NRF24L01实现51与STM32双向通讯
- STM32F103 串口程序(完整版)
- stm32 ds18b20 温度传感器 测试通过
- stm32官方例程
- STM32F103定时器中断程序
- [免费]基于stm32f103ze 的OLED驱动代码
- STM32F103RBT6驱动UC1698控制芯片的160160黑
- STM32F103 DS18B20 V3.5.0固件库驱动程序工
- STM32定时器使用入门。看了这个程序会
- SIM908 SDIO FSMC STM32 FIFO
- STM32F103 CC2500完整驱动(模拟SPI)
- AD7606采集程序
- stm32 用SPI 方式读写 SDHC
- stm32通过DMA方式采集ADC数据
- 意法半导体STM全系列微控制器STM32ST
- 基于STM32芯片的SX1278 驱动 LORA.rar
- STM32的PCB封装库,以及原理图库,48
评论
共有 条评论