감자 보관용 아두이노 온도 조절기. Arduino의 또 다른 온도 조절 장치이지만 OpenTherm이 있습니다.


냉장고 컨트롤러의 주요 임무는 챔버의 설정 온도를 유지하는 것입니다. 이것은 Peltier 모듈의 전력을 변경하여 온도 컨트롤러에 의해 수행됩니다.

이전 튜토리얼에서 우리는 파워 레귤레이터를 개발했습니다. 전원과 온도 조절기 간의 연결은 다음과 같습니다.

  • 온도 컨트롤러는 측정된 온도를 수신하여 설정 온도와 비교하여 전력 컨트롤러의 설정 전력 값을 계산합니다.
  • 전력 조정기는 주어진 전력에 해당하는 PWM을 생성합니다.

적분 규제법에 따라 전력 레귤레이터를 구축했습니다. 온도를 안정화하기 위해 더 복잡한 제어 알고리즘인 PID(비례 적분 미분) 컨트롤러를 사용합니다.

PID 컨트롤러.

이전 튜토리얼에서 이야기했습니다. 장점과 단점을 강조했습니다.

이 원리로 작동하는 레귤레이터는 매우 정확합니다. 나머지 제어 품질 기준(성능 및 안정성)은 수준에 미치지 못합니다.

모든 기준에 대해 고성능을 달성하기 위해서는 서로 다른 규제법을 결합한 규제자를 사용해야 합니다.

이러한 장치는 PID(비례 적분 도함수) 컨트롤러입니다. 전송 특성이 다른 세 가지 구성 요소의 합인 출력 신호를 생성합니다. 덕분에 PID 컨트롤러는 고품질 제어를 제공하고 개별 기준에 따라 제어를 최적화할 수 있습니다.

다음은 PID 컨트롤러 출력 신호의 형성과 관련됩니다.

  • 비례 성분- 값은 불일치 오류(제어된 매개변수의 설정 값과 실제 값의 차이)에 비례합니다.
  • 통합 구성 요소불일치 오류의 적분입니다.
  • 차별화 요소불일치 오류의 도함수입니다.

PID 제어기 법칙을 작성하는 수학적 형식은 다음과 같습니다.

o (t) = P + I + D = K p e (t) + K i ∫e (t) dt + K d de (t) / dt

  • o (t) - 출력 신호;
  • P - 비례 구성 요소;
  • I - 통합 구성 요소;
  • D - 차별화 요소;
  • Kp, Ki, Kd - 비례, 적분, 미분 링크 계수;
  • e(t) - 불일치 오류.

PID 제어기는 개략적인 형태로 다음과 같이 나타낼 수 있습니다.

PID 전압 조정기 U의 블록 다이어그램은 다음과 같습니다.

  • 측정된 전압 Ureal(t)은 지정된 Uset에서 뺍니다.
  • 결과적인 불일치 오류 e(t)는 비례, 적분 및 미분 링크에 제공됩니다.
  • 구성 요소 합계의 결과로 제어 동작 o(t)가 얻어지며 이는 조절 요소에 제공됩니다.

PID 제어기가 소프트웨어로 구현되면 출력 신호는 일정한 간격으로 계산됩니다. 저것들. 레귤레이터는 시간적으로 이산적입니다. 따라서 이전 신호 상태, 이전 값 등의 표현식을 추가로 사용할 것입니다. 이전 시점 샘플링에서의 시스템 상태에 대해 이야기하고 있습니다.

PID 컨트롤러 구성 요소.

다시. PID 컨트롤러 출력 신호는 세 가지 구성 요소의 합입니다.

  • 비례항;
  • 통합;
  • 차별화.

비례 성분.

P(t) = Kp * e(t)

메모리가 없습니다. 출력 신호의 값은 시스템의 이전 상태에 의존하지 않습니다. 단순히 불일치 오류에 계수를 곱한 값이 출력으로 전송됩니다. 출력 신호는 제어된 매개변수의 편차를 보상합니다. 불일치 오류가 클수록 신호가 커집니다. 오류가 0이면 출력 신호도 0입니다.

