Arduino와 엔진 사용. DC 모터 연결 및 제어 아두 이노 코스-모터

취미 전자 제품에서 가장 흥미로운 것 중 하나는 엔진을 사용하여 프로젝트를 "활성화"하는 것입니다. 그러나 특히 드라이브를 사용해 본 적이없는 경우 프로젝트에 모터를 추가하는 것은 어려운 작업이 될 수 있습니다.

이 기사는 다양한 유형의 엔진 작동 원리를 이해하고 필요한 뉘앙스와 그 특징을 설명합니다.

엔진 작동 원리

모터의 작동 방식을 이해하기 전에 모터의 용도에 중점을 두십시오. 모터는 전자기력을 사용하여 움직임을 제공하여 전기를 기계 에너지로 변환합니다.

자기장은 물체를 움직일 수있는 힘을 만듭니다. 각 자석에는 북극과 남극이있는 자기장이 있습니다. 두 개의 자석의 두 북극을 더 가까이 가져 오려고하면 반발합니다. 두 개의 남극을 더 가까이 가져 오려고해도 마찬가지입니다. 기둥이 같으면 서로 격퇴합니다. 한 자석의 북극을 다른 자석의 남극으로 가져 오면 일정한 노력으로 끌 것입니다. 즉, 반대 극이 서로 끌어 당겨집니다.

전기 모터는 자석의 특성을 사용하여 반발하고 운동을 유발합니다. 기존의 전동기에는 영구 자석과 가변 자석이 있습니다. 가변 자석을 전자석이라고합니다. 전자석은 도체를 통해 전류를 통과시켜 생성됩니다. 영구 자석은 지속적으로 자기장 (북극 및 남극)을 가지며, 전자석은 전류가 통과 할 때만 자기장을 생성합니다. 전자석의 자기장의 세기는 도체를 통과하는 전류를 증가 시키거나 도체의 여러 권선을 형성하는 방법에 의해 증가 될 수있다.

전기 모터에서, 전자석은 영구 자석의 자기장 내에서 자유롭게 회전 할 수있는 방식으로 축에 장착된다. 전류가 도체를 통과하는 순간, 교류 자기장은 자석의 정적 자기장과 상호 작용하여 반발력과 인력이 발생합니다. 이로 인해 전자석이 회전하고 움직임이 발생합니다.

전기 모터의 주요 구성 요소 :

고정식으로 고정 된 경우 영구 자석 (자석)을 고정 자라고합니다.

고정자 내부에는 축에 장착되고 회전 자라고하는 코일이 있습니다.

DC 모터



엔진 직류  (DC 모터)는 여러 가지면에서 가장 간단한 전기 모터입니다. 대부분의 브러시 모터는 같은 방식으로 작동합니다. 회 전자와 고정자가 있습니다. 고정자에는 자석이 있고 회 전자에는 코일이 있으며, 자기장은 전류를인가하여 생성됩니다. 모터 내부에 로터가 움직 이도록하는 브러시가 있습니다.

직류 소스를 사용할 때, 그러한 엔진을 제어하는 \u200b\u200b데 실질적으로 필요한 것은 없다. 회전 속도는 전원에서 스위치로 코일에 흐르는 전류에 따라 다릅니다.

모터 축을 반대 방향으로 회전 시키려면 전원에서 모터로 접점을 연결하는 것만으로도 충분합니다.


스테퍼 모터


DC 모터와 마찬가지로 회 전자와 고정자로 구성됩니다. 그러나 다른 모터와 달리 스테퍼 모터 로터는 전자석으로 생성 된 필드 내부에서 회전하는 영구 자석입니다. 고정자는 모터 하우징에있는 여러 코일로 구성됩니다. 코일을 통해 전류가 흐를 때, 이동 가능한 모터 샤프트 (실제로 영구 자석)는 전자기 코일에 의해 발생 된 장에 따라 위치된다. 코일이 일정한 순서로 충전되면 모터 샤프트는 새로운 위치를 선택하고 그에 따라 회전하기 시작합니다.

회전자는 코일에 순차적 인 전압 공급에 의해 구동됩니다. 스테퍼 모터는 펄스의 해상도에 따라 로터를 특정 단계로 회전시킬 수 있습니다.

