반응형

https://youtube.com/live/BZSIKZ_SIjk

[아두이노#606] Arduino에 encoder가 달린 JGA25-370모터를 l298n으로 제어하고 속도(RPM)측정해보기!(녹칸다의 아두이노 시즌2)

녹칸다의 아두이노 시즌2 시리즈이다!

이번편은 아두이노보드에 L298N을 이용해서 DC모터를 제어해보도록 한다!
DC모터를 제어하는 것은 이전에도 많이 했지만 차이가 있다면 12V모터는 처음 등장했다!
(컨베이어밸트가 24V였던것은 잠시 잊기로함)

이번에 사용할 모터는 엔코더가 달려있어서 회전방향과 회전량을 아두이노가 측정할 수 있다!

아주 오래전 녹칸다의 로터리엔코더 시리즈가 있었는데 그때 지식을 활용하면 도움이 될 것 같다!
하지만 엔코더 라이브러리를 이용하면 조금더 편하게 할 수 있으니 라이브러리를 활용하도록 한다!

아두이노로 DC모터의 속도를 제어하고 현재 속도를 측정해보는게 이번편의 주요내용이라 할 수 있다!

최종적으로는 속도를 PID제어하는 것까지 빌드를 올려볼 생각이니 차근차근 예제를 만들어보도록 한다!

(모터 커넥터)
빨간선 : 모터+
흰색선 : 모터-
노란선 : 엔코더
녹색선 : 엔코더
파란색 : 엔코더+
검정선 : 엔코더-

(필요한라이브러리)
1.Encoder(1.4.4버전)
2.TM1637

(깨알지식)
1.모터제어를 위한 빨간선 흰선하고 엔코더값을 읽기위한 노란선, 녹색선, 파란선, 검정선은 전혀 다른 역할은 한다!
2.모터는 +,-가 개념적으로 존재하고 반대로 연결해도 회전방향이 반대가 될뿐 아무런 문제가 없다!
3.노란선과 녹색선에 홀센서가 부착되어있고 모터가 회전하게 되면 사각펄스가 발생하게 되는데 이때, 사각펄스의 위상차를 이용해서 회전방향을 감지하고 단위시간의 펄스 갯수를 측정해서 RPM을 계산한다!
4.엔코더의 값을 측정하는 부분은 encoder라이브러리를 이용하도록 한다!(녹칸다의 로터리엔코더 시리즈를 참고해도 구현가능하다)
5.basic라이브러리를 이용해서 측정된 값을 보면 회전량과 속도, 이동량등을 측정할 수 있을 것 같다!
6.모터의 바퀴가 1회전했는데 엔코더 값은 대략 900정도의 값이 나온다! 이것은 모터에 감속기어가 장착되어있기 때문에 바퀴는 1회전하더라도 내부의 모터는 더많이 회전하게 된다! 회전하는 디스크에 자석은 11개 부착되어있지만 바퀴 1회전시 디스크는 기어비에 의해 더 많이 회전하게 되므로 원래는 11이 나올 것 같으나 900이 나오는 상황이다!
7.현재 엔코더량을 초기화시키는 코드 myEnc.write(0); 

(예제목차)
1.모터의 엔코더부분을 아두이노에 연결하고 회전방향과 회전량을 측정하시오!

606-1(모터의회전방향과회전량측정하기).txt
0.00MB

 

2.모터드라이버를 이용해서 모터를 제어하고 그때의 엔코더량을 측정하시오!
   -시리얼모니터에서 1을전송하면 시계방향으로 회전, 2를 전송하면 반시계방향으로 회전, 0을 전송하면 정지하도록 하시오!

606-2(모터드라이버로제어하기).txt
0.00MB

 

3.엔코더를 이용해서 RPM값을 측정하시오!

606-3(속도측정하기).txt
0.00MB

 

4.아두이노의 8번 9번 10번핀에 버튼을 1개씩 연결하고 8번버튼은 정회전, 9번버튼은 정지, 10번버튼을 누르면 역회전하도록 하시오!(속도는 최대속도)

606-4(버튼으로제어하기).txt
0.00MB

 

5.가변저항을 아날로그0번핀에 연결해서 정회전, 역회전일때 속도값으로 활용하시오!

606-5(가변저항으로속도제어하기).txt
0.00MB

 

6.FND모듈인 TM1637에 현재 RPM값을 출력하시오!

606-6(TM1637에RPM표시하기).txt
0.00MB

 

------------여기까지가 원래 녹칸다가 할려고했던내용-----
7.모터가 최대속도를 유지하면서 지정된 위치로 이동될 수 있도록 하시오!

606-7(실험적인위치제어).txt
0.00MB

반응형
Posted by 덕력킹
,