Với sự hướng dẫn và chỉ dạy nhiệt tình của thầy Nguyễn Thế Dũng chúng em đã tiến hành thiết kế và chế tạo mạch “ Điều khiển động cơ bước hiện thị thông số lên LCD 16x2 dùng vi điều khiển
Trang 1MỤC LỤC
MỤC LỤC 1
LỜI MỞ ĐẦU 2
Chương 1: PHÂN TÍCH BÀI TOÁN 3
1.1 Yêu cầu bài toán 3
1.2 Giải pháp thiết kế 3
1.2.1 Sơ đồ khối 3
1.2.2 Phân tích chức năng nhiệm vụ từng khối 3
1.2.3 Nguyên lý hoạt động toàn mạch 4
1.3 Linh kiện sử dụng 4
1.3.1 Bộ vi điều khiển 89S52 4
1.3.2 Động cơ bước 8
1.3.3 LCD 16x2 10
1.3.5 Điện Trở 13
1.3.6 Nút bấm 13
1.3.7 Tụ điện 13
Chương 2: THIẾT KẾ VÀ THỰC THI 15
2.1 Thiết kế phần cứng 15
2.1.1 Sơ đồ nguyên lý 15
2.1.2.Lưu đồ thuật toán 16
2.1.2 Sơ đồ mạch in 18
2.2.2 Mã nguồn chương trình 18
2.3 Một số hình ảnh sản phẩm 26
KẾT LUẬN 28
TÀI LIỆU THAM KHẢO 29
NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN 30
Trang 2LỜI MỞ ĐẦU
Với sự phát triển ngày càng mạnh mẽ và rộng lớn của nền khoa học kỹ thuật.Các công nghệ mới thuộc các lĩnh vực khác nhau cũng nhờ đó đã ra đời để đáp ứngnhững nhu cầu của xã hội, và một trong số đó phải kể đến là kỹ thuật vi điều khiển.Hiện nay kỹ thuật vi điều khiển vẫn còn đang là một trong các lĩnh vực mới mẻ và đãđược đưa vào giảng dạy rộng rãi ở các trường đại học và cao đẳng trong cả nước Tạitrường đại học công nghệ thông tin và truyền thông thái nguyên dưới sự giảng dạy vàchỉ dẫn nhiệt tình của các thầy cô đã mang lại cho sinh viên rất nhiều những hiểu biết
về vi điều khiển và các ứng dụng của vi điều khiển trong đời sống Trên tinh thần học
đi đôi với hành, học gắn liền với lao động , sản xuất và đời sống, nhóm sinh viênchúng em đã tìm hiểu và ứng dụng của vi điều khiển trong việc điều khiển động cơbước hiện thị trên led 7 thanh Với sự hướng dẫn và chỉ dạy nhiệt tình của thầy
Nguyễn Thế Dũng chúng em đã tiến hành thiết kế và chế tạo mạch “ Điều khiển động
cơ bước hiện thị thông số lên LCD 16x2 dùng vi điều khiển AT89S52 “ Phần thiết kế
bao gồm: sơ đồ mạch lắp ráp, thuật toán, và viết chương trình điều khiển cho vi xử lý
Mặc dù chúng em đã cố gắng rất nhiều để hoàn thành đề tài này, xong do giớihạn về thời gian cũng như kiến thức nên nội dung còn nhiều thiếu sót Rất mong được
sự đóng góp ý kiến của thầy cô để bài báo cáo của chúng em được hoàn thiện hơn
Chúng em xin chân thành cảm ơn
Trang 3Chương 1: PHÂN TÍCH BÀI TOÁN.
1.1 Yêu cầu bài toán.
Mục tiêu thiết kế mạch điều khiển động cơ bước có sử dụng nút nhấn để thayđổi tốc độ quay, chiều quay thuận ngược hiển thị số vòng quay lên LCD 16x2
Gồm có nút nhấn điều khiển: START, STOP, TĂNG TỐC, GIẢM TỐC, QUAYTHUẬN, QUAY NGƯỢC
Hình 1.1 Sơ đồ khối chức năng của mạch.
1.2.2 Phân tích chức năng nhiệm vụ từng khối.
Khối nguồn: cung cấp nguồn điện cho toàn mạch Cung cấp nguồn 5V cho viđiều khiển và khối hiển thị Cấp nguồn 12V cho khối cồng suất và khối động cơ
Khối hiện thị: nhận tín hiệu điều khiển từ vi điều khiển và hiển thị số vòngquay, tốc độ quay, chiều quay, bước quay của động cơ bước
Khối vi điều khiển: có nhiệm vụ điều khiển hoạt động của toàn mạch Nhận biếtlệnh điều khiển từ nút bấm, từ đó đưa ra các xung điện áp tương ứng để điều khiểnkhối công suất và khối hiện thị Cho người điều khiển biết được mạch hoạt động nhưthế nào và trạng thái hoạt động của mạch Việc hệ thống hoạt động có nhịp nhàng haykhông, tốt hay không, tốt hay không tốt phụ thuộc nhiều vào khối vi điều khiển
HIỂN THỊ
LCD
NGUỒN 12V
NGUỒN ĐỘNG CƠ PHÍM ẤN
VĐK 89C51
ĐK ĐỘNG CƠ
ĐỘNG CƠ
Trang 4Khối công suất: khuếch đại tín hiệu điều khiển từ khối điều khiển và cách ly rồiđưa tới động cơ.
Khối động cơ: nhận tín hiệu điều khiển và thực hiện các lệnh đã được người lậptrình sẵn
1.2.3 Nguyên lý hoạt động toàn mạch.
Mạch hoạt động dựa trên nguyên tắc quét từng cuộn dây của động cơ bước Khimỗi cuộn dây được cấp điện động cơ sẽ quay 1 góc 900 qua bộ giảm tốc trục ngoàicũng sẽ quay đc 1 góc 7,5 0 từ đó cứ mỗi 48 vòng quay của động cơ sẽ làm trục ngoàicủa động cơ quay được 1 vòng hoàn chỉnh và chính xác
Khi có tác động của khối nút nhấn, vi xử lý nhận tín hiệu nút nhấn điều khiển
dữ liệu xuất ra 4 chân từ P1.0 đến P1.3 để điều khiển động cơ bước Do yêu cầu củađộng cơ về dòng điện cao nên ta dùng thêm IC đệm dòng UNL2003 để đảm bảo động
cơ được cấp đủ dòng trong quá trình hoạt động, đồng thời tránh hiện tượng treo vi điềukhiển do xung nhiễu gây ra từ các cuộn dây của động cơ tác động ngược lại vi điềukhiển
1.3 Linh kiện sử dụng.
1.3.1 Bộ vi điều khiển 89S52.
a Sơ lược về vi điều khiển 89S52.
AT89S52 là họ IC vi điều khiển do hãng Atmel sản xuất Các sản phẩmAT89S52 thích hợp cho những ứng dụng điều khiển Việc xử lý trên byte và cáctoán sốhọc ở cấu trúc dữ liệu nhỏ được thực hiện bằng nhiều chế độ truy xuất dữliệu nhanhtrên RAM nội Tập lệnh cung cấp một bảng tiện dụng của những lệnhsố học 8 bit gồm
cả lệnh nhân và lệnh chia Nó cung cấp những hổ trợ mở rộngtrên chip dùng chonhững biến một bit như là kiểu dữ liệu riêng biệt cho phép quảnlý và kiểm tra bit trựctiếp trong hệ thống điều khiển AT89S52 cung cấp những đặc tính chuẩn như: 8 KByte
bộ nhớ chỉ đọc cóthể xóa và lập trình nhanh (EPROM), 128 Byte RAM, 32 đường I/O,3TIMER/COUNTER 16 Bit, 5 vectơ ngắt có cấu trúc 2 mức ngắt, một Port nối tiếpbánsong công, 1 mạch dao động tạo xung Clock và bộ dao động ON-CHIP.Các đặc điểmcủa chip AT89S52 được tóm tắt như sau:
• 8 KByte bộ nhớ có thể lập trình nhanh, có khả năng tới 1000 chu kỳ ghi/xoá
• Tần số hoạt động từ: 0Hz đến 24 MHz
• 3 mức khóa bộ nhớ lập trình
• 3 bộ Timer/counter 16 Bit
Trang 5• 4 Port xuất /nhập I/O 8 bit.
• Giao tiếp nối tiếp
• 64 KB vùng nhớ mã ngoài
• 64 KB vùng nhớ dữ liệu ngoại
• 4µs cho hoạt động nhân hoặc chia
Hình 1.2 Hình ảnh thực tế của 89S52.
Cấu tạo bên trong IC 89S52.
Hình 1.3 Sơ đồ khối của vi điều khiển 89S52.
VĐK 8052 tín hiệu vào/EA trên chân 31 thường ở mức cao (+5V) hoặc mứcthấp (GND) Nếu ở mức cao thì 8952 thi hành chương trình từ ROM nội trong khoảngđịa chỉ thấp (4K hoặc 8K đối với 8052) Nếu ở mức thấp chương trình sẽ thi hành từ
bộ nhớ mở rộng (tối đa đến 64K)
Trang 6Ta thấy rẳng, trong số 40 chân của 8052, có 32 chân có công dụng nhập/ xuất
dữ liệu, tuy nhiên 24 trong 32 đường này có 2 mục đích, 32 chân này hình thành 4 port8-bit Với các thiết kế yêu cầu một mức tối thiểu bộ nhớ ngoài hoặc các thành phầnbên ngoài khác, ta có thể sử dụng các port này làm nhiệm vụ nhập/ xuất 8 đường chomỗi port có thể xử lí như một đơn vị giao tiếp với các thiếp bị song song như máy in,
bộ biến đổi D-A….hoặc mỗi đường có thể hoạt động độc lập giao tiếp với 1 thiết bịđơn bit như chuyển mạch, LED, BJT, FET, cuộn dây, động cơ, loa…
Hình 1.4 Các chân của vi điều khiển 8052.
Các cổng xuất/ nhập
Bốn cổng P0, P1, P2 và P3 đều sử dụng 8 chân và tạo thành cổng 8 bít Tất cả cáccổng khi Reset đều được cấu hình như các đầu ra, sẵn sàng để được sử dụng như các cổngđầu ra Muốn sử dụng cổng nào trong số các cổng này làm đầu vào thì nó phải được lậptrình
- Port P0: Cổng P0 chiếm tất cả 8 chân (từ chân 32 đến 39).
Nó có thể được dùng như cổng đầu ra, để sử dụng các chân của cổng P0 vừa làmđầu ra, vừa làm đầu vào thì mỗi chân phải được nối tới một điện trở kéo bên ngoài 10kW.Với những điện trở kéo ngoài được nối khi Reset cổng P0 được cấu hình như một cổngđầu ra
Trang 7Điều này là do một thực tế là cổng P0 là một máng mở khác với cáccổng P1, P2 và P3 Khái niệm máng mở được sử dụng trong các chíp MOS về chừngmực nào đó nó giống như collector hở đối với các chíp TTL.
- Port P1: Cổng P1 chiếm tất cả 8 chân (từ chân 1 đến chân 8).
Nó có thể được sử dụng như đầu vào hoặc đầu ra So với cổng P0 thì cổng nàykhông cần đến điện trở kéo vì nó đã có các điện trở kéo bên trong Trong quá trìnhReset thì cổng P1 được cấu hình như một cổng đầu ra
Cổng P1 là đầu vào: Tương tự P0, để biến cổng P1 thành đầu vào thì nó phảiđược lập trình bằng cách ghi 1 đến tất cả các bit của nó
- Port P2: Cổng P2 chiếm 8 chân (các chân từ 21 đến 28).
Nó có thể được sử dụng như đầu vào hoặc đầu ra, không cần điện trở kéo KhiReset, thì cổng P2 được cấu hình như một cổng đầu ra Cổng P2 là đầu vào thì nó phảiđược lập trình bằng cách ghi các số 1 tới tất cả các chân của nó
Vai trò kép của P2: Trong các hệ thống 8751, 89C52 và DS5000 thì P2 đượcdùng như đầu ra Tuy nhiên trong hệ thống 80312 thì cổng P2 có thể được dùng cùngvới P0 để tạo ra địa chỉ 16 bit đối với bộ nhớ ngoài Vì một bộ 8031 có khả năng truycập 64k byte bộ nhớ ngoài, nên nó cần một đường địa chỉ 16 bít Trong khi P0 cungcấp 8 bit thấp qua A0 - A7 Công việc của P2 là cung cấp các bít địa chỉ A8 -A15
- Port P3: Port P3 chiếm 8 chân (các chân 10 đến 17).
Nó có thể được sử dụng như đầu vào hoặc đầu ra Cổng P3 không cần các điệntrở kéo Mặc dù cổng P3 được cấu hình như một cổng đầu ra khi Reset, nhưng đâykhông phải là cách nó được sử dụng phổ biến nhất
Cổng P3 được bổ sung các chức năng quan trọng, đặc biệt Bảng 1 bảngdưới cung cấp các chức năng khác của cổng P3 Thông tin này áp dụng cho cả 8052 và
8031
Trang 8Bảng 1:Chức năng các cổng của 8052.
P3.0P3.1P3.2P3.3P3.4P3.5P3.6P3.7
Nhận dữ liệu (RXD)Phát dữ liệu (TXD)Ngắt 0(INT0)Ngắt 1(INT1)
Bộ định thời 0 (TO)
Bộ định thời 1 (T1)Ghi (WR)Đọc (RD)
1011121314151617
1.3.2 Động cơ bước.
Động cơ bước là một loại động cơ điện có nguyên lý và ứng dụng khác biệt với
đa số các động cơ điện thông thường Chúng thực chất là một động cơ đồng bộ dùng
để biến đổi các tín hiệu điều khiển dưới dạng các xung điện rời rạc kế tiếp nhau thànhcác chuyển động góc quay hoặc các chuyển động của rôto có khả năng cố định rôtovào các vị trí cần thiết
Về cấu tạo, động cơ bước có thể được coi là tổng hợp của hai loại động cơ:ĐỘng cơ một chiều không tiếp xúc và động cơ đồng bộ giảm tốc công suất nhỏ
Hình 1.5 hình ảnh động cơ bước.
Trang 9- Cấu tạo động cơ bước:
Hình 1.6 cấu tạo động cơ bước.
Động cơ bước không quay theo cơ chế thông thường, chúng quay theo từng bướcnên có độ chính xác rất cao về mặt điều khiển học Chúng làm việc nhờ các bộ chuyểnmạch điện tử đưa các tín hiệu điều khiển vào stato theo thứ tự và một tần số nhất định Tổng
số góc quay của rôto tương ứng với số lần chuyển mạch, cũng như chiều quay và tốc độquay của rôto phụ thuộc vào thứ tự chuyển đổi và tần số chuyển đổi
Phương pháp điều khiển động cơ bước: các cuộn dây được cấp dòng theo vòng.Mỗi khi vòng dây được cấp thì động cơ được gọi là quay 1 bước
- Hoạt động của từng cuộn dây trong động cơ bước:
Hình 1.7 cấu tạo bên trong động cơ bước.
Trang 10Các cuộn dây ABCD được nạp theo chu trình:
Động cơ bước có rất nhiều ứng dụng trong kỹ thuật, đặc biệt là trong điều khiển
kỹ thuật số, các dây truyền công nghệ hiện đại hiện nay hầy hết đêu khai thác sử dụngloại động cơ này Ngoài ra động cơ còn được dùng để chế tạo robot…
Trang 11Bảng 3.1: Thứ tự các chân LCD và công dụng của chúng.
Các chân 1,2,3 là các chân VSS , VDD, VEE trong đó VSS chân nối đất, VEEchân chọn độ tương phản chân này dc chọn qua 1 biến trở 5K một đầu nối VCC , mộtđầu nối mát Chân VDD nối dương nguồn
RS chân chọn thanh gi: có hai thanh gi trong LCD, chân RS được dùng để chọnthanh gi như sau: RS=0 thì thanh gi mà lệnh được chọn để cho người dùng gửi mộtlệnh chẳng hạn như xóa màn hình, đưa con trỏ về đầu dòng Nếu RS = 1 thì thanh ghi
dữ liệu được chọn cho phép người dùng gửi dữ liệu cần hiển thị lên LCD
Chân đọc ghi RW: Đầu vào đọc ghi cho phép người dùng ghi thông tnin lênLCD khi RW = 0 và đọc thông tin khi RW = 1
Chân cho phép E (Enable) : Chân cho phép E được sử dụng bởi LCD để chốt
dữ liệu của nó Khi dữ liệu được cấp đến chân dữ liệu thì một xung mức cao xuốngthấp được áp đến chân này để LCD chốt các dữ liệu trên các chân dữ liệu Xung nàyphải rộng tổi thiểu là 450ns
Chân Do-D7: Đây là 8 chân dữ liệu 8 bít, được dùng đẻ gửi thông tin lên LCDhoặc đọc nội dung trong các thanh ghi của LCD Để hiển thị các chữ cái và con số,chúng ta gửi mã ASCII của các chữ cái từ A đến Z, a đến f và các con số từ 0 đến 9đến chân này khi RS = 1
Cũng có các mã lệnh mà có thể gửi đến LCD để xóa màn hình hoặc đưa con trỏ
về đầu dòng hoặc nhấp nháy con trỏ
Để mạch hoạt động ta có thể mắc theo sơ đồ sau:
Trang 12Hình 1.10.Sơ đồ nguyên lý LCD trong mạch.
1.3.4 ULN2003A.
Hình 1.11 Cấu tạo của ULN2003A.
ULN2003A là một IC dùng để khuếch đại dòng, vì vi điều khiển không đủ dòng
để điều khiển các cuộn dây của động cơ bước nên ta phải ghép thêm ICULN2003A đểcấp đủ dòng cho các cuộn dây trên stator của động cơ bước Chúng ta có thể dùng các
IC khác để khuếch đại dòng như ULN2008, thyrytor trường IRF540 để cấp đủ dòngcho stator nhưng dùng bóng bán dẫn làm bộ điều khiển thì cần sử dụng các diode đểngăn dòng cảm ứng ngược tạo ra khi tắt cuộn dây Vì thế 1 lý do mà ULN2003 được
ưa chuộng chính là vì nó đã có sẵn diode bên trong để ngăn dòng cảm ứng ngược
1.3.5 Điện Trở.
Trang 13Điện trở là linh kiện điện tử thụ động có tính cản trở dòng điện trong mạchđiện nó có tác dụng điều chỉnh điện áp,hạn chế dòng điện, chia điện áp, điều chỉnh hệ
số khuếch đại, ổn định nhiệt
Cấu tạo của điện trở: điện trở được cấu tạo từ những vật liệu có điện trở suấtcao như làm bằng than, magie kim loại NiO2, oxit kim loại,dây quấn Người ta dùngcác vòng màu để biểu thị giá trị điện trở
Trong mạch điện tụ điện có tác dụng lọc nguồn,nối tầng tín hiệu,khử nhiễu…Giá trị của tụ điện là điện dung, được đo bằng đơn vị Farad (kí hiệu là F) Giátrị F là rất lớn nên hay dùng các giá trị nhỏ hơn như micro fara (μF), nano Fara (nF)hay picro Fara (pF)
Trang 14Hình 1.14 hình ảnh các loại tụ.
Trang 15Chương 2: THIẾT KẾ VÀ THỰC THI.
2.1 Thiết kế phần cứng.
2.1.1 Sơ đồ nguyên lý.
Sơ đồ nguyên lý được thiết kế trên phần mềm Proteus Gồm các khối điều khiểndùng vi điều khiển AT89S52, khối động cơ bước dùng IC đệm dòng UNL2003, khốihiển thị LCD 16x2
Hình 2.1.sơ đồ nguyên lý.
Trang 162.1.2.Lưu đồ thuật toán.
Gán biến đánh dấu =0;
Phím Stop được nhấn? Gán biến đánh dấu =3;
Trang 17Chạy động cơ với thông số
thời gian trễ và biến đánh
dấu
Trang 182.1.2 Sơ đồ mạch in.
Mạch in khối điều khiển:
Hình 2.2.mạch in khối điều khiển.
- Mạch in khối động cơ và hiển thị
Hình 2.3.mạch in khối động cơ và hiển thị.
Trang 19unsigned char a,i,n,j,xungdelay,h;
Trang 20// -Ham ghi lenh giao tiep voi LCD -//
void ghi_lenh(unsigned char lenh)
{
kt_ban();
delay(50);
P0 = lenh;
RS_LCD = 0; // Chon thanh ghi lenh
RW_LCD = 0; // Chon che do ghi du lieu tu 8051 vao LCDE_LCD = 1;
Trang 22// -Ham ghi so nguyen ra LCD -//
void hienthiso(unsigned char n){
else if(a==2) ghi_nhanh_chuoi("QN : ");
if(c1!=0) ghi_nhanh(c1+48); // Doi ra hang chuc, ma asciighi_nhanh(d1+48); // Doi ra hang don vi, ma ascii
ghi_lenh(0x01); // Xoa man hinh
ghi_lenh(0x0f); // Co dich hien thi
}
Trang 23//ham gioi thieu
// -// -Ham tre khoang thoi gian rat ngan phuc vu viec kiem tr co ban -//
void khoitao(void){// Ham khoi tao
Trang 24TR1=1; //khoi dong timer1TR0=1;
Trang 27Hình 2.5 Hình ảnh mạch sau khi hoàn thành.
Trang 28KẾT LUẬN
Với Đề tài Vi Điều Khiển giúp cho sinh viên bổ sung thêm kỹ năng về lập trìnhcũng như làm mạch trong thực tế và xử lý sự cố Đề tài của em đã làm về điều khiểnđộng cơ bước ứng dụng cho vi điều khiển họ AT89XX Thông qua module này em đãđược tiếp cận với các thiết bị điện tử ngoài thực tế, nó sẽ rất có ích với iệc công tác của
em sau này Với sự hướng dẫn nhiệt tình của cô Ngô Thị Vinh cùng sự cố gắng và tìm
hiểu em đã thiết kế ứng dụng một số Modul của vi điều khiển trong lĩnh vực điềukhiển cơ học Trong quá trình thực hiện còn một số chỗ chưa thật tối ưu , rất mongđược sự góp ý , hướng dẫn của thầy cô và các bạn
Qua đây em cũng xin gửi lời cảm ơn tới các thầy cô đã trang bị cho chúng emvốn kiến thức đầy đủ để giúp cho quá trình thực tế không ngỡ ngàng và tự tin với kiếnthức mình đã được trang bị ở trường Đặc biêt em xin gửi lời cảm ơn tới giáo viênhướng dẫn của em cô Ngô Thị Vinh, thầy đã giúp đỡ Tôi rất nhiều trong bài báo cáochuyên ngành lần này