.:For details:.
Breaker 9552020601
 
HomePortalGalleryFAQSearchMemberlistUsergroupsRegisterLog in

Share | 
 

 picoDetector : How to detect metal with a PIC

View previous topic View next topic Go down 
AuthorMessage
Breaker
Admin


Posts : 246
Join date : 2008-10-01
Age : 28
Location : $@ngli

PostSubject: picoDetector : How to detect metal with a PIC   Mon Feb 08, 2010 9:28 pm

Download Project

picoDetector circuit schematic


picoDetector source code
/*
*******************************************************************************
* picoDetector : an ultra simple and cheap metal detector
*******************************************************************************
*
* target : PIC12, oscillator in HS mode, watchdog enabled
*
* PIC PIN Assignemnt :
*
* GP0 : detect LED indicator
* GP1 : calibrate LED indicator
* GP2 : NC
* GP3 : NC
* GP4, GP5 : inductor
*
*******************************************************************************
*/

#define MAXTRY 15 // number of watchdog restart to calibrate loop counter

unsigned char ctr ; // number of loops between two watchdog resets
unsigned char previous ; // previous value of ctr
unsigned char calibr ; // calibration value when oscillator runs free
unsigned char restarts ; // number of watchdog restarts
unsigned char en ; // enable flag, allows detection

/*
* main loop
*/
void main()
{
unsigned char i ;


/*
* configure GPIO as digital port
*/
CMCON0 = 7 ;
ANSEL = 0 ;
TRISIO = 0 ;
GPIO = 0 ;

/*
* power up ?
*/
if(STATUS.NOT_TO)
{
/*
* yes, init variables
*/
restarts = 0 ;
calibr = 1 ;
}

/*
* watchdog reset counter
*/
if(restarts < 255) restarts++ ;

/*
* if counter differs too much from calibration value
*/
if((previous ^ ctr) > calibr)
{
/*
* turn detect LED on
*/
GPIO.F0 = en ;

/*
* if not on power up
*/
if(STATUS.NOT_TO == 0)
{
/*
* while in calibration mode
*/
if(restarts < MAXTRY)
{
/*
* shift calibration value
* and wait a little bit
*/
calibr <<= 1 ;
Delay_ms(5) ;
}
}
else
{
/*
* turn detect LED off
*/
GPIO.F0 = 0 ;
}
}

/*
* save last counter
*/
previous = ctr ;

/*
* is calibration over ?
*/
if(restarts > MAXTRY)
{
/*
* yes, turn calibrate LED off
* and set enable flag
*/
GPIO.F1 = 0 ;
en = 1 ;
}
else
{
/*
* no, turn calibrate LED on
* and clear enable flag
*/
GPIO.F1 = 1 ;
en = 0 ;
}

/*
* set watchdog prescaler
*/
OPTION_REG = 0b11111001 ;

/*
* start counter, to be interrupted by watchdog
*/
ctr = 0 ;
for( ;; )
{
ctr++ ;
}
}
Back to top Go down
View user profile http://breaker.forumotion.net
 
picoDetector : How to detect metal with a PIC
View previous topic View next topic Back to top 
Page 1 of 1
 Similar topics
-
» Metal Slug Anthology (Wii) "pre owned" disc only.
» Huge Silver Haul Found On WWII Shipwreck
» How to solve problem for dynamic ID changes using selenium
» Your Favourite Mario Kart 7 Character/Kart Combinations
» -- FILEFISH / SONANG --

Permissions in this forum:You cannot reply to topics in this forum
Breaker :: Funda of electronics :: Microcontroller Projects-
Jump to: