







Study with the several resources on Docsity
Earn points by helping other students or get them with a premium plan
Prepare for your exams
Study with the several resources on Docsity
Earn points to download
Earn points by helping other students or get them with a premium plan
Material Type: Notes; Professor: Goodman; Class: Senior Design; Subject: Electrical & Computer Egr; University: Michigan State University; Term: Unknown 1989;
Typology: Study notes
1 / 13
This page cannot be seen from the preview
Don't miss anything!








Bottom of Printed Circuit Board Top of Printed Circuit Board
FlexiForce Sensor Force-to-Voltage Circuit Application ( taken from FlexiForce Sensor Manual)
NiMH Battery Fast-Charge Controller Datasheet Excerpt
Quantity Part Number Description Total 1 MAX603CPA+ IC LDO REG LOW-IQ 5V/ADJ 8-DIP 4. 1 CD4541BE IC PROGRAMABLE TIMER 14-DIP 0. 1 L7809ABV IC PREC 1A REGULATOR 9V TO-220 0. 4 2N5401BU IC TRANS PNP SS HV 600MA TO-92 0. 1 ZFLEXA201-1-4PK A201-1 Sensor (4-Pack) 59. 3 2N6109G PNP Transistor 4. 2 MAXMAX712CPE+ IC BATT FASTCHRG NICD/NIMH 16DIP 15. 2 PIC18LF2520-I/SP IC MCU FLASH 16KX16 28SDIP 19. 8 HHR-210AA/B2B
Total Shipping 24. Total Cost 167. Project Development Budget Partlist EAGLE Version 4.16r Part Value Device Package BATTERY 3.6 V R-US_0204/2V 0204V C1 10 uF CPOL-USB45181A B45181A C2 10 uF CPOL-USB45181A B45181A C3 1 uF CPOL-USB45181A B45181A C9 0.01 uF C-US050-024X044 C050-024X C10 0.01 uF C-US075-042X103 C075-042X C11 10 uF C-US050-024X044 C050-024X C12 10 uF CPOL-USB45181A B45181A D1 1N4001 1N4148 DO35- DZ1 LZR184 LZR184 LZR IC1 MAX712CPE MAX712CPE DIL IC2 MAX604 MAX665 DIL J1 JACK-PLUG0 SPC LED1 Yellow LEDLD260 LD LED2 Red LEDLD260 LD LH1526AB AQW21 AQW21 DIL ON-OFF 9450-1 9450-1 9450- Q1 2N6109 2N6107 TO R1 560k R-US_0204/2V 0204V R2 560k R-US_0204/2V 0204V R3 330 R-US_0204/2V 0204V
R7 15k R-US_0204/2V 0204V R8 15k R-US_0204/2V 0204V R9 1M R-US_0204/2V 0204V R10 1M R-US_0204/2V 0204V R11 1M R-US_0204/2V 0204V R12 1M R-US_0204/2V 0204V R13 1k R-US_0204/2V 0204V R14 1k R-US_0204/2V 0204V R15 68k R-US_0204/2V 0204V R16 22k R-US_0204/2V 0204V R17 470 R-US_0204/2V 0204V R18 150 R-US_0204/2V 0204V R19 1.2k R-US_0204/2V 0204V R20 R-US_0204/2V 0204V R22 1.5 R-US_0613/15 P0613/ R23 R-US_0204/2V 0204V S1 DIP04S DIP04S S2 RACON12 RACON12 RACON S3 RACON12 RACON12 RACON SG3 F/QMBIII F/QMBIII F/QMBIII U$1 PIC18F2520-I/SP PIC18F2520-I/SP DIL28- X1 1503_09 1503_09 1503_ X2 1503_09 1503_09 1503_ X3 1503_09 1503_09 1503_ Total Cost 48. Device Component List and Total Cost
/************************** Sensor A **********************************/ // RC7 puts us into cal for sensorA if( !PORTCbits.RC7 ) { SetChanADC(ADC_CH1); //Set ADC to Pin 5 ConvertADC(); //perform ADC conversion while(BusyADC()); //wait for result adc_result = ReadADC(); //get ADC result // if this is the first cycle we see the switch // delete the old threshold value if ( firstA ) { thresholdA = 307; // set minimum value avoids incorrect cal firstA = 0; // reset this value } PORTCbits.RC1 = 1; // calibration light on // set the threshold to the maximum value read while cal button is pressed if( adc_result > thresholdA ) { thresholdA = adc_result; } } // end of calA /************************** Sensor B **********************************/ // RC3 puts us into cal mode for sensorB if( !PORTCbits.RC3 ) { SetChanADC(ADC_CH0); //Set ADC to Pin 2 ConvertADC(); //perform ADC conversion while(BusyADC()); //wait for result adc_result = ReadADC(); //get ADC result // if this is the first cycle we see the switch // delete the old threshold value if ( firstB ) { thresholdB = 307; // set minimum value avoids incorrect cal firstB = 0; // reset this value } PORTCbits.RC4 = 1; // calibration light on // set the threshold to the maximum value read while cal button is pressed if( adc_result > thresholdB ) { thresholdB = adc_result; } } // end of calB } // end of cal mode // otherwise we are not in calibration else
{ // Not in calibration so reset first flags firstA = 1; firstB = 1; // Turn off cal lights PORTCbits.RC1 = 0; PORTCbits.RC4 = 0; /************************** Sensor A **********************************/ SetChanADC(ADC_CH1); //Set ADC to Pin 3 ConvertADC(); //perform ADC conversion while(BusyADC()); //wait for result adc_result = ReadADC(); //get ADC result // turn on relay A if( adc_result > thresholdA /new stuff/ || (PORTCbits.RC0 && ( adc_result > (thresholdA * 80)/100 ) ) ) { AisOn = 1; Acount++; } else { AisOn = 0; Acount = 0; } /************************** Sensor B **********************************/ SetChanADC(ADC_CH0); //Set ADC to Pin 2 ConvertADC(); //perform ADC conversion while(BusyADC()); //wait for result adc_result = ReadADC(); //get ADC result // turn on relay B if( adc_result > thresholdB /new stuff/ || (PORTCbits.RC5 && ( adc_result > (thresholdB * 80)/100 ) ) ) { BisOn = 1; Bcount++; } else { BisOn = 0; Bcount = 0; } // buzzer config if( PORTCbits.RC5 || PORTCbits.RC0 ) { buzzCount++; if( PORTBbits.RB0 && !PORTBbits.RB1 ) // buzzer on { if( AisOn )
{ if( AisOn && Acount > 50 ) { PORTBbits.RB4 = 1; PORTCbits.RC0 = 1; } else { PORTBbits.RB4 = 0; PORTCbits.RC0 = 0; } if( BisOn && Bcount > 50 ) { PORTCbits.RC5 = 1; PORTBbits.RB5 = 1; } else { PORTCbits.RC5 = 0; PORTBbits.RB5 = 0; } } else // longer delay { if( AisOn && Acount > 150 ) { PORTBbits.RB4 = 1; PORTCbits.RC0 = 1; } else { PORTBbits.RB4 = 0; PORTCbits.RC0 = 0; } if( BisOn && Bcount > 150 ) { PORTCbits.RC5 = 1; PORTBbits.RB5 = 1; } else { PORTCbits.RC5 = 0; PORTBbits.RB5 = 0; } } } } // end of not in cal else } // end of while } // end of main