发作品签到
专业版

电压电流表检测

工程标签

723
0
0
0

简介

基于地文星的CW32F030C8T6的电压电流表检测

简介:基于地文星的CW32F030C8T6的电压电流表检测
电压电流表训练营【立创开发板&CW32】

开源协议

GPL 3.0

创建时间:2024-07-21 03:51:01更新时间:2024-08-20 03:09:34

描述

硬件设计部分

为了节省IO资源这里我采用SN74HC595移位寄存器来驱动LED,QA引脚是数据的输入即为 你想要显示的数据,SRCLR引脚则是移位寄存器将数据一位一位的移动进去,RCLK引脚则是锁存引脚将数据锁存起来,随后就是数码管动态刷新显示数据了。

这里的限流电阻R1,R2,R3可以不要,或者选个小一点的,50欧姆左右。

按键电路很简单,直接连接普通IO口引脚就可以了,因为CW32内部IO口有上下拉电阻所以外部我没有在画电阻,配置按键的时候直接使用内部上下拉电阻即可。

这是LED显示电路方便我调试使用的,注意要选择合适的限流电阻,一般经验值在1k-4.7k之间。

这是本次的主角采用立创帝文心开发板CW32F030C8T6,我自己画了一个封装和原理图库,内置1.5V,2.5V电压基准源,也可以使用外部电压基准,adc精确度在0.366mv,。

ARM® Cortex®-M0+ 32 位微控制器,64K 字节FLASH,8K 字节RAM,内有丰富的资源GPIO,II2C,SPI,USART,ADC等等具体请看它的数据手册。

这是一个USB转串口模块,方便调试用的,注意这里CC1要接上5.1k电阻,D+,D-一对差分信号线,要等长处理,CH340则USB转串口.

在规则里面设置差分对,然后等长调节

SHT40温湿度模块,这里SDA是数据线,SCL是时钟线,PCB走线要类差分,这里R18和R19选择要合适一般经验值有4.7k,10k。具体多少根据实际要求来。

这是电流采样模块,这里R14是采样电阻使用2512封装功率3w的,在pcb设计中要开尔文接线如图还有D4和R15是为了保护作用的,D4是稳压5V防止电压意外超过CW32IO的耐受电压,R15是限流电阻也是为了保护CW32IO口。

PCB3D图片

3D外壳

实物效果图

软件部分

温湿度

void SHT40_GetData(SHT40_t *sht40){
    SHT40_I2C_Start();
    SHT40_I2C_Write_Byte(SHT40_WRITE);
    SHT40_I2C_WaitAck();
    SHT40_I2C_Write_Byte(SHT40_Read_Mode);
    SHT40_I2C_WaitAck();
    SHT40_I2C_Stop();
    
    delay_ms(10);
    
    SHT40_I2C_Start();
    SHT40_I2C_Write_Byte(SHT40_READ);
    SHT40_I2C_WaitAck();
    for(uint8_t i = 0; i < 6; i++){
        sht40->read_data[i] = SHT40_I2C_Read_Byte();
        if(i == 5){
            SHT40_I2C_NoAck();
        }else{
            SHT40_I2C_Ack();
        }
    }
    SHT40_I2C_Stop();
    
    sht40->Temperature = (1.0*175*(sht40->read_data[0]*256 + sht40->read_data[1])) / 65535.0 - 45.0;
    sht40->Humidity    = (1.0*125*(sht40->read_data[3]*256 + sht40->read_data[4])) / 65535.0 - 6.0;
    sht40->Temp = (uint16_t)(sht40->Temperature*10);
    sht40->humi = (uint16_t)(sht40->Humidity*10);
}

这里我是用软件I2C自己写了一个协议,当发出地址之后一定要延时10ms芯片手册里面有说

读取协议倒是很简单发送地址和命令我这里选择重复测量,然后就是读取数据,最后根据公式

进行转换。

显示部分

