ESP32 - 구동기 | ESP32 - Actuator

이 튜토리얼은 ESP32를 사용하여 리니어 액추에이터를 제어하는 방법을 지시합니다. 구체적으로, 우리는 다음을 배울 것입니다:

이 튜토리얼은 피드백이 없는 리니어 액추에이터용입니다. 피드백이 있는 리니어 액추에이터에 대해 배우고 싶다면, 이 ESP32 - 피드백이 있는 액추에이터 튜토리얼을 참고하세요.

준비물

1×ESP-WROOM-32 Dev Module 쿠팡 | Amazon
1×USB Cable Type-C 쿠팡 | Amazon
1×Linear Actuator Amazon
1×L298N Motor Driver Module 쿠팡 | Amazon
1×12V Power Adapter Amazon
1×(Optional) DC Power Jack 쿠팡 | Amazon
1×Breadboard 쿠팡 | Amazon
1×Jumper Wires Amazon
1×(Recommended) Screw Terminal Expansion Board for ESP32 쿠팡 | Amazon
공개: 이 섹션에서 제공된 링크 중 일부는 제휴 링크입니다. 이 링크를 통해 구매한 경우 추가 비용없이 수수료를 받을 수 있습니다. 지원해 주셔서 감사합니다.

리니어 액추에이터에 대하여

Linear Actuator Extend Retract

선형 액추에이터 핀배열

리니어 액츄에이터는 두 개의 전선이 있습니다:

  • Positive wire: 보통 빨간색
  • Negative wire: 보통 검은색
Linear Actuator Pinout

작동 원리

리니어 액추에이터를 구입할 때 해당 리니어 액추에이터가 작동하는 전압을 알아야 합니다. 예를 들어, 12V 리니어 액추에이터를 예로 들겠습니다.

12V 전원 소스로 12V 리니어 액추에이터를 구동할 때:

  • 긍정선에 12V와 GND를 각각 연결하면: 리니어 액추에이터가 제한에 도달할 때까지 최고 속도로 전개됩니다.
  • 부정선에 12V와 GND를 각각 연결하면: 리니어 액추에이터가 제한에 도달할 때까지 최고 속도로 축소됩니다.

확장하거나 축소하는 동안 작동기(양의 전선과 부의 전선에 모두 GND)에 전력을 차단하면, 작동기는 확장/축소하는 것이 멈춥니다.

※ NOTE THAT:

DC 모터, 서보 모터 및 기어링 없는 스테퍼 모터의 경우, 부하를 운반하고 있는 동안 전원 공급을 중단하면 위치를 유지할 수 없습니다. 이러한 모터들과 달리, 액추에이터는 부하를 운반하면서 전원을 중단해도 위치를 유지할 수 있습니다.

12V 미만으로 리니어 액추에이터에 전력을 공급하면, 리니어 액추에이터는 여전히 확장/축소되지만 최대 속도로는 아닙니다. 이는 전원 공급 장치의 전압을 변경하면 리니어 액추에이터의 속도를 변경할 수 있음을 의미합니다. 하지만, 전원 소스의 전압을 제어하는 것이 어렵기 때문에 이 방법은 실제로 사용되지 않습니다. 대신, 전원 소스의 전압을 고정하고 PWM 신호를 통해 리니어 액추에이터의 속도를 제어합니다. PWM의 듀티 사이클이 더 클수록 리니어 액추에이터는 더 높은 속도로 확장/축소됩니다.

How to control linear actuator

ESP32를 사용하여 리니어 액추에이터를 제어하는 방법

선형 액추에이터를 제어하는 것은 다음을 포함합니다:

  • 선형 액추에이터를 최대 속도로 확장합니다.
  • 선형 액추에이터를 최대 속도로 축소합니다.
  • (선택 사항) 확장/축소 속도를 조절합니다.

