- Vật liệu thiết yếu
- Sơ đồ mạch tải điện tử DC Arduino
- Thiết kế PCB và Tệp Gerber
- Đặt hàng PCB của bạn từ AllPCB
- Mã Arduino cho tải DC có thể điều chỉnh
- Kiểm tra tải DC có thể điều chỉnh của chúng tôi
Nếu bạn đã từng làm việc với Pin, mạch SMPS hoặc các mạch cấp nguồn khác, thì thường sẽ xảy ra trường hợp bạn phải kiểm tra nguồn điện của mình bằng cách tải nó để kiểm tra xem nó hoạt động như thế nào trong các điều kiện tải khác nhau. Một thiết bị thường được sử dụng để thực hiện loại thử nghiệm này được gọi là Tải một chiều dòng điện không đổi, cho phép chúng tôi điều chỉnh dòng điện đầu ra của nguồn điện của bạn và sau đó giữ nó không đổi cho đến khi điều chỉnh lại thay đổi. Trong hướng dẫn này, chúng ta sẽ tìm hiểu cách tạo Tải điện tử có thể điều chỉnh của riêng mình bằng Arduino, có thể lấy điện áp đầu vào tối đa là 24V và dòng tiêu thụ cao tới 5A. Đối với dự án này, chúng tôi đã sử dụng bảng mạch PCB được sản xuất bởi AllPCB, một nhà cung cấp dịch vụ sản xuất và lắp ráp PCB chuyên nghiệp có trụ sở tại Trung Quốc.
Trong hướng dẫn nguồn dòng điện điều khiển bằng điện áp trước đây của chúng tôi, chúng tôi đã giải thích cách sử dụng bộ khuếch đại hoạt động với MOSFET và sử dụng mạch nguồn dòng điện điều khiển bằng điện áp. Nhưng trong hướng dẫn này, chúng tôi sẽ áp dụng mạch đó và tạo nguồn dòng điện được điều khiển kỹ thuật số. Rõ ràng, một nguồn hiện tại được điều khiển kỹ thuật số yêu cầu một mạch kỹ thuật số và để phục vụ mục đích này, Arduino NANO được sử dụng. Arduino NANO sẽ cung cấp các điều khiển cần thiết cho tải DC.
Mạch bao gồm ba phần. Phần đầu tiên là phần Arduino Nano, phần thứ hai là bộ chuyển đổi kỹ thuật số sang tương tự và phần thứ ba là mạch tương tự thuần túy, nơi sử dụng bộ khuếch đại hoạt động kép trong một gói duy nhất sẽ điều khiển phần tải. Dự án này được lấy cảm hứng từ một bài đăng trên Arduino, tuy nhiên, mạch được thay đổi để ít phức tạp hơn với các tính năng cơ bản để mọi người xây dựng nó.
Tải điện tử của chúng tôi được thiết kế để có các phần đầu vào và đầu ra sau đây.
- Hai công tắc đầu vào để tăng và giảm tải.
- Một màn hình LCD sẽ hiển thị tải đã đặt, tải thực tế và điện áp tải.
- Dòng tải tối đa được giới hạn ở 5A.
- Điện áp đầu vào tối đa là 24V cho tải.
Vật liệu thiết yếu
Các thành phần cần thiết để tạo tải điện tử một chiều được liệt kê dưới đây.
- Arduino nano
- 16x2 ký tự LCD
- Ổ cắm hai thùng
- Mosfet irf540n
- Mcp4921
- Lm358
- Điện trở shunt 5watt.1 ohms
- 1k
- 10k - 6 chiếc
- Tản nhiệt
- .1uF 50v
- 2k - 2 chiếc
Sơ đồ mạch tải điện tử DC Arduino
Trong sơ đồ dưới đây, bộ khuếch đại hoạt động có hai phần. Một là để điều khiển MOSFET và một là để khuếch đại dòng điện cảm ứng. Bạn cũng có thể xem video ở cuối trang này giải thích hoạt động hoàn chỉnh của mạch. Phần đầu tiên có R12, R13 và MOSFET. R12 được sử dụng để giảm hiệu ứng tải trên phần phản hồi và R13 được sử dụng làm điện trở cổng Mosfet.
Hai điện trở R8 và R9 bổ sung được sử dụng để cảm nhận điện áp cung cấp của nguồn điện sẽ bị căng bởi tải giả này. Theo quy tắc phân áp, hai điện trở này hỗ trợ tối đa là 24V. Hơn 24V sẽ tạo ra một điện áp không phù hợp với các chân Arduino. Vì vậy, hãy cẩn thận không kết nối nguồn điện có điện áp đầu ra hơn 24V.
Điện trở R7 là điện trở tải thực tế ở đây. Nó là một điện trở 5 Watt, 0,1 Ohm. Theo luật nguồn, nó sẽ hỗ trợ tối đa 7A (P = I 2 R), nhưng đối với mặt an toàn, sẽ khôn ngoan hơn nếu giới hạn dòng tải tối đa là 5A. Do đó, hiện tại tải tối đa 24V, 5A có thể được thiết lập bởi tải giả này.
Một phần khác của bộ khuếch đại được cấu hình như một bộ khuếch đại khuếch đại. Nó sẽ cung cấp mức tăng 6 lần. Trong quá trình chạy của dòng điện, sẽ xuất hiện sụt áp. Ví dụ, khi dòng điện 5A chạy qua điện trở, điện áp giảm sẽ là.5V trên điện trở shunt.1 Ohms (V = I x R) theo định luật ohms. Bộ khuếch đại không đảo sẽ khuếch đại nó lên x6, do đó 3V sẽ là đầu ra từ phần thứ hai của bộ khuếch đại. Đầu ra này sẽ được cảm nhận bởi chân đầu vào tương tự nano Arduino và dòng điện sẽ được tính toán.
Phần đầu tiên của bộ khuếch đại được cấu hình như một mạch theo điện áp sẽ điều khiển MOSFET theo điện áp đầu vào và nhận được điện áp phản hồi mong muốn do dòng tải chạy qua điện trở shunt.
MCP4921 là bộ chuyển đổi Digital sang Analog. DAC sử dụng giao thức truyền thông SPI để lấy dữ liệu kỹ thuật số từ bất kỳ bộ vi điều khiển nào và cung cấp đầu ra điện áp tương tự tùy thuộc vào nó. Điện áp này là đầu vào của op-amp. Trước đây chúng ta cũng đã học cách sử dụng MCP4921 DAC này với PIC.
Ở phía bên kia, có một Arduino Nano sẽ cung cấp dữ liệu kỹ thuật số cho DAC thông qua giao thức SPI và kiểm soát tải, cũng hiển thị dữ liệu trong màn hình ký tự 16x2. Hai thứ bổ sung được sử dụng, đó là nút giảm và tăng. Thay vì kết nối với chân kỹ thuật số, nó được kết nối trong các chân tương tự. Do đó, người ta có thể thay đổi nó sang một loại công tắc khác như bộ mã hóa thanh trượt hoặc tương tự. Ngoài ra, bằng cách sửa đổi mã, người ta có thể cung cấp dữ liệu tương tự thô để kiểm soát tải. Điều này cũng tránh sự cố gỡ lỗi của công tắc.
Cuối cùng, bằng cách tăng tải, Arduino nano sẽ cung cấp dữ liệu tải cho DAC ở định dạng kỹ thuật số, DAC sẽ cung cấp dữ liệu tương tự cho bộ khuếch đại hoạt động và bộ khuếch đại hoạt động sẽ điều khiển MOSFET theo điện áp đầu vào của bộ khuếch đại hoạt động.. Cuối cùng, tùy thuộc vào dòng tải chạy qua điện trở shunt, sự sụt giảm điện áp sẽ xuất hiện và sẽ được khuếch đại thêm bởi kênh thứ hai của LM358 và nhận được bởi Arduino nano. Điều này sẽ được hiển thị trên màn hình ký tự. Điều tương tự cũng sẽ xảy ra khi người dùng nhấn nút giảm.
Thiết kế PCB và Tệp Gerber
Vì mạch này có đường dẫn dòng cao, nên sử dụng các chiến thuật thiết kế PCB thích hợp để loại bỏ các trường hợp hỏng hóc không mong muốn là một lựa chọn khôn ngoan hơn. Do đó, một PCB được thiết kế cho tải DC này. Tôi đã sử dụng Phần mềm thiết kế PCB của Eagle để thiết kế PCB của mình. Bạn có thể chọn bất kỳ Phần mềm PCB Cad nào. PCB được thiết kế cuối cùng trong phần mềm CAD được hiển thị trong hình dưới đây,
Một yếu tố quan trọng cần lưu ý trong quá trình thiết kế PCB này là sử dụng mặt phẳng công suất dày để dòng điện phù hợp trên toàn mạch. Ngoài ra còn có VIAS khâu nối đất (vias ngẫu nhiên trong mặt phẳng đất) được sử dụng cho dòng chảy mặt đất thích hợp ở cả lớp trên cùng và dưới cùng.
Bạn cũng có thể tải xuống tệp Gerber của PCB này từ liên kết bên dưới và sử dụng nó để chế tạo.
- Tải xuống Tệp Gerber tải DC điện tử có thể điều chỉnh
Đặt hàng PCB của bạn từ AllPCB
Khi bạn đã sẵn sàng với tệp Gerber của mình, bạn có thể sử dụng nó để chế tạo PCB. Nói về điều này, nhà tài trợ của bài báo này là ALLPCB, những người được biết đến với PCB chất lượng cao và vận chuyển cực nhanh. Ngoài Sản xuất PCB, AllPCB còn cung cấpLắp ráp PCB và Tìm nguồn cung ứng linh kiện.
Để nhận đơn đặt hàng PCB của bạn từ họ, hãy truy cập allpcb.com và đăng ký. Sau đó, trên trang chủ, nhập kích thước PCB của bạn và số lượng cần thiết như hình dưới đây. Sau đó bấm vào Báo giá ngay.
Giờ đây, bạn có thể thay đổi các thông số khác của PCB như số lớp, màu mặt nạ, độ dày, v.v. Ở phía bên phải, bạn có thể chọn quốc gia của mình và tùy chọn vận chuyển ưu tiên. Điều này sẽ hiển thị cho bạn thời gian dẫn đầu và tổng số tiền phải trả. Tôi đã chọn DHL và tổng số tiền của tôi là 26 đô la, nhưng nếu bạn là khách hàng lần đầu, giá sẽ giảm khi thanh toán. Sau đó nhấp vào Thêm vào giỏ hàng và sau đó nhấp vào thanh toán ngay.
Bây giờ, bạn có thể nhấp vào tải tệp Gerber của mình lên bằng cách nhấp vào “Tải lên Gerber” và sau đó nhấp vào mua.
Trên trang tiếp theo, bạn có thể nhập địa chỉ giao hàng của mình và kiểm tra mức giá cuối cùng bạn phải trả cho PCB của mình. Sau đó, bạn có thể xem lại đơn đặt hàng của mình và sau đó nhấp vào gửi để thanh toán.
Khi đơn đặt hàng của bạn được xác nhận, bạn có thể ngồi lại và chuyển tiếp cho PCB đến trước cửa nhà bạn. Tôi nhận được đơn đặt hàng của tôi sau một vài ngày và sau đó đóng gói gọn gàng như hình dưới đây.
Chất lượng của PCB luôn tốt như bạn có thể thấy trong các hình ảnh bên dưới. Mặt trên và mặt dưới của bảng được hiển thị bên dưới.
Sau khi nhận được bo mạch của mình, bạn có thể tiến hành lắp ráp tất cả các thành phần. Bảng thành phẩm của tôi trông giống như hình bên dưới.
Tiếp theo, bạn có thể tải mã lên và khởi động mô-đun để kiểm tra xem nó đang hoạt động như thế nào. Mã hoàn chỉnh cho dự án này được đưa ra ở cuối trang này. Giải thích về mã như sau.
Mã Arduino cho tải DC có thể điều chỉnh
Mã này khá đơn giản. Lúc đầu, chúng tôi bao gồm các tệp tiêu đề SPI và LCD cũng như đặt điện áp logic tối đa, chân chọn chip, v.v.
#include
Phần này bao gồm các khai báo liên quan đến luồng chương trình bắt buộc của các số nguyên và biến. Ngoài ra, chúng tôi đặt các chân thiết bị ngoại vi liên kết với Arduino Nano.
const int slaveSelectPin = 10; // Chip chọn pin int number = 0; int tăng = A2; // Tăng chân int giảm = A3; // giảm chân int current_sense = A0; // chân cảm biến hiện tại inttage_sense = A1; // chân cảm biến điện áp int state1 = 0; int state2 = 0; int Đặt = 0; float vôn = 0; float tải_current = 0.0; tải_lực phao = 0.0; phao hiện = 0,0; điện áp phao = 0,0; Màn hình LCD LiquidCrystal (7, 6, 5, 4, 3, 2); // chân LCD
Điều này được sử dụng để thiết lập LCD và SPI. Ngoài ra, các hướng ghim được đặt ở đây.
void setup () { pinMode (slaveSelectPin, OUTPUT); pinMode (tăng, INPUT); pinMode (giảm, INPUT); pinMode (current_sense, INPUT); pinMode (tage_sense, INPUT); // khởi tạo SPI: SPI.begin (); // thiết lập số cột và số hàng của màn hình LCD: lcd.begin (16, 2); // In thông báo ra màn hình LCD. lcd.print ("Tải kỹ thuật số"); lcd.setCursor (0, 1); lcd.print ("Thông báo Mạch"); chậm trễ (2000); }
Nó được sử dụng để chuyển đổi giá trị DAC.
void convert_DAC (unsigned int value) { / * Step Size = 2 ^ n, Do đó 12bit 2 ^ 12 = 4096 Đối với tham chiếu 5V, bước sẽ là 5/4095 = 0,0012210012210012V hoặc 1mV (khoảng) * / unsigned int container; int MSB không dấu; int LSB không dấu; / * Bước: 1, lưu trữ dữ liệu 12 bit vào vùng chứa Giả sử dữ liệu là 4095, ở dạng nhị phân 1111 1111 1111 * / container = value; / * Bước: 2 Tạo giả 8 bit. Vì vậy, bằng cách chia 256, 4 bit trên được ghi lại trong LSB LSB = 0000 1111 * / LSB = container / 256; / * Bước: 3 Gửi cấu hình với dữ liệu 4 bit. LSB = 0011 0000 OR 0000 1111. Kết quả là 0011 1111 * / LSB = (0x30) - LSB; / * Bước: 4 Vùng chứa vẫn có giá trị 21bit. Giải nén 8 bit thấp hơn. 1111 1111 VÀ 1111 1111 1111. Kết quả là 1111 1111 là MSB * / MSB = 0xFF & container; / * Bước: 4 Gửi dữ liệu 16bits bằng cách chia thành hai byte. * / digitalWrite (slaveSelectPin, LOW); chậm trễ (100); SPI.transfer (LSB); SPI.transfer (MSB); chậm trễ (100); // đưa chân SS lên mức cao để bỏ chọn chip: digitalWrite (slaveSelectPin, HIGH); }
Phần này được sử dụng cho các hoạt động liên quan đến cảm biến hiện tại.
float read_current (void) { load_current = 0; for (int a = 0; a <average; a ++) { load_current = load_current + analogRead (current_sense); } load_current = load_current / trung bình; load_current = (load_current * MAX_VOLT) / 1024; load_current = (load_current / opamp_gain) / load_resistor; trả về dòng tải; }
Điều này được sử dụng để đọc điện áp tải.
float read_voltage (void) { load_voltage = 0; for (int a = 0; a <average; a ++) { load_voltage = load_voltage + analogRead (tage_sense); } load_voltage = load_voltage / trung bình; load_voltage = ((load_voltage * MAX_VOLT) /1024.0) * 6; trả về điện áp tải; }
Đây là vòng lặp thực tế. Tại đây, các bước chuyển đổi được đo và dữ liệu được gửi đến DAC. Sau khi truyền dữ liệu, dòng điện thực tế và điện áp tải đang được đo. Cả hai giá trị cuối cùng cũng được in trên màn hình LCD.
void loop () { state1 = analogRead (tăng); if (state1> 500) { delay (50); state1 = analogRead (tăng); if (state1> 500) { volt = volt + 0,02; } } state2 = analogRead (giảm); if (state2> 500) { delay (50); state2 = analogRead (giảm); if (state2> 500) { if (volt == 0) { volt = 0; } else { volt = volt-0,02; } } } number = volt / 0,0012210012210012; convert_DAC (số); điện áp = read_voltage (); hiện tại = read_current (); lcd.setCursor (0, 0); lcd.print ("Đặt Giá trị"); lcd.print ("="); Đặt = (vôn / 2) * 10000; lcd.print (Bộ); lcd.print ("mA"); lcd.setCursor (0, 1); lcd.print ("Tôi"); lcd.print ("="); lcd.print (hiện tại); lcd.print ("A"); lcd.print ("V"); lcd.print ("="); lcd.print (điện áp); lcd.print ("V"); // lcd.print (load_voltage); //lcd.print("mA "); // delay (1000); //lcd.clear (); }
Kiểm tra tải DC có thể điều chỉnh của chúng tôi
Mạch tải kỹ thuật số được hàn và cấp nguồn bằng nguồn điện 12V. Tôi đã sử dụng pin Lithium 7,4V ở phía nguồn điện và kết nối với đồng hồ kẹp để kiểm tra xem nó hoạt động như thế nào. Như bạn có thể thấy khi dòng đặt là 300mA, mạch lấy 300mA từ pin cũng được đo bằng đồng hồ kẹp là 310mA.
Hoạt động hoàn chỉnh của mạch có thể được tìm thấy trong video được liên kết bên dưới. Hy vọng bạn đã hiểu dự án và thích xây dựng một cái gì đó hữu ích. Nếu bạn có bất kỳ câu hỏi nào, hãy để lại chúng trong phần bình luận hoặc sử dụng Diễn đàn.