40m QIL Cryo_Lab CTN SUS_Lab CAML OMC_Lab CRIME_Lab FEA ENG_Labs OptContFac Mariner WBEEShop
  40m Log, Page 343 of 350  Not logged in ELOG logo
ID Date Author Type Categoryup Subject
  7050   Mon Jul 30 14:24:25 2012 DenUpdatedigital noisebiquad key is working

Quote:

What is "DQF"?  Is that the biquad?  And what is the difference between DF1 and DF2?  Why don't you just write out the name, so it's more clear.

DQF - biquad form
DF1 - direct form 1
DF2 - direct form 2
LNF - low-noise form
 
The difference between them is described in Matt's slides G0900928-v1. I think, LNF coefficients are incorrect in the presentation
 
lnf.png
  7052   Mon Jul 30 16:05:36 2012 DenUpdatedigital noisefilter checker

 We decided to write a script that will check online filters for digital noise. One method can be implemented using the following algorithm:

  • calculate filter output using single precision
  • calculate filter output using double precision and assume that it is precise
  • find digital noise at the output of the filter when single precision is used
  • extrapolate the result to the double precision filter dividing by 2D-S ~ 107, D - number of bits used in double precision mantissa, S - in single precision

Restriction: Single precision filter internal variables must be checked for overflows.

I applied this method to filtering a 1 Hz sine wave with a notch filter. Precise output should also be a 1 Hz wave => at other frequencies we see noise => digital noise spectrum should coincide with filter output. The plot shows the method worked out for this example.

iir_psd_notch.png

Using this method I estimated digital noise of butter("LowPass", 2, 0.001) applied to white noise. Sampling frequency was 16 kHz. 

iir_psd_lp.png iir_time_lp.png

  7085   Sat Aug 4 17:32:31 2012 DenUpdatedigital noisefilter checker

The script estimates digital noise produces by online filters. First version of Matlab files and complied c files are in scripts/digital_noise directory.

Algorithm for 1 filter bank (max number of filters = 10):

  1.        extract sos - representation from Foton file for each filter (Matlab)
  2.        download data from corresponding DQ channel using NDS (Matlab)
  3.        find filters that are switched on (Matlab)
  4.        filter signal using Df2 and BQF with single and double precision (C)
  5.        estimate digital filter noise (Matlab)
  6.        calculate power spectral density and plot the result (Matlab)

More details on (2)

Often DQ channels have reduced sampling rate. In this case the script will upsample data adding zeros.

AI filter is not applied. But in the end only the frequency range (0, DQ RATE / 2) is analyzed.

More details on (3):

This is done by reading C1:MODEL-BANK_NAME_SW1R and C1:MODEL-BANK_NAME_SW2R channels.
 
_SW1R channel value is the sum of the following numbers:
  • input switch ON / OFF => 4 / 0
  • filters 1 - 6 ON /OFF
    • 1 => 48 / 0
    • 2 => 192 / 0
    • 3 => 768 / 0
    • 4 => 3072 / 0
    • 5 => 12288 / 0
    • 6 => 49152 / 0
    • If a switch is ON but there is no corresponding filter (one green and one red line under the switch) then the switch value is divided by 3

_SW2R channel value is the sum of the following numbers:

  • decimation switch ON / OFF => 512 / 0
  • output switch ON / OFF => 1024 / 0
  • filters 7 - 10 ON /OFF
    • 7 => 3 / 0
    • 8 => 12 / 0
    • 9 => 48 / 0
    • 10 => 192 / 0
    • If a switch is ON but there is no corresponding filter (one green and one red line under the switch) then the switch value is divided by 3

Note: as for now Matlab script assumes that input, output and decimation filters are switched ON and there are no turned ON filter switches that do not correspond to any filters

More details on (5)

Digital noise using double precision is estimated by extrapolation of digital noise with single precision. The last is calculated by subtracting outputs of the filters with single and double precision. Then this noise is multiplied by 3 * 10-7.

This extrapolation number was achieved by printf tests of the number 0.123456789012345678 with single and double precision on C. Using type 'float' variables 10 significant numbers show up, using type 'double' - 17.

I also did 'calibration tests' to achieve extrapolation number - signal was filters with an aggresive low-pass filter. At high frequencies filter output spectrum is flat => digital noise amplitude must be the same. The plot shows GUR1_X channel filtered with low-pass chebyshev type 1 filter.

gur1x.png

However, extrapolation number is not the same for all cases. In the following example of analyzing BS_SUSPOS filter bank using extrapolation 3 * 10-7 we get noise that is slightly overestimated. In some other examples we need to take a larger number. But in average, I think, this is a good approximation.

C1SUS_BS_SUSPOS.png

