Zeruns's Blog - 嵌入式开发
type: channel
link: https://blog.zeruns.com/tag/%E5%B5%8C%E5%85%A5%E5%BC%8F%E5%BC%80%E5%8F%91/
items: 基于STM32的同步整流Buck-Boost数字电源 开源
items: 基于STM32F407的LVGL工程模板（MSP3526屏幕），包含FreeRTOS版和裸机版
items: 基于CH32V307的智能电子负载开源，嵌入式大赛作品开源
items: 基于HT32F52352的智能电子负载开源，合泰杯作品开源
items: 基于STM32G4的0.96寸OLED显示屏驱动程序（HAL库），支持硬件/软件I2C
items: 做了个三相电量采集器开源出来，可以方便监测家里用电情况
items: 基于STM32F1的0.96寸OLED显示屏驱动程序，支持硬件/软件I2C
items: 沁恒CH32V307VCT6最小系统板开源
items: 2011年全国电赛题-开关电源模块并联供电系统
items: STM32F030C8T6最小系统板和流水灯（原理图和PCB）

基于STM32的同步整流Buck-Boost数字电源 开源
type: item
date: 2024-06-05T01:35:00+08:00
description: AI摘要 一款基于STM32G474的四开关Buck-Boost数字电源，支持TypeC接口PD诱骗输入和DC5.5接口输入，输入/输出最高48V10A。通过PID算法实现输出控制与保护，含原理图、PCB、源码等开源资料。 此内容根据文章生成，仅用于文章内容的解释与总结 一款基于STM32G474的四开关Buck-Boost数字电源，支持TypeC接口PD诱骗输入和DC5.5接口输入，输入/输出最高48V10A，这是我的毕业设计，现在开源出来，含原理图、PCB、程序源码、外壳3D模型等资料。做得一般，勿喷，欢迎友好交流。作品演示视频：https://www.bilibili.com/video/BV1Ui421y7ip/基于CH32V307的智能电子负载开源，嵌入式大赛作品开源：https://blog.zeruns.com/archives/785.html本项目的立创开源平台开源链接：https://url.zeruns.com/noGf0电子/单片机技术交流QQ群：2169025065资料下载地址在文章末尾。硬件电路使用的嘉立创EDA软件来设计，这款软件真的很好用。简介​ 本文设计基于STM32的同步整流Buck-Boost数字电源，该电源电路由MOSFET驱动电路、4开关Buck-Boost电路、信号调理电路、PD快充协议电路、辅助电源电路、单片机控制电路等部分组成。​ 该电源可通过DC接口或Type-C接口供电，而且Type-C接口支持与充电器通过PD快充协议通讯，自动请求并获取最高20V的工作电压。该电源使用STM32G474单片机对输入输出的电压和电流实时监测，并通过PID控制算法来调整输出的PWM占空比，以及实现过压过流保护，还可采样主板温度来实现过温保护。此外可通过OLED屏实时查看电源的参数，并通过旋转编码器和按钮来设置输出电压和电流，还可以通过另一个Type-C接口与上位机通信，通过上位机软件可实时查看电源的各项参数和波形。设计性能参数​ 电源设计性能参数如下表：项目参数指标输入电压范围12Vdc~48Vdc输入电流范围0~10A输出最大功率450W输出电压范围0.5Vdc~48Vdc输出电流范围0~10A输出电压纹波峰峰值≤200mV开关频率181.333kHz实物图使用VOFA+作为上位机软件，可实时查看电源各项参数（输入电压和电流、输出电压和电流、主板温度、MCU温度、电源转换效率等）和波形变化。如下图所示。系统框架图硬件电路设计器件选型计算电感计算​ 在同步BUCK-BOOST电源中，电感的计算需要考虑BUCK模式和BOOST模式下的工作情况，以确保在两种模式下都能满足电路的工作要求。通常，电感的选择会基于两种模式中对电感要求更高的那个模式来进行。​ 当电源工作于BUCK降压模式时，假设输入电压最大为48V，输出电压最小为5V，计算最小的PWM占空比：$$ D_{min} = \frac{V_{out\_min}}{V_{in\_max}} = \frac{5V}{48V} = 10.417\% $$​ 定义电感电流波动量(25%的最大额定电流脉动，设最大额定电流为10A)：$$ \Delta I_L = 25\% \cdot I_{out\_nom} = 25\% \times 10A = 2.5A $$​ 计算最小需要的BUCK电感：$$ L_{minBuck} = \frac{V_{out\_min} \cdot (1 - D_{min})}{\Delta I_L \cdot f_{switch}} = \frac{5V}{2.5A \times 181333Hz} \times (1 - 10.417\%) \approx 9.88\mu H $$​ 当电源工作于BOOST升压模式时，以输入额定电压24V为计算点，计算PWM占空比：$$ D_{Bo} = 1 - \frac{V_{in\_nom}}{V_{out\_max}} = 1 - \frac{24V}{48V} = 50\% $$​ Boost 模式下，取1A（ $I_{minb}$ ）时Boost进入连续模式（CCM），计算电感：$$ L_{minBoost} = \frac{V_{out\_max} \cdot D_{Bo}(1-D_{Bo})^2}{2 \cdot I_{minb} \cdot f_{switch}} = \frac{48V \times 50\% \times (1 - 50\%)^2}{2 \times 1A \times 181333Hz} = 16.544\mu H $$​ 基于公式得出的计算结果，确定了为满足预定纹波电流要求所需的最小电感值。为了确保满足这一条件，应选用一个电感值略高于计算值的电感元…

