国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Arduino--數字電位器AD5252/1的使用

HelKyle / 1381人閱讀

摘要:目錄簡介使用說明編程說明實驗說明完整的參考程序致謝感謝宮同學為本次實驗提供器件和意見。簡介是公司出品的數字電位器,同時帶有非易失性存儲器,其使用通信。


致謝:感謝宮同學為本次實驗提供器件和意見。

1.AD5252簡介

AD5252/1是ADI公司出品的數字電位器,同時帶有非易失性存儲器(NVM),其使用i2c通信。這個系列的芯片有兩個型號:

  1. AD5251: 雙電位器,64位。
  2. AD5252: 雙電位器,256位。

AD5251只支持50 k?。 AD5252有1 k?, 10 k?, 50 k?, 100 k?可選。
AD5252/1:
單電源供電: 2.7 V to 5.5 V 。
雙電源供電: ±2.25 V to ±2.75 V。
使用環境: –40°C to +105°C。
芯片的內部結構圖:

芯片引腳圖:

引腳編號引腳名稱功能
3wp寫入保護,高電平有效
2,11AD0,AD1設置芯片地址
4,5,6W1,B1,A1電位器1
12,13,14W3,B3,A3電位器3
7,9SDA,SCLi2c接口
1VDD電源
10,8DGND,VSS數字地,模擬地,一般把它連到一起

2.使用說明

在使用時最需要注意的是AD5252系列的芯片需要在SDA,SCL接上拉電阻才可以正常通信,我使用的測試電路圖如下:

SDA,SCL接Arduino uno 的i2c接口,wp接13腳,A0,A1,接對應的A0,A1引腳。

3.編程說明

首先設置ad5252的地址:


AD0,AD1設置地址,HIGH對應1.LOW對應0。在這兩個引腳懸空時的默認地址為0x2D。
在執行寫入操作時,wp要置高。
寫操作指令:

讀操作指令:

主要API

void res_set(int date, int chal);   //設置電阻值unsigned int red_res(int chal);     //讀取設置電阻值unsigned int red_eem(int chal);    //讀寄存器void set_eem(int date, int chal);   //寫寄存器

4.實驗說明

實驗采用1K的AD5252

這個程序可以通過串口設置電阻值,將串口設置的值同時賦值給兩個電位器,同時將設置值寫入EEMEM4(對應程序的1)。
res_1是讀取的設置值,resl_read是通過AD采樣計算的電阻,相當于實際測的電阻。設置值和真實值大約會有75歐的差值,這個差值是滑片的電阻,這里差了60歐。

5.完整的參考程序