To avoid extrapolation problem we can use long double precision (~19 digits). I was able to do this with gcc compiler. However, in mex compiler using long double in filter calculations, I do not get any better precision then using double precision. I'll think more about it.

  7676   Tue Nov 6 18:39:16 2012 DenUpdatedigital noiseifo checking system

Matlab version of ifo digital noise estimation code is almost ready. It estimates digital noise introduced by each filter bank in each model. I'm waiting for NDS group to complete function to download online data to Matlab. Now code downloads data from the past that is not great because not all _IN1 channels are recorded and some of them are recorded at lower frequencies.

There might be some useful functions in this code for other applications as I've heard during the meetings. This is what it does

  • reads model names from the input list
  • for each model
    • finds corresponding Foton file and extracts modules with sos filters and sampling rate of the model
    • finds corresponding MDL file and makes a search for subsystems with "top_names" tag and "biquad=1" tag
    • creates _IN1 channel names using module names and subsystems with "top_names" tag
    • for each channel inside the model
      • reads filter bank parameters (which filters are ON, switches, limit, offset...)
      • downloads data
      • calculates output and estimates digital noise
      • checks that output is less them limit if it is on
      • reports if something is wrong

NDS group plans to release the function to download online data this week. Hopefully, it will be possible to download ~30 channels at a time. Code will need a few minutes of data for each channel. So it will be possible to check the whole ifo during the night.

At this point I've checked 40m using DQ channels. We have ~40 IN1_DQ channels with non-empty filter banks. These are osems channels. Digital noise is low for them.

  2131   Wed Oct 21 17:12:30 2009 AlbertoUpdateelogBrowser context menu enabled on the Elog under HTM editing mode

On behalf of Steve and of the rest of the not-native-English community at the 40m willing to have their browser's spell checker working while editing the Elog, I fixed the Elog's feature that prevented Firefox' context menu (that one which pops up with a mouse right click) to work when using the HTML editing interface (FCKeditor).

That let also Firefox spell checker to get enabled.

To get the browser context menu just press CTRL right-clicking.

To make sure that the features works properly on your browser, you might have to fully clear the browser's cache.

Basically I modified the FCKeditor config file (/cvs/cds/caltech/elog/elog-2.7.5/scripts/fckeditor/fckconfig.js). I added this also to the elog section on our Wiki.

  2200   Fri Nov 6 19:29:24 2009 JenneUpdateelogelog acting up

elog was acting up again (not running), so I restarted it. 

  2201   Fri Nov 6 20:10:15 2009 JenneUpdateelogelog acting up

Quote:

elog was acting up again (not running), so I restarted it. 

 

And again.  This makes 4 times since lunchtime yesterday....something bad is up.

  2302   Thu Nov 19 16:04:48 2009 AlbertoConfigurationelogElog debugging output - Down time programmed today to make changes

We want the elog process to run in verbose mode so that we can see what's going. The idea is to track the events that trigger the elog crashes.

Following an entry on the Elog Help Forum, I added this line to the elog starting script start-elog-nodus:

./elogd -p 8080 -c /cvs/cds/caltech/elog/elog-2.7.5/elogd.cfg -D -v > elogd.log 2>&1

which replaces the old one without the part with the -v argument.

The -v argument should make the verbose output to be written into a file called elogd.log in the same directory as the elog's on Nodus.

I haven't restarted the elog yet because someone might be using it. I'm planning to do it later on today.

So be aware that:

We'll be restarting the elog today at 6.00pm PT. During this time the elog might not be accessible for a few minutes.

  2303   Thu Nov 19 18:49:55 2009 AlbertoConfigurationelogElog debugging output - Down time programmed today to make changes

Quote:

We want the elog process to run in verbose mode so that we can see what's going. The idea is to track the events that trigger the elog crashes.

Following an entry on the Elog Help Forum, I added this line to the elog starting script start-elog-nodus:

./elogd -p 8080 -c /cvs/cds/caltech/elog/elog-2.7.5/elogd.cfg -D -v > elogd.log 2>&1

which replaces the old one without the part with the -v argument.

The -v argument should make the verbose output to be written into a file called elogd.log in the same directory as the elog's on Nodus.

I haven't restarted the elog yet because someone might be using it. I'm planning to do it later on today.

So be aware that:

We'll be restarting the elog today at 6.00pm PT. During this time the elog might not be accessible for a few minutes.

 I tried applying the changes but they didn't work. It seems that nodus doesn't like the command syntax.

I have to go through the problem...

The elog is up again.

  2562   Tue Feb 2 18:15:47 2010 AlbertoUpdateelogElog restarted it

 Zach made me notice that the elog had crashed earlier on this afternoon. 

