MỤC LỤC
LỜI CẢM ƠN
LỜI NÓI ĐẦU
DẪN NHẬP:
ĐẶT VẤN ĐỀ
MỤC TIÊU ĐỀ TÀI
ĐIỂM MỚI ĐỀ TÀI
CHƯƠNG 1 - HỆ THỐNG XE ĐIỆN HIỆN NAY
1.1 Các loại hình xe điện đang hiện hành trên thế giới và tại Việt Nam. 1
1.2 Vai trò và công dụng của xe lăn điện hiện nay 5
CHƯƠNG 2 - NỘI DUNG ĐIỀU KHIỂN XE LĂN ĐIỆN
2.1 Các yếu tố ảnh hưởng đến tốc độ xe lăn điện. 7
2.2 Các phương pháp điều khiển tốc độ xe lăn điện. 8
2.2.1 Phương pháp điều khiển động cơ điện 8
2.2.2 Phương pháp điều khiển xe lăn điện. 10
2.3 Các chế độ hoạt động của xe lăn điện. 14
2.3.1 Chế độ chạy chậm 14
2.3.2 Chế độ chạy đường bằng phẳng 15
2.3.3 Chế độ chạy đường dốc 16
2.4 Các lỗi được cảnh báo trong quá trình hoạt động của xe lăn điện. 17
2.4.1 Cảnh báo mức pin (acquy) 17
2.4.2 Cảnh báo lỗi động cơ 18
2.4.3 Cảnh báo lỗi công suất điều khiển 18
2.4.4 Cảnh báo quá dòng định mức 18
2.5 Quy trình điều khiển xe lăn điện. 19
CHƯƠNG 3 - GIỚI THIỆU VỀ VI ĐIỀU KHIỂN PIC 16F876 VÀ PHƯƠNG PHÁP LẬP TRÌNH ĐIỀU KHIỂN XE LĂN ĐIỆN.
3.1 Vi điều khiển PIC họ 16F87X đặt trưng là PIC 16F876 20
3.2 Cấu trúc các lệnh và phương pháp lập trình điều khiển cho Pic bằng ngôn ngữ VisuaC. 24
3.2.1 Các tập lệnh PIC 24
3.2.2 Những bước chuẩn bị khi làm việc với PIC 33
3.2.3 Mạch nạp 33
3.2.4 Các bước cơ bản để nạp chương trình vào PIC 34
CHƯƠNG 4 - THIẾT KẾ, THI CÔNG VÀ LẬP TRÌNH ĐIỀU KHIỂN CHO XE LĂN ĐIỆN
4.1 Sơ đồ khối tổng quát mô hình xe lăn điện. 40
4.2 Cấu tạo và chức năng từng khối trong mô hình điều khiển xe lăn điện. 41
4.2.1 Cấu tạo và chức năng các phần cơ khí liên quan 41
4.2.2 Cấu tạo, tính toán và thiết kế các mạch liên quan cho các khối chức năng của bộ điều khiển 44
4.3 Một số hình ảnh của bộ điều khiển sau khi đã hoàn thành. 52
4.4 Giải thuật và lập trình điều khiển bộ điều khiển tối ưu cho xe lăn điện. 52
4.4.1 Lưu đồ giải thuật: 53
4.4.2 Chương trình điều khiển 56
CHƯƠNG 5 – KẾT LUẬN CỦA ĐỀ TÀI
5.1 Kết quả hoạt động của bộ điều khiển 59
5.2 Hướng phát triển của đề tài. 60
5.3 Kết luận của đề tài. 61
TÀI LIỆU THAM KHẢO
61 trang |
Chia sẻ: maiphuongdc | Lượt xem: 4116 | Lượt tải: 2
Bạn đang xem trước 20 trang tài liệu Đồ án Thiết kế và thi công xe lăn điện, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
Cụ thể như cảm biến kết hợp với một cuộn dây hay những tấm thép từ xung quanh cuộn cảm thì có thể đo được dòng điện.
Thông thường một cảm biến Hall kết hợp với dòng điện chạy trong thiết bị để làm khóa đóng ngắt kỹ thuật số (on/off).
Trong đề tài này, cảm biến Hall được sử dụng như một thiết bị để thay đổi Analog tín hiệu điện áp cung cấp vào mạch điều khiển. Mỗi Hall_sensor đều có một khoảng điện áp (theo quy định của nhà sản xuất) để có thể thay đổi tín hiệu analog đưa vào điều khiển. Qua khảo sát thực tế và thử nghiệm nhiều lần, ta đo được mức điện áp thay đổi trong cảm biến Hall là từ 2,7V đến 4,8V. Trên cơ sở đó ta quy định mức xung trong chương trình điều khiển thay đổi cho phù hợp với từng loại tay ga hay nói cách khác là cho từng loại cảm biến Hall khác nhau.
Hình 2.7 Cảm biến Hall và nguyên tắc hoạt động
Hall_sensor được kết hợp tạo thành hệ thống tay ga, việc điều chỉnh tay ga tăng hay giảm sẽ tác động trực tiếp đến điện áp điều khiển xe lăn điện. Mỗi Hall_sensor được cấu tạo như sau:
Phạm vi thay đổi của Hall_Sensor
N
S
N
S
Hình 2.8: Cấu tạo của một Hall_sensor
Hình 2.9 Ứng dụng của Hall_sensor
2.3 Các chế độ hoạt động của xe lăn điện:
Khác với các loại xe lăn điện thông thường, với bộ điều khiển kết nối với hệ thống cơ khí được thiết kế tương đối hoàn hảo ta có thể vận hành và điều khiển được xe lăn hoạt động khá tốt.
Do sử dụng nguồn điện Acquy trong quá trình vận hành nên khi hoạt động, xe lăn điện càng tiết kiệm năng lượng càng mang lại hiệu quả hoạt động cao hơn. Đồng thời nhằm tạo ra sự thuận lợi và tối ưu nhất trong việc điều khiển, nhóm sinh viên đã lập trình cho bộ nguồn với 3 chế độ hoạt động, đây cũng là điểm mới và mang tính thích nghi cao của đề tài, các chế độ như sau:
Chạy chậm.
Chạy ở đường bằng phẳng.
Chạy ở đường dốc.
2.3.1 Chế độ chạy chậm:
Chế độ hoạt động chạy chậm được lập trình nhằm phù hợp cho việc di chuyển xe trong những khu vực đông người, khó di chuyển ví dụ: siêu thị, hội trường….
Trong chế độ này, nhóm sinh viên đã khảo sát sơ bộ điều kiện di chuyển cho phù hợp và lập trình vận tốc tối đa trong chế độ này là 6 Km/h chiếm tỉ lệ 23,1% công suất tối đa của bộ nguồn cung cấp.
0%
23,1%
0
max
˜6Km/h
Ga
Hình 2.10 Biểu đồ điều khiển tay ga ở chế độ chạy chậm.
Với chế độ này vừa đảm bảo cho người sử dụng điều khiển xe một cách an toàn vừa đảm bảo tiết kiệm năng lượng cho xe. Theo tính toán số liệu khi hoạt động ở chế độ chạy chậm chúng ta có thể tiết kiệm được khoảng 10% năng lượng tiêu hao so với khi cho xe hoạt động liên tục ở chế độ chạy đường bằng phẳng. Với những lợi thế về năng lượng như trên, việc lựa chọn chế độ hoạt động hợp lý: sẽ giúp người sử dụng tiết kiệm tối đa về năng lượng.
2.3.2 Chế độ chạy đường bằng phẳng:
Khi hoạt động ở chế độ chạy đường bằng phẳng việc điều chỉnh tốc độ xe lăn điện sẽ đạt được tốc độ tối đa. Trong đề tài nhóm sinh viên lập trình cho tốc độ tối đa của xe lăn điện là 26 Km/h, điều khiển xe lăn chạy nhanh hay chậm tuỳ thuộc vào cách điều khiển tay ga của người sử dụng.
Đây là chế độ hoạt động thông thường của xe lăn điện, ở chế độ này việc đảm bảo cho động cơ xe lăn đạt được tốc độ ổn định và bảo đảm tính an toàn cao trong việc vận hành xe.
0%
100%
0
max
˜26Km/h
Ga
Hình 2.11 Biểu đồ điều khiển tay ga ở chế độ chạy đường bằng phẳng
Ở chế độ chạy đường bằng phẳng, tốc độ xe lăn đạt được giá trị tối đa, đồng thời bảo vệ quá dòng thấp(<= 20A), ít tiêu hao năng lượng do công vô ích sinh ra, đây là chế độ hoạt động tốt nhất cho động cơ xe.
2.3.3 Chế độ chạy đường dốc:
Cũng như khi hoạt động ở chế độ chạy đường bằng phẳng, chạy ở chế độ đường dốc tốc độ xe lăn điện vẫn đạt giá trị tối đa là 26 Km/h, tuy nhiên phần năng lượng tiêu hao để đạt được giá trị tối đa của tốc độ xe là khá lớn vì ảnh hưởng của công vô ích gây ra. Khi di chuyển trong địa hình dốc và cao sẽ có nhiều yếu tố cản trở sự di chuyển của xe, do vậy để đạt được tốc độ tối đa là 26Km/h không những đòi hỏi có một lực kéo lớn mà mạch điều khiển phải có khả năng bảo vệ quá dòng cao(gần 50A)
Chính vì thế ở chế độ hoạt động thứ ba này đòi hỏi có một năng lượng khá lớn mới có thể đảm bảo được tốc độ tối đa của động cơ. Trong điều kiện sử dụng nguồn điện acquy là nguồn điện chính trong toàn bộ hoạt động của bộ điều khiển thì đây là một bất lợi khá lớn.
Với yêu cầu đó tác giả đã thiết kế mạch và lập trình điều khiển cho PIC 16F876A hình thành một chế độ hoạt động vừa đảm bảo được tốc độ tối đa của động cơ, vừa bảo đảm khả năng quá dòng và đặc biệt là giảm việc tiêu hao năng lượng. Đó cũng là tính tối ưu và ưu thế vượt trội của xe lăn điện so với những chiếc xe lăn thông thường.
0%
100%
0
max
˜26Km/h
Ga
Hình 2.12 Biểu đồ điều khiển tay ga ở chế độ chạy đường dốc.
Đối với những xe lăn thông thường khi leo dốc mức năng lượng tiêu hao là khá lớn, với việc sử dụng bộ điều khiển tối ưu vào điều khiển xe lăn điện chúng ta có thể tiết kiệm trên 5% mức năng lượng tiêu hao.
Tuy vậy do những bất lợi về yếu tố năng lượng (ở chế độ hoạt động này mức năng lượng tiêu hao cần thiết trong cùng một khoảng thời gian và trong cùng một tốc độ điều khiển cao hơn chế độ xe chạy ở đường bằng phẳng là 6,5%), người sử dụng phải hạn chế vận hành chế độ hoạt động này trong những trường hợp không cần thiết để bộ nguồn hoạt động bền hơn, ít tiêu hao năng lượng hơn.
2.4 Các lỗi được cảnh báo trong quá trình hoạt động của xe lăn điện
Hệ thống đèn led cảnh báo là một trong những lợi thế và là một yếu tố cần thiết trong quá trình vận hành xe lăn điện. Nhờ hệ thống đèn cảnh báo người sử dụng sẽ dễ dàng nhận biết được những lỗi và các trạng thái của các yếu tố như mức pin, độ nhạy của cảm biến, động cơ…tạo sự an toàn và tin cậy cho người sử dụng.
Do đó hệ thống cảnh báo hoạt động có ổn định hay không quyết định tính năng tin cậy cho xe lăn điện.
2.4.1 Cảnh báo mức pin (acquy):
Bộ điều khiển hoạt động dựa trên nguồn điện được cấp chính từ acquy, chính vì vậy đảm bảo cho nguồn acquy luôn ổn định là điều kiện tiên quyết để mạch hoạt động tốt hay không tốt.
Chính vì vậy khi xe hoạt động chúng ta cần biết được năng lượng hiện đang sử dụng cho xe là bao nhiêu, trên nhu cầu đó tác giả đã lập trình và đưa các mức cảnh báo mức pin bằng sáu LED như sau :
Khi acquy đầy sáu LED sẽ sáng đều, khi mức pin giảm dần đồng thời số LED sẽ tắt dần từ 6 đến 1.
Khi Acquy sắp hết, còn khoảng 2 nấc pin (LED 1 và LED 2 sáng) thì hai đèn LED sẽ nhấp nháy liên tục, LED tắt sau khi nguồn vượt qua ngưỡng quy định.
Với những tín hiệu cảnh báo trên ta có thể xác định chính xác mức pin của bộ nguồn đạt ở mức nào để có thể dễ dàng điều chỉnh cho hợp lý.
2.4.2 Cảnh báo lỗi động cơ:
Một yếu tố tiếp theo quyết định xe điện hoạt động ổn định hay không chính là động cơ của xe, động cơ xe hoạt động tốt đảm bảo về độ rung cũng như sự ổn định công suất thì xe lăn sẽ hoạt động tốt. Đây cũng là một vấn đề quan tâm của người sử dụng.
Tác giả đã nghiên cứu và lập trình đưa ra tín hiệu cảnh báo trên sáu LED. Khi có hiện tượng không ổn định trong quá trình hoạt động của động cơ (quá tải, quá dòng…), mạch điều khiển trong bộ nguồn sẽ nhận được tín hiệu và xuất giá trị làm cho sáu đèn LED chớp tắt liên tục. Các LED sẽ sáng lại bình thường (ứng với mức pin) khi sự cố đã được xử lý.
2.4.3 Cảnh báo lỗi công suất điều khiển:
Cũng như các yếu tố trên, công suất của mạch điều khiển cũng ảnh hưởng khá lớn đến sự hoạt động của xe lăn điện, công suất được đảm bảo thì động cơ sẽ chạy đúng yêu cầu của người sử dụng. Công suất là yếu tố chịu ảnh hưởng của dòng và áp, và đây là những yếu tố ảnh hưởng trực tiếp đến tốc độ động cơ. Do vậy chúng ta cần phải xác định chính xác lỗi này.
Tác giả đã nghiên cứu và lập trình đưa ra tín hiệu cảnh báo trên sáu LED: khi có hiện tượng mất ổn định về công suất điều khiển, mạch trong bộ điều khiển sẽ nhận tín hiệu và xuất ra giá trị làm chớp tắt liên tục LED1 và LED6.
2.4.4 Cảnh báo quá dòng định mức:
Trong chế độ hoạt động bình thường hoặc chế độ chạy chậm, thông thường khả năng quá dòng trong mạch khá thấp(<=20A), tuy vậy khi chuyển sang chế độ hoạt động chạy ở đường dốc thì khả năng quá dòng của mạch tăng cao (<50A), nếu không có mạch bảo vệ quá dòng thì sẽ hỏng bộ điều khiển. Lỗi này người sử dụng cần đặt biệt lưu ý và cẩn thận tối đa khi vận hành. Cũng từ đó tác giả đã lập trình cảnh báo trên 6 LED như sau:
Khi có hiện tượng quá dòng trong bộ điều khiển, LED 3 sẽ nhấp nháy liên tục.
2.5 Quy trình điều khiển xe lăn điện
Nhằm đảm bảo an toàn và thuận tiện cho người sử dụng, bộ điều khiển được thiết kế và gắn vào đầu trước của xe lăn điện, điều này cũng tạo cảm giác dễ dàng cho việc điều chỉnh hướng chạy của xe.
Trước khi khởi động xe ta cần lựa chọn chế độ hoạt động của xe đã được lập sẵn như: chạy chậm, chạy đường bằng phẳng, chạy đường dốc.
Để đảm bảo sự an toàn trước khi vận hành xe, tác giả đã đề ra quy trình khởi động xe như sau:
BÓP THẮNG
NHẢ THẮNG
GIẢM GA
LÊN GA
Hình 2.13 Quy trình khởi động xe lăn điện.
Khi khởi động cần làm đúng trình tự trên thì xe lăn mới hoạt động được, việc làm đúng trình tự trên sẽ đảm bảo được hai vấn đề sau:
Kiểm tra được thắng xe có hoạt động tốt hay không bằng quy trình bóp và nhả thắng.
Kiểm tra sự hoạt động của tay ga trước khi vận hành xe lăn điện bằng quy trình lên ga và giảm ga.
CHƯƠNG 3 - GIỚI THIỆU VỀ VI ĐIỀU KHIỂN PIC 16F876 VÀ PHƯƠNG PHÁP LẬP TRÌNH ĐIỀU KHIỂN XE LĂN ĐIỆN.
3.1 Vi điều khiển PIC họ 16F87X, đặt trưng là PIC 16F876:
PIC16F876 là một vi điều khiển được chế tạo theo công nghệ RISC của hãng Microchip, có 28 chân.
Hình 3.1 Sơ đồ chân của 16F876
Các thông số chính của 16F876A:
- Tập lệnh: gồm 35 lệnh đơn, gần như các lệnh được thực hiện trong một chu kỳ
lệnh (một chu kì lệnh bằng 4 lần chu kỳ xung clock) ngoại trừ các lệnh rẻ nhánh thực hiện trong 2 chu kì lệnh.
- Tần số hoạt động: 0 – 20MHz, chu kỳ lệnh ở tần số 20MHz là 200ns
- Bộ nhớ chương trình (FLASH ROM): 8Kx14bit
- Bộ nhớ dữ liệu: gồm 368 byte RAM và 256 byte EEPROM
- Điện áp làm việc: 2V đến 5VDC
- Dòng điện điều khiển: 25mA cho cả mức HIGH và LOW
- Số nguồn ngắt: 13
- Chức năng WATCHDOG hoạt động với bộ dao động RC bên trong vi điều
khiển.
- PIC16F876A có 3 bộ timer, trong đó timer0 và timer2 8 bit, timer1 16 bit
- Có 5 kênh chuyển đổi tương tự số (ADC) 10 bit
- 2 bộ PWM với độ phân giải 10 bit
- Chỉ có khả năng giao tiếp nối tiếp.
Hình 3.2 Hình dáng và kích thước của PIC 16F876.
Cấu trúc các cổng vào/ra :
PORT A: gồm 6 chân điều khiển vào/ ra được đa hợp với 5 kênh ADC (AN0 đến AN4), cấu trúc các chân RA0-RA3 và RA5:
Hình 3.3 Cấu trúc các chân RA0-RA3 và RA5.
Khi được cấu hình như các kênh ADC các tín hiệu này chỉ là ngõ vào điện áp analog, trạng thái ngõ vào khi đọc luôn ở logic 0.
Khi không sử dụng như các kênh ADC thì các tín hiệu này được cấu hình như các ngõ ra hoặc ngõ vào tùy thuộc vào bit điều khiển hướng TRISA, nếu bit TRISA =1: tín hiệu tương ứng là ngõ vào (vì lúc này 2 mosfet N và P đều ngưng dẫn), nếu bit TRISA =0: tín hiệu tương ứng là ngõ ra, trạng thái logic ở ngõ ra phụ thuộc vào bit dữ liệu là 1, thông qua data FF và TRIS latch, ngõ ra cổng OR ở mức 0, mosfet P dẫn cung cấp Vdd đến ngõ ra, trong khi đó ngõ ra cổng AND là 0 nên mosfet kênh N ngưng dẫn, ta được ngõ ra ở mức 1. Ngược lại, nếu bit data là 0 thì mosfet P ngưng dẫn trong khi đó mosfet N dẫn kéo ngõ ra về lg 0.
Tín hiệu RA4 trong port A được đa hợp giữa nguồn cấp xung clock từ bên ngoài cho bộ timer0. Khi được cấu hình như một I/O sẽ được điều khiển bởi tín hiệu TRISA tương ứng, nếu TRISA = 1: ngõ ra cổng AND là logic 0 nên mosfet N ngưng dẫn, RA4 là ngõ vào, ngược lại: RA4 sẽ là ngõ ra cực thu để hở (open collector) và mức logic phụ thuộc data bit, nếu data bit là 1 thì mosfet N ngưng dẫn, do đó ngõ ra gần như cách ly nên thực tế thường dùng một điện trở ngoài kéo lên (pull up resistor), giá trị điện trở phụ thuộc vào dòng mức cao cần điều khiển, tuy nhiên không được vượt quá 25mA.
Xem hình sau:
Hình 3.4 Cấu trúc bên trong chân RA4
PORT B:
Cấu trúc của RB0 đến RB3:
Hình 3.5 Cấu trúc chân từ RB0 đến RB3
Có thể định cấu hình các tín hiệu này như là ngõ ra hoặc ngõ vào phụ thuộc bit TRISB tương ứng. Nếu là ngõ ra thì mosfet P luôn ngưng dẫn, tín hiệu ra phụ thuộc ngõ ra của bộ đệm, nếu là ngõ vào và nếu bit RBPU (bit 7 trong thanh ghi OPTION_REG) là 0 thì mosfet P dẫn tương đương một điện trở vài kilo ohm kéo ngõ vào lên nguồn (weak pullup resistor) để tăng dòng HIGH input.
Các tín hiệu RB4 đến RB7 có cấu trúc như sau:
Hình 3.6 Cấu trúc chân từ RB4 đến RB7
Cấu trúc các chân này tương tự như RB0-RB3 tuy nhiên khi được cấu hình như ngõ vào thì sự thay đổi trạng thái logic tại bất kì một trong 4 chân này cũng sẽ tạo ra sự kiện ngắt (interrupt on_change RB)
PORT C:
Cấu trúc của RC0 – RC2 và RC5-RC7, trong các tín hiệu này đáng quan tâm nhất là RC6 và RC7 do được đa hợp với các đường USART là TxD và RxD dùng trong trao đổi dữ liệu nối tiếp. Xem hình sau:
Hình 3.7 Caáu truùc cuûa RC0 – RC2 vaø RC5-RC7
Cấu trúc của RC3 và RC4:
Hình 3.8 Caáu truùc cuûa RC3 vaø RC4
3.2 Cấu trúc các lệnh và phương pháp lập trình điều khiển cho Pic bằng ngôn ngữ VisuaC.
Các tập lệnh PIC.
A - DELAY_MS(time)
Cú pháp : delay_ms(time)
Tham số : time - 0~255 nếu time là một biến số, 0~65535 nếu time là hằng số
Trị trả về : không
Chức năng : Tạo code để thực hiện delay một thời gian định trước. Thới gian tính bằng milisecond. Hàm này sẽ thực hiện một số lệnh nhằm delay 1 thời gian yêu cầu. Hàm này không sử dụng bất kỳ timer nào. Nếu sử dụng ngắt (interupt), thời gian thực hiện các lệnh trong khi ngắt không được tính vào thới gian delay.
Yêu cầu : #uses delay.
B - DELAY_US(time)
Cú pháp : delay_us(time)
Tham số : time - 0~255 nếu time là một biến số, 0~65535 nếu time là hằng số
Trị trả về : không
Chức năng : Tạo code để thực hiện delay một thời gian định trước. Thời gian tính bằng microsecond. Hàm này sẽ thực hiện một số lệnh nhằm delay 1 thời gian yêu cầu. Hàm này không sử dụng bất kỳ timer nào. Nếu sử dụng ngắt (interupt), thời gian thực hiện các lệnh trong khi ngắt không được tính vào thời gian delay.
Yêu cầu : #uses delay
C - SETUP_ADC()
Cú pháp : setup_adc(mode)
Tham số : mode – mode chuyển đổi Analog ra Digital bao gồm
ADC_OFF : tắt chức năng sử dụng A/D
ADC_CLOCK_INTERNAL : thời gian lấy mẫu bằng clock, clock là thời gian clock trong IC
ADC_CLOCK_DIV_2 : thời gian lấy mẫu bằng clock/2
ADC_CLOCK_DIV_8 : thời gian lấy mẫu bằng clock/8
ADC_CLOCK_DIV_32 : thời gian lấy mẫu bằng clock/32
Trị trả về : không
Chức năng : Định cấu hình cho bộ biến đổi A/D
Yêu cầu : các hằng số phải được định nghĩa trong device file PIC18F452.h
D -SETUP_ADC_PORTS()
Cú pháp : setup_adc_ports(value)
Tham số : value – hằng số được định nghĩa như sau
NO_ANALOGS : không sử dụng cổng analog
ALL_ANALOG : RA0 RA1 RA2 RA3 RA5 RE0 RE1 RE2 Ref=Vdd
ANALOG_RA3_REF : RA0 RA1 RA2 RA5 RE0 RE1 RE2 Ref=RA3
A_ANALOG : RA0 RA1 RA2 RA3 RA5
Ref=Vdd
A_ANALOG_RA3_REF : RA0 RA1 RA2 RA5 Ref=RA3
RA0_RA1_RA3_ANALOG : RA0 RA1 RA3 Ref=Vdd
RA0_RA1_ANALOG_RA3_REF : RA0 RA1 Ref=RA3
ANALOG_RA3_RA2_REF : RA0 RA1 RA5 RE0 RE1 RE2 Ref=RA2,RA3
ANALOG_NOT_RE1_RE2 : RA0 RA1 RA2 RA3 RA5 RE0 Ref=Vdd
ANALOG_NOT_RE1_RE2_REF_RA3 : RA0 RA1 RA2 RA5 RE0 Ref=RA3
ANALOG_NOT_RE1_RE2_REF_RA3_RA2 : RA0 RA1 RA5 RE0 Ref=RA2,RA3
A_ANALOG_RA3_RA2_REF : RA0 RA1 RA5 Ref=RA2,RA3
RA0_RA1_ANALOG_RA3_RA2_REF : RA0 RA1 Ref=RA2,RA3
RA0_ANALOG : RA0
RA0_ANALOG_RA3_RA2_REF : RA0 Ref=RA2,RA3
Trị trả về : không
Chức năng : Xác định cổng dùng để nhận tín hiệu analog
Yêu cầu : các hằng số phải được định nghĩa trong device file PIC18F452.h
E - SETUP_ADC_CHANNEL()
Cú pháp : setup_adc_channel(chân)
Tham số : chan : 0~7 – chọn pin để lấy tín hiệu Analog bao gồm
1 : pin A0
2 : pin A1
3 : pin A2
4 : pin A5
5 : pin E0
6 : pin E1
7 : pin E2
Trị trả về : không
Chức năng : Xác định pin để đọc giá trị Analog bằng lệnh READ_ADC()
Yêu cầu : không.
value = READ_ADC()
Cú pháp : value = read_adc()
Tham số : không
Trị trả về : 8 hoặc 10 bit
value = 0~255 nếu dùng A/D 8 bit (int)
value = 0~1023 nếu dùng A/D 10 bit (long int)
Chức năng : Đọc giá trị Digital từ bộ biến đổi A/D. Các hàm setup_adc(), setup_adc_ports() và set_adc_channel() phải được dùng trước khi dùng hàm read_adc(). Đối với PIC18F452, bộ A/D mặc định là 8 bit. Để sử dụng A/D 10 bit ta phải dùng thêm lệnh.
#device PIC18F452 *=16 ADC=10
ngay từ đầu chương trình.
Yêu cầu : không.
F - SET_TIMER0()
Cú pháp : set_rtcc()
set_timer0()
Tham số : 8 bit, value = 0~255
Trị trả về : không
Chức năng : Đặt giá trị ban đầu cho real time clock/counter. Tất cả các biến đều đếm tăng. Khi giá trị timer vượt quá 255, value được đặt trở lại 0 và đếm tiếp tục (…, 254, 255, 0, 1, 2, …)
Yêu cầu : không.
G - SETUP_TIMER1()
Cú pháp : setup_timer_1(mode)
Tham số : mode - tham số như sau
T1_DISABLED : tắt timer1
T1_INTERNAL : xung clock của timer1 bằng 1/4 xung clock nội của IC (OSC/4)
T1_EXTERNAL
T1_EXTERNAL_SYNC
T1_CLK_OUT : enable xung clock ra
T1_DIV_BY_1 : 65535-(samplingtime(s)/(4/20000000)) timemax = 13.1ms
T1_DIV_BY_2 : 65535-(samplingtime (s)/(8/20000000)) timemax =26.2ms
T1_DIV_BY_4 :65535-(samplingtime(s)/(16/20000000)) timemax = 52.4ms
T1_DIV_BY_8 :65535-(samplingtime(s)/(32/20000000)) timemax = 104.8ms
Trị trả về : không
Chức năng : Khởi động timer 1. Sau đó timer 1 có thể được ghi hay đọc dùng lệnh set_timer1() hay get_timer1(). Timer 1 là 16 bit timer. Với xung clock là 20MHz, timer 1 tăng 1 đơn vị sau mỗi 1,6us và tràn sau 104,8576ms.
Yêu cầu : các hằng số phải được định nghĩa trong device file PIC18F452.h
H - SET_TIMER1()
Cú pháp : set_timer1()
Tham số : 16 bit, value = 0~65535
Trị trả về : không
Chức năng : Đặt giá trị ban đầu cho real time clock/counter. Tất cả các biến đều đếm tăng. Khi giá trị timer vượt quá 65535, value được đặt trở lại 0 và đếm tiếp tục (…, 65534, 65535, 0, 1, 2, …)
Yêu cầu : không.
I - SETUP_TIMER2()
Cú pháp : setup_timer_2(mode,period,postscale)
Tham số : mode - tham số như sau
T2_DISABLED : tắt timer2
T2_DIV_BY_1
T2_DIV_BY_4
T2_DIV_BY_16
Period – 0~255 qui định khi giá trị clock được reset
Postscale – 1~16 qui định số lần reset timer trước khi ngắt (interupt)
Trị trả về : không
Chức năng : Khởi động timer 2. mode qui định số chia xung clock. Sau đó timer 2 có thể được ghi hay đọc dùng lệnh set_timer2() hay get_timer2(). Timer 1 là 8 bit counter/timer.
Yêu cầu: các hằng số phải được định nghĩa trong device file PIC18F452.h
K - SET_TIMER2()
Cú pháp : set_timer2(value)
Tham số : 8 bit, value = 0~255
Trị trả về : không
Chức năng : Đặt giá trị ban đầu cho real time clock/counter. Tất cả các biến đều đếm tăng. Khi giá trị timer vượt quá 255, value được đặt trở lại 0 và đếm tiếp tục (…, 254, 255, 0, 1, 2, …)
Yêu cầu: không.
L - SET_PWM1_DUTY(value)
SET_PWM2_DUTY(value)
Cú pháp : set_pwm1_duty(value)
Tham số : value có thể là biến hay hằng số với 8 hay 16 bit
Trị trả về : không
Chức năng : xác định % thời gian trong 1 chu kỳ, PWM ở mức cao
Yêu cầu : không
Ví dụ: set_pwm1_duty(512): đặt 50% mức cao (50% duty)
M - SETUP_CCP1()
SETUP_CCP2()
Cú pháp : setup_ccp1(mode)
setup_ccp2(mode)
Tham số : mode là hằng số như sau
long CCP_1;
#byte CCP_1 = 0x15
#byte CCP_1_LOW = 0x15
#byte CCP_1_HIGH = 0x16
long CCP_2;
#byte CCP_2 = 0x1B
#byte CCP_2_LOW = 0x1B
#byte CCP_2_HIGH = 0x1C
Tắt CCP
CCP_OFF
Đặt CCP ở chế độ capture
CCP_CAPTURE_FE Nhận cạnh xuống của xung
CCP_CAPTURE_RE Nhận cạnh lên của xung
CCP_CAPTURE_DIV_4 Nhận xung sau mỗi 4 xung vào
CCP_CAPTURE_DIV_16 Nhận xung sau mỗi 16 xung vào
Đặt CCP ở chế độ compare
CCP_COMPARE_SET_ON_MATCH Output high on compare
CP_COMPARE_CLR_ON_MATCH Output low on compare
CP_COMPARE_INT Interrupt on compare
CCP_COMPARE_RESET_TIMER Reset timer on compare
Đặt CCP ở chế độ PWM
CCP_PWM Mở PWM
CCP_PWM_PLUS_1
CCP_PWM_PLUS_2
CCP_PWM_PLUS_3
Trị trả về : không
Chức năng : Khởi động CCP. Bộ đếm CCP có thể được thực hiện thông qua việc sử dụng CCP_1 và CCP_2. CCP hoạt động ở 3 mode. Ở capture mode, CCP copy giá trị đếm timer 1 vào CCP_x khi cổng vào nhận xung. Ở compare mode, CCP thực hiện 1 tác vụ chỉ định trước khi timer 1 và CCP_x bằng nhau. Ở chế độ PWM, CCP tạo một xung vuông.
Yêu cầu : các hằng số phải được định nghĩa trong device file PIC18F452.h
N - EXT_INT_EDGE()
Cú pháp : ext_int_edge(source,edge)
Tham số : source: giá trị mặc định là 0 cho PIC18F452
edge: H_TO_L cạnh xuống 5V0V
L_TO_H cạnh lên 0V5V
Trị trả về : không
Chức năng : Qui định thời điểm ngắt tác động : cạnh lên hay xuống.
Yêu cầu : các hằng số phải được định nghĩa trong device file PIC18F452.h
O - #INT_xxx
Cú pháp : #INT_AD Kết thúc biến đổi A/D
#INT_BUSCOL Xung đột bus
#INT_CCP1 Capture or Compare on unit 1
#INT_CCP2 Capture or Compare on unit 2
#INT_EEPROM Kết thúc viết vào EEPROM
#INT_EXT Ngắt ngoài
#INT_LOWVOLT Low voltage detected
#INT_PSP Parallel Slave Port data in
#INT_RB Port B any change on B4-B7
#INT_RDA RS232 receive data available
#INT_RTCC Timer 0 (RTCC) overflow
#INT_SSP SPI or I2C activity
#INT_TBE RS232 transmit buffer empty
#INT_TIMER1 Timer 1 overflow
#INT_TIMER2 Timer 2 overflow
Mục đích : Khởi tạo hàm ngắt. Hàm ngắt có thể không có bất kỳ tham số nào. Trình biên dịch tạo code để nhảy đến hàm ngắt khi lệnh ngắt thực hiện. Trình biên dịch cũng tạo nên code để lưu trữ trạng thái của CPU và xóa cờ ngắt. Dùng lệnh NOCLEAR sau #INT_xxx để không xóa cờ ngắt này. Trong chương trình , phải dùng lệnh ENABLE_INTERRUPTS(INT_xxxx) cùng với lệnh ENABLE_INTERRUPTS(GLOBAL) để khởi tạo ngắt.
P - ENABLE_INTERRUPTS()
Cú pháp : enable_interrupts(level)
Tham số : level - một trong các hằng số sau
GLOBAL
INT_RTCC
INT_RB
INT_EXT
INT_AD
INT_TBE
INT_RDA
INT_TIMER1
INT_TIMER2
INT_CCP1
INT_CCP2
INT_SSP
INT_PSP
INT_BUSCOL
INT_LOWVOLT
INT_EEPROM
Trị trả về : không
Chức năng : Khởi tạo ngắt tại mức quy định bởi level. Một thủ tục ngắt (interrupt procedure) cần được định nghĩa. Mức toàn cục (GLOBAL level) không khởi tạo bất kỳ ngắt chỉ định nào mà chỉ khởi tạo các biến ngắt đươc đã khởi tạo trước đó.
Yêu cầu : phải dùng với #int_xxx
3.2.2 Những bước chuẩn bị khi làm việc với PIC.
Sau khi các bạn đã lựa chọn được chip phù hợp với mục đích sử dụng thì công việc tiếp theo là chuẩn bị:
Mạch nạp
Phần mềm để biên dịch => debug/ program
3.2.3 Mạch nạp.
Mạch nạp (programmer) có hỗ trợ chức năng real time debug cho PIC và sử dụng cho PIC hiện nay thông dụng nhất là ICD2. Sau đây là hình ảnh mạch một số mạch ICD2 trên thị trường.
Sản phẩm thương mại của Microchip Sản phẩm trên thị trường việt nam (HCM)
Đối với mạch ICD2 của microchip, đây là sản phẩm thương mại do đó vận hành rất ổn định. Tuy nhiên giá cả khá cao so với mạch nạp “thiết kế” tại VN.
3.2.4 Các bước cơ bản để nạp chương trình vào PIC.
Bước 1 :
Mở phần mềm Microsoft VisuaC++ và viết chương trình. Ví dụ chương trình bật sáng và tắt một LED ở cổng C.
Bước 2 :
Chuyển file sang dạng *.HEX bằng cách dùng phần mềm biên dịch PIC C Compiler.
Chương trình đã báo hoàn tất.
Bước 3 :
Mở phần mềm SUPERPRO for WIN9X/ME/NT/2K/XP và chọn PIC thích hợp để nạp chương trình.
Đường dẫn : chọn Select à Microchip à PIC…
Bước 4 :
Mở file ví dụ chương trình bật sáng và tắt một LED ở cổng C.hex trên phần mềm SUPERPRO for WIN9X/ME/NT/2K/XP .
Đường dẫn : File à Load (Ctrl+O)… à đường dẫn chọn vi dụ (file *.HEX)
Bước 5:
Nạp chương trình để chạy vào PIC.
Đường dẫn : Program à Erase_Chip à Program
Chọn các thông số trong mục Configuration.
Nhấn nút OK để kết thúc quá trình nạp.
CHƯƠNG 4 - THIẾT KẾ, THI CÔNG VÀ LẬP TRÌNH
ĐIỀU KHIỂN CHO XE LĂN ĐIỆN
4.1 Sơ đồ khối tổng quát mô hình xe lăn điện:
Đồ án thiết kế và thi công xe lăn tập trung vào nghiên cứu phương pháp điều khiển cho xe lăn điện bao gồm các yếu tố vận hành an toàn, thuận tiện cho người sử dụng và đồng thời tiết kiệm năng lượng cung cấp từ bình acquy.
Đồ án đặt ra các chế độ làm việc trong thực tế của xe điện và điều khiển thích nghi tốc độ trong từng trường hợp cụ thể, từ đó ta có thể dễ dàng điều khiển xe theo yêu cầu, tạo ra điều kiện an toàn và dễ sử dụng cho người khuyết tật.
Yếu tố vận hành an toàn được đồ án cụ thể hóa bằng tính năng của bộ điều khiển qua hệ thống cảnh báo tự động bằng bộ đèn Led giúp người điều khiển dễ dàng phát hiện ra những lỗi cần được khắc phục nhanh chóng và chính xác.
NGUỒN DC 36V
BỘ ĐIỀU KHIỂN
DRIVER
DC MOTOR 36V/250W
MÀN HÌNH HIỂN THỊ CÁC THÔNG TIN HỆ THỐNG VÀ CẢNH BÁO
HỒI TIẾP
Hình 4.1: Sơ đồ khối hệ thống điều khiển xe lăn điện
Hình 4.2 Xe lăn điện đã được thi công
Trên đây là sơ đồ và hình ảnh các khối cấu tạo của bộ điều khiển cũng như sơ lược tổng quan về xe lăn điện. Ngoài phần cơ khí như: khung xe lăn, động cơ đùm, tay ga, tay thắng…Bộ điều khiển cho xe lăn điện có các khối sau: khối hiển thị, khối điều khiển chính, bộ nguồn, sạc nguồn và các mạch điều khiển liên quan…
4.2 Cấu tạo và chức năng từng khối trong m