找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 5623|回復(fù): 2
收起左側(cè)

ADS1115模塊原理圖PCB以及單片機(jī)程序源碼分享

[復(fù)制鏈接]
ID:842343 發(fā)表于 2021-9-25 13:59 | 顯示全部樓層 |閱讀模式
這是前段時(shí)間我個(gè)人制作的一塊ADS1115模塊
測(cè)試性能良好,誤差較小
附件有原理圖PCB和測(cè)試數(shù)據(jù)
屬個(gè)人制作,請(qǐng)多多指教

Altium Designer畫的原理圖和PCB圖如下:(51hei附件中可下載工程文件)
51hei.png 51hei.png 51hei.png
單片機(jī)源程序如下:
  1. #include "STC8.h"
  2. #include "uart.h"
  3. #include "ADS1115.h"
  4. #include "stdio.h"

  5. pdata uint ADC_Result[20];
  6. extern char dac_str[16];

  7. /***********************************************************************************/
  8. uint    result=0;
  9. uchar   Initdata[4]={0};

  10. void delay1(uchar T)
  11. {
  12.   while(--T);
  13. }

  14. /*************************************函數(shù)功能:開始ADC通信 **************************************/
  15. void StartADcom()
  16. {
  17.   SDA =0;
  18.   SCL=1;
  19.   delay1(100);
  20.   SDA =1;
  21.   delay1(20);
  22.   SDA =0;
  23.   SCL=0;  
  24.   delay1(10);
  25. }

  26. /***********************************函數(shù)功能:停止ADC通信 **************************************/
  27. void StopADcom()
  28. {
  29.   SDA=0;
  30.   delay1(10);
  31.   SCL=1;
  32.   delay1(20);
  33.   SDA=1;
  34.   delay1(10);
  35. }
  36. /******************************** 函數(shù)功能:?jiǎn)巫止?jié)SPI傳輸 **************************************/
  37. void Send_Byte(uchar byte)
  38. {
  39.   uchar i;
  40.   for(i=0;i<8;i++)
  41.     {
  42.           if((byte<<i)&0x80)
  43.                   SDA=1;
  44.       else
  45.                   SDA=0;
  46.           delay1(5);
  47.           SCL=1;
  48.           delay1(10);
  49.       SCL=0;        
  50.       delay1(10);              
  51.         }
  52.   delay1(5);
  53.   SDA=1;
  54.   delay1(5);
  55.   SCL=1;
  56.   delay1(10);
  57.   SCL=0;
  58.   delay1(10);  
  59. }
  60. /***************************函數(shù)功能:讀取一個(gè)字節(jié) *******************************/
  61. uchar Read_Byte()
  62. {
  63.   uchar temp=0;
  64.   uchar i;
  65.   for(i=0;i<8;i++)
  66.     {
  67.           temp=temp<<1;           //shift left to receive next bit
  68.           SCL=0;                        //set clock high
  69.           delay1(10);
  70.           SCL=1;
  71.           delay1(5);
  72.           if(SDA==1)                //check if Data=high  如果有數(shù)據(jù)到來               
  73.           temp|=0x01;            //yes - set bit high
  74.       delay1(10);               
  75.     }
  76.   SCL=0;
  77.   delay1(5);
  78.   SDA=0;
  79.   delay1(5);
  80.   SCL=1;
  81.   delay1(20);
  82.   SCL=0;
  83.   delay1(5);
  84.   SDA=1;
  85.   return temp;
  86. }
  87. /**************************函數(shù)功能:配置AD轉(zhuǎn)換芯片 *************************************/
  88. void Confige1115(uint config)
  89. {
  90.   uchar i=0;

  91.   Initdata[0] =0x90;       // 地址 + 寫命令
  92.   Initdata[1] =0x01;       // 指向配置寄存器
  93.   Initdata[2] = (uchar)(config>>8);   // 配置字高字節(jié)
  94.   Initdata[3] = (uchar)config;       // 配置字低字節(jié),860sps,disable comparator
  95.   SCL=1;
  96.   StartADcom();
  97.   for(i=0;i<4;i++)
  98.     {
  99.           Send_Byte(Initdata[i]);
  100.       delay1(20);
  101.         }
  102.   StopADcom();
  103. }
  104. /*********函數(shù)功能:指向轉(zhuǎn)換結(jié)果寄存器 ***************************/
  105. void Pointregister(void)
  106. {
  107.   uchar i=0;
  108.   Initdata[0] =0x90;           // 地址 + 寫命令
  109.   Initdata[1] =0x00;            // 指向轉(zhuǎn)換結(jié)果寄存器
  110.   SCL=1;
  111.   StartADcom();
  112.   for(i=0;i<2;i++)
  113.     {
  114.           Send_Byte(Initdata[i]);
  115.       delay1(20);
  116.         }
  117.   StopADcom();
  118.   delay1(10);
  119. }
  120. /***********************************************************************************************
  121. 函數(shù)功能:讀AD轉(zhuǎn)換結(jié)果
  122. ************************************************************************************************/
  123. uint Read1115(void)
  124. {
  125.   uchar   ResultL,ResultH;
  126.   uint    Result;
  127.   Initdata[0] =0x91;         // 地址 + 讀命令
  128.   SCL=1;
  129.   StartADcom();
  130.   delay1(10);
  131.   Send_Byte(Initdata[0]);
  132.   delay1(20);
  133.   ResultH=Read_Byte();
  134.   delay1(10);
  135.   ResultL=Read_Byte();         
  136.   StopADcom();
  137.   Result=ResultH*256+ResultL;   
  138.   return   Result;
  139. }

  140. /*****模擬量采集轉(zhuǎn)化為數(shù)字量*****************/
  141. uint Ad_1115()                        
  142. {
  143.     uint result_gd;
  144.     Pointregister();               
  145.     delay1(10);
  146.         result_gd=Read1115();             //結(jié)果存儲(chǔ)AD轉(zhuǎn)化值
  147.     return result_gd;
  148. }

  149. uint ADC_GET_AV(uchar num)
  150. {
  151.         uchar i, j;
  152.         uint adc, temp;
  153.         ulong Result_sum;
  154.         
  155.         Result_sum = 0;
  156.         
  157.         for(i = 0; i < num; i++)
  158.                 ADC_Result[i] = Ad_1115();
  159.         
  160.         for (i = 0; i < num - 1; i++)
  161.                 for (j = 0; j < num - 1 - i; j++)
  162.                         if (ADC_Result[j] > ADC_Result[j + 1])
  163.                         {
  164.                                 temp = ADC_Result[j];
  165.                                 ADC_Result[j] = ADC_Result[j + 1];
  166.                                 ADC_Result[j + 1] = temp;
  167.                         }
  168.                                 
  169.         for(i = 8; i < 12; i++)
  170.                 Result_sum += ADC_Result[i];
  171.         adc = Result_sum / 4;
  172.         
  173.         return adc;
  174. }
復(fù)制代碼

51hei.png

上圖資料51hei附件下載:
ADS1115資料.7z (3.22 MB, 下載次數(shù): 162)

評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

ID:961328 發(fā)表于 2021-10-7 09:48 | 顯示全部樓層
你的ADS1115的板子弄好了嗎,差分電壓精度如何?是否供電5V,才能測(cè)量5V?
回復(fù)

使用道具 舉報(bào)

ID:957480 發(fā)表于 2021-11-1 12:43 | 顯示全部樓層
你好,你的uart.c .h能分享一下么
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表