tdsresp is broken on our linux control room machines. I made a little perl replacement which uses the DiagTools.pm perl module, called pzresp. It's in the $SCRIPTS/general directory, and so in the path of all the machines. I also edited the cshrc.40m file so that on linux machines tdsresp points to this perl replacement.
I've patched DiagTools.pm to circumnavigate the tdsdmd bug described here. I also added a function to DiagTools.pm called diagRespNoLog, which is just like diagResp but without that pesky log file.
Here's the output from the tdsresp binary on CentOS:
allegra:~>tdsresp 941.54 10000 100 10 C1:LSC-ITMX_EXC C1:LSC-PD1_Q C1:LSC-PD1_I
nan nan nan nan nan nan nan
nan nan nan nan nan nan nan
nan nan nan nan nan nan nan
*** glibc detected *** tdsresp: free(): invalid next size (fast): 0x089483e8 ***
======= Backtrace: =========
======= Memory map: ========
00242000-00249000 r-xp 00000000 fd:00 15400987 /lib/librt-2.5.so
00249000-0024a000 r--p 00006000 fd:00 15400987 /lib/librt-2.5.so
0024a000-0024b000 rw-p 00007000 fd:00 15400987 /lib/librt-2.5.so
009f9000-00a13000 r-xp 00000000 fd:00 15400963 /lib/ld-2.5.so
00a13000-00a14000 r--p 00019000 fd:00 15400963 /lib/ld-2.5.so
00a14000-00a15000 rw-p 0001a000 fd:00 15400963 /lib/ld-2.5.so
00a17000-00b55000 r-xp 00000000 fd:00 15400974 /lib/libc-2.5.so
00b55000-00b57000 r--p 0013e000 fd:00 15400974 /lib/libc-2.5.so
00b57000-00b58000 rw-p 00140000 fd:00 15400974 /lib/libc-2.5.so
00b58000-00b5b000 rw-p 00b58000 00:00 0
00b5d000-00b70000 r-xp 00000000 fd:00 15400984 /lib/libpthread-2.5.so
00b70000-00b71000 r--p 00012000 fd:00 15400984 /lib/libpthread-2.5.so
00b71000-00b72000 rw-p 00013000 fd:00 15400984 /lib/libpthread-2.5.so
00b72000-00b74000 rw-p 00b72000 00:00 0
00b76000-00b78000 r-xp 00000000 fd:00 15400981 /lib/libdl-2.5.so
00b78000-00b79000 r--p 00001000 fd:00 15400981 /lib/libdl-2.5.so
00b79000-00b7a000 rw-p 00002000 fd:00 15400981 /lib/libdl-2.5.so
00b7c000-00ba1000 r-xp 00000000 fd:00 15400975 /lib/libm-2.5.so
00ba1000-00ba2000 r--p 00024000 fd:00 15400975 /lib/libm-2.5.so
00ba2000-00ba3000 rw-p 00025000 fd:00 15400975 /lib/libm-2.5.so
00bca000-00bdd000 r-xp 00000000 fd:00 15401011 /lib/libnsl-2.5.so
00bdd000-00bde000 r--p 00012000 fd:00 15401011 /lib/libnsl-2.5.so
00bde000-00bdf000 rw-p 00013000 fd:00 15401011 /lib/libnsl-2.5.so
00bdf000-00be1000 rw-p 00bdf000 00:00 0
00dca000-00dd5000 r-xp 00000000 fd:00 15400986 /lib/libgcc_s-4.1.2-20080825.so.1
00dd5000-00dd6000 rw-p 0000a000 fd:00 15400986 /lib/libgcc_s-4.1.2-20080825.so.1
08048000-080b7000 r-xp 00000000 00:17 6455328 /cvs/cds/caltech/apps/linux/tds/bin/tdsresp
080b7000-080ba000 rw-p 0006e000 00:17 6455328 /cvs/cds/caltech/apps/linux/tds/bin/tdsresp
080ba000-080bb000 rw-p 080ba000 00:00 0
0893d000-0896b000 rw-p 0893d000 00:00 0 [heap]
f5e73000-f5e74000 ---p f5e73000 00:00 0
f5e74000-f6874000 rw-p f5e74000 00:00 0
f692d000-f6931000 r-xp 00000000 fd:00 15400995 /lib/libnss_dns-2.5.so
f6931000-f6932000 r--p 00003000 fd:00 15400995 /lib/libnss_dns-2.5.so
f6932000-f6933000 rw-p 00004000 fd:00 15400995 /lib/libnss_dns-2.5.so
f6956000-f6a12000 rw-p f6a31000 00:00 0
f6a74000-f6a7d000 r-xp 00000000 fd:00 15400997 /lib/libnss_files-2.5.so
f6a7d000-f6a7e000 r--p 00008000 fd:00 15400997 /lib/libnss_files-2.5.so
f6a7e000-f6a7f000 rw-p 00009000 fd:00 15400997 /lib/libnss_files-2.5.so
f6a7f000-f6a80000 ---p f6a7f000 00:00 0
f6a80000-f7480000 rw-p f6a80000 00:00 0
f7480000-f7481000 ---p f7480000 00:00 0
f7481000-f7e83000 rw-p f7481000 00:00 0
f7e83000-f7f63000 r-xp 00000000 fd:00 6236924 /usr/lib/libstdc++.so.6.0.8
f7f63000-f7f67000 r--p 000df000 fd:00 6236924 /usr/libAbort
I added a temporary channel, to input 9 on the PEM ADCU. Beware the 30, 31, and 32 inputs. I tried 32 and it only gave noise.
Tried taking the circuit from the breadboard to the PCB. I attached all the components to adapters that would allow them to be connected to the PCB. From the first picture, the first component is AD586, the second is AD590, and the third is LT1012, along with a resistor across it. I then soldered the connections between the components, as can be seen in the second picture. When I tested out this version of the circuit by hooking it up to the DC source, I got a reading of ~-15V. I will have to check all the connections to make sure there is contact where there should be one, and no contact where there shouldn't be. I had issues attaching the tiny AD590 and LT1012 to its adaptor, so the issue may lie there as well. I'll also check that each component is in working order as well.
Once I figure out where my error is, my plan is to build two more of these and place a metal object such that it contacts only the surface of the AD590s. This would allow me to compare the three values to the actual temperature of the metal, which would then tell me how accurate this setup is.
Note on the resistor: I measured all the resistors and chose three that had exactly 10.00k Ohm. The voltage detected is dependent on the resistor, so if we are to take three identical copies, I ensured that there would be no error due to the resistors being a little different.
Got it to work. One of the connections was faulty. I decided to check the temperature measured against a thermometer. The sensor showed 26.1 C, but the thermometer showed 25.8 C after I let them both cool down after heating them up. The temperature of the thermometer was dropping at the time of measurement, but the temperature of the sensor was not. This is still a rough version of the final sensor, so I'm not sure what exactly causes this discrepancy.
On Friday, I cleaned up the circuit so that there are only three connections needed (+15V, -15V, GND) and a BNC connector for reading the output. Today, I added in bypass capacitors. The small yellow ones are 0.1 microF ceramic, and the large ones are 100 microF electrolytic. They are used to stabilize the +15V and -15V inputs to the OP amp and minimize fluctuations, since it doesn't have a regulator for stability. I have also attached the circuit diagram for the OP amp only, where 1 are the electrolytic and 2 are the ceramic. The temperature is still about 2 degrees off, but if that difference is constant for all temperatures in our range we can just calibrate it later.
Here is a helpful link on bypass capacitors (thanks to Kevin for sending it to me).
As a note, the electrolytic capacitors do have a polarity, so it is important to place them correctly (the negative side is towards the lower voltage potential, and not always towards ground).
Temperature sensor for vacuum. How many : 2 or 3 ? $350 each
Glass encapsulated thermistor #55007 with Ceramabond 835-m glued onto spade connector and hooked up to controller DP25-TH-A with analoge output.
This zero to 10Vdc can go to ADC
Rewired the temperature sensor inputs to Molex connectors so that we can now attach them to the +/- 15V Sorensens for input instead of using a power supply.
We began the setup for the lab temperature sensor today. First, we needed to add in a DIN fuse for both temperature sensors, which required us to shut down everything else first. To avoid having to do that next time, we made three instead of two spaces where we have + and - 15V. Attachment 1 shows the new fuses we installed, along with the fuses they connect to. Attachment 2 shows the wiring that we used to connect all the fuses. Attachment 3 shows the labeled long wires that are attached to the lab temperature sensor. The other end is labeled as well. I measured the voltage at the other end of the long cables, and while the -15V one looks good, the +15V one shows only about 13.5V.
edit (Tuesday) - I set up the other set of cables that will eventually lead to the sensor in the can, but neither of them are showing any voltage on the other end. I'll work on this issue tomorrow.
gautam: some additional remarks about the procedure followed:
I switched out the DIN fuses for the long cables and it fixed the issue of them not showing any votage on the other end. At first, the +15V cable worked and the -15V didn't, but when I switched the fuse for the -15V it began working, but the +15V stopped working. I then switched out the fuse for +15V and both cables began showing voltage. But for both the long cables and the shorter ones, they show +13.4V instead of +15V. Not sure what's going on there.
For the final packaging/mounting of the sensor to the seismometer, I have thought of two options.
1. Attach circuit to a PCB board and place it inside the can, while leaving the AD590 open to the air inside the can.
2. Attach the AD590 to a copper plate with thermal paste and put it into a pomona box.
If anyone has input on which method is preferred or any additional options that we may have, I would appreciate it.
q = k A dT / s
For copper, k = 401 W/mK, x = 1.27 mm, A = 2.66x10^-3 m^2 (for the particular copper plate I measured), dT = 1K (assume). Thus the heat transfer will be 839 J/s.
I'm not completely sure what to do with this yet, but it could help us decide whether the copper plate option will be useful for us.
I took off the AD590 and attached it to two long wires leading out from the board. This will allow us to attach the sensor to a metal block and not have to stick the whole board to it. I have also completed three identical copies of this and it's pretty much ready to be tested. According to Craig and Andrew's elog here, the sensor is very noisy and they added in a low pass filter to fix that, so that's something to consider for the final version of the circuit. I'll test what I have so far and see how that goes. We still need to figure out how to get readings from the sensors.
To attach the sensor to the metal block, I'll use some thermal paste and fasteners. I'll also put a thermometer on the block to record the actual temperature. I'll then wrap it in some insulation we have in the lab and have only some wires leading out of it to make measurements. I'll leave this setup overnight and record the outputs for about a full day. The fluctuations between the sensors will then indicate the noise of each individual sensor.
Today, I stuck on the sensors to a metal block using a flag, rubber bands, and some thermal paste (1st attachment). I then wrapped the whole thing in about 4 layers of insulation and a lot of tape (2nd attachment). The only things leading out of the box were the three connections to the sensors and a thermometer. I then connected the wires to their respective places on the board of the sensor. To get the readings out we would need to use an ADC. Gautam and I checked to make sure the ADC we have inside the lab goes from -10V to 10V so that it would be able to measure the 3V value the sensor typically measures. We then tried to connect all three sensors to a DC source simultaneously, but unfortunately one of them seems to have disconnected somewhere during the process, as it only showed 1.2V instead of 3V. I plan to fix this tomorrow morning so that we can hopefully set this up soon.
to get the sensors to read the same values they have to be in direct thermal contact with the metal block - there can't be any adapter board in-between
for the 2nd attempt, I also recommend encasing it in a metal block rather than just one side. You can drill some 7-10 mm diameter holes in an aluminum or copper block. Then put the sensors in there and plug it up with some thermal paste.
The weight of SS can with copper liner is 12.2 kg
Is 1 Amp for the heating jacket going to be enough? We should have some headroom.
Got it to work. A cable was broken and the AD586 also broke at the same time so it took a while to find the problem. I had to create a makeshift cable out of three parts so once I replace it for an actual cable, it will be good to go for a test.
I decided to plot the temperatures measured over two days for the sensor inside the can and inside the lab just to see if there was any significant difference between the two, and obtained the following plot. This shows that there is a difference in measurements of a few 0.01 C. The insulated seismometer can didn't change temperature as much as the lab did, which is as expected. I'll work on properly calibrating the sensors sometime in the future so that we can use the sensor that's just in the lab as an accurate thermometer.
Comparing PSL-FSS-RMTEMP and PEM-MC1-TEMPS
So, to compare temp channels, I made a plot of PSL-FSS_RMTEMP and PEM-MC1_TEMPS(the test temp sensor channel after converting from cts to degC). This plot begins about 2 months ago t_initial=911805130. The temperature channels look kinda similar but MC1-TEMPS (the temp sensor clamped to MC1,3 chamber) is consistently higher in temperature than FSS_RMTEMP. See compare_temperature_channels.png.
MC1-TEMPS isn't exactly consistent with FSS-RMTEMP. I attached a few plots where I've zoomed in on a few hours or a few days. See compare_temperature_channels_zoom1.pdf & compare_temperature_channels_zoom2.pdf
Change the room temperature, see what happens to the chamber temperature
A while ago, somebody was fiddling around with the room temperature. See compare_temperature_channels_zoom4.pdf. This is a plot of PEM-MC1_TEMPS and PSL-FSS_RMTEMP at t0=911805130. You can see the chamber heating up and cooling down in happy-capacitory-fashion. Although, the PSL-FSS_RMTEMP and the PEM-MC1_TEMPS don't really line up so well. Maybe, the air in the location of the MC1,3 chamber is just warmer than the air in the PSL or maybe there's an offset in my calibration equation.
Calibration equation for PEM-MC1-TEMPS
For the calibration (cts to degC) I used the following equation based on the data-sheet for the LM34 and some measurements of the circuit:
How does the chamber temperature compare with the air temperature?
It looks like the chamber may be warmer than the air around it sometimes.
I wanted to check the temperature of the air and compare it with the temperature the sensor had been measuring. So, at t=918855087 gps, I took the temp sensor off of the mc1-mc3 chamber and let it hang freely, close to the chamber but not touching anything. See compare_temperature_chamber_air.png. MC1_TEMPS increases in temperature when I am handling the temp-sensor and then cools down to below the chamber temperature, close to FSS_RMTEMP, indicating the air temperature was less than the chamber temperature.
When, I reattached temp sensor to the chamber at t=919011131 gps, the the temperature of the chamber was again higher than the temperature of the air. See compare_temperature_air2chamber.pdf.
Also, as one might expect, when the temp-sensor is clamped to the chamber, the temperature varies less, & when it's detached from the chamber, the temperature varies more. See compare_temperature_air_1day.pdf & compare_temperature_chamber_1day.pdf.
New temp-sensor power supply vs old temp-sensor power supply
The new temp-sensor is less noisy and seems to work OK. It's not completely consistent with PSL-FSS_RMTEMP, but neither was the old temp-sensor. And even the air just outside the chamber isn't the same temperature as the chamber. So, the channels shouldn't line up perfectly anyways.
I unplugged the 'old' temp-sensor power supply for a few hours and plugged in the 'new' one, which doesn't have a box but has some capacitors and and 2 more voltage regulators. The MC1_TEMPS channel became less noisy. See noisetime.png & noisefreq.pdf. For that time, the minute trend shows that with the old temp-sensor power supply the temp sensor varies +/-30cts and with the new power supply, it is more like +/-5cts (and Volt/16,384cts * 1degF/10mV --> apprx +/-0.03degF). So, it's less noisy.
I kept the new temp-sensor power supply plugged in for about 8 hours, checking if new temp sensor power supply worked ok. Compared it with PSL-FSS_RMTEMP after applying an approximate calibration equation. See ver2_mc1_rmtemp_8hr_appxcal.png.
Just for kicks
Measuring time constant of temp sensor when detached from chamber. At 918858981, I heated up the temp sensor on of the mc1-mc3 chamber with my hand. Took hand off sensor at 918859253 and let it cool down to the room temperature. See temperature_sensor_tau.pdf.
Goal is to build a temperature sensor accurate to 1 mK. Schematic is shown below. This does not take into account the DC gain that occurs.
Parts that would be used for this: LM317 regulator, AD592 temperature transducer, OP amp (low input noise and high impedance), 100K (or maybe 10k) resistor. This is what is currently proposed, but the exact parts we use could be changed to better fit the sensor. The resistor and the OP amp will be decided depending on the output of the AD592.
Once this is built, I would like to create a few copies of it and put them into an insulated container and measure the output from each one. This would allow us to calculate the temperature noise of the circuit, as we can take out the variations due to temperature changes inside the container by comparing the outputs.
I can also model the noise in the circuit to see how much noise there is before building it. There are three terms to the noise that we have, and we need to decide which one dominates at low frequencies.
Our final goal is to create an additional circuit that could cancel out the DC gain. I have attached an additional schematic proposed by Rana that would help with this issue. I will leave this second half for when the first part works.
also, I've attached some temperature noise spectra from the LISA group at the AEI in Hannover. It will be interesting to see if we get the same results.
Since there seems to be little difference between AD590 and AD592, I guess we could just go with the AD590. The temperature noise spectrum in the first graph are for the AD590, so if we want to reproduce those results, we should use AD590.
For the AD581/AD587, we could go with a few varieties that have the least output voltage drift, although I am not sure what precision we will need. So maybe we could try AD587U and AD581L. We could also try AD587K and AD581K and see if those work as well.
We will also need to calibrate the sensor, as it takes an input of 5V, but the AD581/AD587 provides 10V, which will give about a 1 degree error according to the datasheet. It does state that this is only a calibration error, so it shouldn't be too much of an issue.
I will figure out the packaging once I construct the sensor and verify that it works. Maybe we could use a box similar to the existing sensor, but it depends on the size of the finished circuit.
Quick update: we actually have AD587KRZ and AD592, so we could start by using that and seeing how it works.
Might as well order several of a few different varieties today. Its good to have some extra in stock; we don't always want to have to wait days for parts to show up. If you give Steve a list of parts to buy he can order them today or Monday.
There should also be some precision 5V sources (e.g. AD586) that you can try.
Used AD592CNZ and AD586 (5V output) to create a circuit that works and is responsive to temperature changes. At room temp, using ~1K resistor, it showed ~0.3V across it, as expected. The voltage went up when we heated it with a heating gun. Next step will be to add in an OP amp and design some experiments to check to see how accurate it is. Thanks to Gautam for helping me with it!
I have attached the working circuit and a close up of the connections.
Decided to try adding in an OP amp just to see if it would work. Added LT1012 and a 100k resistor to the circuit (I originally wanted to do AD743 as it seems to be the best choice according to Zach's elog here, but it said that they are very precious so I went with LT1012 for testing purposes). When heating it with a heating gun, the output voltage went down by a few 0.01V. The maximum voltage was 0.686V. Similar thing happened when I switched to a 10k resistor, where the maximum was 0.705V and it also went down by a few 0.01V upon heating.
I've attached a few pictures showing the circuit.
I didn't realize that the LT1012 needed an additional input to function. I added in +15V and -15V to pins 7 and 4, respectively and placed a 10k resistor and the numbers make more sense now. The voltage showed a negative value, but it became more negative as I heated it up (it's negative due to how a transimpedance amplifier works).
I have attached the new setup and the value it shows (~-3V). It became more negative by about 0.4V, which translates to about a 40K increase in temperature, which makes sense.
In addition, I have attached an updated sketch of the circuit. I will need to do more testing to determine how accurate this is. The next step would be to calculate how much noise there is currently and figure out how to remove this circuit from the breadboard and use a PCB or something like that for final testing in an insulated container.
The reason I chose AD743 initially for the OP amp is because at low frequencies (which is what we are working with), a FET amp such as AD743 will have a low current noise at high impedance, which is what we have in this case. While a FET amp has high voltage noise compared to other OP amps, the current noise becomes more important at high impedance, so it will work better. According to Zach's graphs, the AD743 is best at high impedances, followed by LT1012.
Tested to make sure that even when only the AD586 was heated that there was no change in the reading. I did so by placing the AD586 away from the rest of the circuit and blowing hot air only on it. There was, in fact, no change.
I fixed the temperature control of the oven for the PSL doubling crystal.
The PID settings were not good, and also, TC200 was beging DETUNED. So, I activated TUNE function and adjusted PID settings.
I'm not sure what the DETUNE function is for. The manual can be found here;
Current settings for Thorlabs TC200 are (Red ones are what I changed from the previous setting);
Green glass for aLIGO OMC shield is temporarly stored in the inside of the Y-arm.
The drill room floor will be retiled Thursday, June 16. Temporary nitrogen line set up will allow emptying the hole area.
Ifo room entry will be through control room.
This is a connection diagram for the input PZTs (i.e. PZT1 and PZT2).
As drawn in the diagram, the signals don't go through the anti-imaging filter D000186 in the current configuration.
Just FYI I'm running a test of updated daqd code on fb1.
fb1 has it's own fiber to the daq network switch, so nothing had to be modified to do this test. This *should* not affect anything in the rest of the system, but as we all know these are famous last words.... If something is going haywire, and you can't get in touch with me and can't figure what else to do, you can just log on to fb1 and shut it down. It's not writing any data to any of the network filesystems.
The daqd code under test is from the latest advLigoRTS 3.2.1 tag, which has daqd stability fixes that will hopefully address the problems we were seeing last time I tried this upgrade. We'll see...
I'm going to let it run over the weekend, and will check in periodically.
I'm not sure if this is related, but since today morning, I've noticed that the data concentrator errors have returned. Looking at daqd.log, there is a 1 second timing mismatch error that is being generated. Usually, manually running ntpdate on the front ends fixes this problem, but it did not work today.
If this problem started before ~4pm on Friday then it's probably unrelated, since I didn't start any of these tests until after that. If unexplained problem persist then we can try shutting of the fb1 daqd and see if that helps.
The centos 5.5 compiled gds code is currently living on rosalba in the /opt/app directory (this is local to Rosalba only). It has not been fully compiled properly yet. It is still missing ezcaread/write/ and so forth. Once we have a fully working code, we'll propagate it to the correct directories on linux1.
So to have a working dtt session with the new front ends, log into rosalba, go to opt/apps/, and source gds-env.bash in /opt/apps (you need to be in bash for this to work, Alex has not made a tcsh environment script yet). This will let get testpoints and be able to make transfer function measurements, for example
Also, to build the latest awgtpman, got to fb, go to /opt/rtcds/caltech/c1/core/advLigoRTS/src/gds, and type make. This has been done and mentioned just as reference.
The awgtpman along with the front end models should startup automatically on reboot of c1sus (courtesy of the /etc/rc.local file).
Alex tooked at the channel definitions (can be seen in tpchn_C1.par), and noticed the rmid was 0.
However, we had set in testpoint.par the tst system to C-node1 instead of C-node0. The final number inf that and the rmid need to be equal. We have changed this, and the test points appear to be working now.
However, the confusing part is in the tst model, the gds_node_id is set to 1. Apparently, the model starts counting at 1, while the code starts counting at 0, so when you edit the testpoint.par file by hand, you have to subtract one from whatever you set in the model.
In other news, Alex pointed me at a CDS_PARTS.mdl, filters, "IIR FM with controls". Its a light green module with 2 inputs and 2 outputs. While the 2nd set of input and outputs look like they connect to ground, they should be iterpreted by the RCG to do the right thing (although Alex wasn't positive it works, it worth trying it and seeing if the 2nd output corresponds to a usable filter on/off switch to connect to the binary I/O to control analog DW. However, I'm not sure it has the sophistication to wait for a zero crossing or anything like that - at the moment, it just looks like a simple on/off switch based on what filters are on/off.
I have attached the setup I completed today. The metal box contains the heater circuit and the board for the temperature sensor is right above it. This is basically the same setup as before, but I've just packaged everything up neater. I expect to be able to perform the test tomorrow and begin implementing PID control. I still need a DAC input for the heater circuit and the temperature sensor is having some issues as well.
The MOSFET was getting pretty hot, so I switched it out to a larger heat sink and it's fine now. I then used a function generator in place of the DAC to provide ~3.5V. I got the current in the circuit to 1.7A, which is as expected, since we have 24V input, the heater resistance is 12.5ohm and the resistor we are using is 1ohm, so 24V/(12.5+1)ohm = 1.7A. The temperature inside the can rose about 5 degrees in half an hour. The only issue now is the voltage regulators and OP amp inside the box get hot, though it doesn't seem to be dangerous. I switched the function generator input to a DAC and Gautam set it to 1.5V. If it works, then we'll leave this on overnight and work on the PID control tomorrow. I've attached images of the current heater circuit box when it is open and the new heat sink for the MOSFET.
gautam: we also tried incorporating the EPICS channels from the Acromag into the RTCDS so that we can implement PID control by using Foton. I tried doing this using the "EpicsIn" and "EpicsOut" blocks from CDS_PARTS. While the model recompiled smoothly, I saw no signals in the filter module i had connected in series with the EpicsIn block. So I just reverted c1pem to its original state and recompiled the model. Guess we will stick to python script PID reading EPICS channels to implement the PID servo.
according to the temp sensor readout, which was ~-3.35V which corresponds to ~335K, the temperature of the can is now 60 deg C. This is a bit warm for my liking so i'm turning the heater current down to 0 now by writing 0 to C1:PEM-SEIS_EX_TEMP_CTRL
we don't ever want to use our 16 kHz real time system for such low frequency action; its main purpose is for real-time controls, whereas we are OK with multiple seconds of delay in a thermal loop. The Python PID script is sufficient and highly reliable (after years of testing).
I fit the data that we got from the test. The time constant for the cooling came out to be about 4.5 hours. The error is quite large and we should add a low pass filter to the temperature sensor eventually in order to minimize the noise of the measurements.
I've moved my setup to the actual seismometer. I attached the temperature sensor to the seismometer (attachment 1) with duct tape, though this is temporary. I will be monitoring the temperature fluctuations of the seismometer for a whole day then take the can off and repeat the test. The can isn't clamped down so the insulation isn't perfect, so I'd expect to see some noticeable fluctuations even with the can on. I've also labeled the long cable for the temperatuse sensor readout (attachments 2 and 3). There will also be an out of loop sensor added in later, but for this test since I am not running the loop it doesn't matter which sensor I monitor. Attachment 4 is a picture of the current setup.
Here is the result of my test. I think I'll leave the can on over the weekend because there's a long period of time where the seismometer heated up by 0.8 degrees so I can't fully see the fluctuations over a full 24 hour period.