MediaWiki API result

This is the HTML representation of the JSON format. HTML is good for debugging, but is unsuitable for application use.

Specify the format parameter to change the output format. To see the non-HTML representation of the JSON format, set format=json.

See the complete documentation, or the API help for more information.

{
    "batchcomplete": "",
    "continue": {
        "gapcontinue": "Signal_generator",
        "continue": "gapcontinue||"
    },
    "query": {
        "pages": {
            "31": {
                "pageid": 31,
                "ns": 0,
                "title": "Sensor amplifier",
                "revisions": [
                    {
                        "contentformat": "text/x-wiki",
                        "contentmodel": "wikitext",
                        "*": "==Sensor signal==\n[[File:Sensoramp.PNG|thumb|500px|Instrumentation amplifier topology for amplifying the sensor signal]]\n\nThe signal induced on the sensor coil is very weak and requires amplification before further processing can be performed. Careful amplification is required in order to prevent loading and distortion of the sensor signal which would degrade the system performance. An instrumentation amplifier based design is used. A diagram of the circuit schematic is shown below:\n\nThe [http://www.ti.com/lit/ds/symlink/ina128.pdf INA128] is a general purpose instrumentation amplifier from Texas Instruments. The sensor wires are directly connected to the inputs of the INA128. The gain of the amplifier is set using a 10k\u03a9 potentiometer <math></math> (not shown). The 47k\u03a9 resistors at the op-amp inputs are necessary in order to provide the necessary bias currents to the amplifier.\n\nThe [http://www.ti.com/lit/gpn/tl081 TL081]  is a general purpose operational amplifier configured as an inverting unity gain buffer using two 10k\u03a9 resistors. The precision of these resistors is not important as the device is a simple buffer. The output of this buffer is connected to the data acquisition unit (DAQ).\n\nThe Eagle PCB project files and Gerber CAM files for this circuit can be found in the Anser project repository.\n\n==Current signal==\n[[File:Currentsummer.PNG|thumb|350px| Current summer circuit used to detect the phase of the current through the coils]]\n\nA current summer amplifier is required to efficiently sample the current in each of the emitter coil PCBs. The composite signal is demodulated in an identical manner to the sensor signal. Data regarding the phases of the signals are extracted to provide information regarding the orientation of the sensor. This is used by the position and orientation algorithm (P&O). Without this, the sign of the <math>n_A</math> vector cannot be determined. (i.e. Two solutions exist for the orientation angle, <math>\\theta</math> and <math>\\theta+\\pi</math> The phase information decides which orientation is valid). The circuit schematic of the summer circuit is shown below\n\n<math>V1</math> to <math>V8</math> represent the current-sense voltage signals from each emitter coil. These voltage signals are generated from the high-speed amplifier shown in section 2a. Capacitors <math>C_{DC}</math> block any DC bias from being amplified. Resistors <math>Rin</math> set the gain of the amplifier in conjunction with <math>R_f</math>. Both <math>R_f</math> and <math>C_f</math> also form a low-pass filter to block any high frequency noise from entering amplifier. A single TL081 operational amplifier is used in the Anser system, although this particular model is not required. The resulting output voltage <math>V_{sum}</math> is given by:\n\n<math display=\"block\">V_{sum} = -\\frac{R_f}{R_{in}}\\left( V_1 +V_2+...V_8\\right)</math>\n\nThe precision of this circuit not vital for accurate system operation. The purpose of <math>V_{sum}</math> is to provide the phase information of the coil current. i.e. magnitudes are not important. The amplifier gain should be chosen such that it can be accurately sampled by the data acquisition system (DAQ)."
                    }
                ]
            },
            "32": {
                "pageid": 32,
                "ns": 0,
                "title": "Signal demodulation",
                "revisions": [
                    {
                        "contentformat": "text/x-wiki",
                        "contentmodel": "wikitext",
                        "*": "Demodulation refers to the extraction of information from a carrier wave. The extracted information is either digital or analog in nature. For example, Wifi transmits digital information on 2.4GHz and 5GHz frequencies, while a typical FM radio transmits analog signals in the form of sound at carrier frequencies between 80-100MHz.\n\nIn the case of Anser EMT, the carrier signals are those transmitted by the eight field emitter coils in the field generator. The extracted information are the magnitudes of each of the received frequency components. The sensor coil detects these carrier frequencies as described in section (5b) and produces a composite signal representing the sum of the received carrier frequencies. Following amplification and sampling, the magnitudes of these carrier signals are extracted using asynchronous demodulation techniques. The position and orientation algorithm compares these magnitudes with the system magnetic field model in order resolve a unique sensor position and orientation.\n\n==Demodulation theory==\nTwo modulation schemes are discussed in this section, synchronous and asynchronous methods are discussed. Asynchronous demodulation is the chosen scheme as it provides more information regarding the orientation of the sensor.\n\nIn order to calculate the amplitude of the AC magnetic field experienced by the sensor many techniques are available. Generally, the signals of interest are small in amplitude with relatively large noise levels as well as interference from the other transmitting channels. The most common method to extract the signals of this type is synchronous demodulation, also known as synchronous detection or lock-in amplification\n\n\n===Synchronous demodulation===\n\nSynchronous demodulation is a method for extracting information from an AC carrier signal. Although asynchronous demodulation is used in Anser, synchronous demodulation illustrates basic concepts that are used in the asynchronous design.\n\nThe amplitude and phase of an AC signal can be calculated through multiplication by a reference signal that is locked in frequency with the original signal. The multiplication by the reference signal, shifts the signal down to a lower frequency, typically DC, which is then easier to accurately measure. The \"locking\" of frequencies can be implemented in many ways although the simplest is to use the source of the signal as a reference.\n\nConsider an input signal:\n<math display=\"block\">v(t)=V\\sin(\\omega t + \\varphi)</math>\n\nwhere <math>V</math> is the modulating signal we wish to extract. The amplitude and phase of this signal can be determined by multiplying by two reference signals at the same frequency:\n<math display=\"block\">Y(t) = \\sin(\\omega t)</math>\n<math display=\"block\">X(t) = \\cos(\\omega t)</math>\n\nThis multiplication result in two quadrature signals:\n\n<math display=\"block\">v_y(t) = v(t)Y(t) = \\frac{V}{2}[\\cos(\\varphi)-\\cos(2\\omega t + \\varphi)]</math>\n<math display=\"block\">v_x(t) = v(t)X(t) = \\frac{V}{2}[\\sin(\\varphi)-\\sin(2\\omega t + \\varphi)]</math>\n\nThe DC component of the signal is extracted by using an appropriate low-pass filter. The resulting DC values are:\n\n<math display=\"block\">v'_y(t) = \\frac{v}{2}\\cos(\\varphi)</math>\n<math display=\"block\">v'_x(t) = \\frac{v}{2}\\sin(\\varphi)</math>\n\nThe amplitude of the modulating signal <math>V</math> can be found using:\n<math display=\"block\">V = 2\\sqrt{(v'_x(t)^2 + v'_y(t)^2)}</math>\nThe phase of the signal can be found using:\n<math display=\"block\">\\varphi = \\arctan\\left(\\frac{v'_y(t)}{v'_x(t)}\\right)</math>\n\nDemodulating using this technique requires <math>Y(t)</math> and <math>X(t)</math> be generated from the reference source. This requires each of the eight coil voltages (20.5kHz, 21.5kHz...) to be individually sampled for processing, requiring an analogue to digital converter with a very high aggregate sampling frequency. Instead, simulated reference signals may be used to generate <math>Y(t)</math>and <math>X(t)</math>which results in asynchronous demodulation.\n\n\n===Asynchronous demodulation===\n\nAsynchronous demodulation uses simulated reference signals to generate the quadrature signals for demodulation. These simulated signals are '''not''' locked in phase with the signal to be demodulated and can experience frequency mismatch. This results in an increase in the number calculations required when determining the phase and magnitude of the signal of interest, but reduces the number of signals required for sampling.\n\nConsider a tracking system consisting of N emitting coils, each coil carrying a current component of the following form:\n<math display=\"block\">i_i(t) = I_i\\sin(\\omega_i t + \\varphi_{I_i})</math>\n\nwhere <math>I_i</math> is the amplitude of the <math> i_{th}</math>emitting coil waveform, <math>\\omega_i</math> is the excitation frequency and <math>\\varphi_i</math> is the current phase relative to an arbitrary reference. Summing all N current waveforms results in:\n\n<math display=\"block\">i(t) = \\sum^N_{i=1} I_i\\sin(\\omega_i t + \\varphi_{I_{i}})</math>\n\nThe induced voltage on the sensor is a sum of the voltages induced by the coil currents:\n\n<math display=\"block\">v(t) = \\sum^N_{i=1} V_i\\sin(\\omega_i t + \\varphi_{V_{i}})</math>\n\nwhere <math>V_i</math> is the amplitude of the induced voltage component and <math> \\varphi_{V_i}</math> is the associated phase. Each frequency component of the voltage signal is extracted using two reference signals:\n<math display=\"block\">Y_i = \\sin(\\omega_{ri} t)</math>\n<math display=\"block\">X_i = \\cos(\\omega_{ri} t)</math>\n\nwhere <math>\\omega_{ri}</math> is the frequency of the simulated reference signal. This demodulation results in the amplitudes and phases of all the frequency components relative to the simulated reference signal as follows:\n<math display=\"block\">\\mathbf{V} = [V_1,V_2...V_n]</math>\n<math display=\"block\">\\mathbf{I} = [I_1,I_2...I_n]</math>\n<math display=\"block\">\\mathbf{\\varphi_V} = [\\varphi_{V_1},\\varphi_{V_2}...\\varphi_{V_n}]</math>\n<math display=\"block\">\\mathbf{\\varphi_I} = [\\varphi_{I_1},\\varphi_{I_2}...\\varphi_{I_n}]</math>\n\nBy subtracting the individual phases from each other the relative phase angle between the sensor voltage and coil current waveforms can be found:\n<math display=\"block\">\\Delta\\mathbf{\\varphi} = \\mathbf{\\varphi_V} - \\mathbf{\\varphi_I}</math>\n\nThe sign of this phase information indicates the axial orientation of the electromagnetic sensor with respect to the magnetic field.\n\nWith a simulated reference signal it can be difficult to lock the frequency to the signal source without the use of phase locking techniques. In our system this often results in a small mismatch in frequency since the simulated reference signal for a particular coil <math> \\omega_{ri}</math> is slightly different from the frequency to be demodulated <math> \\omega_i</math>since they are not locked. This results in a <math> \\Delta\\omega=\\omega_{ri} - \\omega_r</math> causing a low frequency oscillation in the demodulated signal, which would not be present in synchronous demodulation.\n\nTo demonstrate this, consider a single frequency where the coil current and sensor voltage waveforms are given by:\n<math display=\"block\">i(t) = I\\sin(\\omega t + \\varphi_I)</math>\n<math display=\"block\">v(t) = V\\sin(\\omega t + \\varphi_V)</math>\n\nThe simulated reference signals used for demodulation are given by:\n<math display=\"block\">Y(t) = \\sin(\\omega_r t)</math>\n<math display=\"block\">X(t) = \\cos(\\omega_r t)</math>\n\nStarting with the sensor voltage <math>v(t)</math>, we multiply by the reference signals just as in the synchronous case to produce:\n<math display=\"block\">v(t)Y(t) = \\frac{V}{2}[\\cos((\\omega-\\omega_r) + \\varphi_V) - \\cos((\\omega+\\omega_r) + \\varphi_V)]</math>\n<math display=\"block\">v(t)X(t) = \\frac{V}{2}[\\sin((\\omega-\\omega_r) + \\varphi_V) - \\sin((\\omega+\\omega_r) + \\varphi_V)]</math>\n\nExtracting the low frequency components using a low-pass filter yields two quadrature voltage signals:\n<math display=\"block\">v_x=\\frac{V}{2}\\sin(\\Delta\\omega t + \\varphi_V)</math>\n<math display=\"block\">v_y=\\frac{V}{2}\\cos(\\Delta\\omega t + \\varphi_V)</math>\n\nwhere the difference in frequency is given by:\n<math display=\"block\">\\Delta\\omega = \\omega-\\omega_r</math>\n\nThese signals are close to DC since they oscillate at a frequency of <math> \\Delta\\omega</math>. The amplitude <math> V</math> can be determined as in the synchronous case using:\n<math display=\"block\">V = 2\\sqrt{(v_x^2 + v_y^2)}</math>\nThe phase can be determined using:\n<math display=\"block\">\\gamma_V(t) = \\arctan\\frac{v_x}{v_y} = \\Delta\\omega t +\\varphi_V</math>\n\nIts clear that the phase has a time dependency. This is due to the frequency mismatch of the carrier and reference signals. In order to remove this dependency, the same demodulation procedure above is performed to the coil current waveform i(t) to produce <math> I</math> and <math> \\gamma_I</math>. Subtracting the phase component <math> \\gamma_V</math> from <math> \\gamma_I</math> gives the constant relative phase angle between the two waveforms:\n<math display=\"block\">\\gamma_V -  \\gamma_I = \\varphi_V-\\varphi_I</math>\n\nThis 'double demodulation' allows both the accurate retrieval of the amplitude and phase of each of the induced sensor voltages. Implementation details of how this demodulation is achieved  are described in the next section.\n\n\n==Demodulation implementation==\n\n\nThe asynchronous demodulation process takes place in Matlab using an efficient matrix calculation technique. This method involves recording a number of samples of each signal of interest. This has the advantage of reduced solving time since all samples are available at the time of calculation. This is in contrast to real-time processing where samples are gathered and processed one-by-one in turn.\n\nThe signals of interest we wish to sample are:\n\n* The induced voltage on the 5-DOF sensor coil(s)\n* The composite coil current signal\n\nInitially we consider the induced voltage on a single sensor that has been discretised through sampling:\n<math display=\"block\">x[n] = \\sum_{i=1}^N V_i\\sin\\left(\\frac{2 \\pi f_i n}{f_s}+\\varphi_i\\right)</math>\n\nwhere N is the number of frequency of interest (N = 8, one frequency per emitter coil), <math>f_i</math> is the frequency of interest in hertz, <math>f_s</math> is the sampling frequency of the DAQ, <math>V_i</math> is the amplitude and <math>\\varphi_i</math> is an associated phase shift. Collecting and string <math>p</math> points results in a vector <math>\\mathbf{X}</math> containing <math>p</math> samples:\n\n<math display=\"block\">\\mathbf{X}=\\left[x[0],x[1] ... x[p-1]\\right]</math>\n\nIn the previous section asynchronous demodulation was discussed. The first step of the demodulation involves multiplying the sampled signal by two sinusoids <math>Y(n)=\\sin(2\\pi f_{ri} n)</math> and <math>X(n)=\\cos(2\\pi f_{ri} n)</math>, where <math>f_{ri}</math> is the simulated reference signal close in frequency to <math>f_i</math>. Using Euler's relation we combine <math>X(n)</math> and <math>Y(n)</math> into a single discrete complex sinusoid:\n\n<math display=\"block\">\\cos(2\\pi f_{ri}n) + j\\sin(2\\pi f_{ri} n) = e^{\\frac{2 \\pi f_{ri} j n }{f_s}}</math>\n\nwhere <math>j = \\sqrt{-1}</math>. This complex exponential encapsulates the two quadrature signal components required for demodulation. Given the <math>N</math>emitter coil frequencies, <math>N</math> complex exponentials are required for the demodulation of each frequency. A <math>p \\times N</math>  matrix of complex exponentials is created  such that when pre-multiplied by <math>\\mathbf{X}</math> results in a vector of voltage magnitude:\n\n<math display=\"block\"> \\mathbf{E} = \\begin{bmatrix}\n                \\epsilon_i[0]  & \\dots & \\epsilon_N[0] \\\\\n                \\vdots& \\ddots & \\vdots \\\\\n                \\epsilon_i[p-1] & \\dots & \\epsilon_N[p-1]\n\\end{bmatrix}</math>\nwhere\n<math display=\"block\">\\epsilon_i[n]=e^{\\frac{2 \\pi f_{ri} j n }{f_s}}</math>\n\nThe row vector of demodulated voltages is given by premultiplying <math>\\mathbf{E}</math> by the row vector of <math>p</math> samples:\n<math display=\"block\">\\mathbf{Y} = [\\widetilde{V}_1 ... \\widetilde{V}_N] = 2\\mathbf{X}\\mathbf{E}</math>\n\n<math>\\mathbf{Y}</math> is a complex valued row-vector due to the presence of <math>j</math> in the complex exponential calculation. The absolute value of each entry in <math>\\mathbf{Y}</math> is the amplitude received frequency of interest, <math>V_i</math>. \n\nFinite impulse response (FIR filter)\n------------------------------------\n\nA finite impulse response filter is implemented as part of the demodulation step. This low pass FIR filter eliminates unwanted frequency components from the input sample stream <math>mathbf{X}</math>. Consider an FIR filter denoted by <math>f_i</math> with <math>p</math>coefficients (\\textit{i.e.} equal to the number of input samples). The output of such a filter can be represented as:\n<math display=\"block\">p[n] = \\sum_{i=0}^{p-1}f_ix[n-i]</math>\n\nwhere <math>p[n]</math> is the filtered sample vector and <math>f_i</math> is a single filter tap coefficient. Each filter coefficient can be represented by a single matrix <math>F</math> as shown below:\n<math display=\"block\">F = [f_0, f_1, f_2 \\dots f_{p-1}]</math>\n\nThe FIR filter can be applied to the demodulator by scaling each input sample of <math>X</math> with the corresponding FIR coefficient given by <math>F</math>. This is achieved using an element by element multiplication:\n\n<math display=\"block\">\\mathbf{Y} = 2(\\mathbf{X}\\circ \\mathbf{F})\\mathbf{E} </math>\n\nwhere <math>\\circ</math> represents the element-wise multiplication operator.\n\nThe amplitude of each frequency component can be determined by calculating the absolute value of <math>\\mathbf{Y}</math>, which is a complex quantity. The phase of <math>\\mathbf{Y}</math>an be found using the complex argument of <math>Y</math>\n<math display=\"block\">[V_1 V_2 \\dots V_N] = |\\mathbf{Y}|</math>\n<math display=\"block\">[\\varphi_1, \\varphi_2 \\dots \\varphi_N] = \\arg(\\mathbf{Y})</math>\n\nThe implementation of this calculation can be found in the Matlab code provided in the OSF file repository."
                    }
                ]
            }
        }
    }
}