3 2 CẤU TRÚC CỦA VI ĐIỀU KHIỂN DSPIC 0F4011
2.3.5. Ngắt và cơ chế ngắt
Vi điều khiển dsPic30F4011 có tới 30 nguồn ngắt và 4 bộ xử lý loại trừ (bẫy lỗi), bộ xử lý này sẽ cho phép các ngắt theo mức ưu tiên được sắp đặt trước.
CPU có thể đọc bảng vector ngắt và truyền địa chỉ được chứa trong vector ngắt tới bộ đếm chương trình. Vector ngắt được truyền từ bus dữ liệu chương trình vào trong bộ đếm
INT Number
Vector
Number Interrupt Source Highest Natural Order Priority 0 8 INT0 – External Interrupt 0 1 9 IC1 – Input Capture 1 2 10 OC1 – Output Compare 1 3 11 T1 – Timer 1
4 12 IC2 – Input Capture 2 5 13 OC2 – Output Compare 2 6 14 T2 – Timer 2
7 15 T3 – Timer 3 8 16 SPI1
9 17 U1RX – UART1 Receiver 10 18 U1TX – UART1 Transmitter 11 19 ADC – ADC Convert Done 12 20 NVM – NVM Write Complete 13 21 SI2C - I2C Slave Interrupt 14 22 MI2C – I2C Master Interrupt 15 23 Input Change Interrupt 16 24 INT1 – External Interrupt 1 17 25 IC7 – Input Capture 7 18 26 IC8 – Input Capture 8 19 27 OC3 – Output Compare 3 20 28 OC4 – Output Compare 4 21 29 T4 – Timer4
22 30 T5 – Timer5
23 31 INT2 – External Interrupt 2 24 32 U2RX – UART2 Receiver 25 33 U2TX – UART2 Transmitter 26 34 Reserved
27 35 C1 – Combined IRQ for CAN1 28 - 38 36 - 46 Reserved
39 47 PWM – PWM Period Match 40 48 QEI – QEI Interrupt
41 49 Reserved 42 50 Reserved
43 51 FLTA – PWM Fault A 44 52 Reserved
45 - 53 53 - 61 Reserved
Bảng vector ngắt (Interrupt Vector Table - IVT) và bảng vector ngắt thay thế (Alternate Interrupt Vector Table - AIVT) được đặt gần điểm bắt đầu bộ nhớ chương trình (0x000004). IVT và AIVT được chỉ ra trong Bảng 2.2. Các thanh ghi điều khiển ngắt và ưu tiên ngắt:
- Các thanh ghi 16-bit IFS0<15:0>, IFS1<15:0>, IFS2<15:0>
Tất cả các cờ ngắt được lưu trong 3 thanh ghi này. Các cờ được đặt tương ứng bởi của ngoại vi hoặc tín hiệu bên
ngoài và có thể xoá bằng phần mềm.
Bảng 2.2. Bảng vector ngắt của dsPIC30F3012
- Các thanh ghi 16-bit: IEC0<15:0>, IEC1<15:0>, IEC2<15:0>: Tất cả các bit điều khiển cho phép ngắt đều nằm trong 3 thanh ghi này. Các bit này được sử dụng để cho phép ngắt độc lập ngoại vi và tín hiệu ngoài
- Các thanh ghi ưu tiên ngắt: IPC0<15:0> ... IPC10<7:0>: Người sử dụng có thể chuyển
đổi mức ưu tiên ngắt kết hợp với mỗi ngắt được giữ trong các thanh ghi này
- Nhóm bit IPL<3:0>: Mức độ ưu tiên của CPU hiện hành được lưu rõ ràng trong các bit
này. Bit IPL<3> nằm trong thanh ghi CORCON, trong khi đó các bit IPL<2:0> nằm trong thanh ghi trạng thái (SR)
- Hai thanh ghi 16-bit INTCON1<15:0>, INTCON2<15:0>: Chức năng điều khiển ngắt
toàn cục được xuất phát từ hai thanh ghi này. INTCON1 chứa các cờ điều khiển và trạng thái của bộ xử lý loại trừ. INTCON2 điều khiển tín hiệu yêu cầu ngắt và việc bảng vector ngắt thay thế.
Các nguồn ngắt có thể được người sử dụng sắp xếp mức ưu tiên từ 1 đến 7 thông qua thanh ghi IPCx. Mỗi nguồn ngắt được kết hợp với một vector ngắt (bảng 2.2)
Hình 2.9. Các vector bẫy lỗi 2.3.6. Các bộ định thời
Trong vi xử lý dsPIC40F4011 có tới năm bộ định thời (Timer) 16-bit. Trong đó các Timer có thể hoạt động riêng biệt, riêng hai Timer 2, 3 và hai Timer 4, 5 có thể kết hợp với nhau để trở thành một Timer 32 bit.
Về cấu trúc các Timer này khác nhau vì hai Timer 2 và 3 và hai Timer 4 và 5 có thể kết hợp còn Timer 1 thì không. Timer 1 có cấu trúc kiểu A (Hình 2.10), Timer 2,4 kiểu B và Timer 3,5 kiểu C. Về hoạt động các Timer có hoạt động gần giống nhau do đó ta sẽ tìm hiểu về Timer 1, các Timer còn lại là tương tự.
Timer 1 có thể hoạt động với nguồn tạo dao động tần số thấp 32KHz, và chế độ
không đồng bộ với nguồn tạo dao động ngoài. Đặc điểm riêng biệt của Timer 1 đó là có thể dùng trong các ứng dụng thời gian thực.
- Timer 16-bit: trong chế độ này, timer sẽ tăng sau mỗi chu kỳ lệnh đến khi giá trị của timer bằng giá trị của thanh ghi chu kỳ PR1 (Period Register) thì sẽ reset về ‘0’ và tiếp tục đếm.
- Counter đồng bộ 16-bit: trong chế độ này, timer sẽ tăng ở mỗi sườn lên của của xung
nhịp ngoài mà được đồng bộ với pha của các xung nhịp trong. Timer tăng đến giá trị nằm trong thanh ghi PR1 thì dừng và reset timer về ‘0’ rồi tiếp tục đếm lên.
- Counter không đồng bộ 16-bit: khi hoạt động trong chế độ này, timer sẽ tăng dần sau
mỗi sườn lên của xung nhịp bên ngoài tác động vào. Timer sẽ tăng dần đến khi giá trị của nó bằng thanh ghi PR1 thì bị reset về ‘0’ rồi lại tiếp tục đếm lên.
Hệ số chia tần của bộ định thời
Xung nhịp đầu vào (Fosc/4 hoặc xung nhịp ngoài) đưa vào Timer 16-bit và có thể được chia tần số theo các tỉ lệ sau: 1:1, 1:8, 1:64, 1:256 được xác định bởi các bit TCKPS<1:0> của thanh ghi TxCON. Hệ số chia tần này (prescaler) có thể bị xoá khi xảy ra một trong các điều kiện sau:
- Ghi vào TMR
- Ghi vào thanh ghi TxCON (trừ việc ghi vào bit TxCON) Reset thiết bị, như POR và BOR
DsPic30F4011 có 5 thanh ghi điều khiển Timer T1CON..T5CON. Các thanh ghi này được chia ra làm 2 kiều. T1CON thuộc kiểu A, T2CON và T4CON thuộc kiểu B, T3CON và T5CON thuộc kiểu C.
Hình 2.10. Sơ đồ khối của Timer 1
Hình 2.12. Sơ đồ khối Timer 3
(Sơ đồ khối Timer 4/5 32 bit và Timer 4,5 16 bit giống như Timer 2/3 32 bit và Timer 2,3 16 bit)
2.3.7. Bộ chuyển đổi tương tự số ADC
Vi điều khiển dsPic30F4011 cung cấp bộ chuyển đổi tương tự số 10-bit cho phép biến đổi tín hiệu tương tự đầu vào sang số độ dài 10-bit. Module này dựa trên thanh ghi SAR (Successive Approximation Register – thanh ghi xấp xỉ) và cung cấp tốc độ lấy mẫu tối đa lên tới 100 ksps. ADC của dsPic30F4011 có tới 10 kênh tương tự lối vào được kết hợp cả lấy mẫu và giữ mẫu. Lối ra của bộ lấy và giữ mẫu là lối vào của bộ chuyển đổi - tạo ra kết
quả biến đổi. Điện thế tương tự chuẩn có thể là điện thế nguồn cung cấp (AVDD/AVSS) hoặc
mức điện thế của các chân VREF+/VREF-.
Bộ biến đổi ADC của dsPIC bao gồm 6 thanh ghi:
- Ba thanh ghi điều khiển A/D: ADCON1, ADCON2, ADCON3 Chức năng điều khiển hoạt động của ADC.
- Thanh ghi lựa chọn lối vào: ADCHS Lựa chọn kênh vào để biến đổi. - Thanh ghi cấu hình cổng ADPCFG
Cấu hình cổng trở thành lối vào tương tự hoặc vào ra số. - Thanh ghi lựa chọn quét
2.3.7.1. Bộ đệm kết quả biến đổi A/D
Module ADC sử dụng RAM để làm bộ đệm lưu kết quả biến đổi A/D. Có tất cả 16 vị trí trong RAM được sử dụng để làm việc này, đó là: ADCBUF0, ADCBUF1,
ADCBUF2, ..., ADCBUFE, ADCBUFF. RAM chỉ có độ rộng 12-bit nhưng dữ liệu chứa trong nó lại là một trong bốn dạng số 16-bit đó là: nguyên, nguyên có dấu, phân số, và phân số có dấu.
2.3.7.2. Các bước thực hiện biến đổi A/D
a) Thiết lập cấu hình cho module A/D
- Chọn xung nhịp cho biến đổi.
- Cho phép module ADC có thể hoạt động.
b) Cấu hình cho ngắt ADC nếu cần
- Xóa cờ ngắt ADIF
- Lựa chọn mức ưu tiên ngắt cho biến đổi A/D
c) Bắt đầu lấy mẫu
d) Đợi đủ thời gian cần thiết để hoàn thành e) Kết thúc lấy mẫu, bắt đầu biến đổi
f) Đợi biến đổi kết thúc bởi một trong hai điều kiện sau: - Đợi ngắt từ ADC
- Đợi bit DONE được set
Chương 3. Thực Nghiệm 3.1. Phần Cứng
Phần cứng được em thiết kế dựa trên sơ đồ khối của một bộ khuyếch đại lock in số (Digital Lock-In Amplifiers). Phần cứng thiết kế có những khối chính sau đây:(Hình 3.0)
- Khối nguồn
- Khối các bộ lọc thông thấp (lowpass filter, LP Sallen key filter) - Khối biến đổi DAC
- Khối khuyếch đại tín hiệu vào - Khối LCD
- Khối xử lý số trung tâm
Hình 3.1. Sơ Đồ Khối Phần Cứng Salenkey Filter Khuyếch Đại Lowpass Filter Màn Hình Hiển Thị LCD DAC R/2R Khối Xử Lý Số Trung Tâm dsPic30F4011 (DSP) Sensor Nguồn 5 V Nguồn +12V, -12V
3.1.1. Các khối nguồn
Các khối nguồn cần thiết kế để cung cấp nguồn cho toàn bộ các khối thành phần của bộ khuyếch đại lock in. Cụ thể ở đây ta cần có nguồn +5V để cấp cho khối xử lý số trung tâm (Vi điều khiển dsPic30F4011) và màn hình hiển thị LCD, nguồn +12V,-12V để cung cấp cho khối bộ lọc số và khối khuyếch đại tín hiệu vào. Sơ đồ của các khối nguồn này được trình bày trên Hình 3.2.
3.1.2. Khối các bộ lọc thông thấp
Trong khóa luận này, cần sử dụng 2 bộ lọc thông thấp. Một bộ lọc thông thấp cơ bản và một bộ lọc thông thấp Sallen Key Filter để thỏa mãn yêu cầu cắt tần số tại 10kHz.
Sơ đồ bộ lọc thông thấp Sellen Key cơ bản được trình bày trên hình 3.3
Hình 3.3. Sơ đồ bộ lọc Sallen Key cơ bản
Sơ đồ bộ lọc Sallen Key dùng trong khóa luận được trình bày trên hình 3.4
Hình 3.4. Sơ dồ bộ lọc Sallen Key được sử dụng trong khóa luận
Để thỏa mãn tần số cắt là 10kHz trong khóa luận này em sử dụng tụ C2 = 1000pF => C1 = 2C2 = 1000pF
=> R1 = R2 = 0.707 / (2 · π · fo · C2) = 0.707 / (2 · π · 10kHz · 1000pF) = 11.2 K
Bộ lọc thông thấp còn lại được thiết kế để làm trơn tín hiệu sau khi qua bộ khuyếch đại analog.(xem hình 3.5)
Hình 3.5. Bộ lọc thông thấp low pass 3.1.3. Khối biến đổi DAC
3.1.3.1. Hoạt động của DAC và tính chất của nó
Hình 3.6. Ví dụ về bộ biến đổi DA 4 bít
Mục đích của bộ biến đổi DA, như đã nêu, là biến đổi tín hiệu nhị phân n bít thành dòng hay áp tương ứng. Hình 3.6 là một ví dụ về một bộ biến đổi DA 4 bít đơn giản.
Về nguyên tắc bộ chuyển đổi số-tương tự tiếp nhận một mã số n bít song song hoặc nối tiếp ở lối vào và biến đổi ra dòng điện hoặc điện áp tương ứng ở lối ra. Dòng điện hay
Một bộ DAC hoàn chỉnh bao gồm ba phần tử cơ bản:
Ðiện áp tham chiếu ổn định bên ngoài (Vref)
DAC cơ sở
Khuếch đại thuật toán
Sơ đồ khối của bộ DAC được trình bày trên Hình 3.7
Hình 3.7. Sơ đồ khối DAC
Như vậy điện áp đầu ra của bộ biến đổi V0 sẽ phụ thuộc vào mã nhị phân đầu vào
theo công thức sau:
) 2 B ... 2 B 2 (B V V n n 1 1 0 0 ref 0 = + + +
Trong đó B0 là bít thấp nhất và Bn là bít cao nhất của mã nhị phân đầu vào, Vref là điện áp tham chiếu.
DAC cơ sở cấu tạo bằng những chuyển mạch tương tự được điều khiển bởi mã số đầu vào và các điện trở chính xác. Các chuyển mạch tương tự điều chỉnh dòng điện hay điện áp trích ra từ điện áp tham chiếu và tạo nên dòng điện hay điện áp ở đầu ra tương ứng với mã số đầu vào.
Mạch khuếch đại thuật toán dùng ở đây để chuyển đổi dòng thành áp đồng thời có chức năng tầng đệm.
Bộ biến đổi DAC có đặc điểm là đại lượng ra tương tự không liên tục, độ rời rạc của đầu ra phụ thuộc vào số bít của bộ biến đổi, những DAC có số bít đầu vào lớn thì tổng số nấc điện áp ra càng lớn và khoảng cách giữa các nấc càng nhỏ.
3.1.3.2. Các tham số của bộ chuyển đổi DA
- Ðộ phân giải (Solution): Liên quan đến số bít của một DAC. Nếu số bít là n thì số
trạng thái của tín hiệu nhị phân là 2n nghĩa là sẽ có 2n mức điện thế (hoặc dòng điện) khác
nhau, do đó có độ phân giải là 1/2n. Ðộ phân giải càng bé thì điện thế (hoặc dòng điện đầu
ra) càng có dạng liên tục, càng gần với thực tế và ngược lại.
- Ðộ chính xác (Accuracy): Có thể đánh giá chất lượng của một DAC bằng sai số của nó. Ðại lượng biểu diễn sai số là độ lệch tối đa giữa đại lượng ra và một đường thẳng nối điểm 0 với điểm FS (Full Scale) trên đặc tuyến chuyển đổi DA.
- Ðộ tuyến tính (Linearity): Ðộ tuyến tính của DAC cho biết độ lệch điện áp so với một đường thẳng đi qua những điểm nút của đặc tuyến chuyển đổi. Ðó là đặc tính thường gặp nhất với DAC. Ðường cong đặc tuyến là đơn điệu nếu sự thay đổi độ lệch trên là không đổi dấu. Ðể có một DAC đơn điệu, độ lệch này phải lớn hơn 0 cho mỗi nấc thang. Ngoài ra mức độ tuyến tính của DAC phải nhỏ hơn hoặc bằng 1/2 LSB để nó trở nên đơn điệu. Như vậy 1/2 LSB là đặc trưng về giới hạn đơn điệu của một DAC.
- Phi tuyến vi sai: là đại lượng cho biết độ lệch giữa giá trị thực tế và lý tưởng cho một nấc điện áp ra ứng với mỗi thay đổi của mã số vào. Ðại lượng này cho biết về độ nhẵn của đường cong đặc tuyến đối với DAC.
- Thời gian thiết lập: đối với một DAC là thời gian cần thiết để điện áp ra đạt tới giá trị tới hạn sai số xung quanh giá trị ổn định. Giới hạn này thường là =½ LSB hoặc biểu diễn bằng giá trị % FS.
Thời gian thiết lập trước hết phụ thuộc vào kiểu chuyển mạch, kiểu điện trở và kiểu khuếch đại dùng để xây dựng bộ DAC. Thông thường nó được định nghĩa bằng thời gian từ khi điện áp bắt đầu thay đổi cho tới khi đạt tới vùng giới hạn sai số cho trước. Nó không
3.1.3.3. Các mạch DAC điển hình
Các DAC có thể được xây dựng theo một trong những kiểu mạch sau:
Chuyển đổi DA theo kiểu điện trở trọng lượng
Chuyển đổi DA theo kiểu mạch R-2R
3.1.3.3.1. Bộ chuyển đổi DA theo kiểu điện trở trọng lượng (Weighted resistor DAC)
Mạch gồm một nguồn điện áp chuẩn Uch, các chuyển mạch, các điện trở có giá trị lần
lượt là R, R/2, R/4, ... , R/2n-1 và các mạch khuếch đại thuật toán.(Xem hình 3.7)
Với mạch như trên, khi một khoá điện nào được nối với nguồn điện thế chuẩn thì sẽ cung cấp cho bộ khuếch đại thuật toán (KÐTT) dòng điện.
Dòng điện này độc lập với các khoá còn lại. Như vậy có thể thấy ngay rằng biên độ điện áp ra phụ thuộc vào các vị trí được đóng hay mở khoá nghĩa là được nối với điện áp
chuẩn Uch hay nói cách khác phụ thuộc vào giá trị các bít tương ứng trong tín hiệu số đưa
vào mạch chuyển đổi.
Hình 3.8. DAC theo phương pháp điện trở trọng lượng
Một cách tổng quát, với một DAC có n bít thì tín hiệu ra được tính theo công thức:
Ura =
R R Uch. 1
− (2n-1.Bn-1 + 2n-2.Bn-2 + ... + 21.B1 + 20.B0)
Mạch có ưu điểm là đơn giản, nhưng nhược điểm là độ chính xác và tính ổn định của kết quả phụ thuộc nhiều vào trị số tuyệt đối của các điện trở và sự ổn định của chúng trong các môi trường khác nhau. Ngoài ra còn phụ thuộc vào tính ổn định và độ chính xác của nguồn điện áp chuẩn.
3.1.3.3.2. Bộ chuyển đổi DA theo kiểu thang điện trở R-2R (R-2R ladder)
Hình 3.9. DAC theo phương pháp mạch R-2R
DAC với thang điện trở R-2R khắc phục được một số nhược điểm của DAC điện trở trọng lượng.
Mạch chỉ gồm hai điện trở R và 2R mắc theo hình thang với nhiều khoá điện (mỗi