I just restarted it with the restarting script.

Instructions on how to run the last one are now in the wiki page. Look on the "How To" section, under "How to restart the elog".

  2567   Wed Feb 3 10:46:12 2010 AlbertoUpdateelogelog restarted

 Again, this morning Zach told me that the elog had crashed while he was trying to post an entry.

I just restarted it.

  2569   Thu Feb 4 00:59:52 2010 ranaUpdateelogelog restarted

 I restarted the ELOG on NODUS just now. Our attempt to set up error logging worked - it turns out ELOG was choking on the .ps file attachment.

So for the near future: NO MORE .PS files! Use PDF - move into the 20th century at least.

matlab can directly make either PNG or PDF files for you, you can also use various other conversion tools on the web.

Of course, it would be nice if nodus could handle .ps, but its a Solaris machine and I don't feel like debugging this. Eventually, we'll give him away and make the new nodus a Linux box, but that day is not today.

  2669   Fri Mar 12 13:52:18 2010 ZachUpdateelogelog restarted

 The elog was down and I ran the restart script.

  2702   Tue Mar 23 15:38:26 2010 AlbertoUpdateelogelog just restarted

I found the elog down and I restarted it.

Then, after few seconds it was down again. Maybe someone else was messing with it. I restarted an other 5 times and eventually it came back up.

  2739   Wed Mar 31 10:34:02 2010 josephbUpdateelogElog not responding this morning

When I went to use the elog this morning, it wasn't responding.  I killed the process on nodus, and then restarted, per the 40m wiki instructions.

  2758   Fri Apr 2 08:52:21 2010 AlbertoUpdateelogelog restarted

i just restarted the elog for the third time in the past 12 hours.

I checked the elog.log file to debug the problem. It doesn't contain eveidence of any particular cause, except for png/jpg file uploads happened last night.

I'm not sure we can blame Image Magic again because the last crash seems to be occurred just after an entry with e jpg picture was included in the body of the message. I think Image Magic is used only for previews of attachments like pdfs or ps.

Maybe we should totally disable image magic.

  2817   Tue Apr 20 13:00:52 2010 ZachUpdateelogelog restarted

 I restarted the elog with the restart script as it was down.

  2853   Wed Apr 28 08:55:19 2010 ZachUpdateelogelog restarted

 Restarted the elog with the script as it was down.

  2854   Wed Apr 28 09:21:16 2010 ZachUpdateelogelog restarted

And again.

Quote:

 Restarted the elog with the script as it was down.

 

  2979   Tue May 25 07:58:23 2010 kiwamuUpdateelogelog down

I found the elog got down around 7:30 am in this morning.

So I restarted it by running the script: "start-elog-nodus" as instructed on the wiki.

http://lhocds.ligo-wa.caltech.edu:8000/40m/How_To/Restart_the_elog

  3071   Sat Jun 12 18:03:00 2010 sharmilaUpdateelogTemperature Controller

Kiwamu and I setup a serial port terminal for receiving data from TC200 via a RS-232 USB interface. It was done using a Python code. Some command definitions need to be done to get the output from TC-200.

  3181   Thu Jul 8 17:29:20 2010 Katharine, SharmilaUpdateelog 


Last night, we successfully connected and powered our circuit, which allowed us to test whether our OSEMs were working.  Previously, we had been unable to accomplish this because (1) we weren't driving it sufficiently high voltage, and  (2) we didn't check that the colored leads on our circuit actually corresponded to the colored ports on the power supply (they were all switched, which we are in the process of rectifying), so our circuit was improperly connected to the supply .  Unfortunately, we didn't learn this until after nearly cooking our circuit, but luckily there appears to have been no permanent damage .

Our circuit specs suggested powering it with a voltage difference of 48V, so we needed to run our circuit at a difference of at least 36-40 V.  Since our power supply only supplied a difference of up to 30V in each terminal, we combined them in order to produce a voltage of up to double that.  We decided to power our circuit with a voltage difference of 40V (+/- 20V referenced to true ground).  The current at the terminals were 0.06 and 0.13 A. 

To test our circuit, we used a multimeter to check the supplied voltage at different test points, to confirm that an appropriate input bias was given to various circuit elements.  We identified the direction of LED bias on our OSEM, and connected it to our circuit. We were extremely gratified when we looked through the IR viewer and saw that, in fact, the LED in the OSEM was glowing happily .

P7070240.JPG P7070242.JPG

We hooked up two oscilloscopes and measured the current through the coil, and also through the LED and photodiode in the OSEM.  We observed a change in the photodiode signal when we blocked the LED light, which was expected.  The signal at the PD and the LED were both sinusoidal waves around ~3 kHz.

