검색으로 들어오시는 분들이 많아서 링크를 하나 더 올립니다.
아래 링크는 같은 회로에 큰 코일로 테스트 한 것 입니다.
코일만 잘 감으면 감도가 많이 올라갑니다.
첫 번 째 모델의 동작 동영상 입니다. 2N2222 트랜지스터를 이용하여 만들었습니다. 아직 튜닝 및 코딩이 완전하지 않기 때문에 잡음에 불이 들어오거나 탐지 거리가 엉망입니다.
두 번 째 모델의 동작 동영상입니다. 555 타이머를 이용해서 만들었습니다. 아두이노에 붙여서 펄스 카운팅을 하려고 했으나 계속 실패하고 있어서 우선 소리로 구분하는 단계에서 머물러 있습니다.
가장 감도가 좋은 세 번 째 모델입니다.
[그림 1] 두 번 째 모델과 실험 도중 사망한 555 타이머 시체들 ㅠ.ㅠ
감도를 높이기 위해 갖은 시험을 하는 도중, 인터넷에 찾은 사이트에서 코일을 쿠킹 호일로 감싸서 사용하길래 따라서 해보았으나 별로 달라진 것은 없어 보입니다. 코일을 많이 감으면 어떨까 해서 150번까지 감아서 테스트 해보았으나, 신통치 않습니다. (오히려 감도가 떨어진 것 같아서 원래 코일로 되 돌아 옴)
첫 번 째 모델은 아래의 링크를 참조하여 만들었습니다.
[그림 2] 555 타이머를 이용한 금속 탐지기
세 번 째 모델은 아래의 링크를 참조하여 만들었습니다. 서치 코일은 CD 롬 케이스 뚜껑에 28번 감아서 사용했고, 레퍼런스 코일은 딱풀통에 3.3 cm 감아서 사용했습니다. 한 두 바퀴 차이에도 감도가 예민하니 대충 그 정도에서 풀거나 더 감아서 소리가 멈추는 순간에서 튜닝을 마치시면 됩니다. 애너멜 선은 0.21mm 굵기를 사용하였습니다.
#include <pinchangeint.h> #define pin_led 3 #define pin_pulse 5 volatile int pulse_count = 0; void setup() { Serial.begin( 9600 ); pinMode( pin_led, OUTPUT); pinMode( pin_pulse, INPUT ); digitalWrite( pin_pulse, HIGH ); PCintPort::attachInterrupt( pin_pulse, on_pulse, RISING ); } unsigned long old_tick = 0; unsigned long tick = 0; unsigned long term = 0; int value = 0; int interval = 100; void loop() { if (old_tick == 0) { old_tick = millis(); return; } tick = millis(); term = term + tick - old_tick; if (term >= interval) { value = pulse_count; pulse_count = 0; value = value * term / interval; term = 0; // TODO: if (abs(value - 150) > 100) { digitalWrite( pin_led, HIGH ); } else { digitalWrite( pin_led, LOW ); } Serial.print( "pulse_count:\t" ); Serial.println( value, DEC) ; } old_tick = tick; } void on_pulse() { pulse_count++; }
아두이노 - 찰리플렉싱 (Charlie Plexing) (0) | 2015.05.10 |
---|---|
아두이노 - 만보기 게임 (4) | 2015.05.05 |
아두이노 - 주사위 만들기 (0) | 2015.04.19 |
아두이노 - 뮤직박스 (0) | 2015.04.19 |
SW-420 센서 (0) | 2015.04.12 |