비례 성분은 오차를 완전히 보상할 수 없습니다. 이는 공식에서 알 수 있습니다. 출력 신호는 Kp 곱하기 오류입니다. 다음 오류가 0이면 컨트롤러의 출력 신호는 0입니다. 그러면 보상할 것이 없습니다.

따라서 비례 제어기에는 항상 소위 정적 오류가 있습니다. Kp 계수를 증가시켜 감소시킬 수 있지만, 이는 시스템의 안정성을 감소시키고 심지어 자체 진동까지 초래할 수 있습니다.

비례 컨트롤러의 단점은 다음과 같습니다.

  • 정적 조절 오류의 존재;
  • 계수가 증가하면 안정성이 낮습니다.

중요한 이점이 있습니다.

  • 고속 규제. 다음 오류에 대한 비례 제어기의 응답은 시스템의 샘플링 시간에 의해서만 제한됩니다.

비례법에 의해서만 작동하는 레귤레이터는 거의 사용되지 않습니다.

PID 제어기에서 비례 성분의 주요 임무는 성능을 향상시키는 것입니다.

통합 구성 요소입니다.

나는 (t) = K i ∫e (t) dt

불일치 오류의 적분에 비례합니다. 레귤레이터의 시간 불연속성을 고려하면 다음과 같이 쓸 수 있습니다.

나는 (t) = 나는 (t -1) + K 나는 * e (t)

  • I(t-1)은 이전 샘플링 지점의 I 값입니다.

다음 오류에 계수를 곱하고 적분기의 이전 값에 더합니다. 저것들. 출력 신호는 항상 누적되며 시간이 지남에 따라 물체에 미치는 영향이 증가합니다. 따라서 미스매치 오차는 오차와 Ki 계수의 작은 값에서도 충분히 보상된다. 정상 상태에서 컨트롤러 출력 신호는 통합 구성 요소에 의해 완전히 제공됩니다.

통합 레귤레이터의 단점은 다음과 같습니다.

  • 낮은 성능;
  • 보통의 안정성.

위엄:

  • 모든 이득에서 불일치 오류를 완전히 보상하는 기능.

실제로 적분 제어기(적분 항만)와 비례 적분(적분 및 비례 성분)이 자주 사용됩니다.

PID 컨트롤러에서 적분기의 주요 임무는 높은 제어 정확도를 보장하기 위해 정적 오류를 보상하는 것입니다.

차별화 요소.

D(t) = Kd de(t) / dt

다음 오류의 변화율에 비례합니다. 불일치 오류의 가속도를 나타내는 일종의 지표입니다. 미분 성분은 미래에 제어된 매개변수의 편차를 예측하고 이 편차를 상쇄합니다. 일반적으로 레귤레이터가 물체에 미치는 영향의 지연을 보상하고 시스템의 안정성을 높입니다.

컨트롤러의 시간 불연속성을 고려하여 미분 구성 요소는 다음과 같이 계산할 수 있습니다.

D(t) = K d * (e(t) - e(t -1))

컨트롤러 불연속의 1시간 단위로 불일치 오차의 값이 얼마나 변했는지를 보여줍니다.

단일 차별화 링크로 구성된 레귤레이터는 없습니다.

PID 제어기에서 미분기의 주요 임무는 안정성을 높이는 것입니다.

PID 컨트롤러 튜닝.

PID 컨트롤러의 조절 품질은 계수가 얼마나 최적인지에 크게 좌우됩니다. PID 제어기 계수는 선택에 의해 실제 객체가 있는 시스템에서 실제로 결정됩니다. 다양한 튜닝 기술이 있습니다. 나는 일반적인 원칙에 대해서만 이야기 할 것입니다.

규제 품질은 규제 기관의 과도 응답에 의해 판단됩니다. 저것들. 시간이 지남에 따라 제어 매개 변수의 변경 일정에 따라.

