基于STM32居家加湿器控制仿真设计-基于STM32热释人体感应智能门禁报警设计-基于STM32无刷电机BLDC速度控制器设计-基于STM32智能路灯灯光自动控制设计-基于单片机PID控制算法开关电源

1605基于STM32无刷电机BLDC速度控制器系统设计-毕设课设资料

  1.  可调转速通过可调电阻和STM32的ADC功能,实现500-4596范围的速度调节。
  2. 通过定时器1的PWM互补输出六路PWM控制电机的转动,驱动器使用L293D和IRF540 MOS管。
  3. 换向使用的是外部中断,测速使用的是定时器2的三鹿输入捕获,这里有一个坑,proteus中三路输入捕获无法同时工作,本来打算三路都做测速逻辑,但是速度变化很大,所以最后只使用了一路作为测速通道。
  4. 正反转使用的是外部中断。
  5. 显示转速和目标转速使用的是lcd1602,在proteus仿真中,显示转速有一定的延时和误差

实现功能:

  1. 可调转速
  2. 可控转动方向
  3. 显示转速和目标转速

下面是原理图和程序

基于STM32居家加湿器控制仿真设计-基于STM32热释人体感应智能门禁报警设计-基于STM32无刷电机BLDC速度控制器设计-基于STM32智能路灯灯光自动控制设计-基于单片机PID控制算法开关电源_第1张图片

#include "main.h"
#include "adc.h"
#include "tim.h"
#include "gpio.h"

/* Private includes ----------------------------------------------------------*/
/* USER CODE BEGIN Includes */
#include "includes.h"
#include "lcd.h"
/* USER CODE END Includes */

/* Private typedef -----------------------------------------------------------*/
/* USER CODE BEGIN PTD */

/* USER CODE END PTD */

/* Private define ------------------------------------------------------------*/
/* USER CODE BEGIN PD */
#define HALL_GPIO GPIOA
//START 任务
//设置任务优先级
#define START_TASK_PRIO      			10 //开始任务的优先级设置为最低
//设置任务堆栈大小
#define START_STK_SIZE  	  			64
//任务堆栈	
OS_STK START_TASK_STK[START_STK_SIZE];
//任务函数
void start_task(void *pdata);	
 			   
//LED0任务
//设置任务优先级
#define LED0_TASK_PRIO       			2 
//设置任务堆栈大小
#define LED0_STK_SIZE  		    		64
//任务堆栈	
OS_STK LED0_TASK_STK[LED0_STK_SIZE];
//任务函数
void led0_task(void *pdata);

//Speed_ADC 任务
//设置任务优先级
#define SPEED_ADC_TASK_PRIO       			1
//设置任务堆栈大小
#define SPEED_ADC_STK_SIZE  		    		64
//任务堆栈	
OS_STK SPEED_ADC_TASK_STK[SPEED_ADC_STK_SIZE];
//任务函数
void speed_adc_task(void *pdata);

基于STM32居家加湿器控制仿真设计-基于STM32热释人体感应智能门禁报警设计-基于STM32无刷电机BLDC速度控制器设计-基于STM32智能路灯灯光自动控制设计-基于单片机PID控制算法开关电源_第2张图片

1606基于STM32热释人体感应智能门禁报警系统设计-毕业设计资料

 1、通过热释红外传感器检测是否有人,如果有人靠近门时,液晶屏提示亮并显示欢迎词:Welcome to home!,夜间探测到有人时开灯,灯用9个高亮LED灯设计,无人时,关灯。

2、主人可设定门禁系统工作状态,家里有人和无人两种状态。通过一个拨动开关设置,拨上去,液晶显示有人:Somebody!,拨下来液晶显示没人:Nobody!有人时,客人按下门铃,蜂鸣器鸣叫提示,无人时,客人按下门铃,无任何反应。

3、门外人员逗留时间超过一定时间则发出报警信息。

4、检测到有人或者没有人,有状态指示灯指示。

