25.9.10

Processing explanation of Ultrasonic Range Meter

    This range meter detects a reflected wave from the object after sending out a ultrasonic pulse.
    By measuring the time which returns after emitting a sound wave, a distance to the object is measured.
    The operation of the following figure is repeatedly executed.
    LED display processing is executed in parallel with this operation.
    Label definition
    ;**************** Label Definition ********************        cblock  h'20's_count                         ;Send-out pulse count adr
    endc
    I used CBLOCK directive for the definition of the workarea.
    When using this directive, workareas which were defined between CBLOCK and ENDC are automatically allocated in the order from the address which was specified by the operand of CBLOCK. It is convenient because it is possible to prevent the double allocation of the area. To confirm an allocated address, you confirm it by the assembly result.
    Lighting-up segment data for 7 segments LED are designated by EQU.
    The data from 0 to 9 is used for digital display. However, the 10th is used for the detection error display.
    At first, I make light up only center segment. But I turned off all segments because the display was confusing.
    The 11th is used for the interruption error display. It is for the debugging.
    Environment designating and others
    The following specification is done as configuration word.
    Oscillator
    :
    HS
    Watchdog Timer
    :
    OFF
    Power-up Timer
    :
    enabled
    Low Voltage ICSP
    :
    OFF
    (RB3 can not be used for the input/output port when not making this OFF).
    The result is 3F72h.
    Initialization process
    ;****************  Initial Process  *********************
    Port initialization
    Because the RA0/AN0 port is used for input of A/D converter, it is set to input mode. Other A ports are set to the output. All B ports are set to output because it is used for the LED segment control.
    RC2/CCP1 of C port is set to the input mode because it is used for input of capture.
    Ultrasonic transmission period timer(TMR0) initialization
    The transmission period of the ultrasonic is controlled using timer0. Because timer0 is a timer with byte, the count value is up to 256. However, it is making count 65535 by setting the prescaler to 256. (256 x 256 = 65535) This time, because it is using 4 MHz for the oscillator, 1 count is 1 microsecond. (1/(4 x 106))x4=10-6 seconds
    So, the time-out time of timer0 is about 65 milliseconds.
    Capture mode initialization
    Timer1 is used for capture. Timer1 is initialized.
    At the time of the initialization, it makes CCP1 OFF to prevent from a malfunction.
    A/D converter initialization
    Channel 0 is set as the converter input. Because the clock to use this time is 4 MHz, Fosc/8 is set to A/D conversion clock.
    Because the higher rank side of the A/D converted result are used, the storage of the result is made right justification (ADFM=0).
    Because A porta are used for the output of the digit specification of the LED, ports except RA0/AN0 are made digital specification.
    LED display period timer(TMR2) initialization
    Display data for 7 segments LED are set to workarea. The initial value of the display is "the error code".
    The time-out of timer2 is about 10 milliseconds.
    The interruption eable bits of the capture and timer2 are set.
    Interruption initialization
    It makes timer0 interruption, peripheral device interruption, global interruption possible.
    The interruption of the capture and timer2 doesn't occur when not making peripheral device interruption possible.
    By this process, interruption operation is started.
    When the initialization process ends, the interruption is waited for. It executes same address repeatedly.
    Interruption process
    ;***************  Interruption Process  *****************
    Capture interruption, timer2 interruption, timer0 interruption are checked. The kind of the interruption is judged by each interruption flag. After that, it jumps to the corresponding interruption process.
    When the kind of the interruption is unsettled, processing is stopped. To confirm illegal interruption with the actual circuit, an in-circuit simulator is needed. There is a way of resetting but it isn't improved because it does the same operation even if it resets.
    A global interruption enable bit (the GIE bit) is automatically cleared when the interruption occurs. So, the interruption never occurs while processing in the interruption.
    Illegal interruption process
    ;*************** Illegal interruption *****************
    It displays an interruption error to the LED when the illegal interruption occurs.
    This process is the process for debugging and is usable with the other checking, too.
    Interruption ending process
    ;************  END of Interruption Process **************
    As for the software this time, all processing is done by the interruption except the initialization processing. The common registers(W register, Status register) are not used in the interrupted process (Main process). So, the saving and resaving process for them isn't need.
    In the interruption ending process, GIE bit is set by RETFIE instruction to enable interruption.
    Ultrasonic pulse sending-out process
    ;***************  Pulse send-out Process ****************
    In the pulse sending-out process, the following process is done.
    Clear the interruption display
    The interruption flag of TMR0 is cleared. When not clearing this flag, the interruption occurs at once when interruption processing is ended without waiting a regular time-out.
    I clear the count area of timer0 because of the sure operation.
    Check the detection error
    When the detection of the reflected wave isn't done from the pulse sending-out in the last time until the pulse sending-out this time, it means measurement impossible and display is turned off. The previous data is displayed in the measurement impossible condition when not doing this process and the mistake occurs to the measurement.
    Stop the reflected wave detector
    Immediately after letting out a transmission pulse, the influence occurs to the receiver circuit and there is possibility to do wrong detection. To prevent from this, the operation of the reflected wave detector is stopped. The RA4 port is an open type and an external resistor is needed. So, I used RA5.
    Start the capture operation
    The count area of timer1 and the contents of the capture register are cleared. the rising edge detection mode capture is set and a capture interruption enable bit is set. And an interruption flag is cleared because of the sure operation.
    Send-out the 40KHz pulse
    The 40KHz pulse is the pulse which has 12.5 µ-sec as ON time and 12.5 µ-sec as OFF time in 1 cycle.
    Because 4-MHz clock is used at the circuit this time, the instruction execution time is 1 microsecond. So, correct 40KHz can not be sent out. When doing ON, OFF respectively with the 12 µ-sec, it is 41.7KHz. In case of 13 µ-sec, it is 38.5KHz. This time is adjusted by changing the number of the steps in the pulse sending-out processing.
    It is 0.5 milliseconds when sending out 20 pulses. (20pulses x 0.025milliseconds/pulse)
    Take-in the display revision data
    To make operate A/D converter, the GO bit of the ADCON0 register is set. When switching the input channel of A/D converter, after switching the input, about 20 microseconds waiting time is needed. This time, because the input channel is fixed on 0, waiting time isn't necessary. The completion of the A/D conversion is judged by the checking the GO bit. When GO bit is cleared, the conversion is completion. The upper 3 bits is picked up and add 54 as the conversion value.
    Error detection prevention
    A detector is stopped until the influence ends to the receiver after sending out a pulse. I set this time to about 1 millisecond. When few influences occur, it is to be OK even if it is shorter. When many influences occur, it is necessary to make longer.
    Start the reflected wave detection
    After the wrong detection prevention time elapse, it is made a enable condition in the reflected wave detection.
    Capture interruption process
    ;******************  Capture Process ********************
    In the capture interruption process, the following process is done.
    Clear the interruption display
    Capture interruption flag is cleared.
    Distance conversion processing
    The count value of the timer0 which was stopped by the capture operation is proportional to the propagation time of the sound wave. It isn't possible to use for the display just as it is. In the processing this time, division by some value is done and is converted into the distance numerical value.
    For example, I will explaine in case to have been reflected from the 1-m distance.
    In the time that the sound wave goes and returns in 1 m, it is 2m/343m/sec=5831 microseconds in case of 20°C. Because the clock of timer0 is 1µ-sec/count, the value of the timer0 when a capture is done is 5831. It is to be OK if using 58 as the divisor to make display this value as 100(It displays 1 m). The value to take in by the A/D converter is used for a divisor. So, when the temperature is different, the display can be revised if changing the input voltage to the A/D converter. But, because it is changed in the digital, it isn't possible to do fine adjustment.
    Display setting processing
    Because the type of distance value which is converted is binary, it can not be displayed on the LED just as it is.
    Binary number is converted into the decimal number and is set to each workarea(100th, 10th, 1st).
    When 100th digit exceeds 9, it makes error display.
    LED display process
    ;****************  LED display control  *****************
    This is the process to display the distance numerical value which was gotten by the capture to the LED.
    One LED is controlled at each period. So, only 1 digit is displayed at the same time.
    Display is done every 10 milliseconds using timer2. When the display flickers, you should make the set value of timer2 more little and it quickens a period.