PID 컨트롤러 튜닝 시퀀스의 전통적인 요점에 덧붙이자면, 우선 규제 품질에 대한 어떤 기준이 바람직한지 결정하는 것이 필요합니다.

이전 강의에서 전력 레귤레이터를 설계할 때 우리는 주로 정확성과 안정성에 관심이 있었습니다. 그리고 인위적으로 성능을 낮추기까지 했습니다. 일부 레귤레이터는 간섭이 심한 조건에서 작동하고 안정성이 더 중요하지만 다른 레귤레이터는 정확도를 희생하더라도 고성능을 요구합니다. 최적화 기준은 다를 수 있습니다. 일반적으로 PID 컨트롤러는 모든 제어 성능 기준이 높도록 조정됩니다.

PID 컨트롤러의 구성 요소는 별도로 조정됩니다.

  • 적분기와 미분기가 비활성화되고 비례 이득이 선택됩니다. 레귤레이터가 비례 통합인 경우(미분 링크가 없음) 과도 특성에 대한 진동이 완전히 없습니다. 레귤레이터를 고속으로 설정하면 진동이 남을 수 있습니다. 차별화 링크는 그들을 보상하려고 할 것입니다.
  • 차별화 링크가 연결됩니다. 그 계수는 조절 매개변수의 변동을 제거하는 경향이 있습니다. 실패하면 비례 계수가 감소합니다.
  • 통합 링크는 잔여 불일치 오류를 제거합니다.

PID 컨트롤러의 튜닝은 반복적입니다. 저것들. 계수 선택 지점은 수용 가능한 결과가 얻어질 때까지 여러 번 반복될 수 있습니다.

PID 컨트롤러는 고성능과 다양성으로 인해 산업 자동화 시스템에서 널리 사용됩니다.

다음 강의에서는 PID 온도 컨트롤러를 개발할 것입니다.

Arduino UNO, LM325 및 1602A 디스플레이를 기반으로 구축된 온도 디스플레이가 있는 수제 4채널 온도 조절기의 개략도를 사용하면 4개의 개별 부하를 제어할 수 있습니다.

이 기사에서는 수동 온도 측정 및 표시 외에도 4개의 히터를 제어하여 4개의 다른 위치에서 설정 온도를 유지할 수 있는 장치의 현대화된 버전에 대해 설명합니다. 첫 번째 버전에서는 온도 측정만 가능했습니다.

4채널 온도계의 작동과 그 프로그램은 이전 기사(L.1)에 자세히 설명되어 있으므로 여기서는 4채널 온도 조절기의 작동을 구현하기 위한 변경 사항에 대해서만 설명합니다.

개략도

개략도는 그림 1에 나와 있습니다.

쌀. 1. 1602A 디스플레이가 있는 Arduino UNO, LM325의 온도 조절 장치 개략도.

첫 번째 회로(L.1)와 달리 4개의 다른 가열 장치(H1-H4)를 제어하는 ​​릴레이 권선 K1-K4에 로드된 4개의 트랜지스터 스위치가 있습니다. 이 키에 대한 제어 명령은 ARDUINO UNO 보드의 4개의 디지털 포트 D9-D12에서 나옵니다.

프로그램

프로그램은 표 1에 나와 있습니다.

1 번 테이블.

첫 번째 차이점은 포트가 히터를 제어하도록 설정되어 있다는 것입니다. 이들은 포트 D9-D12이며 여기에 정의됩니다.

핀 모드(12, 출력);

핀 모드(11, 출력);

핀모드(10, 출력);

핀모드(9, 출력);

표시기를 연결한 후에도 여전히 D8 및 D13이 있는 다른 무료 디지털 포트를 선택할 수 있습니다. 그러나 저자는 D9, D10, D11, D12를 선택했습니다. 두 번째 차이점은 비교기 if 기능이 히터를 제어하는 ​​데 사용된다는 것입니다. 줄에서:

만약 (온도< -15)digitalWrite(12, HIGH);

if (temp> -15) digitalWrite (12, LOW);

만약 (템피< 1)digitalWrite(11, HIGH);

if (tempi> 1) digitalWrite (11, LOW);

만약 (temp2< 20)digitalWrite(10, HIGH);

if (temp2> 20) digitalWrite (10, LOW);

만약 (temp3< 10)digitalWrite(9, HIGH);

if (temp3> 10) digitalWrite (9, LOW);

이 라인은 어떤 온도에서 해당 포트에 어떤 논리 레벨이 있어야 하는지를 나타냅니다. 예를 들어 첫 번째 센서(T1)의 온도가 -15°C 미만이면 D12 포트가 논리 장치가 됩니다. 두 번째 센서(T2)의 온도가 1°C 미만이면 D11 포트가 논리 장치가 됩니다.

세 번째 센서(ТЗ)의 온도가 20 ° С 미만이면 D10 포트에 논리 장치가 있습니다. 네 번째 센서(T4)의 온도가 10°C 미만이면 D9 포트가 논리 장치가 됩니다. 물론 이 장치의 특정 응용 프로그램에 필요한 온도를 설정하고 완전히 다르게 설정할 수 있습니다.

또한 이미 완성된 장치에 있으므로 필요한 경우 쉽게 변경할 수 있습니다. 이렇게 하려면 개인용 컴퓨터를 ARDUINO UNO 보드의 USB 포트에 연결하고 온도 임계값에 대한 다른 데이터와 함께 프로그램을 로드해야 합니다. 이를 위해 원칙적으로 완제품의 하우징에 USB 커넥터를 제공할 수 있습니다.

일반적으로 "전형적인" 온도 조절기에는 히스테리시스 루프, 즉 히터의 온-온과 오프-온도 간의 차이를 생성하는 회로가 있습니다. 이것은 히터가 자주 켜지거나 꺼지지 않도록 하기 위해 필요합니다. 이것은 히터가 전자기 릴레이로 제어되는 경우 특히 중요합니다.

릴레이 접점은 이러한 작동 모드용으로 설계되지 않았기 때문에 아크로 인해 빠르게 연소되지 않을 수 있습니다. 그러나 히스테리시스는 온도 조절 장치의 작동에 오류를 발생시킵니다. 여기에서는 히스테리시스를 생성하지 않기로 결정했지만 릴레이 접점이 너무 자주 전환되지 않도록 간단히 장치의 작동을 늦추십시오. 이렇게 하려면 다음과 같이 하십시오.

표시 시간이 3초로 증가했습니다. 결과적으로 측정은 3초 주기로 반복되며 어떤 경우에도 릴레이는 3초에 한 번 이상 전환될 수 없습니다.

세부

전자기 릴레이 K1-K4는 12V 권선 및 특정 히터를 제어하기에 충분히 강력한 접점과 함께 사용할 수 있습니다.

출력 단계는 옵토 미스터와 같은 다른 회로에 따라 만들 수 있습니다. 이 경우 ARDUINO UNO 보드의 해당 포트는 전류 제한 저항, 광 시뮬레이터의 LED 또는 소위 "고체 릴레이"를 통해 연결됩니다.

Karavkin V. RK-08-17.

문헌: 1. Karavkin V. - ARDUINO UNO, RK-06-17의 4채널 온도계.

먼저 Arduino에서 간단한 것을 빌드해 보겠습니다. V 12장우리는 이미 순수한 아날로그 구성 요소로 온도 조절 장치를 발명했습니다. 이제 이 유용한 비즈니스에 디지털 기술을 어떻게 활용할 수 있는지 살펴보겠습니다.

우리는 이미 언급했습니다(참조. 18장) AVR 컨트롤러에는 10비트 다중 채널 ADC가 포함되어 있습니다. Arduino 보드에서 핀은 특별히 아날로그 입력으로 표시됩니다(문자 NS 0에서 5까지의 숫자로). 14부터 18까지의 숫자가 있는 일반 디지털 숫자로도 사용할 수 있으며 이 용량으로 사용할 것입니다. 이 입력 중 하나를 사용하여 온도를 측정하고 디지털 출력 중 하나에서 부하 연결을 제어합니다.

