arduino에서 엔진 속도의 PID 조절. 단일 트랜지스터로 DC 모터 제어. Arduino를 사용하여 단상 비동기 모터의 속도 제어

24.02.2016


베스트셀러

이를 통해 전력 손실 없이 모터를 제어할 수 있습니다.이를 위한 전제 조건은 전기 모터에 회전 속도계(회전 속도계)가 있어야 모터에서 조정 보드, 즉 미세 회로로 피드백을 제공할 수 있다는 것입니다. 더 말하기 평범한 언어모든 사람에게 명확하게 하기 위해 이와 같은 일이 발생합니다. 모터는 특정 회전수로 회전하고 모터 샤프트에 설치된 회전 속도계는 이러한 판독값을 기록합니다. 엔진에 부하를 가하기 시작하면 샤프트 속도가 자연스럽게 떨어지기 시작하며 이 속도도 회전 속도계에 의해 고정됩니다. 이제 더 살펴보겠습니다. 이 회전 속도계의 신호는 미세 회로로 이동하고 이를 보고 전력 요소에 전기 모터에 전압을 추가하도록 지시합니다.따라서 샤프트를 누르면(부하를 주면) 보드가 자동으로 전압을 추가하고 여기에 전원이 공급됩니다. 샤프트가 증가했습니다. 그리고 그 반대의 경우도 마찬가지입니다. 모터 샤프트에서 손을 떼면(부하가 제거됨) 그녀는 이것을 보고 전압을 줄였습니다. 따라서 속도는 낮게 유지되지 않지만 힘의 모멘트(토크)는 일정합니다. 그리고 가장 중요한 것은 로터의 속도를 넓은 범위로 조절할 수 있어 다양한 기기의 적용 및 설계에 매우 편리합니다. 따라서 이 제품을 "전력 손실 없는 집전 모터용 회전 제어 보드"라고 합니다.

값은 0 사이일 수 있으며 0을 전달하면 모터가 정지하고 255를 전달하면 최고 속도로 작동한다는 것을 기억하십시오. 1에서 254 사이의 값을 전달하면 그에 따라 모터 속도가 변경됩니다. 지난 주와 동일한 패턴을 간단히 재사용할 수 있습니다.

개별적으로 접점을 설정하는 대신 다음 지시를 호출하여 모터의 방향을 변경할 수 있습니다. 메모. 다음 주에는 우리가 배운 모든 것을 통합하고 완전한 봇을 구축하는 방법을 알아보겠습니다. 있을 예정이니 놓치지 마세요 😉.

그러나 우리는 이 보드가 정류자 모터(전동 브러시 포함)에만 적용할 수 있는 한 가지 기능을 보았습니다. 물론 일상 생활에서 이러한 모터는 비동기식 모터보다 훨씬 덜 일반적입니다. 그러나 그들은 자동 세탁기에 널리 사용됩니다. 이것이 바로 이 계획이 만들어진 이유입니다. 특히 세탁기의 전기 모터의 경우. 그들의 전력은 200에서 800와트까지 꽤 괜찮습니다. 일상 생활에서 널리 사용할 수 있습니다.

방정식의 미분 부분은 젖은 변동 또는 제어 신호의 급격한 변화에 작용합니다. 다음은 사용된 방정식의 코드입니다. 이득 상수는 코드로 설정되지만 다른 인터페이스를 통해 프로그래밍할 수 있습니다. 이 경우 원하는 위치에서 실제 위치를 뺀 값입니다.

마찬가지로 내 오류 신호가 0이면 P 항은 모터에 영향을 미치지 않습니다. 누산기는 시간 경과에 따른 오류 신호를 합산합니다. 일부 시스템에서는 배터리가 동결되는 것을 방지하는 것이 중요합니다. 때로는 오류 측정값을 배열에 저장하고 시간이 조금 지난 다른 것을 마지막 오류로 사용하는 것이 유용합니다.

