站内搜索
发作品签到
专业版

usb-hub电压电流表

工程标签

1.0k
0
0
3

简介

立创地文星开发板制作的可显示电压电流的usb-hub。

简介:立创地文星开发板制作的可显示电压电流的usb-hub。
电压电流表训练营【立创开发板&CW32】

开源协议

GPL 3.0

创建时间:2024-07-17 21:54:10更新时间:2024-08-21 10:48:21

描述

1:项目说明

使用立创地文星开发板制作的usb-hub,可显示电压电流,统计功率,显示电流波形。

电压最大6.6V,电流最大3.3A。

2:电路

  1:usb输入

 

USB5为数据,USB6为外接电源。

 

2:

使用1.14寸屏幕,spi协议。

 

3:测电流

使用TP181A1-CR电流感应放大器,分流电阻为20mΩ,芯片参考电压为3.3V时,可测最大电流3.3A。

 

4:usb-hub

使用ch334p,usb2.0,一个LED 指示灯。

 

3:软件

  adc和dma的配置。

 

void adc_dma_config(void)
{
    DMA_InitTypeDef DMA_InitStruct = {0};
    __RCC_DMA_CLK_ENABLE();
    DMA_InitStruct.DMA_DstAddress = (uint32_t)ADC4_ResultBuff;   // 目标地址
    DMA_InitStruct.DMA_DstInc = DMA_DstAddress_Increase;            // 目标地址递增
    DMA_InitStruct.DMA_Mode = DMA_MODE_BLOCK;                       // BLOCK 传输模式
    DMA_InitStruct.DMA_SrcAddress = (uint32_t)&CW_ADC->RESULT0;     // 源地址: ADC 的结果寄存器
    DMA_InitStruct.DMA_SrcInc = DMA_SrcAddress_Fix;                 // 源地址固定
    DMA_InitStruct.DMA_TransferCnt = 0x6;                           // DMA 传输次数
    DMA_InitStruct.DMA_TransferWidth = DMA_TRANSFER_WIDTH_16BIT;    // 数据位宽 16bit
    DMA_InitStruct.HardTrigSource = DMA_HardTrig_ADC_TRANSCOMPLETE;//DMA_HardTrig_ADC_TRANSCOMPLETE; // ADC 转换完成硬触发
    DMA_InitStruct.TrigMode = DMA_HardTrig;                         // 硬触发模式
    DMA_Init(CW_DMACHANNEL1, &DMA_InitStruct);
    DMA_Cmd(CW_DMACHANNEL1, ENABLE);
 
    DMA_InitStruct.DMA_DstAddress = (uint32_t)ADC3_ResultBuff;         // 目标地址
    DMA_InitStruct.DMA_DstInc = DMA_DstAddress_Increase;                 // 目标地址递增
    DMA_InitStruct.DMA_Mode = DMA_MODE_BLOCK;                       // BLOCK 传输模式
    DMA_InitStruct.DMA_SrcAddress = (uint32_t)&CW_ADC->RESULT1;     // 源地址
    DMA_InitStruct.DMA_SrcInc = DMA_SrcAddress_Fix;            // 源地址固定
    DMA_InitStruct.DMA_TransferCnt = 0x6;                           // DMA 传输次数
    DMA_InitStruct.DMA_TransferWidth = DMA_TRANSFER_WIDTH_16BIT;     // 数据位宽 16bit
    DMA_InitStruct.HardTrigSource = DMA_HardTrig_ADC_TRANSCOMPLETE;//DMA_HardTrig_GTIM2_OVERINT; // ADC 转换完成硬触发
    DMA_InitStruct.TrigMode = DMA_HardTrig;                         // 硬触发模式
    DMA_Init(CW_DMACHANNEL2, &DMA_InitStruct);
    DMA_Cmd(CW_DMACHANNEL2, ENABLE);
 
    DMA_InitStruct.DMA_DstAddress = (uint32_t)ADC2_ResultBuff;         // 目标地址
    DMA_InitStruct.DMA_DstInc = DMA_DstAddress_Increase;                 // 目标地址递增
    DMA_InitStruct.DMA_Mode = DMA_MODE_BLOCK;                       // BLOCK 传输模式
    DMA_InitStruct.DMA_SrcAddress = (uint32_t)&CW_ADC->RESULT2;     // 源地址
    DMA_InitStruct.DMA_SrcInc = DMA_SrcAddress_Fix;            // 源地址固定
    DMA_InitStruct.DMA_TransferCnt = 0x6;                           // DMA 传输次数
    DMA_InitStruct.DMA_TransferWidth = DMA_TRANSFER_WIDTH_16BIT;     // 数据位宽 16bit
    DMA_InitStruct.HardTrigSource = DMA_HardTrig_ADC_TRANSCOMPLETE;//DMA_HardTrig_GTIM2_OVERINT; // ADC 转换完成硬触发
    DMA_InitStruct.TrigMode = DMA_HardTrig;                         // 硬触发模式
    DMA_Init(CW_DMACHANNEL3, &DMA_InitStruct);
    DMA_Cmd(CW_DMACHANNEL3, ENABLE);
 
    DMA_InitStruct.DMA_DstAddress = (uint32_t)ADC1_ResultBuff;         // 目标地址
    DMA_InitStruct.DMA_DstInc = DMA_DstAddress_Increase;                 // 目标地址递增
    DMA_InitStruct.DMA_Mode = DMA_MODE_BLOCK;                       // BLOCK 传输模式
    DMA_InitStruct.DMA_SrcAddress = (uint32_t)&CW_ADC->RESULT3;     // 源地址
    DMA_InitStruct.DMA_SrcInc = DMA_SrcAddress_Fix;            // 源地址固定
    DMA_InitStruct.DMA_TransferCnt = 0x6;                           // DMA 传输次数
    DMA_InitStruct.DMA_TransferWidth = DMA_TRANSFER_WIDTH_16BIT;     // 数据位宽 16bit
    DMA_InitStruct.HardTrigSource = DMA_HardTrig_ADC_TRANSCOMPLETE;//DMA_HardTrig_GTIM2_OVERINT; // ADC 转换完成硬触发
    DMA_InitStruct.TrigMode = DMA_HardTrig;                         // 硬触发模式
    DMA_Init(CW_DMACHANNEL4, &DMA_InitStruct);
    DMA_Cmd(CW_DMACHANNEL4, ENABLE);
}
 
