센서와 모터로 작업 할 때 둘 다 사용할 수 있습니까, 아니면 모터 실드를 사용해야합니까?


11

업데이트 : 현재 프로젝트에서 몇 가지 사항을 변경하고 있습니다. 나는 당신의 조언을 받았습니다. 스테퍼 모터에서 RC 서보 (PWM을 통해 제어)로 변경했으며 문제가 발생하면 이해할 수 없습니다. 도와 주셔서 감사합니다!

나는 친구와 함께 프로젝트를 진행 중이며 처음으로 Arduino를 사용하고 있습니다. Arduino를 사용하여 센서 (가속도계)에서 데이터를 가져온 다음 모터 (6V, DC)를 켭니다.

나는 파고 있었고 Arduino의 전원 출력이 모터와 센서에 동시에 충분하지 않은 것 같습니다. 어쩌면 일종의 지연이 가능할 수도 있습니다 (가능할까요?).

모터 쉴드를 사용하고 있습니다. 모터와 함께 가속도계를 계속 제어 할 수 있습니까?

단일 외부 전원 공급 장치를 사용하려고합니다 (최대 6 AA 배터리; 휴대용으로 유지하려고하기 때문에 배터리 양을 제한하려고합니다). Arduino와 모터 쉴드는 두 가지 전원 공급 장치가 필요합니다 (내 이해에서).


여전히 다른 핀을 사용할 수 있어야합니다. 이 모터 실드는 강력한 형제처럼 행동하고 핀의 말을 듣고 당연히 많은 힘으로 그는 더 큰 형제입니다! 사용할 AA 배터리의 양에 대해보다 구체적으로 질문을 편집 할 수 있습니까?
abdullah kahraman

배터리 수를 업데이트했습니다. 스테퍼 모터가 Arduinos와 실제로 잘 작동한다고 들었으므로 스테퍼 모터가 더 나은 대안이라고 생각하십니까?
Om23

@ Om23 스테퍼, 서보, 브러시 DC 또는 브러시리스 DC의 선택은 모터가 달성해야하는 목적과 모터 제어에 사용 가능한 하드웨어 (예 : BLDC 모터)에 따라 결정됩니다. 생각할 수있는 몇 가지 가능한 목적 중 어떤 모터가 가장 잘 사용되는지 결정하는 데 흥미로운 새로운 질문이 생길 수 있습니다. 그러한 질문이 Arduino 사이트에 이상적이라고 확신하지 못하면 아마도 다른 누군가가 그 사실을 알 수 있습니다.
Anindo Ghosh

답변:


12

문제 1 : Arduino에서 직접 모터 구동

Arduino 핀에서 직접 모터를 구동하는 것은 여러 가지 이유로 권장되지 않습니다.

  • 모터 기동 및 스톨 조건에서 특히 부하 전류 . 문제에서 올바르게 지적했듯이 Arduino 핀은 단순히 충분한 전류를 공급하도록 정격 화되지 않을 수 있습니다. Arduino는 지속적인 고전류 소모로 인해 가열되거나 손상 될 수 있습니다.
    ATmega 기반 Arduino의 각 Arduino 핀은 40mA 등급이지만 개인적으로 지속적인 부하를 30mA 미만으로 유지하는 것이 좋습니다. 위험 식욕이 다를 수 있습니다. 해당 모터의 데이터 시트를 보지 않으면 모터에 필요한 전류량을 추측 할 수 없습니다
  • 후면 EMF 모터에서 모두 모터 턴 오프시, 그리고 아마도 모터 동안 정류 - DC 모터는 분할 링 사이의 접촉 브러쉬 "만약 정류를"회전으로, 아주 작은을 생성, 브러시 DC 모터의 전통적인 유형에 적어도 매번 불꽃.
    Back EMF는 기본적으로 모터 코일 (또는 턴 오프시 유도 부하), 마이크로 컨트롤러 핀이 허용 할 수있는 허용 전압 범위를 순간적으로 훨씬 초과 할 수있는 과도 전류 (스파이크)에 의해 생성 된 역 전압입니다.
    고속 EMF가 모터 리드를 가로 질러 역방향 바이어스로 연결되어 있어도 Back EMF는 여전히 위험하지만, 권장되는 방법입니다.
  • 따라서 Arduino와 모터 드라이브 사이를 분리하는 것이 좋습니다. 구현을 단순화하기 위해 이것은 모터 쉴드입니다.
    기본 전자 장치에 익숙한 경우 적합한 모터 드라이버 IC 및 플라이 백 다이오드를 직접 배선하여이를 달성 할 수도 있습니다. ( 수정은 이 무척 Manishearth하여 응답에서 설명 )
    실드 나 IC가 독립적 아두 이노의 구동해야하는지, 모터 드라이버, 그러나 두 전원 접지선과 함께 연결된다. 더 아래를 참조하십시오.