스테퍼 모터는 여러 가지 이유로 아두 이노 프로젝트에만 적합합니다. 상대적으로 저렴하고 오차가 적으므로 개방형 제어 시스템으로 제어하기에 이상적입니다 (작 업체 위치에 대한 추가 센서 없음). 스테퍼 모터는 적용된 암페어 수에 따라 로터의 주어진 위치를 제공합니다.

이 모터는 반대 방향으로 회전하도록 설계되었습니다. 전원을 스테퍼 모터의 접점에 연결하면 샤프트가 회전하기 시작합니다. 다른 방법으로 도체를 연결하면 반대 방향으로 회전합니다. 사실, 일부 스테퍼 모터에서는 반대 방향으로의 회전이 불가능하다는 것을 고려할 가치가 있습니다. 시작하기 전에이 점을 확인하십시오.

서보 모터


모델러를위한 기존 서보 모터는 0에서 180도 범위의 특정 위치를 회전 및 유지하는 데 사용됩니다. 이로 인해 로봇 공학, 포지셔닝 드라이브에 널리 사용됩니다. 생산에서 서보 모터는 자동차, 보트의 스티어링 모듈 및 최신 비디오 카메라의 초점 메커니즘에 사용됩니다.

대부분의 경우 서보 모터에는 전원, 접지 및 신호의 세 가지 와이어가 있습니다. 일반적으로 전원 코드는 빨간색,지면은 검은 색 또는 갈색입니다. 신호는 노란색, 주황색 또는 흰색입니다.

예를 들어 무선 제어 기계의 제어 시스템에 사용되는 서보 모터에서 전기 모터는 전위차계에 연결됩니다. 표준 수신기 / 송신기는 PWM 신호를 서보로 보냅니다. 서보 모터 내부의 전자 장치 (작은 컨트롤러 보드)는 펄스 폭을 위치로 변환합니다. 서보에서 회전 신호가 수신되면 전위차계가 수신기 / 송신기를 통해 미리 설정된 위치에 도달 할 때까지 모터에 전원이 공급됩니다.

제어 신호는 주파수가 50Hz 인 디지털 PWM 신호입니다. 20 밀리 초마다 디지털 제어 펄스가 적용됩니다. 펄스의 지속 시간 (폭)은 1.0 밀리 초에서 2.0 밀리 초 사이입니다. 1.5-범위의 중간. 일반적인 작동 범위를 벗어나는 추가 스트로크에는 큰 펄스 폭을 사용할 수 있습니다. PWM (Pulse Width Modulation) 신호를 PWM (Pulse Width Modulation)이라고도하지만 올바르지 않습니다.

1.5 밀리 초의 펄스 폭은 일반적으로 서보 모터를 "중립"위치 또는 90 도로 설정합니다. 1.25 밀리 초 너비의 펄스는 0 도로 설정할 수 있고 1.75 밀리 초에서 180 도의 펄스로 설정할 수 있습니다. 다른 서보 모터의 물리적 한계와 타이밍은 다를 수 있지만 중립 위치는 항상 1.5 밀리 초에 해당합니다.

진동 모터


진동 모터는 종종 움직임을 감지하기 위해 모바일 장치에서 사용됩니다.

진동 모터는 대부분의 스테퍼 모터 및 DC 모터와 설계 상 유사합니다. 차이점은 로터 끝에 편심이 설치되어 있다는 것입니다. 로터가 움직일 때 편심으로 인해 모터 하우징 내부의 메커니즘이 진동합니다. 진동의 강도는 엔진의 크기와 편심의 크기에 따라 다릅니다.

위의 비디오는 금속베이스에 장착 된 모터를 보여줍니다. 진동 모터 진동의 영향으로 금속판이 어떻게 파동을 일으킨 지 주목하십시오.

프로젝트 엔진 선택 방법


프로젝트의 엔진 유형 선택은 자동화하려는 대상에 따라 다릅니다. 카메라를 설치하고 좌우로 돌리려면 서보 모터가 이상적인 선택입니다. 후진이 필요한 기어로 움직임을 전달하는 경우 스테퍼 모터가 최선의 선택입니다.

당연히 Arduino 보드 또는 클론은 엔진 제어에 탁월한 선택입니다. 이 보드의 특징은 센서, 제어 시스템 등에 대한 추가 연결을 포함하여 복잡한 프로젝트에 핀을 사용할 수 있다는 점입니다.