基于STM32F407的LVGL工程模板（MSP3526屏幕），包含FreeRTOS版和裸机版
type: item
date: 2024-05-23T23:53:00+08:00
description: AI摘要 介绍了基于STM32F407的LVGL工程模板，支持MSP3526屏幕，包含FreeRTOS和裸机版，使用SPI+DMA驱动，帧率达9FPS全屏刷新。 此内容根据文章生成，仅用于文章内容的解释与总结 在STM32F407上移植好了LVGL图形库，LCD屏幕型号是MSP3526，想换其他屏幕可以自己修改LCD的驱动程序，项目工程包含FreeRTOS版和裸机版。使用SPI+DMA驱动屏幕。这款LCD屏分辨率为320x480，尺寸为3.5寸，LCD驱动芯片为ST7796，接口为SPI，电容触摸屏驱动芯片为FT6336U，接口为IIC。MCU超频后全屏刷新时帧率为9FPS左右，局部刷新时帧率为30+FPS，对于SPI来说这个帧率应该算可以了吧。STM32使用硬件I2C读取SHTC3温湿度传感器：https://blog.zeruns.com/archives/692.html移植好U8g2图形库的STM32F407标准库工程模板：https://blog.zeruns.com/archives/722.html基于STM32G4的0.96寸OLED显示屏驱动程序（HAL库），支持硬件/软件I2C：https://blog.zeruns.com/archives/776.html电子/单片机技术交流群：2169025065效果图效果演示视频：https://www.bilibili.com/video/BV1Ni421S7ta/LVGL简介LVGL(轻量级和通用图形库)是一个免费和开源的图形库，它提供了创建嵌入式GUI所需的一切，具有易于使用的图形元素，美丽的视觉效果和低内存占用。主要特性：丰富且强大的模块化图形组件：按钮 (buttons)、图表 (charts)、列表 (lists)、滑动条 (sliders)、图片 (images) 等高级的图形引擎：动画、抗锯齿、透明度、平滑滚动、图层混合等效果支持多种输入设备：触摸屏、 键盘、编码器、按键等支持多显示设备不依赖特定的硬件平台，可以在任何显示屏上运行配置可裁剪（最低资源占用：64 kB Flash，16 kB RAM）基于UTF-8的多语种支持，例如中文、日文、韩文、阿拉伯文等可以通过类CSS的方式来设计、布局图形界面（例如：Flexbox、Grid）支持操作系统、外置内存、以及硬件加速（LVGL已内建支持STM32 DMA2D、NXP PXP和VGLite）即便仅有单缓冲区(frame buffer)的情况下，也可保证渲染如丝般顺滑全部由C编写完成，并支持C++调用支持Micropython编程，参见：LVGL API in Micropython支持模拟器仿真，可以无硬件依托进行开发丰富详实的例程详尽的文档以及API参考手册，可线上查阅或可下载为PDF格式在 MIT 许可下免费和开源配置要求：基本上，每个能够驱动显示器的现代控制器都适合运行 LVGL。 最低要求是：16、32 或 64 位微控制器或处理器建议使用 >16 MHz 时钟速度闪存/ROM： > 64 kB 用于非常重要的组件 (> 建议使用 180 kB)RAM:静态 RAM 使用量：\~2 kB，取决于使用的功能和对象类型堆: > 2kB (> 建议使用 8 kB)动态数据（堆）: > 2 KB (> 如果使用多个对象，建议使用 16 kB). 在 lv_conf.h 文件中配置 LV_MEM_SIZE 生效。显示缓冲区：> “水平分辨率”像素（推荐 >10 × 10×“ 水平分辨率”）MCU或外部显示控制器中的一个帧缓冲区C99 或更新的编译器LVGL官网：https://lvgl.io/接线说明LCD屏MCU/开发板功能描述GNDGNDLCD屏电源地VCC5V或3.3VLCD屏电源正极LCD_CSPE6LCD屏SPI片选LCD_RSTPC1LCD屏复位LCD_RSPC0LCD屏命令/数据选择SDI(MOSI)PB5LCD屏SPI数据线，主机输出从机输入SCKPB3LCD屏SPI时钟线LED3.3V背光LED（可以自己接IO口，用软件控制背光）SDO(MISO)PB4LCD屏SPI数据线，主机输入从机输出CTP_SCLPB8电容触摸屏控制器I2C时钟线CTP_RSTPB7电容触摸屏控制器复位CTP_SDAPB9电容触摸屏控制器I2C数据线CTP_INTPB6电容触摸屏控制器中断信号注意一下，我效果图里用的这款开发板的PB4引脚是没有在两边的排针里的，是在上面的JTAG接口里。资料和程序下载屏幕资料在线文档：https://url.zeruns.com/68x3Y屏幕资料打包下载地址1：https://www.123pan.com/s/2Y9Djv-rZevH.html屏幕资料打包下载地址2：http…