#include "delay.h"
#include "sys.h"
#include "usart.h"
#include "key.h"
#include "led.h"
#include "lcd1602.h"

u8 lighFlag=0;		//光照 标志
u8 doorFlag=0;		//门检测 标志
u8 manFlag=0;			//人检测 标志
u8 menlingFlag=0;	//门铃检测 标志
u8 baojFlag=0;		//报警 标志

 int main(void)
 {
	u32 time10ms=0;
	 
	delay_init();	    	 //延时函数初始化	  

	KEY_Init();		  //初始化 按键
	LED_Init();		  //初始化电机引脚 作为输出 类似led
	delay_ms(1);
	
	Lcd_GPIO_init();  //初始化lcd引脚	
	Lcd_Init();		  //初始化lcd屏幕
	delay_ms(20);
	
  Lcd_Puts(0,0,"Waitting for you");	//初始化显示
	Lcd_Puts(0,1,"Nobody!         ");	 
	 

基于STM32居家加湿器控制仿真设计-基于STM32热释人体感应智能门禁报警设计-基于STM32无刷电机BLDC速度控制器设计-基于STM32智能路灯灯光自动控制设计-基于单片机PID控制算法开关电源_第3张图片

基于STM32居家加湿器控制仿真设计-基于STM32热释人体感应智能门禁报警设计-基于STM32无刷电机BLDC速度控制器设计-基于STM32智能路灯灯光自动控制设计-基于单片机PID控制算法开关电源_第4张图片

1607基于STM32居家加湿器控制仿真系统设计-电子设计资料

#include "stm32f10x.h"
#include "bsp_SysTick.h"
uint8_t table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};

