멀티스텝 모터 제어

만나서 반갑습니다。다중 스텝 모터를 내가 원하는 길이만큼 제어하는 방법에 대해 공유드립니다.먼저 제가 코딩한 소스를 공유합니다. 첨부 파일 Step_Motor_Controller_20201.ino 파일 다운로드 내의 컴퓨터를 저장네이버 MYBOX에 저장재료는 아래와 같습니다.1602 LCD i2C 1개, 2채널 모터 드라이브 2개, 스텝 모터 2개, 아두이노 프로미니 1개, 로터리 엔코더 스위치 1개, 5V SMPS 1개, 6V SMPS 1개사진을 보면서 어떻게 길이를 제어할 수 있는지 함께 설명해 보세요.우선 왼쪽과 같은 모터를 오른쪽과 같이 샤프트의 풀리를 제거해 보겠습니다.아래와 같이 바이스에 물려 볼트와 너트를 이용하여 제거하였습니다.일반 소형모터는 코일이 소손될 수 있으므로 피해야 할 방법이며, 내부구조를 한번 보시고 보강이 잘된 모터라면 이렇게 풀리를 제거해도 무난하다고 판단하고 있습니다 ^^나는 1.8도씩 회전하여 총 200번의 명령이 내려지면 360도 회전하는 스텝 모터를 활용했습니다.200 x 1.8 = 360 제어 전원은 DC6V로 유니폴라 방식의 스텝 모터입니다.(3상6선) 유니폴라 방식의 장점이 바이폴라 방식에 대응하므로 2상4선식으로 사용하셔도 무난합니다.아도우이노은 프로 미니를 사용하고 있으며 DC 5V버전입니다.나는 스텝 모터를 2가지 제어하기 위해서, 1개의 모터당 바이폴라 방식으로 4선씩 8핀을 소진했습니다.오른쪽 4개의 하얀 선은 로터리 엔코더 스위치 결선입니다.GND와 2번이 스위치에서 3번과 4번이 엔코더 접점입니다.아시는 분도 계시겠지만, 왜 2번과 3번을 인코더의 접점으로서 활용하지 않았는지 의문에 생각하시는 분도 계실 겁니다.그것은 제가 가지고 있는 로터리 엔코더가 2번과 3번을 함께 사용할 경우 스위치의 접점에 영향이 발생하고 피했습니다.LCD는 A4, A5번과 VCC, GND에 접속하세요.2채널 모터 드라이브 1개에 일반 DC 모터라면 2개이므로 2개 연결할 수 있다고 생각합니다만.스텝 모터는 최소 바이폴라 방식으로 4선이 필요하므로 2채널 모터 드라이브 하나로 스텝 모터 하나를 제어할 수 있게 됩니다.모터 드라이브 아래쪽에 +, – 는 모터를 구동해 주는 DC 6V를 입력해 주세요.(스텝 모터가 DC 6V이기 때문에)제가 올린 Arduino소스를 올리면 아래와 같은 화상이 구현됩니다.나는 스텝 모터 축경을 7mm로 개조하고 소스를 적용했습니다.원의 지름을 구하는 공식이 쉽죠?2π R=2×3.14x원의 반지름 스텝 모터는 1.8도의 회전 뿔이 있었고 360도 회전하려면 200번을 움직여야 합니다.두 공식을 합치면 7mm축이 1회전하면 21.98mm로 21.98mm를 200회 나누면 0.1099이니까, 예를 들면 스텝 모터가 1mm를 이동하려면 1mm에 0.1099를 나누면 스텝 모터의 회전치가 됩니다.1mm/0.1099=9.099이 잘 이해하지 못하면 반대로 계산하고 보면 곧 이해합니다.21.98mm가 7mm축의 360번이었기 때문에 21.98mm를 0.1099로 나누면 스텝 모터 360도 회전치의 200이 나옵니다.내가 올린 Arduino 소스를 올리면 아래와 같은 이미지가 구현됩니다.나는 스텝 모터의 축 직경을 7mm로 개조하여 소스를 적용했습니다.원의 지름을 구하는 공식은 간단하죠?2πR=2×3.14x원의 반지름 스텝 모터는 1.8도의 회전각이 있으며 360도 회전하려면 200번을 움직여야 합니다.두 공식을 합하면 7mm 샤프트가 1회전하면 21.98mm이고 21.98mm를 200회 나누면 0.1099이므로 예를 들어 스텝모터가 1mm를 이동하려면 1mm에 0.1099를 나누면 스텝모터의 회전값이 됩니다.1mm / 0.1099 = 9.099를 잘 이해하지 못하면 거꾸로 계산해 보시면 금방 이해하실 겁니다.21.98mm가 7mm 샤프트의 360도였기 때문에 21.98mm를 0.1099로 나누면 스텝 모터 360도 회전 값 200이 나옵니다.