P7070255.JPG 

P7070257.JPG

 

We then went back to our levitation setup, and crudely tried to levitate a magnet with attached flag by using our hands and adjusting the gain (though we also could have been watching the PD current).  The first flag we tried was a soldering tip; we couldn't levitate this but achieved an interesting sort of baby-step "levitation" (levitation .15) which allowed us to balance the conical flag on its tip on top of the OSEM (stable to small disturbances).  After learning that conical flags are a poor idea, we switched our flag to a smaller-radius cylindrical magnet.  We were much closer to levitating this magnet, but were unable to conclusively levitate it .

 P7070249.JPG
Current plan:

Adjust the preset resistors to stabilize feedback

Check LED drive circuit.

Finish calculating the transfer function, and hook up the circuit to the spectrum analyzer to measure it as well.

Observe the signal from the photocurrent as disturbances block the LED light.

Play with the gain of the feedback to see how it affects levitation.

 

Attachment 1: P7070254.JPG
P7070254.JPG
  3200   Mon Jul 12 21:26:02 2010 Katharine, SharmilaUpdateelogmaglev coils

The connection between our coil wires and BNC terminals was pretty awful (soldered wires broke off ) so we removed the old heat shrink and re-soldered the wires.  We then chose more appropriately sized heat shrinks (small one around each of the two soldered wires, a medium-sized shrink around the wires together, a large one covering the BNC terminal and the wire) and used the solder iron and heat gun to shrink them.

P7120276.JPG

 

 

  3212   Wed Jul 14 01:05:27 2010 Sharmila,KatharineSummaryelogMaglev

Yesterday we hooked up the Quadrant Maglev control to the power supply to test the components in the Input/Output part of the circuit.

The output from the buffer was an unexpected high noise signal which was caused by some circuit components.

Consequently these were replaced/removed after confirming the source of noise.

The following is a story of how it was done.


To test the components of input/output, we measured the output across TP_PD3(Test Point -Photo Diode 3).
We got a high noise signal with a frequency of several kHz.

We tested the values of various electronic components. The resistances R5 and R6 did not measure as mentioned(each had a value of 50 K in the schematic). The value of R6 was 10 K and we replaced R5 with a 10 K resistor. We still got the noise signal at 5.760 kHz with a Pk-Pk voltage of 2.6 V. The resistors in R-LED measured 1.5 K instead of the marked 2.2 K.

P7120278.JPG
We had three suspects in hand:

  • BUF634P : A buffer from the Sallen-Key filter to the LED.
  • C24 : A capacitor which is a part of the Sallen-Key filter.
  • C23 : A capacitor in the feedback circuit of the Sallen-Key filter.


BUF634P : The data sheet for the BUF634P instructed a short across the 1-4 terminals in the presence of capacitive load.  We followed this to overcome the effect(if any) of the extra-long BNC cables which we were using. The oscilloscope still waved 'Hi!' at a few kHz. We removed the buffer and also the feedback resistor R42 from the circuit, what we were testing boiled down to measuring the output of the Sallen-Key filter. The output still contained the funny yet properly periodic signal at a few kHz.      

.P7120284.JPG    


C24: Removing C24 did not do any good.

C23: As a final step C23 was removed. And ... We got a stable DC at 9.86 V(almost stable DC with a low noise at a few MHz). C24 and the buffer were replaced and output seemed fine. The output was a high frequency sine wave which was riding on a DC of 9.96 V.

 

P7120281.JPG


We rechecked if the LED was on and the infrared viewer gave a positive signal.



We went ahead obtaining the transfer function of the feedback control for which we used a spectrum analyzer.

The input for feedback system is a photo current whereas the spectrum analyzer tests the circuit with a voltage impulse.  Hence the voltage input from the spectrum analyzer needs to be converted into current of suitable amplitude(few microamps) for testing the spectrum analyzer.  Similarly the output which is a coil current needs to be changed to a voltage output through a load for feeding into the channel of the spectrum analyzer. We used a suitable resistance box with BNC receiving ends to do this. We obtained a plot for the transfer function which is shown below.

P7140292.JPG


Future plans:

- Check the calculated transfer functions with the plot of the spectrum analyzer

- Model the entire(OSEM, magnet, actuators etc.) system in Simulink and calculate the overall transfer function

- Stable levitation of the 1X1 system

  3234   Fri Jul 16 12:36:00 2010 Katharine, SharmilaUpdateeloglevitation

After last night's challenge (or inspiration), we levitated our magnet this morning.  Since the nice Olympus camera is not currently in the 40m, we had to use my less stellar camera, but despite the poor video quality you can still see the magnet returning to its stable equilibrium position.  Once we recover the better camera, we will post new videos.  Also, we haven't yet figured out how to put videos in line in the elog entry, so here are the youtube links:

 

