Picproje Elektronik Sitesi

PROGRAMLAMA DİLLERİ => C/C++ => Konuyu başlatan: mehmet - 02 Ekim 2020, 10:46:42

Başlık: NTC için kod üreticisi...
Gönderen: mehmet - 02 Ekim 2020, 10:46:42
Buralarda dursun.

https://preis-ing.de/en/extras/werkzeuge-fuer-ingenieure-en-translation/c-code-generator-for-ntc-lookup-table/
Başlık: Ynt: NTC için kod üreticisi...
Gönderen: Erol YILMAZ - 02 Ekim 2020, 14:09:23
güzel bir NTC tool'a ihtiyaç var.

Başlık: Ynt: NTC için kod üreticisi...
Gönderen: selimkoc - 17 Ocak 2021, 20:02:20
https://rusefi.com/Steinhart-Hart.html (https://rusefi.com/Steinhart-Hart.html)

Burada güzel bir hesaplayıcı var. Formülünü de C formatında veriyor.

https://www.circuitbasics.com/arduino-thermistor-temperature-sensor-tutorial/ (https://www.circuitbasics.com/arduino-thermistor-temperature-sensor-tutorial/)

Burada örnek var.

https://www.youtube.com/watch?v=U9EIsX1C0rQ (https://www.youtube.com/watch?v=U9EIsX1C0rQ)

Burada videosu var.
Başlık: Ynt: NTC için kod üreticisi...
Gönderen: Erol YILMAZ - 18 Ocak 2021, 01:08:36
Steinhart-Hart on Excel:

https://www.mathscinotes.com/2019/11/steinhart-hart-thermistor-calibration-in-excel-using-matrix-formulas/

https://www.mathscinotes.com/wp-content/uploads/2019/11/ExampleThermistor.xlsx
Başlık: Ynt: NTC için kod üreticisi...
Gönderen: kimlenbu - 18 Ocak 2021, 13:57:07
Lookup table kullanmanın amacı ne ? FPU olmayan işlemcilerde hızdan kazanmak mı ? Ben şöyle bir fonkisyon kullanıyorum, hassas bir iş değil, mosfet sıcaklıklarını kontrol etmek için yazmıştım, bir hata var mı acaba şüpheye düştüm..


float GetTemperature(void){
const float multiplier=(float)3300/(float)4096;
 float vo=0; //Voltage Divider Voltage
 float temp=0; //NTC Calculated Temperature
 float r0=10000; //NTC Resistance at 25 C
 float r1=0; //NTC Resistance
const float r2=10000; //NTC Series Resistance
const float vi=3300; //input voltage 3300mV
const float b=4050; //NTC coefficent
const float t0=293.15; //room temp 25 C = 293.15K
 
 // 1/T = 1/T0 + 1/B * ln(R/R0)
 // T : Temperature
 // T0: Room Temperature (293.15K)
 // B : NTC Coefficent
 // R : NTC Resistance
 // R0: NTC Resistance at 25 C
 
 //TemperatureRaw=ADC_DualConvertedValueTab[0];
 TemperatureRaw=(tmpTemperatureTotal/ADCSample);
 vo=TemperatureRaw*multiplier;
 r1=r2*((vi/vo)-1);
 temp=(1/((1/t0)+(1/b)*log(r1/r0)))-273.15f;
 flagTemperatureReady=0;
 return temp;
}

Başlık: Ynt: NTC için kod üreticisi...
Gönderen: mehmet - 04 Eylül 2021, 16:34:50
https://www.sebulli.com/ntc/
Başlık: Ynt: NTC için kod üreticisi...
Gönderen: ACM - 05 Eylül 2021, 10:29:37
https://www.sebulli.com/ntc

Anlamadığım 2 nokta var

1: "Number of interpolating points" bölümü nedir , nasıl belirliyeceğiz bunu ?

2: p1 = NTC_table[ (adc_value >> 3)  ]   Bu kodda adc değerini 3 sağa iteleyip tablodan eşit değeri alıyor ise tabloda olmayan değer çıkarsa ne olacak ?

C bilen arkadaşlar halay çekerken biz protoncular kenarda seyrediyoruz , birileri "Gel len sende katıl" dese fenamı olur. Bilen için birkaç dakika sürmez bu kodu protana çevirmek. Kıs kıs gülüşleri duyuyorum , ayıp ediyorsunuz ama.
Başlık: Ynt: NTC için kod üreticisi...
Gönderen: mehmet - 05 Eylül 2021, 15:07:32
1) 0 - 1023 arasındaki çözünürlük.

2) Dikkat ederseniz ki sadece p1 değil,
p2 değeri de alınıyor. Okunan ADC değeri
hangi iki p değeri arasında önce bu bulunuyor.
p1 ve p2 değerleri çıkıyor. Bu iki değere
göre interpolasyon ile bir değer hesaplanıyor.

Bulunan iki nokta arası eğri olsa bile,
bu yöntemle doğru kabul edilip hesap yapılıyor.

Birinci sorunuzdaki olay burada önem kazanıyor.
Ne kadar parçaya ayrılırsa doğruluk o kadar
artıyor. Tabii mcu gücü de o kadar azalıyor.
Tablodaki hata oranı da altta görülmekte.

Proton diline bunu çevirmek için flash
alanında olacak şekilde tabloyu oluşturun.
(RAM alanını harcamamak için)
Bu tablodan iki değer okuyup ve alttaki
formülü uygulayın.
Başlık: Ynt: NTC için kod üreticisi...
Gönderen: ACM - 05 Eylül 2021, 15:48:28
   "Number of interpolating points" değeri tablonun çözünürlülüğü imiş , kolay gibi görünüyor böyle anlatınca Mehnet hocam. Halay başı olmasakda kuyrukda bir yer bulacam gibi.

  Teşekkürler Mehmet hocam.