'L293D'로 스테핑모터를 제어할 때 쓰던 칩입니다.

(참고 : [Arduino] L293D칩을 이용한 유니폴라 스테핑 모터(unipolar stepping motor) 제어)

DC모터의 양방향 제어를 할때도 사용이 가능합니다.

 

 

 

 

가격은 7000원 정도 합니다.

(참고 : 디바이스 마트 - L293D )

 

'L293B'을 이용해도 됩니다.

(참고 : 디바이스 마트 - L293B )

 

모터는 'KR-300'와 'MDN-4RA3ETA' 사용 했습니다.

(참고 : 디바이스 마트 - 서보형 DC모터 (KR-300), MDN-4RA3ETA )

외부전원을 이용할 때는 'KR-300'를 아두이노 전원을 이용할 때는 'MDN-4RA3ETA'를 사용합니다.

 

1. 테스트 해보기

일단 아두이노가 아닌 손으로 배선을 수정하여 동작을 확인하기 위한 구성을 합니다.

1-1. 보드 구성

보드 구성은 제가 참고한 사이트와 똑같이 해줍니다.

(참고 : adafruit learning system - Arduino Lesson 15. DC Motor Reversing - An Experiment )

 

 

DCMotor_002_001.fzz

 

1-2. 테스트 해보기

펌웨어는 올리지 말고 바로 아두이노를 연결하여 모터가 돌아가는지 확인합니다.

 

소리를 들어보면 모터가 동작함을 알 수 있습니다.

 

이제 보라색선을 GND로 옮겨 모터를 멈추게 합시다.

 

각 선은 다음과 같습니다.

보라색선 : Enable

노란색선 : In1

주황색선 : In2

입니다.

 

'Enable'은 모터의 동작 여부를 결정합니다.

전원이 인가되면 '참(True)'가 되어 모터가 동작할 수 있는 상황이 됩니다.

GND가 인가되면 '거짓(False)'가 되어 모터가 동작하지 않습니다.

그리고 'Enable'을 통해 DC모터의 속도를 조절할 수 있습니다.

 

'In1', 'In2'는 한쪽은 '참(True)', 한쪽은 '거짓(False)'일 때만 모터가 동작합니다.

단지 둘 다 '참(True)'이거나 '거짓(False)'이라면 동작하지 않습니다.

그리고 'In1'이 '참(True)'이라면 정방향 'In2'가 '참(True)'이라면 역방향으로 모터가 동작합니다.

표로 보자면 다음과 같습니다.

 

Enable(보라색) In1(노란색) In2(주황색) 결과
True True True 멈춤
True True False 정방향
True False True 역방향
True False False 멈춤

 

'Enable'가 'False'일때는 모터가 동작 하지 않습니다.

 

 

 

 

2. 양방향 제어

위에서 살펴봤다시피 DC모터를 양방향 제어를 하기 위해서는 데이터 선이 2개 필요합니다.

 

2-1. 보드 구성

이제 'Enable', 'In1', 'In2'를 각각 11번, 10번, 9번에 연결하고 아두이노로 제어해봅시다.

 

 

DCMotor_002_002.fzz

 

 

2-2. 펌웨어 작성

이제 'Enable'은 항상 'True'로 두고 'In1'과 'In2'는 시리얼 모니터에서 보낸 데이터에 따라서 동작하도록 작성해 봅시다.

 

int enablePin = 11;
int in1Pin = 10;
int in2Pin = 9;

int nSwitch = 0;
boolean bReverse = false;

int nSpeed = 70;
String sMeg = "Switch : ";


void setup()
{
  Serial.begin(9600);
  pinMode(enablePin, OUTPUT);
  pinMode(in1Pin, OUTPUT);
  pinMode(in2Pin, OUTPUT);
}
 
void loop()
{
  
  if(Serial.available())
  {
    nSwitch = Serial.read();
  }
  
  if( nSwitch == '1')
  {
    bReverse = true;
  }
  else
  {
    bReverse = false;
  }

  setMotor(nSpeed, bReverse);
  Serial.println(sMeg + int(nSwitch) + ", Speed : " + int(nSpeed));
  delay(1000);
}
 
