自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(49)
  • 资源 (4)
  • 收藏
  • 关注

原创 DIY烟雾报警器

一个ESP8266的小项目https://blog.csdn.net/shitou123xsx/article/details/90550098随着人们生活质量的提高,人们对自己所生活的环境要求越来越高,空气质量收到了人们的重视。空气净化器类产品相继推出在一定程度上使空气得到了净化。由于条件有限,不能完全的自制空气净化器,所以今天准备开始DIY一个具有报警功能,排除烟雾的烟雾报警器。由...

2019-02-28 18:58:50 7767 1

原创 单片机如何输出4-20ma电流信号?

电路原理图电路分析如上图所示,是一个压控恒流源(VCCS),VS1来自单片机DAC引脚的模拟电压信号。经过R1,C1组成的低通滤波器进行滤波后送往运放,从伯德图中可以看出该滤波器在-3dB增益处对应的截止频率为1.59K,足以用来滤除高频数字干扰信号。运放在深度负反馈条件下具有虚短的特性,DAC信号进入运放的同相输入端后,运放会控制输出,通过反馈回路使得反向输入端电压逼近同相输入端电压,最后保持相等。这个过程中三极管进入线性区,IC电流逐渐变大,流过电阻R3的电流增大,R3两端电压也

2021-01-04 20:42:34 9512 2

原创 单片机如何优雅的读取0-10V传感器信号(一)

在嵌入式系统中会用到0-10V电压信号输出的传感器。而单片机ADC引脚的输入电压却比较低。如STM32引脚输入电压最高为3.3V,高于3.3V会导致单片机损坏。这篇文章介绍一种可用于单片机的0-10V模拟量采集电路。让我们一起来看看吧!如下图所示,使用两个电阻分压,阻值可取为2:1,分压后得到信号源1/3的电压,这样可以将0-10V之间变化的信号变成0-3.33V之间变化的信号。如下图所示,为最基本的电阻分压采样原理图。我使用了2K和1K电阻分压。仿真波形如...

2020-12-13 15:00:18 9305 6

原创 浅谈机器人主控的设计

在很多人眼里,主控板有着密密麻麻的芯片引脚与PCB走线,看起来非常难的样子。其实恰恰相反,主控板的设计有着其特有的设计规律,其实说白了就像搭积木,在满足单片机最小系统的条件下,需要哪些功能,只需要增添相对应得电路模块即可,也可称为模块化设计思想。本文我将从三个层次来介绍用于机器人主控板的设计思想。分别为:根基,主控板最基础部分的设计和原理;枝干,主控板功能模块的扩展与设计思路;树叶,主控板中功能模块具体电路参数的计算。我将以一棵大树的层次结构为模型,带领大家走进电路设计的乐趣。...

2020-11-21 22:10:18 1515

原创 DIY多快充协议太阳能充电器!----项目总结(文末干货分享)

经过前面六篇文章,已经将《DIY多快充协议太阳能充电器》实战项目介绍完成。在项目起源中明确了该实战项目的学习点,分别是三种常见的电源拓扑结构,通过一个项目将BUCK降压拓扑,BOOST升压拓扑,LDO降压拓扑完美的柔和起来。当然一个项目只有前面的三种电路是远远不够的,在项目中还使用到了锂电池保护电路,单片机控制系统,电压检测电路,电源软启动电路等等,这些电路会在后续实战项目中一一介绍。下面让我们一起来看看该项目的全貌。PCB渲染图锂电池充电电路采用上海如韵电子具有MPPT功能..

2020-11-21 12:41:30 1167 1

原创 DIY多快充协议太阳能充电器!----线性电源

在该项目中为了实现电源管理功能,以及后续功能的扩展,在设计中使用到了stm32f0单片机,用来实现电量显示,升压电路使能,充电状态指示,过流保护等等功能。STM32F0系列单片机供电电压范围为2.0到3.6 V,而锂电池的最高电压为4.2V,不能直接使用锂电池给单片机供电,这里还需要做一次电压转换。相比于开关电源,线性电源在高压差时转换效率低,发热量大,通常在高压差大电流转换中不会使用线性电源。而在该应用中锂电池最高电压为4.2V此时LDO的电源转换效率为78%,当电池电压为3.5V时转换效率可高达

2020-11-21 12:39:30 1249

原创 DIY多快充协议太阳能充电器!----快充协议实现原理