항목이 게시되고 태그가 지정되었습니다. 필요할 때 모터 속도를 제어하려면 회로에 전위차계를 추가해야 합니다. 전위차계를 배치할 브레드보드의 위치를 ​​찾으십시오. 부팅 시 이 작업이 완료되면 전위차계로 모터를 제어할 수 있습니다. 전위차계를 한 방향으로 돌리면 모터가 가속됩니다. 다른 방향으로 돌리면 속도가 느려집니다.

항상 그렇듯이 스케치에 사용된 다양한 변수를 지정합니다. 엔진이 윙윙 거리는 최소 속도가 있다는 것을 알 수 있습니다. 회전할 에너지가 충분하지 않기 때문에 이렇게 하는 것입니다. 포텐셔미터가 0인 상태에서 시작하여 포텐셔미터가 말리기 시작하고 모터가 회전하기 시작할 때까지 포텐셔미터를 매우 천천히 돌립니다. 이와 같은 작은 최적화는 낭비나 가치 없이 프로젝트를 원활하게 실행하는 데 도움이 될 수 있습니다. 이 장치에는 직경 6mm의 61" 출력 샤프트가 있습니다. 1 × 브레드보드. 원래 빵을 자르는 데 사용하는 광택이 나는 나무 조각인 브레드보드였는데, 납땜 마스트는 납땜이 필요 없기 때문에 재사용이 가능하여 임시 프로토타입 및 회로 설계 실험에 쉽게 사용할 수 있습니다. 이러한 이유로 솔더 브레드보드는 학생들과 기술 교육에서도 매우 인기가 있습니다. 이 속성이 없었습니다. 반영구적인 납땜 프로토타입 또는 일회용품을 만드는 데 사용되는 절단 및 유사한 프로토타입 회로 기판은 쉽게 재사용할 수 없습니다. 소형 아날로그 및 디지털 회로에서 완전한 중앙 처리 장치에 이르기까지 다양한 전자 시스템은 브레드보드를 ​​사용하여 프로토타입을 만들 수 있습니다.

  • 목록 스크롤이 표시되지 않으면 자동 스크롤 옵션이 선택되어 있는지 확인합니다.
  • 이 시점에서 표시되는 값을 기록하십시오.
  • 브레드보드는 전자 제품의 프로토타이핑을 위한 기초입니다.
버튼을 누르면, 패턴이면 모터가 회전하기 시작하여 버튼을 누를 때까지 움직입니다.

이 제품은 이미 사람들의 경제에서 널리 응용되고 있으며 다양한 취미 및 전문 활동에 관련된 사람들을 광범위하게 포함하고 있습니다.

질문에 답하기 - 세탁기의 엔진을 어디에서 사용할 수 있습니까? 목록이 구성되었습니다. 수제 나무 선반; 분쇄기; 콘크리트 믹서용 전동 드라이브; 가는 사람; 꿀 추출기용 전기 구동; 밀짚 절단기; 집에서 만든 녹로; 전기 잔디 깎는 기계; 나무 쪼개는 도구 및 기타 메커니즘이나 물체의 기계적 회전이 필요한 경우. 그리고 이 모든 경우에 "TDA1085의 전원을 유지하면서 전기 모터의 속도 조정" 보드가 도움이 됩니다.

이 코드에서 미분 오류는 마지막 오류 신호에서 10번째 이전 오류를 뺀 것입니다. 이 값은 컨트롤러의 PWM 범위와 일치하는 값으로 조정되어야 합니다. 같은 일을 하는 것이 더 빠른 방법일 뿐입니다.

사람들이 Arduino를 사용하여 3상 유도 전동기를 제어하는 ​​이유는 무엇입니까?

아날로그 신호를 사용하는 일반 모터 위치 컨트롤러와 같은 경우 대략적인 제어가 될 때까지 비례 설정을 조정하여 시작할 수 있습니다. 비례항이 너무 높으면 움직임이 불안정하고 고르지 않습니다.

