로그인회원등록 내글장바구니주문조회현재접속자
 상품 검색








 게시판 검색





 
 
회원등록 비번분실


온라인 입금계좌
ㆍ기업은행
ㆍ219-043192-01-028
ㆍ이건영

      거래은행 바로가기
 
 Sensor Applications
센서 자료실
작성자 leeky        
작성일 2006/02/24
첨부#1 metal_508_asm.zip (0KB) (Down:105)
Link#1 (Down:55)
ㆍ추천: 0  ㆍ조회: 1123   
  12C508 금속검출기
★ 응용장치
PIC12CXXX 마이크로 제어기는 지능형 금속 검출기 같은 전혀 예측하지 못한 곳에 사용될 수 있습니다.
컴퓨터나 제어장치와 연결된 휴대용(혹은 고정용) 원격제어 금속검출기를 제작하는데 적은 부품만이 필요합니다.
알려진, 금속물은 LC 회로의 공진 주파수를 변화 시킬 수 있습니다.
만일 이 회로가 PIC의 발진 입력에 연결되어 있고, 금속물이 권선 L1(회로도 참조)에 접근하면,
마이크로 콘트롤러의 작동 속도를 변화시킵니다.

마이크로 제어기는 시작할 때 반드시 하나의 주파수를 측정합니다.
그것은 기준 주파수로 저장되고, 현재 측정한 모든 다른 주파수들과 비교합니다.
측정하는 기능을 찾아보면, RC 회로 (R2,R3,C4)는 GP2 핀과 연결되고
계산을 위한 고정시간 간격을 정의 합니다. GP2는 2개의 기능을 가진다:
출력으로 용량 C4의 방전과, 입력으로 C4의 전압을 제어한다. (RC 충, 방전제어)

-아날로그 전압을 측정하기 위해, 피측정 전압을 RC충방전 회로에 충전하여,
일정한 레벨이 되기 까지의 시간을 측정하고, 그 시간을 전압으로 변환하는,
ADC가 없는 저가형 MPU에서 아날로그 신호를 검출하는 방법이다.-
그림 1 작동 파형 참조.

단추 S1 (리셋)은 기준 주파수의 주기적인 교정에 필요하다.
LC 발진기와 RC 회로의 시간 간격은, 작동 온도와 부품의 안정도를 결정되는,
전원 전압의 함수이다. 검출하려는 금속물의 크기는 권선 L1의 크기와 형태로 결정된다.

만일 독립된 소형의 금속검출기가 필요하다면,
출력 GP0와 GP1은 제어되는 LED와 음향 해드폰에 연결될 수도 있다.

만일 우리가 PIC으로 부터의 데이터을 받거나, 조금 특수한 명령을 마이크로 제어기에서 받으려면,
GP0 그리고 GP1은 I2C’의 DATA와 CLOCK 핀으로도 사용할 수 있다.

★ 그림1 :
 

★ 하드웨어 배포 그림:
 

★ 자재 목록
번호-품명 제조회사

U1-PIC12C508 Microchip
C1-15pf any
C2-15pf any
C3-15pf any
C4-470nf any
R1-10K any
R2-100K any
R3-200 any
R4-1K any
S1-button any
D1-LED any
L1 unknown

★ 신호처리 흐름도
금속 검출기와 자동 교정은 PIC 12CXXX에서 도구화 될 수 있는 많은 지능적인 알고리즘이 있습니다.
실험을 위한 알고리즘은 아래와 같다.
  

★ 사용된 마이크로칩 도구.
어셈블러/컴파일러 버전 MPLAB 3.22, MPASM 1.5

★ 참조 A: 소스코드
;************************************************************************
; PIC12CXXX을 사용한 금속 검출을 위한 센서 인터페이스
; Vladimir Velchev가 씀. 1997년. 7월
; (C) AVEX - Vladimir Velchev 개정 1.00
;************************************************************************
; LC 발진 : F=2MHz
; GP5/GP4는 반드시 XT로 배열, OSC1,2는 입력/출력
; GP0 - LED 표시등 (출력: 0=LED 켜기, 1=LED 끄기)
; GP1 - 사용 없음 (음성이나 데이터 핀으로 예약된 출력 /GP0- 클럭)
; GP2 - RC 그룹 - 100mS 측정시간 (입력/출력)
; GP3 - 교정용 리셋 단추 (입력)
; GP4 - LC 발진기 (OSC1 입력)
; GP5 - LC 발진기 (OSC2 출력)

LIST P=12C508
#include <p12C508.inc>

; 정의
LED_Pin equ 0            ;LED 표시등 - GP0
RC_Pin equ 2             ;RC 그룹
RESET_Pin equ 3         ;리셋 단추 핀
FREQ_OFFS equ D'10'   ;주파수. 옵셋 제한 =(문턱) =(최고주파수-F최저주파수)

