기생 / 백 피드 공급을 피하기 위해 저전력 상태에서 IC를 분리하는 올바른 방법


10

네오 픽셀 스트립 및 Adafruit 픽시를 포함한 몇 가지 다른 장치를 통합하는 저전력 배터리 기반 AVR 기반 프로젝트를 진행하고 있습니다. 전체 장치가 대기 상태 일 때 LiPo 배터리 수명을 최대화하기 위해 0.1mA 미만으로 끌어 들이기를 원합니다.

나는이 모든 작업 (측정 0.035mA)을 얻었 지 만 반드시“올바른”방법으로 그것을했는지 확실하지 않으며 이것을 기반으로 제품을 만들 계획이므로 올바르게하고 싶습니다.

여기에 이미지 설명을 입력하십시오 (표시되지 않음 : 릴레이 용 플라이 백 다이오드)

내가 가진 핵심 관심사는 데이터 핀에서 흐르는 전류를 통해 VCC가 연결 해제 될 때 장치의 "기생"전원 공급입니다. 예를 들어, 직렬 포트를 통해 통신하는 Pixie는 전원 차단 모드가 없으며 "off"가 약 밀리 암페어를 소모 할 때도 없습니다. 그래서 VCC의 연결을 끊기 위해 작은 릴레이를 배치했으며 직렬 핀이 실제로 여전히 픽시에 전원을 공급하고 있음을 발견했습니다. 다른 곳 에서는 많은 칩이 전력 보호를 위해 디지털 입력 핀을 VCC로 분류하는 다이오드를 가지고 있다고 제안했다. 이 문제를 해결하려면 수면 중에 직렬 라이브러리와 실제로 digitalWrite (PIN, LOW)를 일시 중단해야했습니다.

WS2812b 스트립과 동일한 기능 — VCC를 분리하면 데이터 핀에서 장치에 전원을 공급할 수 있습니다. 그리고 다른 설계에서 N- 채널 MOSFET으로 GND의 연결을 끊었을 때, 데이터 라인을 통해 접지로 전류가 역류되는 것을 보았습니다. (이 문제 는 PJRC의 게시물 당 다이오드로 해결해야했습니다 .) WS2812b는 조명이 꺼져있을 때에도 각각 약 밀리 암페어를 사용합니다.

따라서 질문 : 믹스에 데이터 핀이있을 때 시스템 절전 모드에서 프로젝트의 일부에서 VCC와 GND를 분리하는 일반적인 "깨끗한"방법이 있습니까? 모범 사례는 무엇입니까?

몇 가지 아이디어 :

  1. VCC를 GND로 강제합니다 (어떻게해야합니까? Hbridge?). (그렇게하면 높은 데이터 핀은 어떻게됩니까?)
  2. 모든 데이터 핀과 이들 장치 사이에 3 상태 버퍼를 배치하고, 수면 중에 3 상태 버퍼를 높은 임피던스 상태로 설정하고 P 또는 N MOSFET으로 만 VCC 또는 GND를 분리하십시오.
  3. N mosfet로만 GND를 분리하고 모든 데이터 핀에 다이오드를 배치하십시오.
  4. VCC와 GND를 모두 분리하고 "고 임피던스"상태 (전원용 3 상태 버퍼와 같은)로 만드는 일종의 전원 래치가 있습니까? 이런 방식으로 전류가 데이터 라인에서 "배출"될 수 없습니다.

누군가 이런 종류의 "로드 분리"문제를 처리하는 가장 깨끗하고 반복 가능한 방법을 알려줄 수 있습니까? 말할 필요도없이, 로드 스위칭에 대한이 기술 노트 를 찾았 지만 백 피드와 기생 전력을 다루지는 않지만 운이 좋으면이 문제를 인터넷 검색하는 데 몇 시간을 소비 했습니다.


나중에 이것은 매우 성가시다. 나는 실제로 GPIO 핀에 도달하는 전원이 VCC 핀에 도달하지 않은 상태에서도 AVR을 켤 수있는 경우를 보았다.
vicatcu

2
재미있는 관찰 :이 질문을 게시 한 후 Google 검색을 더 많이 수행했으며 SE에 대한이 질문이 최상위 순위에 올랐습니다. Google은이 페이지를 10 분 이내에 색인을 생성했습니다.
Jeremy Gilbert

설명 전용 : 원격 전압을 제거 할 수없는 경우 다른 사람들이 제안한 적절한 분리 스위치가 최상의 솔루션입니다. 쇼트 키 다이오드를 사용하여 캐소드가 공통이고 일반적으로 Vcc에 있고 절연이 필요할 때 접지에 고정 된 입력 핀에 입력 핀을 사용하면 높은 임피던스 전압을 적절히 제거 할 수 있습니다. 임피던스가 낮은 전원 공급 라인을 쇼트 키 클램핑하면 하루를 망칠 수 있습니다.
Russell McMahon

Peter Smith와 CL이 제안한 것처럼 모든 연결을 어떤 방식 으로든 Hi-Z-ing하는 방법 (tri-state µC 핀, tri-state 버퍼, 아날로그 스위치 등)이 가장 좋습니다. 어떤 방법이 더 좋은지 잘 모르겠습니다. 어쨌든 P-MOSFET이 아닌 스위칭에 릴레이를 사용하는 이유는 무엇입니까? (또는 로우 사이드 스위칭이 조금 더 어려울지라도 로우 사이드 N-MOSFET)?
FlashCactus

답변:


5