이 누름은 연속적이며 그림의 첫 번째 물결에 표시됩니다. 두 번째 및 세 번째 경우에는 첫 번째 경우보다 훨씬 더 적은 시간 동안 버튼이 눌려집니다. 이 감소된 전압으로 인해 모터의 속도가 더욱 감소합니다. 이것은 모터의 전압이 모터를 회전시키기에 충분할 때까지 연속적인 듀티 사이클로 속도를 줄이는 것입니다.

Arduino Uno의 배선도

이제 위의 그림 1에는 4개의 라디오 버튼이 있습니다. 이 때문에 전류는 그림의 두 번째 부분과 같이 모터를 통해 오른쪽에서 왼쪽으로 흐릅니다. 이제 모터가 시계 방향으로 어떻게 회전하는지 고려하십시오. 전류는 그림의 첫 번째 부분과 같이 모터를 통해 왼쪽에서 오른쪽으로 흐릅니다. 이 전류 방향은 첫 번째 방향과 반대이므로 모터 단자에서 첫 번째 방향과 반대 전위가 표시되므로 모터가 시계 반대 방향으로 회전합니다. 따라서 위 그림과 같이 시계방향으로 회전하기 위해서는 2A가 높고 1A가 낮아야 합니다.


충돌 테스트 속도 제어 보드

이를 통해 전력 손실 없이 모터를 제어할 수 있습니다.이를 위한 전제 조건은 전기 모터에 회전 속도계(회전 속도계)가 있어야 모터에서 조정 보드, 즉 미세 회로로 피드백을 제공할 수 있다는 것입니다. 모든 사람이 이해할 수 있도록 더 쉽게 말하면 다음과 같은 일이 일어납니다. 모터는 특정 회전수로 회전하고 모터 샤프트에 설치된 회전 속도계는 이러한 판독값을 기록합니다. 엔진에 부하를 가하기 시작하면 샤프트 속도가 자연스럽게 떨어지기 시작하며 이 속도도 회전 속도계에 의해 고정됩니다. 이제 더 살펴보겠습니다. 이 회전 속도계의 신호는 미세 회로로 이동하고 이를 보고 전력 요소에 전기 모터에 전압을 추가하도록 지시합니다.따라서 샤프트를 누르면(부하를 주면) 보드가 자동으로 전압을 추가하고 여기에 전원이 공급됩니다. 샤프트가 증가했습니다. 그리고 그 반대의 경우도 마찬가지입니다. 모터 샤프트에서 손을 떼면(부하가 제거됨) 그녀는 이것을 보고 전압을 줄였습니다. 따라서 속도는 낮게 유지되지 않지만 힘의 모멘트(토크)는 일정합니다. 그리고 가장 중요한 것은 로터의 속도를 넓은 범위로 조절할 수 있어 다양한 기기의 적용 및 설계에 매우 편리합니다. 따라서 이 제품을 "전력 손실 없는 집전 모터용 회전 제어 보드"라고 합니다.

시계 반대 방향의 경우와 유사하게 1A는 높아야 하고 2A는 낮아야 합니다. 회로는 위의 배선도에 따라 브레드보드에 연결됩니다. 이 경우 버튼이 바운스 효과를 나타내지만 심각한 버그를 일으키지 않으므로 이번에는 걱정할 필요가 없습니다.

버튼을 눌러 이 숫자를 늘리거나 줄입니다. 그들은 모든 유형의 산업 제어 시스템에 사용됩니다. 일반적으로 제어 알고리즘의 비례 부분은 다음을 제공합니다. 대부분물건을 움직이게 하기 위해 "밀다". 적분항은 작은 오류와 시간에 따른 점진적인 변화에 사용됩니다.

