基于STM32F103C8T6的温控散热器实践,软硬件开源!!!_stm32 散热风扇

2️⃣ 5V锂电池
3️⃣ 5V 0.2A直流风扇

构成主要芯片

1️⃣ 主控芯片:STM32F103C8T6
2️⃣ 电机驱动芯片:DRV8833
3️⃣ 温度传感器:GX18B20
4️⃣ 5V转3.3V稳压芯片:AMS1117-3.3

连接接口

1️⃣ 用户充电接口:Type-C
2️⃣ 充电连接口:MX1.25mm针座接口
3️⃣ 放电接口:XH2.54mm2P接口
4️⃣ 风扇接口:SH1.0mm4P母座
5️⃣ 下载程序接口:2.54mm单排弯针

原理图

在这里插入图片描述

五、元器件清单

数量说明主要类别次要类别
222pF22pF电容贴片电容(MLCC)
8100nF100nF电容贴片电容(MLCC)
222uF22uF电容贴片型铝电解电容
12.2uF2.2uF电容贴片电容(MLCC)
110nF10nF电容贴片电容(MLCC)
1HX25003-2WAP/连接器线对板/线对线连接器
1A1251WR-2P/连接器线对板/线对线连接器
1PZ254V-11-04P/连接器排针
1NCD0805R1/光耦/LED/数码管/光电器件发光二极管/LED
11MΩ1MΩ电阻贴片电阻
210kΩ10kΩ电阻贴片电阻
1510Ω510Ω电阻贴片电阻
1TS-1101-C-W/按键/开关轻触开关
1STM32F103C8T6/单片机/微控制器单片机(MCU/MPU/SOC)
1DS18B20U/传感器温度传感器
1AMS1117-3.3/电源芯片线性稳压器(LDO)
1DRV8833PWP/电源芯片电机驱动芯片
1U262-161N-4BVC11连接器USB连接器
18MHz8MHz晶振/振荡器/谐振器无源晶振
1AFC10-S04QCA-00连接器线对板/线对线连接器

六、 软件设计

main.c

#include "delay.h"
#include "sys.h"
#include "led.h"
#include "GX18B20.h"
#include "usart.h" 
//#include "DS18B20.h"


int main(void)
{
	float temperature = 0;
	delay\_init();
	uart\_init(9600);
	LED\_Init();
	DS18B20\_Init();
	IN1 = 0;
	IN2 = 0;
	MOTOR = 0;
	while(1)
	{	
    temperature = DS18B20\_GetTemperature();			
	//在此处处理温度值,例如打印到串口或显示屏
#if 1
	  	IN1 = 1;
	 	IN2 = 0;
		if(temperature > 35.00)
		{
				BEEP =0;			//PC13
				MOTOR = 1;

		}
		else
		{
				BEEP =1;			//PC13
				MOTOR = 0;

		}
#else
		MOTOR = 1;
#endif

		printf("温度=%.2f\r\n",temperature);
		delay\_ms(500);
		delay\_ms(500);
	}
}


GX18B20.c

#include "GX18B20.h"
#include "delay.h"

// 初始化函数
void GPIO\_Configuration(void)
{
    GPIO_InitTypeDef GPIO_InitStructure;

    // 使能GPIO时钟
    RCC\_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);

    // 配置引脚为推挽输出
    GPIO_InitStructure.GPIO_Pin = GPIO_PIN;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO\_Init(GPIO_PORT, &GPIO_InitStructure);

    // 默认拉低总线
    GPIO\_ResetBits(GPIO_PORT, GPIO_PIN);
}



// 发送复位脉冲
void OW\_Reset(void)
{
    // 拉低总线至少480us
    GPIO\_ResetBits(GPIO_PORT, GPIO_PIN);
    delay\_us(500);

    // 释放总线
    GPIO\_SetBits(GPIO_PORT, GPIO_PIN);
    delay\_us(60);

    // 等待设备拉低总线
    while (GPIO\_ReadInputDataBit(GPIO_PORT, GPIO_PIN) == Bit_RESET);
}

// 发送一个字节
void OW\_WriteByte(uint8\_t byte)
{
	uint8\_t i;  	
    for (i = 0; i < 8; i++)
    {
        // 拉低总线至少1us
        GPIO\_ResetBits(GPIO_PORT, GPIO_PIN);
        delay\_us(2);

        // 发送数据位
        if (byte & 0x01)
        {
            GPIO\_SetBits(GPIO_PORT, GPIO_PIN);
        }
        else
        {
            GPIO\_ResetBits(GPIO_PORT, GPIO_PIN);
        }

        // 拉高总线,释放总线
        delay\_us(60);
        GPIO\_SetBits(GPIO_PORT, GPIO_PIN);
        delay\_us(2);

        // 移位
        byte >>= 1;
    }
}

// 读取一个字节
uint8\_t OW\_ReadByte(void)
{
    uint8\_t byte = 0;
		uint8\_t i;
    for ( i = 0; i < 8; i++)
    {
        // 拉低总线至少1us
        GPIO\_ResetBits(GPIO_PORT, GPIO_PIN);
        delay\_us(2);

        // 拉高总线,释放总线
        GPIO\_SetBits(GPIO_PORT, GPIO_PIN);
        delay\_us(2);

        // 读取数据位
        if (GPIO\_ReadInputDataBit(GPIO_PORT, GPIO_PIN))
        {
            byte |= (1 << i);
        }

        // 等待余下的时隙结束
        delay\_us(60);
    }

    return byte;
}

// 初始化函数
void DS18B20\_Init(void)
{
    // 配置GPIO
    GPIO\_Configuration();
}

// 获取温度
float DS18B20\_GetTemperature(void)
{
    uint8\_t temp_LSB, temp_MSB;
    int16\_t temp;

    // 发送复位脉冲
    OW\_Reset();

    // 发送跳过ROM指令
    OW\_WriteByte(0xCC);

    // 发送温度转换指令
    OW\_WriteByte(0x44);

    // 等待转换完成
    while (!GPIO\_ReadInputDataBit(GPIO_PORT, GPIO_PIN));

    // 发送复位脉冲
    OW\_Reset();

    // 发送跳过ROM指令
    OW\_WriteByte(0xCC);

    // 发送读取温度指令
    OW\_WriteByte(0xBE);

    // 读取温度数据
    temp_LSB = OW\_ReadByte();
    temp_MSB = OW\_ReadByte();

    // 计算温度值
    temp = (temp_MSB << 8) | temp_LSB;

    return (float)temp / 16.0f;
}

GX18B20.h

#ifndef \_\_GX18B20\_H
#define \_\_GX18B20\_H 

#include "sys.h"
#include "stdlib.h" 
#include "stm32f10x.h"
#include "delay.h"

// 定义引脚号
#define GPIO\_PORT GPIOA
#define GPIO\_PIN GPIO\_Pin\_0

extern void DS18B20\_Init(void);
extern float DS18B20\_GetTemperature(void);

#endif

led.c

#include "led.h"

void LED\_Init(void)
{
	//LED
	GPIO_InitTypeDef  GPIO_InitStructure;
 	RCC\_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC|RCC_APB2Periph_AFIO, ENABLE);	 //使能3端口时钟
	GPIO\_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE);
	//GPIO\_PinRemapConfig(GPIO\_Remap\_SWJ\_JTAGDisable, ENABLE);
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_14;	 
 	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; 		 //推挽输出
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;//速度50MHz
 	GPIO\_Init(GPIOC, &GPIO_InitStructure);	  //初始化GPIOC
 	GPIO\_SetBits(GPIOC,GPIO_Pin_14);
	
	//蜂鸣器
 	RCC\_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC|RCC_APB2Periph_AFIO, ENABLE);	 //使能3端口时钟
	GPIO\_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE);
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13;	 
 	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; 		 //推挽输出
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;//速度50MHz
 	GPIO\_Init(GPIOC, &GPIO_InitStructure);	  //初始化GPIOC
 	GPIO\_SetBits(GPIOC,GPIO_Pin_13);
**自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。**

**深知大多数嵌入式工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!**

**因此收集整理了一份《2024年嵌入式&物联网开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。**

![img](https://img-blog.csdnimg.cn/img_convert/6b8f98e53683a9abaec0c0f56b7a2ac8.png)

![img](https://img-blog.csdnimg.cn/img_convert/16a693283dcb9f841a8fd9d0fe520f65.jpeg)

![img](https://img-blog.csdnimg.cn/img_convert/ec6dc3a7b9af919b2f866a884dd3ef77.png)

 **既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上嵌入式&物联网开发知识点,真正体系化!**

![img](https://img-blog.csdnimg.cn/img_convert/5b05a0a31302cb2356a3030708e800c8.png)

![img](https://img-blog.csdnimg.cn/img_convert/f8e8bce23da9f91ca2abe2925f6028f1.png)

 

**由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新**

**如果你觉得这些内容对你有帮助,可以+V:Vip1104z获取!!! (备注:嵌入式)**

<img src="https://img-community.csdnimg.cn/images/73bb5de17851459088c6af944156ee24.jpg" alt="img" style="zoom: 67%;" />



# 最后

**资料整理不易,觉得有帮助的朋友可以帮忙点赞分享支持一下小编~**

**你的支持,我的动力;祝各位前程似锦,offer不断,步步高升!!!**

)]

 

**由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新**

**如果你觉得这些内容对你有帮助,可以+V:Vip1104z获取!!! (备注:嵌入式)**

<img src="https://img-community.csdnimg.cn/images/73bb5de17851459088c6af944156ee24.jpg" alt="img" style="zoom: 67%;" />



# 最后

**资料整理不易,觉得有帮助的朋友可以帮忙点赞分享支持一下小编~**

**你的支持,我的动力;祝各位前程似锦,offer不断,步步高升!!!**

**[更多资料点击此处获qu!!](https://bbs.csdn.net/topics/618376385)**
  • 9
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值