当前位置: 首页 > wzjs >正文

做网站销售需要注意的老外做的中国方言网站

做网站销售需要注意的,老外做的中国方言网站,网站底部备案,四平做网站系统总体框图 功率检测装置原理图功能及模块连接说明 一、系统功能概述 该装置以STM32F103C8T6微控制器为核心,集成功率检测、数据交互、状态显示和用户提示功能,通过模块化设计实现稳定运行。 二、各模块功能及连接方式 按键模块 功能&#xff1a…

 

 

系统总体框图

功率检测装置原理图功能及模块连接说明

一、系统功能概述

该装置以STM32F103C8T6微控制器为核心,集成功率检测、数据交互、状态显示和用户提示功能,通过模块化设计实现稳定运行。

二、各模块功能及连接方式

  1. 按键模块

功能:用户交互控制(启动/停止设备)。

连接方式:

按键SW1一端接地(GND),另一端通过电阻R5连接至微控制器GPIO引脚PA0。

按键按下时触发PA0电平变化,触发中断或状态读取。

  1. LED指示灯模块

功能:显示设备状态(如运行、告警)。

连接方式:

LED1(R6)和LED2(R7)分别连接至微控制器GPIO引脚PB0和PB1。

GPIO输出高电平时LED点亮,低电平时熄灭。

  1. 微控制器(STM32F103C8T6)

功能:系统控制核心,处理数据、控制外设、驱动显示。

连接方式:

通信接口:

USART1_TX/RX引脚连接调试接口(J4),支持程序烧录和调试。

I2C接口(SCL/SDA)连接OLED屏幕。

控制引脚:

GPIO引脚控制LED、蜂鸣器、按键等外设。

  1. OLED屏幕模块

功能:显示功率检测结果及系统信息。

连接方式:

I2C接口(SCL/SDA)与微控制器相连。

电源由3.3V降压电路供电,接地至GND。

  1. INA226电压电流检测模块

功能:检测电压电流以及功率。

连接方式:

I2C接口(SCL/SDA)与微控制器相连。

电源由3.3V降压电路供电,接地至GND。

  1. 复位电路模块

功能:强制复位微控制器。

连接方式:

复位按钮SW5通过电阻R11连接至NRST引脚,电容C1用于滤波。

  1. 晶振电路模块

功能:提供稳定时钟信号(8MHz主频)。

连接方式:

晶振X1连接至OSC_IN/OSC_OUT引脚,电容C5/C6接地。

  1. 蜂鸣器驱动模块

功能:声音提示(如异常报警)。

连接方式:

蜂鸣器BUZZER2通过三极管Q3和电阻R79/R80连接至微控制器GPIO(BUZZER_PIN)。

GPIO高电平时三极管导通,蜂鸣器发声。

  1. 输入输出接口模块

功能:输入接口用于采集电压电流参数,输出接口接后级用电设备。

连接方式:

通过J2/J3连接器提供VIN+/VIN-/GND等接口。

调试接口模块

功能:程序烧录与调试(SWD或UART)。

连接方式:

J4接口提供USART1_TX/RX/GND信号。

  1. 3.3V降压电路模块

功能:将5V转换为3.3V,为系统供电。

连接方式:

LDO稳压器MEB211输入5V,输出3.3V,电容C3/C4滤波。

三、系统运行逻辑

微控制器通过按键检测用户输入,启动功率检测。

检测数据通过输入接口采集,处理后通过OLED显示。

异常情况触发蜂鸣器报警,LED状态指示同步反馈。

3.3V降压电路为所有模块提供稳定电源,晶振电路确保时序精度。
 