그러나 우리는 이 보드가 정류자 모터(전동 브러시 포함)에만 적용할 수 있는 한 가지 기능을 보았습니다. 물론 일상 생활에서 이러한 모터는 비동기식 모터보다 훨씬 덜 일반적입니다. 그러나 그들은 자동 세탁기에 널리 사용됩니다. 이것이 바로 이 계획이 만들어진 이유입니다. 특히 세탁기의 전기 모터의 경우. 그들의 전력은 200에서 800와트까지 꽤 괜찮습니다. 일상 생활에서 널리 사용할 수 있습니다.

방정식의 미분 부분은 젖은 변동 또는 제어 신호의 급격한 변화에 작용합니다. 다음은 사용된 방정식의 코드입니다. 이득 상수는 코드로 설정되지만 다른 인터페이스를 통해 프로그래밍할 수 있습니다. 이 경우 원하는 위치에서 실제 위치를 뺀 값입니다.

마찬가지로 내 오류 신호가 0이면 P 항은 모터에 영향을 미치지 않습니다. 누산기는 시간 경과에 따른 오류 신호를 합산합니다. 일부 시스템에서는 배터리가 동결되는 것을 방지하는 것이 중요합니다. 때로는 오류 측정값을 배열에 저장하고 시간이 조금 지난 다른 것을 마지막 오류로 사용하는 것이 유용합니다.

항목이 게시되고 태그가 지정되었습니다. 필요할 때 모터 속도를 제어하려면 회로에 전위차계를 추가해야 합니다. 전위차계를 배치할 브레드보드의 위치를 ​​찾으십시오. 부팅 시 이 작업이 완료되면 전위차계로 모터를 제어할 수 있습니다. 전위차계를 한 방향으로 돌리면 모터가 가속됩니다. 다른 방향으로 돌리면 속도가 느려집니다.

항상 그렇듯이 스케치에 사용된 다양한 변수를 지정합니다. 엔진이 윙윙 거리는 최소 속도가 있다는 것을 알 수 있습니다. 회전할 에너지가 충분하지 않기 때문에 이렇게 하는 것입니다. 포텐셔미터가 0인 상태에서 시작하여 포텐셔미터가 말리기 시작하고 모터가 회전하기 시작할 때까지 포텐셔미터를 매우 천천히 돌립니다. 이와 같은 작은 최적화는 낭비나 가치 없이 프로젝트를 원활하게 실행하는 데 도움이 될 수 있습니다. 이 장치에는 직경 6mm의 61" 출력 샤프트가 있습니다. 1 × 브레드보드. 원래 빵을 자르는 데 사용하는 광택이 나는 나무 조각인 브레드보드였는데, 납땜 마스트는 납땜이 필요 없기 때문에 재사용이 가능하여 임시 프로토타입 및 회로 설계 실험에 쉽게 사용할 수 있습니다. 이러한 이유로 솔더 브레드보드는 학생들과 기술 교육에서도 매우 인기가 있습니다. 이 속성이 없었습니다. 반영구적인 납땜 프로토타입 또는 일회용품을 만드는 데 사용되는 절단 및 유사한 프로토타입 회로 기판은 쉽게 재사용할 수 없습니다. 소형 아날로그 및 디지털 회로에서 완전한 중앙 처리 장치에 이르기까지 다양한 전자 시스템은 브레드보드를 ​​사용하여 프로토타입을 만들 수 있습니다.

  • 목록 스크롤이 표시되지 않으면 자동 스크롤 옵션이 선택되어 있는지 확인합니다.
  • 이 시점에서 표시되는 값을 기록하십시오.
  • 브레드보드는 전자 제품의 프로토타이핑을 위한 기초입니다.
버튼을 누르면, 패턴이면 모터가 회전하기 시작하여 버튼을 누를 때까지 움직입니다.

이 제품은 이미 사람들의 경제에서 널리 응용되고 있으며 다양한 취미 및 전문 활동에 관련된 사람들을 광범위하게 포함하고 있습니다.

