- Các thành phần bắt buộc:
- Sự miêu tả:
- Sơ đồ mạch và giải thích hoạt động:
- Thiết kế mạch và PCB sử dụng EasyEDA:
- Tính toán và đặt hàng các mẫu PCB trực tuyến:
- Giải thích lập trình:
Trong dự án này, chúng tôi sẽ tạo ra một hệ thống giám sát ắc quy ô tô dựa trên PIC trên PCB. Ở đây chúng tôi đã thiết kế một PCB bằng cách sử dụng trình mô phỏng và thiết kế PCB trực tuyến của EASYEDA. Đây Ắc quy ô tô Giám sát mạch được sử dụng để giám sát sức mạnh của pin xe bằng cách chỉ cần cắm nó vào ổ cắm điện trên bảng điều khiển của một chiếc xe. Các PCB cũng có tùy chọn để sử dụng nó như điện áp đo lường công cụ hoặc vôn kế mà không sử dụng bộ sạc USB xe. Chúng tôi đã gắn một khối thiết bị đầu cuối ở đây để đo điện áp của các nguồn điện khác, chỉ bằng cách kết nối hai dây dẫn trong đó từ nguồn điện.
Các thành phần bắt buộc:
- Bộ vi điều khiển PIC PIC18F2520 -1
- Bo mạch PCB chế tạo -1
- Đầu nối USB -1
- Đầu nối đầu cuối 2 pin (tùy chọn) -1
- Màn hình hiển thị bảy đoạn anode chung (4 trong 1) -1
- Bóng bán dẫn BC557 -4
- 1k điện trở -6
- 2k điện trở -1
- Điện trở 100R -8
- Tụ 1000uF -1
- 10uF tụ -1
- 28 chân IC đế -1
- bánh mì kẹp thịt nữ -1
- 7805 Bộ điều chỉnh điện áp -1
- Bộ sạc USB trên ô tô -1
- LED -1
- Điốt Zener 5.1v -2
- Cáp USB (tương thích loại B hoặc Arduino UNO) -1
- Tinh thể 20MHz -1
- Tụ 33pF -2
Sự miêu tả:
Nói chung, việc đo điện năng của ắc quy ô tô mỗi lần là không quan trọng, nhưng chúng ta thường cần biết về điện áp ắc quy trong quá trình sạc, để kiểm tra xem nó có sạc hay không. Bằng cách này, chúng tôi có thể bảo vệ pin bị hỏng do hệ thống sạc bị lỗi. Điện áp của ắc quy ô tô 12v trong quá trình sạc là khoảng 13,7v. Vì vậy, chúng tôi có thể xác định xem pin của chúng tôi đang sạc tốt hay không và có thể điều tra các nguyên nhân gây ra lỗi pin. Trong dự án này, chúng tôi sẽ triển khai Đồng hồ đo điện áp cho ắc quy ô tô bằng cách sử dụng vi điều khiển PIC. Bật lửa Thuốc lá trên Ô tô hoặc Bộ sạc USB Ô tô được sử dụng để đưa điện áp pin vào chân ADC của bộ vi điều khiển với sự trợ giúp của Mạch phân chia điện áp. Sau đó, một màn hình 4 chữ số bảy phân đoạnđược sử dụng để hiển thị giá trị điện áp của pin. Mạch này có thể đo điện áp lên đến 15v.
Khi pin ô tô đang sạc, điện áp trên các cực của pin thực sự đến từ máy phát điện / bộ chỉnh lưu, đó là lý do tại sao hệ thống đọc 13,7 volt. Nhưng khi pin không được sạc hoặc động cơ của ô tô không BẬT, thì điện áp trên đầu cực của pin là điện áp thực tế của pin khoảng 12v.
Chúng ta cũng có thể sử dụng mạch tương tự để đo điện áp của các nguồn điện khác lên đến 15v. Vì mục đích này, chúng tôi đã hàn Khối đầu cuối (khối nhựa màu xanh lá cây) trong PCB nơi bạn có thể kết nối hai dây từ nguồn điện và có thể theo dõi điện áp. Kiểm tra Video ở cuối, chúng tôi đã chứng minh điều đó ở đâu bằng cách đo điện áp của Bộ nguồn biến đổi, bộ sạc USB và bộ chuyển đổi AC-DC 12v. Đồng thời kiểm tra Mạch theo dõi pin đơn giản và Mạch sạc pin 12v.
Sơ đồ mạch và giải thích hoạt động:
Trong mạch theo dõi điện áp ắc quy này, chúng tôi đã đọc điện áp ắc quy ô tô bằng cách sử dụng một chân tương tự có sẵn của vi điều khiển PIC và ở đây chúng tôi đã chọn chân AN0 (28) của vi điều khiển thông qua một mạch phân áp. Một diode zener 5.1v cũng được sử dụng để bảo vệ.
Màn hình 7 phân đoạn 4 trong 1 được sử dụng để hiển thị giá trị tức thời của điện áp ắc quy ô tô được kết nối tại PORTB và PORTC của bộ vi điều khiển. Một bộ điều chỉnh điện áp 5v cụ thể là LM7805 được sử dụng để cấp nguồn cho toàn bộ mạch bao gồm Bảy Màn hình Phân đoạn. Bộ dao động tinh thể 20 MHz được sử dụng để tạo xung nhịp cho vi điều khiển. Mạch được cấp nguồn bằng chính bộ sạc ô tô USB bằng LM7805. Chúng tôi đã thêm một cổng USB trong PCB, vì vậy chúng tôi có thể kết nối trực tiếp bộ sạc USB trên ô tô với mạch.
Bộ sạc USB ô tô hoặc Bật lửa thuốc lá cung cấp nguồn điện điều chỉnh 5v từ ổ cắm điện 12v của ô tô, nhưng chúng tôi cần đo điện áp thực tế của ắc quy ô tô nên chúng tôi đã điều chỉnh bộ sạc ô tô. Bạn cần mở bộ sạc USB trên ô tô, sau đó tìm các đầu cuối 5v (đầu ra) và 12v (đầu vào), sau đó loại bỏ kết nối 5v bằng cách chà xát nó với giấy cát hoặc với một số vật cứng và ngắn đầu ra USB trực tiếp xuống 12v. Đầu tiên mở kết nối 5v từ cổng USB trong bộ sạc USB trên ô tô và sau đó kết nối 12v với cổng USB đã kết nối 5v. Như trong hình dưới đây, chúng tôi đã cắt kết nối khoanh đỏ, nó có thể khác ở bộ sạc ô tô của bạn.
Để cấu hình ADC ở đây chúng tôi đã chọn chân analog AN0 với điện áp tham chiếu bên trong là 5v và đồng hồ f / 32 để chuyển đổi ADC.
Để tính toán điện áp ắc quy ô tô từ giá trị ADC, chúng tôi đã sử dụng công thức đã cho:
Điện áp = (giá trị ADC / hệ số điện trở) * điện áp tham chiếu Trong đó: Giá trị ADC = đầu ra của Bộ chia điện áp (được chuyển đổi thành kỹ thuật số bởi vi điều khiển) Hệ số điện trở = 1023.0 / (R2 / R1 + R2) // 1023 là giá trị ADC tối đa (10- bit) Điện áp tham chiếu = 5 volt // tham chiếu 5v bên trong được chọn
Tính toán hệ số điện trở:
Trong dự án này, chúng tôi đang đọc điện áp pin ô tô (nói chung) khoảng 12v-14v. Vì vậy, chúng tôi đã thực hiện dự án này với giả định tối đa 15v có nghĩa là hệ thống này có thể được đọc tối đa lên đến 15v.
Vậy trong đoạn mạch ta đã dùng điện trở R1 và R2 ở phần phân áp và giá trị là:
R1 = 2K
R2 = 1 nghìn
Hệ số điện trở = 1023.0 * (1000/2000 + 1000)
Hệ số điện trở = 1023.0 * (1/3)
Hệ số điện trở = 341.0 cho tối đa 15 volt
Vì vậy, Công thức cuối cùng để tính toán điện áp sẽ như sau, mà chúng tôi đã sử dụng Mã, được đưa ra ở cuối Điều này:
Điện áp = (giá trị ADC / 341.0) * 5.0
Thiết kế mạch và PCB sử dụng EasyEDA:
Để thiết kế mạch cho màn hình điện áp pin ô tô, chúng tôi đã sử dụng EasyEDA, một công cụ EDA trực tuyến miễn phí để tạo mạch và PCB một cách liền mạch. Trước đây, chúng tôi đã đặt hàng một số PCB từ EasyEDA và vẫn sử dụng dịch vụ của họ vì chúng tôi đã tìm thấy toàn bộ quá trình, từ vẽ mạch đến đặt hàng PCB, thuận tiện và hiệu quả hơn so với các nhà sản xuất PCB khác. EasyEDA cung cấp miễn phí bản vẽ mạch, mô phỏng, thiết kế PCB và cũng cung cấp dịch vụ PCB tùy chỉnh chất lượng cao nhưng giá thấp. Xem ở đây hướng dẫn đầy đủ về Cách sử dụng Easy EDA để tạo Sơ đồ, bố cục PCB, Mô phỏng mạch, v.v.
EasyEDA đang cải thiện từng ngày; họ đã bổ sung nhiều tính năng mới và cải thiện trải nghiệm người dùng tổng thể, giúp EasyEDA dễ dàng hơn và có thể sử dụng để thiết kế mạch. Họ sẽ sớm ra mắt phiên bản Máy tính để bàn, có thể tải xuống và cài đặt trên máy tính của bạn để sử dụng ngoại tuyến.
Trong EasyEDA, bạn có thể công khai thiết kế mạch và PCB của mình để người dùng khác có thể sao chép hoặc chỉnh sửa chúng và có thể hưởng lợi từ đó, chúng tôi cũng đã công khai toàn bộ bố cục Mạch và PCB cho Màn hình điện áp pin ô tô này , hãy kiểm tra liên kết bên dưới:
easyeda.com/circuitdigest/PIC_based_Car_Battery_Momplete_System-63c2d5948eaa48c5bcbbd8db49a6c776
Dưới đây là Ảnh chụp nhanh của lớp trên cùng của bố cục PCB từ EasyEDA, bạn có thể xem bất kỳ Lớp nào (Trên cùng, Dưới cùng, Topsilk, bottom, v.v.) của PCB bằng cách chọn lớp tạo thành Cửa sổ 'Lớp'.
Tính toán và đặt hàng các mẫu PCB trực tuyến:
Sau khi hoàn thành việc thiết kế PCB, bạn có thể nhấp vào biểu tượng của đầu ra Chế tạo , sẽ đưa bạn đến trang đặt hàng PCB. Tại đây, bạn có thể xem PCB của mình trong Gerber Viewer hoặc tải xuống các tệp Gerber trên PCB của bạn và gửi chúng đến bất kỳ nhà sản xuất nào, cũng dễ dàng hơn rất nhiều (và rẻ hơn) để đặt hàng trực tiếp trong EasyEDA. Tại đây bạn có thể chọn số lượng PCB mà bạn muốn đặt hàng, bao nhiêu lớp đồng bạn cần, độ dày PCB, trọng lượng đồng và thậm chí cả màu sắc của PCB. Sau khi bạn đã chọn tất cả các tùy chọn, hãy nhấp vào “Lưu vào giỏ hàng” và hoàn tất việc đặt hàng, sau đó bạn sẽ nhận được PCB của mình vài ngày sau đó.
Bạn có thể trực tiếp đặt mua PCB này hoặc tải xuống tệp Gerber bằng liên kết này.
Sau vài ngày đặt hàng PCB, tôi đã nhận được các mẫu PCB
Sau khi nhận được PCB, tôi đã gắn tất cả các thành phần cần thiết trên PCB và cuối cùng chúng tôi đã sẵn sàng Hệ thống giám sát pin ô tô của mình, hãy kiểm tra mạch này hoạt động trong Video được đưa ra ở cuối.
Giải thích lập trình:
Chương trình của dự án này là một chút khó khăn cho người mới bắt đầu. Để viết mã này, chúng ta cần một số tệp tiêu đề. Ở đây chúng tôi đang sử dụng MPLAB X IDE để viết mã và trình biên dịch XC để xây dựng và biên dịch mã. Mã được viết bằng ngôn ngữ C.
Trong đoạn mã này, chúng tôi đã đọc điện áp pin bằng cách sử dụng một chân tương tự và để điều khiển hoặc gửi dữ liệu đến màn hình 4 chữ số bảy phân đoạn, chúng tôi đã sử dụng Quy trình máy chủ ngắt hẹn giờ trong vi điều khiển PIC. Tất cả các tính toán để đo điện áp được thực hiện trong chương trình chính quy trình.
Đầu tiên, trong đoạn mã, chúng tôi đã bao gồm một tiêu đề và sau đó cấu hình bộ vi điều khiển PIC bằng cách sử dụng Bits cấu hình.
#include
Và sau đó các biến được khai báo và các chân xác định để hiển thị bảy phân đoạn
không dấu int counter2; vị trí char không dấu = 0; char không dấu k = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; int digit1 = 0, digit2 = 0, digit3 = 0, digit4 = 0; #define TRIS_seg1 TRISCbits.TRISC0 #define TRIS_seg2 TRISCbits.TRISC1 #define TRIS_seg3 TRISCbits.TRISC2 #define TRIS_seg4 TRISCbits.TRISC3 #define TRIS_deled1 TRISAbits_seg3 TRISCbits.TRISC1 TRIS_led5 TRISAbits.TRISA……………….
Bây giờ chúng tôi đã tạo một quy trình ngắt hẹn giờ để điều khiển hiển thị bảy đoạn:
void ngắt low_priasty LowIsr (void) {if (TMR0IF == 1) {counter2 ++; if (counter2> = 1) {if (position == 0) {seg1 = 0; seg2 = 1; seg3 = 1; seg4 = 1;………………
Bây giờ trong hàm void main () , chúng ta đã khởi tạo bộ đếm thời gian và ngắt.
GIE = 1; // GLOBLE INTRUPT ENABLE PEIE = 1; // cờ ngắt ngoại vi T0CON = 0b000000000; // giá trị prescaler put TMR0IE = 1; // kích hoạt ngắt TMR0IP = 0; // mức ưu tiên ngắt TMR0 = 55536; // bắt đầu bộ đếm sau giá trị này TMR0ON = 1;
Và sau đó trong khi vòng lặp, chúng ta đọc đầu vào analog tại pin analog và gọi một số chức năng để tính toán.
trong khi (1) {adc_init (); for (i = 0; i <40; i ++) {Giá trị = adc_value (); adcValue + = Giá trị; } adcValue = (float) adcValue / 40.0; chuyển đổi (adcValue); chậm trễ (100); }
Với adc_init () chức năng được sử dụng để khởi tạo ADC
void adc_init () {ADCON0 = 0b00000011; // chọn kênh adc ADCON1 = 0b00001110; // chọn i / p analog và digital ADCON2 = 0b10001010; // eqisation time hold time cap time ADON = 1; }
Hàm adc_value cho trước được sử dụng để đọc đầu vào từ chân analog và tính toán điện áp.
float adc_value (void) {float adc_data = 0; while (ĐI / XONG == 1); // dữ liệu bit cao hơn bắt đầu chuyển đổi giá trị adc adc_data = (ADRESL) + (ADRESH << 8); // Lưu trữ đầu ra 10 bit adc_data = ((adc_data / 342.0) * 5.0); trả về adc_data; }
Và chức năng chuyển đổi đã cho được sử dụng để chuyển đổi giá trị điện áp thành các giá trị được hỗ trợ phân đoạn.
void convert (float f) {int d = (f * 100); chữ số1 = d% 10; d = d / 10; chữ số2 = d% 10; d = d / 10; chữ số3 = d% 10; chữ số4 = d / 10; }
Kiểm tra mã Hoàn thành cho dự án này bên dưới với một Video trình diễn.