02-12-2011 01:05 AM
Dear LabView Users,
I need to set up a system which is related to temperature controlling via two heaters and measuring voltage. Seebeck Effect Measurement. Create temperature gradient between two and of a sample and measure the voltage changes on sample.
Equipments are 1. Lakeshore 336 Temperature Controller
2. Keithley 182 Nanovoltmeter
3. K-Type Thermocouples
4, wires, connectors, chamber...
So, I wrote a vi, but I see that it is not efficient as you can see picture... What wiil I do is;
1. Set the both heaters to a specific temperature value from Room Temperature
- Let say 1. Heater 700K 2. Heater : 705K
2. I need to create temperature gradient between both heater, and temperature gradient between both heater should be a constant temperature value like 5K (+/-1K range is possible.)
3. Meanwhile those heaters shoul rich the set temperature at the same time. That is, ramp rate shoul be same. This can be controlled by “Manuel heater output”, but I want system to control it. Systam should control this range, will apply current itself to reach setled temperature.
4. Meanwhile, I want to measure voltage from a sample. Temperature wil increase, temperature gradien between both heaters will be checked, when the difference is 5K(+/_1K), measure the voltage. After 1 minute, system will start to check temperature gradient again, if gradiend is 5K(+/_1K), measure, if not wait a little, check again, if not try to make gradient 5K(+/_1K), when it is done, measure voltage...
5. When the sysem reached set temperature close the program, make instruments down.
6. Algorithm:
7.
Heater1 (H1) Heater2 (H2)
1. Current situation 300.012 300.019
2. Set 300K 305 K
3. Start Measurement, Check gradien,
if gradient 5K(+/_1K), measure voltage, if not make gradient 5K(+/_1K), then measure
4. Set temperature 700K 705K
5. continue chekcing
6. Let say temperatures become 415K 425K
7. Do not measure, increase the power of heater 1 to make 420K
8. .....
My problem is that I donot know LabView very well. So,
1. whcih structure is necessary for all vi. Generally?
2. What type of loop shoul I use for if /else, in Qbasic it is called GO TO
3. Which type of loops you advice to use, in which part which loop is necessary
4. And each measurement will be saved, showed in table and graph simultaneously.. what type of structures needed. Chart, XY ...
5. And advices... My vi.....attached
02-12-2011 08:28 AM
Before discussing about the control and data acquisition, I have some questions:
What family of thermoelectric materials do you want to measure?
What is the sample size?
How do you make the thermal contact between the heating elements and the sample?
You want to measure only the seebeck coefficient or also the figure of merit (Z), the resistivity and calculate the thermal conductivity?
If you are in a university, maybe you have access to the proceedings of the "International Conference on Thermoelectrics". There 2 or 3 papers on the thermoelectrics measurement in the last years. They don't give a lot of details but you will have good answers for the thermal contact. The best way is to make a research for the universities who make this type of measurement - in general they are willing to share informations).
02-12-2011 10:44 AM
Concerning your code:
* Try to understand the difference between a ring and an enum. E.g. what is the difference of both when wired to a case structure
* Learn how to use clusters, e.g. for Configure Control Parameters
* Learn how to use a shift register consequently, e.g. for your error wires.
-> If you understand these concepts, search for 'state machine'. This will allow you to implement the logic you sketched for your temperature control.
Other improvements:
* Think more about error handling.
-> Stop the loop if an error occurs.
-> Merge the error wires (using merge error).
-> Try to think about what happens if an error occurs at a certain node/SubVI. Should others run (e.g. to shut down the heater) or not.
* You constantly convert to string and back to 1D-arrays. That's not really nice code. You can use a 2D-array of DBL or a cluster.
But I must confess, that my first LV programs did look very similar to yours (and most likely they are still in that state in the one lab or the other). Unless you want to be a programmer, stay focused on getting your setup running.
Felix
02-13-2011 01:34 AM
I am in university already. I have designed a measurement systems following the articles. Thermal contacts, and the others, I have designed in my system. ZT and resistivity measurements will be held of course.
But the structure of the LV is complicated. I donot know how to use if close and GO TO commands in LV. So i need to use these options..
02-13-2011 02:16 AM
hi
As mentioned before, look for research papers.. there are many published in Rev of Sci Instruments. Other than that, in LV you need to set up a state machine.
ND
02-14-2011 03:20 PM
If you need more help on state machines try the links below.
Tutorial
http://zone.ni.com/devzone/cda/tut/p/id/7532
Example
http://decibel.ni.com/content/docs/DOC-3116
Jake H
02-15-2011 10:17 AM
thanks for replies.
I couldn't understand how can I "control the temperature". Could you pls provide a simple via.
set the temperature heater 1 and heater 2
feedback
temperature settled, measure
set new temperature
.
.
.
02-15-2011 02:25 PM - edited 02-15-2011 02:28 PM
hi
for the temperature control you need to set up the criteria. For the lakeshore 336 (I am using one) you need to use either Auro PID (or Auto PI, or Auto P), for auto mode, it will take about 10 minutes to find the proper PID parameters for the conditions you are using.. (read the manual for this controller). Alternatively, faster but more difficult, you can find the PID parameters for your system (you can use also Zone control) and use them for setting up the temperature. After that, it is up to you to decide when the temperature is stable (average of the last points, etc).
But I think this is not the most important problem for you. I suggested to look for the papers in RSI (there is a recent review in APL by Tritt and colab); I think that you should use differential methods by increasing slowly the gradient... and not to try to keep a gradient of 5K or so... You create a gradient by slowly incresing dT and measure T1, T2 and dV so, after few tens of pairs dT, dV you calculate the slope and the gradient of dV vs dT.. this is exactly Seebeck coefficient. The intercept is an offset, if your setup is good it should be null. Read the papers and you will find some more informations on this and how to set it up. You will need to measure, more or less simultaneously, two voltages (or three).. so already, the 182 is not enough (and it is very slow)... you will need a heater and a power source for creating the gradient... The problem is very different if you are going to measure at low temperatures (easy to set up) or at high temperature (a pain....); for the later there is an excellent paper by Bulkov, if I remember correctly.
Did I mention that you need to read some papers ?
N
02-16-2011 03:41 AM
Hi nitad
thanks for your very helpfull answer. What I wanted to do is what you said. keep gradient constant and continuw the masurement till specific temperature meanwhile continues reading of voltage difference via Keithley182 (182).
I am wondering why i need to play with PID in Lakeshore 336 (336). Becouse 336 has already PID controller itself and I just need to increase the temperature with specific ramping rate. if I want to control as you said, differential, increasing gradient, so with ramping rate and set point I can do that. this 336 has capability to do so. I want to learn from you that whether I am wrong or right, or I missed some points.
Secondly, could you please give me references links you advice. I would like to keep contact with you, thanks in advance...
Best.
02-16-2011 06:44 AM
Hi
thanks for your very helpfull answer. What I wanted to do is what you said. keep gradient constant and continuw the masurement till specific temperature meanwhile continues reading of voltage difference via Keithley182 (182).
No : I was suggesting to increase slowly the gradient, say for one or two minutes, and measure from time to time, both dV and dT. For high temperature you may need 50 to 100 points, for low temperature 20 to 50 will suffice
I am wondering why i need to play with PID in Lakeshore 336 (336). Becouse 336 has already PID controller itself and I just need to increase the temperature with specific ramping rate. if I want to control as you said, differential, increasing gradient, so with ramping rate and set point I can do that. this 336 has capability to do so. I want to learn from you that whether I am wrong or right, or I missed some points.
------
The Lakeshore has PID control (what they say Manual PID), that's correct, but you need to determine the values of the PID you want to use !
The paper you must read, together with the references therein, is Martin, Tritt and Uher, J. Appl. Phys 108, 121101, 2010. Look at "differential" Seebeck measurement.
regards