在前面的几篇文章详细介绍了支持MPPT功能的太阳能锂电池充电电路和锂电池的三段式充电,最终使用上海如韵电子的CN3791降压芯片设计了锂电池充电电路。然后介绍了BOOST升压拓扑原理,并且采用了TI的TPS61088解决方案,将锂电池的低电压升至能够满足多快充协议的手机充电电压。其实到这里我们的充电器已经可以使用了,但是项目如果只是止步于此,当你在使用时就会发现,为什么我们的升压电路最高能够达到12.6V,电流也能够满足需求,为什么给手机充电时依然非常慢。这里我们就需要明确一点(一个供电系统中.

2020-11-21 12:38:14 2167

原创 DIY多快充协议太阳能充电器!----BOOST升压电路

上一篇文章介绍了支持三段式锂电池充电电路,使用上海如韵电子CN3791芯片的MPPT功能提高了锂电池充电过程中的能量转换效率,带来了锂电池快速蓄电。这篇文章咋们来看看如何将锂电池电压转化成支持多种快充协议的电压。单节锂电池的最高电圧为4.2V但是手机最长用的充电电压为5V,有些支持快充的手机充电电压可以达到9V,12V。所以在项目中就需要使用到升压电路,将低电压升到满足手机充电的电压。如图所示,为BOOST升压拓扑结构,当开关管导通时,二极管截止,电流经过电感,开关管回到地。在这个过程中电.

2020-11-21 12:36:47 4059

原创 DIY多快充协议太阳能充电器!----锂电池充电电路

上一篇文章介绍了项目硬件框图中的三个主要部分,分别为BUCK降压拓扑为锂电池充电,BOOST升压拓扑将锂电池电压升至手机充电电压,LDO线性电源为单片机提供稳定3.3V电源。这篇文章主要来介绍BUCK降压拓扑和锂电池充电电路设计。在说明锂电池充电管理芯片之前,让我们先回顾下项目需求,在项目中我们也要做到“不要因为走得太远而忘记为什么出发”。 太阳能电池电压范围 6~24V,支持MPPT功能 锂电池充电需求 能够实现三段式锂电.

2020-11-21 12:35:01 6048 1

原创 DIY多快充协议太阳能充电器!----硬件框图

上一篇文章介绍了多协议快充太阳能充电器的项目起源,这篇文章来介绍该项目的硬件框图与项目需求。上图为本项目的主要硬件框图,其中电源部分主要由三部分组成,BUCK降压电路,BOOST升压电路,LDO降压电路:第一部分,太阳能BUCK降压电路,这部分用于降低太阳能电池电压,给单节锂电池进行三段式充电。为了提高太阳能转换效率和让电路兼容更多的太阳能电池板,本项目中BUCK降压电路需要支持MPPT太阳能最大功率点跟踪功能和宽电压输入功能。第二部分,锂电池BOOST升压电路,用于将锂电池电压(4..

2020-11-21 12:31:26 1082

原创 DIY一款多快充协议太阳能充电器!----项目起源

有没有遇到过在外旅行期间手机没电,相机没电,蓝牙耳机没电的窘境。即使在出行前准备好了充电宝,但有时依然满足不了手机的"吃"电速度。这时为何不考虑下购买一款太阳能充电宝,时常听到这样的广告语“有光就有电”,听起来很美好,但是现在依然在大街上很难看见太阳能充电宝的身影。主要有以下几个原因:1.太阳能充电宝太重不美观。这是一个客观存在的问题,太阳能电池的功率与太阳能面积是有一定的正比关系的。为了广告语中的“有光就有电”一般厂家在设计中会使用比较大的太阳能电池。就造成了体积较大,并且不怎么美观。2.充电..

2020-11-21 12:28:53 1073

原创 终于弄明白了二极管在BUCK与BOOST电路中的作用!

今天在和同事讨论BOOST电路时,被问到二极管在电路中的作用。这个应该很熟悉才对,但是当时却无法立刻给出回答,所以下班回来翻了翻笔记,整理了二极管在BUCK电路和BOOST电路中的作用,不敢独享,所以这篇文章就产生了。BUCK拓扑原理图BUCK拓扑共有两种电路状态,当MOS管导通时,二极管截止,此时电流的流向如下图所示。二极管中无电流流过,可想象此时电路中不存在此二极管。当MOS管关断时,由于电感中电流不能突变,所以此时二极管提供了一个续流回路,起到续流的作用,...

2020-08-24 06:45:46 6809 3

转载 知道这几个计算就掌握了SVPWM

https://baijiahao.baidu.com/s?id=1598073940651988276&wfr=spider&for=pc

2020-06-27 23:18:22 464

原创 STM32F030F4P6低功耗模式

最近在DIY一款太阳能充电器,其中使用到了STM32F030F4P6作为主控芯片。用来显示充电状态,电池电量,升压电路使能控制,输出使能控制,手机插入检测,台灯控制等等功能。但是在我DIY过程中电路工作一切正常,就是晚上待机功耗有点大,具体待机电流有多少没有设备没有测量。就是一晚上下来单节电池电压会下降0点几伏。在通过分析后发现在在没有使用时,单片机还在飞速运转中,必然会造成功耗的损失。所以这里就想着在空闲时间让单片机进入低功耗模式,减少待机功耗。STM32F030休眠模式介绍从芯片手册中可以找到以

2020-06-10 20:33:17 4657

原创 NumPy库入门

一:N维数组对象ndarray 数组对象可以去掉元素之间运算所需的循环,使一维向量更像单个数据设置专门的数组对象,经过优化,可以提升这类应用的运算速度。 ndarray是一个多维数组对象,有两部分组成:(1)实际的数据。(2)描述这些数据的元数据(数据维度,数据类型等)。一:ndarray类型属性.ndim 轴的数量或维度的数量...

2020-02-11 13:02:46 248

原创 Anaconda3+pycharm+PYQT5进行环境配置

1:下载Anaconda3-2019.03-Windows-x86_642:下载pycharm社区版3:安装PyQt5-tools 打开.../Anaconda3\Lib\site-packages目录,在这个目录下打开终端(shift+鼠标右键) 打开终端输入:pip install PyQt5-tools -i https://pypi.tuna.tsing...

2020-02-01 14:42:56 1050

原创 anaconda3安装没有的库文件

打开文件E:\Anaconda3\Scripts在这个文件夹下按下Shift键同时右击键盘打开终端,输入pip install XXX即可完成安装 按照这个方法进行下载时默认的是从国外网站进行下载文件,速度比较慢往往会遇到下载到一半时出现下载失败的情况,可以使用国内的镜像进行下载。pip国内的一些镜像  阿里云http://mirrors.aliyun.com/pypi/s...

2020-01-31 20:28:06 1272

转载 为什么一个字节的补码表示范围是-128~127

转载自:https://blog.csdn.net/ai_yue/article/details/82777806一个ESP8266的小项目https://blog.csdn.net/shitou123xsx/article/details/90550098我们要先区分一下原码、反码和补码的表示规则:0的表示: 原码:有正零和负零之分,[+0]补...

2019-09-10 21:04:51 2570

原创 如何在AD软件中创建自定义区域铺铜

一个ESP8266的小项目https://blog.csdn.net/shitou123xsx/article/details/90550098在PCB设计中有时需要进行一些特殊形状的铺铜,通常情况下都是通过CAD软件设计好后转化成DXF格式文件,导入AD软件,比如下面的图形: 导进图形后...

2019-09-08 22:21:46 9699

原创 VS2017代码调试:如何避免调试时加载符号

一个ESP8266的小项目https://blog.csdn.net/shitou123xsx/article/details/90550098 在利用VS2013进行代码调试时,当电脑接入网络后系统会自动从Microsoft 符号服务器加载PDB符号文件。此加载符号过程使得调试变得非常慢。工具--->选项---->调试----->符号,然后去掉这个对号后...

2019-09-02 22:24:35 1457

转载 原码、反码、补码知识详细讲解

本篇文章讲解了计算机的原码, 反码和补码. 并且进行了深入探求了为何要使用反码和补码, 以及更进一步的论证了为何可以用反码, 补码的加法计算原码的减法. 论证部分如有不对的地方请各位牛人帮忙指正! 希望本文对大家学习计算机基础有所帮助!一. 机器数和真值在学习原码, 反码和补码之前, 需要先了解机器数和真值的概念.1、机器数一个数在计算机中的二进制表示形式, 叫做这个数的机...

2019-08-28 22:34:09 733

原创 考研复习 排序算法(续)---堆排序 归并排序 基数排序

算法列表 堆排序 归并排序 基数排序 //堆排序void AdjustDown(SortTable &ST,int i,int len){ int j = 0; ST.elem[0] = ST.elem[i]; for ( j= i * 2;j <= len;j *= 2) { if (j <len && ST...

2019-08-27 22:17:38 196

原创 考研复习 排序算法 插入排序 折半插入排序 冒泡排序 快速排序 选择排序

算法列表 插入排序 折半插入排序 冒泡排序 快速排序 选择排序 //插入排序void insertSort(SortTable ST){ int i = 0, j = 0; for (i = 2;i <= ST.length; ++i) { if (ST.elem[i] < ST.elem[i-1]) { ...

2019-08-26 22:32:12 457

原创 二分查找,折半查找

算法列表 int B_search(SSTable ST, ElemType key) #define ElemType inttypedef struct { ElemType *elem; int length;}SSTable;//二分查找int B_search(SSTable ST, ElemType key){ int low = 0, h...

2019-08-13 21:50:58 110

原创 在有序数组中插入元素,使插入后数组仍然有序

一个ESP8266的小项目https://blog.csdn.net/shitou123xsx/article/details/90550098 算法列表 void Insert(ElemType *A, ElemType num, int len) #include <iostream>using namespace std;#de...

2019-08-08 19:45:07 4574 2

原创 考研复习 树的递归遍历和非递归遍历算法

算法列表 递归算法: 先序遍历 中序遍历 后序遍历 非递归算法 中序遍历 先序遍历 //先序遍历二叉树bool PreOrder(PBitNode B){ if (B != NULL) { printf("%d ", B->da...

2019-08-04 23:21:01 453 1

原创 考研复习 第四课:串,KMP字符串匹配算法

算法列表 获取KMP中子串next数组 KMP算法实现实现 这里我先按照自己的理解写出了KMP算法,正在抽时间写自己对KMP求next数组的理解,现在先将代码贴出来。需要注意的一点:在写求next数组函数时发现的一点问题#include <iostream>#include <string.h>void getNextArra...

2019-07-30 23:03:50 139

原创 在使用stlen()函数时遇到的运行异常问题

今天写了一个KMP算法,但是在使用strlen()函数获取字符串长度时,发现程序和预期不对,无论怎样调试结果依旧如此。因此我就找到了strlen()函数的定义,如下代码:size_t __cdecl strlen( _In_z_ char const* _Str ); 可以看出来函数返回为size_t类型,再来看看他在C语言中的定义,为unsigned int类型,无符...

2019-07-27 22:17:54 282

原创 考研复习 第四课:数组,广义表知识点

一:数组: 数据结构特点: 结构中的元素本身可以是具有某种结构的数据,但属于同一数据类型 一维数组:可以看成一个线性表 二维数组:可以看成数据元素是一维数组 三维数组:可以看成数据元素是二维数组 数组元素的下标一般具有固定的上界和下界 数组一旦被定义,他的维数和维界就不在改变 数组仅有存取元素和修改元素的操作 数组的顺序表示: 因为...

2019-07-27 21:47:46 592

原创 考研复习 第一课:顺序表王道算法代码(2.2.3节续)

算法列表 从有续顺序表中删除所有值重复的元素 将第一个元素看作非重复的有序表,之后依序判断后面的元素是否和前面非重复的有序表中的最后一个元素相同 相同则舍弃,不同则加入有序表,直至判断到表尾 /* 算法6:从有续顺序表中删除所有值重复的元素 算法思想:将第一个元素看作非重复的有序表,之后依序判断后面的元素是否和前面非重复的有序表中...

2019-07-22 22:49:51 192

原创 考研复习 第三课:栈与队列(链栈代码)

算法列表 初始化一个链栈 进栈 出栈 判断栈是否为空 获取栈顶元素 #define ElemType inttypedef struct SqNode { ElemType data; SqNode *next;}SqNode;typedef struct { SqNode *Stack; int count;}SqStack;/* ...

2019-07-22 19:59:50 155

原创 考研复习 第三课:栈与队列(顺序栈代码)

算法列表 初始化一个空栈 进栈操作 出栈操作 判断栈是否为空 # define STACK_INIT_SIZE 100# define STACKINCREMENT 10#define ElemType inttypedef struct { ElemType *base; //栈底指针,栈构造前和销毁后为空 ElemType *top; ...

2019-07-22 19:32:19 138

原创 考研复习 第二课:链表代码(续)

算法列表 两个升序序单链表的合并 仅仅给定链表中一个结点 删除这个节点 /* 两个有序单链表的合并*/void MergeList_L(LinkList &La, LinkList &Lb, LinkList &Lc){ LinkList *pa, *pb,*pc; pa = La.next; pb = Lb.next; pc ...

2019-07-21 23:40:50 125

原创 考研复习 第一课:顺序表王道算法代码(2.2.3节)

算法列表 算法1:从顺序表中删除最小值元素 并用最后一个元素替换 函数返回最小值 算法2:设计一个高效算法,将顺序表L的所有元素逆序 要求: 空间复杂度为O(1) 算法3: 编写一个算法删除顺序表中所有值为x的元素 要求: 时间复杂度O(n) 空间复杂度:O(1) 算法4:删除顺序表中在给定值S到T之间的所有值(S<T) 要求: 如果表为...

2019-07-20 23:25:49 185

原创 考研复习 第二课:链表代码

算法列表 单链表的查找算法:查找第i个结点 遍历链表 单链表的插入算法(尾插法) 单链表的删除算法 单链表的插入算法(头插法) 表尾插入法建立不带头结点的单链表 main()函数验证 #include <stdio.h>#include <iostream>#define ElemType inttypedef st...

2019-07-19 20:27:33 133

原创 考研复习 第一课:顺序表代码

算法列表 顺序表初始化 在顺序表中插入数据 删除顺序表中的数据 合并两个升序顺序表 #include <stdio.h>#include <iostream>#define MAXLENGTH 50#define ElemType inttypedef struct { ElemType* val; int len...

2019-07-15 21:42:29 127

原创 &&和||的短路特性

&& 和 || 属于逻辑运算符,&&和||都有一个短路特性,先简述如下:一:&&的短路特性要使(表达式1)&&(表达式2)输出结果为真,就要同时满足表达式1和表达式2都要为真。&&的短路特性意思为如果在运算过程中表达式1结果为假,这时输出结果一定为假,所以表达式2不在进行运算。因为结果不可能为真,这就是&am...

2019-07-14 23:02:51 4068

原创 翻转二叉树

一个ESP8266的小项目https://blog.csdn.net/shitou123xsx/article/details/90550098利用二叉树的遍历来递归对一个二叉树进行翻转操作,代码如下。struct TreeNode* invertTree(struct TreeNode* root) { if (root == NULL) return; struct...

2019-06-19 23:16:14 274

原创 ESP8266远程控制微信小程序工具-----基于MQTT协议

前一段时间玩了玩ESP8266,在学会ESP8266的基本的IO操作后就捉摸着能不能实现远程控制,比如远程控制电机,窗帘等等。 在百度一段时间后选择了贝壳物联平台实现远程控制。具体操作就是贝壳物联手机APP连接物联网平台服务器,服务器在转发数据给ESP8266,ESP8266做数据处理后,控制设备。具体的框图如下所示: ...

2019-05-25 19:30:34 10407 3

原创 判断一个十进制数是否为2的N次方

给定一个十进制数,是判断出这个数是否为2的N次方。对于满足2的N次方的数都有一个特点,比如:2: 0000 00104: 0000 01008: 0000 100016: 0001 000032: 0010 0000...... 从中可以看出来一个整数是2的N次方的话,其对应的二进制数的最高位为1,其余位都为0。利用这个特点通过判断十进制数是否满足...

2019-04-27 22:57:49 335

TM1637驱动程序和资料

文档包括tm1637驱动程序和技术文档。TM1637 是一种带键盘扫描接口的LED(发光二极管显示器)驱动控制专用电路,内部集成有MCU 数字接口、数据锁存器、LED 高压驱动、键盘扫描等电路。本产品性能优良,质量可靠。主要应用于电磁炉、微波炉及小家电产品的显示屏驱动。采

2019-02-25

使用可变参数实现printf()函数

通过可变参数函数实现printf()函数功能,可将其应用于单片机,ARM裸机等的串口输出中去,并且新增了[%b:实现二进制输出,原来printf函数不能实现的功能]。也可将其使用的液晶的字符类驱动中去。

2018-05-07

Keil.STM32F1xx_DFP.1.0.5.pack

Keil.STM32F1xx_DFP.1.0.5.pack Keil.STM32F1xx_DFP.1.0.5.pack

2017-10-22

Keil.STM32F4xx_DFP.1.0.8.pack

Keil.STM32F4xx_DFP.1.0.8.pack Keil.STM32F4xx_DFP.1.0.8.pack

2017-10-22

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除