Bài 14. PIC 18F450 Chuyển Đổi ADC

Thứ Tư, 28 tháng 11, 2018

Bài 14. PIC 18F450 Chuyển Đổi ADC

Giới thiệu
  • Khi chúng ta giao diện cảm biến cho vi điều khiển, đầu ra của cảm biến nhiều lần tương tự trong tự nhiên. Nhưng vi điều khiển xử lý tín hiệu số.
  • Do đó chúng tôi sử dụng ADC ở giữa cảm biến và vi điều khiển. Nó chuyển đổi tín hiệu analog thành kỹ thuật số và đưa nó vào bộ vi điều khiển.
  • Có một số lượng lớn các ứng dụng của ADC như trong một ứng dụng sinh trắc học, Giám sát môi trường, Phát hiện rò rỉ khí vv
Vì vậy, bây giờ chúng ta hãy xem ADC trong PIC18F4550.
  • PIC18f4550 có bộ ADC 13 kênh 13 bit sẵn có.
  • 13 kênh của ADC được đặt tên là AN0-AN12. Nó có nghĩa là chúng ta có thể kết nối 13 cảm biến khác nhau cùng một lúc.
  • ADC 10 bit có nghĩa là:
  • Nó sẽ cung cấp số đếm kỹ thuật số trong khoảng 0-1023 (2 ^ 10).
Tính toán giá trị đầu ra kỹ thuật số \ Độ phân giải ADC lớn = \ tfrac {Vref} {2 ^ n-1} \ Đầu ra kỹ thuật số lớn = \ tfrac {Vin} {Độ phân giải}
  • Để giữ cho mọi thứ đơn giản, chúng ta hãy xem xét rằng Vref là 5V,
Đối với giá trị 0 / o kỹ thuật số 0Vin = 0 Đối với giá trị 0 / p kỹ thuật số 5Vin = 1023 (10 bit) Đối với giá trị p / p kỹ thuật số 2.5Vin = 512 (10 bit) Ghim cho kênh ADC Các kênh ADC PIC18F4550 Đăng ký ADC của PIC18F4550 Các thanh ghi ADRESH (byte cao)ADRESL (byte thấp) được sử dụng kết hợp để lưu trữ dữ liệu số được chuyển đổi tức là dữ liệu số. Nhưng dữ liệu chỉ rộng 10 bit nên sáu bit còn lại không được sử dụng. ADCON0 : Đăng ký điều khiển A / D 0 ADCON0 Đăng ký CHS3: CHS0 : Kênh tương tự chọn bit
CHS3: CHS0 Kênh truyền hình Tên kênh
0000 Kênh 0 AN0
0001 Kênh 1 AN1
0010 Kênh 2 AN2
0011 Kênh 3 AN3
0100 Kênh số 4 AN4
0101 Kênh 5 AN5
0110 Kênh 6 AN6
0111 Kênh 7 AN7
1000 Kênh 8 AN8
1001 Kênh 9 AN9
1010 Kênh 10 AN10
1011 Kênh 11 AN11
1100 Kênh 12 AN12
GO / DONE ' : Bit trạng thái chuyển đổi A / D Khi ADON = 1 1 = Đang chuyển đổi A / D 0 = A / D không hoạt động ADON : A / D chuyển đổi kích hoạt / ON bit 1 = A / D chuyển đổi là ON (Bắt đầu chuyển đổi). 0 = Chuyển đổi A / D bị tắt. ADCON1 : Đăng ký kiểm soát A / D 1 VCFG1 : bit cấu hình tham chiếu điện áp 1 = Vref - 0 = Vss VCFG0 : bit cấu hình tham chiếu điện áp 1 = Vref + 0 = Vdd PCFG3: PCFG0 : Các bit cấu hình cổng A / D: Khi chốt ADC trong PIC18F4550 được ghép với nhiều chức năng khác. Vì vậy, các bit được sử dụng để de-multiplex chúng và sử dụng như pin đầu vào tương tự. ADCON2 : Đăng ký kiểm soát A / D 2 ADCS2: ADCS0 : Các bit chọn chuyển đổi đồng hồ A / D: Các bit này được sử dụng để gán đồng hồ cho ADC. 111 = F RC Clock bắt nguồn từ bộ tạo dao động A / D RC 110 = FOSC / 64 101 = FOSC / 16 100 = FOSC / 4 011 = F RC Clock bắt nguồn từ bộ dao động A / D RC 010 = FOSC / 32 001 = FOSC / 8 000 = FOSC / 2 ADFM : A / D Định dạng kết quả lựa chọn bit: Kết quả 10 bit sẽ được đặt trong ADRESH (8-bit) và ADRESL (8-bit). Xem xét dữ liệu 10 bit như sau: 1 = Right Rightified. Tuy nhiên, các bit 8 bit thấp hơn được giữ trong ADRESL và phần còn lại của MSB hai bit được giữ trong ADRESH. Và còn lại 6 bit (bit 2-7) của ADRESH đầy 0. 0 = Căn trái. Tuy nhiên, 8 bit trên được giữ trong ADRESH và còn lại hai bit thấp hơn được đặt trong ADRESL ở vị trí bit 7-6. Và 6 bit thấp hơn còn lại của ADRESL chứa đầy 0. ACQT2: ACQT0 : Thời gian chuyển đổi A / D Chọn bit: Người dùng có thể lập trình thời gian mua lại. Sau đây là thời gian chờ đợi tối thiểu trước khi có thể bắt đầu việc mua lại tiếp theo. TAD = (Thời gian chuyển đổi A / D) 000 = 0 TAD. Thời gian chuyển đổi mặc định cho chuyển đổi quảng cáo. 001 = 2 TAD 010 = 4 TAD 011 = 6 TAD 100 = 8 TAD 101 = 12 TAD 110 = 16 TAD 111 = 20 TAD Các bước lập trình Khởi tạo
  1. Cấu hình đăng ký ADCON1 để chọn điện áp tham chiếu bằng cách sử dụng các bit VCFG1: VCFG0 và cũng cấu hình các chân cổng mà chúng tôi yêu cầu như một đầu vào tương tự sử dụng các bit PCFG3: PCFG0.
  2. Cấu hình ADCON2 Đăng ký để chọn định dạng kết quả A / D, đồng hồ A / D và thời gian chuyển đổi.
voidADC_Init(){ TRISA = 0xFF; /* Set as input port */ ADCON1 = 0x0E; /* Ref vtg is VDD and Configure pin as analog pin */ ADCON2 = 0x92; /* Right Justified, 4Tad and Fosc/32. */ ADRESH=0; /* Flush ADC output Register */ ADRESL=0; } Chuyển đổi A / D và Đọc các giá trị kỹ thuật số
  1. Cấu hình đăng ký ADCON0 để chọn một kênh mà chúng tôi yêu cầu sử dụng CHS3: CHS0.
  2. Bắt đầu chuyển đổi A / D bằng cách đặt bit ADON và Go / done 'bit của thanh ghi ADCON0.
  3. Chờ cho G0 / thực hiện 'bit được xóa khi chuyển đổi được hoàn thành.
  4. Sau đó sao chép dữ liệu số được lưu trữ trong ADRESH và ADRESL Register.
intADC_Read(int channel){ int digital; /* Channel 0 is selected i.e.(CHS3CHS2CHS1CHS0=0000) & ADC is disabled */ ADCON0 =(ADCON0 & 0b11000011)|((channel<<2) & 0b00111100); ADCON0 |= ((1<<ADON)|(1<<GO)); /*Enable ADC and start conversion*/ /* Wait for End of conversion i.e. Go/done'=0 conversion completed */ while(ADCON0bits.GO_nDONE==1); digital = (ADRESH*256) | (ADRESL); /*Combine 8-bit LSB and 2-bit MSB*/ return(digital); } Ứng dụng
  • Ở đây chúng ta sẽ phát triển một ứng dụng ngắn sử dụng ADC nội bộ của PIC18f4550.
  • Trong này, chúng tôi sẽ giao diện chiết áp 1K được sử dụng để thay đổi điện áp.
  • Điện áp thay đổi này được áp dụng cho AN0 (kênh 0) của ADC và hiển thị giá trị này trên màn hình LCD 16x2.
