ImageVerifierCode 换一换
格式:DOCX , 页数:6 ,大小:141.99KB ,
资源ID:2987449      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/2987449.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(采用STM32的智能节能风扇设计.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

采用STM32的智能节能风扇设计.docx

1、采用STM32的智能节能风扇设计节能风扇可实现的功能(1)智能风扇可通过温度检测到即时室温,然后根据室温的高低以及设定的温度对扇叶的转速进行自我调节。比如设定的温度为20度,则室温为21度时,风扇转速慢,室温为22度时,风扇转速变快,室温为23度时,风扇转速更快,以此类推。(2)智能风扇可通过红外传感器感受人的存在,无人时可自动关闭,节省能源。(3)通过设定时间,定时关闭风扇(4)风扇有普通模式,可以设置为快档,中档,慢档,跟普通风扇一样,不受温度影响。(5)本系统装配安卓客户端,可以进行一些相关功能的控制,简单方便。方案框图如下:蓝牙采用HC-06,如下图:温度传感器DS18B20与时钟芯片

2、DS1302如下: 智能模式下,没人的时候,液晶显示nobody,风扇不转。 智能模式下:当count计时达到00:10:00时,风扇停止转动。 普通模式下:快档,中档,停止档DS18B20和DS1302说明:工程采用STM32CubeMx软件产生,引脚配置如下:其他配置默认。 DS1302接线说明:SCLK-PC0DATA-PC1RST-PC2函数使用方法说明:1.ds1302初始化。函数如下:void Init_DS1302(char year,char month,charday,char hour,char minute,char second,char flag);注意:年year输

3、入后两位;最后一个flag指的是:如果ds1302没有外接锂电池,程序每次都初始化,那么flag=0;如果有外接锂电池,程序只需第一次上电初始化,那么flag=1;比如Init_DS1302(15,2,12,17,4,34,0);则表示初始化时间为:15年2月12日17点4分34秒,程序每次上电都将ds1302时间初始化。2.获取时间char year, month, day, hour, minute, second;year= getDS1302_year();/获取年的后两位month = getDS1302_ month ();/获取月day = getDS1302_ day ();/

4、获取日hour = getDS1302_ hour ();/获取小时minute = getDS1302_ minute ();/获取分钟second = getDS1302_ second ();/获取秒DS18B20说明:DATA-PC3函数使用说明:flaot Temperature;Temperature= DS18B20_GetTemp();/获取温度参考程序见附件现象如下:串口说明:采用串口2STM32CubeMx配置如下: 只需要将Nucleo板子通过usb插在电脑上即可,无需其他硬件。本程序实现:电脑串口助手将字符串(固定长,如需改变长度,可在程序中更改)发给STM32F411

5、板子,然后STM32F411板子将接收到的字符串发给定脑的串口助手。测试程序如下:uint8_t Rdata20;while (1) if(HAL_UART_Receive(&huart2,Rdata, 13, 1000)=HAL_OK) HAL_UART_Transmit(&huart2,Rdata, 13, 1000); 函数的说明可以查看头文件stm32f4xx_hal_uart.h中的函数声明。结果如下:参考程序见附件风扇转速控制采用PWM调速。有关PWM部分示例代码:以按键控制PWM占空比为例:首先用STM32CubeMx软件配置定时器PWM模式与按键输入IO口。 定时器PWM模式配

6、置 按键IO配置然后生成Keil工程。用Keil打开。 首先修改有关PWM方面的代码。PWM初始化代码如下:/* TIM10 init function */void MX_TIM10_Init(void) TIM_OC_InitTypeDef sConfigOC; htim10.Instance = TIM10; htim10.Init.Prescaler = 0; htim10.Init.CounterMode = TIM_COUNTERMODE_UP; htim10.Init.Period = 0; htim10.Init.ClockDivision = TIM_CLOCKDIVISIO

7、N_DIV1; HAL_TIM_Base_Init(&htim10); HAL_TIM_PWM_Init(&htim10); sConfigOC.OCMode = TIM_OCMODE_PWM1; sConfigOC.Pulse = 0; sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH; sConfigOC.OCFastMode = TIM_OCFAST_DISABLE; HAL_TIM_PWM_ConfigChannel(&htim10, &sConfigOC, TIM_CHANNEL_1);查看头文件stm32f4xx_hal_tim.h,可以知道定时

8、器初始化参数的含义如下: 从头文件中可以看出,要想简单配置PWM很简单,只要改变PWM周期的值与脉冲值就好。比如将改变一下两个语句:htim10.Init.Period = 1000;sConfigOC.Pulse = 200;便将PWM配置为周期为1000个定时器周期,高电平持续时间为200个定时器时钟周期,占空比为200/1000=20%。要想用按键控制PWM占空比,我们只需要修改一下PWM初始化函数,修改如下:修改此函数之后,前面的函数声明也要改。改为:static void MX_TIM10_Init(int period,intpulse);要想PWM工作,需要启动PWM。查看头文件

9、stm32f4xx_hal_tim.h,可以看到如下函数:这是PWM启动与停止的函数。最后看看按键,只需要把按键配置为上拉模式就好。在按键初始化中,将GPIO_InitStruct.Pull= GPIO_NOPULL;改为GPIO_InitStruct.Pull= GPIO_PULLUP;接下来便可以写主函数。int main(void) /* USER CODE BEGIN 1 */ int i=100; /* USER CODE END 1 */ /* MCU Configuration-*/ /* Reset of all peripherals, Initializes the Fla

10、sh interface and the Systick. */ HAL_Init(); /* Configure the system clock */ SystemClock_Config(); /* System interrupt init*/ /* Sets the priority grouping field */ HAL_NVIC_SetPriorityGrouping(NVIC_PRIORITYGROUP_0); HAL_NVIC_SetPriority(SysTick_IRQn, 0, 0); /* Initialize all configured peripherals

11、 */ MX_GPIO_Init(); MX_TIM10_Init(1000,100);/PWM初始化 /* USER CODE BEGIN 2 */ HAL_TIM_PWM_Start(&htim10,TIM_CHANNEL_1);/启动PWM /* USER CODE END 2 */ /* USER CODE BEGIN 3 */ /* Infinite loop */ while (1) if(!HAL_GPIO_ReadPin(GPIOC, GPIO_PIN_13)/如果按键按下 i=i+100; if(i=1000) i=100; HAL_TIM_PWM_Stop(&htim10, TIM_CHANNEL_1);/停止PWM MX_TIM10_Init(1000,i);/PWM重新配置,周期为1000,高电平持续时间为i HAL_TIM_PWM_Start(&htim10,TIM_CHANNEL_1);/启动PWM while(!HAL_GPIO_ReadPin(GPIOC, GPIO_PIN_13);/等待按键释放 /* USER CODE END 3 */编译程序,下载程序,可以看到现象:参考程序见附件

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1