ESP32는 선형 액추에이터를 제어하기 위한 신호를 생성할 수 있습니다. 그러나 이 신호는 전압과 전류가 낮아, 우리는 그것을 선형 액추에이터를 제어하는 데 사용할 수 없습니다. 우리는 ESP32와 선형 액추에이터 사이에 하드웨어 드라이버를 사용해야 합니다. 드라이버는 두 가지 작업을 수행합니다:

  • ESP32에서 발생하는 제어 신호(전류 및 전압)를 증폭하세요.
  • 전원 공급 장치의 극성을 전환하기 위해 ESP32로부터 또 다른 제어 신호를 받으세요 → 방향 제어를 위해.

※ NOTE THAT:

이 튜토리얼은 모든 선형 액추에이터에 적용될 수 있습니다. 12V 선형 액추에이터는 단지 예시일 뿐입니다.

5V 선형 액추에이터를 제어할 때, 비록 ESP32 핀이 5V(선형 액추에이터 전압과 같음)를 출력하더라도, ESP32 핀이 선형 액추에이터에 필요한 전류를 제공하지 못하기 때문에 ESP32와 선형 액추에이터 사이에 드라이버가 필요합니다.

다양한 칩, 모듈(예: L293D, L298N)이 선형 액츄에이터 드라이버로 사용될 수 있습니다. 이 튜토리얼에서는 L298N 드라이버를 사용할 것입니다.

※ NOTE THAT:

릴레이를 드라이버로 사용할 수도 있습니다. 하지만 단일 리니어 액추에이터(확장/수축 모두)를 제어하려면 4개의 릴레이가 필요합니다.

L298N 드라이버 정보

L298N 드라이버는 리니어 액추에이터, DC 모터 및 스테퍼 모터를 제어하는 데 사용할 수 있습니다. 이 튜토리얼에서는 리니어 액추에이터를 제어하는 방법을 배웁니다.

L298N 드라이버 핀 배치

L298N Driver Pinout

L298N 드라이버에는 채널 A와 채널 B라고 하는 두 개의 채널이 있습니다. 따라서, L298N 드라이버는 동시에 두 개의 선형 액추에이터를 독립적으로 제어할 수 있습니다. 선형 액추에이터 A가 채널 A에 연결되어 있고, 선형 액추에이터 B가 채널 B에 연결되어 있다고 가정합시다. L298N 드라이버에는 13개의 핀이 있습니다:

두 채널 모두에 대한 공통 핀:

  • VCC 핀: 리니어 액츄에이터에 전력을 공급합니다. 5V에서 35V 사이에서 어디든 될 수 있습니다.
  • GND 핀: 공통 접지 핀으로, GND(0V)에 연결되어야 합니다.
  • 5V 핀: L298N 모듈에 전력을 공급합니다. ESP32로부터의 5V로 공급될 수 있습니다.

채널 A 핀:

  • ENA 핀: 선형 액추에이터 A의 속도를 제어하는 데 사용됩니다. 점퍼를 제거하고 이 핀을 PWM 입력에 연결하면, 선형 액추에이터 A의 연장/수축 속도를 제어할 수 있습니다.
  • IN1 & IN2 핀: 선형 액추에이터의 이동 방향을 제어하는 데 사용됩니다. 하나가 HIGH이고 다른 하나가 LOW일 때, 선형 액추에이터는 연장되거나 수축됩니다. 두 입력이 모두 HIGH이거나 LOW일 경우 선형 액추에이터는 정지합니다.
  • OUT1 & OUT2 핀: 선형 액추에이터 A에 연결됩니다.

채널 B 핀들:

  • ENB 핀: 선형 구동기 B의 속도를 제어하는 데 사용됩니다. 점퍼를 제거하고 이 핀을 PWM 입력에 연결하면 선형 구동기 B의 확장/축소 속도를 제어할 수 있습니다.
  • IN3 및 IN4 핀: 선형 구동기의 이동 방향을 제어하는 데 사용됩니다. 하나가 HIGH이고 다른 하나가 LOW일 때, 선형 구동기는 확장하거나 축소합니다. 두 입력 모두 HIGH이거나 LOW인 경우 선형 구동기는 정지합니다.
  • OUT3 및 OUT4 핀: 선형 구동기에 연결됩니다.

