Instructables

IR radar system

Picture of IR radar system
IMG_7442.jpg
IMG_7448.jpg
IMG_7449.jpg
IMG_7450.jpg
Recently I've worked on a IR radar system by utilizing the sharp GP2D12 sensor. The sensor generates a voltage proportional to the distance to the measured object. I've used a PIC 18F458 microcontroller to measure that voltage and draw a radar screen on the 128x64 graphical LCD display.

The microcontroller also generates the pwm signals for driving the RC servo motor. The servo motor turns the IR sensor for scanning the environment.
 
Remove these adsRemove these ads by Signing Up

Step 1: Videoclip

Picture of videoclip
here is a videoclip of the system while working.


Step 2: Circuit schematic

Picture of circuit schematic
here is the circuit schematic and the proteus simulation file

a more detailed version of the circuit schematic is in the zip file.

the DSN file is also full detail. it also simulates the circuit, all you need to do is to download the proteus demo version from www.labcenter.co.uk

Step 3: Source Code

#include <18F458.h>
#device ADC=8
#fuses HS,NOWDT,NOPROTECT,NOLVP
#use delay(clock=8000000)
#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7)

#define GLCD_WIDTH 128

#define GLCD_E PIN_E0 // Enable
#define GLCD_DI PIN_B5

#define GLCD_CS1 PIN_A1 // Chip Selection 1
#define GLCD_CS2 PIN_B0

#define SERVO PIN_A3

#include <HDM64GS12.c>
#include <graphics.c>
#include <math.h>

char message[] = "EndtaS RaDaR";
float theta = 0, ytheta;

void main() {

int1 enbas;
int mesafe;
int car1, sayac, a;
int16 servopos;

setup_adc_ports(RA0_ANALOG);
setup_adc(ADC_CLOCK_INTERNAL);
set_adc_channel(0);
enbas:
glcd_init(ON);

glcd_fillScreen(OFF);

glcd_text57(30, 0, message, 1, 1);

glcd_circle(29, 37, 26, 0, 1) ;
glcd_pixel( 29 , 37 , ON);
theta = 7.85;
servopos = 550;
printf("Scan_START\r\n");
while(TRUE){

mesafe = read_adc();
//printf("th: %f -> %u \r\n\n",theta, mesafe);

ytheta = theta;
sayac = 1;
if ( enbas == TRUE ){
sayac = 50;
}
for ( a=0 ; a<sayac ; a++){
output_high(servo);
delay_us(servopos);
output_low(servo);
delay_us( 20000 - servopos );
}
if ( enbas == TRUE ) {
glcd_circle(29, 37, 25, 1, 0);
glcd_pixel( 29 , 37 , ON);
printf("Scan_START\r\n");
delay_ms(300);
}

if (ytheta >= 4.51 ) {
ytheta -=.02;
servopos += 12;
enbas = FALSE;
}
else {
//glcd_circle(29, 37, 25, 1, 0) ;
ytheta = 7.85;
servopos = 550;
//glcd_pixel( 29 , 37 , ON);
enbas = TRUE;
printf("Scan_COMPLETE\r\n");
}

//glcd_pixel( 28+(int)(car1*sin(-theta)+.5), 38-(int)(car1*cos(theta)+.5), OFF);

//glcd_pixel( 28+(int)(car1*sin(-theta-1)+.5), 38-(int)(car1*cos(theta-1)+.5), OFF);

theta = ytheta;

car1 = mesafe / 8;
glcd_pixel( 28+(int)(car1*sin(-theta)+.5), 38-(int)(car1*cos(theta)+.5), ON);
//delay_ms(10);
}
}
Reivach7771 year ago
Hello, friend. Thanks for sharing your work. But, I try to compile, and got some errors.

I'll apreciate it, if you could help me.

Clean: Deleting intermediary and output files.
Clean: Deleted file "Radar.ESYM".
Clean Warning: File "C:\Microcontroller software\PICC\Devices\Radar.o" doesn't exist.
Clean: Deleted file "Radar.ERR".
Clean: Done.
Executing: "C:\Microcontroller software\PICC\Ccsc.exe" +FH "Radar.c" I+="C:\Microcontroller software\PICC\Devices" +DF +LN +T +A +M +Z +Y=9 +EA
*** Error 18 "Radar.c" Line 17(10,23): File can not be opened
Not in "C:\Microcontroller software\PICC\Devices\HDM64GS12.c"
Not in local "C:\Trabajos Micro2\HDM64GS12.c"
*** Error 18 "Radar.c" Line 18(10,22): File can not be opened
Not in "C:\Microcontroller software\PICC\Devices\graphics.c"
Not in local "C:\Trabajos Micro2\graphics.c"
*** Error 18 "Radar.c" Line 19(10,18): File can not be opened
Not in "C:\Microcontroller software\PICC\Devices\math.h"
Not in local "C:\Trabajos Micro2\math.h"
*** Error 12 "Radar.c" Line 35(10,11): Undefined identifier -- glcd_init
*** Error 12 "Radar.c" Line 37(16,17): Undefined identifier -- glcd_fillScreen
*** Error 12 "Radar.c" Line 39(12,13): Undefined identifier -- glcd_text57
*** Error 12 "Radar.c" Line 41(12,13): Undefined identifier -- glcd_circle
*** Error 12 "Radar.c" Line 42(13,14): Undefined identifier -- glcd_pixel
*** Error 12 "Radar.c" Line 63(12,13): Undefined identifier -- glcd_circle
*** Error 12 "Radar.c" Line 64(13,14): Undefined identifier -- glcd_pixel
*** Error 12 "Radar.c" Line 90(13,14): Undefined identifier -- glcd_pixel
11 Errors, 0 Warnings.
Halting build on first failure as requested.
BUILD FAILED: Wed May 22 02:15:15 2013

Pro

Get More Out of Instructables

Already have an Account?

close

PDF Downloads
As a Pro member, you will gain access to download any Instructable in the PDF format. You also have the ability to customize your PDF download.

Upgrade to Pro today!