Nghiên cứu, thiết kế, chế tạo mạch đo và điều khiển tốc độ động cơ dc
Trang 2NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN
Hưng Yên, ngày 15 tháng 5 năm 2013
Giảng viên :Giang Hồng Bắc
Trang 3LỜI NÓI ĐẦU
Trong những năm gần đây, nền kinh tế của nước ta phát triển rất mạnh mẽ và nhanh chóng, để đạt được kết quả này thì có sự đóng góp rất của ngành kĩ thuật điện - điện tử, kĩ thuật vi xử lý
Với sự phát triển như vũ bão hiện nay thì kĩ thuật điện-điện tử, kĩ thuật vi xử lý đang xâm nhập vào tất cả các ngành khoa học – kĩ thuật khác và đã đáp ứng được mọi nhu cầu của người dân Sự ra đời của các vi mạch điều khiển với giá thành giảm nhanh ,khả năng lập trình ngày càng cao đã mang lại những thay đổi sâu sắc trong ngành kỹ thuật điện – điện tử
Để bước đầu làm quen dần với vi điều khiển, chúng em đã được các thầy cô giáo
trong khoa giao cho đồ án môn học với đề tài: “Nghiên cứu, thiết kế, chế tạo mạch đo
và điều khiển tốc động cơ DC”.
Trong thời gian nghiên cứu và làm đồ án dựa vào kiến thức đã được học ở trường, qua một số sách, tài liệu có liên quan cùng với sự giúp đỡ tận tình của thầy
‘Giang Hồng Bắc’ nên đồ án của chúng em đã hoàn thành Trong quá trình thực hiện đề
tài, mặc dù chúng em đã rất cố gắng nhưng không thể tránh khỏi sai xót Vì vậy chúng
em rất mong được sự đóng góp của thầy cô và các bạn để giúp đề tài phát triển thêm
Chúng em xin chân thành cảm ơn!
Nhóm 3
Trang 4Mục lục
Trang 5PHẦN I GIỚI THIỆU ĐỀ TÀI
1.1Đặt vấn đề
Động cơ là 1 loại rất phổ biến với dân kĩ thuật điện và nó được ứng dụng khá rộng rãitrong cuộc sống : quạt, các loại máy trong sản suất nông nghiệp ( máy tuốt , máy xaysát ) trong sân chơi robocon thì động cơ điện 1 chiều được sử dụng rất nhiều : nó giúpcho robot chuyển động theo ý muốn, cũng như nâng hạ 1 số kết cấu Chính vì những ứng
dụng của nó nên chúng em chon đề tài :“Nghiên cứu, thiết kế, chế tạo mạch đo và điều khiển tốc động cơ DC”.
1.2Đặc điểm của đề tài
- An toàn và hiệu quả
Trang 6PHẦN II:CƠ SỞ LÍ LUẬN2.1 Vi điều khiển PIC16F877A
2.1.1 Khái quát về vi điều khiển PIC16F877A
2.1.1.1 Sơ đồ chân và sơ đồ nguyên lí của PIC16F877A
Sơ đồ chân
Sơ đồ nguyên lý
Trang 7vi vào vi điều khiển.
Việc xuất nhập dữ liệu ở PIC16F877A khác với họ 8051 Ở tất cả các PORT củaPIC16F877A, ở mỗi thời điểm chỉ thực hiện được một chức năng :xuất hoặc nhập Để
Trang 8chuyển từ chức năng này nhập qua chức năng xuất hay ngược lại, ta phải xử lý bằng phầnmềm, không như 8051 tự hiểu lúc nào là chức năng nhập, lúc nào là chức năng xuất.Trong kiến trúc phần cứng của PIC16F877A, người ta sử dụng thanh ghi TRISA ở địachỉ 85H để điều khiển chức năng I/O trên Muốn xác lập các chân nào của PORTA lànhập (input) thì ta set bit tương ứng chân đó trong thanh ghi TRISA Ngược lại, muốnchân nào là output thì ta clear bit tương ứng chân đó trong thanh ghi TRISA Điều nàyhoàn toàn tương tự đối với các PORT còn lại
Ngoài ra, PORTA còn có các chức năng quan trọng sau :
- Ngõ vào Analog của bộ ADC : thực hiện chức năng chuyển từ Analog sangDigital
- Ngõ vào điện thế so sánh
- Ngõ vào xung Clock của Timer0 trong kiến trúc phần cứng : thực hiện các nhiệm
vụ đếm xung thông qua Timer0…
- Ngõ vào của bộ giao tiếp MSSP (Master Synchronous Serial Port)
PORTB
PORTB có 8 chân Cũng như PORTA, các chân PORTB cũng thực hiện được 2 chứcnăng : input và output Hai chức năng trên được điều khiển bới thanh ghi TRISB Khimuốn chân nào của PORTB là input thì ta set bit tương ứng trong thanh ghi TRISB,ngược lại muốn chân nào là output thì ta clear bit tương ứng trong TRISB
Thanh ghi TRISB còn được tích hợp bộ điện trở kéo lên có thể điều khiển được bằngchương trình
Trang 9PORTD có 8 chân Thanh ghi TRISD điều khiển 2 chức năng input và output củaPORTD tương tự như trên PORTD cũng là cổng xuất dữ liệu của chuẩn giao tiếp songsong PSP (Parallel Slave Port)
PORTE
PORTE có 3 chân Thanh ghi điều khiển xuất nhập tương ứng là TRISE Các châncủa PORTE có ngõ vào analog Bên cạnh đó PORTE còn là các chân điều khiển củachuẩn giao tiếp PSP
2.1.2 Tìm hiểu về vi điều khiển PIC16F877A
2.1.2.1 Cấu trúc phần cứng của PIC16F877A
PIC là tên viết tắt của “ Programmable Intelligent computer” do hãng GeneralInstrument đặt tên cho con vi điều khiển đầu tiên của họ Hãng Micrchip tiếp tục pháttriển sản phầm này và cho đến hàng đã tạo ra gần 100 loại sản phẩm khác nhau
PIC16F887A là dòng PIC khá phổ biến, khá đầy đủ tính năng phục vụ cho hầu hết tất
cả các ứng dụng thực tế Đây là dòng PIC khá dễ cho người mới làm quen với PIC có thểhọc tập và tạo nền tản về họ vi điều khiển PIC của mình
Cấu trúc tổng quát của PIC16F877A như sau :
- 8K Flash Rom
- 368 bytes Ram
- 256 bytes EFPROM
- 5 port vào ra với tín hiệu điều khiển độc lập
- 2 bộ định thời Timer0 và Timer2 8 bit
- 1 bộ định thời Timer1 16 bit có thể hoạt động ở cả chế độ tiết kiệm năng lượngvới nguồn xung clock ngoài
- 2 bộ Capture/ Compare/ PWM
- 1 bộ biến đổi Analog -> Digital 10 bit, 8 ngõ vào
- 2 bộ so sánh tương tự
- 1 bộ định thời giám sát (Watch Dog Timer)
- 1 cổng song song 8 bit với các tín hiệu điều khiển
- 1 cổng nối tiếp
- 15 nguồn ngắt
Trang 10Sơ đồ khối vi điều khiển 16F877A
Trang 11Để mã hóa được địa chỉ 8K word bộ nhớ chương trình, thanh ghi đếm chương trình
PC có dung lượng 13 bit
Khi vi điều khiển reset, bộ đếm chương trình sẽ trỏ về địa chỉ 0000h Khi có ngắt xảy
ra thì thanh ghi PC sẽ trỏ đến địa chỉ 0004h
Trang 12Bộ nhớ chương trình không bao gồm bộ nhớ Stack và không được địa chỉ hóa bởi bộđém chương trình.
Mỗi bank của bộ nhớ dữ liệu PIC16F877A bao gồm cả các thanh ghi có chức năngđặc biệt SFR nằm ở các các ô nhớ địa chỉ thấp và các thanh ghi mục đích dùng chungGPR nằm ở vùng địa chỉ còn lại của mỗi bank thanh ghi Vùng ô nhớ các thanh ghi mụcđích dùng chung này chính là nơi người dùng sẽ lưu dữ liệu trong quá trình viết chươngtrình Tất cả các biến dữ liệu nên được khai báo chứa trong vùng địa chỉ này
Trong cấu trúc bộ nhớ dữ liệu của PIC16F877A, các thanh ghi SFR nào mà thườngxuyên được sử dụng (như thanh ghi STATUS) sẽ được đặt ở tất cả các bank để thuận tiệntrong việc truy xuất Sở dĩ như vậy là vì, để truy xuất một thanh ghi nào đó trong bộ nhớcủa 16F877A ta cần phải khai báo đúng bank chứa thanh ghi đó, việc đặt các thanh ghi sửdụng thường xuyên giúp ta thuận tiên hơn rất nhiều trong quá trình truy xuất, làm giảmlệnh chương trình
Trang 13Sơ đồ bộ nhớ dữ liệu của PIC16F877ADựa trên sơ đồ 4 bank bộ nhớ dữ liệu PIC16F877A ta rút ra các nhận xét như sau :-Bank0 gồm các ô nhớ có địa chỉ từ 00h đến 77h, trong đó các thanh ghi dùng chung
để chứa dữ liệu của người dùng địa chỉ từ 20h đến 7Fh Các thanh ghi PORTA, PORTB,PORTC, PORTD, PORTE đều chứa ở bank0, do đó để truy xuất dữ liệu các thanh ghi
Trang 14này ta phải chuyển đến bank0 Ngoài ra một vài các thanh ghi thông dụng khác ( sẽ giớithiệu sau) cũng chứa ở bank0
- Bank1 gồm các ô nhớ có địa chỉ từ 80h đến FFh Các thanh ghi dùng chung có địachỉ từ A0h đến Efh Các thanh ghi TRISA, TRISB, TRISC, TRISD, TRISE cũng đượcchứa ở bank1
- Tương tự ta có thể suy ra các nhận xét cho bank2 và bank3 dựa trên sơ đồ trên.Cũng quan sát trên sơ đồ, ta nhận thấy thanh ghi STATUS, FSR… có mặt trên cả 4 bank.Một điều quan trọng cần nhắc lại trong việc truy xuất dữ liệu của PIC16F877A là : phảikhai báo đúng bank chứa thanh ghi đó Nếu thanh ghi nào mà 4 bank đều chứa thì khôngcần phải chuyển bank
2.1.2.3 Một vài thanh ghi chức năng đặc biệt SFR
Thanh ghi STATUS : thanh ghi này có mặt ở cả 4 bank thanh ghi ở các địa chỉ 03h,
83h, 103h và 183h : chứa kết quả thực hiện phép toán của khối ALU, trạng thái reset vàcác bit chọn bank cần truy xuất trong bộ nhớ dữ liệu
Thanh ghi OPTION_REG : có mặt ở bank2 và bank3 có địa chỉ 81h và 181h Thanh
ghi này cho phép đọc và ghi, cho phép điều khiển chức năng pull_up của các chân trongPORTB, xác lập các tham số về xung tác động, cạnh tác động của ngắt ngoại vi và bộđếm Timer0
Thanh ghi INTCON : có mặt ở cả 4 bank ở địa chỉ 0Bh,8Bh,10Bh,18Bh Thanh ghi
cho phép đọc và ghi, chứa các bit điều khiển và các bit báo tràn timer0, ngắt ngoại viRB0/INT và ngắt khi thay đổi trạng thái tại các chân của PORTB
Trang 15Thanh ghi PIE1 :địa chỉ 8Ch, chứa các bit điều khiển chi tiết các ngắt của các khối
chức năng ngoại vi
Thanh ghi PIR1 : địa chỉ 0Ch, chứa cờ ngắt của các khối chức năng ngoại vi, các ngắt
này được cho phép bởi các bit điều khiển chứa trong thanh ghi PIE1
Thanh ghi PIE2 : địa chỉ 8Dh, chứa các bit điều khiển các ngắt của các khối chức
năng CCP, SSP bú, ngắt của bộ so sánh và ngắt ghi vào bộ nhớ EEPROM
Thanh ghi PIR2: địa chỉ 0Dh, chứa cờ ngắt của các khối chức năng ngoại vi, các ngắt
này được cho phép bởi các bit điều khiển chứa trong thanh ghi PIE2
Thanh ghi PCON : địa chỉ 8Eh, chứa các cờ hiệu cho biết trạng thái các chế độ reset
của vi điều khiển
2.1.2.4 Thanh ghi W(work)
Đây là thanh ghi rất đặc biệt trong PIC16F877A Nó có vai trò tương tự như thanh ghiAccummulator của 8051, tuy nhiên tầm ảnh hưởng của nó rộng hơn rất nhiều
Tập lệnh của PIC16F877A có tất cả 35 lệnh thì số lệnh có sự “góp mặt” của thanh ghi
W là 23 lệnh Hầu hết các lệnh của PIC16F877A đều liên quan đến thanh ghi W Ví dụ
Trang 16như, trong PIC chúng ta không được phép chuyển trực tiếp giá trị của một thanh ghi nàyqua thanh ghi khác mà phải chuyển thông qua thanh ghi W.
Thanh ghi W có 8 bit và không xuất hiện trong bất kỳ bank thanh ghi nào của bộ nhớ
dữ liệu của 16F877A Mỗi dòng lệnh trong PIC16F877a được mô tả trong 14 bit Khi tathực hiện một lệnh nào đó, nó phải lưu địa chỉ của thanh ghi bị tác động (chiếm 8 bit) vàgiá trị một hằng số k nào đó (thêm 8 bit nữa) là 16 bit, vượt quá giới hạn 14 bit Do vậy takhông thể nào tiến hành một phép tính toàn trực tiếp nào giữa 2 thanh ghi với nhau hoặcgiữa một thanh ghi với một hằng số k Hầu hết các lệnh của PIC16F877A đều phải liênquan đến thanh ghi W cũng vì lý do đó Khi thực hiện một dòng lệnh nào đó, thì PIC sẽkhông phải tốn 8 bit để lưu địa chỉ của thanh ghi W trong mã lệnh ( vì được hiểu ngầm)
Có thể xem thanh ghi W là thanh ghi trung gian trong quá trình viết chương trình choPIC16F877A
2.1.2.5 Các vấn đề về Timer
PIC16F877A có tất cả 3 timer : timer0 (8 bit), timer1 (16 bit) và timer2 (8 bit)
Timer0
Trang 17Cũng giống như 8051, Timer0 của 16F877A cũng có 2 chức năng : định thời và đếmxung 2 chức năng trên có thể được lựa chọn thông qua bit số 5 TOCS của thanh ghiOPTION.
Ngoài ra, ta cũng có thể lựa chọn cạnh tích cực của xung clock, cạnh tác động ngắt…thông qua thanh ghi trên
Timer0 được tích hợp thêm bộ tiền định 8 bit (prescaler), có tác dụng mở rộng “dunglượng” của Timer0 Bộ prescaler này có thể được điều chỉnh bởi các 3 bit PS2:PS0 trongthanh ghi OPTION Nó có thể có giá trị 1:2, 1:4, 1:8, 1:16, 1:32, 1:64, 1:128, 1:256 tùythuộc vào việc thiết lập các giá trị 0 ,1 cho 3 bit trên
Bộ tiền định có giá trị 1:2 chẳng hạn ,có nghĩa là : bình thường không sử dụng bộ tiềnđịnh của Timer0 (đồng nghĩa với tiền định tỉ lệ 1:1) thì cứ khi có tác động của 1 xungclock thì timer0 sẽ tăng thêm một đơn vị Nếu sử dụng bộ tiền định 1:4 thì phải mất 4xung clock thì timer0 mới tăng thêm một đơn vị Vô hình chung, giá trị của timer0 (8 bit)lúc này không còn là 255 nữa mà là 255*4=1020
Các thanh ghi liên quan đến Timer0 bao gồm :
- TMR0 : chứa giá trị đếm của Timer0
- INTCON : cho phép ngắt hoạt động
- OPTION_REG : điều khiển prescaler
Timer1
Sơ đồ khối của Timer1
Trang 18Timer1 là bộ định thời 16 bit, giá trị của Timer1 sẽ được lưu trong hai thanh ghi 8 bitTMR1H:TMR1L Cờ ngắt của Timer1 là bit TMR1IF, bit điều khiển của Timer1 làTRM1IE.
Cặp thanh ghi của TMR1 sẽ tăng từ 0000h lên đến FFFFh rồi sau đó tràn về 0000h.Nếu ngắt được cho phép, nó sẽ xảy ra khi khi giá trị của TMR1 tràn từ FFFFh rồi về0000h, lúc này TMR1IF sẽ bật lên
- Chế độ đếm bất đồng bộ :chế độ này xảy ra khi bit T1SYNC được set Bộ địnhthời sẽ tiếp tục đếm trong suốt quá trình ngủ của vi điều khiển và có khả năng tạo mộtngắt khi bộ định thời tràng và làm cho Vi điều khiển thoát khỏi trạng thái ngủ
Timer2 : là bộ định thời 8 bit bao gồm một bộ tiền định (prescaler), một bộ hậu định
Postscaler và một thanh ghi chu kỳ viết tắt là PR2 Việc kết hợp timer2 với 2 bộ định tỉ lệcho phép nó hoạt động như một bộ đinh thời 16 bit Module timer2 cung cấp thời gianhoạt động cho chế độ điều biến xung PWM nếu module CCP được chọn
Trang 19Dòng làm việc max Id MAX 49A
Điện áp làm việc Vdss=55v MAX
Kích dẫn áp MAX +-20v
Thời gian trễ turn on ( 11ns) và turn off ( 39ns)
Tần số chuyển mạch cực đại là 1Mhz
Trang 20Hình ảnh của PC817
Sơ đồ nguyên lí
- Nguyên lí hoạt động : khi cấp tín hiệu vào chân số 1, led phía trong opto nối giữa chân
1 và chân 2 phát sáng , xảy ra hiệu ứng quang điện dẫn đến 3 4 thông
-Tác dụng : cách li điều khiển giữa 2 tầng mạch điện khác nhau
-Mục đích : nếu có sự cố từ tầng ứng dụng như cháy ,chập , tăng áp thì cũng không làm ảnh hưởng tới tầng điều khiển
Trang 21IC7812, có tác dụng gim điện áp bằng 12v tại đầu ra khi đầu vào >=12v
IC7805 có tác dụng gim điện áp bằng 5v tại đầu ra khi đầu vào >=5v
2.2.4 IR2184.
Trang 23
IR2184 là ic Driver điều khiển mosfet cầu H
Chân 1 là chân tín hiệu PWM đầu vào
Chân 2 là chân Shutdown tích cực mức thấp ngắt toàn bộ Mosfet khi có tín hiệu quá tải đưa về
Chân 3 là chân GND
Chân 4 điều khiển mosfet kênh dưới
Chân 5 là chân nguồn Vcc từ 12V đến 15V
Chân 6 là chân nguồn âm của mosfet kênh trên
Chân 7 điều khiển mosfet kênh trên
Chân 8 là chân nguồn dương của mosfet kênh trên
*Dạng tín hiệu xung
Trang 24Text LCD là loại màn hình tinh thể lỏng nhỏ dùng để hiển thị các dòng chữ hoặc
số trong bảng mã ASCII Không giống các loại LCD lớn, Text LCD được chia sẵn thànhtừng ô và ứng với mỗi ô chỉ có thể hiển thị một ký tự ASCII Mỗi ô của text LCD bao
Trang 25Hình ảnh
Kết nối LCD
Chân 1 và chân 2 là các chân nguồn, được nối với GND và nguồn 5V Chân 3 là chânchỉnh độ tương phản, chân này cần được nối với 1 biến trở chia áp như hình vẽ trong khihoạt động, chỉnh để thay đổi giá trị biến trở để đạt được độ tương phản cần thiết, sau đógiư mức biến trở này Các chân điều khiển RS, R/W, EN và các đường dữ liệu được nốitrực tiếp với vi điều khiển Tùy theo chế độ hoạt động 4bit hay 8 bit mà các chân từ D0đến D3 có thể bỏ qua hoặc nối với vi điều khiển
Trang 262.2.5 Động cơ DC
Phương pháp điều khiển : Thay đổi tốc độ động cơ bằng cách thay đổi áp cấp vào cho
động cơ
2.2.6 Encoder
Trang 27* Cấu tạo của encoder
Nhìn trên hình ta thấy encoder gồm : 1 tấm tròn có khắc lỗ, 1 Hệ thông LED phát và thu
* Nguyên tắc hoạt động cơ bản:
Nguyên lý cơ bản của encoder, đó là một đĩa tròn xoay, quay quanh trục Trên đĩa có các lỗ (rãnh) Người ta dùng một đèn led để chiếu lên mặt đĩa Khi đĩa quay, chỗ không
có lỗ (rãnh), đèn led không chiếu xuyên qua được, chỗ có lỗ (rãnh), đèn led sẽ chiếu xuyên qua Khi đó, phía mặt bên kia của đĩa, người ta đặt một con mắt thu Với các tín hiệu có, hoặc không có ánh sáng chiếu qua, người ta ghi nhận được đèn led có chiếu qua lỗ hay không.Số xung đếm được và tăng lên nó tính bằng số lần ánh sáng bị cắt!Như vậy là encoder sẽ tạo ra các tín hiệu xung vuông và các tín hiệu xung vuông này được cắt từ ánh sáng xuyên qua lỗ Nên tần số của xung đầu ra sẽ phụ thuộc vào tốc độ quay của tấm tròn đó Đối với encoder mình đang dùng thì nó có 2 tín hiệu ra lệch pha nhau 90 Hai tín hiệu này có thể xác định được chiều quay của động cơ
Đây là sơ đồ cấu tạo cơ bản bên trong của nó để tạo được xung vuông!