ABSTRACT Development of Sample Rotator for High-field, Ultra-low Temperature NMR Experiments Nathaniel J. Kan Yale University The purpose of this project was to lay the foundation for the construction of a platform tilt-angle rotator for high-field, ultra-low temperature NMR experiments. The sample rotator will be used in a continuation of NMR experiments being performed in Sean Barrett’s lab to gather more information about the many-electron “particles” known as skyrmions. The induced magnetic field contribution for a rotating piezo-electric actuator made by attocube Systems was measured, and several models were built to determine contribution across the sample at for different physical orientations of the actuator. The actuator produced an induced magnetic field that was comparable to the induced field in a similar sized block of titanium. From this data it appears likely that the actuator will be usable in a sample rotator for future skyrmion experiments. 1
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
ABSTRACT
Development of Sample Rotator for High-field, Ultra-low Temperature NMR
Experiments
Nathaniel J. Kan
Yale University
The purpose of this project was to lay the foundation for the construction of a
platform tilt-angle rotator for high-field, ultra-low temperature NMR experiments. The
sample rotator will be used in a continuation of NMR experiments being performed in
Sean Barrett’s lab to gather more information about the many-electron “particles” known
as skyrmions. The induced magnetic field contribution for a rotating piezo-electric
actuator made by attocube Systems was measured, and several models were built to
determine contribution across the sample at for different physical orientations of the
actuator. The actuator produced an induced magnetic field that was comparable to the
induced field in a similar sized block of titanium. From this data it appears likely that the
actuator will be usable in a sample rotator for future skyrmion experiments.
1
Development of Sample Rotator for High-field, Ultra-low
The induced magnetization of M of a paramagnetic object in a uniform field Bz is
given by:
0
zBµ
K=M (5.01)
where K is the magnetic volume susceptibility, and µ0 is the Permeability of Free Space.
14
K can be expressed in terms of the molar susceptibility χm and the molar volume Vm [4]:
m
m
Vχ
=K (5.02)
For titanium, χm = 3709.5 * 10-6 cm3 mol -1 and Vm = 10.64 cm3 mol -1. In the 12 T lab
field this yields a magnetization M = 1.7 * 103 T.
The field due to a sphere with a uniformly magnetization M is a textbook
problem. The potential of the sphere for a position x = φ, θ, r is given by [1]:
( ) ( )θµπφ sin
rraM
34xA 2
200 ⎟
⎟⎠
⎞⎜⎜⎝
⎛=
>
< (5.03)
where a is the radius of the sphere and r< (r>) is the smaller (larger) of a and r (Figure
5.1.2).
Figure 5.1.2.
0B =φ (5.04)
( )θθθ φ sinA
sinr1Br ∂
∂= (5.05)
( )rArr
1B φθ ∂∂
−= (5.06)
We are only interested in the cases where r > a, so (5.03) becomes:
( ) ( )θµπφ sin
raM
34xA 2
3
00= (5.07)
Plugging this into (5.05) and (5.06) gives:
θµπ cosraM
38B 3
3
00r = (5.08)
θµπθ sin
raM
34B 3
3
00= (5.09)
15
We can transform this to give us the z-component of the field:
⎟⎠⎞
⎜⎝⎛ −= θµ 2
3
3
00z sin32
raMB (5.10)
We did a Х2 fit allowing the XY location (because the actuator’s center of mass
was slightly offset from the axis of rotation and center of volume) and the radius of the
sphere to vary. The best fit to the data was
Figure 5.1.2.
5.2 Octagonal Prism Model
The next model we did was an octagonal prism with a rectangular slit removed
from it, the dimensions of which were the actual figures measured from the actuator. The
magnetic potential from any uniformly charged object is:
( ) Ar
nM4
r 20 ∂
⋅=Φ ∫
rrr
πµ
(5.11)
16
The field is given by:
∫ Φ∂⋅∇=r
B (5.12)
For the octagonal prism model we wrote a procedure in the program Igor 5.0 that
modeled the surface shell of the prism as an array of points, and then numerically
summed the B-field contributions of each point to each point in a sample ring (which
approximated our ring of sample points).
Due to the nMrr⋅ term in (5.11), the only surfaces that give non-zero contributions
are the surfaces parallel to the XY plane. To account for the missing rectangular box we
summed the contributions from points of an overlaid box with an opposite magnetization.
The total field in the z-direction at a sample point is then
∑ ⎟⎠⎞
⎜⎝⎛ ×
∆∆=
rz
ryx
4M
B 200
z πµ
(5.13)
where r is the distance between the nth point and the observation point. See Appendix A
for a complete copy of the procedure.
Figure 5.2.1.
The results of the octagonal prism were interesting. The octagonal prism model is
slightly less accurate in matching the data than the spherical approximation. This is due
to the fact that there was no Х2 fit to maximize various input parameters. The octagonal
model much more accurate depicts the true volume and location of the actuator, however.
17
Figure 5.2.2.
5.3 Field vs Actuator Distance Simulation
For the actuator is usable for the purposes of a sample rotator, we estimate that the
induced field across the sample should be no greater than 5 ppm (for our models less than
60 x 10-6 T). Once we were fairly confident that our models of a paramagnetic uniformly
magnetized object were reasonably good approximations, we constructed a final model
that measured the induced magnetic field against the distance from a magnetized block of
comparable volume to the actuator. The block in the sample has its large face normal to
the XY plane (Figure 5.3.1), which simulates a possible orientation of the actuator in a
sample rotator. See Appendix B for the full Igor 5.0 procedure.
18
Figure 5.3.1.
According to the model, the sample must be at least 2 cm away from the center of
actuator to reduce the force from the field to below 5 ppm (Figure 5.3.2). In the
orientation of components for the new dilution refrigerator probe, the sample rotator will
most probably be 3-5 cm away from the sample. Because of these constraints we believe
the attocube actuator is a workable solution for the purpose of a sample rotator.
Figure 5.3.2.
19
6 Conclusion
6.1 Future Work
There are additional projects that need to be completed before a sample rotator
can be built. The heat conduction due to the electrical connectors of the piezo-actuator
needs to be tested to determine the necessary cooling time between θ rotations and
measurements. Also, it would be desirable to develop a system of measuring the platform
angle θ independent of counting the number of ramping steps sent into the actuator. By
using an independent method of tracking θ the experimenter can be sure that noise or
distortions in the voltage signal have not caused a smaller or greater angular step per
wave, and therefore a miscalculation of θ. At this point there is no definite “best method”
for determining absolute θ; several methods being considered are building a mechanical
stop into the rotator and stepping from that angle in each of our measurements, or a
similar solution using an attocube fiber-optic system that tracks location by reflecting
light off a grating on the rotating platform.
Finally, the piezo-actuator sample rotator needs to be constructed. The rotator
could be as simple as the attocube rotating actuator with a non-magnetic plate extending
from its rotating face for the sample to rest on. The location of the actuator will be limited
by the physical constraints of the dilution refrigerator. It may also be desirable to retest
the magnetic field profile due to the completed working rotator to ensure that it is within
acceptable levels across the sample.
20
6.2 Final Comments
Throughout the process of testing the actuator to develop a field profile we have
learned several important lessons in experimental procedure. For future experimenters
working on this project it may be helpful to review these notes.
First, in our tests there was a significant time lapse (~several weeks) between
the NMR measurements without the actuator and the measurements with the actuator. As
the field due to the NMR magnet drifts over time, this resulted in a larger drift of the lab
field between our two data sets, which has to be approximated and accounted for. By
cutting down the wait time between measurements (for example, doing the measurements
on consecutive days) we feel this would drastically reduce error due to drift estimations.
Second, it is important to build the circuit so that the test object (the actuator)
can fit inside. While this may seem obvious, we initially planned to build our circuit to
certain physical dimensions that would allow the actuator free rotation at several different
z-values. However, through the course of building the circuit, components had to be
moved or added. This resulted in a final circuit that would not accommodate the actuator,
which was not discovered until we had taken the test data for the control profile.
Third, the experimenter should make sure to use a consistent angular convention
in every test. Four, in order to maximize the effect of the induced field, the applied lab
field should be as large as possible. This will make it much easier to see the effects of the
object on field structure.
Last, for any experimenters pursuing this project, it may be helpful to retake the
data. When doing so, it would be a good idea to take data at different orientations of the
actuator in order to better test the accuracy of the model. Also, a more accurate method of
fixing the test object in the lab frame while rotating the probe would yield much more
accurate measurements along the z-axis.
21
Appendix A: Igor 5.0 Octagonal Prism Model Procedure Function RectangleBvariationNeg(cx,cy,cz,cs,sx,sy,sz,sr,ss,ca,cb,ch,thetastart) // Calculate the Bfield for an array of points defined by the circle with center at (sx,sy) and radius sr. Variable cx,cy,cz,cs,sx,sy,sz,sr,ss,ca,cb,ch,thetastart //Variable cx,cy,cz,cnpnts,sx,sy,sz,sr,snpnts //ca = start hole x, cb = end hole x, ch = height hole, thetastart = phase shift Variable m m = 1.703*10^3 // m = total magnetization of the object //Variable cs,ss // cs = step size for x and y dim of rectangle, ss = step size in radians along circle //cs = cx*cy/cnpnts //cnpnts number of points on 'charged rectangle' over which to integrate. //snpnts number of points in sample to be evaluated. //ngpnts number of points in absent rectangle to be evaluated Variable cnpnts,snpnts,ngpnts,grdpnts grdpnts = 2*(cx/cs)*(cy/cs)*2*pi/ss+2*((cb-ca)/cs)*(cy/cs)*2*pi/ss print "start time",time() DoWindow/K graph0 DoWindow/K graph1 DoWindow/K graph2 DoWindow/K table0 DoWindow/K table1 //kills leftover graphs and tables created by this macro from previous run. Make/N=(grdpnts)/D/O xc, yc, xn, yn, xs, ys // generates longer waves than needed. waves will be redimensioned later. Variable xj, yj // looping variables for tracking current x,y within charged plate Variable k, i, theta // loop variable xj=0 yj=0 k=0 i=0 theta=thetastart ngpnts=0 // first generate array of points for the charged rectangular plate do // loop through x if(xj>=(ca-0.0001)&&xj<=(cb+.0001)) do // loop through y xc[i]=xj yc[i]=yj xn[ngpnts]=xj yn[ngpnts]=yj ngpnts+=1 i+=1 yj+=cs while(yj<=(cy+0.0001)) else do // loop through y xc[i]=xj
22
yc[i]=yj i+=1 yj+=cs while(yj<=(cy+0.0001)) endif yj=0 // reset yj to -cr and step to next xj value. xj+=cs while(xj<=(cx+0.0001)) // now generate array of points for the sample circle do // loop through theta xs[k]=sx-sr*sin(theta) ys[k]=sy+sr*cos(theta) theta+=ss k+=1 while(theta<=2*Pi+thetastart) snpnts=k //use i and k to redeminsion waves xs, ys, zs and xc, yc. cnpnts=i ReDimension/N=(snpnts) xs, ys ReDimension/N=(cnpnts) xc, yc ReDimension/N=(ngpnts) xn, yn print "number of points for 'charged rectangle'", cnpnts print "number of points for sample", snpnts print "number of points for negative block", ngpnts Display yc vs xc ModifyGraph mode=3,marker=19 AppendToGraph ys vs xs ModifyGraph mode=3,marker=19,rgb(ys)=(0,0,65535) AppendToGraph yn vs xn ModifyGraph mode=3,marker=19,rgb(yn)=(0,65535,0) Make/N=(snpnts)/D/O Bext //this is the field wave evaluated at points (xs,ys) Bext=0// initialize wave to zero print "start integration loop 1 at", time() i=0 // index for points on rectangle plate k=0 // index for Bext points in sample Variable xdelta, ydelta, zdelta, rsquare, multiplyconst // multiplyconst = the constants in front of the whole thing multiplyconst = 10^-7*m print "multiply factor", multiplyconst //Variable height = cz/2 do // loop for different points within the sample do // integrating over lower & upper charged rectangles at same time. xdelta=xc[i]-xs[k] ydelta=yc[i]-ys[k] // Top plate has positive charge and located at 0 zdelta = sz rsquare = (zdelta^2+xdelta^2+ydelta^2) Bext[k]+= (+1)*zdelta*cs*cs/rsquare
23
// Bottom plate has negative charge and located at -cz zdelta = cz+sz rsquare = (zdelta^2+xdelta^2+ydelta^2) Bext[k]+= (-1)*zdelta*cs*cs/rsquare i+=1 // step through points on disk to integrate while (i<=cnpnts-1) i=0 //reset loop variable if(k == round(.25*snpnts)) print "25% complete at", time() elseif(k == round(.50*snpnts)) print "50% complete at", time() elseif(k == round(.75*snpnts)) print "75% complete at", time() elseif(k == round(.90*snpnts)) print "90% complete at", time() endif k+=1 while (k<=snpnts-1) print "start integration loop 2 at", time() i=0 // index for points on rectangle plate k=0 // index for Bext points in sample //Variable height = cz/2 do // loop for different points within the sample do // integrating over lower & upper charged rectangles at same time. xdelta=xn[i]-xs[k] ydelta=yn[i]-ys[k] // Top plate has negative and located at 0 zdelta = sz rsquare = (zdelta^2+xdelta^2+ydelta^2) Bext[k]+= (-1)*zdelta*cs*cs/rsquare // Bottom plate has positive charge and located at -ch zdelta = ch+sz rsquare = (zdelta^2+xdelta^2+ydelta^2) Bext[k]+= (+1)*zdelta*cs*cs/rsquare i+=1 // step through points on disk to integrate while (i<=ngpnts-1) // multiply Bext[k] by all the constants Bext[k] *= multiplyconst i=0 // reset loop variable if(k == round(.25*snpnts)) print "25% complete at", time() elseif(k == round(.50*snpnts)) print "50% complete at", time() elseif(k == round(.75*snpnts)) print "75% complete at", time()
24
elseif(k == round(.90*snpnts)) print "90% complete at", time() endif k+=1 while (k<=snpnts-1) print "stop integration loop at", time() Edit xc,yc,xn,yn,xs,ys,Bext // displays these waves in a table. Display Bext // plots Bext as a function of kth point. ModifyGraph mode=0 End
25
Appendix B: Field vs Actuator Distance Simulation Function OctagonBvariationJustin(cx,cy,cz,cs,sx,sy,sz,sr,ss,thetastart) // Calculate the Bfield for an array of points defined by the circle with center at (sx,sy) and radius sr. Variable cx,cy,cz,cs,sx,sy,sz,sr,ss,thetastart //Variable cx,cy,cz,cnpnts,sx,sy,sz,sr,snpnts //ca = start hole x, cb = end hole x, ch = height hole, thetastart = phase shift // a = corner x length, b = corner y height Variable m m = 1.703*10^3 // m = total magnetization of the object (assumes ~180 ppm of dimensionless chi for Titanium, and B=12 Tesla, and mu_0=4Pie-7) //Variable cs,ss // cs = step size for x and y dim of rectangle, ss = step size in radians along circle //cs = cx*cy/cnpnts //cnpnts number of points on 'charged rectangle' over which to integrate. //snpnts number of points in sample to be evaluated. //ngpnts number of points in absent rectangle to be evaluated Variable cnpnts,snpnts,ngpnts,grdpnts,dpnts grdpnts = 2*(cx/cs)*(cy/cs)*2*pi/ss print "start time",time() DoWindow/K graph0 DoWindow/K graph1 DoWindow/K graph2 DoWindow/K table0 DoWindow/K table1 //kills leftover graphs and tables created by this macro from previous run. Make/N=(grdpnts)/D/O xc, yc, xs, zs, ys, angle // generates longer waves than needed. waves will be redimensioned later. Variable xj, yj // looping variables for tracking current x,y within charged plate Variable k, i, theta // loop variable Variable ymin, ymax // hold the max y and min y for calculating corners xj=0 yj=0 k=0 i=0 theta=thetastart ngpnts=0 dpnts=0 // first generate array of points for the charged rectangular plate do // loop through x do // loop through y xc[i]=xj yc[i]=yj i+=1 yj+=cs while(yj<=(cy+0.0001)) yj=0 // reset yj to -cr and step to next xj value. xj+=cs while(xj<=(cx+0.0001)) // now generate array of points for the sample circle // now generate array of points for the sample circle do // loop through theta
26
zs[k]=sz-sr*sin(theta) ys[k]=sy+sr*cos(theta) xs[k]=sx theta+=ss angle[k]=360-(theta-thetastart)*180/Pi k+=1 while(theta<=2*Pi+thetastart) snpnts=k //use i and k to redeminsion waves xs, ys, zs and xc, yc. cnpnts=i ReDimension/N=(snpnts) xs, ys, zs, angle ReDimension/N=(cnpnts) xc, yc print "number of points for 'charged rectangle'", cnpnts print "number of points for sample", snpnts Display/W=(1,1,500,500) yc vs xc ModifyGraph mode=3,marker=19,rgb(yc)=(65535,0,0) AppendToGraph ys vs xs ModifyGraph mode=3,marker=19,rgb(ys)=(0,0,65535) Make/N=(snpnts)/D/O Bext //this is the field wave evaluated at points (xs,ys) Bext=0// initialize wave to zero print "start integration loop 1 at", time() i=0 // index for points on rectangle plate k=0 // index for Bext points in sample Variable xdelta, ydelta, zdelta, rsquare, multiplyconst // multiplyconst = the constants in front of the whole thing multiplyconst = 10^-7*m print "multiply factor", multiplyconst //Variable height = cz/2 do // loop for different points within the sample do // integrating over upper charged rectangle first xdelta=xc[i]-sx ydelta=yc[i]-ys[k] zdelta=cz-zs[k] // Top plate has positive charge rsquare = (zdelta^2+xdelta^2+ydelta^2)^(3/2) Bext[k]+= (+1)*zdelta*cs*cs/rsquare i+=1 // step through points on disk to integrate while (i<=cnpnts-1) i=0 //reset loop variable do // integrating over lower charged rectangle second xdelta=xc[i]-sx ydelta=yc[i]-ys[k] zdelta=-zs[k]
27
// Bottom plate has negative charge rsquare = (zdelta^2+xdelta^2+ydelta^2)^(3/2) Bext[k]+= (-1)*zdelta*cs*cs/rsquare i+=1 // step through points on disk to integrate while (i<=cnpnts-1) // multiply Bext[k] by all the constants Bext[k] *= multiplyconst i=0 //reset loop variable if(k == round(.25*snpnts)) print "25% complete at", time() elseif(k == round(.50*snpnts)) print "50% complete at", time() elseif(k == round(.75*snpnts)) print "75% complete at", time() elseif(k == round(.90*snpnts)) print "90% complete at", time() endif k+=1 while (k<=snpnts-1) print "start integration loop 2 at", time() Edit xc,yc,zs,ys,angle,Bext // displays these waves in a table. Display Bext vs angle // plots Bext as a function of kth point. ModifyGraph mode=0 End
28
Bibliography
[1] S. E. Barrett, R. Tycko, “Optically Pumped NMR of Semiconductors and Two-
dimensional Electron Systems,” Encyclopedia of Nuclear Magnetic Resonance,
Supplementary Volume.
[2] A. E. Dementyev, “Spin in the Quantum Hall Effect: OPNMR Studies of Skyrmions
and Composite Fermions,” Dissertation, Yale University.
[3] J.P. Hornak, “The Basics of NMR,” http://www.cis.rit.edu/htbooks/nmr/inside.htm
[4] “Magnetic Susceptibility of the Elements and Inorganic Compounds,” http://www-