基于CH32V307的智能电子负载开源，嵌入式大赛作品开源
type: item
date: 2024-05-07T16:42:00+08:00
description: AI摘要 基于CH32V307的智能电子负载设计，含原理图、PCB、源码等，使用RT-Thread系统，支持恒压、恒流等功能，适用于嵌入式大赛作品。 此内容根据文章生成，仅用于文章内容的解释与总结 基于CH32V307VCT6的智能电子负载开源，嵌入式大赛作品开源，含原理图、PCB、程序源码、作品报告。2023年嵌入式芯片与系统设计竞赛应用赛道，国二作品。用半个月时间在之前做的合泰版的电子负载的基础上改的，移植了程序到CH32单片机，并使用了RT-Thread系统，优化了一下代码，赶工做出来，做得很一般，勿喷。作品演示视频：https://www.bilibili.com/video/BV1Zu4y1m7Zd/基于HT32F52352的智能电子负载开源，合泰杯作品开源：https://blog.zeruns.com/archives/784.html本开源作品仅供参考学习，不建议复刻，立创开源平台上有更多更好的更完善的电子负载开源作品！本项目的立创开源平台开源链接：https://url.zeruns.com/Et4x4电子/单片机技术交流群：2169025065沁恒官网可以免费申请开发板样品：https://url.zeruns.com/h9a99什么是电子负载电子负载是一种电子设备，用于模拟真实负载环境，以测试电源或电子电路的性能。比起使用大功率可调电阻或者电炉丝等传统的无源负载，电子负载具有参数可调，使用方便等诸多优势。无论是专业的电子工程项目开发还是业余的电子爱好者，电子负载仪都是必备的设备之一。电子负载从测试电源的种类来分可以分为交流电子负载和直流电子负载。从功能上划分常见的有恒流、恒压、恒阻、恒功率四种类型。因为我们常见的大多数电源都是恒压直流电源。测试这类电源时，主要测试的是其电流输出能力。所以大多数的应用场景中，直流恒流电子负载是最为常见的类型。而电子负载从控制方式上划分则又可以分为数控和模拟两种类型。相较于使用纯模拟电路控制的电子负载，数控电子负载使用数字控制，在参数调节上更为直观，而且功能丰富、扩充简单，还可以方便的实现测试的自动化。项目简介本作品采用 CH32V307VCT6 沁恒单片机作为主控芯片设计的电子负载，供电方式由18650锂电池供电，方便携带。控制方式为通过单片机DAC输出一个直流电压作为参考电压给到运放与电流/电压采样放大后的电压做比较，运放输出控制MOS管，从而实现恒压/恒流。触控屏用的是陶晶驰的2.8寸串口屏，型号为：TJC3224T028_011R。散热器用的是2U服务器的1356/1366针散热器，侧吹的。项目程序使用RT-Thread Studio开发。电路设计用的立创EDA软件。最大输入电压电流为100V/10A，最大功率200W。实物图当时没拍多少照片，就找到这几张了，可以去看看演示视频。资料下载地址下面链接中的资料有：电路原理图、立创EDA工程文件、PCB制板文件、程序源码、串口屏工程文件、芯片手册。123云盘不限速下载地址：https://www.123pan.com/ps/2Y9Djv-6NevH.html百度网盘下载地址：https://pan.baidu.com/s/17YSlBZ6F1M18k7JGa7FlVA?pwd=buxx 提取码：buxx元件购买地址CH32V307VCT6芯片：https://s.click.taobao.com/T8MSZotCH32V307VCT6开发板：https://s.click.taobao.com/2JBSZotINA199A1芯片：https://s.click.taobao.com/XLuweot0805贴片电阻样品本：https://s.click.taobao.com/p8YSGpt0805贴片电容样品本：https://u.jd.com/9uvZoBdXL1509芯片：https://s.click.taobao.com/DOcRZot串口屏：https://s.click.taobao.com/pyzleot建议在立创商城里购买元器件：https://activity.szlcsc.com/invite/D03E5B9CEAAE70A4.html原理图功率板电源板控制板PCB功率板顶层底层电源板顶层底层控制板顶层底层其他开源项目推荐做了个三相电量采集器开源出来，可以方便监测家里用电情况：https://blog.zeruns.com/archives/771.html移植好U8g2图形库的STM32F407标准库工程模板：https://blog.zeruns.com/archives/722.html沁恒CH32V307VCT6最小系统板开源：https://blog.zeruns.com/archives/72…