Arduino와 함께 스테퍼 모터 사용



Arduino 보드와 Arduino IDE 셸을 사용하여 프로젝트를“부활”하는 것은 매우 기쁜 일입니다. 많은 수의 기성품 라이브러리가 있기 때문에 프로그래밍이 가능합니다. 스테퍼 모터를 Arduino 보드에 연결하는 것은 DC 모터를 연결하는 것과 다릅니다. Arduino IDE에는 특별한 라이브러리와 기능이 내장되어 있습니다. 이에 대한 자세한 내용을 읽을 수 있습니다.

파일\u003e 예\u003e 스테퍼\u003e stepper_oneRevolution

이 프로그램을 사용하면 Arduino 보드의 8-11 디지털 핀에 연결된 유니 폴라 또는 바이폴라 스테퍼 \u200b\u200b모터를 제어 할 수 있습니다. 스케치를 Arduino 보드에로드 한 후 스테퍼 모터는 시계 방향으로 한 바퀴, 시계 반대 방향으로 한 바퀴 회전해야합니다.

이 예제는 좋은 시작입니다. 당연히 프로그램을 직접 조정하여 작업에 맞게 조정할 수 있습니다. 지연은 밀리 초 단위로 표시되므로 턴 사이에 일시 정지하지 않으려면 지연 지연 (10)을 설정할 수 있습니다. 또는 회전 속도를 늦추기 위해 stepsPerRevolution을 변경하고 값을 할당 할 수 있습니다 (예 : (1000000)).

스케치 변경 사항은 정확히 구현하려는 대상에 따라 다릅니다. 스테퍼 모터와 Arduino 보드 간의 데이터 교환 방식을 더 잘 이해하려면 다른 예제를 실험 해 보는 것이 좋습니다.


Arduino와 함께 DC 모터 / 진동 모터 사용


일부 프로젝트에서는 Arduino와 같은 마이크로 프로세서를 사용하는 것이 의미가 없습니다. 예를 들어 어린이 (또는 성인)를위한 장난감을 만들고 그 안에 진동 모터를 설치하려는 경우 간단한 버튼을 사용하여 엔진을 시작하는 것이 훨씬 효율적이며 좋습니다.

이 경우 모터의 양극 커넥터에 연결된 스위치를 통해 모터가 전원에 직접 연결됩니다.

Arduino와 함께 서보 모터 사용




뿐만 아니라 스테퍼 모터Arduino IDE 쉘에서 서보 모터의 작동을 위해 내장 라이브러리가 있습니다.

Arduino IDE를 연 후 탭의 메뉴로 이동하십시오

파일\u003e 예\u003e 서보\u003e 노브

이 프로그램은 Arduino 보드의 9 번째 PWM 핀에 연결된 서보 모터를 제어합니다. 차례로 아날로그 핀 0에 연결되고 Arduino 보드의 핀 A0의 저항에 비례하는 전압을 보내 서보 모터의 위치를 \u200b\u200b제어합니다. Arduino 보드에 "업로드 된"스케치는 신호를 서보 모터로 전송되는 펄스로 해석합니다. 엔진은 전위차계의 "트위스트"위치에 따라 샤프트를 회전시킵니다.


   Disqus에서 제공 한 주석을 보려면 JavaScript를 활성화하십시오.

사이트는 Arduino 컨트롤러 사용에 대한 최상의 지침과 자습서가있는 정보 리소스입니다.

우리는 건설적인 협력에 항상 행복합니다. 모든 질문, 제안 및 제안 사항이 있으면 메일을 보내주십시오 [이메일 보호]

모터

이 단원에서는 DC 모터와 서보의 두 가지 유형의 모터를 살펴 봅니다.

서보는 주어진 회전 각도를 유지할 수있는 모터입니다. 주어진 속도를 유지할 수있는 서보도 있지만 오늘날에는 고려하지 않습니다.

우리는 필요합니다

  • 마이크로 서비스
  • DC 모터 (Matryoshka의 FA-130을 사용했습니다)
  • 220 uF 커패시터
  • MOSFET
  • 정류기 다이오드
  • 전위차계
  • 연결 전선 "Papa-Papa"

