Chương 1: Tổng quan Giới thiệu sơ lược về tình hình nghiên cứu hiện nay cũng như tính cấp thiết của đề tài. Chương 2: Cơ sở lý thuyết Nêu các lý thuyết cần thiết sử dụng trong đề tài. Chương 3: Thiết kế và xây dựng hệ thống Trình bày sơ đồ hệ thống và giải thích hoạt động của hệ thống. Đưa ra các phương pháp lựa chọn phần cứng và xác định lựa chọn phù hợp với yêu cầu của đề tài.
Tính toán đưa ra giải thuật, thuật toán phần mềm. Chương 4: Kết quả thực hiện Trình bày kết quả đã thực hiện về phần cứng và phần mềm, đưa ra nhận xét. Chương 5: Kết luận và phạm vi ứng dụng 4 do an Nêu các ưu điểm và nhược điểm của đề tài, hướng khắc phục và phạm vi sử dụng trong thực tế. 5 do an CHƯƠNG 2: CƠ SỞ LÝ THUYẾT 2.
Vi điều khiển DSPIC30F4011 2. Tổ ng quan về vi điề u khiể n DSPIC30F4011 DSPIC30F4011 là mô ṭ chíp xủ ̛ lí ma ̣nh với bô ̣ xủ ̛ lí 16 bit. Tốc đô ̣ xủ ̛ lí có thể lên tới 30 triê ̣u lê ̣nh mô ṭ giây, có thể thư ̣c hiê ̣n chú ̛ c nang của mô ṭ bô ̣ xủ ̛ lí tin ́ ̂ ̂ ́ ̂ ̂ hie ̣u so. DsPIC còn đươ ̣c trang bi ̣bo ̣ nhớ flash, bo ̣ nhớ EEPROM và các ngoa ̣i vi hiê ̣u nang cao và rất đa da ̣ng các thư viê ̣n phần mềm cho phép thư ̣c hiê ̣n các giải thuâ ̣t nhúng với hiê ̣u suất cao trong mô ṭ khoảng thời gian ngá n.
Vì vâ ̣y, DSPIC đươ ̣c ú ̛ ng du ̣ng rô ng ̣ raĩ trong các ú ̛ ng du ̣ng xủ ̛ lí tín hiê ̣u số, đo lường và điều khiển tư ̣ đô ng. ̣ Mô ṭ số đa ̣t điểm của DSPIC30F4011: Bộ nhớ chuong trình 48K. Bộ nhớ RAM 2 Kbytes. Bộ nhớ EEPROM 1Kbyte.
Xung clock ngoài tợ̂́i đa lện tớ i 40MHz. 5 timer 16 bit cớ thệ̂̉ ghé̛p thành timer 32 bit Chệ̛́ độ bá̛ t giữ, so sá̛nh, điệ̀u rộ ng xung 16 bit. Giao tiệ̛́p SPI, I 2 C, UART, CAN. 6 kệnh phá̛t PWM chuyện dùng điệ̀u khiệ̂̉n độ ng co.
Module QEI chuyện đoc encoder. ADC 10 bit tợ̂́c độ cao.1: Sơ đồ chan dsPIC30F4011 Hin Hin ̂̀ h 2. Ngá t DSPIC30f4011 có 30 nguồn ngá t. Bảng vecto ngá t đươ ̣c đa ̣t gần bô ̣ nhớ chương triǹ h ta ̣i điạ chỉ 0x000004.
Bô ̣ điều khiển ngá t điều khiển các ngá t. Thiết lâ ̣p các ngá t thông qua các thanh ghi đa ̣c biê ̣t sau: IFS0<15:0>, IFS1<15:0>, IFS2<15:0> : chú ̛ a tất cả các cờ ngá t. Cờ ngá t đươ ̣c bâ ̣t lên bởi ngoa ̣i vi của vi điều khiển hoa ̣c tín hiê ̣u tù ̛ bên ngoài và đươ ̣c xóa bà ng phần mềm. IEC0<15:0>, IEC1<15:0>, IEC2<15:0> : chú ̛ a tất cả các bit điều khiển cho phép ngá t.
Các bit này đươ ̣c sủ ̛ du ̣ng để bâ ̣t các ngá t riêng biê ̣t tù ̛ các thiết bi ̣ngoa ̣i vi hay tín hiê ̣u tù ̛ bên ngoài. 7 do an IPC0<15:0>. IPC11<7:0> : thiết lâ ̣p các ngá t ưu tiên thông qua 12 thanh ghi. IPL<3:0> : các mú ̛ c đô ̣ ưu tiên đươ ̣c lưu trữ trong các bit IPL.
IPL<3> nà m trong thanh ghi CORCON, IPL<2:0> nà m trong thanh ghi tra ̣ng thái. INTCON1<15:0>, INTCON2<15:0>: điều khiển ngá t toàn cu ̣c. INTCON1 bao gồm các bit cờ điều khiển các ngá t khi có lỗi xủ ̛ lí. INTCON2 điều khiển các tiń hiê ̣u yêu cầu ngá t ngoa ̣i vi và viê ̣c sủ ̛ du ̣ng bảng chuyển đổi các vecto ngá t.
Tất cả các nguồn ngá t có thể đươ ̣c người dùng gán cho mô ṭ trong 7 cấp đô ̣ ưu tiên thông qua các thanh ghi IPCx. Nếu bit NSTDIS (INTCON1 <15>) đươ ̣c thiết lâ ̣p, tất cả các ngá t đều bi ca ̣ ̂ ́ m. Bo đinh thồ i Timer Trong vi điều khiển DSPIC40F4011 có tới nam bô ̣ đinh ̣ thời (Timer) 16- bit. Trong đó các Timer có thể hoa ̣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ô ṭ Timer 32 bit.
Timer 1 có thể hoa ̣t đô ng ̣ với nguồn ta ̣o dao đô ng ̣ tần số thấp 32KHz, và chế đô ̣ không đồng bô ̣ với nguồn ta ̣o dao đô ng ̣ ngoài. Đa ̣c điểm riêng biê ̣t của Timer 1 đó là có thể dùng trong các ú ̛ ng du ̣ng thời gian thư ̣c. Timer 1 có thể hoa ̣t đô ng ̣ trong ba chế đô :̣ Timer 16-bit: trong chế đô ̣ này, timer sẽ tang sau mỗi chu kỳ lê ̣nh đến khi giá tri ̣ của timer bà ng giá tri ̣ của thanh ghi chu kỳ PR1 (Period Register) sẽ reset về ‘0’ và tiếp tu ̣c đếm. Counter đồng bô ̣ 16-bit: trong chế đô ̣ này, timer sẽ tang ở mỗi sườn lên của của xung nhip̣ ngoài mà đươ ̣c đồng bô ̣ với pha của các xung nhip̣ trong.
Timer tang đến giá tri ̣ nà m trong thanh ghi PR1 thì dù ̛ ng và reset timer về ‘0’ rồi tiếp tu ̣c đếm lên. Counter không đồng bô ̣ 16-bit: khi hoa ̣t đô ng̣ trong chế đô ̣ này, timer sẽ tang dần sau mỗi sườn lên của xung nhip̣ bên ngoài tác đô ng ̣ vào. Timer sẽ tang dần đến khi giá tri ̣ của nó bà ng thanh ghi PR1 thì bi ̣ reset về ‘0’ rồi la ̣i tiếp tu ̣c đếm lên. Cách tính toán giá trị timer: Xung vào timer = Xung nguồn / Prescaler Trong đó Prescaler là bộ chia tần hay còn gọi là tham số cho bộ chia của timer.
Tham số này được cài đặt bởi người dùng theo các tùy chọn định trước. 8 do an Xung vào timer tức là tần số lệnh - Fcy. Cứ mỗi 1 tần số lệnh thì bộ đếm timer0 sẽ tăng lên 1 đơn vị. Giả sử nếu ta khai báo đi đường 1, tức ko qua bộ prescaler thì 1 xung nguồn (tần số máy - Fosc) = xung vào timer (tần số lệnh - Fcy).3: Sơ đồ khó i Timer 1 Hin • Giả sử nếu ta khai báo xài prescaler là 1:256 chẳn hạn.
Thì tức là bộ đếm timer0 sẽ tăng lên 1 sau 256 chu kỳ lệnh. Ý nói rằng phải có 256 xung vào thì sẽ có 1 xung ra. • Timer0 của dòng DSPIC có thể hoạt động ở chế độ 8 bit(0-255) hoặc 16 bit(0-65535). Nguyên lý hoạt động của timer0 như sau: Nếu ở chế độ 16bit.
Khi có một xung timer clock thì bộ đếm TMR0L sẽ tăng lên 1 đơn vị. Ví dụ hiện tại là 358 sau khi có thêm 1 timer clock thì giá trị của nó là 359. Đến khi nào giá trị của TMR0L = 65535, và nhận tiếp 1 giá trị thì nó sẽ trở về 0, đồng thời sẽ bật cờ ngắt TIR0IF lên. Lúc này chương trình ngắt Timer0 sẽ chạy.
Cờ ngắt này phải được xóa đi sau khi chạy xong chương trình ngắt để lần ngắt sau nó được bật lên lại. Bo chuyể n đổ i tương tự sang só ADC Vi điều khiển DSPIC30F4011 cung cấp bô ̣ chuyển đổi tương tư ̣ số 10 bit với 10 kênh ngõ vào từ chân E0 đến E1. Điê ̣n thế chuẩn có thể là nguồn cung cấp (Vdd/Vss) hoa ̣c mú ̛ c điê ̣n thế của các chân V REF+ /V REF- bô ̣ ADC có 6 thanh ghi. Ba thanh ghi điều khiển: ADCON1, ADCON2, ADCON3 điều khiển hoa ̣t đô ng ̣ của ADC.
9 do an Thanh ghi lư ̣a cho ̣n kênh vào để biến đổi ADCSH. Thanh ghi cấu hình ngõ vào là tương tư ̣ hay số ADPCFG. Thanh ghi lư ̣a cho ̣n quét ADCSSL. DSPIC cũng có thể lấy mâũ đồng thời 2 kênh hoa ̣c 4 kênh cùng lúc, lấy mâũ tuần tư ̣, thời gian lấy mâũ và chuyển đổi có thể thiết lâ ̣p trước, có thể kích chuyển đổi bà ng mô ṭ sư ̣ kiên do ngoa ̣i vi khác ta ̣o ra.
Kết quả chuyển đổi đươ ̣c lưu trong bô ̣ đê ̣m gồm 16 thanh ghi ADCBUF0 đến ADCBUFF. Các bước tiến hành chuyển đổi ADC: Cấu hình chân là ngõ vào tương tự, cho ̣n điê ̣n áp chuẩn. Cho ̣n kênh cần chuyển đổi, cho ̣n xung nhip̣ chuyển đổi. Bâ ̣t ADC hoa ̣t đô ng.
̣ Xóa cờ ngắt, cho ̣n mú ̛ c ưu tiên ngá t cho ADC. Bá t đầu lấy mâũ , đơ ̣i kết thúc lấy mâũ và bá t đầu chuyển đổi. Đo ̣c kết quả từ bô ̣ đê ̣m.4: Sơ đồ khó i ADC Hin 2. Khó i PWM cho điề u khiể n đong cơ DSPIC30F4011 có 6 chân phát PWM với 3 ca ̣p tương ú ̛ ng chuyên dùng cho điều khiển đô ng ̣ cơ với các đa ̣c điểm: 6 chân phát PWM với 3 bô ̣ ta ̣o chu ki.̀ Đô ̣ phân giải 16 bit.
Chế đô ̣ ta ̣o xung tư ̣ do: thanh ghi đếm đươ ̣c đếm lên bà ng giá tri ̣trong PTPER thì PTMR bi ̣reset về 0, sau đó tiếp tu ̣c đếm lên nếu PTEN còn bâ ̣t. Chế ta ̣o đơn xung: cũng giống như chế đô ̣ ta ̣o xung tư ̣ do chỉ khác ở chỗ khi PTMR bà ng PTPER thì bit PTEN sẽ bi ̣ xóa bà ng phần cú ̛ ng để ngan bô ̣ tao xung hoa ̣t đô ng ̣ tiếp. Chế đô ̣ ta ̣o xung canh giữa (đếm lên xuống): thanh ghi sẽ đếm lên khi bà ng giá tri ̣ trong PTPER thì sẽ đảo hướng đếm bà ng cách đảo bit PTDIR. Ngá t khi thanh ghi PTMR trở về 0.
Chế đô ̣ ta ̣o xung canh giữa câ ̣p nhâ ̣t kép: ngá t xảy ra khi PTMR bà ng không cũng như PTMR = PTPER. Chế đô ̣ này giúp câ ̣p nhâ ̣t đô ̣ rô ng ̣ xung trong chu kì kép cũng như ta ̣o ra da ̣ng sóng không đều khi canh giữa phù hơ ̣p với mô ṭ số ú ̛ ng du ̣ng điều khiển. Các chân phát PWM có thể hoa ̣t đô ng ̣ đô c̣ lâ ̣p hay giao hoán nhau. Có thanh ghi ta ̣o thời gian chết DTCON, tránh trùng dâñ khi ta ̣o xung kić h bô ̣ nghich ̣ lưu.
Có thể áp đa ̣t giá tri ̣logic ngõ ra thông qua thanh ghi OVDCON. Có thể ta ̣o sư ̣ kiê ̣n kić h chuyển đổi ADC.