基于HT32F52352的智能电子负载开源，合泰杯作品开源
type: item
date: 2024-05-06T23:20:00+08:00
description: AI摘要 基于HT32F52352的智能电子负载设计，支持恒流、恒压、恒阻、恒功率模式，开源含原理图、PCB、代码等。 此内容根据文章生成，仅用于文章内容的解释与总结 基于HT32F52352的智能电子负载开源，合泰杯作品开源，含原理图、PCB、程序源码、作品报告。2023第十届广东省大学生合泰杯单片机应用设计竞赛三等奖作品。用一个月时间（而且课多没啥时间弄）赶工做出来的，做得很一般，勿喷。作品演示视频：https://www.bilibili.com/video/BV1sM4y1b7qu/本开源作品仅供参考学习，不建议复刻，立创开源平台上有更多更好的更完善的电子负载开源作品！本项目的立创开源平台开源链接：https://url.zeruns.com/xvvF8合泰HT32单片机开发环境搭建和配置教程：https://blog.zeruns.com/archives/709.html电子/单片机技术交流群：2169025065什么是电子负载电子负载是一种电子设备，用于模拟真实负载环境，以测试电源或电子电路的性能。比起使用大功率可调电阻或者电炉丝等传统的无源负载，电子负载具有参数可调，使用方便等诸多优势。无论是专业的电子工程项目开发还是业余的电子爱好者，电子负载仪都是必备的设备之一。电子负载从测试电源的种类来分可以分为交流电子负载和直流电子负载。从功能上划分常见的有恒流、恒压、恒阻、恒功率四种类型。因为我们常见的大多数电源都是恒压直流电源。测试这类电源时，主要测试的是其电流输出能力。所以大多数的应用场景中，直流恒流电子负载是最为常见的类型。而电子负载从控制方式上划分则又可以分为数控和模拟两种类型。相较于使用纯模拟电路控制的电子负载，数控电子负载使用数字控制，在参数调节上更为直观，而且功能丰富、扩充简单，还可以方便的实现测试的自动化。项目简介本作品采用 HT32F52352 合泰单片机作为主控芯片设计的电子负载，供电方式由18650锂电池供电，方便携带。控制方式为通过单片机输出PWM波到低通滤波电路滤出一个较为稳定的直流电压（通过PWM+低通滤波实现DAC的功能）作为参考电压给到运放与电流/电压采样放大后的电压做比较，运放输出控制MOS管，从而实现恒压/恒流。触控屏用的是陶晶驰的2.8寸串口屏，型号为：TJC3224T028_011R。实物图当时没拍多少照片，就找到这两张了，可以去看看演示视频。资料下载地址下面链接中的资料有：电路原理图、立创EDA工程文件、PCB制板文件、程序源码、串口屏工程文件、芯片手册。123云盘下载地址：https://www.123pan.com/s/2Y9Djv-ZNevH.html百度网盘下载地址：https://url.zeruns.com/XP241 提取码：i9bl元件购买地址HT32F52352开发板：https://s.click.taobao.com/XmpTGptHT32F52352单片机芯片：https://s.click.taobao.com/sG9xeotINA199A1芯片：https://s.click.taobao.com/XLuweot0805贴片电阻样品本：https://s.click.taobao.com/p8YSGpt0805贴片电容样品本：https://u.jd.com/9uvZoBdXL6007E1芯片：https://s.click.taobao.com/14Oueot串口屏：https://s.click.taobao.com/pyzleot建议在立创商城里购买元器件：https://activity.szlcsc.com/invite/D03E5B9CEAAE70A4.html原理图功率板电源板控制板PCB功率板顶层内层1底层还有个GND层就不截了电源板顶层底层控制板顶层底层主要代码main.c文件#include "ht32.h" #include "GPIO.h" #include "BFTM0.h" #include "GPTM0.h" #include "GPTM1.h" #include "MCTM0.h" #include "delay.h" #include "OLED.h" #include "WDT.h" #include "ADC.h" #include "USART.h" #include "string.h" #define KEY1 GPIO_ReadInBit(HT_GPIOA, GPIO_PIN_10) // 定义按键状态的枚举变量类型 typedef enum { KS_RELEASE = 0, // 按键松开 KS_SHAKE, // 按键抖动 KS_PRESS, // 稳定按下 } KEY_STATUS; // 当前循…

基于STM32G4的0.96寸OLED显示屏驱动程序（HAL库），支持硬件/软件I2C
type: item
date: 2024-03-17T03:27:50+08:00
description: AI摘要 介绍了一款基于STM32G4的0.96寸OLED显示屏驱动程序，支持硬件/软件I2C，使用HAL库开发。该驱动功能丰富，支持多种内容显示与图形绘制，适用于英文、汉字、图像等展示，并提供了详细的配置与使用说明。 此内容根据文章生成，仅用于文章内容的解释与总结 基于STM32G474的0.96寸OLED(SSD1306)显示屏驱动程序（4针脚I2C接口），支持硬件IIC/软件IIC，HAL库版。这款驱动程序比较完善，可以实现 英文、整数、浮点数、汉字、图像、二进制数、十六进制数 等内容显示，可以画点、直线、矩形、圆、椭圆、三角形等，支持多种字体，差不多相当于一个简易版图形库了。该程序是基于江协科技的代码二次修改的，原版程序是基于STM32F103的，且只支持软件I2C，我修改后支持硬件I2C，也可以修改宏定义改成使用软件I2C。测试硬件为NUCLEO-G474RE开发板关于OLED的驱动原理，以及驱动程序的使用教程可以看江协科技的视频：https://url.zeruns.com/L7j6ySTM32使用硬件I2C读取SHTC3温湿度传感器：https://blog.zeruns.com/archives/692.html移植好U8g2图形库的STM32F407标准库工程模板：https://blog.zeruns.com/archives/722.html基于STM32F1的0.96寸OLED显示屏驱动程序，支持硬件/软件I2C：https://blog.zeruns.com/archives/769.html电子/单片机技术交流群：2169025065效果图I2C协议简介I2C 通讯协议(Inter－Integrated Circuit)是由 Phiilps 公司开发的，由于它引脚少，硬件实现简单，可扩展性强，不需要 USART、CAN 等通讯协议的外部收发设备（那些电平转化芯片），现在被广泛地使用在系统内多个集成电路(IC)间的通讯。I2C只有一跟数据总线 SDA(Serial Data Line)，串行数据总线，只能一位一位的发送数据，属于串行通信，采用半双工通信。半双工通信：可以实现双向的通信，但不能在两个方向上同时进行，必须轮流交替进行，其实也可以理解成一种可以切换方向的单工通信，同一时刻必须只能一个方向传输，只需一根数据线。对于I2C通讯协议把它分为物理层和协议层物理层规定通讯系统中具有机械、电子功能部分的特性（硬件部分），确保原始数据在物理媒体的传输。协议层主要规定通讯逻辑，统一收发双方的数据打包、解包标准（软件层面）。I2C物理层I2C 通讯设备之间的常用连接方式(1) 它是一个支持多设备的总线。“总线”指多个设备共用的信号线。在一个 I2C 通讯总线中，可连接多个 I2C 通讯设备，支持多个通讯主机及多个通讯从机。(2) 一个 I2C 总线只使用两条总线线路，一条双向串行数据线SDA（Serial Data Line ），一条串行时钟线SCL（Serial Clock Line ）。数据线即用来表示数据，时钟线用于数据收发同步(3) 总线通过上拉电阻接到电源。当 I2C 设备空闲时会输出高阻态，而当所有设备都空闲，都输出高阻态时，由上拉电阻把总线拉成高电平。I2C通信时单片机GPIO口必须设置为开漏输出，否则可能会造成短路。关于更多STM32的I2C相关信息和使用方法可以看这篇文章：https://url.zeruns.com/JC0Ah还有江协科技的STM32入门教程：https://www.bilibili.com/video/BV1th411z7sn?p=31我这里就不详细讲解了。使用说明默认是使用硬件IIC的，用的I2C3，SCL是PA8，SDA是PC9。硬件I2CSTM32CubeMX配置，找到你要用的I2C外设的引脚，并设置引脚功能为SCL和SDA，如下图所示是I2C3的SCL。接着配置I2C外设，启用对应的I2C外设，速度模式设置为 Fast Mode Plus，速度改成 1000，其他默认就行。配置GPIO，上面设置完后会自动把那两个引脚配置为复用开漏输出模式，接着只需要把IO输出速度改成 Very High ，还有GPIO标签(User Label)定义分别改成I2C3_SCL和I2C3_SDA就行，如果是用的别的I2C也可以设置成别的值，代码对应处要修改一下。改完后点击生成代码。OLED.c文件里，将 #define OLED_USE_SW_I2C 注释掉，将 #define OLED_USE_HW_I2C 取消注释，如果你用的是别的引脚作为I2C引脚，并且定义了别的名字那就将代码里的 I2C3_SCL 和 I2C3_SDA 也改一下。软件I2CSTM32CubeMX配置，设置两个…

