Monday, August 10, 2015

Log July 27


1. Added documentation regarding calculation of the values for signal generation and working of the 
    module as a whole.

    Commits:

2. Updated frequency.h with the hexadecimal values to be sent through UART to 8051 from PI
     inorder to generate frequencies of the desired value,( the calculations of the hex values are detailed
     in the above commits ).
     
     Commits:

Monday, July 27, 2015

Log July 22,23-26



1. Fixed segmentation error in the assembly code by removing few redundant clear operations.               
    Commits:

2. Added 8 data bit , no parity, 1 stop bit UART protocol for communication between 8051 and
    arduino. Commits:

3. Added Spatial impulse response for quicker and more efficient field modelling ,few minor 
    bugs are yet to be resolved. This approach is more cost effective regarding the processor's
    resources because like anyother Linear time invariant system ,it aims at realizing the system's
    response for one set of impulse or input and depending on that anyother transducers's output
    or response will be a time shifted version of the former and hence can easily be obtained by
    time domain convolution with unit_step_function(t-t0) where t0 is the time delay between 
    switching on the 2nd transducer relative to the first for which the response is modeled. Therefore
    once the response is computed ,that thread can be suspended and the computed data can be easily
    modified to find the response for other neighboring transducers thereby easing complexity. 
    Commits:

Log July 19,20



1. Added Documentation to the assembly code explaining the operation and the conditions involved 
    in communicating with the 8051 to generate the carrier and modulated waves. Commits:

2. Added Support for Ultra_virtual class to select the frequency required to  be generated for the            
    carrier and the modulating waves and send the same to the COM port. Commits:

3. Updated Frequency.h to recognize the frequency data incoming to the arduino and since strcmp           
    didn't work , I added another header to mimic its operation called comp.h. Commits:

Saturday, July 18, 2015

Log 17,18 July

1. Finished constructing the circuit for the 8051 signal generator to produce signals for the carrier
    and modulated waves. Updated the PCB layout on my PCB web account
    (Please check the PCB layout tab and  not the schematic(Its messy)).

2. Updated Connection_details.txt for information regarding the pin connections of the PCB layout
    Commits:

3. Few minor code fixes regarding the abstract class Frequency in Ultra_main.java
    Commits:

Log 16 July

1. Coded the algorithm for 8051 to generate the two sine waves for carrier and modulating waves.
  

    Structure of Operation


    1. Instead of using standard oscillators such as wein bridge , colpitts etc , I decided to use an
        8051 for generating the two sine waves since it allows us to change their frequencies 
        programmatically  without going through the tedious process of changing the resistors and                   capacitors supposing         at later point some other transducer is used.
    2. If any other microcontroller in charge of switching the transducers on and off intends to
        communicate with the 8051 to set the carrier and modulating frequencies. To first enable
        serial communication the INT0 pin that is P3.2 pin of 8051 must be transitioned from high to               low and held at low          for atleast a period of 4*(Duration of 1 Machine Cycle) .
    3. Upon doing this the serial communication interrupt is enabled on the 8051 and the MC can
        converse with it using UART. But the signal generation occurs only after both the carrier and
        modulating wave frequencies have been updated to the 8051 even if supposing we want carrier
        to remain unchanged and change the modulating still both have to be updated. 
    4. After updating the serial communication is once again disabled since the signal generation
        algorithm multiplexes TH1 register which is also required for serial communication.

Commits :

2. Coded the headers to be included by any MC in-charge of controlling the transducers. They                 basically implement structures and define few default constants to set frequency and grid pattern

Commits:

3. Added abstract class Frequency and child classes Carrier and Modulated to Ultra_main.java for 
   easy configuration of the frequencies to be used and sent to the MC for signal generation.

Commits:

Log 15 July

Fixed the Ultra_real class from freezing and synced it with the algorithm of Ultra_virtual class. Bifurcated the Ultra_real thread from the Ultra_virtual to improve code efficiency  and speed.
Updated the Readme with link to new video.

Commits:

Tuesday, July 14, 2015

Log July 14

Tested the circuit again today with linear arrangement. The decibel meter held about 1cm above the array showed a 1000 fold increase in comparison to the previous result.

Reasons:

The 1000 fold increase as per my conjecture can be attributed to a code fix wherein instead of sending the phase delays as they are to the transducers as done in the previous trial ,this time i sent the differences in the phase delays. This should make sense ,since all the delays that were computed were done so relative to the transducer closest to the focal point, hence while generating delays since the program at this stage is not multi-threaded it runs sequentially therefore adding up the delays generated at each stage. For example consider a linear array of transducers numbered 0-10, where 0 is excited first and let x0,x1,x2.. and so on be the phase delays computed for each transducer succeeding the 0th transducer relative to the 0th transducer. Therefore the delay x0 is added up with x1 for the 2nd transducer is the phase delays are sent, instead sending the difference of x1-x0 makes the delay for the 2nd transducer as (x0+x1-x0)=x1 which is what is required .

If delays are sent as they are then delay for 2nd transducer = x0+x1
If the difference of x1 and x0 is sent then the delay for the 2nd transducer= x0+(x1-x0)=x1

Therefore by sending the difference the correct phase delay is sent .

Apart from testing ,there were other code fixes included 
commits:

Also added Readme regarding project aim and usage:
commits: