Lời nói đầu Ngày Công nghệ thông tin lĩnh vực đợc đầu t nghiên cứu phát triển mạnh mẽ khắp giới Những thành tựu đạt đợc to lớn hữu ích, máy tính đợc sử dụng phổ biến hầu hết ngành, lĩnh vực khác nh kinh tế, kỹ thuật, nghệ thuật. Đi kèm với việc xuất ngày nhiều phần mềm, tiện ích trợ giúp cho công việc chuyên môn làm cho công việc đợc thực cách nhanh chóng, xác hiệu cao Do công nghệ sản xuất linh kiện điện tử phát triển mạnh kéo theo xuất hàng loạt kiểu linh kiƯn míi víi mét sè tÝnh chÊt vµ chøc mới, phức tạp Điều cho phép thiết kế thiết bị điện tử với tính cao phức tạp Sự tiến dẫn đến mâu thuẫn tránh khỏi yêu cầu thực tế đòi hỏi phơng pháp, thiết bị phơng tiện trình thiết kế Do lĩnh vực phân tích thiết kế mạch điện tử phát triển tiến đợc đợc áp dụng thành công nghệ thông tin lĩnh vực kỹ thuật tính Đó lý tất yếu dẫn tới phát triển phần mềm hỗ trợ phân tích thiết kế mạch Hiện nay, giới xuất số phần mềm hỗ trợ thiết kế, phân tích, mô mạch điện nh: Protel, Msime, Pispice, Matlab, Lapview trở thành công cụ đắc lực hỗ trợ cho nhà thiết kế, phân tích, tính toán mô thông số mạch Từ việc thiết kế mạch nguyên lý chơng trình cho phép tự động tính toán thông số mạch, mô chế độ động để từ có sở cho việc điều chỉnh thông số phần tử mạch ®Ĩ cã m¹ch thiÕt kÕ nh mong mn Tuy vậy, ngời sử dụng chơng trình xem nh hộp đen với thông tin đầu vào đầu nớc ta có số chơng trình phân tích mạch máy tính nhng nhìn chung cha có đợc phần mềm thiết kế phân tích mạch hoàn chỉnh, mang đặc thù Việc nhập thông tin đầu vào cho trình phân tích mạch cha thuận tiện dễ gây lỗi Do cần phải xây dựng chơng trình thiết kế mạch sơ đồ nguyên lý mang tính trực quan, thuận tiện cho việc quan sát kiểm tra lỗi làm đầu vào cho trình phân tích mạch Đây phần yêu cầu đồ án Qua tìm hiểu thực tế đợc gợi ý định hớng thầy giáo hớng dẫn, em xác định đồ án có hai nhiệm vụ cần phải giải quyết: - Về điện tử: Nghiên cứu lý thuyết xây dựng thuật toán để: + Tính toán thông số đầu mạch + Xác định mức độ ảnh hởng phần tử đại lợng đầu mạch (Độ nhạy phần tử) Bài toán thực chất phải xác định đạo hàm đại lợng tất phần tử Đối với mạch điện tử toán tơng đối phức tạp việc biểu diễn đại lợng cần tính đạo hàm nh hàm phần tử mạch khó khăn không mang tính tổng quát - Về mặt tin học: Xây dựng chơng trình bao gồm khối chức chính: + Bộ công cụ thiết kế mạch điện tử giao diện đồ họa cho phép thiết kế mạch nguyên lý với phần tử điện tử thông thờng nh: điện trở, tụ điện, cuộn cảm, diod, transistor, khuếch đại thuật toán, phần tử cựcĐọc ghi liệu từ File liệu chơng trình định dạng + Bộ công cụ phân tích nhằm thực chức năng: Tự động đánh số nút cho mạch đa mạch dạng mạng nút, tính toán điện áp dòng điện nhánh nút mạch Đánh giá mức độ ảnh hởng phần tử lên thông số đầu mạch Giải toán tính toán độ nhạy phần tử mạch mà phần lý thuyết điện tử nghiên cứu Phần đánh giá độ ảnh hởng phần tử bớc quan trọng, tiền đề cho việc thiết kế tối u phần tử mạch Đó hớng phát triển đề tài Do phải thiết kế quản lý mạch điện giao diện đồ hoạ với phần tử điện tử thông thờng có thuộc tính gần tơng tự nhau, nên ta phải chọn ngôn ngữ lập trình mang tính hớng đối tợng có thừa kế tốt, Visual C++ ngôn ngữ tơng đối phổ dụng đáp ứng đợc yêu cầu Nội dung đồ án bao gồm chơng: - Chơng 1: Nghiên cứu sở lý thuyết mạch ngôn ngữ lập trình hớng đối tợng Visual C++ - Chơng 2: Xây dựng thừa kế danh sách móc nối đối tợng điện tử - Chơng 3: Xây dựng chơng trình tự động hoá phân tích mạch Em xin chân thành cảm ơn thầy giáo TS Dơng Tử Cờng thầy cô giáo khoa CNTT - Học viện KTQS giúp đỡ em hoàn thành đồ án Hà Nội, ngày 30/05/2001 Chơng Nghiên cứu sở lý thuyết mạch điện tử ngôn ngữ lập trình hớng đối tợng Visual C++ 1.1 Cơ sở lý thuyết mạch điện tử 1.1.1 Các khái niệm định luật lý thuyết mạch điện tử 1.1.1.1 Nhánh nút mạch điện Các mạch điện tử đợc xây dựng từ phần tử thụ động tích cực hai cực nhiều cực Tập hợp số phần tử hai cực cấu thành lên mạch đợc gọi nhánh Nh nhánh bao gồm thông số nối tiếp (điện trở, tụ điện, cuộn cảm, nguồn điện áp lý tởng thông số mắc song song với nh điện dẫn, nguồn dòng lý tởng ) Nút giao điểm từ ba nhánh trở nên 1.1.1.2 Mạch vòng mặt cắt Các nhánh nối tiếp liên tục với tạo thành mạch khép kín đợc gọi vòng Nh biết, vòng thiết lập phơng trình theo định luật hai Kirchhoff Theo định luật tổng đại số sụt áp nhánh Uk(t) mạch vòng thời điểm có giá trị 0: uk(t) = (1.1) Trong phơng trình ghi giá trị điện áp ta cần phải ý đến dấu điện áp Để thực điều cần phải chọn chiều dơng vòng xét, chẳng hạn theo chiều quay kim đồng hồ.Theo cách chọn này, điện áp nhánh có chiều trùng với chiều dơng chọn vòng có giá trị dơng (+), điện áp nhánh lại có giá trị âm (-) Nguyên tắc đợc áp dụng cho nguồn tác động Mặt cắt đờng vòng khép kín tởng tợng cắt số nhánh mạch điện Chiều mũi tên chiều đóng kín mặt cắt theo định nghĩa ta không cần phải vẽ toàn đờng khép kín Điều quan trọng mặt cắt áp dụng định luật thứ Kirchhoff Theo định luật tổng đại số dòng điện nhánh bị cắt mặt cắt thời điểm có giá trÞ b»ng 0: Σik(t) = (1.2) Khi thiÕt lËp phơng trình này, chiều mặt cắt đợc chọn chiều vào mặt cắt Với cách chọn dòng điện chiều với mặt cắt có dấu (+), ngợc chiều dấu (-) Các định luật Kirchhoff có hiệu lực dạng toán tư ΣUK(P) = 0; ΣIK(P) = (1.3) Khi ph©n tích mạch điện, để giải đợc toán đặt cần phải chọn mạch vòng mặt cắt mà phơng trình đợc thiết lập từ chúng phải độc lập tuyến tính với Các mạch vòng mặt cắt đợc gọi không phụ thuộc 1.1.2 Các phơng pháp phân tích mạch điện tử Nhìn chung phơng pháp phân tích mạch điện tử đợc xây dựng phát triển dựa phơng pháp phân tích mạch điện tuyến tính phi tuyến tính Các phơng pháp có lịch sử phát triển lâu dài, nhiên l¹i cã rÊt nhiỊu h¹n chÕ lÜnh vùc øng dụng thờng đợc áp dụng mạch thụ động tuyến tính vài mạch phi tuyến tính đơn giản Sự có mặt phần tử tích cực (transistor, IC, ) làm cho việc phân tích mạch tuyến tính nh phi tuyến tính trở thành phức tạp đặc biệt Nguyên nhân dẫn đến điều tính phức tạp đa dạng đặc tuyến Volt-Ampe phần tử tích cực, tính quán tính phần tử tần số tăng phức tạp việc mô phần tử tích cực mô hình toán học Chính nguyên nhân mà việc phân tích mạch điện đợc phát triển nh nhánh độc lập với phơng pháp riêng Các phơng pháp lý thuyết phân tích mạch với phần tử tích cực đợc phát triển hầu nh đồng thời với việc chế tạo linh kiện điện tử Trong định luật nh định luật Kirchhoff I, II, phơng pháp mạch tơng đơng dùng giải tốt toán phân tích mạch mạch điện có chứa phần tử đèn điện tử (đèn điện tử làm việc chế độ dòng điện vào) chúng lại tỏ cha đầy đủ phân tích mạch có chứa phần tử đợc làm từ chất bán dẫn Sự xuất phần tử bán dẫn với ảnh hởng lớn đầu vào đòi hỏi phải đa thêm số phơng pháp mới: phơng pháp ma trận phơng pháp Topo để ứng dụng phơng pháp cách có hiệu phát triển phơng pháp tính ứng dụng máy tính đóng vai trò quan trọng Chính có mặt phơng pháp tính yếu tố định tồn phát triển phơng pháp ma trận chí làm cho phơng pháp ma trận trở thành phơng pháp chủ yếu đợc sử dụng phân tích mạch điện tử 1.1.2.1 Phơng pháp phân tích mạch tuyến tính a, Phơng pháp đại số: Phơng pháp đợc chia làm số nhóm nhỏ: - Phơng pháp mạch tơng đơng: Theo phơng pháp này, phần tử tích cực (đèn bán dẫn, mạch khuếch đại đợc thay mạch tơng đơng với phần tử thụ động R, L, C phần tử phản ánh tính tích cực tính không tơng hỗ phần tử Công việc thiết lập phơng trình theo định luật cổ điển điện áp dòng điện Phơng pháp mạch tơng đơng có tác dụng mạch điện đơn giản, tính toán tay tỏ không hiệu mạch phức tạp - Phơng pháp mạch cực: Phơng pháp đợc sử dụng phân tích mạch thụ động ví dụ nh mạch lọc để xác định tham số phần tử tích cực Mặc dù có số u điểm nhng phơng pháp không tỏ đa khả sử dụng số loại mạch nh tỏ phức tạp đòi hỏi phải sử dụng đặc tuyến b, Phơng pháp ma trận: Phơng pháp ma trận đợc xây dựng dựa việc thiết lập phơng trình mạch điện dới dạng ma trận đợc sử dụng có hiệu với trợ giúp máy tính Một phơng pháp ma trận hay gặp phơng pháp điện điện nút phơng pháp dòng điện mạch vòng Ta đề cập kỹ phơng pháp phần sau c, Phơng pháp Topo: Phơng pháp thông thờng đợc sử dụng để giải toán liên quan đến số đặc tính mạch (nh hàm truyền) theo phơng pháp Graph d, Phơng pháp bảng: Phơng pháp bảng đợc thiết lập dựa việc xây dựng bảng chứa thông tin mạch Phơng pháp đợc sử dụng cho mạch điện lớn với trợ giúp máy tính 1.1.2.2 Phơng pháp phân tích mạch phi tuyến a, Phơng pháp phân tích đồ thị: Phơng pháp sử dụng đồ thị (các đặc tuyến phần tử) mô tả quan hệ dòng điện, điện áp đại lợng khác phần tử tuyến tính Sử dụng đồ thị phép tính đơn giản xác định đợc tham số mạch b, Phơng pháp tuyến tính hóa gần theo đờng gãy khúc: Phơng pháp đòi hỏi phải biểu diễn đặc tính phi tuyến phần tử tÝch cùc qua c¸c quan hƯ tun tÝnh Khi biĨu diễn qua quan hệ tuyến tính, đặc tính phi tuyến phần tử đợc tuyến tính hóa đoạn thẳng gãy khúc nối tiếp 1.1.3 Mô linh kiện điện tử Đặc điểm phơng pháp mô phỏng: Mô phơng pháp nghiên cứu khoa học bao gồm việc xây dựng, tìm hiểu đặc tính đối tợng cần nghiên cứu Về thực chất, mô đối tợng, tợng hay trình hình ảnh chúng đợc xây dựng thông qua ý tëng cđa ngêi mét ®iỊu kiƯn nhÊt định Có thể xem mô hệ thống bao gồm phần tử mà với chúng tạo đặc tính, chức năng, quan hệ tồn đối tợng mà mô phản ánh Việc sử dụng mô đối tợng cho phép sâu vào nghiên cứu chất đối tợng tạo tiền đề để xây dựng lên mô toán học đối tợng Mô toán học đối tợng mà cụ thể phơng trình toán học mô tả quan hệ trình xảy bên đối tợng tiền đề cho việc xây dựng phơng pháp thuật toán việc thiết kế mạch máy tính Các nguyên tắc trình mô phỏng: Việc xây dựng mô linh kiện điện tử cần xuất phát từ nguyên tắc sau: Hình 3.2: Mênu hệ thống dùng để chèn phần tử vào mạch Chơng trình cho phép sử dụng Shortcut Menu (dạng Menu Popup) để vẽ mạch việc nhắp chuột phải vào vùng cửa sổ vẽ mạch Để lựa chọn đối tợng mạch, ta sử dụng chuột nhắp vào đối tợng cần chọn dùng phím Tab để lựa chọn lần lợt đối tợng danh sách Các đối tợng có hiệu ứng chuột đợc di chuyển qua Chuột đổi biểu tợng đợc dịch chuyển qua thân đối tợng chân đối tợng Đối tợng đợc chọn di chuyển, thay đổi giá trị thuộc tính b»ng viƯc sư dơng hép tho¹i Thc tÝnh Di chun ScrollBar cã thĨ dïng cht hc phÝm PageUp PageDown 3.2.2 Hộp thoại thể thuộc tính đối tợng: Khi ta nhấp chuột phải vào phần tư m¹ch, mét Menu Popup sÏ xt hiƯn, ta chọn mục Thuộc tính (hoặc chọn đối tợng rỗi nhấp Alt+Enter nhấp đúp chuột trái), Hộp thoại Properties xt hiƯn nh h×nh 3.3 H×nh 3.3: Hép thoại thuộc tính đối tợng Trên hộp thoại cho biết kiểu, nhãn phần tử đợc tác động Các thuộc tính giá trị, Series, góc quay, vị trí đối tợng, số nút nó, thuộc tính hiển thị hay không chØ sè nót cđa nã… 3.2.3 Hép tho¹i lùa chän kiĨu Transistor, Diod, K§TT: §èi víi Transistor , Diod, K§TT thuộc tính thể thông số giá trị tơng đối phức tạp, ta lu chúng vào sở liệu có tên SERIES_T lu kiểu, số Series, thông số chế ®é m« pháng cđa chóng Ta sư dơng líp CDaoDatabase để lấy đợc liệu từ CSDL Sau lu chúng vào đối tợng tơng ứng Từ hộp thoại Properties ta nhắp vào nút có dấu chấm () bên cạnh nhãn Series để mở hộp thoại lựa chọn kiểu cho Transistor , Diod, KĐTT Hộp thoại lựa chọn kiểu cho Transistor, Diod, KĐTT nh hình 3.4 dới đây: Hình 3.4: Hộp thoại lựa chọn kiểu cho Transistor, Diod, KĐTT từ CSDL 3.2 Hộp thoại làm việc với sở liệu Hộp thoại dùng để thao tác với sở liệu có chức năng: Thêm mới, sửa đổi, xóa kiểu đối tợng: Transistor, Diod, KĐTT, phần tử cực (Hình 3.5) Hình 3.5: Hộp thoại làm việc với sở liệu 3.2.5 Thanh công cụ phân tích mạch hộp thoại tính độ nhạy Phân tích mối liên kết tự động đánh số nút cho mạch Hiển thị ẩn số nút mạch KiĨm tra ma trËn tỉng dÉn vµ ma trËn ngn dòng Tính điện áp độ nhạy phần tử Đồ thị biểu thị phụ thuộc điện áp so với tần số Hộp thoại thiết lập điều kiện đầu việc tính độ nhạy đợc thể hình 3.6 Để tính đợc độ nhạy phần tử điện áp đầu ta cần phải quy định nút lấy điện áp ra, đặt tần số phân tích, lựa chọn đối tợng cần tính độ nhạy (có thể tính độ nhạy cho tất phần tử mạch điện áp đầu ra) Hình 3.6: Hộp thoại thiết lập điều kiện tính độ nhạy 7 Kết tính đa hình hiển thị, máy in File t thc vµo sù lùa chän cđa ngêi sư dơng 3.3 Kết thực Chơng trình thực đợc công việc sau: + Xây dựng đợc thiết kế mạch điện tử giao diện đồ hoạ với phần tử bản: Điện trở, tụ điện, cuộn cảm, điốt, transistor, khuếch đại thuật toán, nguồn ®iƯn: xoay chiỊu, mét chiỊu, ngn dßng Cã thĨ lu lại mạch thiết kế mở File lu trữ + Phân tích mạch thiết kế: Kiểm tra xem có phần tử không đợc gắn thực vào mạch Tự động đánh số nút cho phần tử mạch, dùng phơng pháp điện điểm nút để tính hiệu điện dòng điện cho nhánh + Đánh giá độ ảnh hởng phần tử lên thông số đầu mạch làm tiền đề cho việc tối u mạch Kết phân tích đợc đa thiết bị khác nhau: hình, máy in, fle lu trữ Ví dụ: Ta lấy ví dụ mạch điện có sơ đồ nguyên lý đợc thiết kế chơng trình nh hình 3.6 sau: Hình 3.6 Kết sau phân tích mạch phơng pháp mạch kết hợp: Điện điểm nút mạch N: U1 = 1; ϕ1 = 0; U2 = 0.0009; ϕ2 = 0.15240; U3 = 64.357; ϕ3 = 207.7380; U4 = 0.3885; ϕ4 = -66.50; U5 = 64.366; ϕ5 = 203.190; HƯ sè ®é nhạy Ku phần tử thụ động mạch tính đợc nh sau: K u = -0.12516E-07 + j0.28998E-07 ∂R1 ∂K u = -0.51039E-02 - j0.21259E-02 ∂R2 ∂K u = -0.13543E-03 - j0.1458E-03 ∂R3 ∂K u = 0.37239E-06 + j0.86275E-06 ∂R4 ∂K u = -0.19378E-01 - j0.81567E-02 ∂RT ∂K u = -0.1212E+05 + j0.13413E+05 ∂C1 ∂K u = -0.9161E+06 + j0.85092E+06 ∂C ∂K u = -0.71882E+04 + j0.16231E+05 ∂C3 KÕt luËn Sau tìm hiểu bắt tay thực tế vào làm việc, xây dựng đồ án, đợc bảo tận tình thầy giáo TS Dơng Tử Cờng, kết nhận đợc: + Nắm bắt đợc lý thuyết phơng pháp tự động thiết kế phân tích mạch máy tính + Xây dựng đợc chơng trình thiết kế mạch điện tử giao diện đồ hoạ với phần tử điện tử Có thể lu lại mạch thiết kế mở liệu từ File lu trữ + Phân tích mạch thiết kế Đánh giá độ ảnh hởng phần tử lên mạch, từ hỗ trợ cho việc thiết kế mạch chuẩn xác Hớng phát triển đề tài: Tối u hoá mạch, cho phép xây dựng mạch tối u lựa chọn linh kiện thích hợp Trong trình thực trình bày đồ án mình, tránh khỏi hạn chế thiếu sót Rất mong đợc bảo, đóng góp ý kiến thầy giáo bạn bè đồng nghiệp đề đồ án đợc hoàn thiện Một lần nữa, Em xin chân thành cảm ơn thầy giáo, bạn đồng nghiệp đặc biệt thầy giáo TS Dơng Tử Cờng giúp đỡ, hớng dẫn tận tình để em hoàn thành đợc đồ án Hà Nội, ngày 30/05/2001 Phạm Văn Tú 8 Phụ lục Một số hàm chơng trình Hàm Gausse để giải hệ phơng trình tuyến tính với hệ số lµ sè phøc: int Gausse(double *KQ,double *HS,double *VP , int M) { long i ,j ,k ,M2i ,M2k ,i1 ,h ,g ,l , M21 ; double bufRe ,bufIm ,Re ,Im ; double ReB ,ImB ,bufReB ,bufImB ,CrB ,CiB ; double *A ,*B ,*C ; int Ok1,Ok2; double tam1 , tam2 ; A=(double*)malloc(((M+2)*2)*sizeof(double)); B=(double*)malloc(((M+2)*2)*sizeof(double)); C=(double*)malloc(M*(2*M+4)*sizeof(double)); M21= M*2 + 1; h=1;g=0; for (i= 1;i