November 25, 2024

디바이스마트 미디어:

[66호] 원하는 색상으로 제어가 가능한 아두이노 IoT 스마트 무드등 키트 -

2021-06-25

★2021 ICT 융합 프로젝트 공모전 결과 발표! -

2021-05-12

디바이스마트 국내 온라인 유통사 유일 벨로다인 라이다 공급! -

2021-02-16

★총 상금 500만원 /2021 ICT 융합 프로젝트 공모전★ -

2021-01-18

디바이스마트 온라인 매거진 전자책(PDF)이 무료! -

2020-09-29

[61호]음성으로 제어하는 간접등 만들기 -

2020-08-26

디바이스마트 자체제작 코딩키트 ‘코딩 도담도담’ 출시 -

2020-08-10

GGM AC모터 대량등록! -

2020-07-10

[60호]초소형 레이더 MDR, 어떻게 제어하고 활용하나 -

2020-06-30

[60호]NANO 33 IoT보드를 활용한 블루투스 수평계 만들기 -

2020-06-30

라즈베리파이3가 드디어 출시!!! (Now Raspberry Pi 3 is Coming!!) -

2016-02-29

MoonWalker Actuator 판매개시!! -

2015-08-27

디바이스마트 레이저가공, 밀링, 선반, 라우터 등 커스텀서비스 견적요청 방법 설명동영상 입니다. -

2015-06-09

디바이스마트와 인텔®이 함께하는 IoT 경진대회! -

2015-05-19

드디어 adafruit도 디바이스마트에서 쉽고 저렴하게 !! -

2015-03-25

[29호] Intel Edison Review -

2015-03-10

Pololu 공식 Distributor 디바이스마트, Pololu 상품 판매 개시!! -

2015-03-09

[칩센]블루투스 전 제품 10%가격할인!! -

2015-02-02

[Arduino]Uno(R3) 구입시 37종 센서키트 할인이벤트!! -

2015-02-02

[M.A.I]Ahram_ISP_V1.5 60개 한정수량 할인이벤트!! -

2015-02-02

[26호] ICT 융합 공모전 – 아끼슈

레이저하프 01

글 | 단국대학교 전자전기공학부 학술동아리 서원호, 김재현, 하원빈, 이지은

 환경 보호 차원에서 화장지를 아껴쓰자는 메시지를 전달하기 위해 화장지를 뜻하는 영어단어인 ‘tissue’ 와 우리말 ‘아껴쓰다.’ 을 합쳐 만들어진 작품제목이다.

현대사회에서 환경오염은 불가피하게 되었고 전 세계적으로 환경 문제가 더 이상 선택이 아닌 생존의 문제라는 인식이 고조되고 있다. 하지만 현재 우리 지구의 환경오염 발생 원인은 복잡하게 얽혀 있고, 피해 정도를 정확히 파악할 수가 없는 실정이다. 원상회복에도 많은 시간이 걸릴 것이며, 정치 경제 사회 문화 등 총체적 방법을 강구해야 할 것이다.
이 시점에서 우리는 우리의 생활 속에서 실천할 수 있는 작은 것들이 모인다면 환경문제가 조금씩 해결될 수 있다는 희망을 가지고 매일 가는 화장실에서 흔히 볼 수 있는 두루마리 휴지에서부터 작은 실천을 시작하려고 한다. 화장지의 무분별한 사용을 막기 위해 아이디어를 구상하게 되었고 옆의 첨부 사진들은 수많은 사람들의 다양하고 기발한 아이디어이다.

아끼슈 02

화장지를 뽑을 때 지구의 색이 초록색에서 검정색으로 바뀜으로써 사용자에게 지구가 병들어 가고 있다는 메시지를 전달하고 있다.

아끼슈 03

화장지가 뜯겨 나갈 때마다 나무도 함께 잘려나가는 모습을 보여줌으로써 사용자의 화장지 절약의식을 일깨워 주고 있다.

아끼슈 04

흔히 볼 수 있는 둥글한 심이 아닌 네모난 심을 사용해서 의도치 않은 화장지 과사용을 방지하고 있다.

1. 선행연구

일정 내용 비고
~3.14 개별 아이디어 구상
3.15 1차 회의 아이디어 채택 및 R&R 정하기
3.16~3.21 요구사항 명세, 분석 실패사례 조사하고 분석하기
3.22 2차 회의 구체적 설계, 부품 구매
3.23~3.31 개발 및 보고서 작성

요구사항

