#ti #launchpad #msp430 #programlama #kulucka #termostat #teknoyardım #akış
Merhaba arkadaşlar,
Kuluçka makinesi yapmaya karar verdim. Malzemeleri yarın alacağım. Tamamen hobi amaçlı ve tek seferde en fazla 15 yumurta çıkartmayı planlıyorum. Gerekli araştırmalarımı yaptım. Kafamda planı oluşturdum.
Sizlere danışmak istediğim konu ise şu;
Dijital termostat almak yerine, termostatı kendim yapmayı planlıyorum. Elimde Launchpad MSP430 var. Bir adet röle ve bir de sıcaklık sensörü ile rahatlıkla yapabileceğimi düşünüyorum. Sadece sıcaklık değerini okuyacak, eğer 37,5'den küçükse röle pini HIGH, 37,7'den büyük ise LOW olacak. Bunu biliyorum fakat proglamlama bilgim çok az. Yani bu söylediğimi nasıl kodlarım bilmiyorum. Bu konuda yardımcı olabilirseniz sevinirim.
@frt
Bu tür işler için PID hesaplaman gerekir. aşağıdaki makaleyi okuyabilirsin.
Kullanılan mc yine TI ın farklı bir serisinden.
http://coder-tronics.com/pid-tutorial-c-code-example-pt1/
arduino ile yapmak çok kolay ama msp hakkında bir bilgim yok.
@frt Arduino ile de olur. Hatta ide'ler ve özellikler çok yakın, arduino için olan kodları çalıştırabileceğimi düşünüyorum. Ama dediğim gibi arduino da olur. Hiçbir özelliğe gerek yok sadece 37,5'den küçük olduğu anda pinlerden biri high olacak, 37,7 olduğu anda low olacak. LCD ile göstersin, buton koyayım ayarlayayım falan hiç hiç gerek yok 🙂
sıcaklık sensörü olarak me kullanacaksın? 0.1°C algılayacak kadar hassas bir sensör bulmak lazım.
@frt yurt içi sitelerde bulabileceğim herhangi bir sensör olur. Hiç farketmez. (Termostatı yapayım benden sana 5 civciv 😀 )
@eaydogan dht22 iş görür mü ki? 3-5 dolar bir fiyatı olması lazım ama hassaslığı hakkında çok bilgim yok.
@frt hemen datasheet'ine bakıyorum. Aslında 0,5 derece hassasiyet de olur. 37,5 38 aralığı sıkıntı çıkarmaz. Çünkü çok daha az hassas mekanik termostat kullanan biri video çekmiş, sıcaklık 36-40 arasında oynuyordu termometre ile baktığında ve %80 başarı sağlamış. Yani 37,5 - 38 arasında oynaması hiçbir problem çıkarmaz.
@frt dht22 olur, sıkıntı çıkarmaz.
@eaydogan tamam o zaman. arduino ile onun kodlaması çok basit. malzemeleri alırsan kod kısmını hallederim 🙂 hatta almışken bir 5110 ekranı ya da 16x02 ekran da al dışarıdan da görürsün sıcaklığı 🙂
@frt http://ydemiral.blogspot.com.tr/2014/09/arduino-lm35-scaklk-sensoru-ile.html
LM35 aslında fiyat olarak oldukça uygun. 1 derece de sorun çıkarmaz. Analog çıkış veriyor, sıkıntı olur mu? yoksa istediğimiz voltaj değerini doğrudan girip daha kolayca halledemez miyiz? dht22 biraz pahalı ve ek olarak nem sensörü var, bu da gereksiz maliyet demek...
@eaydogan bende dht 11 ve lm35 var. lm35 sanki bir şeye temas ederek ölçmek için tasarlanmış gibi geliyor bana. ortam sıcaklığı. için dht daha uygun gibi. ama bu benim tahminim tabi. bir bilgim yok 🙂
@frt lm35'e heathsink bağlasam küçücük? ayrıca bir termometre (bildiğimiz sıvılı olan) ile ölçüm yapar makineyi boş çalıştırır denerim, duruma bakarım... Maliyet önemli şimdilik ve bir tane civciv bile çıkartabilirsem daha profesyonel sistem alacağım sırf bu iş için yapılan.
Hatta şöyle bir de durum var, elimdeki M430G2553 mcu'sunda dahili termometre varmış. Onu araştırıyorum şu an. Ama mantıklı olmaz bence.
Son kararım lm35, M430G2553 mcu'sunda 10 Bit adc var, ve "energia" adlı bir idesi var, arduino idesi ile aynı gibi (energia idesi aynı zamanda arduino da programlayabiliyor, arduino idesi ile aynı). Yani sen lm35 için arduino ile kullanabileceğim kodları verirsen, bir şekilde onu launchpad'de çalıştırırım. Eğer çalışmaz ise bir tane atmel mcu (uno'daki) alır onu programlarım.
@eaydogan
ben şu kodu kullanıyorum
int val = analogRead(LM35Pin);
float mv = ( val / 1023.0) * 5000;
float cel = mv / 10;
@frt peki;
#define LM35Pin A0
#define RolePin 2
float sicaklik;
void setup() {
pinMode(RolePin, OUTPUT);
pinMode(LM35Pin, INPUT);
}
void loop() {
sicaklik=sicaklikOlc();
if (sicaklik>38){ // sıcaklık 37 dereceyi geçerse
digitalWrite(RolePin, LOW); // ısıtıcıyı kapat
}
if (sicaklik<37){ // sıcaklık 37 derecenin altına düşerse
digitalWrite(RolePin, HIGH); // ısıtıcıyı aç
}
delay(1000); // 1 saniye bekle
}
float sicaklikOlc() // sıcaklık hesaplama foksiyonu
{
float temp;
temp = analogRead(LM35Pin);
temp = (5.0 * temp * 100.0)/1024.0; //lm35 sıcaklık hesaplama bölümü
return temp;
}
@frt Sorun var mı burada?
bu şekilde yapınca olur mu sence yoksa hatalı mı çalışır?
@eaydogan
pinMode(LM35Pin, INPUT); gereksiz. analoglar zaten input hep 🙂
if (sicaklik>38){ yerine >=37 yap bence
temp = (5.0 * temp * 100.0)/1024.0; 1024 değil 1023 olacak. çok fark etmez gerçi ama doğrusu bu 🙂
onun dışında çalışması lazım gibi
@frt
@eaydogan bende sorunsuz çalıştı
Test etmek için biraz oynadım değerlerle 😉
@frt uyguladın mı 😀 led bağlayıp deneyebilir misin eğer uyguladıysan? yanıp sönüyor mu sıcaklık değerine göre... Çok şey istedim biliyorum ama şu civciv 10 olsun, veya buralara yolun düşerse sana bi köy tavuğu yedireyim 🙂
@eaydogan denedim denedim sorun yok. elimle tutunca 26 dereceye çıkıyor ve led sönüyor. elimi çektikten 2-3 sn sonra da led yanmaya başlıyor 🙂 ama bence aralığı 1 sn değil de 30 sn filan yap. lm35 çok değişken bir sensör.
@frt çok çok teşekkür ederim, bir arkadaşımda uno vardı, onu alacağım yarın, 220 volt röle, yarın kuracağım 🙂 Aralığı 30sn yaparım, problem olmaz. Umarım malzemecilerde lm35 bulabilirim 🙂 (Bu arada yer: Osmaniye (Adana-Gaziantep arasındaki))
@eaydogan eğer olursa yolum düştüğünde civcivlerimi alırım ona göre 😂
@frt 21 gün önce haber vermen yeterli 😉
@frt son olarak,
Launchpad'de adc uno'daki gibi 10 Bit, ama gerilim 3 volt,
launchpad ile çalıştırabilmem için;
temp = (5.0 * temp * 100.0)/1023.0;
formülünü
temp = (3.0 * temp * 100.0)/1023.0;
olarak değiştirmem yeterli midir? Tam olarak algılayamadım bu kısmı. Ne gibi değişiklik yapmam gerekiyor?
ekleme: adc özellikleri:
https://i2.wp.com/coder-tronics.com/wp-content/uploads/2013/08/MSP430G2253-ADC-input-voltage-range.jpg
@eaydogan muhtemelen öyledir. Uno ile denerken aynı anda Launchpad’de de deneyip test et bence 🙂
@frt şimdi pot bağlayıp deneyeceğim launchpad'da, led yanıp sönecek mi diye bakacağım.
Kodlamada sadece pinleri değiştirdim, kütüphane vs de kullanılmadığı için hiçbir problem çıkmadı, derleme başarılı oldu.
Aşağıya energia ide'sinin görüntüsünü koydum. şu adc'deki referans voltajın farklı olması soun çıkaracak mı bilmiyorum. Açıkçası düşünmeye çalışıyorum şu an ama kafam doldu, oturtamıyorum.
@eaydogan bence düzgün çalışacak 🙂
@frt diliyorum ki öyle olur 🙂 şu an kafama oturmuyor formül, ne işe yaradığını anlamadım 😀 😀
@eaydogan sensöre kaç bile giriş. vereceksin bu arada? giriş de mi 3 volt?
@frt sensöre eğer launchpad kullanırsam, haliyle pratik olarak 3 volt girerim. Uno kullanırsam 5 volt.
@eaydogan lm35 3v ile çalışmayabilir yalnız 😕
@frt o zaman dans 🙁 uno ile hallederim o zaman, sıkıntı yok. Hazır denendi, çalışıyor. Elimde ftdi232 var, uno bulamazsam ATmega328p alıp arduino idesi ile ftdi232 kullanarak programlayabilir miyim?
@eaydogan 🙁 hiçbir fikrim yok maalesef 🙁
@frt anladım. Çok çok teşekkür ederim. Gerçekten çok yardımcı oldun. Şahsen tanışmak isterim. Telegram: @eaydogan
@eaydogan telegram'ım yok, hatta teknoseyir dışında tüm platformları bıraktım 🙂 zaten günün 10 saatini buralarda geçiriyorum 😀
@frt hemen hemen aynı durum 😉
"" tek seferde en fazla 15 yumurta çıkartmayı planlıyorum "" biraz zor olmaz mı? Biraz dikkat...:=)))
Neden ki? evde kullanmalık, hobi amaçlı... Evdeki tavuklar gurk olunca da en fazla 11-13 tane çıkartıyorlar zaten. Yani sayıyı fazla mı buldunuz az mı?
@eaydogan ESPRİYİ ANLAMADIN YA NEYSE...:=))) " çıkartmayı " Türkçeye dikkat...
@kadirg1976 etmeyeydin be abi o.O demeyeydin keşke, anlayamayaydım...