질문에 답하기 - 세탁기의 엔진을 어디에서 사용할 수 있습니까? 목록이 구성되었습니다. 수제 나무 선반; 분쇄기; 콘크리트 믹서용 전동 드라이브; 가는 사람; 꿀 추출기용 전기 구동; 밀짚 절단기; 집에서 만든 녹로; 전기 잔디 깎는 기계; 나무 쪼개는 도구 및 기타 메커니즘이나 물체의 기계적 회전이 필요한 경우. 그리고 이 모든 경우에 "TDA1085의 전원을 유지하면서 전기 모터의 속도 조정" 보드가 도움이 됩니다.

이 코드에서 미분 오류는 마지막 오류 신호에서 10번째 이전 오류를 뺀 것입니다. 이 값은 컨트롤러의 PWM 범위와 일치하는 값으로 조정되어야 합니다. 같은 일을 하는 것이 더 빠른 방법일 뿐입니다.

사람들이 Arduino를 사용하여 3상 유도 전동기를 제어하는 ​​이유는 무엇입니까?

아날로그 신호를 사용하는 일반 모터 위치 컨트롤러와 같은 경우 대략적인 제어가 될 때까지 비례 설정을 조정하여 시작할 수 있습니다. 비례항이 너무 높으면 움직임이 불안정하고 고르지 않습니다.

이 누름은 연속적이며 그림의 첫 번째 물결에 표시됩니다. 두 번째 및 세 번째 경우에는 첫 번째 경우보다 훨씬 더 적은 시간 동안 버튼이 눌려집니다. 이 감소된 전압으로 인해 모터의 속도가 더욱 감소합니다. 이것은 모터의 전압이 모터를 회전시키기에 충분할 때까지 연속적인 듀티 사이클로 속도를 줄이는 것입니다.

Arduino Uno의 배선도

이제 위의 그림 1에는 4개의 라디오 버튼이 있습니다. 이 때문에 전류는 그림의 두 번째 부분과 같이 모터를 통해 오른쪽에서 왼쪽으로 흐릅니다. 이제 모터가 시계 방향으로 어떻게 회전하는지 고려하십시오. 전류는 그림의 첫 번째 부분과 같이 모터를 통해 왼쪽에서 오른쪽으로 흐릅니다. 이 전류 방향은 첫 번째 방향과 반대이므로 모터 단자에서 첫 번째 방향과 반대 전위가 표시되므로 모터가 시계 반대 방향으로 회전합니다. 따라서 위 그림과 같이 시계방향으로 회전하기 위해서는 2A가 높고 1A가 낮아야 합니다.


충돌 테스트 속도 제어 보드

우리의 목적을 위해 가변 저항을 연결하는 데 사용하는 하나의 아날로그 입력(A0)과 하나의 PWM 출력이 필요합니다. 11을 사용하겠습니다. 간단한 회로를 조립해 보겠습니다.

그런 다음 원하는 최종 위치에 도달할 때까지 적분 항을 늘립니다. 적분항은 일반적으로 비례항보다 훨씬 작습니다. 적분항이 너무 높으면 모터가 진동합니다. 너무 낮고 효과가 없습니다. 엔진이 덜거덕거리는 경향이 있는 경우 위에서 설명한 대로 절단 감지 기능을 추가해야 할 수 있습니다.

이것은 단일 회전에서 약 1% 또는 5도의 정확도로 사실입니다. 초고속은 아니지만 많은 응용 프로그램에서 확실히 작동합니다. 다음은 전체 코드입니다. 이 두 전선을 배터리에 직접 연결하면 모터가 회전합니다. 전선을 바꾸면 모터가 반대 방향으로 회전합니다.


그리고 11번째 PWM 출력에 연결된 LED의 밝기를 조절하는 간단한 프로그램을 작성해 보겠습니다. 아날로그 입력 A0에 연결된 가변 저항으로 조절합니다.


현재 정격은 각 엔진에 대해 2A입니다. 그러나 이러한 전류에서는 방열판을 사용해야 합니다.


핀 5와 7은 디지털입니다. 이것은 모터의 속도를 제어합니다. 아래는 만든 사진입니다.