이 작업을 수행 할 때 일반적으로 영향을받는 데이터 라인에서 CMOS 아날로그 스위치 를 사용 합니다.

ADG812 와 같은 제품 에는 매우 빠른 로직에 쉽게 적합한 4 채널의 SPST 스위치가 있으며, 꺼져있는 상태에서 스위치 노드간에 매우 높은 임피던스를 제공합니다.

ADG812 누출

이것에 대한 좋은 점은이 기술이 단방향 양방향 데이터 라인 모두에서 작동한다는 것 입니다.

이 부분은 또한 밝은 미소로 실행됩니다.

ADG812 전력 요구 사항

일반적인 전원 끄기 순서 :

  1. 데이터 경로 스위치 끄기

  2. 도메인 전원을 끕니다.

물론 전원 공급은 반대입니다.

[최신 정보]

이것들은 패스 게이트 및 전송 게이트 와 같은 다른 이름으로 실제로 알려져 있습니다 .

이것들은 실제 3 상태 버퍼 (위의 링크에서 다이어그램에서 볼 수 있듯이)와 크게 다르지만 일반적인 논리의 경우 효과는 더 우수하지만 (기본적으로 양방향 장치 임) 전력은 낮습니다.


질문의 무지를 용서하십시오. 그러나 이것은 3 상태 버퍼와 현저히 다른가요? (그리고 답변 주셔서 감사합니다!)
Jeremy Gilbert

이것들은 "패스 게이트"라고도합니다
vicatcu

3

데이터 신호가 마이크로 컨트롤러에 연결된 경우 해당 핀을 입력으로 구성하여 단순히 높은 임피던스로 만들 수 있습니다. (다른 칩이 전력을 거의 사용하지 않으면 Vcc를 데이터 신호처럼 취급 할 수 있습니다.)

그렇지 않으면 아날로그 스위치 (74x66 논리 칩)를 사용하여 연결을 끊을 수 있습니다. 단방향 신호의 경우 74x125도 작동합니다.


실제로 Z를 하이 Z로 만들 필요는 없으며 마이크로 GPIO 라인을 낮게 구동 할 수 있습니다.
DoxyLover

1
다른 칩이 신호를 높게 구동 할 수 있다면 더 위험 할 것입니다.
CL.

완전히 이해 했으므로 핀을 입력으로 전환하는 것이 항상 높은 임피던스 상태에 놓는 것과 동일합니까? 대부분의 MCU 또는 AVR에만 일반화됩니까? OE를 사용하지 않을 때 74x125에서 얻는 것과 같은 상태입니까?
Jeremy Gilbert

@JeremyGilbert 모든 CMOS 입력은 임피던스가 높습니다 (MOSFET 게이트는 매우 작은 커패시터처럼 동작합니다). 비활성화 된 '125 출력에는 게이트가 없지만 그 차이는 무시할 수 있습니다.
CL.

1
@JeremyGilbert 입력은 대부분의 어플리케이션에서 일반적으로 high-Z입니다. 결국, 당신이 라인을 운전할 때 아무것도 감지하기 어렵습니다. 즉, AVR이 적어도 (그리고 아마도 다른 것들도 있지만, 나는 구체적인 것을 모른다), 내부 풀업을 조심해야합니다. 핀이 입력 모드 (DDRx를 통해 구성)에 있고 LOW를 (PORTx를 통해) 일반 Hi-Z 모드입니다. 그러나 입력 모드에서 HIGH를 쓰면 내부 풀업이 활성화되고 핀 외부에서 플로팅 라인 대신 VCC에 ~ 50K 저항처럼 보입니다.
FlashCactus

1

불행히도 모든 전략에 맞는 하나의 크기가 있다고 생각하지 않습니다. 이미 완료 한대로 서브 시스템의 전원을 전환하십시오. 소프트웨어에서 드라이브 핀이 저전력 상태 인 경우 낮은 전력 상태를 유지하지 않는 한 낮은 전력 상태로 구동합니다. 이 경우 핀을 높게 구동하십시오. 입력이 플로팅되지 않도록하십시오. 안전한 초기 조건을 설정하기 위해 필요에 따라 전원을 공급하십시오.


1

마이크로 컨트롤러가 매우 이상한 일을 할 수있는 불쾌한 문제.
좋은 해결책은 와 같은 풀다운 직렬 I / O를 사용하는 것 입니다. 이를 위해서는 SCK, SDA 라인에 풀업 저항이 필요합니다. 풀업 저항은 스위치 식 Vcc 라인에 연결됩니다. 스위치가 켜진 Vcc 라인이 꺼져있을 때 제로 볼트로 떨어지지 않도록하십시오 (플로팅하지 마십시오). I2C

해당 옵션이 없습니다. 비동기 직렬 I / O를 사용해야합니다. 일부 마이크로 컨트롤러는 I2C와 비슷한 방식으로 문제를 해결할 수 있습니다. 직렬 출력 핀을 보다 일반적인 pull-up-for-1, pull-down-for-0 대신 풀다운 전용으로 프로그래밍 할 수 있다면 스위치 된 Vcc에 풀업 저항을 추가 할 수 있습니다. 로직 하이를 설정하십시오. 이 솔루션은 현재의 접근 방식만큼 소음에 강하지는 않지만 AVR에서 I / O 모듈의 역 전력 문제를 해결해야합니다. 실제로 "깨끗한"솔루션은 아니지만 IO 모듈의 마이크로 컨트롤러에 훨씬 안전합니다.

개략도

이 회로 시뮬레이션CircuitLab을 사용하여 작성된 회로도

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.