요구사항 요구사항 내용 상세 내용
사용자 화장지의 적정량만 사용하고 싶다. 상황에 따른 화장지의 적정량을 알아야한다.
사용자 상황에 따라 버튼을
선택해 눌러서 화장지를 사용하고 싶다.
외부에 적당한 위치에 스위치를 달아서 사용자가 편리하게 휴지를
뽑아 쓸 수 있도록 한다.
시스템 화장지의 반지름에
따라 모터의 회전이
달라져야한다.
화장지가 줄어들수록 같은 회전에도 적은양의 화장지가 나오므로
줄어들면 줄어들수록 모터의 회전수가 증가한다.
시스템 화장지의 반지름을
알 수 있어야한다.
가변저항을 이용하여 화장지의 반지름을 실시간으로 측정한다.
고무줄의 탄성을 이용해서  길이를 조절할 수 있다.

실패 사례
물가 상승률이 월급 인상률을 넘어서는 일이 잦아지면서 아껴야 잘 산다는 말이 새삼 뼈에 사무치는 시절이다. 1997년 경기 성남시의 이모씨는 우리가 일상생활에서 가장 쉽게 낭비하고 있는 물자의 하나인 두루마리 휴지를 아낄 수 있는 휴지걸이를 개발, 특허를 출원했다. 이 아이템은 기존 휴지걸이의 경우 별도의 제동장치가 없기 때문에 사용자가 휴지의 끝을 잡아당기면 회전력에 의해 필요이상으로 많은 길이가 풀린다는 점에 착안했다. 이에 출원인은 별도의 장치를 통해 휴지걸이의 원통부분이 특정 횟수까지 회전하면 자동으로 멈추도록 설계했다. 이런 방식으로 한 번에 정해진 양만큼만 휴지가 풀리도록 해 낭비를 줄일 수 있다는 게 출원인의 주장이다. 또한 원통의 회전이 정지하면서 자연스럽게 휴지가 끊기므로 현재와 같이 두 손을 모두 사용하지 않고, 한 손으로도 손쉽게 적정량의 휴지를 얻을 수 있어 편의성도 높아진다는 설명이다. 특허청은 참신한 아이디어가 돋보이는 이 특허의 등록을 허락했다. 하지만 출원인의 등록료 불납으로 현재는 권리가 소멸된 상태다. 왜 그랬을까. 아마도 원통의 회전수로 정지 시점을 설정하면 휴지를 쓸수록 그 둘레가 줄어들어 한 번에 손에 쥘 수 있는 양도 줄어드는 한계를 인식한 것이 아닐까.
위 실패 사례를 통해 우리는 원통의 일정한 회전수만으로는 한계가 있다는 것을 알았다. 시시각각변하는 휴지의 반지름을 어떻게 알아낼 것인지가 이번 작품의 가장 큰 논점이 될 것이다.

2. 작품 설명
우리는 특히 화장실에서 사용하는 화장지의 무분별한 사용을 줄여보자는 취지로 작품을 고안하였기 때문에 우리나라 사람들의 평균 화장실 휴지 사용량을 조사결과를 참고하였다.
아끼슈 07

2.1 주요 동작 및 특징
사용자가 사용 목적에 따라 버튼을 선택하여 누르면 적정량의 휴지만 나오게 함으로써 낭비되는 휴지가 없도록 하였다.
사용할수록 줄어드는 휴지의 반지름을 가변저항으로 측정하여 모터의 회전수와 속도를 조정하였고 일정량의 화장지가 나오도록 설계하였다. 줄어들면서 일정한 양이 나오는데 걸리는 시간이 증가하므로 모터의 회전수를 반지름이 줄어들수록 증가하게 설계하였다.

2.2. 전체 시스템 구성
• 주요 부품 소개
아끼슈 08
DC모터 : 6V 의 DC 모터를 사용하여 휴지롤을 돌리고자 하였다.
가변저항 : 가변저항을 통해 나오는 값을 아두이노의 ADC를 이용하여 값을 처리하여 휴지의 남은 양을 계산한다.
아두이노 : 아두이노는 ADC input을 반지름 계산 알고리즘을 연산하여 DC MOTOR로 OUTPUT해주는 역할을 한다.

2.3. 개발 환경
아끼슈 09
Macintosh 및 Arduino IDE환경에서 C언어로 코딩하였다. CAD tool로는 Fritzing을 사용하였고 FlowChart의 경우 yEd를 사용하였다.

3. 단계별 제작 과정
아끼슈 10
공공장소에서 흔히 볼 수 있는 크기의 화장지케이스를 기준으로 만들었다.

아끼슈 11
바퀴에 고무를 씌워 마찰력을 증가시켰다.

아끼슈 12
모터에 베어링을 장착하여 고정하였다.

아끼슈 13아끼슈 14

화장지 케이스에 베어링과 합쳐진 모터를 앞 뒤로 단단하게 고정시켰다.

아끼슈 15
나무 막대기를 제도해서 지지대로 사용(7cm, 8.5cm)

아끼슈 16
플라스틱 막대기를 연결시켜 휴지를 받히게 했고 막대를 가변저항모양에 맞게 갈아 고정시켰다.

아끼슈 17
막대기에 고무줄을 끼울 구멍을 뚫고 있다.