做了个三相电量采集器开源出来，可以方便监测家里用电情况
type: item
date: 2024-02-27T18:34:00+08:00
description: AI摘要 开源三相电量采集器，使用pzem004t传感器和ESP32-C3，数据上传至HomeAssistant，可监测电流、电压、功率等参数。注意强电操作安全。 此内容根据文章生成，仅用于文章内容的解释与总结 做了个三相电能采集器，可以测3相的电流、电压、功率、功率因数、用电量，数据上传到HomeAssistant，方便观察家里用电量和实时用电功率。使用3个pzem004t电参数传感器测量，通过串口与ESP32-C3通信，然后通过WiFi上传至HomeAssistant（需自行搭建，我用树莓派4搭建的），ESP32-C3是用ESPHome开发的固件。该模块只能测每相与零线之间的电压，不能测线电压（相与相之间的电压）。电压测量范围是80-260V，电流量程100A，测量精度0.5%。需要自己通过上位机软件将3个Pzem004T的地址分别设置为0x01、0x02、0x03。涉及强电，安装需小心，必须断电操作！HomeAssistant+ESPHome搭建使用教程自行百度。电子/单片机技术交流群：2169025065硬件图片效果图原理图PCB3D外壳资料下载立创开源链接：https://oshwhub.com/zeruns/san-xiang-dian-liang-dian-can-shu-shu-ju-cai-ji-san-xiang-dian-ya-dian-liu-gong-lv-gong-lv-yin-shu-yong-dian-liang123云盘（不限速）：https://url.zeruns.com/PbpP8 提取码:jjRr百度网盘：https://pan.baidu.com/s/1XCi1AY6M1G0weNuuVJu01w?pwd=qhrc 提取码: qhrc包含的文件有：外壳3D模型、三相电量采集器_Gerber制板文件、立创EDA工程文件、PZEM-004T模块手册、PZEM-004T模块上位机软件、ESPHome的配置文件。用到的元件购买地址合宙CORE-ESP32C3开发板：https://s.click.taobao.com/GsKSHxtPZEM-004T模块：https://s.click.taobao.com/cnHOHxtHLK-10M05电源模块：https://s.click.taobao.com/quMNHxt0805电阻电容本：https://u.jd.com/fqAElBDAHT10：https://s.click.taobao.com/WuhMHxt推荐在立创商城购买：https://activity.szlcsc.com/invite/D03E5B9CEAAE70A4.htmlESPHome配置文件#include "esphome.h" #include "esphome/time/real_time_clock.h" #include "esphome/sntp/sntp_component.h" #include "esphome/core/time.h" # 定义项目的名称和友好名称 esphome: name: powerbox friendly_name: PowerBox # 指定使用的开发板和开发框架 platformio_options: board_build.flash_mode: dio board_build.mcu: esp32c3 esp32: board: esp32-c3-devkitm-1 framework: #type: esp-idf type: arduino # 启用日志记录 logger: #hardware_uart: USB_SERIAL_JTAG #level: DEBUG # defaults to DEBUG, NONE ERROR WARN INFO DEBUG VERBOSE VERY_VERBOSE # 启用Home Assistant API，并设置加密密钥 api: encryption: key: "wZG666DZ5zsg6666Po6204w666kA+8u666soeGlKtBU=" # 请替换为您的密钥 # 启用OTA更新，并设置密码 ota: password: "c368c9c66658f3433f6226667d4d2232" # 请替换为您的密钥 network: enable_ipv6: true wifi: ssid: "blog.zeruns.com" # WiFi网络名称 password: "123456789" # WiFi密码 reboot_timeout: 60s # 如果连接失败，设置重启超时时间为60秒 # 启用AP热点模式作为WiFi连接的备用方案 ap: ssid: "…