필요한 총계:

□ Arduino Uno 보드(다른 보드도 마찬가지임);

온도 센서로 서미스터가 있습니다. 예를 들어 기존

□ 25°C에서 공칭 저항이 10kOhm인 "Amperke" B57164-K 103-J - 특성은 다음과 같습니다. 13장서미스터의 특성에 대한 설명으로;

가변 저항기 10kOhm, 고정 저항 620Ohm;

□ 실행 릴레이 - 전자기(증폭 트랜지스터 스위치가 있어야 함, 아래 참조) 또는 솔리드 스테이트.

Arduino 출력에서 ​​제어하도록 특별히 조정된 5볼트 전자기 릴레이를 기반으로 하는 모듈이 시장에 나와 있습니다. 전자기 계전기 자체에는 상당히 큰 제어 전류가 필요합니다(그리고 무엇보다 계전기가 더 강력합니다. 가장 저전력 리드 계전기만 로직에서 직접 작동할 수 있음), 따라서 이러한 모든 계전기 모듈에는 반드시 트랜지스터 증폭 스위치. 예를 들어 Amperka는 HLS8L ‑ DC5V ‑ S ‑ C 릴레이를 기반으로 하는 이러한 모듈을 판매합니다. 전자기 릴레이가 적합하지 않고 회로의 최대한 단순성을 위해 노력하는 경우 응답 전압이 3-15V인 Crydom CX240D5R 또는 유사한 릴레이와 같은 무접점 릴레이를 찾을 수 있습니다. 제어 입력이 Arduino의 디지털 핀에 직접 연결될 수 있기 때문에 AVR에 허용되는 입력당 5볼트에서 약 15mA의 제어 전류를 갖습니다. 사실, 220볼트의 전압에서 CX240D5R은 1킬로와트 이상의 전력으로 부하를 전환할 수 없지만 이 작업에서는 더 이상 필요하지 않습니다.

Arduino Uno의 온도 조절기 회로는 그림 1에 나와 있습니다. 21.2.

쌀. 21.2. 온도 조절기 회로 켜짐 아두이노 우노

다이어그램에서 릴레이 K1의 코일(상시 개방 접점 포함)은 조건부로 Arduino의 디지털 출력에 직접 연결됩니다. 이것은 필요한 특성을 가진 이전에 언급한 솔리드 스테이트 릴레이이거나 단순히 제어 완성된 릴레이 모듈 보드의 입력. 회로의 상태를 모니터링하기 위해 LED가 히터와 동시에 활성화됩니다. 유사한 계획에 따른 온도 조절기 프로그램은 매우 간단합니다.

저항 값은 25°C(103 -J)에서 공칭 저항이 10kΩ인 지정된 B57164 -K 서미스터와 일치합니다. 프로그램에 따라 릴레이는 500과 같은 ADC 출력 값 근처에서 작동합니다. 이것은 대략 10비트 범위(전체 스케일은 1024계조)의 중간입니다. 즉, 이 값이 설정됩니다. 상한 및 하한 저항이 AO 입력과 거의 같을 때(이 입력의 전압은 약 2.5볼트가 됩니다).

두 기능 모두 만약평범하게 끝나지 않는다 또 다른... 바운싱을 방지하기 위해 프로그램에 히스테리시스가 도입되었습니다. 코드 값이 510을 초과하면 릴레이가 켜지고 값이 490으로 떨어지면 꺼집니다. 그동안 이전 상태를 유지합니다. 20개의 코드 단위(무엇이 12장우리는 불렀다 데드 존) 약 10밀리볼트에 해당합니다. 즉, 30-40도 범위의 온도에서 히스테리시스는 10분의 1도보다 약간 작습니다(표 13.1의 13장).