위에서 설명한 것처럼 L298N 드라이버는 두 가지 입력 전력을 가지고 있습니다:

  • 리니어 액츄에이터용 하나 (VCCGND 핀): 5V에서 35V까지.
  • L298N 모듈의 내부 작동용 하나 (5V 및 GND 핀): 5V에서 7V까지.

L298N 드라이버는 고급 용도나 기타 목적을 위해 세 개의 점퍼도 가지고 있습니다. 단순함을 위해 L298N 드라이버에서 모든 점퍼를 제거해 주세요.

우리는 ESP32와 L298N 드라이버를 사용하여 두 개의 리니어 액추에이터를 동시에 독립적으로 제어할 수 있습니다. 각 리니어 액추에이터를 제어하기 위해 ESP32에서 단 세 개의 핀만 필요합니다.

※ NOTE THAT:

이 튜토리얼의 나머지 부분은 채널 A를 사용하여 선형 액추에이터를 제어합니다. 다른 선형 액추에이터의 제어도 유사합니다.

리니어 액추에이터를 제어하는 방법

우리는 L298N 드라이버를 사용하여 리니어 액추에이터를 제어하는 방법을 배울 것입니다.

배선도

L298N 모듈의 모든 점퍼 3개를 배선하기 전에 제거해 주세요.

ESP32 Linear Actuator L298N Driver Wiring Diagram

이 이미지는 Fritzing을 사용하여 만들어졌습니다. 이미지를 확대하려면 클릭하세요.

ESP32 및 다른 구성 요소에 전원을 공급하는 방법에 대해 잘 알지 못하는 경우, 다음 튜토리얼에서 안내를 찾을 수 있습니다: ESP32 전원 공급 방법.

리니어 액추에이터를 확장/축소하는 방법

선형 액추에이터의 이동 방향은 IN1과 IN2 핀에 로직 HIGH/LOW를 적용함으로써 제어할 수 있습니다. 아래 표는 양쪽 채널의 방향을 제어하는 방법을 보여줍니다.

IN1 pin IN2 pin Direction
LOW LOW Linear Actuator A stops
HIGH HIGH Linear Actuator A stops
HIGH LOW Linear Actuator A extends
LOW HIGH Linear Actuator A retracts
  • 리니어 액추에이터 A를 연장합니다
digitalWrite(IN1_PIN, HIGH); digitalWrite(IN2_PIN, LOW);
  • 선형 액추에이터 A를 축소합니다
digitalWrite(IN1_PIN, LOW); digitalWrite(IN2_PIN, HIGH);

※ NOTE THAT:

OUT1 및 OUT2 핀이 선형 액추에이터의 두 핀에 역방향으로 연결되면 이동 방향이 반전됩니다. 그럴 경우에는 OUT1 및 OUT2 핀을 서로 바꾸거나 코드 내에서 IN1 및 IN2 핀의 제어 신호를 변경하기만 하면 됩니다.

리니어 액추에이터가 확장되거나 축소되는 것을 멈추는 방법

선형 구동기는 제한에 도달하면 자동으로 확장/축소를 멈춥니다. 제한에 도달하지 않았을 때도 프로그램을 통해 확장/축소를 멈출 수 있습니다.

리니어 액추에이터를 멈추는 두 가지 방법이 있습니다.

속도를 0으로 조절합니다

analogWrite(ENA_PIN, 0);

IN1 IN2 핀을 동일한 값(LOW 또는 HIGH)으로 제어합니다.

digitalWrite(IN1_PIN, LOW); digitalWrite(IN2_PIN, LOW);

"또는"

digitalWrite(IN1_PIN, HIGH); digitalWrite(IN2_PIN, HIGH);

선형 액추에이터의 속도를 L298N 드라이버를 통해 제어하는 방법