基于STM32F1的0.96寸OLED显示屏驱动程序，支持硬件/软件I2C
type: item
date: 2024-02-26T00:17:00+08:00
description: AI摘要 介绍了基于STM32F1的0.96寸OLED显示屏驱动程序，支持硬件/软件I2C，可显示多种内容并绘图。 此内容根据文章生成，仅用于文章内容的解释与总结 基于STM32F103的0.96寸OLED显示屏驱动程序（4针脚I2C接口），支持硬件IIC/软件IIC。这款驱动程序比较完善，可以实现 英文、整数、浮点数、汉字、图像、二进制数、十六进制数 等内容显示，可以画点、直线、矩形、圆、椭圆、三角形等，支持多种字体，差不多相当于一个简易版图形库了。该程序是基于江协科技的代码二次修改的，原版程序只支持软件I2C，我修改后支持硬件I2C，也可以修改宏定义改成使用软件I2C。程序是使用ST标准库写的。测试硬件为STM32F103C8T6和AIR32F103CBT6，在这两款单片机上都测试过能跑，其中使用硬件I2C时STM32通信速率最高可以跑到1.3Mbit/s，AIR32最高只能跑600kbit/s。关于OLED的驱动原理，以及驱动程序的使用教程可以看江协科技的视频：https://url.zeruns.com/L7j6ySTM32使用硬件I2C读取SHTC3温湿度传感器：https://blog.zeruns.com/archives/692.html移植好U8g2图形库的STM32F407标准库工程模板：https://blog.zeruns.com/archives/722.html电子/单片机技术交流群：2169025065效果图I2C协议简介I2C 通讯协议(Inter－Integrated Circuit)是由 Phiilps 公司开发的，由于它引脚少，硬件实现简单，可扩展性强，不需要 USART、CAN 等通讯协议的外部收发设备（那些电平转化芯片），现在被广泛地使用在系统内多个集成电路(IC)间的通讯。I2C只有一跟数据总线 SDA(Serial Data Line)，串行数据总线，只能一位一位的发送数据，属于串行通信，采用半双工通信。半双工通信：可以实现双向的通信，但不能在两个方向上同时进行，必须轮流交替进行，其实也可以理解成一种可以切换方向的单工通信，同一时刻必须只能一个方向传输，只需一根数据线。对于I2C通讯协议把它分为物理层和协议层物理层规定通讯系统中具有机械、电子功能部分的特性（硬件部分），确保原始数据在物理媒体的传输。协议层主要规定通讯逻辑，统一收发双方的数据打包、解包标准（软件层面）。I2C物理层I2C 通讯设备之间的常用连接方式(1) 它是一个支持多设备的总线。“总线”指多个设备共用的信号线。在一个 I2C 通讯总线中，可连接多个 I2C 通讯设备，支持多个通讯主机及多个通讯从机。(2) 一个 I2C 总线只使用两条总线线路，一条双向串行数据线SDA（Serial Data Line ），一条串行时钟线SCL（Serial Clock Line ）。数据线即用来表示数据，时钟线用于数据收发同步(3) 总线通过上拉电阻接到电源。当 I2C 设备空闲时会输出高阻态，而当所有设备都空闲，都输出高阻态时，由上拉电阻把总线拉成高电平。I2C通信时单片机GPIO口必须设置为开漏输出，否则可能会造成短路。关于更多STM32的I2C相关信息和使用方法可以看这篇文章：https://url.zeruns.com/JC0Ah还有江协科技的STM32入门教程：https://www.bilibili.com/video/BV1th411z7sn?p=31我这里就不详细讲解了。需要用的元件STM32开发板入门套件：https://u.jd.com/fQS0YAeSTM32F103最小系统板：https://s.click.taobao.com/TsFFvwtOLED模块：https://s.click.taobao.com/EF0Evwt杜邦线：https://s.click.taobao.com/VMkDvwt面包板：https://s.click.taobao.com/bhg8TxtDAPLink（可代替ST-Link，带虚拟串口）：https://s.click.taobao.com/QVQ8Txt江协科技的STM32入门套件：https://s.click.taobao.com/NTn9Txt程序完整工程下载地址：百度网盘：https://url.zeruns.com/kSxoe 提取码: wgc3123网盘(不限速)：https://www.123pan.com/s/2Y9Djv-HGcvH.html 提取码:m7sp工程使用Keil5创建，用Vscode+EIDE开发，两个软件都可以打开此工程。工程文件全部使用UTF-8编码，如果打开显示乱码需要修改编辑器编码为UTF-8。main.c文件：#include …