DC 모터

시작하려면 기존 모터를 고려하십시오. Arduino가 출력에서 \u200b\u200b지원하는 전류는 최대 40mA입니다. 부하가없는 모터는 80mA를 소비하고 1600mA의 잠금 장치 (다른 모터의 경우 전류 소비가 다를 수 있음)는 최대 40mA를 확실히 초과합니다. 따라서 모터가 Arduino 핀에 단순히 연결되어 있으면 최상의 경우 모터를 손상 시키거나 최악의 경우 핀을 태워 마이크로 컨트롤러를 비활성화 할 가능성이 큽니다.

모터를 Arduino에 연결하기 위해 다양한 모터 실드가 발명되었고, 마이크로 칩, 예를 들어 L298, MOSFET 트랜지스터가 발명되었습니다. 과정의 첫 부분에서는 MOSFET 트랜지스터 만 고려할 것입니다.

트랜지스터 란? 트랜지스터는 전자 버튼이며 전류에 의해서만 "누릅니다". 그에 대해서

MOSFET- 트랜지스터는 고전류, 저전압을 제어하기위한 트랜지스터입니다.

Vin 핀을 사용하면 전류의 크기를 제한하지 않고 부하를 연결할 수 있으므로 MOSFET과 Arduino를 사용하여 모터를 연결하고 제어 할 수 있습니다.

공급 된 전압에 따라 모터의 회전 속도가 어떻게 변하는 지 확인할 수있는 회로를 조립할 것입니다.

모터 조정 구성 요소는 정류기 다이오드입니다. 컬렉터 모터 설계에 익숙하다면 작동 할 때 MOSFET에 손상을 줄 수있는 역전 류가 발생한다는 것을 알고 있습니다. 이를 방지하기 위해 정류기 다이오드를 사용합니다.

가장 중요한 것은 다이오드의 극성을 바꾸지 않는 것입니다. 그렇지 않으면 단락이 발생합니다.

이제 코드로 넘어 갑시다.

모터 코드

   #define MOTOR 9 #define POT A0 void setup () (// MOTOR 핀을 출력으로 나타냅니다. pinMode (MOTOR, OUTPUT); Serial.begin (9600); Serial.println ( "전압의 전위차계"값 ");) void loop () (// 모터 속도를 제어하는 \u200b\u200b변수 만들기 int motorSpeed \u200b\u200b\u003d analogRead (POT) / 4; // 전위차계에 따라 모터 속도 설정 analogWrite (MOTOR, motorSpeed); // "floating"변수 만들기 직렬 모니터로 데이터 출력 float voltage \u003d (analogRead (POT) / 204.8); // 직렬 모니터로 데이터 출력 Serial.println (voltage); // 비트 지연 대기 (1000);

설명

모터는 아날로그 출력으로 연결됩니다. 즉, 전력은 아날로그 쓰기 (MOTOR, Value)를 통해 출력되며, 값에 따라 MOSFET은 원하는 전압의 공급에 대한 신호를 제공합니다.

서보 드라이브

대단해! 모터가 정리되어 있습니다. 이제 서보 모터로 가십시오. 서보 모터를 제어 할 때 특별한 지식이 없으면 할 수 없습니다. 그러나 좋은 사람들은 이미 우리를 위해 노력했고 서보 관리를위한 라이브러리를 만들었습니다. 따라서 서보 모터를 제어하는 \u200b\u200b것은 매우 간단한 작업입니다.

우리는 서버가 먼저 오른쪽으로 돌았 다가 다시 왼쪽으로 돌아가는 간단한 작은 체계를 모을 것입니다. 이것이 유용하다고 생각되면, 과정의 두 번째 부분에서 배울 것입니다. 상상력을 보여 주었으므로 이미이 계획에 대한 응용 프로그램을 찾을 수 있습니다. 사진에주의하십시오.

다이어그램의 배럴은 커패시터입니다. 커패시터는 매우 빠르게 충전 및 방전되는 작은 배터리입니다. 그에 대해서

우리의 회로에서 보드의 전원 공급 장치가 떨어지는 것을 피해야합니다. 5V 핀에 연결합니다.