선형 액추에이터의 속도를 제어하는 것은 간단합니다. ENA 핀을 HIGH로 제어하는 대신, ENA 핀에 PWM 신호를 생성합니다. 우리는 다음과 같이 이것을 할 수 있습니다:

  • ESP32의 핀을 L298N의 ENA에 연결하세요.
  • analogWrite() 함수를 사용하여 ENA 핀에 PWM 신호를 생성하세요. L298N 드라이버는 PWM 신호를 리니어 액추에이터에 증폭시킵니다.
analogWrite(ENA_PIN, speed); // speed는 0에서 255까지의 값입니다.

속도는 0과 255 사이의 값입니다. 속도가 0이면 리니어 액츄에이터가 멈춥니다. 속도가 255이면 리니어 액츄에이터가 최대 속도로 확장/축소됩니다.

ESP32 예제 코드

아래 코드는 다음 작업을 수행합니다:

  • 액추에이터를 최대 속도로 확장하라
  • 선형 액추에이터를 정지하라
  • 액추에이터를 최대 속도로 수축하라
  • 선형 액추에이터를 정지하라
/* * 이 ESP32 코드는 newbiely.kr 에서 개발되었습니다 * 이 ESP32 코드는 어떠한 제한 없이 공개 사용을 위해 제공됩니다. * 상세한 지침 및 연결도에 대해서는 다음을 방문하세요: * https://newbiely.kr/tutorials/esp32/esp32-actuator */ #define ENA_PIN 27 // ESP32 핀 GPIO27가 L298N의 EN1 핀에 연결됨 #define IN1_PIN 26 // ESP32 핀 GPIO26이 L298N의 IN1 핀에 연결됨 #define IN2_PIN 25 // ESP32 핀 GPIO25가 L298N의 IN2 핀에 연결됨 // setup 함수는 보드를 리셋하거나 전원을 켤 때 한 번 실행됩니다. void setup() { // 디지털 핀을 출력으로 초기화합니다. pinMode(ENA_PIN, OUTPUT); pinMode(IN1_PIN, OUTPUT); pinMode(IN2_PIN, OUTPUT); digitalWrite(ENA_PIN, HIGH); } // loop 함수는 계속해서 반복 실행됩니다. void loop() { // 작동기를 확장합니다. digitalWrite(IN1_PIN, HIGH); digitalWrite(IN2_PIN, LOW); delay(20000); // 작동기는 한계에 도달할 때 자동으로 확장을 멈춥니다. // 작동기를 축소합니다. digitalWrite(IN1_PIN, LOW); digitalWrite(IN2_PIN, HIGH); delay(20000); // 작동기는 한계에 도달할 때 자동으로 축소를 멈춥니다. }

사용 방법

  • L298N 모듈의 점퍼를 모두 세 개 제거하세요.
  • 위의 코드를 복사해서 아두이노 IDE에 붙여넣으세요.
  • 아두이노 IDE에서 Upload 버튼을 클릭하여 코드를 ESP32 보드에 컴파일하고 업로드하세요.
  • 다음과 같은 상황을 볼 수 있습니다:
    • 리니어 액추에이터가 확장하고 제한에 도달하면 정지합니다.
    • 리니어 액추에이터가 일정 시간 동안 위치를 유지합니다.
    • 리니어 액추에이터가 수축하고 제한에 도달하면 정지합니다.
    • 리니어 액추에이터가 일정 시간 동안 위치를 유지합니다.
    • 위의 과정이 반복적으로 실행됩니다.

동영상

비디오 제작은 시간이 많이 걸리는 작업입니다. 비디오 튜토리얼이 학습에 도움이 되었다면, YouTube 채널 을 구독하여 알려 주시기 바랍니다. 비디오에 대한 높은 수요가 있다면, 비디오를 만들기 위해 노력하겠습니다.

코멘트

관련 튜토리얼

※ OUR MESSAGES

  • Please feel free to share the link of this tutorial. However, Please do not use our content on any other websites. We invested a lot of effort and time to create the content, please respect our work!