본문 바로가기
PLC 자동제어 학습/아두이노 보드 수업

아두이노 보드를 이용한 스탭모터의 정,역회전 제어

by 인터넷떠돌이 2018. 2. 18.
반응형

안녕하세요?


지난번 포스팅에서 이미 완성된 스텝모터의 모듈을 가지고서 실습을 해보았다면, 이번 시간에서는 이 스텝모터를 직접 다루는 것으로 실습에 들어가게 되었습니다. 



먼저 이번 실습에 사용이 된 스텝모터입니다. 이 모터는 2상 모터라고 해서, 정밀도가 좋은 편에 속하며, 200펄스를 줄때마다 1회전 한다고 합니다. 그리고 위치제어를 위해서 디코더를 비롯한 추가장치가 불필요 하다는 특징이 있다고 합니다.



그리고 위 사진에서 보여주고 있는 것이 스텝 드라이버라고 하는 장치로, 스텝모터의 회전에 관여하는 복잡한 작업을 대신 해 준다고 합니다.



실제로 위에 나와 있는 스텝 드라이버의 소켓에다가 PLC나 아두이노 보드의 5~24V의 전류를 입력하면 이 장치가 알아서 작동을 다 해준다고 합니다. 하지만, 이번 실습에서는 이 스텝 드라이버의 역할을 아두이노 보드 안에서 다 한다고 보시면 됩니다.



이제 2상 스텝모터의 결선도입니다. 이게 원래는 국제표준이 나와서 다 똑같으면 좋겠지만, 실제로는 회사마다 달라서, 일일히 확인해야 하는 단점이 있습니다. 일단 이번 실습에서 사용한 스텝모터에는 이렇게 결선을 하도록 되어 있습니다.




일단 아두이노 보드에서 어떻게 delay값을 주어서 주파수를 생성 하는지를 보여주고 있습니다. 간단하게 처리를 하자면, 1000밀리초당 원하는 주파수를 나누어서 이 값의 절반을 delay에 입력하는 것으로 원하는 주파수를 생성 할 수 있다고 합니다.



다음은 L293의 IC칩으로 아두이노 보드에서 나오는 약한 전류를 증폭시켜 주는 역할을 합니다. 이 외에도 L293D, L293B, L293A라는 종류도 있다고 합니다.


L293 : 1A 로 증폭

L293D : 600mA 증폭

L293B : 1A로 증폭

L293N : 2A로 전류를 증폭


이러한 특징이 있다고 합니다.



이것으로 스텝모터를 브레드 보드를 이용해서 결선을 하였습니다. 이렇게 결선을 한 다음에, 이제 돌리는 문제가 남아 있는데, 일단 1상 여자운전 이라고 해서 힘이 약하고 탈조현상이라고 해서 모터가 진동을 일으키는 현상이 벌어진다고 합니다. 아무튼 일단 1상 여자 운전은 다음과 같이 일어난다고 합니다.



위 그림처럼 4개의 펄스가 1개의 셋트가 되어서 1상 여자운전을 한다고 합니다. 다만 여기서 주의할 점은 펄스 하나가 떨어지자마자 바로 다음 펄스가 오기 때문에, delay에 들어가는 값을 1/2할 필요도 없기 그냥 delay를 입력하면 됩니다.



그래서 먼저 1상 여자운전을 통해서 정회전을 시키는 코드를 아두이노 IDE에서 만들었습니다.




그리고 속도를 줄이기는 했지만, 속도가 너무 느려도 탈조 현상이 벌어지는 것을 볼 수있었습니다.



이제 2상 여자운전에 대한 것입니다. 다른 것처럼 하나하나가 1개의 펄스로 4개 펄스가 한 세트로 구성되어 있는 것도 똑같고, 2상이라고 불리는 이유가 H가 한개의 펄스에 2개 들어가기 때문이라고 합니다. 탈조현상도 적고, 더 힘이 좋기는 하지만, 전력의 소모가 더 많은 것이 흠이라고 하기는 합니다.



일단 2상 여자 운전을 위해서 코딩을 했고, 변경점이 바로 위에서 오렌지색 선으로 표시가 되었습니다.



그리고 delay를 10으로 주어서 100Hz라고 2상 스텝모터의 최대 속도로 회전을 시키는 운전을 했습니다.



다음으로는 중요한 것으로, 일일히 이렇게 1상이든 2상이든 이 운전코드를 모두 일일히 타이핑 할 수는 없기 때문에, 여기서는 사용자 정의 함수를 만들어 놓도록 했습니다.




실제로 정회전을 2바퀴 돌리고, 역회전을 3바퀴 돌리는 코드인데, 상당히 간결하게 처리가 된 것을 볼 수 있습니다.



그런데 회전수도 50 X 횟수라는 것이 있기 때문에, 이 회전수 역시 함수에 집어 넣을 수 있습니다. 그래서 더 사용자 정의 함수를 더 복잡하게 만들어 놓고 나서.........



그래서 loop 함수 안에서는 더 더욱 간결하게 된 것을 볼 수 있었습니다. 역시 사용자 정의 함수(int 1번, int 2번) 이라는 것으로 임의의 함수에 변수가 2개 들어가게 할 수도 있다는 것을 보여줄 수 있었습니다. 이제 마지막으로 실제로 스텝모터를 제대로 돌렸는지 여부를 보여 드리기 위해서 동영상을 올리는 것으로 마무리를 하겠습니다.



탈조현상 없이 제대로 돌아가는 것을 보여주고 있습니다. 이번 수업시간에는 이 아두이노 보드를 이용해서 이렇게 하는 것이라는 것을 보여주었는데, 다음 시간에는 본격적으로 더 세밀한 제어에 들어갈 것으로 생각이 듭니다.


반응형