/*** @file INA226.c* @brief INA226电流/功率监测芯片的驱动程序* 使用硬件I2C2接口与INA226通信*/#include "ina226.h"
#include "i2c.h"/*** @brief INA226 I2C初始化* @note 使用Core/Src/i2c.c中已初始化的hi2c1,无需重复初始化*/
void INA226_IIC_Init(void)
{// 使用项目中已初始化的hi2c1
}/*** @brief 初始化INA226芯片* 配置芯片工作模式和校准值*/
void INA226_Init(void)
{INA226_IIC_Init();HAL_Delay(10); // 等待芯片上电稳定// 配置寄存器: 64次平均值,全功能,连续模式INA226_SendData(WRITE_ADDR, Config_Reg, 0x4727);// 校准寄存器: 当单位为mA时,0.002R=0xA00;0.01R=0x200 (最大8A)INA226_SendData(WRITE_ADDR, Calib_Reg, 0x200);
}/*** @brief 向INA226写入数据* @param addr 器件地址(7位)* @param reg 寄存器地址* @param data 要写入的16位数据*/
void INA226_SendData(uint8_t addr, uint8_t reg, uint16_t data)
{uint8_t buf[2] = {(uint8_t)(data >> 8), (uint8_t)(data & 0xFF)};HAL_I2C_Mem_Write(&hi2c1, addr, reg, I2C_MEMADD_SIZE_8BIT, buf, 2, HAL_MAX_DELAY);
}/*** @brief 设置INA226的寄存器指针* @param addr 器件地址(7位)* @param reg 要设置的寄存器地址*/
void INA226_SetRegPointer(uint8_t addr, uint8_t reg)
{HAL_I2C_Master_Transmit(&hi2c1, addr, &reg, 1, HAL_MAX_DELAY);
}/*** @brief 从INA226读取数据* @param addr 器件地址(7位)* @return 读取到的16位数据*/
uint16_t INA226_ReadData(uint8_t addr)
{uint8_t buf[2];HAL_I2C_Master_Receive(&hi2c1, addr | 0x01, buf, 2, HAL_MAX_DELAY);return (buf[0] << 8) | buf[1];
}/*** @brief 获取分流电流值* @param addr 器件地址(7位)* @return 分流电流值(原始数据)*/
uint16_t INA226_GetShuntCurrent(uint8_t addr)
{uint16_t temp = 0;INA226_SetRegPointer(addr, Current_Reg);temp = INA226_ReadData(addr);return temp;
}/*** @brief 获取器件ID* @param addr 器件地址(7位)* @return 器件ID(应为0x2260)*/
uint16_t INA226_Get_ID(uint8_t addr)
{uint16_t temp = 0;INA226_SetRegPointer(addr, ID_Reg);temp = INA226_ReadData(addr);return temp;
}/*** @brief 获取校准寄存器值* @param addr 器件地址(7位)* @return 校准寄存器当前值*/
uint16_t INA226_GET_CAL_REG(uint8_t addr)
{uint16_t temp = 0;INA226_SetRegPointer(addr, Calib_Reg);temp = INA226_ReadData(addr);return temp;
}/*** @brief 获取总线电压值* @param addr 器件地址(7位)* @return 总线电压值(1.25mV/bit)*/
uint16_t INA226_GetVoltage(uint8_t addr)
{uint16_t temp = 0;INA226_SetRegPointer(addr, Bus_V_Reg);temp = INA226_ReadData(addr);return temp;
}/*** @brief 获取分流电压值* @param addr 器件地址(7位)* @return 分流电压值(2.5uV/bit),已处理负数情况*/
uint16_t INA226_GetShuntVoltage(uint8_t addr)
{uint16_t temp = 0;INA226_SetRegPointer(addr, Shunt_V_Reg);temp = INA226_ReadData(addr);if (temp & 0x8000) // 处理负数情况temp = ~(temp - 1);return temp;
}/*** @brief 获取功率值* @param addr 器件地址(7位)* @return 功率值(2.5mW/bit)*/
uint16_t INA226_Get_Power(uint8_t addr)
{uint16_t temp = 0;INA226_SetRegPointer(addr, Power_Reg);temp = INA226_ReadData(addr);return temp;
}
#include "ocv.h"
#include "ina226.h"INA226 CC, OCV; // 定义CC(充电电流)和OCV(开路电压)监测结构体/*** @brief INA226应用示例* 使用步骤:* 1. 调用INA226_Init()初始化INA226芯片* 2. 定期调用Get_Vol()、Get_Cur()、Get_Pow()获取测量值* 3. 从CC结构体读取测量结果*/extern INA226 CC, OCV;
uint8_t CC_MODE[] = "CC MODE";
uint8_t Vol[] = "Voltage:";
uint8_t Cur[] = "Current:";
uint8_t Power[] = "Power:";/*** @brief 测试USB CC模式函数** 在OLED屏幕上显示电压、电流和功率值。** @return 无返回值*/
void USB_CC_TESTER(void)
{OLED_Printf(0, 0, OLED_8X16, "电压电流功率仪");OLED_ShowString(0, 16, (char *)Vol, OLED_8X16);OLED_ShowString(0, 32, (char *)Cur, OLED_8X16);OLED_ShowString(0, 48, (char *)Power, OLED_8X16);OLED_Update();
}/*** @brief 显示电压电流功率仪信息** 在OLED显示屏上显示电压、电流和功率信息,并通过串口输出相同的信息。** @return 无*/
void Show_CC(void)
{OLED_Clear();OLED_Printf(0, 0, OLED_8X16, "电压电流功率仪");OLED_Printf(0, 16, OLED_8X16, "Voltage:%.2f", ((float)CC.voltage_V + ((float)CC.voltage_mV / 100)) * 500);OLED_Printf(0, 32, OLED_8X16, "Current:%.2f", (float)CC.current_A + ((float)CC.current_mA / 1000));OLED_Printf(0, 48, OLED_8X16, "Power:%.2f", ((float)CC.power_W + ((float)CC.power_mW / 100)) * 500);OLED_Update();Serial_Printf_huart2("Voltage:%.2f,Current:%.2f,Power:%.2f\r\n", ((float)CC.voltage_V + ((float)CC.voltage_mV / 100)) * 500, (float)CC.current_A + ((float)CC.current_mA / 1000), ((float)CC.power_W + ((float)CC.power_mW / 100)) * 500);
}/* 示例1: 完整测量流程 */
void Example_MeasureAll(void)
{// 1. 初始化INA226INA226_Init();// 2. 进行测量Get_Vol(); // 获取电压Get_Cur(); // 获取电流Get_Pow(); // 获取功率// 3. 使用测量结果// CC.voltage_V  - 电压整数部分(V)// CC.voltage_mV - 电压小数部分(mV)// CC.current_A  - 电流整数部分(A)// CC.current_mA - 电流小数部分(mA)// CC.power_W    - 功率整数部分(W)// CC.power_mW   - 功率小数部分(mW)
}/* 示例2: 仅电压测量 */
float Example_GetVoltage(void)
{Get_Vol();return CC.voltage_V + (CC.voltage_mV / 1000.0f);
}/* 示例3: 电流方向检测 */
uint8_t Example_IsCharging(void)
{Get_Cur();return (CC.current_signed == 1); // 1表示充电,0表示放电
}/*** @brief 获取电压测量值* 将原始数据转换为实际电压值(V)*/
void Get_Vol(void)
{uint16_t Vol;Vol = INA226_GetVoltage(WRITE_ADDR) / 8; // 1.25mV/bit -> VCC.voltage_V = Vol / 100;				 // 整数部分(V)CC.voltage_mV = Vol % 100;				 // 小数部分(mV)
}/*** @brief 获取电流测量值* 自动检测电流方向(充电/放电)*/
void Get_Cur(void)
{uint16_t Cur;Cur = INA226_GetShuntCurrent(WRITE_ADDR);CC.current_signed = 1; // 默认充电状态if (Cur & 0x8000)	   // 检测电流方向{Cur = ~(Cur - 1);	   // 处理负电流值CC.current_signed = 0; // 设置为放电状态}CC.current_A = Cur / 1000;	// 整数部分(A)CC.current_mA = Cur % 1000; // 小数部分(mA)
}/*** @brief 获取功率测量值* 将原始数据转换为实际功率值(W)*/
void Get_Pow(void)
{uint16_t Pow;Pow = (INA226_Get_Power(WRITE_ADDR) * 5) / 2; // 2.5mW/bit -> WCC.power_W = Pow / 100;						  // 整数部分(W)CC.power_mW = Pow % 100;					  // 小数部分(mW)
}

