Trong công nghiệp hiện đại, tần số của điện áp lưới là 1 yếu tố vô cùng quan trọng để các thiết bị có thể hoạt động ổn định. Nếu tần số thay đổi thì chất lượng hoạt động sẽ bị giảm sút lớn. Vì thế yêu càu có 1 thiết bị đo được tần số của điện áp là rất cần thiết . Trên thị trường đã có nhiều thiết bị đo tần số được phát triển và bán cho người sử dụng. Các thiết bị đo tần số đa dạng về mẫu mã phức tạp về cấu tạo cũng như cách sử dụng. Và quan trọng hơn hết đó là sự chính xác về phép đo lường của thiết bị đó.Các thiết bị đó có thể đắt tiền như là 1 máy hiện sóng Ossiclo hay chỉ đơn giản là 1 chiếc đồng hồ số điện tử sử dụng vi điều khiển làm bộ xử lý trung tâm.Ngày nay hầu như các thiết bị đo đều sử dụng vi điều khiển do sự đa dạng về tính năng, giá thành hạ. Và quan trọng hơn là sự chính xác .Trong đồ án này em sử dụng vi điều khiển 89S52 để làm 1 thiết bị đo tần số.Có yêu cầu là “Đo tần số điện áp công nghiệp có dải tần số từ 4560Hz”
Trang 1Chương 1 :Các phương pháp xác định tần số điện áp 2
1 Khái niệm chung 2
2- Các phương pháp đo 2
Chương 2: Công cụ thực hiện 7
1-Tổng quan về Vi điều khiển 89S52 7
2- Bộ biến đổi 18
3- Khối nguồn 20
4- Khối hiện thị LCD : 21
Thuật Toán 23
Thiết kế sơ đồ nguyên lý và PCB 25
Danh sách linh kiện 26
Các Bước hiệu chỉnh 28
Phụ lục 29
Kết luận 36
Trang 2Lời nói đầu.
Trong công nghiệp hiện đại, tần số của điện áp lưới là 1 yếu tố vô cùng quan trọng để các thiết bị có thể hoạt động ổn định Nếu tần số thay đổi thì chất lượng hoạt động sẽ bị giảm sút lớn Vì thế yêu càu có 1 thiết bị đo được tần số của điện áp là rất cần thiết
Trên thị trường đã có nhiều thiết bị đo tần số được phát triển và bán cho người sử dụng Các thiết bị đo tần số đa dạng về mẫu mã phức tạp về cấu tạo cũng như cách sử dụng Và quan trọng hơn hết đó là sự chính xác về phép đo lường của thiết bị đó
Các thiết bị đó có thể đắt tiền như là 1 máy hiện sóng Ossiclo hay chỉ đơn giản là 1 chiếc đồng hồ số điện tử sử dụng vi điều khiển làm bộ xử lý trung tâm
Ngày nay hầu như các thiết bị đo đều sử dụng vi điều khiển do sự đa dạng về tính năng, giá thành hạ Và quan trọng hơn là sự chính xác
Trong đồ án này em sử dụng vi điều khiển 89S52 để làm 1 thiết bị đo tần số
Có yêu cầu là “Đo tần số điện áp công nghiệp có dải tần số từ 45-60Hz”
Trong quá trình làm đồ án này em đã được sự hướng dẫn tận tình của thầy Ths.Trần Văn
Tuấn, Giảng viên đại học Bách Khoa Hà Nội
Nhưng do trình độ và thời gian hạn chế nếu còn gì thiếu sót em mong nhận sự chỉ bảo thêm của các thầy
Trang 3Chương 1 :Các phương pháp xác định tần số điện áp.
1 Khái niệm chung
Tần số là số chu kì của 1 dao động trong một đơn vị thời gian
Quan hệ giữa tần số và chu kỳ là F=1/T
F : là tần số
T : là chu kỳ
1 Đặc điểm của phép đo tần số
Là phép đo đòi hỏi độ chính xác cao, nhanh có kết quả
Các dải tần số đo
Dải tần số thấp <16Hz
Dải tần số âm thanh từ 16Hz<f<20kHz
Dải tần số siêu âm từ 20kHz<f<200kHz
Dải tần số cao từ 200kHz<f<30Mhz
Trong đồ án này chỉ nghiên cứu dải tần số điện áp công nghiệp từ 45Hz<f<60Hz
Các dải tần số khác nhau có phương pháp đo khác nhau trong đó có 3 phương pháp chính là :
- Nhóm phương pháp đo tần số bằng các mạch điện có tham số phụ thuộc vào tần số
Trang 4Dùng các cầu đo mà điều kiện cân bằng của cầu phụ thuộc vào tần số của điện áp cung cấp cho cầu hoạt động
Điều kiện cân bằng là Z1*Z3=Z2*Z4=0
Điều kiện cân bằng cầu là :
R1.Z3=R2.Z4
Điều chỉnh nhánh cộng hưởng nối tiếp cho cộng hưởng tại tần số cần đo f (điều chỉnh C3) Khi đó :
Trang 5Z3=R3 hay R1.R3=R2.R4
Bộ chỉ thị là Vom kế
Nhược điểm
Khó đo được tần số thấp do khó chế tạo được cuộn cảm có L lớn ở tần số thấp
Khó điều chỉnh được Vom kế về không do tác động của cuộn cảm
Phương pháp đo tần số bằng cách so sánh
Máy hiện sóng đặt ở chế độ khuếch đại
Điện áp có tần số cần đo fy được đưa vào kênh Y Điện áp có tần số mẫu fx đưa vào kênh X Hình ảnh nhận được trên màn hình là hình Lixazu
Thay đổi f sao cho hình nhận được là ổn định nhất
Nx=2 và Ny=4 là các giao điểm trên trục X và trục Y
Trang 6- Tốc độ đo lớn Đo được các tần số cao
- Tự động hóa quá trình đo
- Hiện thị dưới dạng số
Phân loại
- Phương pháp xác định nhiều chu kỳ
- Phương pháp xác định 1 chu kỳ
Phương pháp xác định nhiều chu kỳ
Mục đích là đếm số xung trong 1 thời gian dt Từ đó tính ra tần số của xung cần đo
Trang 7Phương pháp xác định 1 chu kỳ
Mạch vào: có thực hiện chức năng tiền xử lý như lọc nhiễu, hạ điện áp
Mạch tạo dạng xung : Có chức năng biến xung sin thành xung đỉnh nhọn có chu kỳ T
Tạo xung đếm chuẩn : có chức năng tạo xung có tần số cao Fc Các xung này có chức năng
đếm để đưa tới bộ đếm xung
Tạo xung dk : có chức năng nhận xung từ mạch tạo dạng xung và Xuất tín hiệu điều khiển
đến khóa( mạch AND)
Bộ đếm : có chức năng đếm số xung và xuất ra màn hình tần số cần đo Màn hình ở đây có
thể là LCD hoặc led 7 đoạn
Trong thời gian dt thì xung đếm chuẩn U(ch) qua khóa vào bộ đếm xung
Giả sử đếm được Nx xung Thì => Tx=Nx*Tc
Với Tc là chu kỳ của xung chuẩn từ đây ta tính được tần số cần đo
Trong đồ án này em sử dụng phương pháp này để đo tần số.
Trang 8Chương 2: Công cụ thực hiện
Bộ biến đổi có tác dụng chuyển đổi tín hiệu hình sin của nguồn điện thành tín hiệu xung vuông mà vi
xử lý có thể xử lý được
Vi xử lý có tác dụng xử lý các tín hiệu do bộ biến đổi gửi về và gửi tín hiệu hiện thị lên LCD
LCD là màn hình giao tiếp với người dùng
Nguồn cung cấp điện áp đối xúng cho hệ thống
1-Tổng quan về Vi điều khiển 89S52
Hình 1 : vi điều khiển 89S52
AT89S52 là vi điều khiển thuộc họ 89S52 do Intel sáng chế và Atmel chế tạo
Nó có 8k Rom , 256 byte Ram,
32 cổng I/O chia làm 4 prot là P0,P1,P2,P3
Trang 9Cấu trúc 89S52
Hình 2 : Cấu Trúc vi điều khiển
Bộ nhớ chương trình:
Hình 3: Cấu trúc bộ nhớ chương trình
Trang 10Hình 4: Địa chỉ các ngắt trên bộ nhớ chương trình
Hình 2 mô tả cấu trúc bộ nhớ chương trình Sau khi khởi động, CPU bắt đầu thực hiện chương trình ở vị trí 0000H Hình 3 mô tả địa chỉ ngắt mặc định trên bộ nhớ chương trình Mối khi xảy ra ngắt, con trỏ của CPU sẽ nhảy đến đúng địa chỉ ngắt tương ứng và thực thi chương trình tại đó Ví dụ ngắt ngoài 0 sẽ có địa chỉ là 0003H, khi xảy ra ngắt ngoài 0 thì con trỏ chương trình sẽ nhảy đến đúng địa chỉ 0003H để thực thi chương trình tại đó Nếu trong chương trình ứng dụng không xử dụng đến ngắt ngoài 0 thì địa chỉ 0003H vẫn có thể dùng cho mục đích khác (sử dụng cho bộ nhớ chương trình)
Trang 11Hình 6: Cấu trúc bộ nhớ trong
Hình 6 mô tả cấu trúc 128 byte thấp của bộ nhớ dữ liệu của họ vi điều khiển 89S52 32 byte đầu tiên (00H-1FH) được sử dụng cho 4 bộ 8 thanh ghi R0-R7 Hai bit của thanh ghi đặc biệt PSW sẽ lựa chọn 1 trong 4 bộ thanh ghi mà vi điều khiển sẽ dùng trong khi thực thi chương trình
Hình 7: Cấu trúc 128 byte thấp của bộ nhớ dữ liệu trong
89S52 chứa 210 vị trí bit được định địa chỉ trong đó 128 bit chứa trong các byte ở địa chỉ từ 20H đến 2FH (16 byte x 8 bit = 128 bit) và phần còn lại chứa trong các thanh ghi đặc biệt Ngoài ra 89S52 còn có các port xuất/nhập có thể định địa chỉ từng bit, điều này làm đơn giản việc giao tiếp bằng phần mềm với các thiết bị xuất/nhập đơn bit
Trang 12Vùng RAM đa mục đích có 80 byte đặt ở địa chỉ từ 30H đến 7FH, bên dưới vùng này từ địa chỉ 00H đến 2FH là vùng nhớ có thể được sử dụng tương tự Bất kỳ vị trí nhớ nào trong vùng RAM
đa mục đích đều có thể được truy xuất tự do bằng cách sử dụng các kiểu định địa chỉ trực tiếp hoặc gián tiếp
Bất kỳ vị trí nhớ nào trong vùng RAM đa mục đích đều có thể được truy xuất tự do bằng cách
sử dụng các kiểu định địa chỉ trực tiếp hoặc gián tiếp
Cũng như các thanh ghi từ R0 đến R7, ta có 21 thanh ghi chức năng đặc biệt SFR chiếm phần trên của Ram nội từ địa chỉ 80H đến FFH Cần lưu ý là không phải tất cả 128 địa chỉ từ 80H đến FFH đều được định nghĩa mà chỉ có 21 địa chỉ được định nghĩa
Hình 8: 128 byte cao của bộ nhớ dữ liệu
2.2 Các thanh ghi đặc biệt
89S52 có 21 thanh ghi chức năng đặc biệt SFR chiếm phần trên của Ram nội từ địa chỉ 80H đến FFH Cần lưu ý là không phải tất cả 128 địa chỉ từ 80H đến FFH đều được định nghĩa mà chỉ có
21 địa chỉ được định nghĩa Hình 8 mô tả các thanh ghi đặc biệt trong vùng nhớ dữ liệu 80H đến FFH
và giá trị của chúng sau khi Reset
Trang 13Hình 9: Các thanh ghi đặc biệt
Lệnh chia DIV AB chia A bởi B, thương số cất trong thanh chứa A và dư số cất trong thanh ghi B Thanh ghi B còn được xử lý như một thanh ghi nháp Các bit được định địa chỉ của thanh ghi B
có địa chỉ từ F0H đến F7H
Thanh ghi trạng thái chương trình (PSW):
Thanh ghi trạng thái chương trình PSW (địa chỉ: D0H) là thanh ghi mô tả toàn bộ trạng thái chương trình đang hoạt động của hệ thống Bảng 1 và Bảng 2 sẽ mô tả thanh ghi này
Trang 14Bảng 1: Thanh ghi trạng thái chương trình PSW
Bảng 2: Chi tiết các bit trong thanh ghi PSW
Thanh ghi ngăn xếp (Stack Pointer):
Con trỏ stack SP (stack pointer) là 1 thanh ghi 8 bit ở địa chỉ 81H SP chứa địa chỉ của dữ liệu hiện đang ở đỉnh của stack Các lệnh liên quan đến satck bao gồm lệnh cất dữ liệu vào stack và lệnh lấy dữ liệu ra khỏi stack Việc cất vào stack làm tăng SP trước khi ghi dữ liệu và việc lấy dữ liệu ra khỏi stack sẽ giảm SP Vùng stack của 89S52 được giữ trong RAM nội và được giới hạn đến các địa chỉ truy xuất được bởi kiểu định địa chỉ gián tiếp Các lệnh PUSH và POP sẽ cất dữ liệu vào stack và lấy dữ liệu từ stack, các lệnh gọi chương trình con (ACALL, LCALL) và lệnh trở về (RET, RETI) cũng cất và phục hồi nội dung của bộ đếm chương trình PC (Program counter)
Con trỏ dữ liệu DPTR:
Con trỏ dữ liệu DPTR (data pointer) được dùng để truy xuất bộ nhớ chương trình ngoài hoặc
bộ nhớ dữ liệu ngoài DPTR là một thanh ghi 16 bit có địa chỉ là 82H (DPL, byte thấp) và 83H (DPH, byte cao)
Thanh ghi các cổng P0-P3:
Các port xuất/nhập của 89S52 bao gồm Port 0 tại địa chỉ 80H, Port 1 tại địa chỉ 90H, Port 2 tại địa chỉ A0H và Port 3 tại địa chỉ B0H Tất cả các port đều được định địa chỉ từng bit nhằm cung
Trang 15Bộ đệm truyền thông được chia thành hai bộ đệm, bộ đệm truyền dữ liệu và bộ đệm nhận dữ liệu Khi dữ liệu được chuyển vào thanh ghi SBUF, dữ liệu sẽ được chuyển vào bộ đệm truyền dữ liệu và
sẽ được lưu giữ ở đó cho đến khi quá trình truyền dữ liệu qua truyền thông nối tiếp kết thúc Khi thực hiện việc chuyển dữ liệu từ SBUF ra ngoài, dữ liệu sẽ được lấy từ bộ đệm nhận dữ liệu của truyền thông nối tiếp
Thanh ghi của bộ định thời/bộ đếm:
89S52 có 2 bộ đếm/định thời (counter/timer) 16 bit để định các khoảng thời gian hoặc để đếm các sự kiện Các cặp thanh ghi (TH0, TL0) và (TH1, TL1) là các thanh ghi của bộ đếm thời gian Bộ định thời 0 có địa chỉ 8AH (TL0, byte thấp) và 8CH (TH0, byte cao) Bộ định thời 1 có địa chỉ 8BH (TL1, byte thấp) và 8DH (TH1, byte cao)
Hoạt động của bộ định thời được thiết lập bởi thanh ghi chế độ định thời TMOD (Timer Mode Register) ở địa chỉ 88H Chỉ có TCON được định địa chỉ từng bit
Các thanh ghi điều khiển:
Bộ định thời Timer 0
Thanh ghi 16 bit của bộ Timer 0 được truy cập như byte thấp và byte cao:
Thanh ghi byte thấp được gọi là TL0 (Timer0 Low byte)
Thanh ghi byte cao được gọi là TH0 (Timer0 High byte).
Hình 10: Các thanh ghi của bộ Timer 0
Thanh ghi TMOD
Cả hai bộ định thời Timer 0 và Timer 1 đều dùng chung một thanh ghi được gọi là TMOD: để thiết lập các chế độ làm việc khác nhau của bộ định thời
Thanh ghi TMOD là thanh ghi 8 bit gồm có:
4 bit thấp để thiết lập cho bộ Timer 0
4 bit cao để thiết lập cho Timer 1
Trong đó:
2 bit thấp của chúng dùng để thiết lập chế độ của bộ định thời
2 bit cao dùng để xác định phép toán
Hình 11: Thanh ghi TMOD
Các bit M1, M0
Trang 16Là các bit chế độ của các bộ Timer 0 và Timer 1 Chúng chọn chế độ của các bộ định thời: 0,
1, 2 và 3 như bảng dưới Chúng ta chỉ tập chung vào các chế độ thường được sử dụng rộng rãi nhất là chế độ 1 và chế độ 2 Chúng ta sẽ sớm khám phá ra các đặc tính của các chế độ này sau khi khám phần còn lại của thanh ghi TMOD Các chế độ được thiết lập theo trạng thái của M1 và M0 như sau:
Bảng 3: Các chế độ hoạt động của bộ đếm/bộ định thời Bit C/T (Counter/Timer)
Bit này trong thanh ghi TMOD được dùng để quyết định xem bộ định thời được dùng như một máy tạo độ trễ hay bộ đếm sự kiện Nếu bit C/T = 0 thì nó được dùng như một bộ định thời tạo độ trễ thời gian
Nguồn đồng hồ cho chế độ trễ thời gian là tần số thạch anh của 89S52 Điều đó có nghĩa là độ lớn của tần số thạch anh đi kèm với 89S52 quyết định tốc độ nhịp của các bộ định thời trên 89S52
Tần số của bộ định thời luôn bằng 1/12 tần số của thạch anh gắn với 89S52
Bit cổng GATE
Một bit khác của thanh ghi TMOD là bit cổng GATE Để ý trên hình 3 ta thấy cả hai bộ định thời Timer0 và Timer1 đều có bit GATE Vậy bit GATE dùng để làm gì? Mỗi bộ định thời thực hiện điểm khởi động và dừng Một số bộ định thời thực hiện điều này bằng phần mềm, một số khác bằng phần cứng và một số khác vừa bằng phần cứng vừa bằng phần mềm Các bộ định thời trên 89S52 có cả hai: Việc khởi động và dừng bộ định thời được khởi động bằng phần mềm bởi cácbit khởi động bộ định thời TR là TR0 và TR1 Điều này có được nhờ các lệnh Set bit TR0 lên 1 (khởi động bộ định thời) hoặc Clear bit TR0 (dừng bộ định thời) đối với Timer 0, và tương tự TR1 đối với Timer 1 Các lệnh này có tác dụng khi bit GATE = 0 trong thanh ghi TMOD
Việc khởi động và ngừng bộ định thời bằng phần cứng từ nguồn ngoài bằng cách đặt bit GATE = 1 trong thanh ghi TMOD
Tuy nhiên, để tránh sự lẫn lộn ngay từ bây giờ ta đặt GATE = 0 có nghĩa là không cần khởi động và
dừng các bộ định thời bằng phần cứng từ bên ngoài
Ngắt ngoài INT0
Trang 17Bảng 4 : Bảng vecto ngắt của 89S52
Như trong hình 8052 có 6 ngắt cứng và mức độ ưu tiên như trong hình
2 thanh ghi điều khiển ngắt INT0 là thanh ghi IE và IP
Thanh ghi TCON
Trang 18Hình 14: Thanh ghi TCON
Thanh ghi này có chức năng điều khiển chế độ hoạt động của các ngắt
Trang 19Trung tâm của mạch là IC LM358 là 1 IC khuếch đại thuật toán Nó thực hiện so sánh điện
áp tại chân (+) với GND
Hình 16: Nguyên lý hoạt động
Khi Vin>0 thì Vout=High
Vin <0 thì Vout = Low
Trang 20Hình 17 : Dạng điện áp đầu ra
Điện áp ra có chứa phần điện áp âm thì R3-D1(1N4148) sẽ chặn lại phần điện áp đó và chỉ
cho điện áp dương đi qua
Hình 18 : Tín hiệu đưa vào vi điều khiển
Trang 213- Khối nguồn
VI 1
IC 7805 là IC ổn áp điện áp có đầu ra là 5V khi đầu vào Uv>7V Nó thuộc họ IC 78XX với
XX là điện áp đầu ra
Đây là IC ổn áp làm việc theo chế độ ổn áp tuyến tính
Trang 22IC 7905 là IC ổn áp nguồn âm Nó thuộc họ IC 79xx với xx là điện áp đầu ra Nó thường đi đôi vơi 7805 để tạo ra 1 cặp nguồn đối xứng.
Trang 23Để sử dụng LCD trong đồ án em dùng thư viện lcd.h gồm các hàm sau :
void LCD_Enable(void); //Tao xung Enable LCD
void LCD_Send4Bit(unsigned char Data);//Ham Gui 4 Bit Du Lieu Ra LCD
void LCD_SendCommand (unsigned char command );// Ham Gui 1 Lenh Cho LCD void LCD_Init ( void );// Ham Khoi Tao LCD
void LCD_Gotoxy(unsigned char x, unsigned char y);// Ham Thiet Lap Vi Tri Con Tro void LCD_Clear();// Ham Xoa Man Hinh LCD
void LCD_PutChar ( unsigned char c );// Ham Gui 1 Ki Tu Len LCD
void LCD_Puts (unsigned char *s);// Ham Gui 1 Chuoi Ki Tu Len LCD
Trang 24Thuật Toán
Sơ đồ hàm main
Hàm ngắt ngoài
Trang 25Hàm Timer
Nguyên lý hoạt động của thuật toán
Trong thuật toán này em sử dụng 3 biến toàn cục là Te ,Nx và đem
- Te là biến điều khiển của Timer0 có tác dụng dừng Timer0 khi bị tràn Tức là đếm quá 65536 xung
Điều này chứng tỏ máy đã được rút ra khỏi nguồn
- Nx là biến lưu giữ số xung
- Biến dem có tác dụng khi xảy ra xung sườn xuống đầu tiên thì nó được bật lên 1 Và chờ cho đến lần ngắt tiếp theo sẽ lấy số xung Nx
Trang 26Thiết kế sơ đồ nguyên lý và PCB
Trang 27Danh sách linh kiện
Điện trở
-
3 R1,R2,R4 10k
1 R3 1M
1 R5 4.7k
Tụ điện -
2 C1,C2 33p
1 C3 10uF
4 C4-C7 100u
IC -
1 U1 AT89C52
1 U2 7805
1 U3 7905
1 U4 LM358
Transistors -
1 Q1 C1815