서버의 전선 색상이 다를 수 있습니다. 예를 들어 검은 색 대신 갈색 선이 있고 노란색 대신 주황색이있을 수 있습니다. 두려워하지 마십시오. 아무것도 변하지 않습니다. 갈색 또는 검은 색은 지구입니다. 빨강, 그것은 거의 항상 영양입니다. 노란색 또는 주황색은 신호입니다.

  서보 용 코드

   #include   // 서보 모터 용 라이브러리를 연결합니다. 서보 서보; // Servo void setup () (servo.attach (13); // 서보를 핀 13에 연결합니다.) Void loop () (int ang \u003d 0; //이 변수에 각도를 기록합니다. // 180도 회전 카운터 (ang \u003d 0; ang<= 180; ang++) { servo.write(ang); delay(10); } //Создаем цикл со счетчиком для поворота обратно. for(ang = 180; ang >\u003d 0; ang--) (servo.write (ang); 지연 (10);))

설명

서보 서보   서보 유형의 객체를 만듭니다. 서보 객체는 다른 int, byte, char 객체와 같은 자체 속성을 가지고 있습니다. 플러그인 오브젝트에 이미 설명되어 있으므로 서보 오브젝트를 작성하고 설명 할 필요가 없습니다. 두 번째로 "작은"단어 서보는 서보 모터의 이름 일뿐입니다. 물론 C ++의 문해력을 잊지 않고 원하는대로 호출 할 수 있습니다.

서보. 부착 (핀) 이 명령으로 서보를 13 번 핀에 연결합니다. 포인트까지의 텍스트는 서보 오브젝트가 작성 될 때 선언 된 이름입니다. 이 매개 변수는 서버가 연결된 핀 번호를 승인합니다.

서보. 쓰기 (각도)   이 기능을 사용하여 서버에 원하는 각도로 회전하라는 명령을 내립니다. 그리고 지속적인 회전 "앞뒤로"우리는 for 루프를 사용했습니다.

이 학습에서는 전자 자동화에서 장치 및 트랜지스터 사용을 고려하십시오. Arduino 보드에 대한 트랜지스터의 핀 배치 및 연결에 대해 이야기합시다. 수분 센서 또는 포토 레지스트의 판독 값에 따라 DC 모터의 작동을 프로그래밍합니다. 연산자 사용을 기억하십시오 만약에, 그렇지 않으면  데이터 유형을 고려하십시오- 부호없는 intC ++에서 자주 사용됩니다.

트랜지스터의 작동 원리 및 장치

트랜지스터는 전기 진동을 증폭하고 생성하도록 설계된 반도체 장치입니다. 트랜지스터는 DC 네트워크의 키 (버튼)입니다. 바이폴라 트랜지스터는 최대 50V의 전기 회로를 제어 할 수 있으며 전계 효과 트랜지스터는 최대 100V (게이트 전압 5V)의 장치를 제어 할 수 있습니다. 교류 네트워크에서는 릴레이를 사용합니다.

트랜지스터의베이스 또는 게이트에 전압이없는 경우 이미 터와 컬렉터 접합은 평형 상태이며이를 통과하는 전류는 통과하지 않고 0과 같습니다. 따라서 바이폴라 트랜지스터의베이스에 5V의 전압을 공급하여 최대 50V의 전기 회로를 켤 수 있습니다. 오늘날이 반도체 요소는 거의 모든 장치 (전화, 컴퓨터 등)에서 발견됩니다.

트랜지스터는 컴퓨터의 논리 칩, 메모리 및 마이크로 프로세서를 구축하기위한 기초입니다. 트랜지스터는 일반적으로 3 개의 리드가있는 반도체 재료로 만들어진 전자 소자로, 입력 신호를 사용하여 고전압 전류를 제어 할 수 있습니다. 트랜지스터를 사용하는 것이 DC 모터를 Arduino UNO에 연결하는 가장 쉬운 방법입니다.

Arduino : DC 모터 제어

DC 모터를 Arduino의 디지털 또는 아날로그 포트에 직접 연결하면 실패합니다. 이것은 Arduino 보드의 핀이 40mA 이상의 전류를 공급할 수 없기 때문입니다. 이 경우 부하에 따라 DC 모터에는 수백 밀리 암페어가 필요합니다. 따라서, 트랜지스터를 사용하여 고전압으로 전기 회로를 제어 할 필요가있다.