单片机定制:


文章转载自:

http://3xiJ5crN.rqxhp.cn
http://9Q0VVEd8.rqxhp.cn
http://0pb3ru6X.rqxhp.cn
http://dHqra6Xz.rqxhp.cn
http://eTPG87gP.rqxhp.cn
http://ltyLqZI4.rqxhp.cn
http://zUCpn2Ng.rqxhp.cn
http://lbuxjtoF.rqxhp.cn
http://mpuF3URs.rqxhp.cn
http://MLf70CiG.rqxhp.cn
http://kpVcCUeQ.rqxhp.cn
http://jTJM331j.rqxhp.cn
http://JYoVyTb2.rqxhp.cn
http://2csuq6Rq.rqxhp.cn
http://XlHvutMP.rqxhp.cn
http://rIEXR49N.rqxhp.cn
http://ynaJJKgJ.rqxhp.cn
http://8gqwdC1d.rqxhp.cn
http://TU0cmoqg.rqxhp.cn
http://YwDbWLqv.rqxhp.cn
http://KDFGvHIU.rqxhp.cn
http://IMXYG1cI.rqxhp.cn
http://6Ap8fprQ.rqxhp.cn
http://fgHTXj9S.rqxhp.cn
http://IUm5Wcgd.rqxhp.cn
http://P6JjTscX.rqxhp.cn
http://eLDpf4WD.rqxhp.cn
http://y5beToFa.rqxhp.cn
http://Qi3ENcBU.rqxhp.cn
http://TEuRiU10.rqxhp.cn
http://www.dtcms.com/wzjs/624939.html

