久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 20722|回復: 19
收起左側

基于STM32的交流電流測量系統(程序+電路資料全)

  [復制鏈接]
ID:440498 發表于 2019-6-3 19:50 | 顯示全部樓層 |閱讀模式
    本設計的整體結構大致有主控模塊、電流信號采樣模塊、電源模塊和串口輸出模塊組成,
   
本文中主控芯片采用型號為STM32F103RC的微控制器,在保證電流采樣精度的前提下,使得結構盡可能的簡潔,避免了復雜多變的電路布局,更加方便PCB板的制作,并且成本較為低廉。其中,在采樣調理電路的設計中,采用電流互感器進行電流信號的采樣。

電路原理圖如下:
14.png

單片機源程序如下:
  1. #include  "Init.h"
  2. #include  "stdio.h"
  3. unsigned char flag=0;
  4. unsigned int  x;
  5. unsigned int  t;
  6. unsigned int m;
  7. void uart1_putc(unsigned char c)
  8. {
  9.   while(!(UART1_SR&(1<<6))&&(!(UART1_SR&(1<<7))));//判斷狀態的6.7位
  10.         //while(((UART1_SR>>6)&3)!=3);
  11.         UART1_DR=c;          // 數據傳給數據寄存器,發送
  12. }

  13. int fputc(int ch,FILE *f)
  14. {
  15.         uart1_putc(ch);
  16.         return(ch);
  17. }
  18. void EXTI4_IRQHandler(void)
  19. {  
  20.            if(!( GPIOE_IDR&1<<4))
  21.                  {
  22.             delay_ms(5000);
  23.                         if(GPIOE_IDR&(1<<4))
  24.                                 if(EXTI_PR&(1<<4))
  25.                                 {
  26.                                         flag++;
  27.                                         if(flag==2)
  28.                                         flag=0;
  29.                                         EXTI_PR=1<<4;
  30.                                 }
  31.                  }                             
  32. }
  33. void TIM2_IRQHandler()     //TIM2中斷處理函數
  34. {
  35.         if(TIM2_SR &1)//溢出中斷
  36.         {
  37.                 flag=~flag;//把數據傳給flag,flag接收.
  38.         }       
  39.           TIM2_SR &=0;//清除中斷標志位   
  40. }
  41. void ADC1_2_IRQHandler ()     //中斷處理函數
  42. {
  43.         //while(!(ADC1_SR&1<<1));lag
  44.         //flag=1;
  45.         //printf("中斷開啟  %d\r\n",flag);
  46.         x=ADC1_DR;
  47. }

  48.   int main(void)  
  49. {          float adcx;
  50.           float temp;
  51.           RCC_APB2ENR|=0x48;
  52.           GPIOB_CRL|=0X200000;
  53.                 GPIOE_CRL|=0X200000;  //燈的使能
  54.           RCC_APB2ENR|=0X8;             
  55.           GPIOB_CRH=3<<0;                         //蜂鳴器的使能
  56.     Stm32_Clock_Init(9);       //時鐘初始化函數
  57.           Stm32_UART1_Int_Init();    //串口中斷初始化函數
  58.           Stm32_Uart1_Init();                //串口初始化函數
  59.           Stm32_TIMER2_Int_Init();    //中斷NVIC配置函數
  60.           Stm32_TIMER2_Init();       //定時器初始化函數
  61.           Stm32_Adc_Init();           //ADC初始化函數
  62.     Stm32_ADC1_Int_Init();      //ADC中斷初始化函數
  63.           Stm32_Int_Init();           //按鍵初始化函數
  64.     printf("準備就緒!!!\r\n");        //Printf打印
  65.    while(1)
  66.     {
  67.                         // delay_ms(20000);
  68.                          ADC1_CR2|=1<<0;
  69.                          switch(flag)
  70.                          {
  71.                                    case 0:                              //綠燈亮
  72.                                          GPIOB_CRL&=(~(0x200000));        //按下按鍵KEY0直接到下一個模式
  73.                  GPIOE_CRL|=0X200000;
  74.                        GPIOE_ODR|=0x0000020;
  75.                        GPIOE_ODR&=(~(0x20));
  76.                                    printf("綠燈亮可以開始檢測,請調到檢測模式。\r\n");
  77.                              break;
  78.                                    case 1:
  79.                                       temp=x*(3.3/4096);
  80.                                             adcx=1.515*temp+0.7728;
  81.                                                   printf("輸出采集電壓值:  %.5f V\r\n",temp);
  82.                                             printf("輸出采集電流值: %.5f A\r\n",adcx);
  83.                                     if(temp<=3)
  84.                                                 {
  85.               GPIOB_CRL|=0x200000;             //按下按鍵KEY0直接到下一個模式
  86.                     GPIOE_CRL|=0X200000;
  87.                           GPIOB_ODR|=0x20;
  88.                           delay_ms(5000);
  89.                           GPIOE_ODR&=(~(0x20));
  90.                           delay_ms(5000);
  91.                           GPIOB_ODR&=(~(0x20));
  92.                           delay_ms(5000);
  93.                           GPIOE_ODR|=0x20;
  94.                           delay_ms(5000);
  95.                                             printf("紅綠燈亮 \r\n");
  96.                                                 }
  97.                        else
  98.                                          {
  99.                                           LED1|=0;LED2|=1;BEEP=0;
  100.                                                 printf("!!!請注意電壓值,超過3.3V會燒壞你的開發板!!!\r\n");
  101.                                          }
  102.           break;                                                   
  103.                          }
  104.    }                                 
  105. }
