STM32+LTC6804/LTC6811采集电压温度电流/BMS储能采集板

有LTC6804、LTC6811版本,可选SPI\菊花链通信)
BMS闲置开发板 凌力尔特LTC6804/6811开发板BMS电池管理评估板,采集板,BMS开发板 12串送源码+BOM+原理图+源码解析

参考凌力尔特官方采集板(官方DC2259A价格1600元),实测采集正常,包含原理图、BOM表、调试过程,可直接嘉立创打样,可在嘉立创直接贴片,包含嘉立创可贴元器件BOM表;

提供技术支持,楼主是搞技术的所以互相学习互相进步
功能:SPI/菊花链通信
1、电压采集功能(精度1.2mv以内)
2、GPIO1~5电压采集功能
3、辅助测量功能
4、断线自检功能
5、电流采集功能(高精度双向电流采集芯片,软件集成卡尔曼滤波,中值滤波等滤波算法)
6、IIC(GPIO4-GPIO5)通信功能(可读写EEPROM----24C02)
7、被动均衡功能(设置压差阈值并找出最高电压开启均衡)
8、温度采集功能
9、有上位机,显示检测的数据(有通信协议说明);
10、12串主动均衡也已经实现,采用外部主动均衡方案,正在集成到一块PCBA中。

 

 

 

LTC2990是一款精密电流/电压/温度测量芯片,可通过I2C接口与STM32微控制器通信。以下是在STM32上使用LTC2990进行温度测量的步骤: 1.连接LTC2990到STM32的I2C总线。将LTC2990的SDA和SCL引脚连接到STM32的相应引脚,并将LTC2990的地址引脚连接到地或VCC,以确定其I2C地址。 2.初始化STM32的I2C接口。使用STM32的HAL库或其他I2C库初始化I2C接口,并设置LTC2990的I2C地址和通信速率。 3.配置LTC2990的寄存器。使用I2C接口向LTC2990发送命令和数据,以配置其寄存器。在本例中,需要将LTC2990设置为温度测量模式,并选择所需的分辨率和参考电压。 4.读取LTC2990的温度数据。使用I2C接口从LTC2990读取温度数据,并将其转换为实际温度值。LTC2990的温度数据是一个16位的有符号整数,需要进行符号扩展和单位转换。 5.显示温度数据。将实际温度值显示在STM32的LCD屏幕上或通过串口发送到计算机上。 以下是使用STM32 HAL库进行LTC2990温度测量的示例代码: ``` #include "stm32f4xx_hal.h" #define LTC2990_ADDR 0x4E // LTC2990的I2C地址 I2C_HandleTypeDef hi2c1; // I2C接口句柄 void LTC2990_Init(void) { uint8_t config[4]; // 配置LTC2990的寄存器 config[0] = 0x8F; // 写配置寄存器命令 config[1] = 0x6C; // 温度测量模式,16位分辨率 config[2] = 0x80; // 内部参考电压 config[3] = 0x03; // 采样速率为64Hz HAL_I2C_Master_Transmit(&hi2c1, LTC2990_ADDR, config, 4, 1000); // 发送配置命令 } int16_t LTC2990_Read_Temperature(void) { uint8_t data[2]; int16_t raw_temp; float temp; // 读取LTC2990的温度数据 HAL_I2C_Mem_Read(&hi2c1, LTC2990_ADDR, 0x02, 1, data, 2, 1000); // 将温度数据转换为实际温度值 raw_temp = (data[0] << 8) | data[1]; if (raw_temp & 0x8000) // 符号扩展 raw_temp |= 0xFFFF0000; temp = (float)raw_temp * 0.0625; // 单位转换 return (int16_t)temp; } int main(void) { HAL_Init(); __HAL_RCC_GPIOA_CLK_ENABLE(); __HAL_RCC_I2C1_CLK_ENABLE(); GPIO_InitTypeDef GPIO_InitStruct; GPIO_InitStruct.Pin = GPIO_PIN_9 | GPIO_PIN_10; GPIO_InitStruct.Mode = GPIO_MODE_AF_OD; GPIO_InitStruct.Pull = GPIO_PULLUP; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH; GPIO_InitStruct.Alternate = GPIO_AF4_I2C1; HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); hi2c1.Instance = I2C1; hi2c1.Init.ClockSpeed = 400000; hi2c1.Init.DutyCycle = I2C_DUTYCYCLE_2; hi2c1.Init.OwnAddress1 = 0; hi2c1.Init.AddressingMode = I2C_ADDRESSINGMODE_7BIT; hi2c1.Init.DualAddressMode = I2C_DUALADDRESS_DISABLE; hi2c1.Init.OwnAddress2 = 0; hi2c1.Init.GeneralCallMode = I2C_GENERALCALL_DISABLE; hi2c1.Init.NoStretchMode = I2C_NOSTRETCH_DISABLE; HAL_I2C_Init(&hi2c1); LTC2990_Init(); // 初始化LTC2990 while (1) { int16_t temp = LTC2990_Read_Temperature(); // 读取温度数据 printf("Temperature = %d C\r\n", temp); // 显示温度数据 HAL_Delay(1000); } } ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值