출력 핀에서 실제 아날로그 전압을 출력하는 방법

내 프로그램에 대해 몇 가지 계산을 수행 한 다음 다음을 사용하여 결과에 따라 전압을 출력하는 프로그램입니다. analogWrite 함수. 그러나 내 문제는 PWM을 통한 analogWrite 함수가 아날로그 전압을 출력한다는 오해를 바탕으로 프로그래밍을 수행했다는 것입니다. 실제로는 대신 아날로그 전압을 “시뮬레이션”할뿐입니다.

관련 부분은 다음과 같습니다. 내 코드 :

int pwmOutput = 11; int pwm = 0; void compareNewOldVoltageYes(void) { if(pv_Vnew > pv_Vold && pwm != 255) { ++pwm; //increasing value } else if(pwm != 0) { --pwm; //decreasing } } void compareNewOldVoltageNo(void) { if(pv_Vnew > pv_Vold && pwm != 0) { --pwm; } else if(pwm != 255) { ++pwm; } } void loop() { reading(); PowerCalculation(); if(pv_NewP > pv_OldP) { compareNewOldVoltageYes(); } else { compareNewOldVoltageNo(); } analogWrite(pwmOutput, pwm); //analogWrite float displayPWMvolt = pwm * 0.0196; Serial.print("Output Voltage: "); Serial.print(displayPWMvolt); Serial.println(" V"); pv_OldP = pv_NewP; Serial.print("Previous Power: "); Serial.print(pv_OldP); Serial.println(" W"); } 

회로의 경우, 출력 핀 11은 1 옴 저항에 연결되고 GND에 연결됩니다. (전압을 측정 한 곳) Arduino Uno 보드를 사용하고 있습니다.

UPDATE :

@DatHa의 의견에서 언급했듯이 pwm은 전압을 출력하지 않습니다. 보드를 변경하지 않고 전압을 출력하는 방법이 있습니까?

댓글

  • PS 아날로그 쓰기는 PWM을 사용하며 아날로그 전압을 생성하지 않습니다.
  • @DatHa이 방식으로 수행 할 수 없다는 의미입니까? 아날로그 전압을 출력하는 다른 기능이 있나요?
  • arduino.stackexchange.com/questions/10041/
  • @dpw ' 내 프로그램이 외부 프로그래밍을 통해 전자 부하에 연결해야하므로 작동하지 않는다고 생각합니다. 포트 및 0-5V를 사용하여 제어합니다.
  • PWM은 특정 전압을 출력하거나 ' 우리 주님 1734 년 해적입니다. ' 8 비트 값을 초과하지 않으며 ' 읽을 때 항상 약간의 부정확성이 있습니다.

답변

기본적으로 세 가지 옵션이 있습니다.

  1. 내장 DAC가있는 Arduino Due로 전환 실제 전압을 출력합니다.
  2. 외부 DAC 칩 (예 : MCP4821 / 2)을 추가하여 전압을 생성합니다.
  3. 저역 통과 필터 (RC 네트워크) 사용 PWM 핀.

세 가지 옵션 중 일반적으로 MCP4를 사용합니다. 822는 최상의 결과를 제공하고 Due를 사용하는 것만 큼 비용이 들지 않기 때문입니다.

댓글

  • 감사합니다. 옵션 2는 정말 좋게 들리지만 시간 제약으로 인해 옵션 3으로 진행하여 원하는 결과를 얻었습니다.
  • 또는 R-2R을 사용합니다. 사다리 를 " 가난한 사람 '의 DAC "
  • @AndreHolzner 저는 R-2R 래더를 DAC 칩과 동일하지만 일반 Arduino에서 실용적으로 만들기에는 너무 많은 와이어를 사용합니다.
  • @Majenko " 디지털 전위차계 " 또는 " digipots "는 DIP-8 칩 내부의 거의 R-2R 사다리입니다. DAC보다 저렴합니다. (예 : X9C103)
  • @FilipFranik 단 ' R-2R 사다리가 아닙니다. 그들은 ' 저항 사이의 각 연결에 연결된 FET가있는 저항 체인 일뿐입니다. R 만 있습니다. 많은 R이 모두 동일합니다. 예, 전위차계의 두 끝을 VCC 및 GND에 기록하면 일종의 DAC가 발생하지만 실제 전위차계와 동일한 종류의 임피던스 문제가 발생합니다. 한 쌍의 저항을 제공하는 반면 DAC는 전압을 제공합니다.

답변

5V에서 a 1 옴 저항은 1A를 싱크하려고 시도하고 40mA 사양을 훨씬 초과합니다. 핀을 보호하려면 최소 5 / 0.040 = 125 옴 저항을 사용하십시오. 그리고 저항과 접지 사이에 커패시터를 넣으면 커패시터의 RC 회로가 PWM을 아날로그 전압으로 매끄럽게 만듭니다.

제안 된 @russell 답변 을 47K 저항과 1uF 커패시터로 시도해보십시오. 접합부에서 사용할 아날로그 전압을 얻게됩니다. 당신의 전자 부하.

Answer

내가 아는 한 Arduino에는 ADC (Analog to Digital Converters)가 있지만 DAC (디지털-아날로그 변환기). 따라서 디지털 값을 기준으로 핀에서 설정된 전압을 출력 할 수 없습니다.

설명

  • ARM 기반 Arduino에는 일반적으로 DAC가 하나 이상 있습니다. 채널.

Answer

아니요 .. Arduino에서 아날로그 전압을 얻을 수있는 방법은 없습니다. 최선의 방법은 전압 조정기, 인덕터 및 MOSFET 트랜지스터를 사용하여 선형 또는 부스트 모드에서 Arduino를 벅 전압 변환기로 사용하는 것입니다. 표준 50o Hz 이외의 PWM 주파수를 제공하는 Mega 또는 Dulorme를 사용해야 할 수도 있습니다.

행운을 빕니다

Answer

직접적인 방법은 없습니다.

@Majenko 외에

다른 방법 : L293d와 같은 H 브리지를 사용하여 연속 레벨을 제공 할 수 있습니다.많은 DIY 인버터 회로가이 기술을 사용하고 있습니다.

http://www.instructables.com/id/How-to-Make-an-Inverter-Using-ARDUINO/?ALLSTEPS

답변

이게 더 안정적인 출력을 제공하는지 궁금했습니다.

RC에 PWN이 제공되었습니다. 캡 충전, 샘플은 다른 아날로그 입력에 의해 만들어집니다. PWN 핀이 낮아지면 캡이 천천히 방전됩니다. 느린 방전을 위해 캡과 병렬로 큰 저항이 필요합니까?

설명

  • R은 C1과 병렬로 C1을 방전합니다.

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다