; 소자의 감도를 정의
START_UP_COUNT equ D'10'     ; 측정 실패의 시작 값
IOSET equ B'00001000'           ; I/O 포트의 초기화

;GP3-입력, 다른 핀들-출력
RC_MASK equ B'00000100'       ; RC핀의 비트 여과틀(MASK) 정의

;*** RAM 위치
Frh equ H'07'     ;기준 주파수 - 상위 바이트
Frl equ H'08'      ;기준 주파수 - 하위 바이트
Fch equ H'09'     ;현재 주파수 - 상위 바이트
Fcl equ H'0A'      ;현재 주파수 - 하위 바이트

;*** Vectors
org 0 ;RESET vector

;*** Code Starting Point
BEGIN:            ; 초기화
movlw IOSET    ;GPIO 초기화
tris GPIO
clrf GPIO        ;모든 핀들의 리셋 (=출력 =0)
movlw H'D2'    ;option register 초기화
option           ;TMR0: 내부클럭, 분주기(prescaler)=1:8

; 시작후의 지연시간 추가
movlw START_UP_COUNT    ;시작 사이클 값을 읽는다
movwf Frl                     ;시작을 위해 카운터에 Frl을 사용한다

START_UP_LOOP:
call CALC_FREQ              ;주파수 서부루틴 호출
decfsz Frl,1                   ;카운터 Frl-1, 만일 0이면 건너 뛴다 (exit)
goto START_UP_LOOP       ;0이 아니면 계속 루프를 돈다

; 기준 주파수의 측정
call CALC_FREQ       ;주파수 계산 서브루틴을 호출한다
movf Fch,W            ;기준 주파수에 복사한다
movwf Frh
movf Fcl,W
movwf Frl

MAIN_LOOP:
call CALC_FREQ        ;현재 주파수의 계산

; 주파수 옵셋의 절대값 계산 =Fc =|Fc - Fb|
movf Frl,W         ;기준 주파수 읽기. 하위 버이트
subwf Fcl,1        ;현재 주파수를 감산
btfss STATUS,C    ;결과가 0 이나 양수이면 건너 뛴다
decf Fch,1         ;결과가 0이 아니면 Fch를 -1

movf Frh,W        ;read reference freq. MSbyte
subwf Fch,1       ;sub. from current freq.
btfss Fch,7        ;결과가 음수이면 건너뛴다
goto CHECK_FREQ ;결과가 양수이면 CHECK_FREQ로 직접 간다
comf Fcl,1         ;음수 옵셋을 양수로 변환
comf Fch,1        ;Fch = Fcl- 옵셋의 절대값(양수)

CHECK_FREQ:     ; 주파수 점검
movf Fch,1        ;주파수 점검. 옵셋의 상위 바이트
btfss STATUS,Z   ;점검 결과가 0이면 한줄 건너 뛴다.
goto LED_ON     ;아니면 LED 켠다
movlw FREQ_OFFS     ;주파수 읽기. 옵셋 상한
subwf Fcl,W      ;옵셋 결과와 비교한다
btfsc STATUS,C   ;결과가 < 옵셋 상한 보다 작으면 건너 뛴다
goto LED_ON     ;아니면 LED 켠다

LED_OFF:
bsf GPIO,LED_Pin       ;LED를 끈다
goto CHECK_RESET     ;리셋 단추 점검으로 간다.

LED_ON:
bcf GPIO,LED_Pin       ;LED= 켠다.

; 리셋 단추 (교정)의 점검
CHECK_RESET:
btfsc GPIO,RESET_Pin   ;리셋 단추가 눌렸으면 건너 뛴다.
goto MAIN_LOOP        ;측정 루프로 간다
goto BEGIN              ;교정 시작으로 간다

;*** 서브루틴 - 주파수 계산
; 출력: Fch:Fcl- 현재 주파수
; 정보 : 외부 발진회로의 현재 주파수를 계산
; Fosc.= 2MHz; Fclk.= 2MHz/4= 500kHz
; TMR0 prescaler: TMR0ps= 1:8
; TMR0freq= Fclk./TMR0ps= 500kHz/8= 62500Hz
; TMR0tick= 1/TMR0freq= 16 uS
; 측정 간격: (RC circuit) TRC = 100mS
; 주파수 카운터 [최대]: Fc= TRC/TMR0tick= 100mS/16uS= 6250
; 주파수 카운터 주기: Frate= Fosc./6250= 320Hz
; |Fmax-Fmin| 간격= FREQ_OFFS*Frate= 10*320Hz = 3200Hz
; Fch:Fcl = Fosc./320

CALC_FREQ:
clrf Fch          ;현재 주파수 카운터를 지움
clrf Fcl