이러한 매개변수로 저항 R2를 사용하여 응답 온도를 설정하는 것은 약 22 ~ 96°C 범위에서 가능합니다. 물론 실제로는 이러한 넓은 조정 범위가 필요하지 않으므로 R2 값을 줄이는 것이 좋습니다. R1의 값은 R1과 R2의 공칭 값이 원하는 온도 범위의 더 낮은 값에서 서미스터의 저항에 합산되도록 선택됩니다(표 13.1에 따름). 보다 정확한 맞춤을 위해 기존 온도계로 정상 상태 온도를 측정하여 프로그램에서 임계 값을 보정하고 변경할 수 있습니다.

이 회로에서 다른 센서를 사용하는 경우 온도 계수의 부호를 잊지 마십시오. 다이오드 연결의 일반 다이오드 또는 트랜지스터(예: 13장) 또한 특성의 음의 기울기를 가지므로 프로그램에서 트리거 임계값의 숫자 값만 변경해야 합니다. 그러나 TMP35 유형의 반도체 센서(참조. 13장) 또는 금속 저항 온도계(설계에서와 같이 17장)는 양의 온도 계수를 가지므로 트리거 조건을 반대로 해야 합니다. 또한 "더"를 "적음"으로 또는 그 반대로 변경하는 것뿐만 아니라 히스테리시스에 대한 임계값의 비율도 변경합니다. 새로운 상황에서는 값이 하한 임계값보다 작으면 히터를 켜야 하고, 더 큰 것보다 많은 경우 끄십시오.

그는 온도 센서, LCD 디스플레이 및 Arduino를 사용하여 스마트 팬 속도 컨트롤러를 만드는 경험을 공유할 것입니다.

몇 달 전에 Arduino에 대한 여러 기사를 읽고 이 장치에 상당한 관심을 갖게 되었고 곧 구입하기로 결정했습니다. 나는 마이크로 일렉트로닉스와는 거리가 멀기 때문에 보드가 상대적으로 사용하기 쉽다는 점에서 우선 이겼습니다. LED와 "Hello world" -s를 다루면서 Arduino의 기능에 대해 더 자세히 알게 되는 동시에 실용적인 일을 하고 싶었습니다. 2010년의 비정상적으로 더운 여름을 염두에 두고 온도에 따라 더 차가운 속도 컨트롤러를 조립하고 모든 관련 특성을 LCD에 표시하는 아이디어가 떠올랐습니다. 이 계획이나 그 변형이 누군가에게 유용할 수 있기를 바랍니다. 그래서 나는 내 스케치를 게시하기로 결정했습니다.

이 계획에는 다음이 필요합니다.

  • 보드 자체 아두이노또는 이에 상응하는 것;
  • 빵판회로 부품 조립용;
  • 트리머가 켜진 WH1601A-NGG-CT 디스플레이 20kΩ또는 유사;
  • 저항기 - 220옴, 10kΩ, 4.7k 옴;
  • 바이폴라 트랜지스터 SS8050D또는 유사;
  • 디지털 온도 센서 DS18B20;
  • 다이오드 1N4148또는 이에 상응하는 것;
  • 예를 들어, 축 3선식(12V) - 컴퓨터;
  • 소켓 커넥터 영양물 섭취 2.1/5.5mm.

컴퓨터 쿨러에는 세 개의 전선, 그 중 2개 - 적색(+ 12V) 및 흑색(GND)은 전원으로 사용되며, 세 번째(노란색)는 홀 소자에 내장된 타코미터와 연결된다. 불행히도 보드의 5V로는 분명히 충분하지 않지만 Arduino의 6개 디지털 출력은 PWM 모드에서 작동할 수 있으므로(보드 자체에 흰색 사각형 또는 PWM 문자로 표시됨) 신호를 조절할 수 있습니다. 팬에 공급되는 전압 변경을 담당하는 릴레이에 보드.

구현에 따라 수정된 방법을 사용하여 회전 속도계의 세 번째 와이어에서 rpm에 대한 정보를 받습니다. 인터럽트, 대부분의 Arduinos에서 디지털 핀 2(인터럽트 0)와 3(인터럽트 1)에 올 수 있습니다. 그건 그렇고, Arduino Mega에는 인터럽트를 수신 할 수있는 4 개의 추가 핀이 있습니다.