沁恒CH32V307VCT6最小系统板开源
type: item
date: 2023-07-01T03:26:00+08:00
description: AI摘要 沁恒CH32V307最小系统板开源，含USB、Flash、电压基准，支持RISC-V架构和高性能外设，附原理图、代码及购买链接。 此内容根据文章生成，仅用于文章内容的解释与总结 沁恒CH32V307VCT6最小系统板，引出了所有IO口，一个Type-C连接到USB2.0全速OTG接口，一个Flash芯片 型号W25Q64 容量64Mbit 连接到SPI2接口，板上还有TL432电压基准1.25V(实测1.246V左右)可通过跳线连接到PC3的AD13，还有3.29V基准通过0欧电阻可连接到ADC参考电压VREF。画了个 MSP430F149的最小系统板 开源出来了：https://blog.zeruns.com/archives/713.htmlSTM32F030C8T6最小系统板和流水灯（原理图和PCB）：https://blog.zeruns.com/archives/715.html电子/单片机技术交流群：2169025065CH32V307VCT6简介CH32V 系列是基于青稞 32 位 RISC-V 设计的工业级通用微控制器。全系产品加入硬件堆栈区、快速中断入口等设计，相比标准大大提高了中断响应速度。CH32V303_305_307 系列搭载 V4F 内核，支持单精度浮点指令集，具有更高的运算性能。在产品功能上支持 144MHz 主频零等待运行，并根据不同应用方向提供了具有特色的资源结构，例如 8 组 USART/UART 串口，4 组电机定时器，内置 PHY 收发器的USB2.0 高速接口（480Mbps），千兆以太网 MAC 等。沁恒官网产品简介：https://url.zeruns.com/Hcd8p样品免费申请地址（运费到付）：https://url.zeruns.com/x67TF芯片数据手册下载地址：https://url.zeruns.com/hDzqw 提取码：cn7c实物图原理图图中的Type-C接口有点问题，CC1和CC2要用5.1K电阻分别下拉，我并联下拉了会导致使用Emark线时不能正常供电，立创开源平台上的项目已修正。PCB顶层：TL432的1.25V（实测1.246V左右）电压基准可通过H8插跳线帽接到GPIOPC3的ADC13接口。SW3是控制BOOT0和1自举引脚的，可以设置自举模式（具体看芯片手册2.5.2的 片上存储器及自举模式），都打到低电平（关闭）就行。H9排针时用于接WCH-Link烧录代码用的。H5排针是用于选择VBAT引脚的电源，如果没插电池就通过跳线帽接到3.3V电源，如果插了电池可接到BAT。底层：如果不需要外接VDDA电源和VREF要将底面的R11和R7接上0欧电阻，然后VREF+可以通过R8和R9选择接LDO降压出来的3.3V电源或者TL432输出的3.29V参考电压，正常接R9即可 另一个空着。元件购买地址0805电阻样品本：https://u.jd.com/DzK9k0O0805电容样品本：https://s.click.taobao.com/cTZzzDuCH32V307VCT6：https://s.click.taobao.com/5SjzzDuW25Q64JV：https://s.click.taobao.com/YAv6NEuTL432：https://s.click.taobao.com/t3AzzDuWCH-Link：https://s.click.taobao.com/m6KyzDu排针：https://u.jd.com/DbKUBDu元器件购买推荐立创商城，优惠注册链接：https://activity.szlcsc.com/invite/D03E5B9CEAAE70A4.html板上所有元器件都可以在立创商城买到，在开源链接里的BOM表那点立即到立创商城下单可将用到的元器件一键导入到购物车。例程代码完整工程下载地址：https://url.zeruns.com/2q4tX 提取码：9527立创开源平台开源链接：https://url.zeruns.com/Avda8例程用了 Harmony LiteOS-M 系统，例程中建了3个任务，分别是：LED2间隔500ms闪一下，LED3间隔1秒闪一下，LED4间隔2秒闪一次。（上面的动图速度加快了1.5倍）工程要用MounRiver Studio软件打开。main.c的代码：/* * Copyright (c) 2013-2019 Huawei Technologies Co., Ltd. All rights reserved. * Copyright (c) 2020-2021 Huawei Device Co., Ltd. All rights reserved. * * Redis…