수업을 위해서는 다음 세부 정보가 필요합니다.

  • 아두 이노 우노 보드
  • 브레드 보드;
  • USB 케이블
  • 1 바이폴라 트랜지스터;
  • 1 DC 모터;
  • 1에서 10kOhm까지 2 개의 저항;
  • "폴더 폴더"및 "폴더 어머니"를 연결합니다.

아래와 같이 전기 회로를 조립하십시오. 브레드 보드의 어셈블리를 자세히 보면 트랜지스터가 버튼의 역할을하는 것을 알 수 있습니다. 푸시로드를 눌렀을 때 버튼이 전기 회로를 닫으면 전압이베이스에 공급 될 때 트랜지스터가 전류를 통과하기 시작합니다. 따라서 Arduino에서 자동 또는 반자동 모터 제어를 수행 할 수 있습니다.



회로를 조립 한 후 DC 모터 제어 스케치를로드하십시오.

  void setup () // 설정 절차 (pinMode (11, OUTPUT); // 13 번 핀을 출력으로 선언  ) void loop () // procedure loop (digitalWrite (11, HIGH); // LED 점등  지연 (2000); // 2 초간 기다립니다 digitalWrite (11, LOW); // LED를 끕니다  지연 (2000); // 2 초간 기다립니다)

알다시피, 이것은 Arduino의 LED 켜기 단원에서 얻은 스케치입니다. 마이크로 프로세서의 관점에서 Arduino의 Light Sword 용 LED, 트랜지스터 또는 LED 드라이버 인 Pin13에 연결된 것은 절대 중요하지 않습니다. 전기 회로의 저항 R1은 트랜지스터의베이스를 접지로 끌어 당기고 저항 R2는 마이크로 컨트롤러 포트를 과부하로부터 보호하는 역할을합니다.

Arduino : DC 모터 제어

Arduino DC 모터 제어 스케치를 다르게 작성할 수 있습니다. 회로에 포토 레지스트를 추가하고 실내의 조도가 낮아지면 모터가 자동으로 켜집니다. 액체 레벨 센서 또는 다른 센서를 사용할 수도 있습니다. 스케치에서 연산자를 사용합니다 만약에  그리고 그렇지 않으면  DC 모터를 제어 (켜기 / 끄기)합니다.



회로를 조립 한 후 DC 모터 제어 스케치를로드하십시오.

// 아날로그 입력 A0에 이름 지정 // int 데이터 타입은 값을 정수로 반올림합니다  int 센서 \u003d A0; // 아날로그 입력 A0 값의 이름을 지정합니다 // unsigned int는 양수 만 허용합니다.  부호없는 int 값 \u003d 0; 무효 설정 () ( // 트랜지스터가있는 11 번 핀이 출력됩니다 ( "출력")   pinMode (11, OUTPUT); ) void 루프 () ( // 아날로그 입력 A0에서 포토 레지스트의 값을 읽습니다.   값 \u003d analogRead (센서);   // 값이 500보다 작 으면 트랜지스터를 켭니다.   if (값<500) digitalWrite (9, HIGH );   // 그렇지 않으면 (값이 500보다 큰 경우) 트랜지스터를 끕니다.   if (값\u003e 500) digitalWrite (9, LOW); )

코드 설명 :

  1. 첫 번째 줄에서 아날로그 입력 A0에 이름 센서를 할당하고 int 연산자를 사용하여 정수만 값을 취할 수 있음을 나타 냈습니다.
  2. 부호없는 int 문은 값이 양의 정수만 취할 수 있으며 초기 값은 0임을 나타냅니다.
  3. 조건부 if 문을 사용하면 실제 조건에서 작업을 정의 할 수 있습니다. else 문을 사용하면 실제 조건이 거짓 일 때 작업을 결정할 수 있습니다.

찾아야 할 것 :

  1. if (value\u003e 500) 표현식 대신 else 문을 사용할 수 있습니다.

자체 이행 작업 :

  1. 직렬 포트 모니터에 값을 인쇄하십시오.
  2. 값이 100보다 작 으면 트랜지스터가 켜지도록 설정하십시오.


이 장에서는 Arduino (UNO) 보드의 다양한 유형의 모터와 상호 작용하고 모터를 연결하고 보드에서 구동하는 방법을 보여줍니다.

