PT100 kullanarak 3D printer extruder ünitesi için sıcaklık kontrol ünitesi tasarımı

 3D printer çalışmamla ilgili olarak aşağıdaki yazılarım da ilginizi çekebilir.

http://www.cncdesigner.com/wordpress/?p=9059
http://www.cncdesigner.com/wordpress/?p=9042

Bu yazımda, extruder sıcaklığının SPI arabirim üzerinden kontrol edilmesini sağlayan ve bir ürün haline getirmek istediğim çalışmamın analog devre tasarımını ele alacağım.Temp ControllerSıcaklık ölçümü için NTC yerine, tüp içine konmuş PT100 elemanı, sıcaklığı ölçülecek metal kütleye sıradan cam diyod tipi NTC elemanlarına kıyasla daha kolay ve daha iyi termal transfer sağlanacak şekilde monte edilebileceği için PT100 sensörünü kullanmayı tercih ettim. Ayrıca PT100 elemanı, 200 derece civarındaki sıcaklıkların ölçümü için daha uygun.

Aşağıdaki grafik, PT100 elemanının direnç değeri ile sıcaklığı arasındaki ilişkiyi göstermektedir. 0..250 derece aralığında sensör bir hayli doğrusal çalışmaktadır. Bu nedenle doğrusallıktaki bozulmayı giderecek ilave önlemler alınmayacaktır. Alınması gerekirse de bu analog devre tarafında değil yazılım tarafında yapılacaktır.

PT100 elemanının 0 derecedeki direnci 100 Ohmdur.  Grafiğe bakarak 200 derecedeki direncinin yaklaşık olarak 175 Ohm olacağını söyleyebiliriz.

Mavi grafik PT100 grafiği iken kırmızı grafik 0..200 deerce aralığında PT100 grafiği ile hemen hemen aynı yolu izleyen doğrusal hatta aittir.

PT100

PT100 elemanının sıcaklık, direnç bağıntısı aşağıdaki ikinci dereceden polinom ile ifade edilmektedir.

R=Ro (1 + At + Bt^2)

Burada A=3.9083 x10^{-3} ve B=-5.775 x10{-7} olarak verilmektedir.

t=200 yazarsak  R=100(1+200*3.9083 x10^{-3}-(200^2 *5.775 x10{-7}))

R=175.856 Ohm buluruz.

R=100 (1+T*3.9083 *10^{-3}-5.775 *10^{-7}*T^2)

Eşitlik üzerinde biraz oynarsak;

T^2-\frac{3.9083*10^{-1}}{5.775*10^{-5}}T+\frac{R-100}{5.775 *10^{-5}}=0

T^2-6767T+17316(R-100)=0

Buradan

T=\frac{6767 \pm\sqrt{45792289-69264*(R-100)}}{2} buluruz.

O halde direnç değeri biliniyorsa sıcaklığı bu bağıntıdan hesaplayabiliriz.

Örneğin R=175.856 Ohm için  T=200.019 derece buluruz.

Bu kadar hesap yapmak yerine Direnç sıcaklık bağıntısını lineer orantı yaparak ifade edersek  örneğin;

\frac{R2-R1}{T2-T1}=\frac{R-R1}{T-T1} den

R2=175.856 R1=100, T2=200 T1=100 alırsak

T=\frac{200*(R-100)}{75.856} olacaktır.

180 derece sıcaklık için hem 2. derece polinomdan hem de lineer yaklaşımla hesaplamaları yapalım. Eğer lineer yaklaşımla da yeterince doğru sonuç elde edebiliyorsak  karekök işlemi ile işlemcimizi boşu boşuna yormaya gerek kalmayacaktır.

180 derecede PT100 elemanı 168.478 Ohm dirence sahiptir.

2. derece polinomdan bu direnç değeri için sıcaklık hesaplanırsa T=180.016 derece buluyoruz.

T=\frac{200*(168.478-100)}{75.856} den ise T=180.547 derece bulunmaktadır.

Açıkçası her iki yoldan da çok yaklaşık aynı sonuca ulaşıyoruz ve  bu aşamada hangisi ile hesap yapacağıma henüz karar veremedim. Neyseki tercih edilen yöntem, analog devreleri değil sadece MCU üzerindeki yazılımı değiştirecektir.