levitation 1

levitation 2

 

We adjusted the gain on coil 1 so that the resistance from the pots was 57.1k (maximum gain of 101.2,).

currents from power supply, pre-levitation: 0.08 A and 0.34 A

post levitation: 0.08 A and 0.11 A


note: we're not sure why changing the gain on coil 3 changes the current through the power supply, so we'd like to investigate that next.

Attachment 1: CIMG0649.AVI
  3250   Tue Jul 20 11:55:15 2010 Sharmila,KatharineUpdateelogMaglev

We plotted the transfer functions for the maglev control circuit and compared them with the plots from the spectrum
analyzer. We were stuck for sometime because

1) we had wrongly entered the value of one of the resistors which was off by a factor of 2000.
2) The plots were not done in right units. So we couldn't figure out differences quite well.

The two plots are shown below. We are still off by a factor of 3 which we'll figure out soon.

P7140292.JPG

  3382   Sat Aug 7 10:47:38 2010 KojiSummaryelogelog restarted / source of the trouble eliminated

Nancy notified me that the elog crashed. It was fixed.


I restarted elog, but it kept crashing. Some of the entries on Aug 6th caused the trouble.

I tried to refresh the pictures in entries 3376, 3377, 3378. Still it kept crashing.
I started to dig into the elog file itself. (/cvs/cds/caltech/elog/elog-2.7.5/logbooks/40m/100806a.log)

FInally I found that there was some invalid reply links in the entry 3379.

Date: Fri, 06 Aug 2010 19:29:59 -0700
Reply to: 3379
In reply to: 3379

The entry is refering this entry itself. That is weird. So I deleted the reply-to and in-reply-to lines.
Then elogd got happy.

In fact, 3379 was a dupulication of 3380, so I deleted this entry.

  3390   Tue Aug 10 01:05:17 2010 ZachUpdateelogelog restarted

 Elog was down. Restarted with the script.

  3396   Wed Aug 11 02:44:37 2010 ZachUpdateelogelog restarted

You'll never guess what happened: the elog crashed!

I restarted it with the script. Yay.

  3401   Wed Aug 11 16:13:59 2010 JennaUpdateelogelog restarted

The elog crashed, so we restarted it again.

  3406   Thu Aug 12 11:39:27 2010 ZachUpdateelogelog restarted

with script

  3415   Thu Aug 12 23:17:54 2010 ZachUpdateelogrestarted

 script

  3416   Thu Aug 12 23:41:48 2010 JenneUpdateelogrestarted

Quote:

 script

 More of the same. 

Who is putting weird figures into the elog?!?!  I haven't checked lately, but this is what usually crashes the elog.  It's been happening a lot lately, and it might be the .pdf's. 

Let's play a new game.  We'll call this game "Everyone only use .png files for the next week" Ready? GO!

  3420   Fri Aug 13 13:11:30 2010 DmassUpdateelogrestarted

Quote:

Quote:

 script

 More of the same. 

Who is putting weird figures into the elog?!?!  I haven't checked lately, but this is what usually crashes the elog.  It's been happening a lot lately, and it might be the .pdf's. 

Let's play a new game.  We'll call this game "Everyone only use .png files for the next week" Ready? GO!

Do we know what causes the crashes for definite? Let's give the whole knowledge gathering a shot. Surfs welcome to post. Please follow the format and keep it brief. P.S. if the elog stops responding or hangs while you're trying to edit a post or write a post, you may have crashed it.

Person

  • Crashes

Dmass

  • I have crashed the elog with downsized jpegs (~300-900kB).
  • I see jpegs on the front page of the 40m (which seem to have not crashed it?)
  • I have posted pdf's with and without png thumbnails (associated automatically via the Mac program preview) without problem.

 

Edit this post to add your own experience using the above format

  3426   Mon Aug 16 23:13:25 2010 ZachUpdateeloge to the log

 Zach

  • I get so many freebies it's ridiculous
  3429   Tue Aug 17 09:06:08 2010 AlbertoUpdateelogelog was down

I just restarted the elog after I found it down a few minutes ago.

  3431   Tue Aug 17 23:59:46 2010 KatharineUpdateelogMaglev update

Katharine, Sharmila

Update: 
We haven't been posting in the elog regularly, for which we are very sorry.  We have been taking notes in our log books, but we ought to have posted here as well.  We apologize and now present an overview of what we've been up to.

Some time ago, we created a Simulink model to predict the response of our system, but for the model to be useful we needed to include approximately correct gains for each block in the diagram, including the magnet force and coil force gradients and OSEM "gain." We also needed to better quantify the 1x1 levitation.