세 가지 유형의 엔진이 있습니다-

  • 서보 모터
  • 스테퍼 모터

DC 모터 (DC 모터)는 가장 일반적인 유형의 모터입니다. DC 모터에는 일반적으로 양극과 음극이 각각 2 개만 있습니다. 이 두 선을 배터리에 직접 연결하면 엔진이 회전합니다. 와이어를 전환하면 모터가 반대 방향으로 회전합니다.

경고-Arduino 핀 보드에서 모터를 직접 구동하지 마십시오.보드가 손상 될 수 있습니다. 루프백 드라이버 또는 IC를 사용하십시오.

이 장을 세 부분으로 나눕니다.

  • 그냥 엔진을 돌리십시오
  • 엔진 속도 제어
  • DC 모터 회전 방향 제어

필요한 구성 요소

  • 1x Arduino UNO 보드
  • 1x PN2222 트랜지스터
  • 1x 소형 6V DC 모터
  • 1x 1N4001 다이오드
  • 1x 270 Ω 저항

절차

배선도 및 아래 그림과 같이 연결하십시오.



안전 예방책

연결할 때 다음주의 사항을 따르십시오.

    먼저 트랜지스터가 올바르게 연결되어 있는지 확인하십시오. 트랜지스터의 평평한면은 장치에 표시된 것처럼 Arduino 보드를 향해야합니다.

    둘째, 다이오드의 스트라이프 끝은 그림에 표시된 회로에 따라 + 5V 전원 라인을 향해야합니다.

스핀 컨트롤 아두 이노 코드

  int motorPin \u003d 3; 무효 설정 () () 무효 루프 () (digitalWrite (motorPin, HIGH);)

코드 노트

트랜지스터는 모터의 전력을 제어하는 \u200b\u200b스위치 역할을합니다. Arduino 핀 3은 트랜지스터를 켜고 끄는 데 사용되며 스케치에서 "motorPin"이라는 이름이 지정됩니다.

결과

Arduino 핀 번호 3이 높으면 모터가 최고 속도로 회전합니다.

다음은 Arduino 보드에 연결된 DC 모터의 개략도입니다.



아두 이노 코드

  int motorPin \u003d 9; void setup () (pinMode (motorPin, OUTPUT); Serial.begin (9600); while (! Serial); Serial.println ( "Speed \u200b\u200b0 to 255");) void loop () ((Serial.available () ) (int speed \u003d Serial.parseInt (); if (speed\u003e \u003d 0 && speed<= 255) { analogWrite(motorPin, speed); } } }

코드 노트

트랜지스터는 모터 전력을 제어하는 \u200b\u200b스위치 역할을합니다. Arduino 핀 3은 트랜지스터를 켜고 끄는 데 사용되며 스케치에서 "motorPin"이라는 이름이 지정됩니다.

프로그램이 시작되면 엔진 속도를 제어하기위한 값을 설정하라는 메시지가 표시됩니다. Serial Monitor에 0에서 255 사이의 값을 입력해야합니다.



루프 기능에서 Serial.parseInt 명령은 Serial Monitor에서 텍스트로 입력 된 숫자를 읽고이를 Int로 변환하는 데 사용됩니다. 여기에 숫자를 입력 할 수 있습니다. 다음 줄의“If”문은 숫자가 0에서 255 사이 인 경우 단순히이 숫자로 아날로그 항목을 만듭니다.

결과

DC 모터는 직렬 포트를 통해 수신 된 값 (0 ~ 250)에 따라 다른 속도로 회전합니다.

전선을 변경하지 않고 DC 모터의 회전 방향을 제어하려면 H- 브리지.H- 브리지는 엔진을 양방향으로 제어 할 수있는 전자 회로입니다. H- 브릿지는 다양한 응용 분야에서 사용됩니다. 가장 일반적인 것 중 하나는 로봇의 엔진을 제어하기위한 응용 프로그램입니다. 회로도가 "H"처럼 보이는 방식으로 연결된 4 개의 트랜지스터를 사용하기 때문에이를 H- 브리지라고합니다.

여기서는 L298 H-bridge IC를 사용합니다. L298은 DC 모터와 스테퍼 모터의 속도와 방향을 제어 할 수 있으며 두 모터를 동시에 제어 할 수 있습니다. 현재 등급은 각 엔진 당 2A입니다. 그러나 이러한 전류에서는 라디에이터를 사용해야합니다.



