작품번호 456 제 28 회전국학생과학발명품경진대회 디지털광센서를 이용한탄동진자 출품분야학생작품출품부문학습용품 2006. 6. 2. 시 도 학교 ( 소속 ) 학년 ( 직위 ) 성 명 인천광역시가좌고등학교 2 학년오승영 지도교사가좌고등학교교사심소영 - 1 -
1. 제작동기 지금처럼여러가지측정장비가발달하지않은시기에총에서발사된총알의속도를어떻게측정하였을까? 현재는고속으로사진을촬영하여측정하는것이가능하겠지만, 그렇지못했던시기에는아마도총알이가지고있는선운동량을보다더느리게움직일수있는물체의운동량으로변환하여측정하였을것이라고생각합니다. 그림 1 탄동진자의원리 그리고학교실험실에서이와비슷한상황을가정하여일명탄동진자라고하는실험기자재를사용하고있는데, 그것은총에서발사된쇠구슬 ( 탄환 ) 이흔들릴수있는진자에부딪쳐완전비탄성충돌이되어진자의위치에너지가흔들리면서변화하게되며, 이때이진자의위치에너지의변화를통하여탄환의속도를측정할수있게되는것입니다. 그림 1 처럼정지되어있는진자에특정의속도를지닌쇠구슬이날라와서충돌하게되면그충돌의힘으로진자는움직이게되는데진자의형태이기때문에그림처럼흔들리는형태를지니게됩니다. 이때진자의흔들림의최대각도를측정하게되면날라온쇠구슬의속도를운동량보존등의원리를적용하여측정할수있게됩니다. 이실험장치는탄환이가지고있는운동에너지혹은선운동량의개념과회전할수있는진자가가지고있는회전운동에너지혹은위치에너지의보존개념을이해하기위한실험으로서학교에서일반적으로사용하고있는장치가가지고있는방법보다더효율적인측정방법이생각이났기에장치를만들어보게되었습니다. - 2 -
탄환의속도를진자의위치에너지혹은회전각도측정을통하여구하게되는데, 진자의위치에너지를표시하는기구적인방법이다소많은마찰력을만들어내는방법을사용하고있거나또는회전각도를읽는데상대적으로더많은마찰하에서오차가더많은방법으로측정하고있습니다. 일반적인측정장비중에위치를판단하거나회전각도를측정하는용도로많이활용되고있는엔코더라고하는부품을이용한다면기존의장치들에비해더효율적이면서도정확한진자의회전각도를측정하게되며탄동진자에서많은측정손실없이도쇠구슬의속도를측정할수있게될것입니다. 그림 2 회전각도를측정할수있는엔코더의외형과작동방법설명 그림의설명을보면회전판을사이에두고양쪽에수광부와발광부가있습니다. 그리고이원판에는아주미세한구멍이있어서그원판을돌때마다수광부와발광부가동작, 차단, 동작, 차단을반복하면서원판의구멍만큼신호가발생하게되며이것을카운터회로를사용하여카운트함으로서위치혹은각도를알게되는것입니다. 2. 작품요약 엔코더는광학적방법으로펄스수를측정하는부품으로이것을활용하면학교수업시간에사용한탄동진자보다더정밀하고오차가없는실험장치를제작할수있다. - 3 -
3. 작품내용 발사체에서발사된쇠구슬의속도를측정하는가장간단한방법은현실적으로발사된쇠구슬의속도를광학적방법으로직접측정하는것이제일좋으나실험의본질적인내용은교과과정중에이해한선운동량과회전운동에관련된개념을실질적인문제에적용함으로서실험을통한현실적인개념의이해를목적으로한다고생각됩니다. 일반적으로학교실험실에서많은사용되고있는탄동진자의모습은아래의사진과같습니다. 그림 3 학교교재로사용되고있는탄동진자중 장치를한마디로설명한다면발사체에서발사된쇠구슬은쇠구슬을붙잡을수있는진자에의하여정지되고이진자는쇠구슬에의하여흔들리게됩니다. 이흔들림은결국발사된쇠구슬의속도와직접관련됨은당연한일입니다. 실험은발사된쇠구슬에의한흔들림이진자에의하여손실없이전달되는것이가장이상적이지만실질적인실험장치는몇가지방법을통하여이문제를해결하려고하고있음을장치를조사해보면서알수있었습니다. 가장먼저있었던장치의구조는위의사진과그림에서처럼우선진자의흔들림의위치를톱니형태의걸림기구로이용하는데, 진자의움직임이증가하는방향으로는걸쇠가이동하지만반대로내려오는방향으로는이동하지않는특징이있는걸쇠구조를이용한것이었습니다. 그러나손으로진자를움직여볼때이움직임에상당한힘이들어감을알수있었으며그이유가톱니형태의걸쇠구조에있는것이아닌가생각되었습니다. 이와유사한형태의장치로서비록톱니형태의걸쇠는아니지만내부적으로한쪽 으로는돌지만반대로는돌지않고반대로돌게하기위해서는레버를반대로돌려 - 4 -
야하는구조를이용한탄동진자도확인해볼수있었습니다. 최근에실험에이용되는장치를보면예전의다소마찰이크게작동되면서정지되 는형태의제품보다더원활히움직일수있는진자형태를지니고있습니다. 그림 4 인터넷자료중에서발췌한탄동진자의모습 장치를만들기위해서엔코더를이용하면더원활하게움직이게할수있을뿐만아니라회전각도를다른어떤방법보다도정밀하게측정할수있을것이라는생각에서장치를제작해보려고하였으나, 탄환을발사하는장치를구성하는것도더어렵고쉽지않았습니다. 그래서볼펜이나장난감총등발사장치가있거나스프링과걸쇠가있는장치를모두뜯어보고어떻게만들어야할지를고민하였습니다. 학교에있는교재와잘못된납땜을떼어내는펌프라고하는장치를응용하여발사장치부분을설계할수있었습니다. - 5 -
그림 4 발사장치의모습 그림 4의후퇴손잡이를뒤로잡아당기면발사축에홈이나있는데그홈에방아쇠가들어가걸리게되고방아쇠를위로들어올리면압축된스프링의힘으로축앞에꼽힌쇠구슬을발사하게됩니다. 탄환즉쇠구슬은직경이 30mm인베어링용쇠구슬중에서열처리가안된것을이용하여만들수있었습니다, 그림 5 탄동진자전체모습도 - 6 -
장치의가장핵심은회전각도, 즉엔코더의펄스수를각도로변환하는장치를만들어사용하는것으로액정디스플레이를이용하여각도를표시하는장치입니다. 장치에서사용한엔코더는 1회전에 1000펄스가나오는제품으로각도로환산하면 0.3도의정밀도를가지고있습니다. ( 오토닉스 E40S6-1000-3-2-24) 엔코더를사용하면서알게된내용으로엔코더의구별은사용되는전압형태와출력형식그리고 1회전당발생하는펄스수를기준으로분리하고있었습니다. 1회전당펄스수가많은것으로는 3600개나오는것도있었습니다. 그림 6 엔코더부분과표시장치부분의모습 그림 7 엔코더의펄스수를각도로변환하기위한마이크로프로세서내장 - 7 -
( 일반물리실험교재에나와있는탄동진자실험장치설명서부분중에서이론 적인내용을퍼옴 ) 전체질량이 M 인진자 ( 탄동진자 ) 에속도, 질량 m 인탄환을수평방향으로쏘 면, 충돌전의탄환의운동량은충돌후의진자 ( 질량 M + m) 의운동량과같아진다. 즉, 충돌전후에운동량이보존된다. ( 그림. 8 참조 ) (1) 탄환이박힌진자가속도 를얻어흔들려진자의무게중심 ( 탄환포함 ) 의높이 h 가최대가되었을때에는그운동에너지는완전히위치에너지로변하게될것이 므로 (2) 또는 (3) 따라서 (4) 여기서 h 는진자의최고높이로 h=r(1-cosθ ) (5) 여기서 R 는진자의끝에서부터탄환과진자의질량중심까지의거리이다. 즉식 (4) 는다음과같이정리된다. 그림.8 탄동진자방법에의한탄환의속도측정방법설명 - 8 -
(6) 낙하거리에의한방법 ( 그림 9 참조 ) 탄동진자를테이블의가장자리에고정하고탄환을수평으로발사하여땅에떨어지 게되는도달거리로부터탄환의초기속도를결정한다. 탄환이발사되어땅에떨어 질때까지의시간을 t 라하면연직거리 H 는 (7) 수평거리 D는 (8) 이므로, t 를소거하면 (9) 즉 D, H를측정하여 를구하는것이다. 그림.9 수평낙하거리측정방법을통한탄환의속도측정방법설명 - 9 -
조사한제품에따라서별도의광학적스톱워치를부착하여탄환의속도를직접측정하는방법이있는것을알수있었습니다. 그러나본장치에는이미엔코더의펄스를측정하기위하여마이크로프로세서를내장하고있기때문에프로그램적으로 2개의광센서의신호를받아들여탄환의속도를직접측정하는방법이가능하여여러가지방법으로측정한값을직접비교할수있는장점이있습니다. 그림 10 2 개의광센서를이용한탄환의속도측정방법 그림 11 광센서 2 를이용하여탄환의속도를광학적으로직접측정하는방법 - 10 -
* 3 가지방법을이용하여측정한결과 ( 3 단발사 ) 1) 탄동진자방법에의한회전각도측정 43.8 / 42.9 / 44.2 / 43.8 / 41.2 5 회측정에서의평균 43.18 ( 편차약 ±2 ) 2) 도달거리측정방법에의한측정높이 780mm 도달거리 : 982mm /980mm/984mm/990mm/982mm 5회측정에서의평균 983.6mm ( 편차약 ±6mm) 3) 속도를광센서1,2를이용하여직접측정하는방법에의한측정치 2 센서사이의거리 100mm (0.1m) 5회측정데이터 0.052sec / 0.051sec/ 0.051sec/ 0.052sec / 0.053sec 시간측정방법이나낙하거리측정방법, 탄동진자방법에의하여탄환의발사 속도는 1.92m/sec ± 0.02 의측정치를가지며, 다른장치에비하여측정편차가상 당히적다는것을알수있다. - 11 -
4. 제작결과 발사체에서발사된쇠구슬의속도측정을통하여선운동량보존개념을이해할수있는탄동진자의실험기구를엔코더라고하는효율적인부품을사용함으로서측정시마찰손실을줄일수있을뿐만아니라정밀한각도측정이가능하다는것을알수있었습니다. 지금껏기구적인장치에의존하던실험기구에전자적인측정방법을활용함으로서실험의효용가치가증가하고있다고생각합니다. 실험을여러가지다양한방법으로구현함으로서학교과학수업의내실화를더많이생각해보게됩니다. 엔코더는작동방식이광센서방식이라마찰없이각도를측정할수있다. 엔코더를탄동진자에활용하면정밀한실험장치를제작할수있다. 프로그램내장방식으로여러가지다양한측정방법이가능하다. 기존의학교에서사용되고있는장치와비교하여여러가지면에서더뛰어난측정이가능하다. 장치가가지는기능 : 진자만으로구성된부분의주기측정 2개의광센서에의한직접속도측정데이터메모리기능회전시마찰손실각도표시기능 개선사항에대하여스프링의텐션의강도를늘려여러강도에서의측정이가능하게한다. 회로기판을내부적으로처리하여고장이발생하지않도록한다. 방아쇠의재질을강한것으로하여마모를적게한다. 탄환받이부분을시각적으로고려한다. - 12 -
- 13 - 첨부 1 ( 장치의회로도 ) + - Battery 1 2 SW1 A 1 K 2 E 3 C 4 U2 SW2 R1 R R2 POT 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 U3 LCD D1 D2 A25 A17 A16 A15 A19 A18 R9 A20 A27 A26 RLY A29 A28 A30 GND 12 GND 31 MCLR/VPP 1 OSC1/CLK 13 RA0/AN0 2 RA1/AN1 3 RA2/AN2 4 RA3/AN3/REF 5 RA4/T0CLK 6 RA5/AN4/SS 7 RB0/INT 33 RB1 34 RB2 35 RB3 36 RB4 37 RB5 38 RB6 39 RB7 40 RC0/T1OSO/T1CLK 15 RC1/T1OSI/CCP2 16 RC2/CCP1 17 RC3/SCK/SCL 18 RC4/SDI/SDA 23 RC5/SDO 24 RC6/TX/CK 25 RC7/RX/DT 26 RD0/PSP0 19 RD1/PSP1 20 RD2/PSP2 21 RD3/PSP3 22 RD4/PSP4 27 RD5/PSP5 28 RD6/PSP6 29 RD7/PSP7 30 RE0/RD/AN5 8 RE1/WR/AN6 9 RE2/CS/AN7 10 OSC2/CLKOUT 14 VDD 11 VDD 32 U1 R31 A21 A22 R32 A8 R10 A1 R11 Y1 A2 R33 R12 R13 A3 C1 C R14 R34 A4 R15 R41 A5 R16 R35 R17 A9 A6 R18 R19 R36 A7 R20 R21 MODE A12 A11 A10 DP A14 A13 R22 A23 R23 A24 V A0 R3 R R4 R A1 V B1B2B0 B4B5B6B7 A 1 K 2 E 3 C 4 U4 R5 R R6 R A2 V A 1 K 2 E 3 C 4 U5 R7 R R8 R A3 V
첨부 2 ( 장치프로그램 ) #include <16F877.H> //#fuses HS,PROTECT #use delay(clock=20000000) #zero_ram #define sw PIN_C1 #define bz PIN_A4 #define angle PIN_B0 // #define drtn PIN_C0 // //LED #define led_g PIN_C2 #define led_r PIN_C3 #byte ccpr1l=0x15 #byte ccpr1h=0x16 #include <lcd_d.c> ///////////////////////////////////////////////////////////////////////////// //// long pulse=0; signed long wichi0=0,wichi=0; int rs,angle10,angle0; ///////////////////////////////////////////////////////////////////////////// /// void beep(){output_low(bz);delay_ms(50);output_high(bz); - 14 -
void beep2(){ int N=3; while(n){ output_low(bz);delay_ms(50);output_high(bz);n--; void lamp_on() {output_high(led_r);output_high(led_g); void lamp_off(){output_low(led_r);output_low(led_g); void angle_dp(){ int time=100; while(time&&input(sw)){ lcd_gotoxy(1,1); printf(lcd_putc,"a:%4lu ",pulse); delay_ms(30); time--; lamp_on(); lamp_off(); void mode1(){ int A=1,B=1; set_timer1(0); beep(); lcd_gotoxy(1,1); printf(lcd_putc,"a:%4lu ",pulse); lamp_off(); // output_high(led_g); while(a){ if(input(angle)){ while(input(angle)&&a){ if(b){ if(!input(drtn)) { output_high(led_r); B=0; - 15 -
else { pulse=get_timer1(); beep(); output_high(led_g); angle_dp(); A=0; if(!input(angle)){ while(!input(angle)&&a){ B=1; void lcd_start() { lcd_gotoxy(1,1); printf(lcd_putc,"balastic"); //////////////////////////////////////////////////////////////// main() { enable_interrupts(int_ext); ext_int_edge(l_to_h); setup_timer_1(t1_external); enable_interrupts(global); - 16 -
set_tris_a(0b000000); set_tris_b(0b00000001); set_tris_c(0b00000011); set_tris_d(0b00000000); set_tris_e(0b000); output_low(bz); lamp_on(); delay_ms(300); output_high(bz); lamp_off(); lcd_init(); lcd_start(); pulse=0; lcd_gotoxy(1,1); printf(lcd_putc,"a: %4ld ",wichi); while(1) { if(!input(sw)) { beep(); wichi=0; wichi0=0; lcd_gotoxy(3,1); printf(lcd_putc," %4ld ",wichi); if(rs){ // wichi0=wichi0*36; angle10=wichi0*36/100; angle0=wichi0*36%100; // lcd_gotoxy(3,1); lcd_gotoxy(3,1); // printf(lcd_putc," %4ld ",wichi0); printf(lcd_putc," %2u.%02u",angle10,angle0); - 17 -
- 18 -