#include#define Addr 0x2D    //AD5252默認地址#define wp   13     //寫入接保護引腳#define AD5252_EE_RDAC       (1 << 5)  //讀寫emm輔助計算void res_set(int date, int chal);unsigned int red_res(int chal);unsigned int red_eem(int chal);void set_eem(int date, int chal);void setup(){  //i2c接口初始化  Wire.begin();  //串口初始化,波特率9600  Serial.begin(9600);  res_set(0, 1);     delay(100);  res_set(0, 2);      set_eem(128, 1);  set_eem(64, 11);}void loop(){  if (Serial.available() > 0)  {    int value = Serial.parseInt();  //獲取串口輸入的整數    if ( value > 0 &&  value  < 256)    {      Serial.print("set value: ");Serial.println(value);      res_set(value, 1);       delay(100);      res_set(value, 2);        set_eem(value, 1);   }   else   {     if(value != 0)        Serial.println("設置值錯誤,設置的值大于0小于256");    }  }   float res_1 = (red_res(1) / 256.0 );   float res_2 = (red_res(2) / 256.0 );     unsigned int res1_read=analogRead(A0);   unsigned int res2_read=analogRead(A1);   double b1 = 0.0049*res1_read;     //測到的電壓   double res1_real = 3.2-(11/b1) ;  //計算電阻   double b2 = 0.0049*res2_read;     //測到的電壓   double res2_real = 3.2-(11/b2) ;  //計算電阻   // Output data to serial monitor   unsigned int red_eem1 =  red_eem(1);   unsigned int red_eem11 = red_eem(11);   Serial.print("eem1: ");Serial.println(red_eem1);   Serial.print("eem11: ");Serial.println(red_eem11);     Serial.print("res_1: ");Serial.print(res_1);Serial.print(" K;");Serial.print("res1_read: ");Serial.print(res1_real);Serial.println(" K");   Serial.print("res_2: ");Serial.print(res_2);Serial.print(" K;");Serial.print("res1_read: ");Serial.print(res2_real);Serial.println(" K");   delay(1000);}/*功能: ad5252電阻設置函數輸出參數: date設置的電阻值 0 -- 255         chal = 1 --> RDAC1         chal = 2 --> RDAC3*/void res_set(int date, int chal)    {  int channel;  if (chal == 1)  {    channel = 0x01;  }  if (chal == 2)  {    channel = 0x03;  }  digitalWrite(wp,HIGH);  //pin2 always low  delay(100);  // 開始i2c傳輸  Wire.beginTransmission(Addr);  // 設置通道  Wire.write(channel);  // Input resistance value, 0x80(128)  Wire.write(date);  // 停止i2c傳輸  Wire.endTransmission();  delay(100);  digitalWrite(wp,LOW); }/*功能: ad5252電阻設置值讀取函數輸出參數:          chal = 1 --> RDAC1         chal = 2 --> RDAC3*/unsigned int red_res(int chal){  unsigned int data;  int channel;  if (chal == 1)  {    channel = 0x01;  }  if (chal == 2)  {    channel = 0x03;  }  //開始i2c傳輸  Wire.beginTransmission(Addr);  //選擇寄存器  Wire.write(channel);  //停止i2c通信  Wire.endTransmission();  //傳輸1位讀命令  Wire.requestFrom(Addr, 1);  // Read 1 byte of data  if (Wire.available() == 1)  {    data = Wire.read();  } return data; }/*功能: 寫入數據到寄存器輸出參數:          date ——> 數據         chal 1到11 對應 eem4到eem15*/void set_eem(int date, int chal)    {  int channel;  switch(chal)  {    case 1: channel = 0x04;break;    case 2: channel = 0x05;break;    case 3: channel = 0x06;break;    case 4: channel = 0x07;break;    case 5: channel = 0x08;break;    case 6: channel = 0x0A;break;    case 7: channel = 0x0B;break;    case 8: channel = 0x0C;break;    case 9: channel = 0x0D;break;    case 10: channel = 0x0E;break;    case 11: channel = 0x0F;  }  digitalWrite(wp,HIGH);  //pin2 always low  delay(100);  //開始i2c傳輸  Wire.beginTransmission(Addr);  //設置寄存器  Wire.write(AD5252_EE_RDAC|channel);    Wire.write(date);  //停止i2c  delay(100);  Wire.endTransmission();  delay(100);  digitalWrite(wp,LOW); }/*功能: 讀寄存器數據輸出參數:          chal 1到11 對應 eem4到eem15*/unsigned int red_eem(int chal){  unsigned int data;  int channel;   switch(chal)  {    case 1: channel = 0x04;break;    case 2: channel = 0x05;break;    case 3: channel = 0x06;break;    case 4: channel = 0x07;break;    case 5: channel = 0x08;break;    case 6: channel = 0x0A;break;    case 7: channel = 0x0B;break;    case 8: channel = 0x0C;break;    case 9: channel = 0x0D;break;    case 10: channel = 0x0E;break;    case 11: channel = 0x0F;  }  //開始i2c  Wire.beginTransmission(Addr);  //選擇寄存器  Wire.write(AD5252_EE_RDAC|channel);  //停止i2c通信  Wire.endTransmission();  Wire.requestFrom(Addr, 1);  if (Wire.available() == 1)  {    data = Wire.read();  } return data; }

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/124047.html

相關文章

  • 第一課:超級hello Arduino.使用多種知識串聯一個入門小項目,很適合初學第一課喲.

    摘要:開關旋鈕電位器的實驗視頻已經購買開發版的同學開始上課來一場緊張刺激的之旅吧前言開發工具的下載安裝使用都很簡單我這里就不贅述了附上官方的說明跟著步驟來十分鐘搞定相關連接下載官方為什么成為開發函數 ...

    philadelphia 評論0 收藏0
  • 物聯網應用技術課程設計————宿舍升降機模型

    摘要:綜合諸多考慮與相應調研,我們希望能夠制作出一款宿舍升降機為同學們提供更方便安全的上下床方式。摘要本設計采用開發板作為主控,結合壓力傳感器紅外避障傳感器電機驅動模塊實現了一個可以自動升降自動停止自動調速的宿舍升降機模型系統。 (第一次寫博客,記錄下自己大一時做的一個課設,如有不妥之處,還望多...

    Caicloud 評論0 收藏0
  • 【物聯網】14.物聯網設備控制器選擇 - MCU(單片機)

    摘要:這部分就是我之前分享過很多的單片機部分,具體可以參考專欄物聯網設備的控制單元核心就是,也就是常說的單片機。對于物聯網設備,根據開發環境想制造的設備以及經驗的不同,選擇不同的控制芯片也就至關重要。 這部分就是我之前分享過很多的單片機部分,具體可以參考專欄 https://blog.csdn.n...

    UCloud 評論0 收藏0
  • 單片機入門指南

    摘要:單片機入門指南本文基于常神文章基礎上將單片機入門部分進行細化盡可能細節做到可實施性先引用一下常神的文章首先假設大家已經對高中物理的電路部分有所了解。單片機,如,是一種根據程序控制引腳高低電平的可編程器件,有些場合又將這種行為稱作嵌入式。 ...

    nevermind 評論0 收藏0

發表評論

0條評論

HelKyle

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<