void setMotor(int nSpeed, boolean bReverse)
{
  analogWrite(enablePin, nSpeed);
  digitalWrite(in1Pin, ! bReverse);
  digitalWrite(in2Pin, bReverse);
}

 

 

업로드가 끝나면 모터가 돌기 시작합니다.

시리얼 모니터를 열고 '1'나 '0'을 입력하여 모터의 동작 방향을 바꿔봅시다.

 

동영상 중간중간 모터가 멈칫하는 순간이 있는데 이때가 반향전환을 할 때입니다.

 

3. 가변저항(potentiometer)을 이용하여 속도 조절 하기

가변저항의 값을 읽어 DC모터의 속도를 조절해 봅시다.

3-1. 보드 구성

이 부분은 이전 포스팅과 같습니다.

(참고 : [Arduino] ULN2004(ULN2003)를 이용한 DC 모터(DC Motor) 제어 )

 

 

DCMotor_002_003.fzz

 

가변저항의 전원과 접지는 반대로 해도 상관없습니다.

(값이 반대로 나올 뿐이죠 ㅎ)

 

 

3-2. 펌웨어 작성

이제 가변저항의 값을 읽어 모터의 속도에 적용해 봅시다.

 

int enablePin = 11;
int in1Pin = 10;
int in2Pin = 9;
int re = A0;

int nSwitch = 0;
boolean bReverse = false;

int nSpeed = 70;
String sMeg = "Switch : ";


void setup()
{
  Serial.begin(9600);
  pinMode(enablePin, OUTPUT);
  pinMode(in1Pin, OUTPUT);
  pinMode(in2Pin, OUTPUT);
}
 
void loop()
{
  
  if(Serial.available())
  {
    nSwitch = Serial.read();
  }
  
  //가변저항 값을 읽는다.
  nSpeed = analogRead(re) / 4;

  if( nSwitch == '1')
  {
    bReverse = true;
  }
  else
  {
    bReverse = false;
  }

  setMotor(nSpeed, bReverse);
  Serial.println(sMeg + int(nSwitch) + ", Speed : " + int(nSpeed));
  delay(1000);
}
 
void setMotor(int nSpeed, boolean bReverse)
{
  analogWrite(enablePin, nSpeed);
  digitalWrite(in1Pin, ! bReverse);
  digitalWrite(in2Pin, bReverse);
}

 

 

이제 가변저항을 돌리면 속도가 조절됩니다.

 

화면에 보이도록 속도 조절하느냐 고생했습니다 ㅜㅡ

 

4. 외부 전원 사용하기

이것도 이전 글과 같습니다 ㅎ

 

 

DCMotor_002_004.fzz

 

코드는 똑같습니다.

 

마무리

원래는 ULN2004칩을 가지고 양방향 제어를 해보려고 했는데 제가 전자 쪽은 잘 몰라서 모르겠네요 ㅡ.-;;;

하려면 할 수는 있을 것 같은데...

