본문 바로가기
카테고리 없음

[7월] 7/8 금요일 myRIO L12-20PT-3 모터 최대 최소 stroke로 제어

by 9루트 2022. 7. 8.

myRIO와 모터 사이 점퍼선을 어떻게 연결해야 할지 몰라

아래 영상을 참고하였다.

https://youtu.be/QXHe0DFbUdc

 

 

 

직접 연결해보았다. 

 

 

Configure myRIO 클릭

myRIO의 I/O 상황을 모니터링 해본다.

27번 - PWM0

6번 - GND

1번 - VCC

로 연결해보도록 한다. (영상과 같음)

 

오 이런 매력이 있구나

방탈출 게임처럼 선임님이 예전에 줬던 힌트를 복기하면서

퍼즐이 맞춰지는 기분이다.

캐스트를 깨는 기분

 

재밌네

 

 

 

하던 중에 voltage가 안들어와서 고민에 빠졌다.

 

그 중에 항상 왜 AC 와 DC를 따로 쓸까에 대해 의문이 있어 호기심에 찾아보았다.

교류와 직류의 장점과 단점

우리 주변에서 컨버터라고 자주 볼 수 있습니다. 컨버터는 교류를 직류로 바꾸어 주는 것입니다. 주로 노트북에 AC 어댑터라고 볼 수 있습니다. 반대로 직류를 교류로 바꾸어 주는 것은 인버터입니다. 직류와 교류의 장점 단점이 뚜렷한데 먼저 직류는 전류의 방향이 일정하기 때문에 전압의 세기가 일정하여 전기 제품에 손상이 거의 없고 저장이 용이하고 휴대하기 편리하다는 장점이 있습니다. 하지만 직류 형태로 에너지를 발생시키려면 발전기의 구조가 복잡하고 장거리 송전이 어렵습니다. 교류는 매우 간단한 구조로 교류 발생기를 만들 수 있으며, 변압기를 통해 쉽게 전압을 높일 수 있어서 장거리 송전이 가능하다는 장점이 있습니다. 또한 직류로 변환이 쉬워 우리 일상생활에 쉽게 찾아볼 수 있습니다. 하지만 교류 에너지를 저장하기 위해서 직류 형태로 바꿔 저장을 하거나 운동에너지 형태로 바꿔서 저장을 해야 하기 때문에 이 과정에서 손실이 생길 수 있어 저장이 쉽지 않습니다. 또한 전압의 세기가 고르지 않아 전기 제품에 손상을 줄 수 있습니다.

출처: https://yeji1214.tistory.com/40

 

멀티미터기로 측정해보니

pin1(VCC)과 pin6(GND)은 약 4.98V가 나왔다.

흠 그런데 왜 안들어오는 걸까

 

혹시 브레드 보드가 고장 났나 .. 

했더니

 

역시 도구탓하기 전에 나를 돌아봐야 한다.

위에 울고 있는 복숭아 캐릭터에 점퍼선을 연결해놓고 왜 전압이 안 들어오지 하고 있었다ㅋㅋㅋㅋ 

 

히히 또 한번 캐스트 깼다.

 

모터에 빨간 불은 들어왔는데

코드를 실행하니 동작하지 않는다.

 

 

왜 그럴까

LED 빨간 불빛이 계속 BLINK 한다.

뭔가 경고하는 건가..

하고 worksheet를 찾아봤더니

전압 공급에 에러가 생긴 것이다.

원인을 살펴보니 

9-13V를 넣어야 했으므로

5V와 3.3V만 공급되는 myRIO에서는 불가했다.

 

따라서 Power Supply가 필요했다.

power supply로 12V를 공급하니 파란 불이 깜빡인다.

음 range error, 즉 data map을 벗어난 범위에 있는 경우 파란색 LED가 깜빡인다고 한다.

 

 

그렇다면 이제 리니어 모터의 최대 최소 길이의 차이인 stroke를 알아보기 위해 

data sheet를 찾았다.

 

27mm인 storke  기준 PWM 

 

이 데이터를 이해하는 것이 관건이다.

 

4ms, 즉 1/0.004 = 250Hz이하인 주기에서 동작한다.

 

나오는 모터 길이에 따른 주기 상의 시간을 나타낸다.

 

아래 블로그 참조

https://blog.naver.com/yuyyulee/220345769854

 

stroke로 조절하도록 바꾸어 주었다. 

와 원인을 찾았다.

 

원인은 두 가지이다.

첫번째, 그라운드를 통일하지 않았다. 

myRIO의 GND와 모터의 GND가 같도록 만들어야 한다.

좀.. 조잡스럽지만 ㅎㅎ

두번째, duty값을 넣을 때 0-1 단위로 넣어야 하는데 0-100 [%]로 넣어버렸다. 

해당 myRIO에서 PWM 제어를 할 때 duty값을 0-100이 아닌 0-1로 넣어줘어야 했는데

너무도 자연스럽게 % 단위로 넣어주고 있었다.

 

 

 

고로 100을 곱한 부분(②)은 인디케이터 쪽으로 빼준다.

그리고 코드에서 이해 하지 못했던 부분(①)은

0.9ms(=900us) ~ 1.980ms(=1980us)를 주기(HZ → ms)로 나눠준다.

바로 이것은 주기 중에 얼마 만큼 stroke가 위치하는 지 비율인

duty를 의미한다. 물론 여기서 duty는 0부터 1까지의 크기라고 생각한다.

 

 

 

로 작동된다.

 

 

 

 

 

 

이게 정확히 최대 최소 인 건 데이터인지는 확인할 방법이 없을까.

 

다음 포스트는 모터를 sine 파형으로 제어하는 것으로 해보겠다.