이제 위치를 지정해야 합니다. 디지털 온도 센서, PWM으로 디지털 출력에 공급되는 전압을 조절하여 팬 전압 채널을 "열기" 위해 사용할 데이터입니다. Dallas 센서의 경우 자체 Arduino 라이브러리인 DallasTemperature가 있으며 나중에 스케치에서 연결할 것입니다. 라이브러리는 arduino-0018 / 라이브러리 / 디렉토리에 압축을 풀어야 합니다.

마지막으로 한 가지가 남았습니다- LCD를 연결, 여기에 온도 및 팬 속도에 대한 모든 현재 정보가 표시됩니다. 조립을 위해 WH1601A 화면을 사용했기 때문에 알려진 문자열 표시 문제가 있을 수 있습니다. 이를 제거하기 위해 arduino-0018 / 라이브러리 / 디렉토리에 압축을 풀어야 하는 LiquidCrystalRus 라이브러리를 사용할 것입니다.

// 열 센서용 라이브러리 연결#포함하다 // LCD용 라이브러리 포함#포함하다 #define PowerPin 9 // 팬 전원 제어용 핀#define HallSensor 2 // 팬 속도 센서용 핀(인터럽트)#define TempPin 7 // 온도 센서용 핀 LiquidCrystalRus LCD(12, 11, 10, 6, 5, 4, 3); // LCD 연결 DallasTemperature tempSensor; int NbTopsFan, Calc, fadeValue; // 계산을 위한 정수 변수뜨는 성질; // 온도를 저장하기 위한 실제 변수 typedef 구조체( // 팬을 위한 새로운 유형의 변수 도입 char 팬타입; unsigned int fandiv; ) 팬스펙; // 새로운 유형의 변수 배열팬스펙 팬스페이스 = ((0,1), (1,2), (2.8)); // 팬 센서의 종류 선택을 담당하는 변수 (1 - 단극 홀 센서, 2 - 바이폴라 홀 센서)숯 팬 = 2; // 이 함수는 각 인터럽트에서 호출됩니다.무효 rpm () (NbTopsFan ++;) // PWM으로 디지털 핀에 인가되는 전압을 계산하는 함수 void temp() (fadeValue = min(int(temper * 7), 255); // 온도에 인수를 곱합니다. // 제품에서 정수를 가져옵니다. } // 때문에 최대 PWM 값이 255이면 제출하는 것이 더 이상 의미가 없습니다.무효의 설정() (tempSensor.begin(TempPin); // 온도 센서 실행 lcd.begin(16, 2); // LCD의 특성 설정 lcd.setDRAM 모델(LCD_DRAM_WH1601); // 그리고 디스플레이 유형 pinMode (HallSensor, INPUT); // 인터럽트를 수신하도록 핀 구성 attachInterrupt(0, rpm, 상승); // 0번 인터럽트를 함수에 바인딩하고 신호가 변경될 때마다 계산됩니다.) 무효의 고리() (기온 = tempSensor.getTemperature(); // 온도 가져오기온도(); // PWM에 인가된 전압을 계산합니다. analogWrite(파워핀, 페이드 값); // 피드 NbTopsFan = 0; // 회전을 포함하는 변수를 0으로 만듭니다.지연(1000); // 1초 기다림 Calc = ((NbTopsFan * 60) /fanspace.fandiv); // 60초 후의 rpm을 팬 승수로 나눈 값을 계산합니다. lcd.print(계산, DEC); // 계산된 값을 10진수 형식으로 표시 lcd.print("rpm -"); lcd.print(성질); // 온도 표시 lcd.home(); )