Adjusting the potentiometers:

The circuit which converts current to voltage in the Quadrant maglev control has a variable resistor. This is useful as it gives us a way to zero the current when the levitated object is in the equilibrium position. It was done as follows. The output voltage from the circuit converting current to voltage is fed into the oscilloscope. The voltage values for zero and complete blockage of the LED is noted(say 2V). We adjust the resistor to make the voltage output to be V when the flag completey bolcks the LED. This gives a zero current when the flag is in the equilibrium position.

OSEM Calibration:

The OSEM works by blocking the light that goes into the photodetector from the LED by a flag. To simulate the model we had on simulink, we needed to find what the gain of the OSEM was. The gain of the OSEM is the current it gives per unit displaccement of the flag. To determine this we attached a micrometer to the OSEM flag. The micrometer was long eneough to push the flag to completey block the OSEM. We connected the output of the PD test point (which was the voltage after the photodiode current was converted into voltage) to the oscilloscope. We noted down the voltage difference in the oscilloscope with a fixed reference for different positons of the flag. From the oscilloscope output, we were able to get the PD current. We then selected a linear region of the plot of PD current vs flag position(which is usually in the middle) to fit the graph with a straight line. The slope gives the OSEM gain.

Magnet strength
    We need to know about the relative strengths of our magnets (levitated and fixed in the coil) in order to do magnet matching.  We used a Gaussmeter to measure the field from each coil magnet at  ~2 mm away from the center (the probe was fixed to an aluminum block, so that the tip had the same vertical separation for each of the four fixed plate magnets).  We labeled each of the four magnets and calculated the field at this distance to be 0.206 kG, 0.210 kG, 0.212 kG, and 0.206 kG,  respectively, for coils 1-4.  However, each measurement had a rather large uncertainty of 0.01 kG, because the field strength varied a lot with position on the magnet, and the measurements were limited by how well we could align the probe tip with the center.

Fixed Plate Magnets - magnetic field (kG)           
meas't    1        2        3        4
1       0.205    0.213    0.209    0.204
2       0.211    0.219    0.223    0.207
3       0.199    0.205    0.211    0.201
4       0.207    0.203    0.206    0.213
average 0.206    0.210    0.212    0.206
stdev   0.005    0.007    0.007    0.005

    We also planned to take the same measurements for the coil magnets.  We noted that the magnetic field varied a lot depending on the probe's location, but not in the way we would expect.  At the edges of the magnet, the field was much stronger (~2 kG) than at the center (~0.5 kG).  We initially thought this might have to do with how we were holding the probe -- for instance, if we measured the force towards the edge by moving the tip all the way across the center of the magnet, there might be some kind of integration effect which does not accurately represent the field.   However, we measured the field at the edge with the probe across the magnet and also with the probe, so this is clearly not the case.

    We also noticed that the cylindrical magnet we used for single-magnet levitation was not attracted to the coil magnets in the way we expected.    Though the cylindrical magnet was oriented so that it was strongly attracted to the coil magnet, it was attracted more to the edges than the center, so that it seemed to be repelled by the centers of the coil magnets.  Though this follows somewhat from the Gaussmeter readings, it is not the behavior we would expect when considering the coil magnets as magnetic dipoles.

Attempting single-magnet levitation for each coil:
    We attempted to levitate single magnets using all four OSEM/coil combinations.   We assembled the magnets and OSEMs using Haixing's mount, and, adjusting the height of the OSEM plate, attempted to levitate the single magnet with a flag with which we were previously successful.   This was completely unsuccessful using all of the coil magnets (and when we tried to levitate using the south magnets, we flipped the cylindrical magnet's orientation).
    Since we had already achieved this levitation, this seemed particularly wrong.  We disassembled the fixed OSEM plate in Haixing's mount and built a cursory OSEM mount, similar to the one we had used for levitation before, and did not fix it in place.  After a little experimenting with the height and position of the OSEM, we were able to achieve levitation with coils 1 and 4.
    We noted the levitation magnet separation (~4.5 mm) and the height of the OSEMs at which levitation was achieved (147 +/- 1 mm for coil 1, 146 +/- 1 mm for coil 4).  Then, we reassembled Haixing's OSEM plate and tried to levitate the cylindrical magnet at coil 1 and coil 4, respectively, adjusting the OSEM plate so that the height of the OSEM of interest was the same as when we achieved single-magnet levitation.  This was unsuccessful, which leads us to believe that there is some alignment issue between the fixed coil magnets and the OSEMs in the mount,  possibly due to the unusual field from the fixed coil magnets.
    We also were completely unable to levitate using coils 2 and 3.  Coils 1 and 4 have identical circuit paths, whereas 2 and 3 differ slightly.  With more time, we need to investigate this further.