Sơ đồ Giao diện POT tới PIC18F4550 ADC #include<stdio.h> #include<string.h> #include<stdlib.h> #include<P18F4550.h> #include"config_intosc.h"/* Header File for Configuration bits */ #include"LCD_8bit_file.h"/* Header File for LCD Functions */ voidADC_Init(); intADC_Read(int); #define vref 5.00 /* Reference Voltage is 5V*/ voidmain(){ char data[10]; int digital; float voltage; OSCCON=0x72; /*Set internal Osc. frequency to 8 MHz*/ LCD_Init(); /*Initialize 16x2 LCD*/ ADC_Init(); /*Initialize 10-bit ADC*/ LCD_String_xy(1,1,"Voltage is..."); while(1) { digital=ADC_Read(0); /*Convert digital value into analog voltage*/ voltage= digital*((float)vref/(float)1023); /*It is used to convert integer value to ASCII string*/ sprintf(data,"%.2f",voltage); strcat(data," V"); /*Concatenate result and unit to print*/ LCD_String_xy(2,4,data);/*Send string data for printing*/ } } voidADC_Init(){ TRISA = 0xff; /*Set as input port*/ ADCON1 = 0x0e; /*Ref vtg is VDD & Configure pin as analog pin*/ ADCON2 = 0x92; /*Right Justified, 4Tad and Fosc/32. */ ADRESH=0; /*Flush ADC output Register*/ ADRESL=0; } intADC_Read(int channel){ int digital; ADCON0 =(ADCON0 & 0b11000011)|((channel<<2) & 0b00111100); /*channel 0 is selected i.e.(CHS3CHS2CHS1CHS0=0000)& ADC is disabled*/ ADCON0 |= ((1<<ADON)|(1<<GO));/*Enable ADC and start conversion*/ /*wait for End of conversion i.e. Go/done'=0 conversion completed*/ while(ADCON0bits.GO_nDONE==1); digital = (ADRESH*256) | (ADRESL);/*Combine 8-bit LSB and 2-bit MSB*/ return(digital); } Code mô phỏng

1 nhận xét:

  1. Unknownlúc 18:29 10 tháng 3, 2021

    chào bác. e có xem hướng dẫn bài của bác rất dễ hiểu. có phần code mô phỏng sao e ko down dc ạ? bác xem lại dùm.

    Trả lờiXóaTrả lời
      Trả lời
Thêm nhận xétTải thêm... Bài đăng Mới hơn Bài đăng Cũ hơn Trang chủ Đăng ký: Đăng Nhận xét (Atom)

Lưu trữ Blog

  • ▼  2018 (32)
    • ▼  tháng 11 (32)
      • Giao tiếp màn hình NOKIA 5110
      • Giao tiếp cảm biến PID
      • Giao tiếp với Joystick Analog
      • Giao tiếp modul XBee
      • Giao tiếp RFID EM-18
      • Giao tiếp GLCD 128x64
      • Giao tiếp ma trận phím 4x4
      • Giao tiếp GPS
      • Giao tiếp modul từ kế
      • Giao tiếp modul cảm biến gia tốc ADXL335
      • Giao tiếp modul MPU6050
      • Giao tiếp động cơ Servo
      • Giao tiếp động cơ DC
      • Giao tiếp cặp nhiệt điện AD 595 đo nhiệt độ
      • Giao tiếp động cơ bước
      • Giao tiếp thời gian thực
      • PIC18F4550 GPRS TCPClient
      • Bài 14. PIC 18F450 Chuyển Đổi ADC
      • Bài 13. PIC 18F450 Giao Tiếp UART
      • Bài 12. PIC 18F450 Ché Độ So Sánh Hẹn Giờ
      • Bài 11. PIC 18F450 Timer/Counter
      • Bài 10. PIC 18F450 Chế Độ CCP
      • Bài 9. PIC 18F450 PWM
      • Bài 8. PIC 18F450 Ngắt Ngoài
      • Bài 7. PIC 18F450 Giao Tiếp I2C
      • Bài 6. PIC 18F450 Chế Độ SPI
      • Bài 5. PIC 18F450 Chế Độ WatchDog Timer
      • Bài 4. PIC 18F450 Chế Độ NGủ
      • Bài 3. PIC 18F450 ON CHIP EEPROM
      • Bài 2. PIC 18F450 Với Mplabx IDE
      • Bài 1. Giới Thiệu Vi Điều Khiển PIC
      • Truyen thong giua 2 vi dieu khien pic qua RF443Mhz

DANH SÁCH TRANG

  • TÌNH KHÚC BOLERO VIỆT NAM
  • ELECTRONICS PROJECTS
  • TÀI LIỆU SỬA CHỮA ĐIỆN LẠNH
  • TÀI LIỆU HỌC ĐIỆN TỬ CHO NGƯỜI MỚI BẮT ĐẦU
  • TÀI LIỆU SỬA CHỮA TIVI CRT, LCD, LED, PLASMA
  • TÀI LIỆU 8051
  • TÀI LIỆU PIC
  • TÀI LIỆU ARDUINO
  • TRANG CHỦ

Giới thiệu về tôi

Ảnh của tôi Thư viện tài liệu kỹ thuật Xem hồ sơ hoàn chỉnh của tôi

Từ khóa » Bộ Adc Trong Pic18f4520 Có Bao Nhiêu Kênh