alj alj / Mbed 2 deprecated PGSE_diffusion

Dependencies:   mbed

Committer:
alj
Date:
Fri Oct 26 13:38:44 2012 +0000
Revision:
0:8fc9e66cbabb
Child:
1:9c47e011f1bf
basic standard version

Who changed what in which revision?

UserRevisionLine numberNew contents of line
alj 0:8fc9e66cbabb 1 /* *************************************************************************************
alj 0:8fc9e66cbabb 2 PGSE_diffusion Basic standard sequence, VERSION 1, October 24th 2012
alj 0:8fc9e66cbabb 3 PULSE GRADIENT SPIN ECHO diffusion sequence(or diff_se) to measure diffusion coefficient value.
alj 0:8fc9e66cbabb 4 ref : E.O. Stejskal and J.E. tanner, J. Chem. Phys. 42, 288 (1965)
alj 0:8fc9e66cbabb 5 THE PGSE SEQUENCE IS
alj 0:8fc9e66cbabb 6 1H ---> 90° - DELTA/2 - 180 - DELTA/2 - FID
alj 0:8fc9e66cbabb 7 Gz ---> -- - Gz(sdelta)- DELTA - Gz(sdelta)
alj 0:8fc9e66cbabb 8 *************************************************************************************
alj 0:8fc9e66cbabb 9 Gradient strength (or duration) must be increase to measure the diffusion coefficient (2D DOSY spectroscopy)
alj 0:8fc9e66cbabb 10 The maximum diffusion time (DELAT) is limited by T2 in PGSE.
alj 0:8fc9e66cbabb 11 For T1 = T2 the PGSE sequence is usualy the easiest et preferred sequence.
alj 0:8fc9e66cbabb 12 For T1 >> Té the PGSTE (PULSE GRADIENT with STIMULATED ECHO) is better, as during most of the diffusion
alj 0:8fc9e66cbabb 13 time the magetization evolve prinipaly under T1 relaxtion (magnetization is like stored on Z axis in conventionnal NMR). With PGSTE the maximum
alj 0:8fc9e66cbabb 14 diffusion time (DELTA) is limited by T1.
alj 0:8fc9e66cbabb 15 IN THIS VERSION THE GRADIENT PULSE DURATION IS USED
alj 0:8fc9e66cbabb 16 *************************************************************************************
alj 0:8fc9e66cbabb 17
alj 0:8fc9e66cbabb 18 DESIGN FOR NXPLPC1768 ARM CORTEX M3 MCU BOARD:
alj 0:8fc9e66cbabb 19 INPUT : NONE (reset on board)
alj 0:8fc9e66cbabb 20 OUTPUT : ACQU ---> P26 AND LED1
alj 0:8fc9e66cbabb 21 : PULSES P1 & P2 ---> P25
alj 0:8fc9e66cbabb 22 : Emmitter ---> P24, P23
alj 0:8fc9e66cbabb 23 : Transmitter ---> P22, P21
alj 0:8fc9e66cbabb 24 ***** IN THIS VERSION RECEIVER AND TRANSMITTER HAVE THE SAME PHASE CYCLE *****
alj 0:8fc9e66cbabb 25 *************************************************************************************
alj 0:8fc9e66cbabb 26 Alain LOUIS-JOSEPH
alj 0:8fc9e66cbabb 27 CNRS
alj 0:8fc9e66cbabb 28 Laboratoire de Physique de la Matière Condensée PMC
alj 0:8fc9e66cbabb 29 Ecole Polytechnique
alj 0:8fc9e66cbabb 30 91128 Palaiseau CEDEX France
alj 0:8fc9e66cbabb 31 *************************************************************************************
alj 0:8fc9e66cbabb 32 UNLESS OTHERWISE SPECIFIED THE PARAMETERS OF THE PULSE SEQUENCE ARE SET :
alj 0:8fc9e66cbabb 33 D1 : relaxation delay ( ms to s)
alj 0:8fc9e66cbabb 34 DELTA : Diffusion time (ms to s)
alj 0:8fc9e66cbabb 35 sdelta : Gradient duration
alj 0:8fc9e66cbabb 36 D21 : delay of recovery
alj 0:8fc9e66cbabb 37 DE : fixed delay before acqusisition (not use)
alj 0:8fc9e66cbabb 38 DW : Dwell time period for sampled t2 acquisition time domain
alj 0:8fc9e66cbabb 39 D0 : incremenatble delay ( from 1us to s)(t1 time domain dimension for 2D experiment)
alj 0:8fc9e66cbabb 40 NS : Number of scan
alj 0:8fc9e66cbabb 41 NE : Number of experiment
alj 0:8fc9e66cbabb 42 VD : Variable delay using a file list
alj 0:8fc9e66cbabb 43 PW : Pulse length (us)
alj 0:8fc9e66cbabb 44 P90 : 90° transmitter or decoupler pulse length
alj 0:8fc9e66cbabb 45 P180 : 180° transmitter or decoupler pulse length
alj 0:8fc9e66cbabb 46 P3 P4 : 90°, 180°, X-nucleus pulses length
alj 0:8fc9e66cbabb 47 DO : Decoupler gated off or on
alj 0:8fc9e66cbabb 48 HD : HomoDecoupling in time sharing during acqusition
alj 0:8fc9e66cbabb 49 HG : HomoGating decoupling with receiver gated OFF
alj 0:8fc9e66cbabb 50 BB : Broadband modulation gate
alj 0:8fc9e66cbabb 51 CW : Continuous wave
alj 0:8fc9e66cbabb 52 FID : Free Induction Decay acquisition (data acquisition for time AQ
alj 0:8fc9e66cbabb 53 AQ : Acquisition time (physical t2 acquisition time domain dimension)
alj 0:8fc9e66cbabb 54 PHn : Phase for pulse number n (ie : PH1 for pulse P1)
alj 0:8fc9e66cbabb 55 PH0 : Receiver phase
alj 0:8fc9e66cbabb 56 *************************************************************************************
alj 0:8fc9e66cbabb 57
alj 0:8fc9e66cbabb 58 */
alj 0:8fc9e66cbabb 59
alj 0:8fc9e66cbabb 60 #include "mbed.h"
alj 0:8fc9e66cbabb 61
alj 0:8fc9e66cbabb 62 #define D1 0.1 /* Relaxation delay in second */
alj 0:8fc9e66cbabb 63 #define Fs 48000 /* Sample frequency in Hz */
alj 0:8fc9e66cbabb 64 #define DW 1 /* DW time period in us NOT USE */
alj 0:8fc9e66cbabb 65 #define NS 1.0 /* 8 accumulations */
alj 0:8fc9e66cbabb 66 #define DELTA 0.006 /* diffusion dealy in s */
alj 0:8fc9e66cbabb 67 #define NE 1.0 /* 8 accumulations */
alj 0:8fc9e66cbabb 68 #define sdelta 0.003 /* gradient duration */
alj 0:8fc9e66cbabb 69 #define D21 0.001 /* recovery time */
alj 0:8fc9e66cbabb 70 #define AQ 0.04 /* acquisition time in seconde */
alj 0:8fc9e66cbabb 71 #define P90 0.00005 /* hard 90° 1H */
alj 0:8fc9e66cbabb 72 #define IncGsdelta 0.0 /* gradient increment */
alj 0:8fc9e66cbabb 73 #define stepG 0.0
alj 0:8fc9e66cbabb 74
alj 0:8fc9e66cbabb 75
alj 0:8fc9e66cbabb 76 DigitalOut Relaxation(LED1); /* Delay on pin 26 ??? and flash LED1 during relaxation delay */
alj 0:8fc9e66cbabb 77 BusOut Acqu(p26, LED2) ; /* Start acquisition */
alj 0:8fc9e66cbabb 78 DigitalOut p1(p25); // HARD PULSE
alj 0:8fc9e66cbabb 79 DigitalOut p2(p25); /* Only for reason of clarity P2 =2*P1 */
alj 0:8fc9e66cbabb 80 BusOut PH1PH2(p24, p23) ; // transmitter and receiver phases are the same
alj 0:8fc9e66cbabb 81 DigitalOut Gsdelta(p22) ; // Gradient Z
alj 0:8fc9e66cbabb 82
alj 0:8fc9e66cbabb 83 int main()
alj 0:8fc9e66cbabb 84 {
alj 0:8fc9e66cbabb 85
alj 0:8fc9e66cbabb 86 // while (1) {
alj 0:8fc9e66cbabb 87 p1 =0 ;
alj 0:8fc9e66cbabb 88 Relaxation = 0 ;
alj 0:8fc9e66cbabb 89 Acqu=0x00;
alj 0:8fc9e66cbabb 90 PH1PH2=0x00; //0 init
alj 0:8fc9e66cbabb 91
alj 0:8fc9e66cbabb 92 for (float i = 0.0f ; i < NS ; i += 1.0f) {
alj 0:8fc9e66cbabb 93
alj 0:8fc9e66cbabb 94 Relaxation = 1; /* LED1 light*/
alj 0:8fc9e66cbabb 95 wait(D1); // relaxation
alj 0:8fc9e66cbabb 96 Relaxation = 0; // turn off the led
alj 0:8fc9e66cbabb 97
alj 0:8fc9e66cbabb 98 p1=1;
alj 0:8fc9e66cbabb 99 wait(P90); // 90°
alj 0:8fc9e66cbabb 100 p1=0;
alj 0:8fc9e66cbabb 101
alj 0:8fc9e66cbabb 102 Gsdelta = 1;
alj 0:8fc9e66cbabb 103 wait(sdelta); //gradient Z;
alj 0:8fc9e66cbabb 104 Gsdelta = 0;
alj 0:8fc9e66cbabb 105
alj 0:8fc9e66cbabb 106 wait(DELTA - sdelta); // diffusion time
alj 0:8fc9e66cbabb 107
alj 0:8fc9e66cbabb 108 p2=1;
alj 0:8fc9e66cbabb 109 wait(2*P90); //180°
alj 0:8fc9e66cbabb 110 p2=0;
alj 0:8fc9e66cbabb 111
alj 0:8fc9e66cbabb 112 Gsdelta = 1;
alj 0:8fc9e66cbabb 113 wait(sdelta); //gradient Z;
alj 0:8fc9e66cbabb 114 Gsdelta = 0;
alj 0:8fc9e66cbabb 115
alj 0:8fc9e66cbabb 116
alj 0:8fc9e66cbabb 117 wait(D21) ; //recovery time
alj 0:8fc9e66cbabb 118
alj 0:8fc9e66cbabb 119 Acqu=0x11; // Acquire FID (we can write 3 in decimal)
alj 0:8fc9e66cbabb 120 wait(AQ);
alj 0:8fc9e66cbabb 121 Acqu=0x00;
alj 0:8fc9e66cbabb 122
alj 0:8fc9e66cbabb 123 PH1PH2=PH1PH2+1; //Phase cycling
alj 0:8fc9e66cbabb 124
alj 0:8fc9e66cbabb 125 //IncGsdelta += stepG ;
alj 0:8fc9e66cbabb 126
alj 0:8fc9e66cbabb 127 }
alj 0:8fc9e66cbabb 128
alj 0:8fc9e66cbabb 129 }
alj 0:8fc9e66cbabb 130 //}
alj 0:8fc9e66cbabb 131
alj 0:8fc9e66cbabb 132 /* INCREMENTATION DE LA DUREE D'ECLAIREMENT DE LED1 AVEC PwmOut
alj 0:8fc9e66cbabb 133 PwmOut led(LED1);
alj 0:8fc9e66cbabb 134
alj 0:8fc9e66cbabb 135 int main() {
alj 0:8fc9e66cbabb 136 while(1) {
alj 0:8fc9e66cbabb 137 for(float p = 0.0f; p < 1.0f; p += 0.1f) {
alj 0:8fc9e66cbabb 138 led = p;
alj 0:8fc9e66cbabb 139 wait(0.1);
alj 0:8fc9e66cbabb 140 }
alj 0:8fc9e66cbabb 141 }
alj 0:8fc9e66cbabb 142 } */
alj 0:8fc9e66cbabb 143
alj 0:8fc9e66cbabb 144 /* Digital I/O
alj 0:8fc9e66cbabb 145
alj 0:8fc9e66cbabb 146 DigitalOut - Configure and control a digital output pin.
alj 0:8fc9e66cbabb 147 DigitalIn - Configure and control a digital input pin.
alj 0:8fc9e66cbabb 148 DigitalInOut - Bi-directional digital pins
alj 0:8fc9e66cbabb 149
alj 0:8fc9e66cbabb 150 BusIn - Flexible way to read multiple DigitalIn pins as one value
alj 0:8fc9e66cbabb 151 BusOut - Flexible way to write multiple DigitalIn pins as one value
alj 0:8fc9e66cbabb 152 BusInOut - Flexible way to read/write multiple DigitalIn pins as one value
alj 0:8fc9e66cbabb 153
alj 0:8fc9e66cbabb 154 PortIn - Fast way to read multiple DigitalIn pins as one value
alj 0:8fc9e66cbabb 155 PortOut - Fast way to write multiple DigitalIn pins as one value
alj 0:8fc9e66cbabb 156 PortInOut - Fast way to read/write multiple DigitalIn pins as one value
alj 0:8fc9e66cbabb 157
alj 0:8fc9e66cbabb 158 PwmOut - Pulse-width modulated output */
alj 0:8fc9e66cbabb 159
alj 0:8fc9e66cbabb 160 /* Features
alj 0:8fc9e66cbabb 161
alj 0:8fc9e66cbabb 162 NXP LPC1768 MCU
alj 0:8fc9e66cbabb 163 High performance ARM® Cortex™-M3 Core
alj 0:8fc9e66cbabb 164 96MHz, 32KB RAM, 512KB FLASH
alj 0:8fc9e66cbabb 165 Ethernet, USB Host/Device, 2xSPI, 2xI2C, 3xUART, CAN, 6xPWM, 6xADC, GPIO
alj 0:8fc9e66cbabb 166 Prototyping form-factor
alj 0:8fc9e66cbabb 167 40-pin 0.1" pitch DIP package, 54x26mm
alj 0:8fc9e66cbabb 168 5V USB or 4.5-9V supply
alj 0:8fc9e66cbabb 169 Built-in USB drag 'n' drop FLASH programmer
alj 0:8fc9e66cbabb 170 mbed.org Developer Website
alj 0:8fc9e66cbabb 171 Lightweight Online Compiler
alj 0:8fc9e66cbabb 172 High level C/C++ SDK
alj 0:8fc9e66cbabb 173 Cookbook of published libraries and projects
alj 0:8fc9e66cbabb 174 */