어찌됐건  L293B칩을 이용한다면 많이 비싸진 않기 때문에 상관없을 것 같기도 하고 애매합니다. ㅡ,.ㅜ

 

 



 

 

  1. kIIMO 2015.03.09 21:44 신고  Address  Edit/Delete  Reply

    안녕하세요 로리야스님!
    좋은 포스트 올려주셔서 스테핑 모터 부터 차근차근 따라하고 있는데요
    저번 글에서 ULN2004로 DC모터 제어하는 방법을 보여주셨는데
    양방향제어도 ULN2004로 가능한가요?? 아니면 L293D가 필요한지 궁금합니다~!

    • Favicon of http://blog.danggun.net BlogIcon 당근천국 2015.03.09 22:48 신고  Address  Edit/Delete

      검색으로는 자료를 찾지 못해 직접 ULN2004로 양방향 제어를 해보기위해 몇가지 테스트를 했는데 모두 실패 했습니다.
      결국 'L293D'로 양방향 제어를 했습니다;;;

    • kIIMO 2015.03.10 08:15 신고  Address  Edit/Delete

      방법이 없어서 엄청 막연했었는데 답변주셔서 감사합니다!ㅎㅎ

  2. 2015.04.26 17:45  Address  Edit/Delete  Reply

    비밀댓글입니다

    • Favicon of http://blog.danggun.net BlogIcon 당근천국 2015.04.26 18:13 신고  Address  Edit/Delete

      저도 데이터시트만 봐서는 잘 모르겠어서 검색을 좀 해봤습니다 ㅎㅎ

      L293B는 1A까지 공급가능하고
      L293D는 600mA까지 공급이 가능합니다.
      L293D에는 플라이백 다이오드(flyback diodes)가 포함되어 있다고 합니다. 플라이백 다이오드 덕분에 부품에 무리를 덜주겠네요.

  3. 2015.05.08 17:49  Address  Edit/Delete  Reply

    비밀댓글입니다

    • Favicon of http://blog.danggun.net BlogIcon 당근천국 2015.05.09 14:19 신고  Address  Edit/Delete

      L293D만 2개 사용하여 4개를 동작시키면 됩니다.
      구성자체를 이 포스팅과 동일하기 때문에 추가로 다른 부품을 사용할 필요는 없습니다.

  4. BlogIcon 신재영 2015.05.13 03:04 신고  Address  Edit/Delete  Reply

    제가 저 스케치대로 컴파일을했는데요
    소리만 윙윙 나면서 모터는 돌지 않더라구여..
    원인이 뭘까요 ㅠㅠ 모터가 문제인건지...
    제 친구 말로는 모터에 윤활유를 발라야 된다던데 맞나요???

    • BlogIcon 신재영 2015.05.13 03:05 신고  Address  Edit/Delete

      윙윙 소리만 나서 모터는 작동되는건 확인을했는데 너무 약하게 작동하는(?) 그런느낌에요요 전혀 돌아간다는 느낌이 안듭니다.

    • Favicon of http://blog.danggun.net BlogIcon 당근천국 2015.05.13 10:45 신고  Address  Edit/Delete

      전압과 전류 부터 체크해보시길 바랍니다.
      전압이 맞고 전류가 충분한대도 그런거면 전원에 직접 모터를 연결하여 테스트해보시고 전원에 직접 연결해도 같은 현상이 일어나면 모터가 문제일 가능성이 높습니다.

  5. BlogIcon jaeng 2015.05.28 10:49 신고  Address  Edit/Delete  Reply

    모터가 안돌아갑니다.
    똑같은 모터 구입했는데
    왜 안돌아가죠?
    2번 실습 입니다.
    똑같은 소스 복사하서 붙였는데 안돌아갑니다 ㅠ

    • Favicon of http://blog.danggun.net BlogIcon 당근천국 2015.05.28 10:53 신고  Address  Edit/Delete

      1번 테스트를 성공했는데 2번이 안된다는 건가요?

    • jaeng 2015.05.28 14:44 신고  Address  Edit/Delete

      1번테스트에서도 안돌아가네요...

      뭐가문제죠 ? ㅠㅠ

      다 똑같은것같은데...;

    • Favicon of http://blog.danggun.net BlogIcon 당근천국 2015.05.28 14:47 신고  Address  Edit/Delete

      그러면 모터를 전원에 직접 연결해보시고 그래도 안되면 전원이 잘못됐거나 모터에 문제가 있는것입니다.
      직접연결했는데 동작이 된다면 결선이 잘못된거죠 ㅎㅎㅎ

    • jaeng 2015.05.28 17:08 신고  Address  Edit/Delete

      직접 모터에 5v GND 연결했는데..
      정상작동하더라구여

      그래서 다시 1번 선 다시 빼고 연결했는데 역시나 안되요 ㅠㅠ,ㅠ

      뭐가 문제일까요..
      혹시 L293D가 문제일까여?

    • Favicon of http://blog.danggun.net BlogIcon 당근천국 2015.05.28 17:11 신고  Address  Edit/Delete

      1번 테스트 잘보고 처음부터 다시 연결해보세요.
      몇번 연결해도 같은 결과라면 칩이 망가진것으로 봐야 할것 같네요.

    • jaeng 2015.05.28 17:49 신고  Address  Edit/Delete

      감사합니다. 작동이되여!!

      그런데

      두개 동시에 돌릴려면
      INT3 INT4 에만 연결하면 되는건가요?

      양방향 제어 말구 그냥 동시에 두개 돌릴려고 하는데..

    • Favicon of http://blog.danggun.net BlogIcon 당근천국 2015.05.28 18:15 신고  Address  Edit/Delete

      같이 동작 시킬거면 같이 연결하시면되고요 두개를 각각 동작 시킬거면 9번 핀부터 15핀까지 똑같이 연결하시면 됩니다.
      (본문에 있는 회로도를 보시면 9번 핀부터 15핀까지대칭으로 되어 있습니다.)

  6. 2015.05.28 21:04  Address  Edit/Delete  Reply

    비밀댓글입니다

  7. Chan 2015.09.19 16:35 신고  Address  Edit/Delete  Reply

    안녕하세요~!
    2. 양방향 제어 에 대해 해보다가 잘 안되는 점이 있어서 질문 드립니다.

    양방향 제어에서 motorspeed를 당근천국님께서 설정한대로 70으로 할때는 모터가 돌지 않고 삐-소리만 났지만128이나 1023으로 설정했을경우는 회전을하더라구요. 왜 이런 현상이 일어나는 건가요??

    그리고 또한 시리얼 모니터에서 1을 입력하면 역방향으로 돌아야 하는데 역방향으로 도는 시간이 dealy(1000)으로 정의한 시간만큼 회전한 후 다시 정방향으로 회전하더라구요. dealy(9000)으로 하면 9초동안 반대방향으로 돌고 다시 정방향으로 돌아버립니다.
    1을 한번 입력했을때 계속 역방향으로 돌아가게 하려면 어떻게 해야할까요...?

    조언 좀 부탁드립니다.

    • Favicon of http://blog.danggun.net BlogIcon 당근천국 2015.09.20 00:06 신고  Address  Edit/Delete

      해당값을 수정하면 아두이노에서 출력되는 전압이 변경되면서 모터의 속도가 조절되는 것입니다.
      그러니 모터가 동작하기위한 최소전압~최대전압 사이에서만 모터가 동작하게 됩니다.
      최소전압보다 낮으면 동작을 안하거나 삐~소리가 날 수 있고 최대전압을 넘으면 모터가 타버립니다.

      역방향 정방향을 저장해둘 전역변수를 하나 선언하시고 if문으로 사용하여 정방향 역방향을 결정하여 돌리시면 됩니다.

  8. ㅇㅇ 2015.10.04 02:31 신고  Address  Edit/Delete  Reply

    시리얼 창에서 2번을 누르면 모터가 정지하게끔하려하는데

    bReverse를 0으로 선언해주면 되나요?

    • Favicon of http://blog.danggun.net BlogIcon 당근천국 2015.10.04 02:43 신고  Address  Edit/Delete

      nSpeed를 0으로 주는게 가장 간단하긴 합니다.
      'setMotor'를 수정하지 않으면 'bReverse'만 수정해봐야 의미가 없습니다.
      코드를 보시면 bReverse는 참이던 거짓이던 회전하게 되어 있습니다.
      정지용 매개변수를 추가하고 if문으로 분기해서 정시지키면 됩니다.

  9. BlogIcon ㅇㅇ 2015.10.07 19:49 신고  Address  Edit/Delete  Reply

    방향전환이 되긴하는데 시리얼 창에서 최초로 1을 눌러줬을때만 한번 바뀌고 그 이후엔 아무리 1을 보내도 모터의 방향이 전환되지 않고, nSpeed를 0으로 하여 2를 입력하면 멈추게끔 추가한것 밖에는 없습니다. 혹시나 싶어 제가 추가한 문구를 빼고 원래 코드대로 해봐도 한번만 전환되고 1을 넣어줘도 변환이 안되버리네요;;

    • Favicon of http://blog.danggun.net BlogIcon 당근천국 2015.10.08 03:12 신고  Address  Edit/Delete

      1을 입력할 때마다 방향을 전환하고 싶다면 1을 입력할때마다 'bReverse'값이 변하게 해주시면 됩니다.
      true - > false -> true
      본문의 코드는 1이외의 값은 모두 역반향이기 때문에 계속 1을 입력하는건 의미가 없습니다.
      1이 입력이 들어오면 'bReverse'값을 반전 시키면 쉽게 해결됩니다.
      if( nSwitch == '1')
      {
      bReverse = !bReverse;
      }

  10. 싱가폴유학생 2015.10.10 12:51 신고  Address  Edit/Delete  Reply

    안녕하세요 외국에서 독학하는 학생입니다.
    시리얼 모니터에 입력한 값으로 모터속도와 방향을 제어하려고 하는데

    범위는 -100 에서 100까지로 하고 받은값이 양수면 시계방향/ 받은값이 음수면 반시계 방향으로 돌리려고
    코드를 이렇게 썻습니다.

    if(Serial.available())
    {
    nSwitch = Serial.read();
    nSpeed = abs(Serial.read());
    }


    if( nSwitch > 0)
    {
    bReverse = true;
    }
    else
    {
    bReverse = false;
    }

    뭐가잘못됬는지 동작을 안하네요 ㅠㅠ
    혹시 좀 고쳐주실수 있으면 감사하겠습니다 부탁드립니다

    • Favicon of http://blog.danggun.net BlogIcon 당근천국 2015.10.10 13:00 신고  Address  Edit/Delete

      'Serial.read()'는 무조건 한바이트씩 값을 읽습니다.
      '100'은 3바이트 '-100'은 4바이트입니다.
      참고 : http://blog.danggun.net/1769

      이 코드대로라면 '100'을 입력하면
      'nSwitch'에 1이 들어가고 'nSpeed'에 0이 들어가고 루프가 돌면서 바로 'nSwitch'에 0이 들어갑니다.

      참고 링크에 보면 'Serial.read()'로 들어온 모든 값을 합쳐서 사용하는 방법이 나와있습니다.
      이걸 적용하여 숫자로 바꿔쓰시면 됩니다.

    • 싱가폴유학생 2015.10.10 13:53 신고  Address  Edit/Delete

      답변 감사합니다. 링크 걸어주신곳으로 들어가서 읽어보았는데
      단순히 serial read 대신에 serial peak 를 쓰면 해결되는것으로 이해하면 되나요?

    • Favicon of http://blog.danggun.net BlogIcon 당근천국 2015.10.11 20:50 신고  Address  Edit/Delete

      참고링크 한번 따라하시면 질문 안하셨을듯 한데 말이죠 ㅎㅎㅎ
      씨리얼에서 '100' 이라는 데이터를 날리면 '1', '0', '0'이렇게 읽어집니다.
      100으로 만들려면 합쳐야 겠죠?
      그게 링크에 나와있는 내용입니다.

  11. 그래그래비티 2015.11.22 12:59 신고  Address  Edit/Delete  Reply

    위 포스팅대로 그대로 따라해봤습니다

    그런데 모터가 작동을 안합니다 칩에서는 계속 삐소리가 나구요
    모터를 살짝돌려보니까 조금씩 도는 느낌은 들더라구요
    그래서 외부전력을 넣어줬더니 삐소리는 안나는데 그래도 모터가 안돕니다
    모터랑 칩은 다른걸로 테스트해봐서 문제는 없는것 같습니다
    왜이런 걸까요?

    • Favicon of http://blog.danggun.net BlogIcon 당근천국 2015.11.22 21:51 신고  Address  Edit/Delete

      '삐' 소리는 모터가 필요로 하는 전류보다 적은 전류를 공급할 때 발생하는 대표적인 증상입니다.
      이때 애매하게 전류가 부족하다면 손으로 돌리는 것 만으로도 모터가 돌기 시작하죠.

      첫번째로 모터에 직접 전원을 연결해서 테스트합니다.
      여기서 문제가 생긴다면 모터의 스팩을 확싱하시고 전압은 같게 전류는 높게 공급합니다.
      두번째로 '1.'에서 외부전원을 연결하여 테스트 해도 같은 증상이면 칩에 문제가 있는 것입니다.
      칩의 스팩을 확인하시고 사용가능한 칩인지 확인하셔야 합니다.
      'L293D'는 4.5V ~ 36V 범위에서 사용 가능합니다.

  12. Favicon of http://naver.com BlogIcon 김경환 2015.12.16 08:50 신고  Address  Edit/Delete  Reply

    저희 동아리가 초점 조절 장치를 만드는데, 10개의 구간으로 나누어서 정방향으로 회전시켜 각 구간에서의 CDS 값을 모두 받은후 최댓값을 가진 곳으로 역방향 회전을 시키려고 하는데
    int CDS = A0;
    int enablePin = 11;
    int in1Pin = 10;
    int in2Pin = 9;
    int Maximum;
    int time =8000;
    int nSwitch = 0;
    int nSpeed = 150;
    boolean bReverse = false;

    void setup(){
    Serial.begin(9600);
    pinMode(enablePin, OUTPUT);
    pinMode(in1Pin, OUTPUT);
    pinMode(in2Pin, OUTPUT);
    pinMode(CDS,INPUT);
    }
    void setMotor(int nSpeed, boolean bReverse)
    {
    analogWrite(enablePin, nSpeed);
    digitalWrite(in1Pin, !bReverse);
    digitalWrite(in2Pin, bReverse);
    }

    void loop(){

    if(Serial.available())
    {
    nSwitch = Serial.read();
    }

    if( nSwitch == '1')
    {
    bReverse = true;
    }
    else
    {
    bReverse = false;
    }


    setMotor(nSpeed, bReverse);
    delay(time / 8);
    int section1 = analogRead(CDS);
    delay(3000);
    Serial.println(section1);

    setMotor(nSpeed, bReverse);
    delay(time / 8);
    setMotor(0, bReverse);
    int section2 = analogRead(CDS);
    delay(3000);
    Serial.println(section2);

    setMotor(nSpeed, bReverse);
    delay(time / 8);
    setMotor(0, bReverse);
    int section3 = analogRead(CDS);
    delay(3000);
    Serial.println(section3);

    setMotor(nSpeed, bReverse);
    delay(time / 8);
    setMotor(0, bReverse);
    int section4 = analogRead(CDS);
    delay(3000);
    Serial.println(section4);

    setMotor(nSpeed, bReverse);
    delay(time / 8);
    setMotor(0, bReverse);
    int section5 = analogRead(CDS);
    delay(3000);
    Serial.println(section5);

    setMotor(nSpeed, bReverse);
    delay(time / 8);
    setMotor(0, bReverse);
    int section6 = analogRead(CDS);
    delay(3000);
    Serial.println(section6);

    setMotor(nSpeed, bReverse);
    delay(time / 8);
    setMotor(0, bReverse);
    int section7 = analogRead(CDS);
    delay(3000);
    Serial.println(section7);

    setMotor(nSpeed, bReverse);
    delay(time / 8);
    int section8 = analogRead(CDS);
    delay(3000);
    Serial.println(section8);

    if ( section1 < section2 ) {
    Maximum == section2; }
    else if ( section1 < section3 ) {
    Maximum == section3 ;}
    else if ( section1 < section4 ) {
    Maximum == section4; }
    else if ( section1 < section5 ) {
    Maximum == section5 ;}
    else if ( section1 < section6 ) {
    Maximum == section6 ;}
    else if ( section1 < section7 ) {
    Maximum == section7 ;}
    else if ( section1 < section8 ) {
    Maximum == section8 ;}

    if (Maximum == section8) {
    delay(1);}
    else if ( Maximum == section7){

    delay (time * 1/8); }
    else if (Maximum == section6) {
    setMotor(nSpeed, bReverse);
    delay (time*2/8); }
    else if (Maximum == section5) {
    setMotor(nSpeed, bReverse);
    delay (time*3/8); }
    else if (Maximum == section4) {
    setMotor(nSpeed, bReverse);
    delay (time*4/8); }
    else if (Maximum == section3) {
    setMotor(nSpeed, bReverse);
    delay (time*5/8); }
    else if (Maximum == section2) {
    setMotor(nSpeed, bReverse);
    delay (time*6/8); }
    else if (Maximum == section1) {
    setMotor(nSpeed, bReverse);
    delay (time*7/8); }
    }
    저희가 아두이노 초짜라 어떻게 해야할지 잘 모르겠네요.. 조언 좀 부탁해도 될까요..

    • Favicon of http://blog.danggun.net BlogIcon 당근천국 2015.12.16 11:28 신고  Address  Edit/Delete

      흠...뭐가 어떻게 안되는지 질문을 하셔야 답변 해드릴 수 있습니다.

      그런데 초점조절장치면 정확도가 어느정도 있어야 할텐데 dc모터로 가능할까요?
      앵간하면 서보모터를 쓰시고 회전이 많다면 못해도 스탭핑모터는 쓰셔야 역방향으로 돌릴때 원하는 만큼 돌릴 수 있을 텐데 말이죠.,

  13. 내일하루 2016.02.28 00:20 신고  Address  Edit/Delete  Reply

    안녕하세요 좋은 포스팅 너무 감사합니다.
    다름이 아니라 방향제어에서 조금 문제가 생겨 질문드리려고하는데
    위의 코드대로 실행한 결과 모터가 1이 입력되었을때는 정지하고 0을 입력하였을때는
    작동을 합니다. 즉 1과 0을 번갈아 입력하면 모터가 멈춰있다가 작동하게 됩니다.
    이문제를 해결하는데 조언을 얻고자합니다ㅠㅠ

    • Favicon of http://blog.danggun.net BlogIcon 당근천국 2016.02.29 02:58 신고  Address  Edit/Delete

      증상만 봐서는 배선이 잘못된거 같은데요.
      '1-2'을 직접 해보시고 정상적으로 역방향으로 회전하는지 확인해 주세요~

  14. ㄱㄴㅇㄹ 2016.10.04 21:26 신고  Address  Edit/Delete  Reply

    좋은글 감사드립니다! 그런데 질문이 있습니다.

    만일 가변저항기를 빼고 회로도를 그리게 된다면, 아두이노 보드에 과전압이 걸려 문제가 생기나요?

  15. dfdf 2016.11.21 23:25 신고  Address  Edit/Delete  Reply

    혹시 이 L293D 모듈로 모터를 연결하고 제어 했을 때 그 힘은 어느정도 일까요? 조그마한 체인의 중간에 끼우고 싶은데

    그 정도 힘이 나올까여? 아니면 그 힘을 증폭시킬 방법이 따로 있을까요?

    • Favicon of http://blog.danggun.net BlogIcon 당근천국 2016.11.22 10:28 신고  Address  Edit/Delete

      토크는 드라이버를 따라가는게 아니고 모터를 따라갑니다.
      이 칩을 가지고 사용할 수 있는 모터 리스트를 뽑아보시고 원하는 토크를 찾으시면 됩니다.

댓글 작성

이름
패스워드
홈페이지
비밀글

티스토리 툴바