Sıcaklık ölçüm aralığını 0..+200 derece değil +50..+250 derece olarak alacağım.

PT100 sensörünün gerilim bölücü devre üzerinden üreteceği gerilimin besleme gerilimindeki değişikliklerden etkilenmesi için TL431  2.5v referans çipini kullanacağım. Bu çipi seçmemin tek sebebi, üzerinden parça sökmek için sakladığım PC güç kaynaklarının üzerinde oluşu.

Sens devremi aşağıdaki gibi çizdim. TL431'e paralel bağlı 1 uF nin değeri üzerine hiç kafa yormadım. Malzeme kutumda 1 uF bolca var çünkü. Amacı 2.5v üzerinde oluşabilecek ve TL431'ün üstesinden gelemeyeceği kadar yüksek frekanslı voltaj değişimlerini filitrelemek sadece. AC anlamda düşük frekanslarda bile TL431 in kısa devre gibi davranmasına neden oluyor. Bu aşamada TL431'i neden 220 ohm dirençle biasladığıma kafa yormayın çünkü bu direncin değerini hesaplamak için henüz erken.

PT100 içinden 1mA civarında akımdan yüksek akım akıtılmaması önerilir. Çünkü akacak akım PT100 elemanında ısı artışına neden olur. Ölçü aletlerinde 100uA gibi akımlar kullanılır.  PT100 akımını biraz yüksek tutacağım. Aksi halde PT100 uçlarındaki gerilim çok düşük olacak, bunu fazlaca yükseltmem gerekecek, zaten yüksek akımlı extruder ısıtıcısı yeterince ground gürültüsü üreteceği için gürültü sorunlarıyla uğraşmak istemiyorum. PT100'ü 1K ile 2.5v üzerinden beslersem yaklaşık biaslama direncinden 2.5 mA çekeriz

TL431

PT100'ün 50 ve 250 derecedeki direnç değerlerini hesaplayalım.

t=50 için  R=100(1+50*3.9083 x10^{-3}-(50^2 *5.775 x10{-7})) =119.397 Ohm
t=250 için  R=100(1+250*3.9083 x10^{-3}-(250^2 *5.775 x10{-7}))= 194.098 Ohm

Bu şartlar altında PT100 uçlarındaki gerilim;

50 derecede  \frac{2.5*119.397}{1000+119.397}=0.266V

250 derecede  \frac{2.5*194.098}{1000+194.098}=0.406V

50 derecede çıkışın 0V, 250 derecede ise çıkışın 3v olacağı özel bir devre tasarlamamız gerekecek.

Bu konuda aşağıdaki yazım ilginizi çekebilir.

http://www.cncdesigner.com/wordpress/?p=9216

PT100 Design

12K lık direnç biaslama direncinden dikkate değer bir akım çekmez. O halde biaslama direncimizi hesaplayalım. Yaklaşık 2.5mA PT100, 1mA de TL431 akım çekeceğine göre \frac{3.3-2.5}{2.5+1}=0.228 yani 220 Ohm seçebiliriz.

Konu hakkkında hazırlanan videonun linki aşağıdadır.

https://www.youtube.com/watch?v=-r3WQHkAHX8

 

Opamp çıkışımızda 0..3V aralığında değişen sinyalimiz var ve bunu doğrudan ADC girişine uygulabileceğiz.

Peki MCU tarafında ne yapaacğız?

T=(200*VAdc/3)+50 bağıntısından VAdc değerine karşılık hangi sıcaklığın geldiğini hesaplayabiliriz.

VAdc yerine okunan sayısal değer olan ADC değerini koyarsak;

T=\frac{200*ADC}{4096}+50 buluruz.

Bu da C dilinde T=(200*ADC<<12)+50 olacaktır.

Tabiki aslında bu ifadeyi T=(200*ADC)+204800 olarak yazmalıyız ki işlemleri fixpoint (Q12) notasyonla hesaplayabilelim. (Buradaki 1 bitlık hataya kafayı takmayın.)

 

 

Bu yazı 2- Arm ve Asm, 3- Elektronik kategorisine gönderilmiş. Kalıcı bağlantıyı yer imlerinize ekleyin.