; RC 회로를 방전
movlw IOSET&(~RC_MASK)
tris GPIO              ;RC 핀을 출력으로 고정
bcf GPIO,RC_Pin     ;RC pin= 0
clrf TMR0             ;TMR0를 방전시간으로 사용한다

CALC_FREQ_DISCH:
clrwdt                ;워치독 타이머의 리셋
movlw H'FF'         ;TMR0 오버를 감시
subwf TMR0,W
btfss STATUS,Z     ;TMR0 오버이면 건너 뛴다.
goto CALC_FREQ_DISCH

; RC 시간 간격 회로를 허용
movlw IOSET|RC_MASK
tris GPIO              ;RC 핀을 입력으로 고정
; 계수 시작 (현재 주파수의 측정)
clrf TMR0

CALC_FREQ_LOOP:
clrwdt                 ;워치독 타이머의 리셋
btfsc GPIO,RC_Pin   ;RC 핀이 0이아니면 건너 뛴다
goto CALC_FREQ_STOP   ;아니면 측정을 중지
movlw H'FF'          ;lTMR0 오버를 감시
subwf TMR0,W
btfsc STATUS,Z       ;TMR0 오버가 아니면 건너 뛴다.
incf Fch,1             ;카운터 주파수의 상위 바이트를 증가
goto CALC_FREQ_LOOP

CALC_FREQ_STOP:
movf TMR0,W         ;TMR0의 현재값을 읽는다
movwf Fcl            ;주파수 카운터의 하위 바이트를 저장
return
end                    ;프로그램의 끝

★ 소스화일은 ZIP으로 압축되어 첨부되어 있습니다. 
화일을 내려받기 하십시요.
원저자: http://www.microchip.com/

AVRTOOLS™
   
윗글 Windows Scope 2K4
아래글 16C84 LCD표시 L,C 메터
    N         제목    글쓴이 작성일 조회 추천