Circuit explanation for Ultrasonic Range Meter

    Receiver circuit
    Signal amplification circuit
    The ultrasonic signal which was received with the reception sensor is amplified by 1000 times(60dB) of voltage with the operational amplifier with two stages. It is 100 times at the first stage (40dB) and 10 times (20dB) at the next stage.
    As for the dB (decibel), refer to "Logarithm Table".
    Generally, the positive and the negative power supply are used for the operational amplifier. The circuit this time works with the single power supply of +9 V. Therefore, for the positive input of the operational amplifiers, the half of the power supply voltage is appied as the bias voltage. Then the alternating current signal can be amplified on 4.5V central voltage. When using the operational amplifier with the negative feedback, the voltage of the positive input terminal and the voltage of the negative input terminal become equal approximately. This is called virtual grounding. So, by this bias voltage, the side of the positive and the side of the negative of the alternating current signal can be equally amplified. When not using this bias voltage, the distortion causes the alternating current signal. This technique is often used when using the operational amplifier which needs two kinds of powers in the single power.
    As for the operation of the operational amplifier, refer to "Operation explanation of the triangular wave oscillator".
    Detection circuit
    The detection is done to detect the received ultrasonic signal. This is the half-wave rectification circuit with Shottky barrier diodes. The DC voltage according to the level of the detection signal is output to the capacitor behind the diode. The Shottky barrier diodes are used because the high frequency characteristic is good.
    As for the Shottky barrier diode, refer to "Diodes".
    Signal detector
    This circuit is the circuit which detects the ultrasonic which returned from the measurement object. The output of the detection circuit is detected using the comparator. At the circuit this time, the operational amplifier of the single power supply is used instead of the comparator. The operational amplifier amplifies and outputs the difference between the positive input and the negative input.
    In case of the operational amplifier which doesn't have the negative feedback, the output becomes the saturation state by a little input voltage. Generally, the operational amplifier has over 10000 times of mu factors. So, when the positive input becomes higher a little than the negative input, the difference is tens of thousands of times amplified and the output becomes the same as the power supply almost.(It is the saturation state) Oppositely, when the positive input becomes lower a little than the negative input, the difference is tens of thousands of times amplified and the output becomes 0 V almost.(It is in the OFF condition) This operation is the same as the operation of the comparator. However, because the inner circuit of the comparator is different from the operational amplifier, the comparator can not be used as the operational amplifier.
    At the circuit this time, the output of the detection circuit is connected with the positive input of the signal detector and the voltage of the negative input is made constant.
    Vrf
    = ( Rb x Vcc )/( Ra + Rb )

    = ( 47K-ohm x 9V )/( 1M-ohm + 47K-ohm )

    = 0.4V
    So, when the rectified ultrasonic signal becomes more than 0.4 V, the output of the signal detector becomes the H level (Approximately 9V).
    This output is lowered with the resistor to make fit with the input of signal holding circuit (TTL:0V to 5V).
     
    Signal holding circuit
    This is the holding circuit of detected signal. SR ( Set and Reset ) flip-flop is used. For the details of SR-FF, refer to "The operation explanation of the D-type flip-flop".
    The detector is made to be not operate in the constant time(About 1.5 milliseconds) after sending out a transmission pulse to prevent from the wrong detection which is due to the influence of the transmission pulse. This operation is controlled with the software of PIC.
    When using the capture feature of PIC, this circuit isn't indispensable. Capture operation is done by the change of the capture input in the once. The reason why I am using this circuit is to confirm signal detection operation within the reflected signal detection time(About 65 milliseconds). When sending out next ultrasonic pulse, the output of this circuit is checked. And when the output is L level, an error display is done because the reflected signal could not be detected.
    Transmitter circuit
    The inverter is used for the drive of the ultrasonic sensor. The two inverters are connected in parallel because of the transmission electric power increase.
    The phase with the voltage to apply to the positive terminal and the negative terminal of the sensor has been 180 degrees shifted. Because it is cutting the direct current with the capacitor, about twice of voltage of the inverter output are appied to the sensor.
    The power supply voltage of this drive circuit is +9V. It is converting voltage with the transistor to make control at the operating voltage of PIC(+5V). Because C-MOS inverters are used, it is possible to do ON/OFF at high speed comparatively.
    7 segment LED display circuit
    Three 7 segment LEDs are used for 3-digit display. As for the lighting-up of the LED, 1 digit is displayed in the order with the software of PIC.
    At the circuit this time, I make light up it when the terminal of PIC is L level. So, ANODE COMMON type is used as the LED. The anode common type is the type which the side of the positive(Anode) of the LED is connected inside. It lights up when grounding(L level) a cathode in the segment to want to make light up.
    As the 7 segment LED, the others have a cathode common type. When you buy them, the specification of the type should be checked.
    Temperature revision voltage generating circuit
     
    The sound wave propagation speed in air is changed by the temperature. At 0°C, it is 331.5m/sec. At 40°C, it is 355.5m/sec.
    For the details of the propagation speed, refer to "The sound wave propagation speed in the air".
    This range meter calculates a distance by dividing the propagation time which was measured by the capture feature.
    I will explain that it does the case of the distance measurement of 1m in the 0°C environment as for the example. The time which the sound wave takes to go and return is 2m/331.5m/sec = 0.006033 seconds = 6.033 milliseconds. The contents of the counter by the capture feature is 6033 within 1 microsecond.
    For the conversion of this to distance (cm), it divides by 60. It is 6033/60=100.55. The following of the decimal point is cut off. It becomes a measurement error.
    This conversion value (60) depends on the temperature. It isn't related with the distance to measure. In case of 9 m, it is 54298/60=904.9. The conversion error becomes big when the distance becomes long. This is because it isn't possible to do conversion below the decimal point.
    In case of 40°C, it is 2m/355.5m/sec = 5625 microseconds and the conversion value is 56.
    The conversion value should be changed by the ambient temperature.
    At this range meter, a conversion value is generated using the A/D conversion feature. The A/D converter converts input voltage into the 10-bit digital data. This time, I am using upper 3 bits. So, the A/D conversion result from 0V to 5V is the value from 0 to 7. And 54 is added to this value.
    Then, the conversion value range is from 54 to 61.
    Resonator
    I used 4-MHz resonator.
    I used 4 MHz in the relation of the timer in the count time. When using 4-MHz clock, it is 1 microsecond per count for the counter count up time. Timer1 to use for capture is a maximum of 65535 counts(16 bits). So, a maximum of 65.535 milliseconds count is made.
    The propagation speed of the sound in air is 343 m/second in case of 20°C. In the time which goes and returns in the 10-m distance, it is 20m/343m/sec = 0.0583 seconds (58.3 milliseconds). As the range meter this time, it is an exactly good value.
    Power supply circuit
    The voltage of +5V and +9V are made with +12V power supply using the 3 terminal regulator.
    +9V are used for the transmitter and the receiver. 100-mA type is used because few needed electric currents.
    In other circuit, +5V is used. +5V voltage is used for the lighting-up of LEDs, because they are controlled by PIC. The about 10-mA electric current per segment flows through the LED. So, it becomes about 80 mA when all segments(eight) light up.
    Because few electric currents of the other IC occur, I think that you can use a 100-mA type, too. I used a 1A type for the safety.

Ultrasonic Range Meter (Circuit Diagram)