2011年全国电赛题-开关电源模块并联供电系统
type: item
date: 2023-05-29T20:58:00+08:00
description: AI摘要 2011年全国电赛作品，利用主从均流法设计8V开关电源模块并联供电系统，效率超80%，电流分配精确。 此内容根据文章生成，仅用于文章内容的解释与总结 2011年全国电赛题-开关电源模块并联供电系统，两路XL4015芯片做DCDC模块输出8V，采用主从均流法，可实现多种比例精确分配电流，效率在80%以上。电子/单片机技术交流群：2169025065题目设计并制作一个由两个额定输出功率均为 16W 的 8V DC/DC 模块构成的并联供电系统简介本作品采用主从均流法，由恒流源（从）、恒压源（主）、单片机控制板和辅助电源等模块组成。在恒流源和恒压源模块上使用XL4015作为DCDC电源芯片，依靠它来实现buck降压，同时采用合宙AIR32F103CCT6单片机作为控制核心，INA199电流采样芯片进行50倍放大采集电流信号。对采集的两路信号叠加在同相加法器上，同相加法器的输出由固定电阻和数字电位器来分压后输出给电压跟随器再经过LM358比较器反馈到XL4015芯片的FB脚来控制从模块电流（恒流源）实现分配电流。注意：首次使用需要先断开并联输出的跳线帽，并将恒压源（主）输出电压调到8V，恒流源（从）输出电压调到比恒压源高0.3到0.5V。校内电赛选拔赛作品，请各位大佬指点一下。立创开源链接：https://url.zeruns.com/GrMC6实物图资料下载程序源码：https://url.zeruns.com/nSNjc 提取码：swoz各芯片数据手册：https://url.zeruns.com/TBn42 提取码：j542测试数据1）供电系统直流输出电压及效率测试测试方法：调节负载电阻至I0为4A左右，记录U0、UIN、I0、IIN。Uin(V)Iin(A)U0(V)I0(A)效率24.051.577.763.9781.6%结论：输出电压7.76V 系统效率81.6%2）I0=1A, I0=1.5A模块输出电流相对误差测试测试方法：调节负载电阻至I0为1A或1.5A左右，记录U0、UIN、I1、I2、I0、IIN。I0=1A时测试结果：Uin(V)Iin(A)U0(V)I1(A)I2(A)I0(A)误差1误差224.080.4547.9990.5010.5261.0322.9%1.9%I0=1.5A时测试结果：UIN(V)IIN(A)U0(V)I1(A)I2(A)I0(A)误差1误差224.060.6357.9690.4981.0521.5231.9%3.6%结论：相对误差不超过3.6%,优于要求的误差<5%指标。3）1.5A<IO<3.5A模块输出电流相对误差测试测试方法：选定电流为1.5A，选定比例1:1，1:2，2:1，2:3，3:2分别测试，调节负载电阻至I0为1.5A左右，并记录U0、UIN、I1、I2、I0、IIN。比例UIN(V)IIN(A)U0(V)I1(A)I2(A)I0(A)误差1误差21:124.060.6287.9520.7780.7441.5222%2%1:224.060.637.9720.5001.0251.5221.4%1.1%2:124.050.6277.9311.0150.5091.5240.01%0.2%2:324.070.6297.9630.6040.9201.5220.7%0.7%3:224.060.6267.9230.9260.5951.5241.25%2%结论：选定电流为1.5A时，相对误差不超过2%,满足题目指标。4）I0=4A模块输出电流相对误差测试测试方法：调节负载电阻I0为4A左右，并记录U0、UIN、I1、I2、I0、IIN。UIN(V)IIN(A)U0(V)I1(A)I2(A)I0(A)误差1误差224.041.5687.731.961.9453.9681.2%1.9%结论：选定电流为4A时，相对误差不超过2%,满足题目指标。元件购买地址0805电阻样品本：https://s.click.taobao.com/oWjIgGu0805电容样品本：https://s.click.taobao.com/r9ea1HuXL4015芯片：https://s.click.taobao.com/HBT3XGu电解电容：https://s.click.taobao.com/r6CWQGu可调电阻：https://s.click.taobao.com/eTaBmGu元器件购买推荐立创商城，优惠注册链接：https://activity.szlcsc.com/invite/D03E5B9CEAAE70A4.html原理图电源板：控制板：PCB电源板：控制板：其他开源项目推荐画了个 MSP430F149的最小系统板 开源出来了：https://blog.zeruns.com/arch…

STM32F030C8T6最小系统板和流水灯（原理图和PCB）
type: item
date: 2023-05-21T17:53:00+08:00
description: AI摘要 介绍了基于STM32F030C8T6的最小系统板设计与流水灯实现，开源了原理图和PCB文件，并提供了元件购买链接及例程下载。 此内容根据文章生成，仅用于文章内容的解释与总结 STM32F030C8T6最小系统板和流水灯。嵌入式课的课程设计，要做个流水灯，我就顺便画个最小系统板，开源出来了，各位大佬指点指点，有哪里需要优化改进的。那个WS2812的RGB灯用错引脚了，所以没法用PWM来控制，画的时候没考虑到，要用到可以自己换一下IO脚。画了个 MSP430F149的最小系统板 开源出来了：https://blog.zeruns.com/archives/713.html电子/单片机技术交流群：2169025065效果图资源下载例程下载地址：https://url.zeruns.com/5hTOd 提取码：ame9PCB制板文件（Gerber）下载：https://pan.baidu.com/s/1KVE2wBR3KYPoqVpxH1r4lA?pwd=hyk4 提取码：hyk4开源链接：https://oshwhub.com/zeruns/stm32f030-zui-xiao-xi-tong-he-liu-shui-deng/CubeMX配置图元件购买地址STM32F030C8T6：https://s.click.taobao.com/Hquc1HuAMS1117-3.3：https://s.click.taobao.com/4TfJgGuST-Link v2：https://s.click.taobao.com/e1Ac1Hu0805电阻样品本：https://s.click.taobao.com/oWjIgGu0805电容样品本：https://s.click.taobao.com/r9ea1Hu元器件购买推荐立创商城，优惠注册链接：https://activity.szlcsc.com/invite/D03E5B9CEAAE70A4.html原理图PCB推荐阅读高性价比和便宜的VPS/云服务器推荐: https://blog.vpszj.cn/archives/41.html怎样搭建个人博客：https://blog.zeruns.com/archives/218.html我的世界服务器搭建教程：https://blog.zeruns.com/tag/mc/STM32读取SHT3x系列温湿度传感器：https://blog.zeruns.com/archives/700.html使用VSCode代替Keil实现STM32和51单片机的开发：https://blog.zeruns.com/archives/690.html