int main(void)
{
	GPIO_InitTypeDef GPIO_InitStructure; 	
	
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|\
	                              GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7;
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz;
	GPIO_Init(GPIOB, &GPIO_InitStructure);
	
	GPIO_SetBits(GPIOB,GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|\
	                   GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7);
	
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2;
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz;
	GPIO_Init(GPIOA, &GPIO_InitStructure);
	
	GPIO_SetBits(GPIOA,GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2);
	
	SysTick_Init();
	while(1)
	{ 
		uint8_t i;
		for(i=0;i<10;i++)	
		{
			GPIO_Write(GPIOB, ~table[i]);
			Delay_ms(200);
			if( i>= 5 )
			{

基于STM32居家加湿器控制仿真设计-基于STM32热释人体感应智能门禁报警设计-基于STM32无刷电机BLDC速度控制器设计-基于STM32智能路灯灯光自动控制设计-基于单片机PID控制算法开关电源_第5张图片

基于STM32居家加湿器控制仿真设计-基于STM32热释人体感应智能门禁报警设计-基于STM32无刷电机BLDC速度控制器设计-基于STM32智能路灯灯光自动控制设计-基于单片机PID控制算法开关电源_第6张图片

1604基于STM32智能路灯灯光自动控制系统设计-毕设课设资料

 实现的功能如下,下图是仿真原理图:

通过ARM内部的ADC采集光敏电阻电压,判断电压值
电压值低于设定的值,表示光强太弱,开路灯
光强合适,显示OK灯不亮
stm32内部ADC采集电压
光敏电阻,调节光强 

基于STM32居家加湿器控制仿真设计-基于STM32热释人体感应智能门禁报警设计-基于STM32无刷电机BLDC速度控制器设计-基于STM32智能路灯灯光自动控制设计-基于单片机PID控制算法开关电源_第7张图片

#include "stm32f10x.h"
#include "bsp-lcd1602.h"
#include "delay.h"
#include "sys.h"
#include "adc.h"

int main(void)
{
  int ADC_num;
	float temp;
	
	ADC1_GPIO_Config();
  ADC_Config(); 
	delay_init();	    	 //延时函数初始化	  	
	LCD1602_Init(); 
	LCD1602_ShowStr(0,0,"Intelligent LED",15);
	LCD1602_ShowStr(0,1,"    LED:",8);
	
	GPIO_InitTypeDef GPIO_InitStructure; 	
	
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz;
	GPIO_Init(GPIOC, &GPIO_InitStructure);	
	
	while(1)
	{
		ADC_num=ADC_GetConversionValue(ADC1);
		temp=ADC_num*(3.4/4096)*10;
		//表示光线太弱
		if( temp < 8 )
		{
			LCD1602_ShowStr(8,1,"Low ",4);
			GPIO_ResetBits( GPIOC,GPIO_Pin_0 );

基于STM32居家加湿器控制仿真设计-基于STM32热释人体感应智能门禁报警设计-基于STM32无刷电机BLDC速度控制器设计-基于STM32智能路灯灯光自动控制设计-基于单片机PID控制算法开关电源_第8张图片

1602基于单片机PID控制算法开关电源设计实现(完善)

 开关电源是用通过电路控制开关管进行高速的道通与截止,将直流电转化为高频率的交流电提供给变压器进行变压,从而产生所需要的一组或多组电压。开关稳压电源(以下简称开关电源)问世后,在很多领域逐步取代了线性稳压电源和晶闸管相控电源。早期出现的是串联型开关电源,其主电路拓扑与线性电源相仿,但功率晶体管工作于开关状态。随着脉宽调制(PWM)技术的发展,PWM开关电源问世,它的特点是用20kHz的载波进行脉冲宽度调制,电源的效率可达65%~70%,而线性电源的效率只有30%~40%。因此,用工作频率为20 kHz的PWM开关电源替代线性电源,可大幅度节约能源。

工程实际中,应用最为广泛调节器控制规律为比例、积分、微分控制,简称PID控制,又称PID调节。PID控制器它以其结构简单、稳定性好、工作可靠、调整方便而成为工业控制主要技术之一。

基于STM32居家加湿器控制仿真设计-基于STM32热释人体感应智能门禁报警设计-基于STM32无刷电机BLDC速度控制器设计-基于STM32智能路灯灯光自动控制设计-基于单片机PID控制算法开关电源_第9张图片

#include "Include.h"
float idata P_DATA=30;
float idata I_DATA=2;
float idata D_DATA=1; 
//声明 PID 实体
//*****************************************************
static PID idata sPID; 
static PID idata *sptr = &sPID; 

//*****************************************************
//PID 参数初始化
//*****************************************************
void IncPIDInit(void) 
{ 
sptr ->LastError = 0; //Error[-1] 
sptr ->PrevError = 0; //Error[-2] 
sptr ->Proportion = P_DATA; //比例常数  Proportional Const 
sptr ->Integral = I_DATA; //积分常数 Integral Const 
sptr ->Derivative = D_DATA; //微分常数  Derivative Const 
//sptr ->SetPoint =10;   //目标是 100
}
//*****************************************************
//增量式 PID 控制设计 
//*****************************************************
float IncPIDCalc(float NextPoint,float SetPoint ) 
{ 
	float iError, iIncpid; //当前误差
	iError = SetPoint -  NextPoint; //增量计算
		
	iIncpid = sptr ->Proportion * iError //E[k]项

 基于STM32居家加湿器控制仿真设计-基于STM32热释人体感应智能门禁报警设计-基于STM32无刷电机BLDC速度控制器设计-基于STM32智能路灯灯光自动控制设计-基于单片机PID控制算法开关电源_第10张图片


​文章转自电设屋,资料百度网盘下载地址 https://www.aiesst.cn/share.html​ 

目录

1605基于STM32无刷电机BLDC速度控制器系统设计-毕设课设资料

1606基于STM32热释人体感应智能门禁报警系统设计-毕业设计资料

1607基于STM32居家加湿器控制仿真系统设计-电子设计资料

1604基于STM32智能路灯灯光自动控制系统设计-毕设课设资料

1602基于单片机PID控制算法开关电源设计实现(完善)


你可能感兴趣的:(stm32,单片机,51单片机,嵌入式硬件,proteus)