필요한 구성 요소

다음 구성 요소가 필요합니다-

  • 1 × L298 브리지 IC
  • 1 × DC 모터
  • 1 × Arduino UNO
  • 1 × 브레드 보드
  • 10 × 점퍼

절차

다음은 Arduino Uno 보드에 대한 DC 모터 인터페이스의 개략도입니다.



위의 다이어그램은 L298 IC를 연결하여 두 모터를 제어하는 \u200b\u200b방법을 보여줍니다. MOTOR1 및 INPUT3의 경우 Input1 (IN1), Input2 (IN2) 및 Enable1 (EN1), Motor2의 경우 Input4 및 Enable2의 세 가지 입력 핀이 있습니다.

이 예에서는 하나의 모터 만 제어하므로 Arduino IN1 (핀 5), IN2 (핀 7) 및 Enable1 (핀 6) L298 IC를 연결합니다. 핀 5와 7은 디지털이며, 즉 입력이 켜지거나 꺼지며, 핀 6은 모터 속도를 제어하기 위해 PWM (Pulse Width Modulation)이 필요합니다.

다음 표는 디지털 값 IN1 및 IN2를 기준으로 모터가 회전하는 방향을 보여줍니다.

  1에서  IN2  모터 동작
  브레이크
1   앞으로
1   백 워드
1 1   브레이크

IC L298의 핀 IN1은 Arduino의 핀 8에 연결되고 IN2는 핀 9에 연결됩니다.이 두 Arduino 디지털 핀은 모터의 회전 방향을 제어합니다. EN 트러 니언 IC는 Arduino의 PWM 핀 2에 연결됩니다. 엔진 속도를 제어합니다.

핀 8과 9의 Arduino 값을 설정하려면 digitalWrite () 함수를 사용하고 핀 2의 값을 설정하려면 analogWrite () 함수를 사용해야합니다.

연결 단계

  • Arduino에서 5V 및 IC 접지를 각각 5V 및 접지에 연결하십시오.
  • 모터를 IC의 핀 2와 3에 연결하십시오.
  • IC의 IN1을 Arduino의 핀 8에 연결하십시오.
  • IC의 IN2를 Arduino의 9 번 핀에 연결하십시오.
  • EN1 IC를 Arduino의 핀 2에 연결합니다.
  • IC의 SENS 핀을 접지에 연결하십시오.
  • Arduino USB 케이블을 사용하여 Arduino를 연결하고 Arduino IDE 소프트웨어를 사용하여 프로그램을 Arduino로 다운로드하십시오.
  • 전원, 배터리 또는 USB 케이블을 사용하여 Arduino 보드에 전원을 공급하십시오.

아두 이노 코드

  const int pwm \u003d 2; // 핀 2를 pwm으로 초기화 const int in_1 \u003d 8; const int in_2 \u003d 9; // DC 모터 무효 설정 방향을 선택하기 위해 L298 IC에 로직을 제공하려면 (pinmode (pwm, OUTPUT); // PWM 핀을 출력 핀 모드 (in_1, OUTPUT)로 설정해야합니다. // 로직 핀은 또한 출력 핀 모드로 설정 됨 (in_2, OUTPUT);) void loop () ); / * 모터의 pwm을 255로 설정하면 pwm 입력을 변경하여 회전 속도를 변경할 수 있지만 arduino 만 사용하므로 모터를 구동하기 위해 가장 높은 값을 사용하고 있습니다 * / // 3 초 동안 시계 방향으로 지연 (3000) ; // 브레이크 digitalWrite (in_1, HIGH); digitalWrite (in_2, HIGH); 지연 (1000); // 시계 반대 방향 모션-IN_1 \u003d LOW, IN_2 \u003d HIGH digitalWrite (in_1, LOW); digitalWrite (in_2 , HIGH); 지연 (3000); // 브레이크 digitalWrite (in_1, HIGH); digitalWrite (in_2, HIGH); 지연 (1000);)

결과

엔진은 먼저 시계 방향 (CW)으로 3 초간 작동 한 다음 시계 반대 방향 (CCW)으로 3 초간 작동합니다.