제목의 첫 번째 부분을 읽으면 많은 사람들이 아마도 오랫동안 고생한 Arduino의 또 다른 온도 조절 장치라고 생각했을 것입니다. 그리고 ... 사실입니다. 예, 이것은 다른 보일러, 다른 집의 또 다른 온도 조절기이지만 부분적으로만 사실입니다. 기사에서 장치 자체에 집중하고 싶지 않습니다. . 의심 할 여지없이 온도 조절기에 대해 설명하겠지만 마이크로 컨트롤러를 보일러에 직접 연결하는 방법에 대해 더 이야기하고 싶습니다. 관심있는 사람 - 제발 ...

모든 것이 어떻게 시작되었는지

우선, 저는 프로그래머가 아니며 실제 마이크로 컨트롤러와 아무 관련이 없다고 말하고 싶습니다. MK AVR(그리고 실제로 MK와)을 처음 알게 된 것은 고등학교 때 이 신비한 일이 어떻게 작동하는지 알고 싶었을 때였습니다. 나는 여러 기사를 읽었고 그 이후로 내 기억에는 DDR과 PORT라는 두 단어로 설명할 수 있는 단편만 남았습니다. 여기에서 내 지식이 끝났습니다. 그런 다음 우리 모두가 가상 환경에서 MSC51에 대해 알게 된 5학년인 "프로그래밍 마이크로 컨트롤러"가 있었습니다. 이미 인터럽트, 타이머 및 기타 모든 것이 있었습니다. 글쎄, 그런 지식의 짐으로 나는 문제에 도달했다. 이 자전적 메모를 끝내고 더 흥미로운 부분으로 넘어 갑시다.

따라서 실제로 온도 조절 장치의 생성은 어떻게 시작 되었습니까? 가스 보일러로 자율 난방을 설치 한 후 나는 많은 사람들과 마찬가지로 일반적인 문제에 직면했습니다. 집의 온도는 외부 날씨에 매우 의존적이었습니다. 서리 - 그것은 아파트에서 차가워지면 배터리의 냉각수 온도를 높여야합니다. 반대로 따뜻해졌습니다. 탬버린과 함께하는 그런 춤은 나에게별로 어울리지 않습니다. tk. 보일러가 문 뒤에 설치되어 있고 문을 전자레인지로 지탱하고 있어 쓰레기 더미가 쌓여 있어 조정이 복잡했습니다. 글쎄, 당신은 아이디어를 얻습니다 - 계란의 바늘, 오리의 계란 등.

이 문제는 보일러에 연결되어 외부 온도에 따라 냉각수의 온도를 자동으로 조정할 수 있는 OTC(외부 온도 보상) 센서로 매우 간단하게 해결되었습니다. 문제가 해결 된 것 같았지만 보일러 (Ferolli Domiproject C24D)의 서비스 설명서를 읽으면서 빨리 내 희망을 짓밟았습니다. 이 모델의 외부 온도 센서 연결은 제공되지 않습니다. 모든 것? 모든 것. 그리고 지금은 아마도 마무리가 가능할 것입니다. 그러나 여름에 뇌우가 치는 동안 보일러에서 제어 보드가 여전히 이해할 수없는 방식으로 타서 나에게 서비스맨과 이야기하고 있습니다 (보드는 나중에 수리되었습니다). 내 보일러에 OTC를 연결할 수 있는지 물었습니다. 그는 외부 온도 조절기를 사용하여 연결하고 있다고 대답했습니다. 기억에 남았는데 추운 날씨가 시작될 때까지 집중을 하지 않았고, 그 후에도 같은 문제가 계속됐다.

같은 서비스 매뉴얼을 뒤지다가 온도 조절 장치가 어떻게 연결되어 있는지 보기 위해 "OpenTherm 레귤레이터"가 동일한 터미널에 연결되어 있음을 알았습니다. 그제서야 깨달았습니다 - 여기 있습니다! "OpenTherm Arduino"에 대한 Google 검색은 나를 다시 화나게 했습니다. 특별히 합리적인 것은 없습니다. 메시지 모니터가 있었지만 이것은 아닙니다 - 나는 들을 것이 없습니다 - 나는 온도 조절기가 필요합니다.