오늘은 리니어 액츄에이터가 부딪히지 않게 양 끝에 포토센서를 장착해서 모터를 제어하는 법을 알아보겠습니다.
사용 제품은 미스미의 C-MSX671N-2M 제품입니다.
제품 사진은 다음과 같습니다.
선은 4가닥으로 되어있습니다.
포토센서는 빛을 내보내는 광원과
빛을 받는 수광부로 이루어져 있습니다.
빛을 내보낼 수 있도록 전원을 주고
수광부에서 빛이 들어오는지 여부에 따라 출력이 바뀌는 형태의 센서입니다.
미스미 홈페이지에서 제공하는 도면을 보면
갈색이 전원, 남색이 그라운드
흑색은 차광시 전원이 들어오는 선, 흰색은 입광시 전원이 들어오는 선이라고 되어있습니다.
확인 결과 다이오드를 연결해보면 위처럼 움직이지만
핀의 전압출력은 반대로 흰색선이 차단됐을 때 전압이 나오고,
검은색 선은 빛이 들어올 때 전압이 나오는 것을 확인했습니다.
(아마 회로 상 그렇게 설계된 거 같은데 회로까지는 제가 정확히 몰라서 그냥 그런갑다 하고 넘겼습니다.)
그리고 NPN식이기 때문에 출력선으로 가기 전에 부하를 연결해줘야 합니다.
저는 빛이 차단됐을 때(리니어 액츄에이터가 끝부분에 도달했을 때) 신호가 나오게 흰색 선을 이용하려고 합니다.
그리고 출력 신호가 나오면 이를 STM32 GPIO Input에서 감지해서 모터를 멈추도록 하였습니다.
STM32에서 GPIO신호를 입출력하는 방법은 이전 게시물을 확인하면 알 수 있습니다 :)
연결은 갈색선(SMPS 5V) → 부하(SMT32는 3.3V를 최대로 받을 수 있기 때문에 그보다 낮추기 위해 330옴짜리 저항을 이용했습니다. ) → 흰색선 → STM32 GPIO Input으로 연결해주었습니다.
그라운드(남색선)은 STM32의 GND와 연결해주었습니다.
연결 사진은 다음과 같습니다.
저는 포토센서 두 개를 쓰기 때문에
가로로 긴 쪽에 전원과 그라운드를 연결해 놓고
세로로 연결 가능한 쪽으로 두 개를 빼내서 같은 회로를 두 개 만들었습니다.
STM32 설정은 이전에 포스팅 한 글과 거의 비슷하고
(ioc에서 노는 핀 하나를 input으로 설정, 세부 설정 → pull-up으로 설정)
GPIO 입력을 받는 코드는 쓴 적이 없어서 새로 찾아봤습니다.
입력 신호가 들어왔을 때
if(HAL_GPIO_ReadPin(GPIOC,GPIO_PIN_7)==1)
속도를 0으로 멈추고, 진행 방향을 반대로 바꾸어 줬습니다.
{
VR=0;
DIR=0;
}
잘 작동하네요! :)
'정나우 > STM32' 카테고리의 다른 글
산업용 모터 엔코더 값 받기 (0) | 2023.05.20 |
---|---|
STM32로 산업용 모터 제어하기 (2) | 2023.02.10 |
산업용 모터 작동을 위한 STM32 설정 (0) | 2023.01.17 |
댓글