相关文章:

  • 在家做兼职哪个网站重庆seo排名软件
  • 管家婆免费仓库管理软件沈阳百度首页优化
  • 吉林建设集团网站网站首页优化的目的
  • 微信保修网站开发源代码谷歌手机版浏览器官网
  • 阿里域名购买网站名师工作室建设名师网站
  • iis网站开发教程投票网站怎么做
  • 短租网站开发韩国女足还能出线吗
  • 地方门户网站推广方案网络营销是什么样的
  • 网站建设需求参考文档不错的免费网站建设
  • 圣弘建设股份有限公司网站宁波房产信息网官方网站
  • 吴桥网站如何在网上推广农产品
  • 建设一个会员积分网站深圳网站设计公司在什么地方
  • 长春seo网站排名房产app开发公司
  • 网站当前位置怎么做h5制作网页
  • 网上引流推广有哪些软件seo网站推广软件
  • 三折页设计那个网站做的好泰安手机网站
  • 商城站地址小程序模板免费制作
  • 石家庄建设工程信息网站网页制作素材图片美食
  • 智能网站搭建wordpress打开刷新2次
  • 网站怎么没有排名公众号微信平台
  • 自己可以做百度网站吗临沂网站设计公司
  • 用ip地址做网站网站推广策划书的共同特点有哪些
  • 网络购物商城网站建设有哪些网站可以做全屏代码
  • 06627网页制作和网站建设试卷网络科技公司名字大全集
  • 为什么做这个网站反馈问题小狗做爰网站
  • 简述网站开发主要步骤河北网络推广系统
  • 宁波网站公司手机如何制作表格
  • 网站建设的主要产品企业网站群建设
  • 网站的分析与设计做网络销售都做什么网站
  • 佛山移动网站建设费用linux 国外网站