Luận văn Nghiên cứu lắp ráp máy đo tần số âm tần hiển thị số

Bằng những kiến thức về điện – điện tử, tôi đã lắp ráp thành công máy đo âm tần hiển thị số. Máy đo có kích thước nhỏ gọn, lắp đặt, di chuyển đơn giản, dễ dàng. Sai số của máy đo so với máy phát xung chuẩn nhỏ nên khá tin cậy trong việc đo tần số âm tần của các xung hình sin, vuông, tam giác.

pdf81 trang | Chia sẻ: toanphat99 | Lượt xem: 2289 | Lượt tải: 0download
Bạn đang xem trước 20 trang tài liệu Luận văn Nghiên cứu lắp ráp máy đo tần số âm tần hiển thị số, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
Thiết lập chiều dịch chuyển của con trỏ và hiển thị. 40 µs Thiết lập chức năng 0 0 0 0 1 DL N F * * Thiết lập độ dài của dữ liệu, số dòng và font chữ. 40 µs Set CGRAM address 0 0 0 1 CGRAM address Thiết lập địa chỉ CGRAM. 40 µs Set DDRAM adress 0 0 1 DDRAM address Thiết lập địa chỉ DDRAM. 40 µs Read “BUSY” flag 0 1 BF CGRAM/DDRAM address Đọc cờ báo bận và địa chỉ của CGRAM hay DDRAM (tùy vào lệnh trước đó). 0 µs Write to CGRAM or DDRAM 1 0 Write data Ghi dữ liệu vào CGRAM hay DDRAM. 40 µs Read from CGRAM or DDRAM 1 1 Read data Đọc dữ liệu vào CGRAM hay DDRAM. 40 µs 25 Các bit viết tắt trong mã lệnh được nêu rõ trong bảng 2.4. Bảng 2.4: Các bit viết tắt và mô tả. Tên bit Mô tả I/D 0 = Giảm vị trí con trỏ. 1 = Tăng vị trí con trỏ. S 0 = Không dịch chuyển hiển thị. 1 = Dịch chuyển hiển thị. D 0 = Tắt hiển thị. 1 = Bật hiển thị. C 0 = Tắt con trỏ. 1 = Bật con trỏ. B 0 = Con trỏ không nhấp nháy. 1 = Con trỏ nhấp nháy. S/C 0 = Di chuyển con trỏ. 1 = Dịch chuyển hiển thị. R/L 0 = Dịch trái. 1 = Dịch phải. D/L 0 = Chế độ 4 – bit dữ liệu. 1 = Chế độ 8 – bit dữ liệu. N 1 dòng. 2 dòng. F 0 = Font chữ 5x8. 1 = Font chữ 5x10. BF 0 = Không bận. 1 = Đang bận. 2.3.5 Giao tiếp và nguyên tắc hiển thị ký tự trên LCD LCD có hai mode giao tiếp là 4 bit và 8 bit. Ta sẽ lần lượt tìm hiểu về cách sử dụng cũng như ưu – nhược điểm của hai mode này. - Mode 8 bit: Để sử dụng mode 8 bit, tất cả các lines dữ liệu của LCD từ D0 đến D7 (từ chân 7 đến chân 14) phải được nối với một PORT (gồm 8 chân) của vi điều khiển bên ngoài. Ưu điểm của phương pháp giao tiếp này là dữ liệu được ghi và đọc rất nhanh và đơn giản vì chip điều khiển chỉ cần xuất hoặc nhận dữ liệu trên 1 PORT. Tuy nhiên, phương pháp này có nhược điểm là tổng số chân dành cho giao tiếp LCD quá nhiều, nếu tính luôn cả 3 chân điều khiển thì cần đến 11 đường cho giao tiếp LCD. - Mode 4 bit: LCD cho phép giao tiếp với bộ điều khiển ngoài theo chế độ 4 bit. Trong chế độ này, các chân D0, D1, D2 và D3 của LCD không được sử dụng (để trống), chỉ có 4 chân từ D4 đến D7 được kết nối với vi điều khiển bên ngoài. Các instruction và data 8 bit sẽ được ghi và đọc bằng cách chia thành 2 phần, gọi là các nibbles, mỗi nibble gồm 4 bit và được giao tiếp thông qua 4 chân D7:4, nibble cao được xử lí trước và nibble thấp sau. Ưu điểm lớn nhất của phương pháp này tối thiểu số lines dùng cho giao tiếp LCD, nếu tính luôn cả 3 chân điều khiển thì chỉ cần 7 26 đường cho giao tiếp LCD. Tuy nhiên, việc đọc và ghi từng nibble tương đối khó khăn hơn đọc và ghi dữ liệu 8 bit. Hình 2.6 là hình ảnh cách mắc LCD theo mode giao tiếp 4 bit. Trong đó, các chân từ D4 đến D7 được mắc vào 4 chân thuộc 1 PORT của vi điều khiển. Chân VSS nối đất, VDD nối với nguồn 5V, VEE nối chân chạy của biến trở hạn dòng nhằm điều chỉnh độ tương phản của LCD. Hình 2.6: Cách mắc LCD theo kiểu giao tiếp 4 bit. Trình tự giao tiếp với LCD mode 4 bit được mô tả bằng sơ đồ hình 2.7. Hình 2.7: Sơ đồ khối giao tiếp với LCD. 27 Để sử dụng LCD chúng ta cần khởi động LCD, sau khi được khởi động LCD đã sẵn sàng để hiển thị. Quá trình khởi động chỉ cần thực hiện một lần ở đầu chương trình. Trong code giao tiếp với LCD, quá trình khởi động được viết trong một chương trình con tên LCD_Init, khởi động LCD thường bao gồm xác lập cách giao tiếp, kích thước font, số dòng LCD (Function set), cho phép hiển thị LCD, Cursor home(Display control), chế độ hiển thị tăng/giảm, shift (Entry mode set). Các thủ tục khác như xóa LCD, viết ký tự lên LCD, di chuyển con trỏđược sử dụng liên tục trong quá trình hiển thị LCD và sẽ được trình bày trong các đoạn chương trình con riêng. Chú ý: Mỗi khi thực hiện ghi lệnh hay dữ liệu hiển thị lên LCD đều phải kiểm tra cờ bận. Sở dĩ xuất hiện vấn đề này là do trong một khoảng thời gian LCD chỉ có thể thực hiện được một nhiệm vụ như xóa hay ghi dữ liệu.. Tuy nhiên, có một số loại LCD không cho phép kiểm tra cờ bận, vì thế nên ta phải chủ động trong việc lập trình trong việc phân phối thời gian khi ra lệnh cho LCD. Ví dụ như khi thực hiện lệnh xóa màn hình thì phải chờ 2 ms rồi mới thực hiện lệnh mới vì thời gian thực hiện lệnh xóa màn hình là 1,64 ms. 2.4 Vi điều khiển 16F887 2.4.1 Sơ đồ và tên các khối của 16F887 28 Hình 2.8: Sơ đồ khối của PIC 16F887  Khối ALU – Arithmetic Logic Unit.  Khối bộ nhớ chứa chương trình – Flash Program Memory.  Khối bộ nhớ chứa dữ liệu EEPROM – Data EEPROM. 29  Khối bộ nhớ file thanh ghi RAM – RAM file Register.  Khối giải mã lệnh và điều khiển – Instruction Decode Control.  Khối thanh ghi đặc biệt.  Khối bộ nhớ ngăn xếp.  Khối reset mạch khi có điện, khối định thời reset mạch khi có điện, khối định thời ổn định dao động khi có điện, khối định thời giám sát, khối reset khi sụt giảm nguồn, khối gỡ rối.  Khối ngoại vi timer T0, T1,T2.  Khối giao tiếp nối tiếp.  Khối chuyển đổi tín hiệu tương tự sang số –ADC.  Khối so sánh điện áp tương tự.  Khối tạo điện áp tham chiếu.  Khối các port xuất nhập. 2.4.2 Sơ đồ và chức năng của các chân Hình 2.9: Sơ đồ chân PIC 16F887 30  Port A: Port A (RA0 đến RA7) có số chân từ chân số 2 đến chân số 7 và chân số 13, 14. Port A bao gồm 8 chân I/O (vào/ra dữ liệu). Đây là các chân “hai chiều” (bidirectional pin), nghĩa là có thể xuất và nhập được. Chức năng I/O này được điều khiển bởi thanh ghi TRISA (địa chỉ 85h). Đặc biệt, Port A có hai chân 13 và 14 dùng để nối với thạch anh để tạo bộ dao động ngoại hay có thể được sử dụng để tạo dao động nội RC.  Port B: Port B (RB0 đến RB7) có số chân từ chân số 33 đến chân số 40. Port B gồm 8 chân I/O. Thanh ghi điều khiển xuất nhập tương ứng là TRISB. Bên cạnh đó một số chân của Port B còn được sử dụng trong quá trình nạp chương trình cho vi điều khiển với các chế độ nạp khác nhau. Port B còn liên quan đến ngắt ngoại vi và bộ Timer0. Ngoài ra nó còn được tích hợp chức năng điện trở kéo lên (pull – up) được điều khiển bởi chương trình.  Port C: Port C (RC0 đến RC7) có số chân từ chân số 15 đến chân số 18 và chân số 23 đến chân số 26. Port C gồm 8 chân I/O. Thanh ghi điều khiển xuất nhập tương ứng là TRISC. Bên cạnh đó Port C còn chứa các chân chức năng của bộ so sánh, bộ Timer1, bộ PWM và các chuẩn giao tiếp nối tiếp I2C, SPI, SSP, USART  Port D: Port D (RD0 đến RD7) có số chân từ chân số 19 đến chân số 22 và chân số 27 đến chân số 30. Port (RPD) gồm 8 chân I/O, thanh ghi điều khiển xuất nhập tương ứng là TRISD. Port D còn là cổng xuất dữ liệu của chuẩn giao tiếp PSP (Parallel Slave Port).  Port E: Port E (RE0 đến RE3) có số chân từ chân số 8 đến 10 và chân số 1. Port E gồm 3 chân I/O (từ RE0 đến RE2) và một chân chỉ nhập (RE3). Thanh ghi điều khiển xuất nhập tương ứng là TRISE. Các chân của Port E có ngõ vào analog. Bên cạnh đó Port E còn là các chân điều khiển của chuẩn giao tiếp PSP. Đặc biệt, chân số 1 (RE3) hay còn gọi là Master Clear dùng để Reset vi điều khiển với điện trở kéo nội.  Chân 12 và 31 dùng để nối đất.  Chân 11 và 31 dùng để cấp nguồn cho vi điều khiển hoạt động [8]. 31 2.4.3 Tổ chức bộ nhớ Cấu trúc của bộ nhớ vi điều khiển PIC16F887 bao gồm 2 bộ nhớ: + Bộ nhớ chương trình (Programmemory). + Bộ nhớ dữ liệu (Data memory). 2.4.3.1 Bộ nhớ chương trình (Programmemory) Bộ nhớ chương trình của vi điều khiển PIC16F887 là bộ nhớ Flash, dung lượng bộ nhớ 8K word (1 word = 14 bit) và được phân chia làm nhiều trang ( từ page 0 đến 3). Nhờ vậy bộ nhớ chương trình có khả năng chứa được 8*1024=8192 câu lệnh (vì một lệnh sau khi mã hoá sẽ có dung lượng 1 word (14 bit)). Để mã hóa được địa chỉ của 8K bộ nhớ chương trình, bộ đếm chương trình có dung lượng 13 bit. Khi vi điều khiển được Reset, bộ đếm chương trình chỉ đến địa chỉ 0004h (Interrupt vector). Bộ 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. Bảng bộ nhớ chương trình và các ngăn xếp. Hình 2.10: Bộ nhớ chương trình và các ngăn xếp. 32 2.4.3.2 Bộ nhớ dữ liệu (Data memory) Bộ nhớ dữ liệu của PIC là bộ nhớ EEPROM được chia ra làm nhiều bank. Đối với PIC16F887 bộ nhớ dữ liệu chia làm 4 bank. Mỗi bank có dung lượng 128 byte, bao gồm các thanh ghi có chức năng đặc biệt SFG (Special Function Register) nằm ở các vùng địa chỉ thấp và các thanh ghi mục đích chung GPR (General Purpose Register) nằm ở các vùng địa chỉ còn lại trong bank. Các thanh ghi SFG thường xuyên được sử dụng (ví dụ như thanh ghi STATUS) sẽ được đặt ở tất cả các bank của bộ đếm dữ liệu giúp thuận tiện trong quá trình truy xuất và làm giảm bớt lệnh của chương trình. Sơ đồ cụ thể của bộ nhớ dữ liệu PIC16F887 như hình 2.11. Hình 2.11: Bộ nhớ dữ liệu. 33 2.4.3.3 Các thanh ghi đặc biệt Đây là các thanh ghi được sử dụng bởi CPU hoặc được dùng để thiết lập và điều khiển các khối chức năng được tích hợp bên trong vi điều khiển. Có thể phân chia SFR làm hai loại: thanh ghi SFR liên quan đến các chức năng bên trong CPU và thanh ghi SFR dùng để thiết lặp và điều khiển các khối chức năng bên ngoài ( ví dụ như ADC, PWM,). Các thanh ghi liên quan đến chức năng bên trong: - Thanh ghi STATUS (03h, 83h, 103h, 183h): thanh ghi 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. Hình 2.12: Thứ tự các bit trên thanh ghi STATUS. -Thanh ghi OPTION_REG (81h, 181h): thanh ghi này cho phép đọc và ghi, cho phép điều khiển các chức năng pulled-up của các chân PORTB, xác lập các tham số xung tác động, cạnh tác động của ngắt ngoại vi và bộ đếm Time0. Hình 2.13: Thứ tự các bit trên thanh ghi OPTION_REG. -Thanh ghi INTCON (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 cờ hiệu khi Time0 tràn, ngắt ngoại vi RB0/INT và ngắt interrupt-on-change tại các chân của PORTB. Hình 2.14: Thứ tự các bit trên thanh ghi INTCON. -Thanh ghi PIE1 (8Ch): chứa các bit điều khiển chi tiết các ngắt của khối chức năng ngoại vi. 34 Hình 2.15: Thứ tự các bit trên thanh ghi PIE1. -Thanh ghi PIR1 (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. Hình 2.16: Thứ tự các bit trên thanh ghi PIR1. -Thanh ghi PIE2 (8Dh): chứa các bit điều khiển các ngắt của các khối chức năng CCP2, SSP bus, ngắt của bộ so sánh và ngắt ghi vào bộ nhớ EEPROM. Hình 2.17: Thứ tự các bit trên thanh ghi PIE2. -Thanh ghi PIR2 (0Dh): chứa các cờ ngắt của 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. Hình 2.18: Thứ tự các bit trên thanh ghi PIR2. -Thanh ghi PCON (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. Hình 2.19: Thứ tự các bit trên thanh ghi PCON. 2.4.4 Các bộ định thời Vi điều khiển PIC16F887 có 3 bộ định thời Timer đó là Timer0, Timer1, Timer2. 35 2.4.4.1 Timer0 Đây là một trong 3 bộ đếm hoặc bộ định thời của vi điều khiển PIC16F887. Timer0 là bộ đếm 8 bit được kết nối với bộ chia tần 8 bit. Cấu trúc của Time0 cho phép ta lựa chọn xung clock tác động và cạnh tích cực của xung clock. Ngắt Timer0 sẽ xuất hiện khi Timer0 bị tràn. Bit TMR0IE (INTCON) là bit điều khiển của Timer0. Khi TMR0IE=1 cho phép ngắt Timer0 tác động, TMR0IE=0 không cho phép ngắt Timer0 tác động. 2.4.4.2 Timer1 Bộ Timer1 là bộ định thời 16 bit, giá trị của Timer1 sẽ được lưu trong thanh ghi (TMR1H:TMR1L). Cờ ngắt của Timer1 là bit TMR1IF. Bit điều khiển của Timer1 là TMR1IE. Tương tự như Timer0, Timer1 cũng có 2 chế độ hoạt động: chế độ định thời và chế độ xung kích là xung clock của oscillator (tần số Timer bằng ¼ tần số của oscillator) và chế độ đếm (counter) với xung kích là xung phản ánh các sự kiện cần đếm lấy từ bên ngoài thông qua chân RCO/T1OSO/T1CKI (cạnh tác động là cạnh lên). Việc lựa chọn chế độ hoạt động của Timer được điều khiển bởi bit TMR1CS. 2.4.4.3 Timer2 Bộ Timer2 là bộ định thời 8 bit và được hỗ trợ hai bộ chia tần prescaler và postscaler. Thanh ghi chứa giá trị đếm của Timer2 là TMR2. Bit cho phép ngắt Timer2 tác động là TMR2ON. Cờ ngắt của Timer2 là bit TMR2IF. Xung ngõ vào (bằng ¼ tần số oscillator) được đưa qua bộ chia tần số prescaler 4 bit (với các tỉ số chia tần 1:1, 1:4 hoặc 1:6) và được điều khiển bởi các bit T2CKPS1:T2CKPS0. 2.5 OPAMP 2.5.1 Định nghĩa Khuếch đại thuật toán, còn gọi là OPAMP (viết tắt của cụm từ Operational Amplifier), là một bộ khuếch đại DC có hệ số khuếch đại A thường được chế tạo dưới dạng tích hợp [2]. Khuếch đại thuật toán vốn được dùng để thực hiện các thuật toán trong máy tính tương tự cho nên nó được mang tên như vậy. Ngày nay, khuếch đại thuật toán 36 được ứng dụng trong rất nhiều lĩnh vực khác nhau, với tầm tuần suất rất rộng từ DC đến hàng GHz. Hình 2.20: Sơ đồ chân của OPAMP. OPAMP có hai đầu vào (input) dương và âm và một đầu ra (output). Điện áp trên các đầu vào và ra là so với masse. Đầu vào dương gọi là đầu vào không đảo, nghĩa là khi có tín hiệu đưa đến đầu vào không đảo thì tín hiệu ra cùng dấu với tín hiệu vào. Tương tự, đầu vào âm gọi là đầu vào đảo, nghĩa là khi có tín hiệu đưa đến đầu vào đảo thì tín hiệu ra ngược dấu với tín hiệu vào. Ngoài ra, OPAMP còn có hai đầu nối với nguồn cung cấp đối xứng ±VCC. Điện áp cung cấp nằm trong khoảng từ 5V đến 18V. Nguồn cung cấp cho OPAMP có thể là nguồn đơn +VCC. Đặc điểm của OPAMP là có hệ số khuếch đại vi sai AD rất lớn (thường AD ≈ 105 đến 106) và điện trở vào vi sai rất lớn, điện trở ra nhỏ. Dòng ở các đầu vào rất nhỏ có thể xem như bằng 0. Điện áp chênh lệch giữa hai đầu vào gọi là điện áp vi sai uD. Đặc tính của OPAMP gồm hai vùng: vùng 1 là đặc tính truyền đạt lý tưởng (khi uD = 0 thì ur = 0), vùng 2 là đặc tính truyền đạt thực tế của OPAMP (khi uD = 0 nhưng ur ≠ 0). Cụ thể hai vùng như sau: - Vùng tuyến tính: ứng với uD rất nhỏ và ur = ADuD. - Vùng bão hòa: ứng với uD khoảng từ vài chục µV trở lên, điện áp ra ur ở vùng bão hòa là không đổi: ur = ±Ubh; Ubh = UCC – (2 đến 3) V. 37 2.5.2 Khuếch đại thuật toán làm việc ở chế độ khóa Trong kỹ thuật xung người ta thường sử dụng OPAMP làm việc ở vùng bão hòa của đặc tính truyền đạt. Lúc đó, điện áp ra ur chỉ có thể nằm ở hai mức: Mức thấp L = - Ubh hay mức cao H = + Ubh. Ta nói OPAMP là việc ở chế độ khóa và có vai trò như một khóa đóng/ngắt cơ khí. Khi ur = - Ubh = L, ta nói khóa mở; khi ur = +Ubh = H, ta nói khóa đóng [1]. Hình 2.21: Đường đặc tính OPAMP làm việc ở chế độ khóa. Hình trên là đặc tính truyền đạt lý tưởng khi OPAMP làm việc ở chế độ khóa. Điện áp vi sai uD là điện áp điều khiển để đóng/mở khóa. Lúc uD đang rất âm, khóa OPAMP đang ở trạng thái mở với ur = - Ubh = L. Khi uD tăng tới giá trị Uđ (Uđ > 0) thì khóa hoàn toàn chuyển sang trạng thái đóng với ur = +Ubh = H. Vì vậy Uđ được gọi là ngưỡng đóng của khóa OPAMP. Cũng biện luận tương tự ta có Um là ngưỡng mở của OPAMP. Vùng Δu là độ nhạy của khóa. Đây là vùng bắt đầu và kết thúc việc chuyển trạng thái đóng/mở. Một OPAMP lý tưởng có Δu bằng 0. Muốn giảm Δu ta phải chọn OPAMP có hệ số khuếch đại vi sai AD càng lớn càng tốt. 2.6 PC 900V Các máy phát dao động hay xung thường cho ta tín hiệu dưới dạng tương tự (analog). Tuy nhiên, mạch đo tần số sử dụng vi điều khiển nên yêu cầu tín hiệu đưa vào phải có dạng số (digital) hay nói đơn giản là có hai mức cao và thấp. Vì vậy, ta sử dụng IC PC900V để chỉnh tín hiệu có dạng vuông và đưa vào vi điều khiển để thực hiện chuyển đổi từ tín hiệu tương tự sang tín hiệu số. Sơ đồ chân của PC900V như hình 2.22 [9]. 38 Hình 2.22: Sơ đồ chân của PC900V. Trong đó 1. Anode 4. V0 2. Catode 5. GND 3. NC 6. VCC Sơ đồ khối cấu trúc bên trong của PC900V. Hình 2.23: Sơ đồ cấu trúc bên trong của PC900V. Trong sơ đồ trên tín hiệu được đưa vào từ hai chân Anode và Catode. Bên trong có một đèn LED sẽ phát sáng mỗi khi giá trị điện thế tín hiệu lớn hơn một giá trị nhất định. Ở phía đối diện với LED phát này là một LED thu có tác dụng thu ánh sáng phát ra từ LED phát. Tín hiệu lúc này được đặt vào hai đầu vào của một OPAMP. OPAMP được nuôi bằng nguồn thông qua một biến thế nhỏ bên trong IC. OPAMP lúc này hoạt động ở chế độ khóa: Khi giá trị điện thế vi sai của OPAMP dương đủ lớn thì tín hiệu ra là mức cao, transistor dẫn; và ngược lại khi điện thế vi sai của OPAMP âm đủ lớn thì tín hiệu ra là mức thấp transistor ngưng dẫn. Khi đó ở đầu ra sẽ xuất hiện tín hiệu dạng số, chỉ có hai mức logic là cao và thấp. Các điện trở mắc vào có chức năng hạn dòng bảo vệ mạch. Tụ điện giá trị 0,1µF dùng để lọc nhiễu cho nguồn. 39 Chú ý: Đèn LED trong IC PC900V sẽ giảm cường độ chiếu sáng theo thời gian hoạt động dẫn đến tín hiệu có thể sẽ bị sai lệch sau khi qua PC900V. Nếu sử dụng trong thời gian dài thì khi thiết kế mạch nên chú ý đến điều này (giảm khoảng 50% cường độ chiếu sáng trong 5 năm). 2.7 Flip – Flop Flip – Flop là mạch logic có một hay hai đầu điều khiển và hai đầu ra. Tín hiệu trên hai đầu ra phụ thuộc nhau: Nếu một đầu ra là Q thì đầu ra kia sẽ là phủ định của Q (Q ). Khi tín hiệu vào thỏa mãn điều kiện điều khiển, thì tín hiệu đầu ra Q sẽ lật tín hiệu từ mức logic cao H xuống thấp L và ngược lại. Vì vậy, tín hiệu đầu ra của Flip – Flop khi có điều khiển là một bước nhảy điện áp. Đặc điểm của Flip – Flop là: Nếu không có tín hiệu điều khiển ở ngõ vào thì mức logic (H hay L) ở ngõ ra được duy trì ổn định [1]. Tùy theo số đầu vào điều khiển mà Flip – Flop được chia thành bốn loại chính: S – R, J – K, T, D. Trong phần tiếp này ta sẽ khảo sát kỹ về loại S – R. Hình 2.24: Sơ đồ chân của Flip – Flop loại S – R. S – R Flip – Flop là loại có hai đầu vào điều khiển S, R. Đầu S (Set) gọi là đầu ghi và R (Reset) gọi là đầu xóa. Hai đầu S và R là hai đầu điều khiển của Flip – Flop. Ta quy ước mức logic cao (H) là 1 và mức logic thấp (L) là 0. Ta có các trường hợp sau đây:  Nếu S = 1, R = 0 thì Q = 1 và Q = 0 tức Q ở mức cao.  Nếu S = 0, R = 1 thì Q = 0 và Q = 1 tức Q ở mức thấp.  Nếu S = 0, R = 0 thì Q = Qt (với Qt là giá trị logic ở đầu ra Q tại thời điểm t) tức Q không thay đổi trạng thái đã có của nó. Vậy, khi không còn tín hiệu điều khiển ghi hay xóa ở ngõ vào thì Flip – Flop vẫn giữ nguyên trạng thái đã có của nó. 40  Nếu S = 1, R = 1 thì tín hiệu ngõ ra Q có thể là 0 hay 1, ta nói trạng thái Flip – Flop là không xác định. Vậy, không bao giờ đặt logic 1 vào cùng S và R. 2.8 IC 555 2.8.1 Sơ đồ và chức năng các chân của IC 555 Hình 2.25: Sơ đồ chân của IC 555 − Chân 1 (GND): Dùng để nối masse. − Chân 2 (Trigger): là đầu vào kích khởi, dùng để đặt xung kích thích bên ngoài khi mạch làm việc ở chế độ đa hài đơn ổn. − Chân 3 (Output): là đầu ra tín hiệu của IC. − Chân 4 (Reset): là chân xóa, nó có thể xóa điện áp đầu ra khi điện áp đặt vào chân này từ 0,7V trở xuống. Vì vậy, để có thể phát ra xung ở chân số 3 thì chân số 4 phải đặt ở mức logic cao H. − Chân 5 (Control voltage): là chân điện áp điều khiển. Ta có thể đưa một điện áp ngoài vào chân này để làm thay đổi việc định thời của mạch, nghĩa là làm thay đổi tần số xung phát ra. Khi không được sử dụng thì chân số 5 được nối masse thông qua một tụ có giá trị 0,01 µF. − Chân 6 (Threshold): là chân điện áp ngưỡng. − Chân 7 (Discharge): là chân phóng điện. − Chân 8 (VCC): nối với nguồn VCC từ 5 đến 18 V [10]. 41 2.8.2 Sơ đồ khối và nguyên tắc hoạt động của IC555 Hình 2.26: Sơ đồ khối IC 555. Trong sơ đồ trên ta thấy bên trong IC 555 cấu tạo ba điện trở 5KΩ, hai tầng so áp là COMP1 (comparator 1) và COMP2 (comparator 2) thực chất là hai OPAMP hoạt động ở chế độ khóa, một transistor và một Flip – Flop. Giữa VCC và GND có một cầu chia thế gồm ba điện trở đều có giá trị 5KΩ (vì vậy IC mới được đặt tên là 555). Cầu chia thế này có nhiệm vụ tạo ra hai điện áp ngưỡng cho hai tầng so áp COMP1 và COMP2. Cụ thể tạo điện áp ngưỡng bằng 2/3 VCC cho tầng COMP1, với điện áp so sánh được đưa vào từ chân số 2; tạo điện áp ngưỡng bằng 1/3 VCC cho tầng COMP2, với điện áp so sánh được đưa vào từ chân số 6. Trạng thái logic của hai bộ so áp sẽ quyết định trạng thái của Flip – Flop, từ đó quyết định trạng thái tín hiệu đầu ra. 42 2.9 Sơ đồ mạch tạo xung vuông dùng 555 và nguyên tắc hoạt động Hình 2.27: Sơ đồ mạch tạo xung sử dụng IC 555.  Khi mới đóng mạch, điện áp trên tụ C1 tăng dần từ 0 V. Giá trị điện áp trên tụ lúc này được đưa vào ngõ 2 và 6 của IC: − Ở ngõ 2: Do điện áp nhỏ hơn 1/3VCC và đặt vào chân âm của OPAMP (COMP1) nên điện áp vi sai dương vì vậy ngõ ra của OPAMP sẽ chuyển sang trạng thái đóng tức trạng thái logic là 1. Trạng thái này đặt vào chân S (Set) của Flip – Flop. − Ở ngõ 6: Do điện áp nhỏ hơn 2/3 VCC và đặt vào chân dương của OPAMP (COMP2) nên điện áp vi sai âm vì vậy ngõ ra của OPAMP sẽ chuyển sang trạng thái đóng tức trạng thái logic là 0. Trạng thái này đặt vào chân R (Reset) của Flip – Flop. − Lúc này, ngõ R và S của Flip – Flop lần lượt có trạng thái là 0 và 1 nên trạng thái của Q = 1 và Q = 0 nên transistor ngưng dẫn và ngõ ra 3 cho ta mức logic 1 hay mức cao. Tụ điện nạp điện qua R1 và R2.  Khi điện thế của tụ nằm trong khoảng từ 1/3 VCC đến 2/3VCC thì trạng thái ngõ ra của COMP1 và COMP2 là 0. Lúc này, ngõ vào của Flip – Flop là S = 0 và R = 0 nên Q sẽ giữ nguyên trạng thái trước đó là mức logic 1 nên ngõ ra 3 vẫn duy trì mức cao. 43  Khi tụ nạp đến giá trị điện thế lớn hơn 2/3VCC thì trạng thái ngõ ra của COMP1 là 0 và COMP2 là 1. Lúc này, ngõ vào của Flip – Flop là S = 0 và R = 1 nên Q = 0 và Q = 1 nên transistor dẫn và tụ C1 xả điện qua điện trở R2, rồi qua transistor xuống masse. Khi đó, ở ngõ ra có mức logic 0 hay mức thấp.  Khi tụ xả đến giá trị nhỏ hơn 1/3 VCC thì bắt đầu nạp lại và tiếp tục thực hiện các quá trình như trên.  Kết quả: Ở ngõ ra 3 của IC ta thu được một dãy xung vuông với tần số phụ thuộc vào giá trị điện trở R1, R2 và tụ C1. 2.10 Nguyên tắc hoạt động mạch đo tần số Hình 2.28: Sơ đồ máy đo âm tần Máy đo tần số hoạt động theo phương pháp đo số xung của tín hiệu trong thời gian lấy mẫu là 1 giây. Với phương pháp này số xung tín hiệu đếm được trong 1 giây chính là tần số của tín hiệu. Phương pháp này sử dụng một bộ Timer và một ngắt ngoài. Cụ thể là Timer1 và ngắt ngoài trên chân RB0 của vi điều khiển PIC16F887. Trong đó, Timer có nhiệm vụ tạo thời gian mẫu 1 giây, ngắt ngoài dùng để đếm số xung của tín hiệu. Trong mạch hình 2.28, nguồn 12VDC được cho qua diode cầu nhằm tránh hiện tượng mắc ngược cực nguồn gây hỏng mạch. Hai IC 7809 và 7805 có nhiệm vụ hạ điện thế lần lượt xuống 9VDC và 5VDC. Các tụ được mắc vào có tác dụng lọc cho nguồn ổn định. Nguồn 5VDC dùng để nuôi vi điều khiển, PC900V và LCD hoạt động. 44 Thạch anh được sử dụng là loại 20MHz, có tác dụng tạo xung clock cho vi điều khiển hoạt động. Tín hiệu bên ngoài (có dạng sin, vuông, tam giác) cần đo tần số được đưa vào PC900V để chuyển đổi sang tín hiệu số. Tín hiệu sau khi được chuyển đổi đưa vào vi điều khiển đã được lập trình để đo tần số của xung. Kết quả đo được hiển thị trên màn hình LCD. Biến trở dùng để điều chỉnh độ tương phản của LCD. Nút nhấn có tác dụng reset mạch khi có nhiễu tác động vào. Ngoài ra, ta còn tạo hai đầu nối có hiệu điện thế 5V để cung cấp nguồn nuôi cho mạch dao động tạo xung dùng IC 555. Ta có thể tóm tắt qua sơ đồ khối hình 2.29. Hình 2.29: Sơ đồ khối mạch đo tần số. Giải thuật đo tần số của vi điều khiển: Đầu tiên ta viết các chương trình con phục vụ ngắt tràn Timer1 và ngắt ngoài trên chân RB0. Ở chương trình chính ta cho ngắt tràn Timer1 hoạt động. Trong trình ngắt ngoài trên RB0, khi có sự thay đổi mức tín hiệu từ cao xuống thấp (hay từ thấp lên cao) trên chân RB0 sẽ làm tăng giá trị của biến đếm so_xung. Trong trình ngắt tràn Timer1 ta lập trình để tạo ra khoảng thời gian lấy mẫu là 1 giây. Khi hết 1 giây thì ngắt Timer1, gán giá trị tần số bằng giá trị của biến đếm so_xung và đặt lại Timer1 về 0 để tiếp tục quá trình đếm. Sau đó, ta lưu lại giá trị của biến đếm và hiển thị lên màn hình LCD. Tôi vừa trình bày một số linh kiện và nguyên tắc hoạt động của mạch đo tần số lẫn mạch tạo xung dùng IC 555. Để hiện thực hóa những tính toán hiểu biết đòi hỏi phải thực hiện những kiến thức đó ngoài thực tế. Do đó, tôi đã thực hiện mô phỏng mạch, thiết kế sơ đồ nguyên lý, mạch in và thi công mạch. Tất cả các công đoạn này được trình bày ở chương 3. 45 CHƯƠNG 3: MÔ PHỎNG – THIẾT KẾ SƠ ĐỒ NGUYÊN LÝ VÀ MẠCH IN Ở chương này tôi đã sử dụng phần mềm Protues để mô phỏng hoạt động của mạch thực tế; phần mềm chuyên dụng Orcad để thiết kế sơ đồ nguyên lý và mạch in cho hai mạch mà tôi đang nghiên cứu. Phiên bản Orcad được trình bày sau đây là 10.5 khá cũ so với những phiên bản mới như 16. hay 16.5 hiện nay. Tuy nhiên, lý do được đưa ra ở đây là phiên bản 10.5 này cài đặt đơn giản, hoạt động khá ổn định, hỗ trợ thư viện đầy đủ cho dự án của tôi. 3.1 Mô phỏng bằng Proteus Proteus là phần mềm cho phép mô phỏng hoạt động của mạch điện tử bao gồm phần thiết kế mạch và viết chương trình điều khiển cho các họ vi điều khiển như MCS- 51, PIC, AVR, Proteus là phần mềm mô phỏng mạch điện tử của Lancenter Electronics, mô phỏng cho hầu hết các linh kiện điện tử thông dụng, đặc biệt hỗ trợ cho cả các MCU như PIC, 8051, AVR, Motorola. Phần mềm bao gồm 2 chương trình: ISIS cho phép mô phỏng mạch và ARES dùng để vẽ mạch in. Để khởi động chương trình vào: Start > All programs > Proteus 7 Professional > ISIS 7 Professional. Giao diện màn hình chính của ISIS như hình 3.1 Hình 3.1: Giao diện chính của ISIS. 46 Muốn lấy linh kiện ta nhấp vào nút tắt Pick from Libraries trên màn hình. Khung Pick devices hiện ra, ở ô Keywords ta gõ tên linh kiện muốn sử dụng thì ô Category hiện ra một số gợi ý. Ví dụ muốn chọn điện trở gõ Resistor. Nhấp vào Resistors trong ô Category, tiếp theo lựa chọn loại điện trở muốn sử dụng. Ô Results (kết quả) hiện ra các kết quả tìm kiếm với thông số chi tiết. Chọn linh kiện phù hợp với yêu cầu và nhấp OK. Hình 3.2: Khung Pick Devices. Lúc này khung Devices hiện ra linh kiện điện trở vừa chọn. Tiếp tục chọn linh kiện như vừa nêu cho đến khi đầy đủ. Tiếp theo, tôi thực hiện sắp xếp linh kiện theo như mong muốn. Ưu điểm của phần mềm proteus là không cần phải thiết kế mạch hoàn chỉnh, ví như không cần nguồn hay nối đất mà linh kiện vẫn hoạt động được. Muốn đặt linh kiện, nhấp vào tên linh kiện ở khung Devices, sau đó di chuyển con trỏ đến nơi cần đặt và nhấp trái chuột để đặt. Để chọn xung cần phát, nhấp vào nút Generator Mode trên thanh công cụ. Ở khung Generators chọn Pulse và thực hiện như sắp xếp linh kiện để đặt nguồn phát xung ở nơi thích hợp. Nếu kích thước vùng làm việc không phù hợp (quá lớn hay quá nhỏ) có thể phóng to bằng cách đưa con trỏ chuột vào vùng cần điều chỉnh rồi nhấn phím tắt F6 hay thu nhỏ bởi F7. Ví dụ sau khi sắp xếp linh kiện cho mạch đo tần số tôi được như hình 3.3. 47 Hình 3.3:Linh kiện sau khi sắp xếp xong. Để đi dây, di chuyển con trỏ đến chân linh kiện rồi nhấp sau đó di chuyển con trỏ đến chân linh kiện cần nối và nhấp để kết thúc. Kết quả như hình 3.4. Hình 3.4: Nối dây cho linh kiện. Khi nối dây xong, nhấp vào nút Play ở phía dưới giao diện màn hình để chạy mô phỏng. Nếu như mạch thiết kế sai thì mô phỏng không hoạt động hoặc sẽ mô phỏng sai; cần coi lại nguyên tắc hoạt động, linh kiện, nối dây và chỉnh sửa lại cho đến khi hoàn chỉnh. Kết quả mô phỏng mạch đo tần số. 48 Hình 3.5: Mô phỏng mạch đo tần số đang hoạt động. Thực hiện mô phỏng cho mạch tạo xung dùng IC 555 được thực hiện tương tự, tôi được như hình 3.6. Hình 3.6: Mô phỏng mạch tạo xung dùng IC 555. 3.2 Mạch tạo xung dùng 555 3.2.1 Thiết kế sơ đồ nguyên lý Khởi động chương trình: nhấp chọn Start > All programs > Orcad 10.5 > Orcad CIS. 49 Màn hình làm việc của chương trình Orcad Capture xuất hiện như hình 3.1. Hình 3.7: Giao diện Orcad Capture CIS. Tạo trang thiết kế mới Muốn thiết kế một sơ đồ phải tạo một trang dự án mới, trên thanh trình đơn nhấp File > New > Project. Hình 3.8: Tạo trang thiết kế mới. Hộp thoại New Project xuất hiện, khung Name nhập tên sơ đồ thiết kế “Mach 555”. Chọn Schematic trong khung Create a New Project Using. Trong khung Location, chọn đường dẫn đến thư mục lưu sơ đồ, nhấp nút Browse. 50 Hình 3.9: Hộp thoại New Project. Cửa sổ Select Directory xuất hiện, trong khung Drives nhấp chọn chọn ổ đĩa lưu bài thiết kế. Ở đây ví dụ tôi chọn ổ đĩa và thư mục như hình 3.10. Hình 3.10: Cửa sổ Select Directory. Nhấp đúp vào thư mục cần chọn và nhấn OK. 51 Hình 3.11: Chọn thư mục lưu. Cửa sổ New Project xuất hiện lại nhấn OK. Hình 3.12: Hộp thoại New Project sau khi chọn xong thư mục lưu. Màn hình thiết kế xuất hiện như hình 3.13. 52 Hình 3.13: Màn hình chính Capture CIS. Định dạng trang thiết kế: Chọn đơn vị đo và kích thước trang thiết kế Trên thanh menu, nhấp chọn Options > Design Template Hộp thoại Design Templates xuất hiện, chọn tab Page Size. Chọn các yếu tố trong khung như hình rồi nhấn OK. Hình 3.14: Hộp thoại Design Templates. Lấy các linh kiện cho sơ đồ − Mở thư viện linh kiện Trên thanh menu, nhấp chọn Place > Part hay nhấp biểu tượng Place part từ thanh công cụ bên mép phải màn hình thiết kế. 53 Hộp thoại Place Part xuất hiện, nhấp nút Add Library để mở các thư viện. Hộp thoại Browse File xuất hiện, chọn tất cả các thư viện rồi nhấn Open. Hình 3.15: Hộp thoại Browse File. − Lấy linh kiện cho sơ đồ Trong hộp thoại Place Part, khung Libraries chọn tất cả các thư viện. Ở ô Place Part gõ vào từ khóa linh kiện muốn lấy. Ví dụ như điện trở thì gõ R, tụ điện gõ Cap, Sau đó chọn linh kiện phù hợp và nhấn OK. Hình 3.16: Hộp thoại Place Part. 54 Sau khi chọn xong linh kiện, di chuyển chuột vào vùng thiết kế, nhấp đặt linh kiện ở các vị trí thích hợp như hình 3.17. (Chú ý: nếu linh kiện không ở vị trí thuận lợi cho việc sắp xếp có thể xoay linh kiện bằng cách nhấn phím tắt R.) Hình 3.17: Vị trí các linh kiện sau khi sắp xếp xong. Để thuận tiện cho việc vẽ mạch in sau này, tôi thực hiện gán chân cho linh kiện. Vào Start > All programs > Orcad 10.5 > Layout Plus. Màn hình làm việc của chương trình Orcad Layout Plus xuất hiện như hình 3.18. Hình 3.18: Giao diện Orcad Layout PLus Trên thanh menu chọn Tools > Library Manager, màn hình Library hiện lên như hình 3.19. 55 Hình 3.19: Giao diện Library Mananger. Ở khung Libraries chọn Add hiện ra khung Add Library. Chọn tất cả thư viện Layout có đuôi .llb và nhấn Open để thêm. Lúc này thư viện đã được thêm vào Libraries. Nhấp chọn thư viện thích hợp, ở khung Footprints, gõ từ khóa của linh kiện để tìm chân linh kiện phù hợp. Ví dụ như hình 3.20. Hình 3.20: Khung Libraries sau khi thêm thư viện layout. Nhấp vào tên linh kiện có chân phù hợp, sau đó copy tên Footprint từ ô Footprints. Ví dụ tôi chọn chân điện trở như hình 3.21. 56 Hình 3.21: Chọn Footprint cho điện trở. Tiếp theo, tôi quay lại màn hình của Orcad Capture CIS. Chọn linh kiện mà tôi cần gắn chân, nhấp đúp thì hiện ra màn hình Property Editor. Ở khung PCB Footprint tôi dán tên chân linh kiện vừa copy vào. Nhấn Close để thoát màn hình. Hình 3.22: Dán Footprint cho linh kiện. Tiếp tục thực hiện các bước trên cho đến khi toàn bộ linh kiện đã được dán đầy đủ chân linh kiện. Việc làm này nhằm tránh thực hiện việc khai báo chân khi tạo file .max sau này. Tiếp theo, tôi sẽ đi dây cho sơ đồ. Ở cột bên phải của Orcad Capture ta chọn nút Place Wire. Lúc này, con trỏ chuột biến thành hình dấu (+), di chuyển chuột đến chân linh kiện cần nối nhấp kéo đến chân linh kiện thứ hai, nhấp chuột để kết thúc. Khi dây nối được bắt dính, tại các chân linh kiện xuất hiện các chấm tròn nhỏ màu đỏ. Trong quá trình nối dây nếu muốn thoát lệnh này thì nhấn phím Esc. 57 Hình 3.23: Đi dây cho linh kiện. Thực hiện tương tự, ta được sơ đồ nguyên lý như hình 3.24. Hình 3.24: Sơ đồ nguyên lý mạch tạo xung dùng IC 555. Sau khi vẽ sơ đồ nguyên lý xong, nhấp biểu tượng Save document lưu sơ đồ đã vẽ. Nhấp nút Project Manager để tiện việc kiểm tra sơ đồ và tạo ta file có đuôi .MNL trong thiết kế mạch in. Lúc này bên trái giao diện xuất hiện cây thư mục chỉ đường dẫn đến sơ đồ, chọn PAGE1 sau đó nhấp biểu tượng Design rules check. 58 Hình 3.25: Giao diện Project Manager. Hộp thoại Design Rules Check xuất hiện, thiết lập các thông số như hình 3.36 và nhấn OK. Hình 3.26: Hộp thoại Design Rules Check. Tiếp theo, nhấp biểu tượng Create Netlist trên thanh công cụ: 59 Hộp thoại Create Netlist xuất hiện, chọn tab Layout, thiết lập các thông số như hình 3.27 rồi nhấp OK. Hình 3.27: Hộp thoại Create Netlist. Bảng thông báo Orcad Capture xuất hiện thông báo đường dẫn lưu file thiết kế, nhấp OK để tiếp tục. Hình 3.28: Thông báo đường dẫn lưu file thiết kế. Lúc này trong thư mục Outputs của cây thư mục xuất hiện hai file thiết kế có định dạng là .drc và .mnl như hình 3.29. 60 Hình 3.29: Vị trí hai file .drc và .mnl. Nhấp đúp vào PAGE1 ta sẽ quay lại màn hình thiết kế. Nhấn Save Document để lưu, Quá trình thiết kế sơ đồ nguyên lý kết thúc. Tiếp theo tôi thực hiện vẽ mạch in. 3.2.2 Thiết kế mạch in Khởi động chương trình Layout như đã thực hiện ở phần dán chân linh kiện. Để tạo một trang thiết kế mạch in mới ta vào File > New trên thanh menu. Hộp thoại AutoECO xuất hiện. Hình 3.30: Hộp thoại AutoECO. Ở khung Input Layout TCH or TPL or MAX file nhấp Browse. Lúc này hiện lên hộp thoại Input Layout MAX file, nhấp chọn file _default.tch và nhấn Open. 61 Hình 3.31: Hộp thoại Input Layout MAX File. Khung Input Layout TCH or TPL or MAX file xuất hiện file đã chọn. Tiếp tục nhấp nút Browse ở khung Input MNL netlist file. Hộp thoại Input Layout Max File xuất hiện. Chọn nơi lưu file .MNL đã tạo ở mục trước và nhấp Open. Hình 3.32: Chọn file .MNL đã tạo ở sơ đồ nguyên lý. Khung Output Layout MAX file xuất hiện file xuất ra theo tên của sơ đồ đã lưu, có định dạng .max và nhấn Apply ECO. 62 Hình 3.33: Hộp thoại AutoECO hoàn chỉnh. Bảng AutoECO xuất hiện cho biết thông số các linh kiện đã lựa chọn. Nhấp chọn Accept this ECO để tiếp tục. Hình 3.34: Thông báo thông số các linh kiện đã chọn. 63 Hộp thoại AutoECO xuất hiện thông báo cho biết chương trình đã hoàn thành việc xử lý, nhấp OK để tiếp tục. Hình 3.35: Thông báo đã hoàn thành việc xử lý. Màn hình thiết kế Design của chương trình hiển thị, nhấp chọn nút Zoom All từ thanh công cụ để xem toàn bộ mạch in rõ hơn. Tiếp theo, cần nhấn nút Online DRC trên thanh menu để chuyển nó sang trạng thái tắt có màu đen để tránh gây ra các lỗi về sau. Hình 3.36: Giao diện Orcad Layout sau khi tạo file .max. Để việc đi dây được thuận tiện, tôi thực hiện sắp xếp lại linh kiện. Muốn sắp xếp, nhấp nút Component Tool trên thanh công cụ. Sau đó chỉ việc nhấp vào linh kiện cần di chuyển và thả ở nơi thích hợp. Trong quá trình sắp xếp có thể xoay linh kiện bằng phím tắt R. Sau khi di chuyển xong một linh kiện nên nhấn phím tắt M để tối ưu hóa đường dây nối. Sau khi sắp xếp xong tôi được mạch hình 3.37. 64 Hình 3.37: Sau khi sắp xếp xong linh kiện. Chọn lớp để vẽ mạch in Muốn chọn lớp để vẽ mạch in nhấp chọn nút View Spreasheet trên thanh công cụ rồi chọn Layers khi đó khung Layers xuất hiện như sau. Hình 3.38: Khung Layers. Trong đó TOP là mặt trên, BOTTOM là mặt dưới, các lớp INNER1 đến 12 là các lớp giữa hai lớp trên. Chú ý rằng chỉ điều chỉnh chọn lớp ở các lớp này, các mục 65 khác không được điều chỉnh nếu như không có yêu cầu đặc biệt nào. Nếu muốn hay không muốn sử dụng lớp nào trong thiết kế mạch in thì nhấp chọn khung tương ứng ở cột Layer Type, nhấp phải chuột chọn Properties. Khung Edit Layer xuất hiện như hình 3.39. Hình 3.39: Khung Edit Layer. Nếu chọn đi dây trên lớp này thì đánh dấu vào dòng Routing Layer trong bảng Layer Type. Ngược lại, nếu không muốn sử dụng lớp này thì ta chọn Unused Routing. Chọn xong nhấn OK để kết thúc việc chọn lớp vẽ mạch in. Ở mạch 555 tôi chỉ sử dụng mặt dưới để vẽ, các mặt còn lại không sử dụng. Hình 3.40: Khung Layer sau khi chọn xong lớp vẽ mạch in. 66 Nhấp Close để tắt màn hình chọn lớp. Tiếp theo tôi chọn kích cỡ dây cho mạch in. Nhấp chọn nút View Spreadsheet > Nets. Hộp thoại Nets xuất hiện. Muốn thay đổi kích thước dây nào thì chọn ô tương ứng với dây đó ở cột Width Min Con Max và nhấp phải chọn Properties từ trình đơn xổ xuống. Hình 3.41: Hộp thoại Nets. Hộp thoại Edit Net xuất hiện, nhập vào ba ô Min Width, Conn Width, Max Width kích thước dây phù hợp. Nên chọn kích thước của dây nguồn và nối đất là 50 mils cho cả ba ô. Các dây còn lại thì 20 đến 30 mils là phù hợp. Sau đó nhấp OK. Hình 3.42: Hộp thoại Edit Net. Các thông số được thay thế ở khung Width Min Con Max, nhấp Close đóng hộp thoại. 67 Hình 3.43: Hộp thoại Net sau khi điều chỉnh các thông số. Để chạy dây tự động cho mạch cần vẽ Board Outline cho mạch. Chọn Obstacle Tool. Sau đó, di chuyển con trỏ vào vùng thiết kế. Nhấp chuột phải chọn New. Nhấp chuột phải lần nữa chọn Properties. Bảng Edit Obstacle hiện ra. Chọn các thông số như hình và nhấp OK. Hình 3.44: Hộp thoại Edit Obstacle. Di chuyển con trỏ tới nơi thích hợp và nhấp, giữ và kéo chuột sao cho đường bao màu vàng phải chạy xung quanh mạch và kín. Tiếp theo tôi chạy dây tự động cho mạch như sau. Vào Auto > Autoroute > Board. Khi chạy dây xong sẽ hiện thông báo như hình 3.45. Nhấp OK để tiếp tục. 68 Hình 3.45:Thông báo đã chạy dây xong. Khi đó mạch in tôi vẽ được như hình 3.46. Hình 3.46:Mạch in mạch tạo xung dùng IC 555 hoàn chỉnh. Đến đây thì việc thiết kế mạch in đã kết thúc. Tôi lưu file lại và mang đi thi công. 3.3 Mạch đo tần số Sơ đồ nguyên lý và mạch in được thực hiện tương tự qua các bước trên, tôi được sơ đồ nguyên lý và mạch in như hình 3.47 và 3.48. 69 Hình 3.47: Sơ đồ nguyên lý mạch đo tần số. Hình 3.48: Mạch in của mạch đo tần số. 70 3.4 Thi công mạch in bằng phương pháp ủi thủ công. 3.4.1 In mạch Công việc đầu tiên của quá trình thi công là in mạch. Ở khâu này chỉ đơn giản lấy file .max đã được tạo ở phần thiết kế mạch in bằng Orcad đến chỗ in. Tuy nhiên, không phải mọi chỗ in sao tài liệu đều đáp ứng yêu cầu này. Có thể khắc phục bằng cách xuất file .pdf từ file .max, nhưng lại dẫn đến việc in mạch không đúng kích thước với thiết kế dẫn đến việc thi công thất bại. Hiện tại, có hai địa điểm đáp ứng khá tốt yêu cầu là: tiệm in Lam Sơn trên đường Đồng Nai và tiệm in ở Lữ Gia, thành phố Hồ Chí Minh. Nên in nhiều bản để khi thực hiện ủi mạch có sai sót gì thì có bản thay thế. 3.4.2 Cắt board 3.4.2.1 Cắt phần Layout từ giấy in Cắt phần Layout theo đường nét bao bên ngoài, tức đường Board Outline mà đã vẽ khi thiết kế mạch in. 3.4.2.2 Chuẩn bị board đồng Thường chọn loại L, cỡ 20x30 cm. Dùng thước đo trước khoảng mạch cần ủi trên board đồng, và dùng thước kẻ khung bản mạch cần ủi. Sau đó, cắt theo đường đã vẽ. Chú ý: sau khi cắt mạch trên đến độ sâu từ ½ đến 1/3 độ dày board thì lật mặt sau cắt theo đường đó, tránh trường hợp chỉ cắt một mặt, khi bẻ, mặt sau sẽ không đẹp. Sau khi cắt xong, dùng tay bẻ nhẹ được mảnh board cần ủi. 3.4.3 Ủi mạch Dùng giấy nhám chà board nhằm đánh hết phần đồng oxi hóa để mực dễ dính lên. Yêu cầu cần đạt là sau khi đánh board phải sạch và sáng. Dùng tay thoa nhựa thông lỏng lên bề mặt board một lớp mỏng giúp việc truyền nhiệt tốt hơn. Sau đó dùng khăn giấy lau sạch bề mặt board. Gấp các nếp giữa giấy và board sao cho mạch sau khi ủi nằm đúng vị trí, sau đó dùng băng dán cố định lại. Dùng bàn ủi (chỉnh độ nóng cực đại) kéo từ từ: từ mép này sang mép kia, mức độ đè vừa phải. Ủi cho đến khi các đường nét mạch hằn lên thì dừng lại, với board cỡ 6x8 cm thì khoảng 5 phút là được. 71 Chú ý: − Cần chú ý dùng mũi bàn ủi và các phần gần cạnh bàn ủi ủi kỹ phần trung tâm mạch và các mép ngoài. − Phần quét nhựa thông có thể bỏ qua. Mục đích của việc quét nhựa thông nhằm tiết kiệm thời gian ủi và ủi dễ dàng hơn. − Tránh đè mạnh quá mức bàn ủi có thể làm giấy trượt trên board gây hỏng board, hay dùng mũi bàn ủi chà mạnh sẽ gây rách giấy. 3.4.4 Ngâm Board sau khi ủi xong đem ngâm vào nước sạch, chờ khoảng 2 phút cho giấy mềm và rã ra. Lấy board ra rồi lột giấy từ từ, chậm và nhẹ nhàng. Sau đó dùng giấy thấm cho mạch khô rồi và dùng bút lông kẻ lại vết mực đã mất. Tiếp theo, ngâm mạch vào nước đã pha bột sắt, nhớ úp mặt board đồng xuống dưới rồi lắc nhẹ. Nếu lắc liên tục thì khoảng 10 phút ta được mạch, còn 3 phút lắc một lần thì thời gian lâu hơn. Dùng giấy nhám chà mực ra, việc chà mực sẽ nhanh hơn nếu dùng axeton. 3.4.5 Khoan Để khoan cho dễ nên kê mạch lên cao. Đưa mũi khoan lại gần lỗ cần khoan rồi bấm nút để khoan. Cần chú ý tránh run tay, khoan dứt khoát vì nếu khoan sai sẽ phá hỏng pad đồng. 3.4.6 Hàn linh kiện Đây là công đoạn cuối trong quá trình thi công mạch in. Cách hàn như sau: để phần mũi hàn tiếp xúc với cả pad đồng và chân linh kiện, chờ 1 lúc cho pad nóng lên, rồi vừa đưa chì hàn vừa xoay mũi hàn và gạt dứt khoát mũi hàn ra là được. Tôi vừa trình bày các bước để thiết kế và thi công một mạch điện tử bất kỳ. Vậy thì kết quả có đúng như mong đợi hay không, tôi sẽ làm rõ qua chương tiếp theo. 72 CHƯƠNG 4: KẾT QUẢ Chương này trình bày các kết quả thu được từ thực nghiệm của mạch tạo xung dùng IC 555 và máy đo âm tần hiển thị số. 4.1 Mạch đo tần số 4.1.1 Thực hành trên Testboard Hình 4.1: Kết quả thực hành trên Testboard. 4.1.2 Mạch sau khi gia công và hàn linh kiện Hình 4.2: Mạch đo tần số sau khi thi công, hàn linh kiện. 73 4.1.3 Máy đo tần số hoàn chỉnh Hình 4.3: Máy đo tần số hoàn chỉnh. 4.2 Mạch tạo xung dùng IC 555 4.2.1 Thực hành trên Testboard và quan sát tín hiệu qua dao động ký điện tử Hình 4.4: Thực hành trên Testboard. 74 Hình 4.5: Quan sát tín hiệu do mạch tạo xung tạo ra qua dao động ký. 4.2.2 Mạch tạo xung hoàn chỉnh Hình 4.6: Mạch tạo xung sau khi thi công, hàn linh kiện. 4.3 Đo tần số từ mạch phát xung 555 sử dụng máy đo tần số 4.3.1 Thực hành trên Testboard Hình 4.7: Thực hành trên Testboard. 75 4.3.2 Kết quả thực nghiệm Hình 4.8: Kết quả thực nghiệm. 4.4 Đo tần số từ máy phát xung chuẩn Hình 4.9: Đo tần số từ máy phát xung chuẩn. Máy đo tần số âm tần hiển thị số đo được tần số từ 0 Hz đến 20KHz. Sau đây là bảng các giá trị tần số máy phát xung chuẩn phát ra, tần số máy đo âm tần đo được và sai số tỉ đối tương ứng. 76 Bảng 4.1: Tần số từ 0 đến 5.000 Hz. Tần số máy phát xung chuẩn (Hz) Tần số máy đo đo được (Hz) Sai số (%) 2500 2492 0,32 2510 2501 0,36 2520 2511 0,36 2530 2521 0,36 2540 2531 0,35 2550 2541 0,35 2560 2551 0,35 2570 2561 0,35 2580 2571 0,35 2590 2581 0,35 2600 2591 0,35 2610 2601 0,34 2620 2611 0,34 2630 2622 0,30 2640 2631 0,34 2650 2641 0,34 2660 2651 0,34 2670 2661 0,34 2680 2671 0,34 2690 2681 0,34 Bảng 4.2: Tần số từ 5.000 đến 10.000 Hz. Tần số máy phát xung chuẩn (Hz) Tần số máy đo đo được (Hz) Sai số (%) 7500 7475 0,33 7510 7486 0,32 7520 7494 0,35 7530 7505 0,33 7540 7514 0,34 7550 7524 0,34 7560 7534 0,34 7570 7544 0,34 7580 7554 0,34 7590 7564 0,34 7600 7574 0,34 7610 7584 0,34 7620 7594 0,34 7630 7604 0,34 7640 7614 0,34 7650 7624 0,34 7660 7634 0,34 7670 7644 0,34 77 7680 7654 0,34 7690 7664 0,34 Bảng 4.3: Tần số từ 10.000 đến 15.000 Hz. Tần số máy phát xung chuẩn (Hz) Tần số máy đo đo được (Hz) Sai số (%) 12500 12459 0,33 12510 12468 0,34 12520 12478 0,34 12530 12489 0,33 12540 12502 0,30 12550 12508 0,33 12560 12518 0,33 12570 12527 0,34 12580 12540 0,32 12590 12547 0,34 12600 12559 0,33 12610 12568 0,33 12620 12578 0,33 12630 12587 0,34 12640 12597 0,34 12650 12607 0,34 12660 12617 0,34 12670 12628 0,33 12680 12637 0,34 12690 12648 0,33 Bảng 4.4: Tần số từ 15.000 đến 20.000 Hz. Tần số máy phát xung chuẩn (Hz) Tần số máy đo đo được (Hz) Sai số (%) 17500 17442 0,33 17510 17451 0,34 17520 17461 0,34 17530 17472 0,33 17540 17480 0,34 17550 17492 0,33 17560 17501 0,34 17570 17517 0,30 17580 17521 0,34 17590 17531 0,34 17600 17541 0,34 17610 17556 0,31 17620 17561 0,33 17630 17572 0,33 78 17640 17581 0,33 17650 17594 0,32 17660 17601 0,33 17670 17613 0,32 17680 17621 0,33 17690 17632 0,33 Hình 4.10: Đồ thị so sánh tần số đo được của máy đo âm tần và máy phát xung chuẩn. 4.5 Kết luận và hướng phát triển 4.5.1 Kết luận Bằng những kiến thức về điện – điện tử, tôi đã lắp ráp thành công máy đo âm tần hiển thị số. Máy đo có kích thước nhỏ gọn, lắp đặt, di chuyển đơn giản, dễ dàng. Sai số của máy đo so với máy phát xung chuẩn nhỏ nên khá tin cậy trong việc đo tần số âm tần của các xung hình sin, vuông, tam giác. 4.5.2 Hướng phát triển Với những đặc điểm trên thì máy đo âm tần chỉ mới dừng lại ở mức tần số thấp và chưa hiển thị được phần thập phân của tần số. Đề tài còn có thể mở rộng ra cho việc đo tần số cao tần, với mức độ hiển thị chính xác có thể tới phần thập phân. Ngoài ra, máy đo âm tần có thể kết hợp với một mạch tạo xung bất kỳ để tạo thành máy phát xung hiển thị số. 79 PHỤ LỤC Phụ lục 1: Code lập trình đo tần số bằng phương pháp tạo thời gian chuẩn 1s [11] #include #include #include #INT_EXT void dem_xung() // Trinh phuc vu ngat ngoai { so_xung+=1; } #INT_TIMER1 void tao_tre_1s() // Trinh phuc vu ngat tran TIMER1 { setup_timer_1(T1_DISABLED); count_t1++; if(count_t1==38) // Tao khoang thoi gian 1s { tan_so = so_xung; so_xung = 0; count_t1 = 0; enable_display = 1; } set_timer1(0); setup_timer_1(T1_INTERNAL|T1_DIV_BY_2); } void main() { DDRD = DDROUT; enable_interrupts(INT_TIMER1); // Cho phep ngat tran TIMER1 ext_int_edge(H_TO_L); // Cau hinh ngat ngoai theo canh xuong enable_interrupts(INT_EXT); // Cho phep ngat ngoai enable_interrupts(GLOBAL); // Cho phep ngat toan cuc setup_timer_1(T1_INTERNAL|T1_DIV_BY_2); // Cau hinh bo chia cho TIMER1 set_timer1(0); // Cau hinh gia tri cho thanh ghi TMR1 LCD_Init(); LCD_Gotoxy(0,0); sprintf(lcd_buff,"TRUONG DHSPTPHCM"); LCD_Puts(lcd_buff); LCD_Gotoxy(0,1); sprintf(lcd_buff," KHOA VAT LY "); delay_ms(10); LCD_Puts(lcd_buff); delay_ms(2000); LCD_Clear(); LCD_Gotoxy(0,0); sprintf(lcd_buff," MAY DO AM TAN "); LCD_Puts(lcd_buff); while(TRUE) { if(enable_display) { LCD_Gotoxy(0,1); sprintf(lcd_buff,"TAN SO: %5lu Hz",tan_so); LCD_Puts(lcd_buff); enable_display = 0; } } } 80 Phụ lục 2: Giao tiếp LCD [11] #include "lcd_16x2.h" void LCD_Enable(void) { LCD_EN=1; delay_us(3); LCD_EN=0; delay_us(50); } //Ham Gui 4 Bit Du Lieu Ra LCD void LCD_Send4Bit( uint8_t Data ) { LCD_D4=(Data>>0)&0x01; LCD_D5=(Data>>1)&0x01; LCD_D6=(Data>>2)&0x01; LCD_D7=(Data>>3)&0x01; } // Ham Gui 1 Lenh Cho LCD void LCD_SendCommand (uint8_t command ) { LCD_Send4Bit ( command >>4 ); /* Gui 4 bit cao */ LCD_Enable () ; LCD_Send4Bit ( command ); /* Gui 4 bit thap*/ LCD_Enable () ; } // Ham Khoi Tao LCD void LCD_Init ( void ) { LCD_Send4Bit(0x00); delay_ms(20); LCD_RS=0; LCD_RW=0; LCD_Send4Bit(0x03); LCD_Enable(); delay_ms(5); LCD_Enable(); delay_us(100); LCD_Enable(); LCD_Send4Bit(0x02); LCD_Enable(); LCD_SendCommand( 0x28 ); // giao thuc 4 bit, hien thi 2 hang, ki tu 5x8 LCD_SendCommand( 0x0c); // cho phep hien thi man hinh LCD_SendCommand( 0x06 ); // tang ID, khong dich khung hinh LCD_Clear(); // xoa toan bo khung hinh } //Ham Thiet lap vi tri con tro void LCD_Gotoxy(uint8_t x, uint8_t y) { uint8_t address; if(!y) address = (0x80+x); else address = (0xC0+x); delay_ms(1); LCD_SendCommand(address); delay_ms(5); } // Ham Xoa Man Hinh LCD void LCD_Clear() { LCD_SendCommand(0x01); delay_ms(5); } // Ham Gui 1 Ki Tu Len LCD void LCD_PutChar ( uint8_t Data ) { LCD_RS=1; LCD_SendCommand( Data ); LCD_RS=0; } //Ham Gui Mot Chuoi Ki Tu Len LCD void LCD_Puts (uint8_t *s) { while (*s) { LCD_PutChar(*s); s++; } } 81 TÀI LIỆU THAM KHẢO Tiếng Việt [1] Lương Ngọc Hải (2007), “Giáo trình kỹ thuật xung – số”, Tái bản lần thứ ba, Nhà xuất bản Giáo Dục, Thành phố Hồ Chí Minh. [2] Hồ Văn Sung (2008), “Cơ sở lý thuyết mạch điện và điện tử”, Nhà xuất bản khoa học và kỹ thuật, Thành phố Hồ Chí Minh. [3] Trương Văn Tám, “Mạch điện tử 1 và 2”, Nhà xuất bản Đại học Cần Thơ, Thành phố Cần Thơ. [4] Kiều Xuân Thực, Vũ Thị Thu Hương (2010), “Vi điều khiển – Cấu trúc – Lập trình và ứng dụng”, Tái bản lần thứ hai, Nhà xuất bản Giáo Dục Việt Nam, Thành phố Hồ Chí Minh. [5] Việt Hùng Vũ, Trần Thị Hoàng Anh, Đậu Trọng Hiền (2008), “Chuyên đề vẽ và thiết kế mạch in với Orcad 10”, Nhà xuất bản Giao Thông Vận Tải, Thành phố Hồ Chí Minh. [6] Lê Phi Yến – Lưu Phú – Nguyễn Như Anh (2011), “Kỹ thuật điện tử”, Tái bản lần thứ hai, Nhà xuất bản đại học quốc gia thành phố Hồ Chí Minh, Thành phố Hồ Chí Minh. Tiếng Anh [7] [8] E/ML.html [9] [10] pdf/view/23384/STMICROELECTRONICS/NE555.html [11] CCS (2012), “PCD C Compiler Reference Manual”.

Các file đính kèm theo tài liệu này:

  • pdftvefile_2013_09_16_9539370756_0156.pdf
Luận văn liên quan