OLED_ShowChinese(0,0,0,24,1);
OLED_ShowChinese(24,0,1,24,1);
sprintf((char *)OLED_Data,":%.1fC",sht40.Temperature);
OLED_ShowString(24*2,0,(uint8_t*)OLED_Data,24,1);
OLED_ShowChinese(0,24,3,24,1);
OLED_ShowChinese(24,24,4,24,1);
sprintf((char *)OLED_Data,":%.1fH",sht40.Humidity);
OLED_ShowString(24*2,24,(uint8_t*)OLED_Data,24,1);

汉字使用PCtoLCD2002进行取模,为了方便数据显示我这里使用sprintf和printf用法差不多

  1. 打开取模软件
  2. 汉字取模

2.1 点击模式,选择字符模式

2.2点击选项,进行设置

设置如下,点阵内的数字手动输入999,然后点击确定。

  1. 以生成16x16的汉字为例
  2. 3.1字宽,字高选择16

3.2在输入栏输入需要取模的汉字(只能是汉字),然后点击生成字模。

  1. 将生成的字模复制到h的数组中

电压电流

if( GetTick() >= (TimeInterval + 300)){
TimeInterval = GetTick(); 
Mean_Value_Filter(&ADC_Param,ADC_SAMPLE_SIZE);
Mean_Value_Filter(&Current_Param,ADC_SAMPLE_SIZE);
 
if(ADC_Param.filter_val >= ADC_Param.X_ADC[0]){
ADC_Param.adc_buf = (ADC_Param.Slope[0]*(ADC_Param.filter_val - ADC_Param.X_ADC[0]) + 5)*1000;
}else if(ADC_Param.filter_val >= ADC_Param.X_ADC[2] && ADC_Param.filter_val <= ADC_Param.X_ADC[0]){
ADC_Param.adc_buf = (ADC_Param.Slope[1]*(ADC_Param.filter_val - ADC_Param.X_ADC[2]) + 2.5)*1000;
}else{
ADC_Param.adc_buf = 2500/ADC_Param.X_ADC[2]*ADC_Param.filter_val;
}
if(ADC_Param.adc_buf % 10 >= 5){
ADC_Param.adc_buf = ADC_Param.adc_buf/10 + 1;
}else{
ADC_Param.adc_buf /= 10;
}
if(ADC_Param.adc_buf >= 1000){
ADC_Param.Seg_Num[0] = ADC_Param.adc_buf/1000;
ADC_Param.Seg_Num[1] = ADC_Param.adc_buf/100%10;
ADC_Param.Seg_Num[2] = ADC_Param.adc_buf/10%10;
}else{
ADC_Param.Seg_Num[0] = ADC_Param.adc_buf/100;
ADC_Param.Seg_Num[1] = ADC_Param.adc_buf/10%10;
ADC_Param.Seg_Num[2] = ADC_Param.adc_buf%10;
}
 
if(Current_Param.filter_val >= ADC_Param.X_ADC[3]){
Current_Param.adc_buf = (ADC_Param.Slope[2]*(Current_Param.filter_val - ADC_Param.X_ADC[3]) + 0.1)*1000;
}else{
Current_Param.adc_buf = 100/ADC_Param.X_ADC[3]*ADC_Param.filter_val;
}
Current_Param.Seg_Num[0] = Current_Param.adc_buf/100;
Current_Param.Seg_Num[1] = Current_Param.adc_buf/10%10;
Current_Param.Seg_Num[2] = Current_Param.adc_buf%10;
这个是电压电流显示部分和电压电流标定,需要将数据滤波处理,滤除最大和最小值,然后取平均。标定玩之后误差在0.01v左右。

 

 

 

 

 

设计图

未生成预览图,请在编辑器重新保存一次

BOM

暂无BOM

附件

序号文件名称下载次数
1
20f49ba4fd7151751838df0eed220849.mp4
8
2
08I_Cali.rar
23
3
Panel_电压电流表_2024-07-31.epanm
11
4
3DShell_PCB-电压电流表.zip
10
克隆工程
添加到专辑
0
0
分享
侵权投诉

评论

全部评论(1)
按时间排序|按热度排序
粉丝0|获赞0
相关工程
暂无相关工程

底部导航