[ 41 호 ] ABT _ System ( Automatic Bicycle Transmission System ) | NTREXGO - 디바이 스마트 , 엔 티렉스 컨텐츠 통합 사이트 
 Posted by 디바이 스마트 매거진 on Saturday , March 25 , 2017 · Leave a Comment 
 2016 ICT 융합 프로젝트 공모전 입선 
 ABT _ System ( Automatic Bicycle Transmission System ) 
 글 | 단국 대학교 김승권 , 서진욱 , 이규호 , 김영태 , 최재호 , 김재도 
 JK 전자 최근 자전거 를 이용 하 는 인구 가 급격 하 게 늘어난 것 은 사실 이 다 . 대부분 이 건강 을 위한 운동 이 목적 일 것 이 다 . 특히 자전거 운동 은 런닝 보다 무릎 관절 등 에 무리 가 덜 가 는 운동 으로 알려져 있 어 높 은 연령 층 에서 도 많이 이용 을 하 고 있 는 것 같 다 . 관절 건강 을 위한 최적 의 속도 와 기어 비 를 자동 으로 조정 해서 패 달 을 밟 는 최적 의 강도 를 자동 으로 설정 을 해 주 는 기능 이 있 는 자전거 라면 많 은 수요 가 있 을 수 있 을 것 같 다 . 
 뉴 티 씨 매우 실용 적 인 작품 으로 , 자전거 가 외부 에서 타 는 것 임 을 감안 하 여 방수 나 모터 를 좀 더 튼튼 한 것 으로 사용 하 여 오랜 기간 사용 할 수 있 도록 했 으면 좋 았 을 것 같 다 . 충분히 실용 화 하 여 사용 할 수 있 는 것 으로 보이 며 , 재미있 는 작품 으로 보인다 . 
 칩 센 점점 수요 가 늘 고 있 는 자전거 를 이용 한 모티브 가 돋보입니다 . 케이스 를 직접 제작 하 는 열의 와 작품 의 완성 도 또한 높 다고 판단 됩니다 . 세부 적 으로 제품 의 안전 과 관련 된 부분 을 고려 하 여 보완 한다면 상용 화 된 작품 으로 도 진행 될 여지 가 있 습니다 . 
 위드 로봇 보고서 의 내용 만 으로 는 잘 동작 하 였 는지 판단 하 기 어렵 습니다 . 제작 한 과정 뿐 만 아니 라 동작 상 에서 발생 하 는 추가 문제점 , 그 추가 문제점 의 해결 방 안 에 대한 의견 이 보고서 에 첨부 되 면 더욱 좋 겠 습니다 . 
 1 . 작품 제목 
 ABT ( Automatic Bicycle Transmission ) _ System 
 자전거 는 1800 년 대 에 최초 로 발명 된 이래 인류 역사 상 가장 멋진 발명품 중 하나 이 다 . 2015 년 기준 으로 자전거 인구 는 1200 만 명 을 넘어섰으며 자동차 와 는 달리 연료 없이 순수 인간 의 동력 으로 만 구동 가능 하 다는 장점 이 있 어 친환경 적 이 고 굉장히 경제 적 이 다 . 
 자전거 는 본래 단순 한 이동 수단 이 었 지만 철인 3 종 경기 나 트라이애슬론 과 같 은 큰 경기 가 열릴 정도 로 인기 가 높 아 졌 다 . 점점 더 가볍 고 튼튼 한 자전거 가 개발 되 고 있 으며 최근 에 는 버튼 만 으로 도 변속 이 가능 한 자전거 가 개발 되 었 다 . 변속 은 자전거 주행 을 할 때 안전 과 연관 된 부분 이 기 때문 에 현재 달리 고 있 는 속도 와 경사 에 맞 게 , 빠르 게 변속 을 해야 한다 . 자전거 에 익숙 하 지 않 은 사람 들 은 변속 하 는 시점 을 잘 모르 기 때문 에 무리 하 게 자전거 를 탈 경우 무릎 손상 을 초래 할 수 도 있 다 . 현재 시중 에 판매 되 는 자전거 중 에서 는 편리 하 고 기능 이 많이 들어간 자전거 일수록 매우 비싸 다 . “ 비싼 자전거 만 좋 고 튼튼 해야 할까 ? ” 라는 편견 을 깨 고 어느 자전거 에 나 장착 이 가능 한 , 누구 나 쉽 게 변속 을 할 수 있 는 , 편리 한 자전거 를 만들 고 싶 었 다 . 그래서 ABT _ System 을 제작 하 게 된 것 이 다 . 
 3 . 1 . 개발 환경 
 · 개발 언어 : C 언어 , C ++ 
 · 개발 Tool : Arduino Sketch 
 · 사용 시스템 : 아두이노 
 현재 시중 에 판매 되 고 있 는 전 자식 변속기 는 크 게 내장 형 배터리 / 변속 , 브레이크 레버 / 앞 변속기 / 뒷 변속기 / 통신 케이블 / 배터리 로 구성 되 어 있 다 . 물론 전 자식 변속기 를 장착 하 기 위해서 는 장착 할 수 있 는 모델 을 따로 구매 해야 하 기 때문 에 금전 적 인 문제 가 상당히 크 다 . ABT _ System 을 장착 하 기 위해서 는 자전거 에 장착 할 부분 의 크기 만 알 면 되 기 때문 에 장착 에 제한 이 없 다 . 또한 구성 품 이 앞 · 뒤 변속기 , LCD , 배터리 , 컨트롤러 , 스위치 만 있 으면 되 기 때문 에 구성 품 이 적 으며 , 장착 이 간단 하 다 . 
 ABT _ System 에 는 LCD 가 장착 되 어 있 어 현재 변속기 의 위치 를 표시 하 며 , 케이 던스 ( 1 분당 페달 을 밟 는 횟수 ) 와 속도 를 동시 에 확인 할 수 있 다 . 바퀴 와 페달 에 장착 된 마그네 틱 스위치 를 이용 해 속도 와 케이 던스 를 실시간 으로 측정 하 며 , 6 축 가속 도 센서 를 이용 하 여 경사 를 측정 한다 . 컨트롤러 로 사용 한 아두이노 나노 를 통해 값 을 계산 한다 . 이렇게 계산 한 케이 던스 와 속도 를 기준 으로 적절 한 기어 비 를 계산 해 아두이노 메가 로 기어 를 변속 하 라는 명령 을 전송 한다 . 전송 받 은 데이터 를 기준 으로 앞 , 뒤 액추에이터 서보 는 변속 이 가능 한 각도 로 변경 되 며 , 드레 일러 를 밀 어 기어 를 변속 하 게 된다 . 
 3 . 2 . 주행 모드 
 ABT _ System 에 는 총 3 가지 모드 가 존재 하 여 사용 자 가 원 하 는 대로 변속 이 가능 하 다 . 
 3 . 2 . 1 . One Finger Mode 
 One Finger Mode 에서 는 한 쪽 버튼 만 으로 변속 이 가능 하 도록 소스 코딩 을 하 였 다 . 이 에 설정 한 기어 비 는 앞 , 뒤 변속기 의 기어 비 를 계산 하 여 최적 의 기어 비 로 변속 이 가능 하 도록 설정 하 였 다 . 
 가장 표준 자전거 는 앞 기어 는 3 개 , 뒷 기어 는 7 개 의 기어 로 구성 되 어 있 으며 , 총 21 단 으로 변속 이 가능 하 다 . 자전거 의 기어 는 앞 , 뒤 기어 를 적절히 변속 해야 현재 달리 고 있 는 환경 에 따라 원활 하 게 주행 이 가능 하 다 . 예 를 들 어 앞 기어 의 가장 작 은 톱니 를 1 번 , 가장 큰 톱니 를 3 번 이 라고 가정 하 고 , 뒷 기어 의 가장 작 은 톱니 를 1 번 , 가장 큰 톱니 를 7 번 이 라고 가정 하 자 . 앞 기어 가 1 번 일 때 는 경사 를 오르 거나 저속 주행 을 할 때 사용 하 는 데 뒷 기어 는 5 , 6 , 7 번 기어 를 사용 하 는 것 이 가장 적절 하 다 . 즉 뒷 기어 의 1 , 2 , 3 , 4 번 은 사용 할 확률 이 적 다는 뜻 이 다 . One Finger Mode 에서 는 가장 적절 한 기어 비 로 변속 을 하 는 것 을 목적 으로 하 기 때문 에 앞 , 뒤 기어 의 기어 비 를 계산 하 여 11 가지 의 경우 의 수 로 변속 을 하 게 된다 . 
 Manual Mode 는 수동 변속 모드 로 자동 변속 기능 을 필요 로 하 지 않 고 사용 자 가 원 하 는 대로 즉각 적 으로 변속 할 수 있 는 설정 이 다 . 좌측 버튼 으로 는 앞 기어 의 변속 을 담당 하 며 , 우측 버튼 으로 는 뒷 기어 의 변속 을 담당 한다 . LCD 에 는 현재 변속 위치 를 표시 하 기 때문 에 사용 자 가 변속 을 하 고 싶 을 때 는 버튼 을 눌러 실시간 으로 변속 이 가능 하 도록 설정 하 였 다 . 그렇 다면 변속 을 할 때 변속기 의 위치 는 고려 하 지 않 을까 ? 일반 자전거 의 변속기 는 변속기 속선 을 당기 는 정도 에 따라서 변속기 의 위치 를 세밀 하 게 조절 이 가능 하 다 . 변속기 의 위치 를 고려 하 지 않 으면 체인 이 대각선 으로 연결 되 어 소음 을 발생 시키 게 되 는데 이 때 트리밍 ( Trimming ) 을 통해서 변속기 의 위치 를 조절 해 줘야 한다 . 그래서 Manual Mode 에서 나 , Automatic Mode , One Finger Mode 에서 도 트리밍 이 가능 하 도록 코딩 을 하 여 변속 을 할 때 소음 이 발생 하 지 않 도록 액추에이터 가 이동 한다 . 트리밍 을 하 지 않 으면 변속기 의 플레이트 가 닳 아 손상 되 며 , 체인 에 도 큰 영향 을 미친다 . 
 3 . 2 . 3 . Automatic Mode 
 Automatic Mode 는 ABT _ System 에 장착 된 기능 을 모두 활용 하 는 모드 로 주행 각도 , 주행 속도 , 케이 던스 를 측정 하 여 현재 페달 링 속도 와 주행 속도 , 노면 의 기울기 를 모두 고려 하 여 가장 적절 한 기어 비 로 변속 을 할 수 있 도록 설정 하 였 다 . 1 차 로 기울 기 , 2 차 로 주행 속도 , 3 차 로 케이 던스 를 고려 한다 . 변속 을 할 때 가장 중요 한 것 이 노면 의 기울기 이 다 . 주행 속도 와 케이 던스 를 먼저 고려 하 게 되 면 노면 의 기울기 에 따라서 변속 이 먼저 이뤄지지 않 기 때문 에 안정 성 이 낮 아 진다 . 
 만약 내리막 을 주행 하 고 있 으며 케이 던스 가 0 인 상태 에서 는 어떻게 될까 ? 일정 수준 의 케이 던스 를 넘 지 않 으면 변속 을 하 지 않 으며 , 변속 을 하 던 도중 에 페달 링 을 멈추 면 케이 던스 가 0 이 되 기 때문 에 변속 을 하 지 않 도록 설정 하 였 다 . 만약 케이 던스 가 0 이 더라도 주행 중 이 거나 정지 하 는 경우 에 는 이전 에 유지 한 변속 값 을 유지 하 기 때문 에 갑자기 변속 이 되 지 않 는다 . 
 3 . 3 . LCD 모듈 
 3 . 3 . 1 . 부품 리스트 
 3 . 3 . 2 . 부품 설명 
 캐릭터 LCD : 캐릭터 LCD 는 그래픽 LCD 와 는 달리 문자 하나 당 40 개 의 픽셀 로 이뤄져 있 으며 , 아두이노 나 Atmega 128 과 같 은 MCU 에서 는 헤더 파일 에 기본 적 인 알파벳 코드 가 작성 되 어 있 어 함수 를 호출 하 여 문자 를 입력 하 면 바로 LCD 에 글자 를 띄울 수 있 다 . 
 MC 7805 CT : MC 7805 CT 는 회로 에서 요구 하 는 전압 이 있 어 일정 수준 이하 로 전압 을 내릴 때 사용 하 는 리니어 레 귤 레이터 이 다 . 정 전압 레 귤 레이터 에 는 스위칭 방식 인 SMPS , 가장 많이 사용 되 는 리니어 레 귤 레이터 가 있 다 . 리니어 레 귤 레이터 는 전위차 를 열에너지 로 소모 하 기 때문 에 에너지 효율 은 좋 지 않 지만 회로 구성 이 간단 하 고 요구 전압 과 입력 전압 의 차이 가 많이 나 지 않 을 때 사용 된다 . 모델 명 의 뒷자리 숫자 , 즉 78 XX 는 변환 하 고자 하 는 전압 을 의미 하 며 우리 가 사용 하 는 7805 는 5 V 로 전압 을 내려 주 는 리니어 레 귤 레이터 이 다 . 
 아두이노 나노 : 아두이노 나노 는 아두이노 프로 미니 다음 으로 작 은 모델 이 다 . 아두이노 우노 나 메가 와 같 은 모델 은 크기 가 크 기 때문 에 한정 된 크기 에서 MCU 를 요구 할 때 는 적합 하 지 않 다는 단점 이 있 다 . 때문 에 아두이노 나노 나 프로 미니 , 마이크로 와 같 은 모델 을 사용 하 며 , Atmega 328 을 사용 하 여 아두이노 우노 나 마이크 로 , 프로 미니 와 다른 점 이 거의 없 다 . 
 마그네 틱 센서 : 마그네 틱 센서 는 비활성 가스 를 충전 한 유리관 속 에 봉입 된 스위치 를 의미 한다 . 리드 스위치 는 다른 스위치 와 달리 접점 의 동작 , 복귀 가 빠르 고 신뢰도 가 높 기 때문 에 TACT 스위치 보다 사용 하 기 편하 다 . 자전거 에 장착 하 여 고속 으로 회전 하 는 케이 던스 와 바퀴 의 속도 를 측정 하 기 위해서 는 거리 측정 센서 나 근접 센서 를 사용 하 기 어렵 다 . 때문 에 자력 에 의해 스위치 가 On / Off 되 는 마그네 틱 센서 를 사용 하 는 것 이 인식 률 이나 장착 에 더 효율 적 이 다 . 
 3 . 4 . 앞 · 뒤 변속기 / 메인 컨트롤러 
 3 . 4 . 1 . 부품 리스트 
 3 . 4 . 2 . 부품 설명 
 아두이노 메가 : 아두이노 메가 는 Atmega 2560 을 사용 하 고 GPIO 포트 가 다양 하 여 확장 성 이 좋 다는 장점 이 있 다 . 아두이노 나노 등 을 사용 해 소형 화 할 수 있 었 는데 아두이노 메가 를 사용 한 이유 는 다음 과 같 다 . 
 아두이노 메가 이외 의 아두이노 보드 는 디지털 / 아날로그 포트 , Hardware Serial Port 가 적 기 때문 에 많 은 GPIO 포트 를 요구 할 때 는 적합 하 지 않 다 . ABT _ System 은 Hardware Serial Port 가 총 3 개 필요 하 다 . AX - 12 A 를 구동 할 때 Serial 통신 으로 Packet 을 보내 주 는데 제작 과정 에서 SoftwareSerial 클래스 를 사용 하 는 것 이 되 지 않 아 Hardware Serial Port 를 사용 해야 했 다 . 그래서 불가피 하 게 Atmega 2560 을 선택 했으며 , 포트 부족 문제 를 해결 하 였 다 . 
 AX - 12 A : AX - 12 A 액추에이터 서보 는 내부 에 MCU 가 장착 되 어 수신 하 는 Packet 에 의해 동작 한다 . Robotics 에서 제공 하 는 데이터시트 를 보 면 Instruction 마다 기능 을 다르 게 설정 할 수 있 으며 , ABT _ System 에 는 360 도 회전 하 는 주행 모드 보다 는 각도 제어 모드 가 적합 하 기 때문 에 AX - 12 A 를 선택 하 였 다 . 일반 디지털 서보 보다 비싼 가격대 가 형성 되 어 있 지만 토크 , 허용 전류 , 빠른 응답 속도 , 정확 한 명령 수행 으로 인해 위 액추에이터 를 선택 하 였 다 . 또한 일반 서보 는 180 도 까지 제어 가 가능 하 지만 액추에이터 서보 는 330 도 까지 제어 가 가능 하 기 때문 에 더 넓 은 제어 각도 를 처리 할 수 있 다 . 
 MMA 8452 : MMA 8452 는 3 축 가속 도 센 서로 X , Y , Z 축 에서 기울어진 정도 를 측정 하 여 각도 로 표시 를 해 주 기 때문 에 기울 기 를 측정 하 기 에 적합 한 모듈 이 다 . 보통 가속 도 , 자이로 센서 는 SPI , I 2 C 통신 을 둘 다 지원 하 기 때문 에 사용 자 가 원 하 는 대로 제어 가 가능 하 다는 장점 이 있 다 . 자이로 센서 와 가속 도 센서 의 차이점 은 측정 하 는 값 에 차이 가 있 다 . 가속 도 센서 는 X , Y , Z 축 의 중력 가속 도 성분 을 분해 하 여 각각 각도 로 나타내 는 것 이 가능 하 다 . 자이로 센서 는 각 축 의 각속도 를 측정 하 는 것 이 기 때문 에 각도 를 구하 려면 적분 을 해야 한다 . 때문 에 ABT _ System 을 구현 할 때 는 가속 도 센서 를 사용 하 는 것 이 적합 하 다고 판단 하 였 다 . ABT _ System 에서 는 주행 각도 를 측정 하 여 그 에 알맞 은 기어 비 로 기어 를 변속 하 게 된다 . 
 4 . 단계 별 제작 과정 
 4 . 1 . ABT _ System 장착 위치 별 지름 , 세부 크기 측정 
 4 . 2 . 부품 별 3 D Modeling 
 4 . 3 . 3 D Printing 
 4 . 4 . 2 차 , 3 차 모델링 수정 
 4 . 5 . 최종 출력 및 부품 배치 
 4 . 6 . 부품 조립 및 자전거 장착 
 4 . 7 . 테스트 
 4 . 8 . 회로도 
 4 . 9 . 시험 주행 
 5 . 1 . FRONT CODE 
 # include < SFE _ MMA 8452 Q . h > 
 # define r _ up 10 
 # define r _ down 11 
 # define f _ up 12 
 # define f _ down 13 
 / / Button Setting pin 
 # define f _ 7 1 
 # define f _ 6 2 
 # define s _ 7 3 
 # define s _ 6 4 
 # define f _ 5 5 
 # define t _ 7 6 
 # define t _ 6 7 
 # define s _ 5 8 
 # define f _ 4 9 
 # define t _ 5 10 
 # define s _ 4 11 
 void lcd _ spd ( ) 
 if ( spd < 10 ) 
 else if ( rpm < 10 ) 
 else if ( rpm > 99 ) 
 void lcd _ cursor _ mode 2 ( ) 
 void lcd _ cursor _ mode 1 ( ) 
 void lcd _ cursor _ mode 3 ( ) 
 char trans ( int state ) 
 int mode _ change ( int in 1 , int in 2 , int in 3 ) 
 int Mode _ 1 ( ) 
 else if ( spd > 25 ) 
 else if ( accel . x > 15 ) 
 else if ( accel . x < 0 && accel . x >- 15 ) 
 switch ( mode _ state ) 
 void Mode _ 2 ( ) 
 int Mode _ 3 ( ) 
 void speed _ sens ( float in 1 , float in 2 ) 
 5 . 2 . REAR CODE 
 REAR CODE 
 / / 400 1 단 , 540 7 단 
 void Packet 1 ( unsigned char ID , int Angle ) 
 void change _ value _ r ( ) 
 void change _ value _ f ( ) 
 void Packet 2 ( unsigned char ID , int Angle ) 
 void Default ( unsigned char ID 1 ) 
 int rear _ transferid ( char a ) 
 int front _ transferid ( char a ) 
 void First _ front ( ) 
 void Second _ front ( ) 
 void Third _ front ( ) 
 Filed under 디바이 스마트 매거진 , 특집 · Tagged with 41 호 , Feature , ict , 공모전 , 디바이 스마트 , 매거진 , 융합 , 입선 , 프로젝트