- 필요한 재료
- Arduino DC 전자 부하 회로 다이어그램
- PCB 설계 및 Gerber 파일
- AllPCB에서 PCB 주문
- 조정 가능한 DC 부하를위한 Arduino 코드
- 조정 가능한 DC 부하 테스트
배터리, SMPS 회로 또는 기타 전원 공급 장치 회로로 작업 한 적이 있다면 전원을로드하여 다른로드 조건에서 어떻게 작동하는지 확인하기 위해 전원을 테스트해야하는 경우가 자주 발생했습니다. 이러한 유형의 테스트를 수행하는 데 일반적으로 사용되는 장치를 정전류 DC 부하 라고하며,이를 통해 전원의 출력 전류를 조정 한 다음 다시 조정될 때까지 일정하게 유지할 수 있습니다. 이 튜토리얼에서는 최대 24V의 입력 전압과 최대 5A의 드레인 전류를 사용할 수있는 Arduino를 사용하여 자체 조정 가능한 전자 부하 를 구축하는 방법을 배웁니다. 이 프로젝트에서는 중국 기반의 PCB 전문 제조 및 조립 서비스 제공 업체 인 AllPCB에서 제조 한 PCB 기판을 사용했습니다.
이전의 전압 제어 전류 소스 자습서에서 MOSFET과 함께 연산 증폭기를 사용하고 전압 제어 전류 소스 회로를 사용하는 방법을 설명했습니다. 그러나이 튜토리얼에서는 해당 회로를 적용하고 디지털로 제어되는 전류 소스를 만듭니다. 분명히 디지털로 제어되는 전류 소스에는 디지털 회로가 필요하며 목적을 달성하기 위해 Arduino NANO가 사용됩니다. Arduino NANO는 DC 부하에 필요한 제어를 제공합니다.
회로는 세 부분으로 구성됩니다. 첫 번째 부분은 Arduino Nano 섹션, 두 번째 부분은 디지털-아날로그 변환기, 세 번째 부분은 부하 섹션을 제어하는 단일 패키지의 이중 연산 증폭기가 사용되는 순수 아날로그 회로입니다. 이 프로젝트는 Arduino에 대한 게시물에서 영감을 얻었지만 회로는 모든 사람이 빌드 할 수있는 기본 기능으로 덜 복잡하게 변경되었습니다.
당사의 전자 부하는 다음과 같은 입력 및 출력 섹션을 갖도록 설계되었습니다.
- 부하 증가 및 감소를위한 2 개의 입력 스위치.
- 설정 부하, 실제 부하 및 부하 전압을 표시하는 LCD.
- 최대 부하 전류는 5A로 제한됩니다.
- 최대 입력 전압은 부하에 대해 24V입니다.
필요한 재료
DC 전자 부하 를 구축하는 데 필요한 구성 요소 는 다음과 같습니다.
- Arduino 나노
- 16x2 문자 LCD
- 2 개의 배럴 소켓
- MOSFET IRF540N
- MCP4921
- Lm358
- 5W 션트 저항기.1 옴
- 1k
- 10k-6 개
- 방열판
- .1uF 50v
- 2k-2 개
Arduino DC 전자 부하 회로 다이어그램
아래 회로도에서 연산 증폭기에는 두 개의 섹션이 있습니다. 하나는 MOSFET을 제어하는 것이고 다른 하나는 감지 된 전류를 증폭하는 것입니다. 이 페이지 하단에서 회로의 전체 작동을 설명하는 비디오를 확인할 수도 있습니다. 첫 번째 섹션에는 R12, R13 및 MOSFET이 있습니다. R12는 피드백 섹션에 대한 부하 효과를 줄이는 데 사용되며 R13은 Mosfet 게이트 저항으로 사용됩니다.
추가 2 개의 저항 R8 및 R9는이 더미 부하에 의해 스트레스를받을 전원 공급 장치의 공급 전압을 감지하는 데 사용됩니다. 전압 분배기 규칙에 따라이 두 저항은 최대 24V를 지원합니다. 24V 이상은 Arduino 핀에 적합하지 않은 전압을 생성합니다. 따라서 출력 전압이 24V 이상인 전원 공급 장치를 연결하지 않도록주의하십시오.
저항 R7은 여기서 실제 부하 저항 입니다. 5W,.1 Ohm 저항기입니다. 전력 법칙에 따라 최대 7A (P = I 2 R)를 지원하지만 안전을 위해 최대 부하 전류를 5A로 제한하는 것이 현명합니다. 따라서 현재 최대 24V, 5A 부하를이 더미 부하로 설정할 수 있습니다.
증폭기의 다른 부분은 이득 증폭기 로 구성됩니다. 6 배 이득을 제공합니다. 전류가 흐르는 동안 전압 강하가 나타납니다. 예를 들어, 5A의 전류가 저항을 통해 흐르면 전압 강하는 옴 법칙에 따라.1 Ohms 션트 저항 (V = I x R)에서.5V가됩니다. 비 반전 증폭기는 x6으로 증폭하므로 3V는 증폭기의 두 번째 부분에서 출력됩니다. 이 출력은 Arduino nano 아날로그 입력 핀에 의해 감지되고 전류가 계산됩니다.
증폭기의 첫 번째 부분은 전압 팔로워 회로로 구성되어 입력 전압에 따라 MOSFET을 제어하고 션트 저항을 통해 흐르는 부하 전류로 인해 원하는 피드백 전압을 얻습니다.
MCP4921 은 디지털-아날로그 변환기 입니다. DAC는 SPI 통신 프로토콜을 사용하여 모든 마이크로 컨트롤러 장치에서 디지털 데이터를 가져오고 이에 따라 아날로그 전압 출력을 제공합니다. 이 전압은 연산 증폭기의 입력입니다. 이전에이 MCP4921 DAC를 PIC와 함께 사용하는 방법도 배웠습니다.
다른 한편으로는 SPI 프로토콜을 통해 DAC에 디지털 데이터를 제공하고 부하를 제어하며 16x2 문자 디스플레이에 데이터를 표시하는 Arduino Nano가 있습니다. 두 가지 추가 항목, 즉 감소 및 증가 버튼이 사용됩니다. 디지털 핀에 연결하는 대신 아날로그 핀에 연결됩니다. 따라서 슬라이더 또는 아날로그 인코더와 같은 다른 유형의 스위치로 변경할 수 있습니다. 또한 코드를 수정하여로드를 제어하는 원시 아날로그 데이터를 제공 할 수 있습니다. 이것은 또한 스위치 디 바운스 문제를 방지합니다.
마지막으로, 부하를 증가시킴으로써 Arduino nano는 디지털 형식으로 DAC에 부하 데이터를 제공하고 DAC는 연산 증폭기에 아날로그 데이터를 제공하며 연산 증폭기는 연산 증폭기의 입력 전압에 따라 MOSFET을 제어합니다.. 마지막으로 션트 저항을 통과하는 부하 전류 흐름에 따라 전압 강하가 나타나며 이는 LM358의 두 번째 채널에 의해 더 증폭되고 Arduino nano에 의해 획득됩니다. 이것은 문자 디스플레이에 표시됩니다. 사용자가 감소 버튼을 눌렀을 때도 같은 일이 발생합니다.
PCB 설계 및 Gerber 파일
이 회로는 전류 경로가 높기 때문에 원치 않는 고장 사례를 제거하기 위해 적절한 PCB 설계 전술을 사용하는 것이 현명한 선택입니다. 따라서 PCB는이 DC 부하를 위해 설계되었습니다. Eagle PCB Design Software를 사용하여 PCB를 설계했습니다. PCB Cad 소프트웨어를 선택할 수 있습니다. CAD 소프트웨어에서 최종적으로 설계된 PCB는 아래 이미지에 나와 있습니다.
이 PCB를 설계하는 동안 주목해야 할 한 가지 중요한 요소는 회로 전체에 적절한 전류 흐름을 위해 두꺼운 전력면을 사용하는 것입니다. 또한 그라운드 스티칭 VIAS (그라운드 플레인의 랜덤 비아)가 있는데, 이는 레이어의 상단과 하단 모두에서 적절한지면 흐름 을 위해 사용됩니다.
아래 링크에서이 PCB의 Gerber 파일을 다운로드하여 제작에 사용할 수도 있습니다.
- 조정 가능한 전자식 DC 부하 거버 파일 다운로드
AllPCB에서 PCB 주문
Gerber 파일이 준비되면이를 사용하여 PCB를 제작할 수 있습니다. 즉, 고품질 PCB와 초고속 배송으로 유명한이 기사 ALLPCB의 스폰서를 불러옵니다. PCB 제조 외에도 AllPCB는PCB 조립 및 부품 소싱.
PCB 주문을 받으려면 다음을 방문하십시오. allpcb.com 및 가입. 그런 다음 홈페이지에서 아래 표시된대로 PCB 치수와 필요한 수량을 입력합니다. 그런 다음 지금 견적을 클릭하십시오.
이제 레이어 수, 마스크 색상, 두께 등과 같은 PCB의 다른 매개 변수를 변경할 수 있습니다. 오른쪽에서 국가 및 선호하는 배송 옵션을 선택할 수 있습니다. 지불해야 할 리드 타임과 총 금액이 표시됩니다. DHL을 선택했고 총액은 $ 26이지만 처음 고객 인 경우 결제시 가격이 내려갑니다. 그런 다음 장바구니에 추가를 클릭 한 다음 지금 결제를 클릭하십시오.
이제 "Upload Gerber"를 클릭 한 다음 구매를 클릭하여 Gerber 파일 업로드를 클릭 할 수 있습니다.
다음 페이지에서 배송 주소를 입력하고 PCB에 지불해야하는 최종 가격을 확인할 수 있습니다. 그런 다음 주문을 검토 한 다음 제출을 클릭하여 결제 할 수 있습니다.
주문이 확인되면 PCB가 문앞에 도착할 수 있도록 자리에 앉아서 중계 할 수 있습니다. 며칠 후 주문을 받았는데 아래와 같이 포장이 깔끔했습니다.
아래 그림에서 확인할 수 있듯이 PCB의 품질은 항상 좋았습니다. 보드의 윗면과 아랫면은 아래와 같습니다.
보드를 받으면 모든 구성 요소를 조립할 수 있습니다. 완성 된 보드는 아래와 같습니다.
다음으로 코드를 업로드하고 모듈의 전원을 켜서 작동 방식을 확인할 수 있습니다. 이 프로젝트의 전체 코드는이 페이지 하단에 있습니다. 코드에 대한 설명은 다음과 같습니다.
조정 가능한 DC 부하를위한 Arduino 코드
코드는 매우 간단합니다. 처음에는 SPI 및 LCD 헤더 파일을 포함하고 최대 로직 전압, 칩 선택 핀 등을 설정했습니다.
#포함
이 섹션은 정수 및 변수의 필수 프로그램 흐름 관련 선언으로 구성됩니다. 또한 Arduino Nano와 관련 주변 장치 핀을 설정했습니다.
const int slaveSelectPin = 10; // 칩 선택 핀 int number = 0; int 증가 = A2; // 핀 증가 int 감소 = A3; // 핀 감소 int current_sense = A0; // 전류 감지 핀 int voltage_sense = A1; // 전압 감지 핀 int state1 = 0; int state2 = 0; int 세트 = 0; 플로트 볼트 = 0; float load_current = 0.0; 부동 load_voltage = 0.0; 부동 전류 = 0.0; 부동 전압 = 0.0; LiquidCrystal lcd (7, 6, 5, 4, 3, 2); // LCD 핀
LCD 및 SPI 설정에 사용됩니다. 또한 여기에 핀 방향이 설정되어 있습니다.
void setup () { pinMode (slaveSelectPin, OUTPUT); pinMode (증가, INPUT); pinMode (감소, INPUT); pinMode (current_sense, INPUT); pinMode (전압 _ 감지, INPUT); // SPI 초기화: SPI.begin (); // LCD의 열과 행 수 설정: lcd.begin (16, 2); // LCD에 메시지를 인쇄합니다. lcd.print ("디지털로드"); lcd.setCursor (0, 1); lcd.print ("회로 다이제스트"); 지연 (2000); }
DAC 값을 변환하는 데 사용됩니다.
void convert_DAC (unsigned int value) { / * Step Size = 2 ^ n, 따라서 12bit 2 ^ 12 = 4096 5V 기준의 경우 단계는 5/4095 = 0.0012210012210012V 또는 1mV (대략) * / unsigned int container; unsigned int MSB; unsigned int LSB; / * 단계: 1, 컨테이너에 12 비트 데이터 저장 데이터가 4095이고 이진수 1111 1111 1111 * / container = value; / * 단계: 2 더미 8 비트 만들기. 따라서 256을 나누면 상위 4 비트가 LSB LSB = 0000 1111 * / LSB = container / 256 에서 캡처됩니다 . / * 단계: 3 4 비트 데이터를 펀칭하여 구성을 보냅니다. LSB = 0011 0000 OR 0000 1111. 결과는 0011 1111 * / LSB = (0x30)-LSB; / * Step: 4 컨테이너는 여전히 21 비트 값을가집니다. 하위 8 비트 추출. 1111 1111 AND 1111 1111 1111. 결과는 MSB * / MSB = 0xFF & container 인 1111 1111입니다 . / * Step: 4 16 비트 데이터를 2 바이트로 나누어 전송합니다. * / digitalWrite (slaveSelectPin, LOW); 지연 (100); SPI.transfer (LSB); SPI.transfer (MSB); 지연 (100); // 칩 선택을 해제하려면 SS 핀을 high로 설정합니다. digitalWrite (slaveSelectPin, HIGH); }
이 섹션은 전류 감지 관련 작업에 사용됩니다.
float read_current (void) { load_current = 0; for (int a = 0; a <평균; a ++) { load_current = load_current + analogRead (current_sense); } load_current = 부하 _ 전류 / 평균; load_current = (load_current * MAX_VOLT) / 1024; 부하 _ 전류 = (부하 _ 전류 / opamp_ 게인) / 부하 _ 저항; return load_current; }
이것은 부하 전압을 읽는 데 사용됩니다.
float read_voltage (void) { load_voltage = 0; for (int a = 0; a <평균; a ++) { load_voltage = load_voltage + analogRead (voltage_sense); } 부하 _ 전압 = 부하 _ 전압 / 평균; 부하 _ 전압 = ((부하 _ 전압 * MAX_VOLT) /1024.0) * 6; 반환 부하 전압; }
이것은 실제 루프입니다. 여기에서 스위치 단계가 측정되고 데이터가 DAC로 전송됩니다. 데이터를 전송 한 후 실제 전류 흐름과 부하 전압이 측정됩니다. 두 값 모두 최종적으로 LCD에 인쇄됩니다.
void loop () { state1 = analogRead (increase); if (상태 1> 500) { delay (50); state1 = analogRead (증가); if (state1> 500) { volt = volt + 0.02; } } state2 = analogRead (감소); if (state2> 500) { delay (50); state2 = analogRead (감소); if (state2> 500) { if (volt == 0) { volt = 0; } else { volt = volt-0.02; } } } 숫자 = 볼트 / 0.0012210012210012; convert_DAC (숫자); 전압 = read_voltage (); 현재 = read_current (); lcd.setCursor (0, 0); lcd.print ("값 설정"); lcd.print ("="); 세트 = (볼트 / 2) * 10000; lcd.print (세트); lcd.print ("mA"); lcd.setCursor (0, 1); lcd.print ("I"); lcd.print ("="); lcd.print (현재); lcd.print ("A"); lcd.print ("V"); lcd.print ("="); lcd.print (전압); lcd.print ("V"); // lcd.print (load_voltage); //lcd.print("mA "); // 지연 (1000); //lcd.clear (); }
조정 가능한 DC 부하 테스트
디지털 부하 회로는 12V 전원을 사용하여 납땜되고 전원이 공급됩니다. 전원 측에 7.4V 리튬 배터리를 사용하고 클램프 미터를 연결하여 작동 방식을 확인했습니다. 설정 전류가 300mA 일 때 알 수 있듯이 회로는 배터리에서 300mA를 끌어와 클램프 미터로 310mA로 측정합니다.
회로의 완전한 작동은 아래 링크 된 비디오에서 찾을 수 있습니다. 프로젝트를 이해하고 유용한 것을 만드는 것을 즐겼기를 바랍니다. 질문이 있으면 댓글 섹션에 남겨 두거나 포럼을 사용하십시오.