MỤC LỤC
Chương 1 1
CÁC PHƯƠNG PHÁP
KHỞI ĐỘNG ĐỘNG CƠ KHÔNG ĐỒNG BỘ
1.1. Nguyên lý làm việc của động cơ không đồng bộ 1
1.2. Các phương trình cơ bản của động cơ không đồng bộ 2
1.3. Quá trình mở máy của động cơ điện không đồng bộ 3
1.4. Các phương pháp mở máy động cơ không đồng bộ 4
1.4.1. Mở máy trực tiếp động cơ điện rotor lồng sóc 5
1.4.2. Hạ điện áp mở máy 6
1.4.3. Mở máy bằng cách thêm điện trở phụ vào rotor 10
Chương 2 12
BỘ ĐIỀU ÁP XOAY CHIỀU
2.1. Bộ điều áp xoay chiều một pha 12
2.1.1. Các sơ đồ 12
2.1.2. Điều áp xoay chiều một pha tải thuần trở 14
2.1.3. Điều áp xoay chiều một pha khi tải mang tính trở cảm 15
2.2. Bộ điều áp xoay chiều ba pha 17
2.2.1. Các sơ đồ 17
2.2.2. Bộ điều áp xoay chiều ba pha bằng cặp Thyristor mắc song song ngược, tải đấu sao không có dây trung tính. 19
2.3. Sơ đồ bộ điều áp xoay chiều động cơ không đồng bộ rotor lông sóc 23
2.4. Nguyên lý hoạt động của mạch động lực 23
Chương 3 25
VI ĐIỀU KHIỂN VÀ
CÁCH LẬP TRÌNH CHO VI ĐIỀU KHIỂN
3.1 Giới thiệu chung về vi điều khiển AVR ATmega16 25
3.2 Ngôn ngữ lập trình C cho vi điều khiển AVR 32
3.3 Giới thiệu phần mềm CodevisionAVR, dùng để lập trình và nạp chương trình cho vi điều khển AVR 37
3.3.1. Cách tạo một project mới 37
3.3.2. Cách sử dụng CodeWizardAVR lập trình tự động 38
3.3.3. Nạp chương trình cho vi điều khiển 42
Chương 4 46
THIẾT KẾ BỘ KHỞI ĐỘNG MỀM
ĐIỀU KHIỂN SỐ
A.Thiết kế mạch động lực 46
4.1. Tính toán chọn van động lực 46
4.1.1. Tính chọn van động lực theo dòng điện 46
4.1.2. Tính chọn van động lực theo điện áp 46
4.1.3. Thông số của van bán dẫn 47
4.2. Bảo vệ các linh kiện bán dẫn 47
4.2.1. Thiết bị bảo vệ ngắn mạch 47
4.2.2. Thiết bị dùng để đóng cắt tải thường xuyên 47
4.2.3. Thiết bị bảo vệ quá nhiệt 48
4.2.4. Bảo vệ xung điện áp từ lưới 48
4.2.5. Bảo vệ xung điện áp do chuyển mạch van 48
B. Thiết kế mạch điều khiển 49
4.3. Thuật toán điều khiển cho vi điều khiển 49
4.4. Tính toán mạch điều khiển 51
4.4.1. Thiết kế biến áp xung 51
4.4.2. Tính toán khâu khuếch đại 54
4.4.3. Chọn cổng AND 55
4.4.4. Chọn R1 và C1 55
4.4.5. Tính toán khâu đồng pha 55
4.4.6. Tạo nguồn nuôi 56
4.4.7. Tính chọn diode cho bộ chỉnh lưu nguồn nuôi 59
4.4.8. Tính toán mạch Reset và mạch dao động cho vi điều khiển 59
Chương 5 61
CHẾ TẠO VÀ THỬ NGHIỆM
BỘ KHỞI ĐỘNG MỀM ĐIỀU KHIỂN SỐ
5.1. Chế tạo mạch điều khiển 61
5.1.1. Mạch nguyên lý 61
5.1.2. Mạch in 62
5.2. Chế tạo mạch lái 63
5.2.1. Mạch nguyên lý 63
5.2.2. Mạch in 64
79 trang |
Chia sẻ: lethao | Lượt xem: 4993 | Lượt tải: 1
Bạn đang xem trước 20 trang tài liệu Đồ án Thiết kế, chế tạo bộ khởi động mềm điều khiển số, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
(mỗi van lần lượt mở cách nhau 60°) và độ rộng xung mở mỗi van là 120° để đảm bảo lượng sóng hài tối thiểu và mở chắc chắn.
Khả năng điều chỉnh điện áp chỉ có thể xảy ra khi góc dẫn của Thyristor j < a £ 150°.
Chương 3
VI ĐIỀU KHIỂN VÀ
CÁCH LẬP TRÌNH CHO VI ĐIỀU KHIỂN
Giới thiệu chung về vi điều khiển AVR ATmega16
Tổng quan về vi điều khiển AVR Atmega16
Ngày nay công nghệ số đã và đang được ứng dụng rộng rãi trong mọi ngành của khoa học kỹ thuật. Ở các nước công nghiệp, truyền động điện đã ứng dụng rất thành công công nghệ này với những ưu việt hơn so với phương pháp điều khiển tương tự truyền thống như:
Mềm dẻo trong việc thay đổi cấu trúc và tham số của hệ thống tự động.
Độ chính xác cao.
Có khả năng chống nhiễu tốt.
Dễ dàng tự động hóa.
Việc ứng dụng công nghệ số, sử dụng vi điều khiển trong việc thiết kế và chế tạo bộ khởi động mềm là hoàn toàn phù hợp với điều kiện thực tế và xu thế chung. Sử dụng công nghệ số trong thiết kế, chế tạo bộ khởi động mềm có thể giúp ta dễ dàng tạo dáng đường đặc tính khởi động theo ý muốn mà bằng mạch điều khiển tương tự để làm được việc này thì sẽ gặp nhiều khó khăn.
Vi điều khiển ATmega16 là vi điều khiển thuộc họ AVR của hãng Atmel, là một dòng vi điều khiển tích hợp cao với những chức năng cơ bản nhưng rất cần thiết trong những ứng dụng cụ thể.
Vi điều khiển ATmega16 cung cấp những tính năng sau:
16K bytes bộ nhớ chương trình dạng flash có thể Read-While-Write .
512 bytes EEPROM.
1K byte RAM tĩnh (SRAM).
32 đường kết nối I/O mục đích chung.
32 thanh ghi làm việc mục đích chung được nối trực tiếp với đơn vị xử lý số học và logic (ALU).
Một giao diện JATG cho quét ngoại vi.
Lập trình và hỗ trợ gỡ rối trên chip.
3 Timer/Counter linh hoạt với các chế độ so sánh.
Các ngắt ngoài và ngắt trong (21 nguyên nhân ngắt).
Chuẩn truyền dữ liệu nối tiếp USART có thể lập trình.
Một ADC 10 bit, 8 kênh với các kênh đầu vào ADC có thể lựa chọn bằng cách lập trình.
Một Watchdog Timer có thể lập trình với bộ tạo dao động bên trong.
Một cổng nối tiếp SPI ( serial peripheral interface).
6 chế độ tiết kiệm năng lượng có thể lựa chọn bằng phần mềm.
Lựa chọn tần số hoạt động bằng phần mềm.
Đóng gói 40 chân kiểu PDIP.
Tần số tối đa 16MHz.
Điện thế 4,5 – 5,5V
Vi điều khiển ATmega16 được hỗ trợ lập trình với ngôn ngữ lập trình bậc cao như ngôn ngữ lập trình C. Điều này giúp cho người sử dụng rất tiện lợi trong việc lập trình cho vi điều khiển.
Hình 19: Sơ đồ chân Atmega 16
Mô tả các chân vi điều khiển ATmega16
VCC: chân cấp nguồn một chiều
GND: chân nối đất
Port A (PA7..PA0): Cổng A được dùng làm lối vào analog của bộ chuyển đổi A/D. Cổng A cũng được dùng như một cổng I/O 8 bit hai chiều trực tiếp nếu bộ chuyển đổi A/D không được sử dụng. Các chân của port được cung cấp điện trở kéo lên bên trong (được chọn cho từng bit).
Port B(PB7..PB0): Cổng B là một cổng I/O 8 bit hai chiều trực tiếp có các điện trở kéo lên bên trong (được chọn cho từng bit). Ngoài ra Port B còn được sử dụng cho các chức năng đặc biệt khác:
Port Pin
Alternate Functions
PB7
SCK (SPI Bus serial Clock)
PB6
MISO (SPI Bus Master Input/Slave Output)
PB5
MOSI (SPI Bus Master Output/Slave Input)
PB4
(SPI Slave Select Input)
PB3
AIN1 (Analog Comparator Negative Input)
OC0 (Timer/Counter) Output Compare Match Output)
PB2
AIN0 (Analog Comparator Positive Input)
INT2 (External Interrupt 2 Input)
PB1
T1 (Timer/Couter 1 External Counter Input)
PB0
T0 (Timer/Counter 0 External Counter Input)
XCK (USART External Clock Input/Output)
Port C(PC7..PC0): Port C cũng là một cổng I/O 8 bit hai chiều trực tiếp với các điện trở kéo lên bên trong (được chọn cho từng bit). Khi giao diện JTAG được phép hoạt động, các điện trở kéo lên của các chân PC5(TDI), PC3(TMS), và PC2(TCK) sẽ vẫn hoạt động cả khi xảy ra reset. Port C được sử dụng cho giao diện JTAG và các chức năng đặc biệt khác như trong bảng:
Port D(PD7..PD0): là một cổng I/O 8 bit hai chiều trực tiếp có các điện trở kéo lên bên trong (được chọn cho từng bit). Port D cũng được dùng cho các chức năng đặc biệt khác của ATmega16 như trong bảng:
: Là đầu vào reset. Một tín hiệu mực thấp đặt vào chân này trong khoảng thời gian dài hơn độ dài xung nhỏ nhất sẽ phát ra một reset, ngay cả khi xung nhịp không hoạt động. Xung ngắn hơn thì không đảm bảo để phát ra một reset.
XTAL1: đầu vào cho bộ khuếch đại đảo dao động và đầu vào đến mạch hoạt động đồng hồ xung nhịp bên trong.
XTAL2: đầu ra cho bộ khuếch đại đảo dao động
AVCC: là chân cấp nguồn áp cho Port A và bộ chuyển đổi A/D. Chân này nên được nối với VCC cả khi ADC không được sử dụng. nếu ADC được sử dụng, chân AVCC nên được nối với VCC qua bộ lọc thông thấp.
AREF: chân điện áp tham chiếu của bộ chuyển đổi A/D
Hình 20: Sơ đồ cấu trúc vi điều khiển Atmega16
Cấu trúc bộ nhớ
Để tăng tối đa hiệu suất và tính tương thích, vi điều khiển AVR sử dụng kiến trúc Havard tức là bộ nhớ dữ liệu và bộ nhớ chương trình tách biệt nhau cả về vùng nhớ và đường bus.
Bộ nhớ chương trình của AVR là bộ nhớ Flash có dung lượng 128 Kb. Bộ nhớ chương trình có độ rộng bus là 16 bit. Những địa chỉ đầu tiên của bộ nhớ chương trình được dùng cho bảng vecto ngắt. Bộ nhớ chương trình Flash được chia thành 2 phần, phần chương trình khởi động và phần chương trình ứng dụng. Cả hai phần đều dành những bit khóa cho việc bảo vệ ghi và đọc/ghi. Lệnh SPM dùng ghi vào phần bộ nhớ chương trình Flash ứng dụng phải ở một nơi nhất định trong phần bộ nhớ chương trình khởi động.
Bộ nhớ dữ liệu của AVR chia làm 2 phần chính là bộ nhớ SRAM và bộ nhớ EEPROM. Tuy cùng là bộ nhớ dữ liệu nhưng hai bộ nhớ này lại nằm tách biệt nhau và được đánh địa chỉ riêng.
Các câu lệnh trong bộ nhớ chương trình được thực hiện với một cấp ống dẫn riêng. Khi một lệnh được thực hiện thì lệnh tiếp theo được mang về sẵn từ bộ nhớ chương trình. Ý tưởng này cho phép mỗi lệnh được thực hiện trong chỉ một chu kỳ xung nhịp. Bộ nhớ chương trình trong hệ thống là bộ nhớ Flash có thể lập trình lại.
Truy cập nhanh tệp thanh ghi chứa 32 thanh ghi 8 bit làm việc mục đích chung với thời gian truy cập trong một chu kỳ xung nhịp. Điều này cho phép đơn vị xử lý số học và logic (ALU) hoạt động trong một chu kỳ đơn. Một hoạt động điển hình của ALU là hai toán hạng được lấy ra từ tệp thanh ghi, hoạt động thực hiện tính toán giữa các toán hạng, sau đó kết quả lại được lưu vào tệp thanh ghi, tất cả các công việc đó được thực hiện trong một chu kỳ xung nhịp.
Có 6 trong 32 thanh ghi có thể được sử dụng như 3 con trỏ thanh ghi địa chỉ gián tiếp 16 bit cho việc ghi địa chỉ vùng nhớ dữ liệu, cho phép có thể tính toán địa chỉ. Một trong số những con trỏ địa chỉ này có thể dược dùng như một con trỏ địa chỉ để tra bảng trong bộ nhớ chương trình Flash. Các thanh ghi này là các thanh ghi 16 bit X, Y và Z.
ALU hỗ trợ các phép tính số học và logic giữa các thanh ghi hoặc giữa hằng số với một thanh ghi. Các phép tính với 1 thanh ghi riêng lẻ có thể cũng được thực hiện trong ALU. Sau mỗi phép tính số học thanh ghi trạng thái được cập nhật để phản ánh thông tin về kết quả của phép tính.
Dòng chương trình được qui định bởi các lênh nhảy có điều kiện và không điều kiện và các lệnh gọi, có thể trực tiếp địa chỉ trong toàn bộ không gian địa chỉ. Hầu hết các lệnh của AVR có dạng 1 từ 16 bit. Mỗi địa chỉ của bộ nhớ chương trình chứa một lệnh 16 hoặc 32 bit.
Trong suốt thời gian phục vụ ngắt hoặc gọi chương trình con, địa chỉ của bộ đếm chương trình được cất vào ngăn xếp (stack). Ngăn xếp thực tế được đặt trong vùng dữ liệu chung SRAM, do đó kích thước của ngăn xếp chỉ bị giới hạn bởi tất cả kích thước SRAM và cách sử dụng SRAM. Tất cả người sử dụng chương trình phải khai báo vị trí ban đầu của SP (stack pointer: con trỏ ngăn xếp) trong chương trình reset (trước khi thực hiện các chương trình con hay thực hiện ngắt). Con trỏ ngăn xếp SP được đọc/ghi có thể truy nhập vào vùng nhớ I/O. Bộ nhớ dữ liệu SRAM có thể truy nhập dễ dàng thông qua 5 chế độ địa chỉ khác nhau được hỗ trợ trong kiến trúc của AVR.
Đơn vị ngắt linh hoạt có các thanh ghi điều khiển riêng của nó trong vùng nhớ I/O với một bit cho phép ngắt toàn cục trong thanh ghi trạng thái. Tất cả các ngắt đều có các vector ngắt riêng biệt trong bảng vector ngắt. Các ngắt có quyền ưu tiên ngắt khác nhau tùy thuộc vào vị trí của vector ngắt. Vector ngắt có địa chỉ càng thấp có mức ưu tiên càng cao.
Vùng nhớ I/O chứa 64 địa chỉ cho các chức năng ngoại vi như các thanh ghi điều khiển, SPI, và các chức năng I/O khác. Vùng nhớ I/O có thể truy cập trực tiếp hoặc như các vị trí trong vùng nhớ dữ liệu theo địa chỉ trong tệp thanh ghi từ $20 đến $5F.
Ngôn ngữ lập trình C cho vi điều khiển AVR
Ngôn ngữ lập trình C là ngôn ngữ khá mạnh và được nhiều người sử dụng. Lập trình bằng ngôn ngữ cấp cao như C giúp xây dựng các ứng dụng nhanh chóng và dễ dàng hơn. Sau đây sẽ giới thiệu một cách cơ bản nhất về cách viết chương trình cho AVR sử dụng ngôn ngữ C.
Một chương trình C cho AVR thường bao gồm những thàn phần cơ bản như: chú thích (comments), biểu thức (expressions), câu lệnh (statements), khối (blocks), các toán tử, cấu trúc điều khiển (flow controls), hàm (function)….
Chú thích (comments): Chú thích là những đoạn trong chương trình dùng để giải thích hay bình phẩm những gì ta làm trong chương trình, phần chú thích không được biên dịch vì vậy nó không có bất kỳ ảnh hưởng nào dến hoạt động của chương trình. Có hai cách để tạo phần chú thích trong C là chú thích theo từng dòng bằng cách đặt ở đầu dòng chú thích dấu “//” và chú thích block bằng cách kẹp đoạn cần chú thích vào giữa /*…*/.
Tiền xử lý (preprocessor): là một tiện ích của ngông ngữ C, các preprocessor được trình biên dịch xử lý trước tất cả các phần khác. Các preprocessor được bắt đầu bằng dấu “#”, trong ngôn ngữ C có hai preprocessor được sử dụng phổ biến nhât đó là #include và #define. Preprocessor #include dùng để chỉ định 1 file được đính kèm trong quá trình xử lý, và #define dùng để định nghĩa một chuỗi thay thế hoặc 1 macro.
Biểu thức (expressions): là một phần của các câu lệnh, biểu thúc có thể bao gồm các biến, các toán tử, gọi hàm…. Biểu thức trả về một giá trị đơn. Biểu thức không phải là một câu lệnh hoàn chỉnh.
Câu lệnh (statements): là một dòng lệnh hoàn chỉnh có thể bao gồm các từ khóa (key words), các biểu thức các câu lệnh khác và được kết thúc bằng dấu “;”.
Khối (blocks): là sự kết hợp của nhiều câu lệnh để cùng thực hiện một nhiệm vụ nào đó. Khối được kẹp giữa hai dấu mở khối “{” và đóng khối “}”.
Toán tử (operators): là những ký hiệu báo cho trình biên dịch biết nhũng nhiệm vụ cần thực hiện.
Các toán tử đại số
Toán tử
Ý nghĩa
*
Phép nhân
/
Phép chia
%
Phép chia lấy phần dư
+
Phép cộng
_
Phép trừ
+ +
Tăng
_ _
Giảm
_
Dấu âm
Các toán tử logic và quan hệ
Toán tử
Ý nghĩa
>
Lớn hơn
>=
Lớn hơn hoặc bằng
<
Nhỏ hơn
<=
Nhỏ hơn hoặc bằng
==
So sánh bằng
!=
So sánh không bằng
!
Phép tính logic NOT
&&
Phép tính logic AND
||
Phép tính logic OR
Các toán tử truy nhập và kích thước
Toán tử
Ý nghĩa
[ ]
Phần tử của mảng
.
Chọn phần tử (vd: PORTD.5)
*
Địa chỉ gián tiếp
&
Địa chỉ trực tiếp
Các toán tử thao tác bit
Toán tử
Ý nghĩa
~
Phép NOT bit
&
Phép AND bit
|
Phép OR bit
^
Phép XOR bit
>>
Dịch bit sang trái
<<
Dịch bit sang phải
Cấu trúc điều khiển (flow controls): Các cấu trúc điều khiển cho phép chương trình thực hiện đúng theo ý tưởng của người viết chương trình. Các cấu trúc điều khiển thường dùng trong lập trình C:
“If (điều kiện) câu lệnh;” Nếu điều kiện là đúng thì thực hiện câu lệnh tiếp theo sau, câu lệnh có thể được viết cùng dòng hay dòng sau từ khóa if. Điều kiện là một biểu thức bất kỳ có thể là sự kết hợp của nhiều điều kiện thông qua các toán tử quan hệ AND(&&), OR(||), … Điều kiện được cho là đúng khi nó khác 0
Trong trường hợp cần thực thi nhiều câu lệnh khi một điều kiện nào đó thỏa mãn ta có thể đặt các câu lệnh đó trong một khối:
If (điều kiện)
{
Câu lệnh 1;
Câu lệnh 2;
…
}
“If (điều kiện) câu lệnh 1; else câu lệnh 2;”: Nếu điều kiện đúng thì thực hiện câu lệnh 1, nếu không đúng thì thực hiện câu lệnh 2. Việc đặt else và các câu lệnh trên cùng 1 dòng hay khác dòng không làm thay đổi ý nghĩa của cấu trúc;
Nếu cần thực hiện nhiều câu lệnh thì các câu lệnh cần được dặt trong 1 khối:
If (điều kiện) {
Câu lệnh 1;
Câu lệnh 2;
…
}
Else {
Câu lệnh 1;
Câu lệnh 2;
…
}
Trong trường hợp có nhiều khả năng xảy ra cho 1 biểu thức (hay một biến) với mỗi khả năng lại cần thực hiện một công việc nào đó, ta có thể sử dụng cấu trúc switch:
Switch (biểu thức) {
Case hằng _số_1:
Các câu lệnh 1;
Break;
Case hằng_số_2:
Các câu lệnh 2;
Break;
Defaul:
Các câu lệnh khác;
}
Cấu trúc switch hoạt động theo cách thức sau: Đầu tiên chương trình tính giá trị của biểu thức sau đó lần lượt dem so sánh với các giá trị hằng số đặt phía sau từ khóa case. Biểu thức có giá trị bằng hằng số nào thì thực hiện các câu lệnh trong case đó dến khi tìm thấy từ khóa break. Có thể đặt bao nhiêu case tùy ý. Nếu giá trị của biểu thức không tương ứng với các hằng số thì chương trình thực hiện các câu lệnh trong phần defaul: (nếu có phần này).
Cấu trúc lặp While: “while (điều kiện) câu lệnh 1”. Ý nghĩa của cấu trúc lặp while là thực hiện câu lệnh 1 (hoặc 1 khối câu lệnh đặt trong dấu “{}”) khi điều kiện còn đúng.
Cấu trúc lặp for : “for (biểu thức 1; biểu thức 2; biểu thức 3) câu lệnh”. Trong đó biểu thức 1 là biểu thức khởi tạo, biểu thức 2 là điều kiện, biểu thức 3 là biểu thức thực hiện sau. Biểu thức 1 được thực hiện 1 lần sau đó chương trình kiểm tra điêu kiện qua biểu thức 2, nếu điều kiện đúng câu lệnh được thực hiện, sau đó thực hiện biểu thức 3 rồi lại quay lại kiểm tra điều kiện. Cứ như vậy tới khi điều kiện không còn đúng nữa thì chương trình thoát khỏi vòng lặp. Chú ý khi sử dụng vòng lặp for là các biểu thức trong cấu trúc for có thể không có nhưng các dấu “;” thì bắt buộc phải có.
Hàm (functions): Trong C có rất nhiều hàm, mỗi hàm dùng để thực hiện một chức năng cụ thể. Các hàm trong C thường được thiết kế nhỏ gọn, để có những hàm phức tạp người dùng cần tự tạo ra.
Các từ khóa (key words): Từ khóa là những từ quy định của ngôn ngữ C như tên các kiểu dữ liệu (char, int, unsigned int, …); tên các cấu trúc điều khiển (if, while, for,…). Cần chú ý không được đặt tên biến trùng với từ khóa.
Các kiểu dữ liệu thường dùng khi lập trình C cho vi điều khiển:
Tên kiểu dữ liệu
Số byte
Khoảng dữ liệu
Char
1
- 127 đến 127 hoặc 0 đến 255
Unsigned char
1
0 đến 255
Signed char
1
- 127 đến 127
Int
2
- 32767 đến 32767
Unsigned int
2
0 đến 65353
Singed int
2
- 32767 đến 32767
Short int
2
- 32767 đến 32767
Unsigned short int
2
0 đến 65353
Singed short int
2
- 32767 đến 32767
Long int
4
- 2147483647 đến 2147483647
Unsigned long int
4
0 đến 4294967295
Singed long int
4
- 2147483647 đến 2147483647
Long long int
8
- (263 – 1) đến (263 – 1)
Unsigned long long int
8
0 đến (264 – 1 )
Signed long long int
8
- (263 – 1) đến (263 – 1)
Giới thiệu phần mềm CodevisionAVR, dùng để lập trình và nạp chương trình cho vi điều khển AVR
Phần mềm codevisionAVR là một phần mềm rất tiện lợi dùng để lập trình và nạp cho AVR, nó hỗ trợ tối đa cho người sử dụng trong việc lập trình cho AVR, giúp người sử dụng có thể nhanh chóng nắm bắt cách sử dụng, các chức năng và các chế độ làm việc của vi điều khiển.
Cách tạo một project mới
Cài đặt trình biên dịch CoddeVision AVR C trong thư mục mặc định C:/Cvavr.
Chạy file cvavr.exe trong thư mục C:/Cvavr/bin
Tạo một project mới bằng cách chọn File/New trong bảng chọn (menu option), cửa sổ trong hình vẽ hiện ra:
Chọn “Project” sau đó ấn “OK”. Cửa số sau hiện ra:
Ấn “yes” để sử dụng CodeWizardAVR viết chương trình tự động.
Cách sử dụng CodeWizardAVR lập trình tự động
CodeWizardAVR làm đơn giản hóa việc viết những đoạn code mở đầu cho những loại vi điều khiển AVR khác nhau. Sau khi ấn “yes” trong cửa số “confirm” ở trên sẽ hiện ra cửa sổ để chọn lựa:
Trong bài toán điều khiển bộ khởi động mềm này ta chọn chip ATmega16 với tần số xung nhịp là 16MHz.
Định dạng các cổng vào/ra phù hợp với mục đích sử dụng bằng cách chọn tab “Ports”
Cài đặt mặc định của tất cả các cổng I/O là các đầu vào (input). Nếu muốn sử dụng bit nào làm nơi xuất dữ liệu ta cần cài đặt cho bit đó thành đầu ra (output) bằng cách click vào vào bit đó.
Định dạng các Timer bằng cách chọn tab “Timer”
Chọn tần của timer phù hợp với giá trị tần số xung nhịp, chọn chế độ hoạt động và các ngắt timer định sử dụng.
Ngoài ra có thể định dạng cho các chức năng khác như ngắt ngoài, ADC,… bằng cách lựa chọn các tab tương ứng. Sau khi đã lựa chọn hết các chức năng cần sử dụng của vi điều khiển ta lưu project bằng cách chọn File/Generate, Save and Exit trong menu option.
CodeWizardAVR sẽ tạo ra một phần khung chương trình bằng ngôn ngữ C với các chế độ, các ngắt chính xác như đã lựa chọn ở trên. Sau khi chọn File/Generate, save and exit trong menu option cửa sổ trong hình hiện ra để giúp người lập trình lưu project:
Nhấn nút “Create New Folder” để tạo một file mới chưa tất cả các file trong project, sau đó dặt tên file và nhấn nút “Save” để lưu file nguồn trình biên dịch C (C compiler source file) dưới dạng file *.c , một hộp hội thoại nữa hiện ra:
Trong hộp hội thoại này ta phải xác định rõ tên của project và lưu dưới dạng file *.prj trong cùng một thư mục với C compiler source file đã lưu ở trên.
Cuối cùng, một hộp hội thoại nữa hiện ra nhắc chúng ta lưu CodeWizard project file
Ta nhập tên file rồi nhấn “save” file sẽ được lưu dưới dạng *.cwp.
Cửa sổ soạn thảo hiện ra, ta viết chương trình cho vi điều khiển trong cửa sổ soạn thảo. Viết chương trình xong ta tiến hành biên dịch chương trình và lưu dưới dạng file *.hex bằng cách chọn make trong tab project hoặc ấn tổ hợp phím shift+F9. Khi đó cửa sổ thông tin sẽ hiện ra thông báo lỗi và các cảnh báo nếu có, nếu không có lỗi và cảnh báo thì ta hoàn toàn có thể nạp chương trình vào vi điều khiển
Nạp chương trình cho vi điều khiển
Dùng mạch nạp AVR910 USB Programmer, là mạch nạp ISP dùng để lập trình cho tất cả dòng vi điều khiển AVR.
Từ giao diện chính của CodeVision AVR, ta vào menu Setting → Programmer, xuất hiện hộp thoại Programmer Settings:
Lựa chọn các thông số như hình trên, lưu ý cổng COM được chọn phải là cổng đã được gán tương ứng với mạch nạp (Sau khi cài đặt driver cho AVR910 USB Programmer thì AVR910 USB sử dụng cổng COM ảo để kết nối với phần mềm máy tính ). Nhấn OK để hoàn tất quá trình thiết lập thông số. Ở đây, CodeVision có thể được sử dụng như một chương trình nạp độc lập để nạp một file HEX có sẵn, hoặc sử dụng như một phần tích hợp để nạp chính Project đang được biên dịch bởi CodeVisionAVR, tất cả thông qua hộp thoại Chip Programmer (menu Tools ® Chip Programmer hoặc tổ hợp phím tắt Shift + F4).
Quá trình lập trình cho chip AVR được chia làm 3 thao tác cơ bản bao gồm Program (nạp xuông), Read (đọc lên), và Compare (so sánh), cá thao tác trên được đặt trên hệ thống menu của hộp thoại Programmer, các thao tác trên được áp dụng cho các thành phần sau trên chip:
Bộ nhớ chương trình (Flash).
Bộ nhớ không mất nội dung (EEPROM).
Các bit lưu cấu hình hoạt động (Fuse bits).
Các bít lưu cấu hình bảo vệ (Lock bits).
Ngoài ra còn một số mục liên quan như Signature byte, Caliblation Byte… Tham khảo chi tiết trong Datasheet của Atmega16
Trên hộp thoại Programmer có các nút cơ bản bao gồm Program All và Reset Chip:
Nút Program All được sử dụng để nạp tất cả các thành phần đã được thiết lập xuống chíp. Bao gồm Flash, EEPROM, Fuse bits và Lock bits. Cần đặc biệt chú ý điều này, khuyến cáo là không nên sử dụng tới nút Program All khi bạn chưa hiểu hết tác dụng của Fuse bits, Lock bits, hơn nữa với nhu cầu thông thường là nạp chương trình vào bộ nhớ Flash, sử dụng nút này sẽ làm kéo dài thời gian lập trình do nạp cả các thành phần không cần thiết. (Nút Program All rất có tác dụng khi cần nạp sản xuất một lượng lớn chíp, giúp làm giảm các thao tác thiết lập).
Nút Reset Chip sẽ kích hoạt tín hiệu Reset trên mạch đích.
Một thành phần quan trọng khác là hộp thoại chọn chíp, cần chọn đúng loại AVR trong danh sách trước khi tiến hành các thao tác nạp. Phía bên phải là phần Fuse bits, liệt kê danh sách các Fuse tương ứng với loại AVR đã chọn (tên và số lượng các fuse này khác nhau với từng dòng AVR). Mặc định CodeVisionAVR để trống các bit này ( giá trị 1), điều đó không có nghĩa rằng các Fuse bits thực tế trên Chip cũng có giá trị 1, những người mới sử dụng thường hay nhấn nút Program All mà không biết rằng các Fuse bits không được thiết lập đúng. Vô tình thay đổi Fuse bits mặc định trong AVR dẫn tới việc là Chip hoạt động sai lệch mà không rõ nguyên nhân. Vì vậy, cần tham khảo kỹ các tài liệu về Fuse bits dành cho AVR, đặc biệt là Datasheet của dòng AVR đang sử dụng. Cấu hình sai fuse bits sẽ dẫn đến các sai lệnh không lường trước trong quá trình hoạt động của AVR.
Để đọc về các Fuse bits của Chip, vào menu Read ® Fuse bit(s).
Nhấn Yes trên hộp thoại Information, các Fuse bits sẽ được sau chép vào phần cấu hình Fuse trong hộp thoại Programmer.
Trong quá trình sử dụng, nếu sau khi nạp Flash mà xuất hiện thông báo lỗi khi Verify:
Thì cần xóa toàn bộ Flash bằng cách vào menu Program chọn Erase Chip.
Sau khi Erase Flash, ta có thể tiến hành nạp bình thường mà không còn xuất hiện thông báo lỗi.
Chương 4
THIẾT KẾ BỘ KHỞI ĐỘNG MỀM
ĐIỀU KHIỂN SỐ
A.Thiết kế mạch động lực
Tính toán chọn van động lực
Tính chọn van động lực theo dòng điện
Dòng điện hiệu dụng chạy qua van khi tải đấu Y:
(A)
Trong đó:
Pđm : công suất định mức của động cơ.
Uf : điện áp pha.
cosj : hệ số công suất của động cơ.
h : hiệu suất của động cơ.
Ihd : dòng điện hiệu dụng của động cơ.
Dòng điện làm việc của van là:
(A)
Chọn điều kiện tỏa nhiệt của van là làm mát bằng không khí tự nhiên. Dòng điện định mức của van:
Iđmv = kI.Ivlv = 1,1.10 = 11 (A)
kI: hệ số dự trữ dòng điện của van. Chọn KI = 10.
Tính chọn van động lực theo điện áp
Điện áp làm việc cực đại Ulv của van bán dẫn:
(V)
Điện áp của van bán dẫn được chọn:
Uv = kdt.Ulv = 1,6.539 » 863 (V)
kdt: hệ số dự trữ điện áp của van. Chọn kdt = 1,6.
Thông số của van bán dẫn
Thyristor mắc vào lưới xoay chiều 50Hz nên thời gian chuyển mạch của Thyristor không ảnh hưởng lớn đến việc chọn Thyristor. Từ các thông số trên ta chọn loại Thyristor có các thông số sau:
Ký hiệu: BTM92 – 1000R
Điện áp ngược cực đại : Unmax = 1000 V
Dòng điện làm việc cực đại : Iđmmax = 20 A
Dòng điện dỉnh cực đại : Ipicmax = 400 A
Dòng điện xung điều khiển : Ig = 10 mA
Điện áp xung điều khiển : Ug = 3,5 V
Dòng điện duy trì : Ih = 200 mA
Dòng điện rò : Ir = 5 mA
Sụt áp trên tiristor ở trạng thái dẫn : DUmax = 2,3 V
Đạo hàm điện áp : du/dt = 300 V/s
Thời gian chuyển mạch (mở và khóa) : tcm =
Nhiệt độ làm việc cực đại : Tmax = 125°C
Bảo vệ các linh kiện bán dẫn
Thiết bị bảo vệ ngắn mạch
Để bảo vệ ngắn mạch và đóng cắt ta dùng Aptomat. Aptomat có các thông số sau:
Chọn Aptomat 3 cực
Dòng điện định mức : IđmATM = 1,2.Iđm = 1,2.2,2 = 2,64 (A)
Dòng điện ngắn mạch : InmATM = 5.Iđm = 5. 2,2 = 11 (A)
Điện áp điện mức : UđmATM = Uđm = 380 (V)
Thiết bị dùng để đóng cắt tải thường xuyên
Dùng công tắc tơ xoay chiều ba pha, gồm 3 cặp tiếp điểm động lực và 2 cặp tiếp điểm thường đóng và thường mở.
Dòng điện định mức : IđmCTT = 1,2.Iđm = 1,2.2,2 = 2,64 (A)
Điện áp định mức: UđmCTT = Uđm = 380 (V)
Thiết bị bảo vệ quá nhiệt
Dùng rơle nhiệt (RLN) loại ba pha 2 phần tử h
Dòng điện chỉnh định IRLN = Iđm = 2,2 (A)
Bảo vệ xung điện áp từ lưới
Dùng mạch RC để bảo vệ.
R = (5 ¸ 20) W; C = 4mF Þ Chọn R = 20 W; C = 4mF
Bảo vệ xung điện áp do chuyển mạch van
Dùng mạch RC để bảo vệ.
R = (5 ¸ 30) W; C = (0,5 ¸ 4)mF Þ Chọn R = 20 W và C = 4mF
~ 380
Aptomat
Công tắc
tơ
Bộ khởi
động mềm
RLN
ĐC
B. Thiết kế mạch điều khiển
Sơ đồ khối mạch điều khiển
Khâu đồng pha
Vi điều khiển
Khâu khuếch đại
Biến áp xung
Uf
ĐK tiristor
Trong đó, khâu đồng pha sử dụng khuếch đại thuật toán:
Khâu khuếch đại sử dụng mạch khuếch đại Darlington
Để tính toán các thông số của mạch điều khiển ta dựa vào các yêu cầu của xung mở thyristor:
Điện áp điều khiển : Uđk = 3,5(V)
Dòng điện điều khiển : Iđk = 0,01(A)
Độ rộng xung điều khiển : tx = 2tm = 100(ms)
Tần số xung điều khiển : fx = 3(KHz)
Điện áp nguồn nuôi mạch điều khiển : U = 12(V) và 5V
Mức sụt biện độ xung : sx = 0,15
Thuật toán điều khiển cho vi điều khiển
Từ tín hiệu đồng pha được đưa vào chân ICP của vi điều khiển, vi điều khiển phải tính toán thời gian để phát xung điều khiển cho thyristor theo yêu cầu :
Tạo xung điều khiển có độ rộng xung điều khiển bằng 120o
Xung điều khiển thay đổi phù hợp để thay đổi góc mở, giảm dần góc mở từ a = 90o đến a = 0o trong thời gian khởi động
Tạo xung chùm với tần số xung chùm f = 5KHz
Để đáp ứng những yêu cầu trên:
Về phần cứng, ta sử dụng các tài nguyên của vi điều khiển ATmega16 như sau:
Timer 1
Đế tính thời gian tạo xung
Các file đính kèm theo tài liệu này:
- Thiết kế, chế tạo bộ khởi động mềm điều khiển số.doc