Force-distance measurements
    We also measured the repulsive force between the cylindrical magnet and the coil magnets as a function of separation.  We fixed each of the coil magnets, individually, on a stack of sticky notes on a precision balance (the stack of sticky notes was to prevent the coil magnet from interacting with the digital balance) and zeroed the balance.  We then fixed the cylindrical magnet (oriented so that it would be repelled by the coil magnet) to a teflon rod, and mounted the rod so that we could slide it up and down a long cylindrical post.  Noting the position of the rod and cylindrical magnet, we were able to measure the repulsive force as a function of separation (see Excel graph).
    However, because the magnetic field varied so much with position on the coil magnet, there is a lot of uncertainty associated with these measurements.    We tried to keep the cylindrical magnet in the same horizontal position, but it was impossible to keep the exact position while sliding the mounted teflon rod up and down the posts.    In spite of this, we fit the linear region of this graph, near the equilibrium separation of the magnets, for a very approximate measurement of the magnetic field force gradient. The slope gives the force per unit distance of the magnet.

Coil-force measurement
    We measured the force by changing the current through the coil of wire, using a very similar setup as described above.  Since we are concerned with the magnetic force as a function of current, not separation, we fixed the teflon rod so that the cylindrical magnet and coil magnet were separated by ~4.5 mm, the approximate levitation separation of the two magnets.   We then completely blocked the OSEM with the flag, creating a maximum PD current, and measured the coil current using an oscilloscope when the LED was fully blocked and the current when we removed the flag.  At the same time, we measured the repulsive force by looking at the precision balance.
    Unfortunately, we had difficulty taking further readings, because our circuit starting behaving oddly (described below).  Otherwise, we would repeat this process by blocking the OSEM LED by various amount and measuring the change in coil current, and the corresponding reading on the precision balance.   However, the force should be linearly dependent on coil current, and we ought to know one other point: when there is no current in the coil, there should be no magnetic force from the coil to the magnet.  Using this information, we can determine the slope of magnetic force by coil current, but it's not very reliable as we have only one real data point.
    One additional aspect makes this reading questionable.  When we switched on the power supply, the reading on the precision balance changed, before we had blocked the OSEM LED at all. Since no light was blocked, theoretically no photocurrent should be coming from the PD and there should not be a coil current from the feedback, so the force should not be changing. We are not sure why this is.

Recent Circuit Behavior
    Some noise in the circuit appears to be hugely amplified when the gains of each coil are high, resulting in a high frequency signal of a few hundred kHz.  When the gains are all sufficiently high, this noise can saturate the coil current so that when PD current changes, there is no visible change in coil current.
    On Saturday, we noticed some odd behavior from the circuit.  We hooked up the oscilloscope so we could see both PD current and coil current, and were very surprised that the PD current signal was oscillating and continually changing even when no flag was inside the OSEM.   This was also affecting the coil current as well.  We thought this might be due to some component burning out in our circuit, or RC coupling somewhere, but we did not get a chance to pinpoint the origin of this problem.

Modeling
Initially we had attempted to model the force-distance treating the two cylindrical magnets as dipoles, and finding the attraction/repulsions between the four distinct poles.  However, the resulting equation did not have a maximum, which is what we got in our measured values, so it seems this is not the best approach.  We would like to try the current loop approximation.

Attachment 1: repulsiveforce.png
repulsiveforce.png
Attachment 2: OSEMcalibration.png
OSEMcalibration.png
Attachment 3: OSEMslopes.png
OSEMslopes.png
  3436   Wed Aug 18 19:14:59 2010 JenneUpdateelogelog dead again

The elog was so dead this time that the restart script didn't work.  I followed the restart-by-hand instructions instead, with success.

  3439   Thu Aug 19 01:49:14 2010 JenneUpdateelogelog dead again

Quote:

The elog was so dead this time that the restart script didn't work.  I followed the restart-by-hand instructions instead, with success.

 Just for added interest, I tried a different method when the restart script broke.  The "start-elog-nodus" script has a line "kill elogd".  This seems not to be actually killing anything anymore, which means the elog can't restart.  So this time I went for "kill <pid number>", and then ran the startup script.  This worked.  So it's the "kill elogd" which isn't working reliably.

  3440   Thu Aug 19 09:51:43 2010 josephbUpdateelogelog dead again

I found the elog dead again this morning, and the script didn't kill again. I modified the script to use the following line instead of "pkill elogd":

kill `ps -ef | grep elogd | grep -v grep | grep -v start-elog-nodus | awk '{print $2}'`

