본문 바로가기

로봇 만들기 - AVR

DC Mouse 4. 거리 측정 센서 설치 주의사항 마우스가 벽과의 거리 측정을 위해 샤프 적외선 센서를 사용한다. 기존 마우스의 센서에 대한 글과 내용은 동일하나 디버깅하면서 알게된 내용을 추가한다. Mouse 3. 적외선 거리 측정 센서 연결 기존 마이크로마우스들이 사용하던 광량형 센서는 만들기도 어렵고, 펄스 구동 및 셋팅 구현이 어렵다.(고 알고 있다) 현재는 적외선 거리 측정 센서를 저렴하게 구할수 있으므로 사용하기로 한다. 여러가지 범위.. maxpulse.tistory.com 결론부터 말하면, 적외선 거리 측정 센서를 세로로 사용할 때 발광부가 위쪽으로 가도록 설치해야 한다. 처음 로봇을 만들때 센서의 선 정리를 편하게 하기위해 선이 중앙으로 모이도록 센서 하나는 발광부가 아래쪽으로 가도록 부착했다. 이후에 동작을 확인하는 도중 한쪽 센서 앞.. 더보기
DC Mouse 3. 아두이노 DC 모터 PID 제어 아두이노 나노로 모터 2개의 엔코더 입력에 문제없음을 확인함 (DC Mouse 2 참조) PID 제어를 구현해본다 마이크로 마우스에서 직진과 회전 구간을 구분해서 동작하는데 직진 구간에서는 벽에 부딪히지 않도록 양쪽 바퀴의 속도 제어를 하면서 움직이고, 회전 구간에서는 정확한 각도만큼 회전할 수 있도록 모터의 각도 제어를 해야 한다. 1. 속도 제어 PID는 에러를 측정하고, 그 에러의 양 자체(P), 에러의 누적량(I), 에러의 변화량(D)을 이용해서 제어하는 것 따라서 무엇을 에러로 정할 것인지가 중요하다. 속도 제어를 할 때는 당연히 에러는 속도가 된다. 속도 측정 방법은 예전 글 참조 -> https://maxpulse.tistory.com/148 모터의 속도와 타이머 설정에 따라 M, T, M/.. 더보기
DC Mouse 2. 아두이노 나노로 DC 모터 2개 엔코더 값 입력 받기 마우스를 만들기 위해서는 DC 모터 2개를 제어해야 한다. 이때 모터의 회전 속도/회전 각도를 측정해야하므로 엔코더를 사용해야 하는데 일반적으로 외부 인터럽트를 사용한다. 그러나 아두이노 나노는 외부 인터럽트가 2핀 뿐이므로 PCINT (Pin Change Interrupt)를 사용하기로 했다. PCINT 는 특정 핀의 상태 변화를 체크하는 것으로 외부 인터럽트와 유사하다. 다만, 외부 인터럽트는 핀의 상태 변화 (Edge : Low -> High or High -> Low) 혹은 상태를 지정할 수 있는데 반해서 PCINT 는 상태가 변할때만 인터럽트가 발생한다. 또한 한 핀당 하나의 ISR(인터럽트 서비스 루틴 : 인터럽트 발생시 수행되는 함수)이 있는 것이 아니라, 여러 개의 핀의 변화가 하나의 IS.. 더보기
DC Mouse 1. DC Motor 를 이용한 마이크로 마우스 제작 알리 익스프레스에서 작은 로봇 프레임을 구입 꼭 마이크로마우스를 만들려고 샀던 것은 아닌 것 같으나 로봇의 지름이 10cm 정도로 마우스하기 적당하다 다만, 모터에 엔코더가 없다. 그런데 이 프레임은 dfr robot 사의 miniq라는 로봇 키트와 모터와 바퀴가 같다 그래서 아래 그림과 같은 엔코더를 구입했다. 사진을 보면 바퀴에 튀어나온 하얀 부분을 안쪽에 적외선 센서로 감지하는 방식이고 옆에 있는 십자 모양의 나사를 돌려서 감도를 조정한다. 왠지 좋아보여서 구입했는데 별로 좋지 않다. 우선 바퀴 한바퀴에 슬릿이 12개이므로 최대로 해도 48 펄스에 한바퀴이다 그리고 센서 감도를 맞춰야 하는데 오실로스코프가 필요할 듯 하다. 센서값을 출력하면서 모터를 회전시켜 펄스가 나오게 하긴 했는데 정확한지 알수.. 더보기
5. Mouse PCB 주문 (Fritzing) 처음에는 만능기판에 납땜해서 만들었는데, Fritzing 이라는 툴을 사용해서 PCB 를 만들기로 했다. 빵판 사용에 익숙하면 그리기 매우 쉬울 것이다. 빵판에 부품을 배치하고, 배선을 한다. 아무것도 연결 안된 부품은 다른 용도가 있다 저상태로 PCB 탭으로 변경한 다음 오토라우터하면 회로가 나오고, 그걸 이리저리 클릭해서 모양을 이쁘게 해주면 된다. (실제로 좀 해보면 간단) 그런데 난 다른 부품을 납땜하기 위한 포인트와 일부분을 만능기판으로 사용하기 위한 영역이 필요했다. 납땜하기 위한 포인트는 pad 만능기판 용도로 쓰기 위해서 핀 헤더를 쭉 깔아줬다. 각종 부품이나 와이어의 세부 설정은 "인스펙터" 창을 이용한다. 부품의 앞뒷면, 와이어의 폭, 헤더 핀 같은 경우는 길이 등등... 필요한 부품이.. 더보기
Mouse 4. 몸체 조립하기 "마이크로 마우스 바디"로 검색하면 아직도 판매하고 있는 스텝모터와, 알루미늄 프레임, 바퀴, 볼캐스터가 포함된 셋트를 구매. 알루미늄 프레임이 재고가 별로 없는 것 같은데, 스텝모터와 바퀴, 볼캐스터는 판매(디바이스 마트)가 되므로 적당히 판재를 가공하면 제작에 큰 문제는 없을 것 같다. 스텝모터는 3D 프린터용을 사면 저렴하고, 알루미늄 프레임의 폭이 66~68mm 정도이므로 스텝모터의 두께가 33mm 정도 인 것을 구매한다. 스텝모터 두께가 약간 두꺼운 경우에는 알루미늄 프레임을 살짝 벌려서 조립이 가능 센서 부착 샤프 적외선 센서는 양 옆에 나사 구멍 같은걸 자르면 길쭉한 사각형 형태라서 센서가 좌우와 전방을 보도록 적당히 양면테이프 등으로 접착해도 된다. 하지만, 정확히 고정이 되도록 3D 프린.. 더보기
Mouse 3. 적외선 거리 측정 센서 연결 기존 마이크로마우스들이 사용하던 광량형 센서는 만들기도 어렵고, 펄스 구동 및 셋팅 구현이 어렵다.(고 알고 있다) 현재는 적외선 거리 측정 센서를 저렴하게 구할수 있으므로 사용하기로 한다. 여러가지 범위의 거리 측정이 가능한 센서들이 있으나 4~30cm (GP2Y0A21YK0F)가 적당한 것으로 생각한다. 2~10cm를 측정하는 센서가 있는 것 같은데 전체적인 크기가 작아 나쁘지 않을것으로 생각되나 가격이 상대적으로 비싼편이고, 센서를 로봇 안쪽에 설치하면 4cm의 최단 거리도 문제가 될 수준은 아니기 때문에 저렴한 GP2Y0A21YK0F 센서를 선택함 출력 그래프를 보면, 3cm 정도일때 최대 전압이 출력된다. 센서가 로봇의 바깥쪽에 있으면 로봇이 벽에 가까워졌을때 오히려 더 멀리 있다고 판단할 수 .. 더보기
Mouse 2. 스텝 모터 연결 스텝모터를 사용하는 마우스나 라인트레이서 같은 경우 SLA7024 or SLA7026 이라는 스텝모터 드라이버를 많이 사용했다. 유니폴라 방식으로 진동이 적고 고속에 유리하다라고 했던것 같다. 그러나, 간단하게 만드는 것이 목표이므로 키트 형태로 구할수 있는 스텝모터 드라이버가 필요했고, L298N 을 사용하기로 한다. 보통 DC 모터 제어용으로 많이 사용하지만, 스텝모터 제어용도로도 사용가능하며, 4선으로 모터를 제어하므로 드라이버 한개당 DC 모터는 2개, 스텝모터는 1개가 제어가능하다. 위의 이미지에서 잘 보면 초록색 드라이버 중간에 흰색 부품(커넥터)이 있다. 이 초록색 드라이버에만 스텝모터 선을 바로 끼울수 있다. 사실 옆에 파란색 잭에 스텝모터 선의 피복을 벗겨서 연결하면 되지만, 스텝모터를 .. 더보기