void adc_config(void)
{
    ADC_DeInit();
    ADC_InitTypeDef ADC_InitStructure = {0};
    ADC_SerialChTypeDef ADC_SerialChStructure = {0};
 
    __RCC_ADC_CLK_ENABLE();
    ADC_InitStructure.ADC_AccEn = ADC_AccDisable;// ADC 累加功能不开启
    ADC_InitStructure.ADC_Align = ADC_AlignRight;// 采样结果右对齐,即结果存于 bit11~bit0
    ADC_InitStructure.ADC_ClkDiv = ADC_Clk_Div4;// ADC 的 采 样 时 钟 为 PCLK 的 4 分 频, 即ADCCLK=16MHz
    ADC_InitStructure.ADC_DMAEn = ADC_DmaEnable;// ADC 转换完成触发 DMA
    ADC_InitStructure.ADC_InBufEn = ADC_BufDisable;// 高速采样,ADC 内部电压跟随器不使能
    ADC_InitStructure.ADC_OpMode = ADC_SingleChOneMode;// 单次单通道采样模式
    ADC_InitStructure.ADC_SampleTime = ADC_SampTime10Clk;// 设置为 10 个采样周期,须根据实际况调整
    ADC_InitStructure.ADC_TsEn = ADC_TsDisable;// 内部温度传感器禁止
    ADC_InitStructure.ADC_VrefSel = ADC_Vref_VDDA;// 采样参考电压选择为 VDDA
 
    ADC_SerialChStructure.ADC_Sqr0Chmux = ADC_SqrCh0;
    ADC_SerialChStructure.ADC_Sqr1Chmux = ADC_SqrCh1;
    ADC_SerialChStructure.ADC_Sqr2Chmux = ADC_SqrCh2;
    ADC_SerialChStructure.ADC_Sqr3Chmux = ADC_SqrCh3;
 
 
    ADC_SerialChStructure.ADC_SqrEns = ADC_SqrEns03;
    ADC_SerialChStructure.ADC_InitStruct = ADC_InitStructure;
 
    /* 序列通道连续采样模式 */
    ADC_SerialChContinuousModeCfg(&ADC_SerialChStructure);
 
    adc_dma_config();
    ADC_Enable();// 启用 ADC
    ADC_SoftwareStartConvCmd(ENABLE);
}

 

4:外壳

使用solidworks设计的外壳。

 

5:实物

 

 

 

 

 

6:视频

  b站链接:https://www.bilibili.com/video/BV14NWWecEzg/?vd_source=a83c174a9f85373eb37ec3663e1ac747

 

 

设计图

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

BOM

暂无BOM

3D模型

序号文件名称下载次数
暂无数据

附件

序号文件名称下载次数
1
立创:usb-hub电压电流表.mp4
2
2
立创:usb-hub电压电流表.mp4
1
克隆工程
添加到专辑
0
0
分享
侵权投诉
知识产权声明&复刻说明

本项目为开源硬件项目,其相关的知识产权归创作者所有。创作者在本平台上传该硬件项目仅供平台用户用于学习交流及研究,不包括任何商业性使用,请勿用于商业售卖或其他盈利性的用途;如您认为本项目涉嫌侵犯了您的相关权益,请点击上方“侵权投诉”按钮,我们将按照嘉立创《侵权投诉与申诉规则》进行处理。

请在进行项目复刻时自行验证电路的可行性,并自行辨别该项目是否对您适用。您对复刻项目的任何后果负责,无论何种情况,本平台将不对您在复刻项目时,遇到的任何因开源项目电路设计问题所导致的直接、间接等损害负责。

评论

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

底部导航