74 AT89C2051과 EM4095를 사용한 RFID 장치의 제작 leeky 2006/12/31 (일) 1199 0
73 UserPort for Windows 2000 leeky 2007/11/12 (월) 824 0
72 아날로그 PID 제어 회로 leeky 2007/11/12 (월) 1409 0
71 Windows Scope 2K4 leeky 2007/11/12 (월) 957 0
70 12C508 금속검출기 leeky 2006/02/24 (금) 1123 0
69 16C84 LCD표시 L,C 메터 leeky 2006/02/25 (토) 1167 2
68 89C2051 LCD표시 LC메터의 제작 leeky 2006/02/14 (화) 1177 8
67 12C508A 초음파 거리 측정기 avrtools 2006/02/23 (목) 1062 0
66 Caliper to computer (RS-232) interface leeky 2006/02/23 (목) 1089 4
65 가속도센서 ADXL202의 PIC12C508 인터페이스 leeky 2006/02/20 (월) 1054 2
64 16F84 광학식 심박측정기 leeky 2006/02/27 (월) 1130 6
63 12C508 전자 나침판 leeky 2006/02/27 (월) 727 0
62 ENC28J60 Ethernet to SPI Header Board leeky 2007/03/26 (월) 994 0
61 SHT11 습도센서 8051 인터페이스 leeky 2006/02/14 (화) 1042 0
60 SHT11 습도센서 SX18 인터페이스 leeky 2006/03/16 (목) 687 2
59 SRF04 초음파 거리센서의 제작 leeky 2006/02/25 (토) 686 0
58 Ambient Light Sensors TSL2550 avrtools 2006/04/06 (목) 501 0
57 PIC16F877A BioSense Physiologic Sensing leeky 2006/04/06 (목) 612 0
56 Electrocardiogram (ECG) Front End leeky 2006/04/06 (목) 686 0
55 Biometric Interface Board leeky 2006/04/06 (목) 802 0
54 MAX2242 802.11b 블루투스 RF증폭기 leeky 2006/04/06 (목) 500 0
53 AX.25 9600BPS 무선모뎀 L2PCX leeky 2006/04/06 (목) 386 0
52 TCS230 색상검출 평가키트 leeky 2006/04/06 (목) 1671 0
51 100V10A 50W 전자부하 leeky 2006/04/06 (목) 582 0
50 FLAME SENSOR UVTRON R2868 leeky 2006/04/06 (목) 570 0
49 Compact Optical Image Scanner leeky 2006/04/06 (목) 509 0
48 지자기 방위계 모듈 CMPS03 leeky 2006/04/06 (목) 650 0
47 0~1.5KV 정전기 측정센서 PKE05A1 leeky 2006/04/06 (목) 348 0
46 Rain Sensor 인터페이스 회로 leeky 2006/04/06 (목) 574 0
45 초음파 감지 센서 leeky 2006/04/06 (목) 573 0
44 HUMIDITY SENSOR HS-1100 leeky 2006/04/06 (목) 440 0
43 Relative Humidity Sensor KSH01, KSH-02 leeky 2006/04/06 (목) 334 0
42 Digital Radar Speedometer leeky 2006/04/06 (목) 501 0
41 Touch Sensitive Switch leeky 2006/04/06 (목) 546 0
40 Economy radar detector leeky 2006/04/06 (목) 380 0
39 Twin Loop metal detector leeky 2006/04/06 (목) 512 0
38 Proximity Detector CS209A/D leeky 2006/04/06 (목) 501 0
37 Lego Sound Sensor leeky 2006/04/06 (목) 449 0
36 12C508 IR Proximity Detector leeky 2006/04/06 (목) 661 0
35 Sharp IR Sensor Hack leeky 2006/04/06 (목) 638 0
34 TIL300 PRECISION LINEAR OPTOCOUPLER leeky 2006/04/06 (목) 396 0
33 Analog Opto Isolator leeky 2006/04/06 (목) 442 0
32 Rich Caudle's capaciflector leeky 2006/04/06 (목) 286 0
31 Geiger Tube leeky 2006/04/06 (목) 394 0
30 Lynxmotion Infrared Proximity Detector leeky 2006/04/06 (목) 372 0
29 Low Power LED Flasher leeky 2006/04/06 (목) 450 0
28 백색 LED BLU 구동회로 leeky 2006/04/06 (목) 483 0
27 저전압 백색 LED 구동회로 leeky 2006/04/06 (목) 516 0
26 IR LED 송신회로 avrtools 2006/04/06 (목) 500 0
25 LED 총방사 광량의 측정 leeky 2006/04/06 (목) 412 0
24 자외선 측정센서의 교정 leeky 2006/04/06 (목) 363 0
23 UV센서 S9050의 데이터 leeky 2006/04/06 (목) 278 0
22 디지털 자외선 메터 leeky 2006/04/06 (목) 327 0
21 Simple Metal Detector leeky 2006/04/06 (목) 520 0
20 DS1820 온도센서 읽기 leeky 2006/04/04 (화) 576 0
19 RC5 적외선 리모콘의 신호처리 leeky 2006/02/17 (금) 670 0
18 NEC 적외선 리모콘의 전송규격 leeky 2006/02/17 (금) 563 0
17 MBI-6001 TRANSLESS LED DRIVER leeky 2006/02/14 (화) 397 0
16 PC로 제어하는 AD9850 DDS 신호발생기 leeky 2006/02/14 (화) 441 0
15 2400 Mhz test oscillator leeky 2006/02/14 (화) 464 0
14 DC BRUSHLESS FANS leeky 2006/02/14 (화) 551 0
13 RF mW Meter for SHF (2300MHz) leeky 2006/02/14 (화) 381 0
12 FET로 만드는 400W SSR leeky 2006/02/14 (화) 613 0
11 Scope2k4 소프트웨어 및 하드웨어 회로 leeky 2006/02/14 (화) 729 0
10 LTC1298를 사용한 PC 병렬포트용 ADC leeky 2006/02/14 (화) 398 0
9 0~14V 가변정전압, 0~2A 가변정전류 전원 avrtools 2006/02/14 (화) 524 0
8 ATV 1240-1300MHz 튜너용 PLL leeky 2006/02/14 (화) 279 0
7 1 Transistor FM Microphone leeky 2006/02/14 (화) 334 0
6 Helical Antenna Design Software leeky 2006/02/13 (월) 435 0
5 IRF510을 사용한 7MHz 출력10W 증폭기, PLL leeky 2006/02/13 (월) 489 0
4 MC34063A 설계용 계산기 avrtools 2006/02/13 (월) 467 0
3 RS232 신호 변환회로 leeky 2006/02/13 (월) 617 0
2 Sound card based multimeter Scope leeky 2006/02/13 (월) 752 0
1 2400MHz Helical Antenna Design leeky 2006/02/08 (수) 397 0
1

바구니 : 0
 보관함 : 0
오늘뷰 : 0
HOME   |   회사소개   |   제휴안내   |   회사위치   |   서비스이용 약관   |   개인정보 보호정책   |   사이트맵
17015 경기도 용인시 기흥구 동백중앙로16번길 16-25, 508호. 전화 : 031-282-3310
사업자 등록번호 : 697-47-00075 / 대표 : 이건영 / 업태 : 제조업 / 종목 : LED조명, LED전원, 제어장치.
개인정보 관리책임자 : 홈페이지 관리자 . Copyright ⓒ2016 아크레즈 (ACLEDS INC.)
HOME TOP PREVNEXT 0 0 0