모터를 회전시키는 것 외에도 모터에 로터리 엔코더가 있으면 모터 샤프트의 위치를 ​​제어할 수 있습니다. 와이어 코일의 자기 환경 변화는 코일에 전압을 "유도"합니다.


우리는 첫 번째 결과를 얻습니다. 가변 저항을 사용하여 LED의 밝기가 변경됩니다. 220볼트 네트워크에 포함된 일종의 전력 부하를 제어하려면 이러한 PWM도 작동하므로 전원 장치와 Arduino 사이에 갈바닉 절연을 만드는 것이 바람직합니다. 이전 페이지에서 완성된 회로 조각을 가져올 수 있습니다.

이것은 발전기가 전압을 생성하는 방법을 설명합니다. 이것은 전기 에너지를 변환하기 위한 기계적 에너지입니다. 엔진은 발전기에서 역순으로 작동합니다. 그들은 전기 에너지를 기계적 에너지로 변환합니다. 모터에서는 고정자의 영구 자석에 의해 생성된 자기장과 상호 작용하는 자기장을 생성하는 전기자 권선에 전류가 가해집니다. 둘 사이의 상호 작용 자기장전기자가 회전하도록 합니다.

포함하여 다양한 유형의 엔진이 있습니다. 증분형 엔코더로 샤프트 위치를 결정하려면 시작 위치를 알아야 하고 외부 회로를 사용하여 출력 펄스 수를 계산해야 합니다. 인코더의 디지털 출력만 읽으면 됩니다.

  • 인크리멘탈 로터리 엔코더는 모터가 회전하는 동안에만 펄스를 출력합니다.
  • 절대 인코더.
  • 앱솔루트 로터리 엔코더는 회전 각도에 해당하는 디지털 코드를 출력합니다.
  • 모터 샤프트의 위치를 ​​알기 위해 펄스를 계산할 필요가 없습니다.
모터 속도는 제어 신호의 듀티 사이클 설정에 의해 결정됩니다.


이 PWM 컨트롤러에 대한 작은 테스트를 수행했습니다. 먼저 평소와 같이 능동 부하(백열 전구)를 연결한 다음 정류자 모터. 모든 것이 작동합니다. 동영상 촬영 -


#define PWM_PIN 11 // PWM 출력
#define SET_PIN 0 // rpm 0-5볼트 최소-최대 설정
#define TACHO_PIN 1 // 회전 속도계의 신호 0-5볼트 최소-최대

인코더를 수동으로 확인하는 코드

이러한 유형의 속도 제어를 펄스 폭 변조라고 합니다. 듀티 사이클이 100%일 때 엔진은 최고 속도로 작동합니다. 그러나 듀티 사이클이 0%일 때 모터는 정지하고 더 이상 움직이지 않습니다.


















































연결은 아래와 같습니다.








특정 인코더로 모터를 구동하는 코드

인코더는 회전 또는 선형 장치에 연결하여 장치의 움직임과 방향을 추적할 수 있는 장치입니다. 여기서 우리는 모터 속도와 샤프트 위치를 제어하기 위해 앱솔루트 로터리 엔코더를 사용했습니다.

무효 설정() (
myPID.SetMode(자동);
}
무효 루프() (
pwmOut = 제약(pwmOut, 0, 250); // 이것은 선택 사항입니다. 기본값은 0-255입니다.
pwmSet = analogRead(SET_PIN); // 속도 조정 전위차계를 읽습니다.
pwmSpeed ​​​​= analogRead(TACHO_PIN); // 타코미터 판독값 읽기
myPID.Compute(); // 이것은 pid 컨트롤러 계산이 일어나는 곳입니다 - 즉, pwmOut
analogWrite(PWM_PIN, pwmOut); // PWM 출력을 얻습니다.
}

결과적으로 매우 잘 나타났습니다. 엔진 속도는 동력을 유지하면서 조절됩니다. 그것에 대해 비디오를 만들었습니다 -