Hopefully the script will be a bit more robust in the future.

Quote:

Quote:

The elog was so dead this time that the restart script didn't work.  I followed the restart-by-hand instructions instead, with success.

 Just for added interest, I tried a different method when the restart script broke.  The "start-elog-nodus" script has a line "kill elogd".  This seems not to be actually killing anything anymore, which means the elog can't restart.  So this time I went for "kill <pid number>", and then ran the startup script.  This worked.  So it's the "kill elogd" which isn't working reliably.

 

  3445   Thu Aug 19 21:56:02 2010 ZachUpdateelogrestarted

 script

  3446   Fri Aug 20 13:09:53 2010 josephbUpdateelogRebooted elog

I had to restart the elog again.

At this point, I'm going to try to get one of the GC guys to install gdb on nodus, and run the elog in the debugger, that way when it crashes the next time, I have some error output I can send back to the developer and ask why its crashing there.

  3453   Sun Aug 22 16:20:24 2010 ZachUpdateelogrestarted (with my phone this time)
  3454   Mon Aug 23 00:08:24 2010 JenneUpdateelogJoe, I think this's your cue...
  3464   Tue Aug 24 14:29:18 2010 josephbUpdateelogElog down for 1 minute

I'm going to take the elog down for one minute and restart it under gdb (using a copy of gdb stolen from fb40m since I couldn't figure out how to install an old enough version on nodus from source).  The terminal with information is running on Rosalba under the "Phase Noise" panel, so please don't close it.  Ideally, the next time the elog crashes, I'll have some output indicating why or at least the line in the code.  I can then look at the raw source code or send the line back to the developer and see if he has any ideas.

  3465   Tue Aug 24 17:57:57 2010 ZachUpdateelogrestarted

 Restarted the elog using the script. I had to do it twice for it to work. This is not the first time this has happened---does anyone know why this might be?

  3466   Tue Aug 24 22:26:16 2010 ZachUpdateelogrestarted

took two again

Quote:

 Restarted the elog using the script. I had to do it twice for it to work. This is not the first time this has happened---does anyone know why this might be?

 

  3467   Wed Aug 25 12:18:47 2010 josephbUpdateelogTrying new version of elog to see if it helps stability

So unfortunately, I made the start-elog-nodus script smart enough to kill the debugging run I had (although thats probably good since there might have been issues with continuing to run - just poor timing on part of the crash).

In related news, I have gotten the latest version of the elog code to actually compile on Nodus.  I had to hack the cryptic.c file (elog/src/cryptic.c) to get it to work though.

The following was copied from the #ifdef _MSC_VER section of the code into the #else directly following that section. 

#define MAX(x,y) ((x)>(y)?(x):(y))
#define MIN(x,y) ((x)<(y)?(x):(y))
#define __alignof__(x) sizeof(x)
#define alloca(x) malloc(x)
#define mempcpy(d, s, n) ((char *)memcpy(d,s,n)+n)
#define ERANGE 34


I also removed #include <stdint.h> as the functionality it provides is covered by inttypes.h on Solaris machines, which is automatically included.

This new code was released August 5th 2010, while the old elog code we were running was 2.7.5 and was released sometime in 2008.  There are several crash fixes mentioned in the version notes so I'm hoping this may improve stability. I'm in the process of making a copy of the elog logbooks into the elog-2.8.0 install (so as to have a backup with the original 2.7.5).  I'm also copying over all the configuration files.   In a few minutes I'm going to try switching over to the new elog.  If it doesn't work, or is worse, its easy enough to just start up the current version.

All files are located in /cvs/cds/caltech/elog/elog-2.8.0 (the old directory is elog-2.7.5).  I've made  a new startup script called start-elog-nodus-2.8.0.  To start the new one, just run that script.  To start the old one, just go to the elog-2.7.5 directory and run the old start-elog-nodus script.

  3468   Wed Aug 25 12:40:28 2010 josephbUpdateelogReverted back to 2.7.5 until further testing is done

So apparently the themes/configurations didn't work so nicely on some of the logbooks with 2.8.0, so I'm reverting to 2.7.5 until I can figure out (assuming I can) how to get them to display properly.

  3471   Wed Aug 25 15:55:33 2010 josephbUpdateelogStaying with 2.7.5 until passwords sorted out

Turns out the elog version 2.8.0 uses a different encryption method than 2.7.5.  This mean the encrypted passwords stored in the elogd.cfg don't work with the new code.  elogd includes functionality to generate encrypted passwords, but unfortunately I don't know the administration passwords for some of the logbooks.  So I'm going to leave 2.7.5 running until I can get those added properly to the 2.8.0 cfg file.

ELOG V3.1.3-