復制代碼

所有資料51hei提供下載:
交流電流測量系統.7z (54.93 KB, 下載次數: 624)

評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

回復

使用道具 舉報

ID:440498 發表于 2019-6-3 20:17 | 顯示全部樓層
實物電路圖

18.png
17.jpg
回復

使用道具 舉報

ID:328014 發表于 2019-6-7 04:52 | 顯示全部樓層
好資料,51黑有你更精彩!!!
回復

使用道具 舉報

ID:106028 發表于 2019-6-11 08:39 | 顯示全部樓層
不知效果如何,學些一下
回復

使用道具 舉報

ID:573578 發表于 2019-6-27 18:36 | 顯示全部樓層
能不能講解一下外圍電路,電流互感器只是轉化電流大小,最后進入到stm32f103芯片進行AD轉化時輸入的是電壓,那怎么辦計算電流電壓值,求助幫助
回復

使用道具 舉報

ID:96913 發表于 2019-9-8 21:38 | 顯示全部樓層
這個運放電路好像有問題,這是什么電路,峰值?平均值?貌似都不對啊
回復

使用道具 舉報

ID:497733 發表于 2019-9-9 10:16 | 顯示全部樓層
感謝分享,學習學習。。。。。
回復

使用道具 舉報

ID:68875 發表于 2019-12-26 23:17 | 顯示全部樓層
good topic,
回復

使用道具 舉報

ID:412814 發表于 2020-1-19 21:01 | 顯示全部樓層
謝謝樓主,學習了。
回復

使用道具 舉報

ID:658039 發表于 2020-2-23 01:36 | 顯示全部樓層
是取平均值?????????
回復

使用道具 舉報

ID:511461 發表于 2020-7-31 11:03 | 顯示全部樓層
adcx=1.515*temp+0.7728;
請問這句是什么意思?算出來的
回復

使用道具 舉報

ID:810779 發表于 2020-8-3 11:32 | 顯示全部樓層
你好,想質詢一下你的電流采集系統的問題
回復

使用道具 舉報

ID:28767 發表于 2020-8-7 13:57 | 顯示全部樓層
good study         
回復

使用道具 舉報

ID:214628 發表于 2020-9-17 10:25 | 顯示全部樓層
adcx=1.515*temp+0.7728;
請問這句是什么意思?為什么乘以1.515,還要加上0.7728
回復

使用道具 舉報

ID:563947 發表于 2020-11-20 06:27 | 顯示全部樓層
有學習板買嗎?
回復

使用道具 舉報

ID:461677 發表于 2021-4-28 16:57 | 顯示全部樓層
外圍硬件的前級放大器部分是將電流傳感器的微弱電流信號變換為電壓信號,差分輸入到前級放大器中,輸出單端信號,然后經后級放大器放大后進行AD轉換嗎?
回復

使用道具 舉報

ID:934633 發表于 2021-9-7 13:44 | 顯示全部樓層
CH340G的收發接反了
回復

使用道具 舉報

ID:928738 發表于 2021-11-29 15:49 | 顯示全部樓層
STM32F103RC的微控制器沒有PE引腳,代碼和原理圖不一致。需要修改
回復

使用道具 舉報

ID:885182 發表于 2022-9-5 22:36 | 顯示全部樓層
是可以測量有效值不
回復

使用道具 舉報

ID:598178 發表于 2023-10-30 16:15 | 顯示全部樓層
效果怎么樣?有人驗證過嗎?
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: www.久久久久久久久久久久 | 国产精品无码久久久久 | 毛片久久久 | 亚洲成人精品一区 | 国产在线对白 | 亚洲国产aⅴ成人精品无吗 欧美激情欧美激情在线五月 | 国产日韩电影 | 中文字幕日韩专区 | 国产激情视频在线 | 久久久91精品国产一区二区精品 | 一区二区三区视频在线观看 | 天堂色综合 | 香蕉视频黄色 | 国产一区h | 九九精品在线 | 天天干夜夜操 | 亚洲国产精品久久久 | www.亚洲国产精品 | 成人在线视频网站 | 精品一二三区 | 免费在线精品视频 | 日韩视频一区在线观看 | 久在线| av高清毛片| 婷婷色婷婷 | 欧美成年人网站 | 成人国产精品 | 亚洲日韩中文字幕一区 | 亚洲成年影院 | 秋霞在线一区 | 91久久精品国产91久久性色tv | 国产成人一区二区三区 | av中文字幕在线 | 黑人巨大精品欧美一区二区免费 | 日本高清中文字幕 | 欧美一级精品片在线看 | 欧美成人精品一区二区男人看 | 久久中文字幕av | 欧美日韩在线一区二区 | 亚洲www啪成人一区二区 | 国产一区二区三区在线视频 |