산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Manufacturing Technology >> 제조공정

OLED 디스플레이가 있는 프로그래밍 가능한 포켓 전원 공급 장치

구성품 및 소모품

Arduino UNO
× 1
Arduino Nano R3
× 1
XL 6009 DC DC 부스트
× 1
SparkFun 푸시버튼 스위치 12mm
× 1
16MHz 크리스탈
× 1
터미널 블록 커넥터
× 1
출력 조절이 가능한 선형 조정기
× 1
선형 조정기(7805)
× 1
1N4007 – 고전압, 고전류 정격 다이오드
× 1
USB-A-B 케이블
× 1
다회전 정밀 전위차계- 10k 옴(25회전)
× 1
OP07 계측 OpAmp
× 1
일반 소켓 상자
× 1
FR4 프로토보드
× 1
점퍼 와이어(일반)
× 1
남성 헤더 40 위치 1 행(0.1")
× 1
저항 10k 옴
× 1
저항 22.1k 옴
× 1
저항 1k 옴
× 1
Arduino 래칭 릴레이 5v 2A
× 1
SparkFun MCP 4131 디지털 전위차계 10k
× 1
Arduino 구리 테이프
× 1
Arduino LM358 Opamp
× 1
Arduino 1306 OLED
× 1

필요한 도구 및 기계

납땜 인두(일반)
뜨거운 글루건(일반)
미니 드릴 모터

앱 및 온라인 서비스

Arduino IDE

이 프로젝트 정보

아이디어

취미 생활을 하는 사람으로서 우리는 종종 프로토타입에 전원을 공급하고, 전압, 전류, 프로젝트의 전력 제한을 확인하고, 새로 구입한 구성 요소를 테스트해야 합니다. 가변 전원 공급 장치의 필요성은 항상 이 작업 라인에 있습니다. 그러나 불행하게도 우리 모두가 벤치/실험실 전원 공급 장치를 가지고 있는 것은 아닙니다. 또한 구입하면 비싸고 휴대해야 하는 경우 부피가 커집니다. 저는 프로토타입 및 테스트 구성 요소에 전원을 공급하기 위한 휴대성과 생산성을 갖춘 더 저렴한 비용의 프로그래밍 가능한 전원 공급 장치를 찾고 있었습니다. 그래서 하나 만들기로 했습니다.

다음과 같은 기능이 있습니다.

<울>
  • 프로그래밍 가능
  • 충전식
  • 휴대용
  • 단계 변수
  • 전압/전류/전력 측정기
  • 보호 릴레이
  • 맞춤형, 작고 귀여운
  • 멋진 OLED 사용자 인터페이스
  • 푸시 버튼 사용자 제어 및 메뉴 기반 탐색
  • 더 많은 기능을 위해 펌웨어 업그레이드 가능!
  • 저전력 전자 프로젝트를 위한 가장 다재다능한 전원 공급 장치입니다.

    라이브 액션!

    장치 작동을 보여주는 이 비디오를 확인하십시오.

    장치 사양

    장치 사양은 다음과 같습니다.

    <울>
  • 최대 출력 DC 부하 전류:400mA
  • 전압 범위:2.0볼트 - 12.0볼트
  • 전압 단계:약 0.1볼트
  • 최고 효율:75%
  • 현재 측정 정확도:+/- 1mA
  • 전압 측정 정확도:+/- 0.02볼트
  • 이 장치는 빠른 프로토타입입니다. 고용량 배터리, 추가 전자 장치 및 업그레이드 된 디자인을 사용하여 0-30, 심지어 음의 공급 및 더 많은 출력 전류를 만드는 것이 가능합니다.

    작동 원리

    디자인 자체는 하드웨어 집약적입니다. 많은 일들이 여기서 일어나고 있습니다. 시스템의 조잡한 블록 다이어그램은 다음과 같습니다.

    전원은 USB 충전식 3.7V Li-Po 배터리입니다. 먼저 XL6009 DC-DC 부스트 모듈을 사용하여 Li-Po에서 15.6볼트를 만듭니다. MCU를 실행하기 위해 7805 레귤레이터를 사용하여 5볼트도 만듭니다.

    Arduino UNO 클론 Atmega328P는 우아한 OLED 출력 디스플레이인 2 인터럽트 기반 사용자 입력 스위치와 연결됩니다. PC에서 USB/Serial을 통한 Rx/Tx/DTR 펌웨어(스케치) 업로드 포트. (모듈 1)

    프로젝트의 핵심은 MCP4131 디지털 전위차계(Digipot) + LM 358 OpAmp 입니다. 기반 단계 전압 생성기. 이 전압은 LM317 가변 레귤레이터의 제어 전압입니다. (모듈 2)

    Digipot은 Pseudo-SPI와 같은 명령을 통해 Arduino에서 제어됩니다. LM317은 출력 핀 전압 핀 전압 조정 보다 항상 1.25볼트 높습니다. INPUT 핀의 전압이 충분히 높다면(여기서는 15.6볼트). (모듈 3)

    단계 전압은 사용자가 필요에 따라 Arduino에서 가변 출력을 생성하기 위해 조정 핀에 공급됩니다.

    ADC는 감시 및 보호와 관련된 모든 전압을 측정합니다. 배터리 전압, 부스트 전압, 충전 감지 전압 및 출력 전압은 여기에서 0-1.1볼트인 ADC 범위를 공급하기 위한 전압 분배기 네트워크를 통해 조절됩니다. 1.1볼트의 기준 전압을 생성하는 Arduino의 INTERNAL REFERENCE를 사용했습니다.

    전류 감지의 경우 출력 부하의 리턴(부하 Gnd)은 1 Ohms 전류 감지 저항과 직렬로 시스템 Gnd에 연결됩니다. 전류가 외부 부하를 통해 흐를 때 이 감지 저항에서도 전압 강하가 발생합니다. 이 전압은 OP07 정밀 연산 증폭기를 통해 증폭되어 ADC 핀 중 하나에 공급됩니다.

    마지막으로 배터리 충전을 위해 USB의 5볼트를 4007 다이오드와 직렬로 연결하고 5옴 전류 제한 저항을 Li-Po 배터리에 연결합니다. 이것은 Li-Po 충전에 적합하지 않은 조 충전 방식입니다.

    서머리 작전: MCP4131 디지털 전위차계는 약 40mV(7비트 10K Digipot의 129개 단계 5V/128 =0.40mV) 단위로 0-5볼트 범위의 단계 전압을 생성한 다음 0-12.5를 제공하는 LM358에 의해 2.5배 증폭됩니다. 볼트는 0.1볼트 단위로 전압 범위를 제어합니다. 이 증폭된 스텝 전압 신호는 LM317의 조정 핀에 공급됩니다. LM317은 외부 부하에 공급되는 V_Step+1.25V의 출력 전압을 생성합니다. 외부 부하의 반환/접지는 1 Ohms 전류 감지 저항을 통해 내부 접지에 연결됩니다. 가정:x mA 전류가 외부 부하로 흐르면 x가 생성됩니다. 1옴 전류 감지 저항기의 mV 강하(옴 법칙 V=I*R). 이 작은 전압 신호는 2.5X 이득으로 구성된 저 오프셋(10uV) OpAmp OP07에 공급되어 2.5x를 생성합니다. mV 출력. Arduino ADC는 0-1100mV의 전압이 약 1mV(1100/1023) 단위로 감지될 수 있도록 1.1V 내부 기준으로 구성됩니다. OP07의 출력은 전류 감지를 위해 Arduino ADC에 연결됩니다. 이것이 전류 제한이 400mA인 이유입니다. OP07의 게인을 변경하여 증감할 수 있습니다. 마찬가지로 출력 전압 범위는 LM358의 부스트 전압 및 이득을 변경하여 변경할 수 있습니다. 다른 전압은 ADC 범위에 맞게 전압을 감쇠하는 저항 전압 분배기 네트워크로 측정됩니다. 래치 릴레이에는 2개의 코일이 있습니다. 임의의 코일에 순간 전원을 인가함으로써 릴레이 접점을 전환할 수 있습니다. 스위치를 켜면 그대로 유지되므로 코일의 전원이 즉시 꺼집니다.

    프로젝트 구축

    먼저 단일 스위치 소켓 상자로 시작하여 배터리, USB 충전 포트, 전원 스위치 등을 배치하는 데 필요한 절단 및 정렬을 수행합니다.

    다음으로 DC-DC 부스트 모듈을 위한 구리 테이프와 코인으로 방열판을 만듭니다.

    부스트 모듈은 소켓 상자 안에 배치됩니다.

    위의 부품을 사용하여 다음 3개의 모듈이 만들어집니다.

    <울>
  • Arduino + I/O + 제어 모듈
  • 스텝 전압 및 조정 가능한 레귤레이터 모듈
  • 전류 감지 모듈
  • 마지막으로 모든 보드 사이의 스파이더 웹 연결이 연결되고 납땜됩니다.

    핫 글루를 필러로 사용한 후 마침내 다음과 같이 되었습니다.

    펌웨어 및 운영 절차 개발

    펌웨어(Arduino Sketch)는 현재 1.0.2 베타입니다. 현재 모든 기능을 사용할 수 있는 것은 아닙니다. 그러나 전압 제어, 릴레이 연결/분리, 정보 보기와 같은 가장 중요한 기능이 활성화됩니다. void setup()에서 다른 외부 하드웨어와 연결된 Arduino 핀을 워밍업하는 초기화 기능이 거의 없습니다.

    입력 :출력 전압 증가/감소, 메뉴 액세스를 위한 2개의 인터럽트 기반 입력 버튼이 있습니다(이 버전에서는 사용할 수 없음). Arduino 핀 2 및 3의 INT0 및 INT1은 FALLING EDGE INTERRUPT용으로 코딩되어 있습니다. 디바운싱을 위한 기계식 스위치와 병렬로 2개의 커패시터가 표시됩니다. 사용자가 이 스위치를 눌러 릴레이를 통해 출력을 켜고 끌 때 인터럽트를 트리거하는 코드가 작성되거나 전압(베타)이 증가/감소합니다.

    출력 :1306 OLED는 ADC로부터 데이터를 획득하는 출력 정보, 내부 타이머(장치 가동 시간용) 및 출력 활성화/비활성화 상태를 사용자에게 알려주는 플래그 변수를 보여줍니다. U8G 라이브러리를 기반으로 OLED는 정보를 텍스트 및 숫자로 인쇄합니다. 그래픽(아날로그) 표현을 사용할 계획이 있습니다.

    SSD1306(Waveshare의 OLED) clk,din,cs,d/c,res의 5개의 디지털 핀이 Arduino 10, 9, 11, 13, 12 핀에 연결되고 그에 따라 프로그래밍됩니다. 메인 루프에서 update_display() 함수는 OLED 정보를 업데이트하기 위해 매번 호출됩니다.

    Atmega328P의 내부 타이머 1은 시간을 추적하기 위해 1초마다 주기적으로 트리거하도록 구성되어 있습니다.

    제어: MCP 4131 디지털 전위차계는 increment_digipot()가 있는 컨트롤러입니다. decrement_digipot() 핀 6, 7, 8을 CS, Clk, 데이터 핀으로 사용하여 데이터가 적절한 클럭 및 지연으로 시프트되는 기능입니다. 느린 소프트 SPI와 같습니다. 이미 다른 곳에서 하드웨어 SPI 핀을 사용했기 때문에 이것이 유일한 해결책이었습니다.

    2개의 디지털 핀 4 및 5는 래칭 릴레이를 제어하는 ​​데 사용됩니다. 짧은 하이 펄스가 릴레이 구동 트랜지스터에 공급되어 2개의 코일에 전원을 공급하여 릴레이를 뒤집습니다. 자동(과부하/단락 시) 또는 사용자에 의해 수동으로 발생합니다.

    ADC: calc_VI() 메인 루프의 함수는 analogRead를 수행합니다. 20배의 평균 전압 및 전류 정보를 얻고 디스플레이에 인쇄되는 새로운 정보에 대한 변수를 업데이트했습니다.

    스케치는 여러 탭에 작성되어 다양한 작업과 관련된 다양한 기능에 대한 코드를 구성합니다. ADC, Digipot, Display_Fn이 있습니다. , 모든 사용자 정의 기능을 정렬하는 인터럽트, 릴레이 및 타이머 탭. 모든 기능을 설명하는 설명을 더 추가하려고 하지만 이러한 기능은 특정 작업을 수행하는 여러 Arduino 기능을 기반으로 하기 때문에 이해하기 어렵지 않을 것입니다.

    제한

    이 기기에는 몇 가지 심각한 제한 사항이 있습니다.

    <울>
  • 전압은 2.0V 미만으로 떨어질 수 없습니다.
  • 전압 출력이 연속적이지 않고 단계적
  • 전류 측정은 고전류에 대한 접지 이동을 생성합니다.
  • ADC 측정의 해상도가 낮습니다.
  • 효율은 저전압 고전류 부하에서 동급 최악
  • 비표준, 약간 안전하지 않은 Li-Po 충전
  • 참조

    다음 튜토리얼에서 각 구성요소에 대해 자세히 알아볼 수 있습니다.

    <울>
  • 회전 전위차계
  • 버튼 튜토리얼
  • 결론 &

    이 프로그래밍 가능한 전원 공급 장치는 프로젝트/프로토타입을 보다 효율적으로 만드는 데 도움이 됩니다. 멀티미터를 사용하지 않고 전압 전류 전력 측정.


    <섹션 클래스="섹션 컨테이너 섹션 축소 가능" id="코드">

    코드

    <울>
  • Arduino 프로그래밍 가능한 휴대용 전원 공급 장치
  • 코드 버전 1.0.1 베타
  • 코드 버전 1.0.2 베타
  • 코드 버전 1.0.3
  • Arduino 프로그래밍 가능 휴대용 전원 공급 장치Arduino
    Ver 1.0.1 with Pin out information in comments
    // 핀 리셋, 스케치 업로드용 D0 &D1// OLED 디스플레이 제어용 핀 D9,D10,D11,D12,D13// V_boost 감지용 ADC A0 핀// V_batt(LiPo) 감지용 ADC A2 핀// I_Output(부하) 감지용 ADC A3 핀// V_USB(충전) 감지용 ADC A4 핀// V_Output(부하) 감지용 ADC A5 핀// 래치 릴레이의 2개 코일 구동 핀 D4 &D5#define RC1 4#define RC2 5// 핀 D2 &D3#define SW1 2#define SW2 3// 디지털 포트 제어 핀용 핀 D6,D7,D8에 연결된 사용자 입력 스위치#define CS_PIN 6#define CLK_PIN 7 #define DATA_PIN 8volatile uint8_t Switch1 =1;volatile uint8_t Switch2 =1;float V_Out =0.0;float I_Out =0.0;float V_Bat =0.0;float V_Bst =0.0;float V_Chg =0.0_time =U3 h"// OLED 디스플레이 제어 핀//SSD1306 oled waveshare(clk,din,cs,d/c,res);// WAVESHAREU8GLIB_SSD1306_128X64 u8g(10, 9,11, 13,12)를 위한 것입니다. void setup(void) { // 필요한 경우 화면을 뒤집습니다. analogReference(INTERNAL); u8g.setRot180(); button_init(); relay_init(); init_timer1(); digipot_init(); } 무효 루프(무효) { update_display(); calc_VI(); if (스위치1==0) { rc1_latch(); 스위치1=1; 증분_디지팟(); } if (스위치2==0) { rc2_latch(); 스위치2=1; decrement_digipot(); } 지연(100); }
    코드 버전 1.0.1 베타C/C++
    미리보기 없음(다운로드만 가능).
    코드 버전 1.0.2 베타C/C++
    텍스트/상자 정렬에 대한 버그 수정
    과부하 트립에 대한 버그 수정

    다음 릴리스에서는 몇 가지 더 많은 버그가 수정됩니다.
    미리보기 없음(다운로드만 가능).
    코드 버전 1.0.3C/C++
    전원 켜기 중 버그 수정 출력 릴레이 비활성화
    전원 켜기 후 버그 수정 자동 설정 출력 전압 5.00v
    미리보기 없음(다운로드만 해당)

    회로도

    화이트보드에 그린 그림! https://circuits.io/circuits/4762970-arduino-based-programmable-power-supply

    제조공정

    1. Arduino Pong 게임 - OLED 디스플레이
    2. Arduino로 코인 억셉터 제어
    3. Arduino 제어 센터
    4. Arduino Temp. 3.2 디스플레이가 있는 모니터 및 실시간 시계
    5. Bluetooth가 탑재된 Arduino로 LED 제어!
    6. Arduino Power
    7. Nextion 디스플레이로 재생
    8. Arduino 및 Nokia 5110 디스플레이가 있는 DIY 전압계
    9. Arduino 교육 플랫폼
    10. Nextion 디스플레이로 Fridgeye 앱 구축