이슈 2 : 가속도계와 모터 실드 동시 제어

  • 예. 가속도계에 액세스하기 위해 선택된 핀이 실제로 모터 쉴드에서 사용되지 않는 것을 보장함으로써 모터 쉴드가 제 위치에있는 상태에서 가속도계를 Arduino에서 제어하고 읽을 수 있습니다. 그것들은 모두 실드에 연결되지만 실드 내부의 기능이나 연결은 없습니다. 선택된 방패에 대한 문서는 일반적으로이 정보를 제공합니다.
    편의를 위해 스택 가능한 헤더가 있는 모터 쉴드 , 즉 추가 하드웨어를 부착하기 위해 모터 쉴드에 Arduino 헤더 핀이 복제되어 가속도계를 찾으십시오. 모든 실드가 스택 가능한 헤더를 제공하는 것은 아닙니다. 따라서, 쉴드에 의해 이용되지 않는 핀을 사용하여, PCB상의 관련 헤더 패드에 와이어를 납땜 할 필요가 있거나, 또는 그러한 배치가 복잡해진다.
    선택한 모터 실드가 여러 GPIO 핀을 모두 사용하는 경우에는 여러 모터를 구동하기위한 실드의 경우와 같이 문제가있을 수 있습니다. 하나의 모터 만 구동해야하므로 사용하지 않는 GPIO 핀을 충분히 남겨 두지 않는 다중 모터 실드를 피하십시오.

이슈 3 : Arduino와 모터 실드 사이의 배전

  • 제안 된 6 x AA 배열 (최대 9 볼트 최대)의 문제점은 많은 Arduino에서 사용할 수있는 DC 입력 잭에 충분한 전압을 제공하지만 (일반적으로 7-12 볼트 입력 정격) 모터가 작동하기에는 너무 높다는 것입니다 직접 운전하지 마십시오.
  • 그러나 직접 전원 입력 (예 : 7 ~ 25 볼트)을 수용 한 다음, 장착 된 Arduino에 5 볼트를 훌륭하게 조절할 수있는 여러 모터 쉴드가 있습니다. 따라서 Arduino는 별도의 전원을 공급받을 필요가 없으며 둘 중 하나도 안됩니다. 이것은 반드시 구매해야하는 유일한 모터 실드 유형입니다 .
  • Kludgier 대안은 모터에 전원을 공급하기 위해 6 개의 AA 셀 중 4 개를 두드리고 Arduino의 DC 잭 (PWRIN)에 전원을 공급하기 위해 6 개의 셀을 모두 사용하거나 9 볼트를 공급하는 동안 별도의 6 볼트 벅 레귤레이터를 사용하는 것을 포함합니다. Arduino DC 잭에 직접 연결하십시오.
  • 배터리 팩으로 Arduino에 전원을 공급 한 다음 Arduino의 Vin 핀에서 모터에 전원을 공급하는 것은 나쁜 생각입니다.
    • 여러 Arduino 레퍼런스 디자인에서 DC 잭과 Vin 핀 사이의 M7 다이오드는 1A 등급이며, 모터는 적어도 순간적으로 더 많은 것을 끌어낼 수 있습니다
    • 모터에서 발생하는 모든 전자기 노이즈, 정류 노이즈 및 플라이 백 과도 전류는 간단한 문제가 아니라 매우 견고한 디커플링이 구현되지 않는 한 Arduino 보드로 다시 공급됩니다. 이 EMI 피드백은 Arduino의 작동과 관련하여 간헐적이고 디버그하기 어려운 문제를 유발합니다.

10

대부분의 쉴드는 몇 개의 핀을 사용하고 나머지는 남겨 둡니다 (따라서 많은 사람들이 스택 가능한 헤더를 사용하여 Arduino 핀 시스템의 복제본을 가지고 있습니다). 그들은 가능한 번거 로움이 없도록 설계되었으므로 방패를 얻는 것이 가장 쉬운 방법입니다.

저는 개인적으로 보드에서 직접 모터에 전원을 공급하지 않습니다. 대신 L293D와 같은 모터 드라이버를 사용합니다. 이 핀은 전류 추출에 실제로 좋지 않으며 일반적으로 Arduino 핀 대신 센서에 직접 전원을 공급하는 것이 좋습니다. 핀에는 전류 제한이 있으며 과부하하면 핀이 타 버릴 수 있습니다.

L293D 사용은 쉽습니다.

여기에 이미지 설명을 입력하십시오

핀 1,9,16을 Vcc 소스 (Arduino에 전원을 공급하는 5V 소스의 양의 터미널에 연결하십시오. 일반적으로 LM7805에서 뽑아 낸 라인입니다). 이제 핀 4,5,13,12를 GND (음극 단자)에 연결하십시오. 이제 핀 8을 고전압 소스 (6V, 12V 또는 모터에 공급할 대상)에 연결하십시오. 모든 전압원의 음극 단자를 GND로 단락시켜야합니다.

이제 모터를 한 사이트의 두 출력 핀 (왼쪽에 3,4)에 연결하십시오. 입력 핀 (2,7)을 Arduino의 두 개의 다른 핀에 연결하십시오. 두 핀에 동일한 신호 (HIGH 또는 LOW)를 주면 모터가 정지합니다. 한 핀에서 HIGH를, 다른 핀에서 LOW를 지정하면 어떤 핀에 어떤 신호가 있는지에 따라 모터가 시계 방향 또는 시계 반대 방향으로 이동합니다.

단방향 모터를 원하고 핀을 저장하려면 입력 핀 중 하나를 GND로 단락 시키십시오. 이제 다른 입력 핀이 LOW이면 모터가 꺼지고 HIGH이면 모터가 켜집니다.

원하는 경우 칩의 반대쪽 끝에서 동일한 절차를 사용하여 다른 모터를 연결할 수 있습니다.

L293D는 Arduino에서 소량의 전류를 끌어와 핀 8을 통해 끌어온 전류로 모터에 전원을 공급하며 일반적으로 이러한 상황에 이상적입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.