아끼슈 18
고무줄을 연결시킨 모습

아끼슈 19
화장지를 끼웠을 때 끝까지 들어가지 않게끔 턱을 만들었다.

아끼슈 20
아두이노 장착

아끼슈 21
완성된 모습

4. 반지름 계산 알고리즘
아끼슈 22
만약 두 측정자의 끼인각이 예각일 경우 반지름은 각도에 따라 선형적으로 증가한다. 하지만 둔각이 될 경우 이는 예각과는 다른 비율로 증가하게 된다. 이는 손쉽게 시리얼 모니터로 확인이 가능하다. 따라서 매핑함수를 이용하여 각각의 경우 다른 반지름으로 초기화를 해준다.
예각인지 둔각인지를 선택하는 것은 OutputValue1, 2중 큰 값을 선택하면 알 수 있다.

outputValue1 = map(sensorValue, 660, 920, 40, 80);
outputValue2 = map(sensorValue, 920, 1020, 81, 145);

예를 들어 딱 90도가 되었을 때 전자의 값은 80, 후자의 값은 81이 되는데 이후로 각도가 늘어날수록 outputValue1의 경우 근소하게 늘어나고 2의 경우는 많이 늘어나기 때문에 이의 차이를 이용하여 현재 예각인지 둔각인지를 판가름 할 수 있다.
또한 휴지롤의 반지름이 작아지면 같은 속도로 모터가 돌아간다고 해도 휴지가 나오는 속도는 차이가 나게 된다. 이를 보정해 주기 위하여 Distance란 파라미터를 정해놓고 반지름에 따라 모터의 PWM을 변화시켜 반지름이 달라지더라도 최종적으로 나오는 휴지의 속도는 모든 반지름일 때 일정하도록 조정해 주었다.

if(outputValue1 > outputValue2)
{
Distance = Speed/outputValue1/10*50;
}
else
{
Distance = Speed/outputValue2/10*50;
}

설계의 한계
우리 설계의 경우 6V짜리 DC모터를 사용한다. 보유하고 있는 모터드라이브를 사용하려고 하였으나 DC모터의 구동 전류가 약 800mA이기 때문에 100mA까지 커버하는 모터드라이브로는 이 모터를 구동할 수 없었다. 하지만 1A이상의 모터드라이브를 사용하면 정확하게 작동할 것이라고 생각한다. 때문에 정확하게 한 시나리오에서 구동하는 모습은 보고서에 담을 수 없었지만 추후에 기회가 된다면 좀 더 완성도 높게 제작할 수 있을 것이다.

5. 기타 (회로도, 소스코드, 참고문헌 등)
• 소스코드

Arduino Code
#define Pwm 5
#define Dir 4
#define Speed 15
#define rpm 3
#define ButtonPin_small 12
#define ButtonPin_Big 11
#define small 2.1

const int analogInPin = A7; // Analog input pin that the potentiometer is attached to
const int analogOutPin = 9; // Analog output pin that the LED is attached to

int sensorValue = 0; // value read from the pot
int outputValue1 = 0; // value output to the PWM (analog out)
int outputValue2 = 0;
float Distance = 0; //반지름에 따른 모터의 PWM 변수
void setup() {
Serial.begin(9600);
pinMode(Pwm, OUTPUT);
pinMode(Dir, OUTPUT);

}
void loop() {

sensorValue = analogRead(analogInPin); // ADC값을 sensorValue에 저장.
outputValue1 = map(sensorValue, 660, 920, 40, 80); //반지름에 따른 Value값 매핑
outputValue2 = map(sensorValue, 920, 1020, 81, 145);
if(outputValue1 > outputValue2)
{
Distance = Speed/outputValue1/10*50;
}

else
{
Distance = Speed/outputValue2/10*50; // 어떤 반지름의 경우라도 결과적으로 나오는 속도는 같게 Parameter값 조정
}

// print the results to the serial monitor:
Serial.print(“sensor = “ );
Serial.print(sensorValue);
Serial.print(“\t output = “);
Serial.print(outputValue1);
Serial.print(“ “);
Serial.println(outputValue2);
if (digitalRead(ButtonPin_small) == LOW) //small button의 경우 소변 Big의 경우 대변
{
Motor_GO(Distance/small); // 소변일 경우 PWM을 감소시켜 휴지가 나오는 양을 적게함
delay(rpm*1000)
}
else if (digitalRead(ButtonPin_Big)==LOW)
{
Motor_GO(Distance);
delay(rpm*1000)
}
}

void Motor_GO(float Distance)
{
analogWrite(Pwm ,Distance);
digitalWrite(Dir,HIGH); // Direction = HIGH값일 때 정회전

}

• Flow Chart

아끼슈 24
• 완성된 영상

아끼슈 25

http://youtu.be/ppVs7RK_VgQ

• 참고문헌

http://Arduino.cc

Leave A Comment

*