類比轉數位 IC研究 組員:施怡儒 S0453030 柯曄新 S0453001 張久藝 S0453019
ADC0804LCN→功能是類比轉數位
ADC0804LCN(內部電路)
PIN名稱功能 1 CS Chip select 2 3 4 5 8bit資料輸出 6 V+和V- Input Voltage 7 8 9 RD CS為Low且RD為Low時,才能讀取ADC0804的資料 3 WR 啟動ADC0804作類比轉換 4 INTR 中斷要求輸出端,Lo動作 5 DB0到DB7 8bit資料輸出 6 V+和V- Input Voltage 7 CLK 轉換時脈輸入端 8 CLK R 轉換時脈反相輸出端 9 VREF 參考電壓輸入端 10 VCC和GND 提供ADC0804的正負電源
PIN名稱功能 Pin1(CS):晶片選擇,Low動作 Pin2(RD):本訊號線需配合CS使用,亦即當CS為Lo且RD為Lo時,才能讀取ADC0804上的資料 Pin3(WR):轉換控制訊號,Low動作。啟動ADC0804作類比轉換 Pin4(CLK):轉換時脈輸入端 Pin5(INTR):中斷要求輸出端 Pin6~PIN7(VIN+/-):類比訊號輸入,正負差最大5V。 Pin8、Pin10(GND):接地 Pin9(VREF):轉換時的參考電壓準位,電壓準位為最大輸入類比電壓的一半 Pin11~Pin18(DB0~DB7):數位資料輸出 Pin20(VCC):IC電源
參考電壓 VREF 電壓準位為最大輸入類比電壓的一半,即若類比電壓範圍為0到4V,則VREF應輸入2V,若空接則為VCC/2。
脈衝寬度調變 (PWM) 利用數位訊號模擬類比訊號的方式 Duty Cycle = Ton/Toff (%) 模擬出的電壓 V = Von x duty cycle (%) = 5V x duty cycle (%) 透過低通濾波將脈衝寬度調變 (PWM)濾成DC電壓
Arduino 程式 byte w[8]; double out; void setup() { // put your setup code here, to run once: Serial.begin(9600); analogWrite(10,150); for (int x = 7; x >= 0; x--) { pinMode(x + 2, INPUT); } }
Arduino 程式 void loop() { // put your main code here, to run repeatedly: int ana = 0; for (int x = 7; x >= 0; x--) { w[x] = digitalRead (x + 2); // Serial.print( w[x]); // Serial.print(" "); } for (int x = 8; x > 1; x--) { ana += w[x - 1]; ana *= 2; } ana += w[0]; // Serial.println(""); Serial.print(ana,BIN); Serial.print(" "); out=ana/25.; Serial.print(out); Serial.println(""); delay(200); }
利用Arduino輸入電壓到VIN void setup() { // put your setup code here, to run once: Serial.begin(9600); analogWrite(10,X); } X=(輸入電壓/5)*255
利用Arduino輸入電壓到 VIN=1V void setup() { Serial.begin(9600); analogWrite(10,51); }
利用Arduino輸入電壓到 VIN=2V void setup() { Serial.begin(9600); analogWrite(10,102); }
利用Arduino輸入電壓到 VIN=3V void setup() { Serial.begin(9600); analogWrite(10,150); }
利用Arduino輸入電壓到 VIN=4V void setup() { Serial.begin(9600); analogWrite(10,201); }
利用Arduino輸入電壓到 VIN=5V void setup() { Serial.begin(9600); analogWrite(10,250); }