Jump to content
Devre Forum
  • Kaydol

şenol eker

Administrators
  • İçerik sayısı

    28
  • Katılım

  • Son ziyaret

  • Days Won

    1

şenol eker kullanıcısının paylaşımları

  1. şenol eker

    Düşen kenar yükselen kenar

    Güzel bir soru Aslında devamda bahsedeceğim birinci konu buydu. Ardından da "basılı tuttuğumuzda tekrarlama nasıl olacak" gelecek. Debounce, butona bastığımızda "basılı" duruma geçerken bir ya da birkaç kez baslılı durumdan çıkması ve tekrar girmesi, dolayısı ile sanki defalarca butona basıp bırakmışız gibi bir sonuç çıkmasıdır. Bunu engelleyeceğiz, ama bunu yaparken butona üst üste hızlı hızlı bastığımızda tümünü algılayabilmeliyiz. Yani öyle kritik bir zaman olmalı ki, butona bu kadar hızlı basıp bırakamayacağımız kadar kısa, ama buton ark süresinden daha uzun bir süre seçmeliyiz. Örneğin saniyenin onda biri, yani 10 milisaniye bu iş için uygun gibi görünüyor. Butona saniyede on kez basmamız mümkün değil, ama buton arkı bu kadar uzun olmaz. O halde yapmamız gereken, butona basılmada 10 milisaniye altındaki hareketleri gözardı etmekten ibarettir. Bunu da bekleme satırının yani while (p==button); satırının sonuna 10 milisaniye bekleme eklemekten ibarettir. while (p==button);delay(10); Burada neler olacak: Bu satıra geldiğinde while buton basılana dek bekleyecektir. Buton basıldığı anda buradan çıkacak, 10 milisaniye bekleyecek ve bu sırada arklanma tamamlanmış olacaktır.
  2. şenol eker

    Ne kadar tuz ruhu, ne kadar perhidrol?

    Aliexpres'te fiyatlar çok uçuk oluyor böyle malzemelerde, çünkü kargo da içine yedirilmiş oluyor. TR'de daha ucuz bu kâğıtlar: https://www.hobidevre.com/baski-devre-kagidi
  3. Buton algılamada hep bir sıkıntı olur. Nedir işin aslı? Düğmeye basınca bunu "bir" görmeli, ne kadar basılı tutarsam tutayım, ne kadar kısa basarsam basayım. Ama aynı zamanda da kaza ile basılmış gibi davranmasın. Bunun için "düşen / yükselen kenar" terimlerini öğrenelim bilmiyorsak: Eğer bir noktada sinyal 0'dan 1'e çıkıyor ve sonra tekrar 0'a düşüyor ve öyle kalıyorsa: 0'da durduğu sürece "seviye 0" olur. Tam 1'e çıkarken "yükselen kenar" olur 1'de dururken "seviye 1" olur Tam 0'a düşerken "düşen kenar" olur. Butonu devreye bağlarken butonun bir ucunu şaseye, diğer ucunu işlemcimize bağlayacağız, işlemcimizin bu ucunu da bir dirençle + ya bağlayacağız. Buna "pullup" denir. Çok işlemcide bu pullup dirençleri istendiğinde devreye alınacak şekilde içeride bulunabilir. Bunu bilmiyorsak dışardan bir direnç takabiliriz. Peki butonu ne zaman algılamak isteriz? Basınca algılamak isteyebiliriz. Basılı iken algılamak isteyebiliriz. Ya da bırakırken algılamak isteyebiliriz. Sanırım en çok işe yarayacak olan, "bastığımız anda" algılanması. Yani "düşen kenar" oluyor burası. Normalde dirençten dolayı pinimiz "1" çünkü. Butona bastığımızda "0" oluyor ve biz 1'den sıfıra düşmesini algılayacağız. Normalde bu işler kesmelerle yapılır ama biz burada mantığı anlatmak istediğimizden "tuş basılana dek bekleyen" bir kod yazacağız sadece. Başkaca sorunuz olursa aşağıda sorarsınız. Kenar algılamada, butonun "önceki halini" bilmemiz gerekir. Bunun için bir değişken tutacağız. Bunun adı "p" olsun. char p; Pinimizi de "pin" diye tanımlamış olalım. Ya da en iyisi burada bir örnek olarak PORTB.2 olsun. #define button PORTB.2; Artık programımızı yazabiliriz: void tusbekle (void) { while (1) { p=button; //butonun ilk halini alıyoruz. while (p==button); // Buton aynı durumda olduğu sürece bekliyoruz. if (!button)exit; //Eğer buton sıfır ise, çıkıyoruz. } } Tabii sizin kullandığınız işlemci ve dil bundan farklı olabilir ama sonuçta mantık aynı. Anlaşılmayan bir yer varsa lütfen sorun.
  4. Eskiden baskı devre yapmaya başlayanlar demir3 klorür veya nitrik asit kullanırdı ama günümüzde tuz ruhu ve perhidrol revaçta. Ama hep sorulan ve tatmin edici bir cevap alınamayan bir soru var: Ne kadar asit ne kadar perhidrol kullanacağız? Yarı yarıya mı? Bire iki mi? İkiye bir mi? Olayın kimyasını anlarsanız bu konuda daha iyi yönetebilirsiniz durumu. Tuzruhu (hidroklorik asit) bakırı çözmez. Perhidrol da çözmez, ama bakırı "karartır". Oksitler yani. Tuzruhu da bakırı "temizler", Üstündeki siyah oksit tabakasını çözerek pırıl pırıl yapar. Bu ikisi birlikte çalışarak sizi amacınıza uşaltırır. Perhidrol karartır, tuzruhu çözer, perhidrol karartır, tuzruhu çözer, bu döngü bakır tamamen bitene dek böyle devam eder. Bakırı tuzruhu içine koyun. Sonra üstüne azıcık perhidrol dökün. Bir reaksiyon gözleyeceksiniz. Asitten etkilenmeyecek bir çubukla plaketinizi (üstüne dokunmadan) hareket ettirip reaksiyonu rahatlatın. Birazdan reaksiyon sona erecektir. Şimdi plaketi kontrol edip henüz olmadı ise azıcık daha perhidrol dökün. Bunu birkaç kez tekrarladığınızda plaketiniz indirilmiş olacaktır. Ama bir süre sonra döktüğünüz perhidrol artık reaksiyon yapmıyorsa, asit iyice seyrelmiş demektir, kabı komple boşaltıp yeni asitle başlayabilirsiniz. Burada dikkat etmeniz gereken iki konu var: Birincisi, perhidrol size çok zarar verebilecek bir kimyasaldır. Eldivensiz çalışmayı aklınızdan bile geçirmeyin. Ola ki cildinize gelirse hemen suya tutun. Çok kaşınacak ama sıkın dişinizi ve asla dokunmayın. Birkaç dakika sonra geçecek. Ama ola ki kaşırsanız, çok ciddi yaralanmaya sebep olabilir. Tabii cildinize değil de gözünüze gelirse bu çok tehlikeli. Hemen bir sağlık kuruluşuna gidin. İkincisi ise tuz ruhundaki klor. Bu işlem sırasında serbest klor ortaya çıkar ki, savaşlarda kimyasal silah olarak kullanılacak kadar tehlikeli bir gazdır. Dolayısı ile işlem yaptığınız kaptan çıkan size ulaşmayacak şekilde havalandırılan bir ortamda çalışın. Çok ciddi sıkıntılara sebep olabilir. Ha, bu arada tuz ruhu da tehlikeli tabii ama piyasadaki tuzruhu, saf (%37'lik tuzruhuna saf denir, daha yüksek oranda olamaz çünkü) değildir tehlikesinden dolayı. Eğer elinize gelirse hemen suyla iyice yıkayın. "olmadı bir şey" deyip geçmeyin, birkaç dakika sonra etki etmeye başlayacaktır ama o zaman da suya tutmak para etmeyecektir.
  5. şenol eker

    10k Potansiyometre ile voltaj ayarlama

    Orijinal halde, yani trimpotla ayar yaptığınızda nasıl oluyor? Yani öncelikle orijinal halde iken istediğiniz şekilde çalıştığını test ettiniz mi? Ayrıca kullandığınız kabloları lehimleyerek kullandınız değil mi? Üçüncü bir konu da, potansiyometreyi bağlarken uçları doğru bağlamamış olabilir misiniz?
  6. şenol eker

    İki mikrodenetleyici arasında haberleşme

    Peki gönderilen bu veriyi nasıl alabiliriz? Bunun en kolay yolu kesme kullanmak aslında. Ama kesme kullanmadan da yapabiliriz. İlk örneğimize göre yapacaksak: while (GetChar<>0x55); //0x55 gelmesini bekliyoruz veri=GetChar; veri=veri + GetChar<<8; İkinci örneğe göre yapacaksak: typedef union { struct { char bytes[34]; }; struct { char isim[16]; char soyad[16]; char boy; char checksum; }; }veri_type; veri_type veri; .... Bekle: if (GetChar!=0x55) goto Bekle if (GetChar!=0xAA) goto bekle veri.checksum=0; for (i=0;i<33;i++) { veri.bytes[i]=GetChar; veri.checksum=veri.bytes[i]; } veri.checksum-=GetChar; if (veri.checksum!=0) goto Bekle; Umarım anlaşılmıştır. Eğer kesme içinde yapacaksak, bu sefer de sonlu durum makinesi kurmamız gerekir. char state=0; char tmp; .... void Serial_ISR(void) { tmp=GetChar; switch (state) { case 0:if (tmp==0x55)state=1; break; case 1:if (tmp==0xAA){state=2;}else{state=0;} break; case 33: default: if (state>33) { state=0; }else{ veri.checksum=tmp; for (tmp=0;tmp<33;tmp++) { veri.checksum-=veri.bytes[tmp]; } if (checksum==0)VeriGeldi=1; state=0; } } ResetIF; } Peki programımızda, bir "veri geldiğini" nereden biliriz? "VeriGeldi" adlı bayraktan anlayacağız bunu da. Sonlu durum makinesinin nasıl çalıştığını, ne olduğunu bilmiyorsanız, önce bunu öğrenmenizi öneririm. Ayrıca yukarıdaki kodlar bir C lehçesi için yazılmadı, olayı anlatmak için yazıldı ve test edilmedi. Dolayısı ile copy+paste yapmanız için değildir, öğrenmeniz içindir. Zaten ben prensip icabı balık vermeye karşıyım.
  7. şenol eker

    İki mikrodenetleyici arasında haberleşme

    Verileri karşı tarafa gönderirken, basit bir veri yapımız varsa, doğrudan seri porttan gönderebiliriz. Örneğin bir tane integer sayı ve tekn byte premable göndereceksek: SendChar (0x55); SendChar (veri & 0xFF); SendChar ((veri>>8) & 0xFF); şeklinde gönderebiliriz. (Verimizin adı "veri" ve preamble 0x55) Ama görece karmaşık bir verimiz varsa, bir veri yapısı içinde gönderebiliriz. Bir örnek olarak isim, soyisim ve boy bilgilerini göndermek isteyelim. Şüphesiz ki bunu da yukarıdaki gibi yapabiliriz. Yani tek tek gönderebiliriz. Ama çok genel olsun diye "tam tekmil" bir yapı verelim, İstemediğiniz yerleri çıkartabilirsiniz. Önce bir union type tanımlayacağız. Hem gönderirken kolaylık olsun diye her byte'ı ayrı ayrı; hem de kullanımda kolaylık olsun diye uygun değişkenler şeklinde. typedef union { struct { char bytes[36]; }; struct { char preamble[2] char isim[16]; char soyad[16]; char boy; char checksum; }; }veri_type; veri_type veri; Sonra değerlerimizi koyacağız: veri.preamble=0x55aa; veri.isim=.... veri.soyad=.... veri.boy=180; Daha sonra eğer kullanacaksak checksum hesaplayacağız: veri.checksum=0; for (i=2;i<35;i++) //preamble ve checksum hariç { veri.checksum+=veri.bytes[i]; } artık verimizi yollayabiliriz. for (i=0;i<36;i++) { SendChar(veri.bytes[i]); } Hepsi bu
  8. şenol eker

    Transistör Sürme Hk.

    Görüştüklerimizi burada özetleyelim ki gelenlere faydası olsun: Avometre ile ölçtüğümüz akım kazancı tam hassas olmayabilir, bunun dışında Vbe gerilimi simülasyonda ve gerçekte farklı olabilir. Aynı şekilde iletimde Vce de oldukça farklı görünüyor. Transistörlerin Vbe gerilimleri de farklıdır. Sonuç olarak, simülasyondaki transistörün parametreleri ile gerçek transistörümüzün parametreleri eşit olmadığından bu sonuç ortaya çıkıyor.
  9. şenol eker

    Transistör Sürme Hk.

    İndisler çok küçük, görünmüyor. Birincide 0.73V ikincide 6 mV olan neresi?
  10. İki mikrodenetleyici arasında haberleşme konusunda çok fazla "sıkıntı" çekildiğini görüyorum. Bu yüzden bu makaleyi yazmaya karar verdim. Haberleşme isterse iki kıta arasında olsun isterse aynı pcb üzerindeki iki çip (PIC/AVR/STM) arasında olsun, haberleşmedir. ADSL modemden Wi-Fi'ye hatta modern telefon görüşmelerine kadar, tüm haberleşme "paketler" halinde yapılır. Çünkü en kolay ve düzgün olanı bu. "Paket" dediğimiz adı üstünde, bir bütün. Peki neden bilgileri buradan ard arda gönderip karşıdan da ard arda almıyoruz? Örneğin: Birinci_mesaj İkinci_Mesaj 3_Mesaj Bunları ard arda gönderirsek, her bir mesajın nerede başlayıp nerede bittiğini bilemeyiz. Bu yüzden her bir mesajın başına / sonuna bir "işaret" koymalıyız. Örneğin işaret olarak * koymayı düşünelim. Peki, mesajın içinde * varsa ne olacak? Biz verileri doğrudan gönderiyorsak, her bir byte 0 ile 255 arasında değer alabilir. Dolayısı ile "başka amaçla kullanılmayan" diye bir şey yok. (ESC ile bu mümkün ama kafamızı karıştırmayalım; yolu yok diyelim) O halde nasıl ayıracağız bu mesajları? Cevap, "paketleyerek". (packet) Cevap, "zarfa koyarak", (envelope) Cevap, "çerçeveye koyarak" (frame) Öncelikle bir "protokol" kurmalıyız kafamızda. Protokol dediğimiz, neyi nasıl yapacağımızın tarifi. Örnek olarak bir protokol uyduralım: En başta bir "preamble" olsun. Paketin buradan başladığını biliriz. Preamble 0x55 0xAA olsun örneğin. (Bu sayının seçilme sebebi, binary olarak 01010101 10101010 şeklinde olması, bir ve sıfırlar ardışık) Ardından yükümüzün (payload) kaç byte olduğunu verelim. Sabit bir şey göndereceksek buna gerek olmayabilir. Sonra asıl göndereceğimiz veri. Yani "payload", yük. En sonda da istersek bir kontrol toplamı (CRC) gönderebiliriz. Bir terslik olursa hatalı veri alınmasın diye. Evet, "çerçeve"mizin yapısı bu olacak. Şimdi bunu yazalım da güzel görünsün: Byte İçerik açıklama 00 0x55 Preamble ilk byte 01 0xAA Preamble 2. byte 02 len yük uzunluğu 03 payload(1) yük .. payload(..) yük len+2 payload(len) yük son byte len+3 CRC yük CRC toplamı Tabii bu bir kural değil. CRC koymayabiliriz örneğin, eğer aradaki iletişim çok sağlıklı ise ve hatalı bilgi gitmesi sistemimizde büyük sıkıntıya yol açmayacaksa. Çünkü pakete ilave edeceğimiz her byte, iletişim hızımızı düşürecek. Örneğin uzunluğumuz sabit olabilir. O zman onu da kullanmayabiliriz. Örneğin 16 bitlik bir integer sayı gönderiyor olabiliriz. Bu durumda uzunluk sabittir. Verinin çok hızlı olmasını istiyorsak, örneğin preamble de 1 byte olabilir. Bu durumda paketimiz şöyle olacak: Byte İçerik Açıklama 00 0x55 Preamble 01 yük-1 Yükün büyük byte'ı 02 yük-2 Yükün küçük byte'ı Sonraki gönderide verinin nasıl gönderilebileceğine bakacağız. (Devam Edecek)
  11. şenol eker

    Nedir bu PID? Neden gerekli?

    Sırası gelmişken, buradaki eğriler, gerçek bir sistemden alınan veriler değildir. Bir fikir vermesi için excel'de çizilip konmuştur. Daha güzel grafikler (tabşii ki kendi hazırladığınız) gönderirseniz değiştiririz. Şimdi sıra, PID'in son bileşeni olan D (Derivative) bileşenine geldi. Türev de bildiğiniz gibi "fark" demektir ve hesaplanan sonuca öneki hata ile şimdiki hata arasındaki farkı ekleyeceğiz. Tabii ki Kd katsayısı ile çarparak. Bu durumda bize bir de "önceki hata" değişkeni lazım. Her seferinde derivative=(hata-oncekihata)*Kd hesaplayıp ardından oncekihata=hata diyerek bir sonraki döngü için "önceki hata" değerini saklayacağız. Ancak burada dikkat etmemiz gereken bir olay var. Program ilk olarak çalıştığında, oncekihata değeri olmayacağından aşırı yüksek bir derrivative değeri çıkacaktır. Bundan kaçınmak için ilk döngüde derrivative değerini hesaplamayacağız. Bu yüzden "ilkSefer" diye de bir değişkene ihtiyacımız olacak. ilkSefer=1 while (1) { ...... derivative=(hata-oncekihata)*kd; if (ilkSefer) { derivative=0; ilkSefer=0; } oncekihata=hata; ...... } Şimdi bu kısmı programımızın içine ilave edelim: istenen_sicaklik=25; //Odamızı 25 derece sıcaklıkta sabit tutmak istiyoruz. UstSinir=100; //Isıtıcımızı tam güç çalıştırmak için vermemiz gereken değer AltSinir=0; //Isıtıcımıza verebileceğimiz en düşük değer Toplam=0; ilkSefer=1; P_katsayisi=1; I_katsayisi=1; D_katsayisi=1; while (1) //PID döngüsü, Bu kısımları programınızda başka kodlar da varsa, ana döngüye yerleştireceksiniz. { olculen_sicaklik=TermometreOku(); //Termometre okumak konumuz dışında, onu açıklamayacağız hata=istenen_sicaklık-olculen_sıcaklik; Integral=Toplam*I_katsayisi; Turev=(hata-OncekiHata)*D_Katsayisi; if (ilkSefer) { ilksefer=0; Turev=0; } OncekiHata=hata; IF (Integral>UstSinir) Integral= UstSinir; IF (Integral<AltSinir) Integral=AltSinir; deger=hata*P_katsayisi+Integral+Turev; IF (deger>UstSinir) deger= UstSinir; IF (deger<AltSinir) deger=AltSinir; Toplam+=hata; IsiticiCalistir(deger); //Isıtıcıyı PWM ya da analog ile çalıştırmak da konumuz dışında } Bunu da eklediğimizde sistem çok kısa bir sürede denge durumuna girecektir: Yukarıdaki örnek, test edilmiş C programları değildir. Büyük küçük harf hataları / değişken tanımlama eksiklikleri olabilir. Siz kendi kodunuzu yazarken bunlara dikkat edin. Ayrıca örnekte Kp,Ki ve Kd katsayıları olarak hep 1 verdik. Gerçekte bu böyle gerçekleşmez. Bir PID sistemin nasıl ayarlanacağı konusu, PID'in kendisi gibi basit bir konu değildir. Hatta "şöyle ayarlanır" diye bir yöntem bile yoktur. Çeşitli yaklaşımlar vardır; Ziegler–Nichols metodu ya da Cohen-Coon metodu gibi.
  12. şenol eker

    Nedir bu PID? Neden gerekli?

    Biz, 70 dereceye ayarlamıştık. Neden 68'de kaldı? Çünkü "hata" diye bir şey hesapladık ve ısıtıcıyı, bu "hata"ya göre çalıştırdık. Eğer ortamımız tam 70 derece olsaydı, hata sıfır olacak ve ısıtıcı hiç çalışmayacaktı. Halbuki ortamın bir "ısı kaybı" var. Isıtıcı, "ısı kaybı kadar" çalışmak zorunda ki sıcaklık sabit kalsın. Bu yüzden P kontolöründe arada bir fark = drift = offset olması kaçınılmaz. Bunu set değerimizi biraz yüksek vererek dengeleyebiliriz ama eğer PID'in I bileşenini de kullanırsak, zaten hem baştaki titreşim daha azalacak, hem de bu offset sorunu gidecek. I bileşeni için INTEGRAL yani toplama işlemi yapacağımızdan, bir "toplam" değerine ihtiyacımız var. Her PID döngüsünde buna hatayı ekleyeceğiz. Buna "Toplam" diyelim. Her döngüde hata miktarını bu "toplam" değerine ekleyeceğiz. Ayrıca PID sonucuna da bu toplamın Ki katsayısı ile çarpımını ekleyeceğiz. Ki nedir biliyoruz değil mi? Hani Kp,Ki,Kd katsayılarındaki integral bileşeninin katsayısı. O halde programımızı I (integral) bileşenini de içerecek şekile güncelleyelim: istenen_sicaklik=25; //Odamızı 25 derece sıcaklıkta sabit tutmak istiyoruz. UstSinir=100; //Isıtıcımızı tam güç çalıştırmak için vermemiz gereken değer AltSinir=0; //Isıtıcımıza verebileceğimiz en düşük değer Toplam=0; P_katsayisi=1; I_katsayisi=1; while (1) //PID döngüsü, Bu kısımları programınızda başka kodlar da varsa, ana döngüye yerleştireceksiniz. { olculen_sicaklik=TermometreOku(); //Termometre okumak konumuz dışında, onu açıklamayacağız hata=istenen_sicaklık-olculen_sıcaklik; Integral=Toplam*I_katsayisi; IF (Integral>UstSinir) Integral= UstSinir; IF (Integral<AltSinir) Integral=AltSinir; deger=hata*P_katsayisi+Integral; IF (deger>UstSinir) deger= UstSinir; IF (deger<AltSinir) deger=AltSinir; Toplam+=hata; IsiticiCalistir(deger); //Isıtıcıyı PWM ya da analog ile çalıştırmak da konumuz dışında } Burada Integral değeri hesaplandıktan sonra, integral değeri için özel olarak üst ve alt sınır kontrolü yapıldığına dikkatinizi çekerim. Bunun sebebi, aşırı yüksek (veya aşırı düşük) çıkacak bir Integral değerinin, diğer bileşenleri işlevsizleştirmesini engellemektir. Örneğin P bileşeni -20, Integral bileşeni 30000 çıktı ise, bu sınır kontolü olmasa sonuç 100 çıkacakken, integral sınır kontrolü yapıldığında sonuç 80 olarak çıkacaktır. Yukarıdaki örneğimize sıcaklık/zaman grafiğimiz nasıl oluyor ona bir bakalım:
  13. şenol eker

    Şu bizim PWM...

    PWM için placeholder
  14. şenol eker

    ISI ve SICAKLIK

    1 Joule, 1 Watt gücün, 1 saniyede ürettiği enerjidir. 1 Joule, 1 Volt gerilime sahip iletkenden 1 saniye boyunca 1 Amperlik akım geçtiğinde oluşan enerjidir. 1 kilovat saat, bir kilovat gücün bir saat sürede ürettiği enerjidir. (E = P t). 1 kilovat saat (kWh) = 3,6 x 106 J = 3,6 milyon Joule'dir 1 kalori, 1 gram suyun sıcaklığını 1 derece yükselten enerjidir. 1 kalori (cal) = 4.184 Jouledir. Bir BTU (İngiliz Termal Birimi) bir pound suyu 1 derece Farenheit (F) kadar yükseltmek için gerekli ısı miktarıdır. 1 İngiliz Isı Birimi (BTU) = 1055 J (Isı İlişkisinin Mekanik Eşdeğeri) 1 BTU = 252 cal = 1.055 kJ
  15. şenol eker

    ISI ve SICAKLIK

    Bu iki kelimenin birbiri ile karıştırıldığına çok rastlıyorum. Aslında birbiri ile ilgili ama çok farklı şeyler. Bir orada bir termometre ve bir soba varsa, termometre odanın SICAKLIĞINI gösterir. Soba ise odayı ISITIR = odaya ISI VERİR. Termometre ISI göstermez. SICAKLIK gösterir. ISI, sobanın ortama VERDiĞİ şeydir. SICAKLIK ise, ORTAMIN durumunu belirten, termometre ile ölçülen bir şeydir. Sıcaklığın birimi DERECEdir. Biz Türkiye'de "Celcius" denen birimi kullanıyoruz. Başka birimler de var. Kelvin örneğin bilimsel bir birim, Fahrenhayt ve Bromür ise bizim kullanmadığımız başka birimler. Santim ve inç gibi. Biri diğerine lineer bir denklemle (bir sayıyla çarpıp bir sayı ekleyerek) çevrilebilir. Isının birimi, KALORİ olarak kullanılır çoğu zaman. Bir ENERJİ birimidir. kW/h gibi. V.A/h, V.mA/h gibi. Yani "20 derece ısı" olmaz. 20 kilokalori ısı, olur. Zaten bütün ENRJİ birimleri birbirine çevrilebilir. Eğer buna göz atmak isterseniz bir sonraki gönderiye bakın. Sıcaklığı ölçmek kolay. Termometreyi koyup ölçeriz. Ama ısıyı ölçmek zor. Kapalı bir ortam yapacağız, buranın ısıl kütlesini bileceğiz, sıcaklığı ölçerken içeriye ısı vereceğiz, sıcaklığın ne kadar arttığına bakarak oradan hesaplayacağız falan. Bu iş "kalorimetre" denen düzenekle yapılır.
  16. şenol eker

    Nedir bu PID? Neden gerekli?

    P kontrolü yaptığımızda, sorun çözülmüş gibi görünüyor ama ilk çalışma anında ya da sistemde "olağandışı" bir şey olduğunda bir "eksiklik" olduığıunu fark ederiz. Örneğin 40 derecede sabit sıcaklıkta tuttuğumuz bir ortama hatırı sayılı miktarda buz koyarsak, hata=istenen_sicaklık-olculen_sıcaklik değeri çok büyük olacak, bu yüzden ısıtıcımız muhtemelen var gücüyle, %100 kapasiteyle çalışmaya başlayacaktır. Bu belki ortam sıcaklığını hızlıca 40 dereceye çıkartmak için iyi gibi görünebilir. Ancak 40 dereceye yaklaştığında 40 dereceyi çok fazla aşabilecektir. Bu, aslında Kp katsayısının ne kadar büyük olduğuna bağlıdır. Örneğin Kp katsayısı çok küçük ise, ortam 40 dereceyi çok aşmayacak, Kp daha küçükse hiç aşmayacak, ama sistemin 40 dereceye gelmesi çok uzun sürecektir. Kp katsayısı büyük olursa, bu sefer ortam sıcaklığı hızla yükselecek, ama 40 dereceyi ısklayacak, bu değeri aşacaktır. Yani Kp katsayısını büyüttükçe hedefe daha çabuk yaklaşırken küçülttükçe daha hassas yaklaşıyor. Yani iki ucu pis değnek... Peki, hem hızlı hem de hassas olarak yaklaşmasının bir yolu yok mu? Var tabii. Bunun için, PID'in diğer bileşenlerini devreye almamız gerek. Peki, sadece P denetleyici yaparsak, hedefe yavaş ulaşmak / hedefe ulaşırken sapmalar göstermek dışında başka olumsuzluklarla karşılaşır mıyız? Şimdi gerçek verilerle bir "fırın", P denetleyici ile nasıl çalışıyor bakalım. Hedef sıcaklık olarak 70 derece verdik. Başlangıçta fırının içi ve dışı 30 derece idi. Sistemi başlattığımızda önce sıcaklık hızla 95 dereyece kadar çıktı, sonra 50 dereceye düştü, derken 68 derece civarında karar kıldı: Ama biz, 70 dereceye ayarlamıştık. Neden 68'de kaldı? İşte, buna "offset" veya "drift" deniyor. Eğer 68 dereceye ulaşma hızı sizin için yeterli ise ve P denetleyici kullanmak isterseniz, hedefi 70 yerine 72 yaptığınızda sorun çözülecektir.
  17. şenol eker

    Nedir bu PID? Neden gerekli?

    PID'deki bu üç harf, üç hesaplamaya karşılık gelir. Birincisi: P. Proportional'in kısaltması. Proportional kelimesi, "oransal" demek sözlüklere göre. Zaten birçok durumda PID'nin sadece P'sini kullandığımızda işimiz görülür. Odanın "sıcaklığını" sabit tutabiliriz. I ve D ise, kapı açılıp kapandığında içerisi soğuyacak ya, istenen sıcaklığa daha "düzgün" gelmesi içindir. Önceki gönderide "hata"yı hesaplamıştık. Hesap denirse tabii Yani istenen sıcaklıktan ölçtüğümüz sıcaklığı çıkartmıştık. Bu hata ne kadar büyükse, ısıtıcımızı o kadar "güçlü" çalıştıracağız. Mesela ısıtıcıyı PWM ile ya da analog olarak çalıştırıyor olabiliriz. (PWM ve Analog nedir biliyorsunuz umarım. Bilmiyorsanız önce bunları iyice anlayın, aksi halde devamı havada kalacaktır, kafanız karışacaktır, dolayısı ile devam etmeyin, PWM'i öğrenin, Analog kontrolu öğrenin sonra buraya tekrar gelin) Isıtıcımızı her ne şekilde kontrol ediyorsak edelim, bunu bir "sayı" ile yapacağız. Bu sayının bir alt bir üst sınırı vardır. Mesela PWM ile kontrol ediyorsak bir "duty cycle", analog olarak kontrol ediyorsak bir "analog deger" vardır. Örneğin ısıtıcımıza "0" gönderirsek hiç çalışmıyor, "100" gönderirsek son gücüyle çalışıyor olsun. Kimi zaman bu değerler örneğin "0" ile "1" arasında ya da "0" ile "1023" arasında olabilir. Eğer PID'ye bir göz attıysanız, P,I ve D için "katsayılar" verilmesi gerektiğini ve bu katsayıları belirlemenin çok zor olduğunu öğrenmişsinizdir. Şimdi "hata" yı bulduğumuza göre, P değerini de vererek PID'mizin ilk kısmını yapalım. Evet, şimdi iki değer çıktı karşımıza: alt ve üst sınır. Bir de ne vardır? istenen sıcaklıkla ölçülen sıcaklık arasındaki fark, yani "hata". Üç tane değerimiz oldu. Alt ve üst sınırı neden kullanacağız? Eğer hesap sonucu alt sınırdan az ya da üst sınırdan çok çıkarsa sonucu bunlara uyduracağız: Basic kullanıyorsak: hata=istenen_sicaklık-olculen_sıcaklik deger=hata*P_katsayisi IF deger>UstSinir THEN deger= UstSinir END IF IF deger<AltSinir THEN deger= AltSinir END IF Ya da C kullanıyorsak: hata=istenen_sicaklık-olculen_sıcaklik; deger=hata*P_katsayisi; IF (deger>UstSinir) deger= UstSinir; IF (deger<AltSinir) deger=AltSinir; Sonra bu değeri ısıtıcımıza gönderiyoruz. Hepsi bu. Şimdi bu anlattıklarımızı program haline getirelim. Ama hem BASIC hem C yazmak istemiyorum, ben buraya C olarak yazacağım. istenen_sicaklik=25; //Odamızı 25 derece sıcaklıkta sabit tutmak istiyoruz. UstSinir=100; //Isıtıcımızı tam güç çalıştırmak için vermemiz gereken değer AltSinir=0; //Isıtıcımıza verebileceğimiz en düşük değer P_katsayisi=1; while (1) //PID döngüsü, Bu kısımları programınızda başka kodlar da varsa, ana döngüye yerleştireceksiniz. { olculen_sicaklik=TermometreOku(); //Termometre okumak konumuz dışında, onu açıklamayacağız hata=istenen_sicaklık-olculen_sıcaklik; deger=hata*P_katsayisi; IF (deger>UstSinir) deger= UstSinir; IF (deger<AltSinir) deger=AltSinir; IsiticiCalistir(deger); //Isıtıcıyı PWM ya da analog ile çalıştırmak da konumuz dışında } Böylece bir P kontrolü yapmış olduk. Bu kadar basit (Devam Edecek)
  18. Örnekler bir ısıtıcı sistem üzerinden verileceğinden, ISI ve SICAKLIK nedir, arasında ne fark vardır bilmiyorsanız ya da kafanızda tam net değilse, şimdi bu sayfayı kapatıp ISI VE SICAKLIK makalesine gidin, onu okuyup anladıktan sonra buraya gelin. Aksi halde bu makaleyi anlamanız gerçekten sıkıntıya düşecektir. PID birçok yerde kullanılsa da en iyi "bir odayı ısıtma" problemi ile tarif edilebilir. Bir odanın sıcaklığını sabit tutmak istiyorsak, bir ısıtıcı elemana, bir de sıcaklığı ölçen elemana ihtiyacımız var. Sıcaklığı ölçen elemana "termometre", ısıtıcı elemana da "ısıtıcı" diyelim. İlk akla gelen şey, eğer termometre istediğimiz sıcaklıktan az bir değer gösteriyorsa ısıtmaya başlar, istediğimiz sıcaklığa ulaşınca da ısıtmayı keseriz. Bunu hepimiz biliriz, "termostat" bunun adı. Ama şöyle bir sıkıntı var: Eğer termometreyi hemen ısıtıcının yanına koyarsak, ısıtıcı çalışır çalışmaz termometre yüksek bir sıcaklık değeri gösterir. Çünkü ısıtıcı gerçekten sıcaktır. Ama ısıtmamız gereken ortam henüz ısınmamıştır. O halde termometreyi ısıtıcıdan uzağa koymamız gerekir. Termometreyi uzağa koyduğumuzda ortam ısınır, ama tam da istediğimiz sıcaklıkta tutamayız ortamı. Isıtıcıyı çalıştırdığımızda ısıtıcı ortamı ısıtmaya başlar, termometremiz sıcaklığı görür, istenen sıcaklığa geldiğinde ısıtıcıyı kapatırız ama ısıtıcının yüksek sıcaklığı ile ortam bir süre daha ısınmaya devam eder, sıcaklık bizim istediğimizden daha yüksek değere çıkar. Neyse, düşene kadar bekleriz, sıcaklık sınıra geldiğinde ısıtıcıyı açarız ama bu sefer de ısıtıcı kendini ısıtana kadar ortam soğumaya devam edeceğinden bizim istediğimiz sıcaklığın altına düşer. Mesela biz 30 dereceye ayarladıysak bir 25'e düşer, bir 35'e çıkar. Eh, bu da bir şey tabii ki. Ama neden daha iyisi olmasın? Nasıl bir şey yapmalıyız ki sıcaklık tam da o derecede dursun? Aslında şöyle yapabiliriz: Isıtıcımız aç - kapa şeklinde değil de ayarlı olsa, ilk başta sonuna kadar açıp ortamı istenen sıcaklığa getirsem, sonra öyle bir şekilde kıssam ki, istediğim sıcaklıktan ne aşağı ne yukarı gitmese. Ne güzel olur değil mi? Bu mümkün aslında. Yapmamız gereken oda ne kadar ısı kaybediyorsa, ısıtıcıdan aynı miktar ısıyı ortama verirsek odanın sıcaklığı sabit kalır. Peki odanın ne kadar ısı kaybettiğini nereden bileceğiz? Bunu ölçmek zor değil mi? Bunun bir kolayı yok mu? Bunu yapmak aslında çok kolay. Isıtıcıyı öyle sonuna kadar açmayacağız. Oda sıcaklığı ile bizim istediğimiz sıcaklık arasındaki fark ne kadar büyükse o kadar çok açacağız. Tabii tam tersine istenenden daha sıcak ise, ısıtıcıyı daha çok kısacağız. Böylece tam noktasını bulabileceğiz. Termometreden gelen sıcaklık "t" olsun. İstediğimiz sıcaklık "g" olsun. Bu "g-t" değeri, bizim hatamızdır. Yani bizim sistemimiz istenen şeyi yapamamış demektir. Yani bir hatamız var demektir. Bu hata da, istenen ve ölçülen sıcaklık değerleri arasındaki farktır. Biz, bu farkın yani hatanın sıfır olmasını isteriz. Bakın bu "hata" çok mühim. PID'in kalbi bu "hata" (Devam Edecek)
  19. Bu makale seneler önce ve elektronikle /bilgisayarla ilgisi olmayan bir topluluk için yazdığım bir makaledir. Eğer onaltılı (hexadecimal) veya ikili (binary) sayı sistemleri kafanızda çok net değilse okumanızı öneririm. Sizin ihtiyacınız yoksa da aklınızın bir yerinde dursun; gerektiğinde uzun uzun anlatmak yerine burayı referans verebilirsiniz. Asla başını atlayıp aşağıya geçmeyin. Hiç bir anlamı olmaz. Biliyorum, saçma derecede basit gelecektir ama atlamayın. Konu gerçekten bu kadar basit. Eğer kafanız karışıksa, sebebi olayın karmaşıklığı değil, sizin tahmin etmediğiniz kadar basit olması zaten. Desimal (onlu) sistem, günlük hayatta kullandığımız sayı sistemidir. Onlu sistem denmesinin sebebi, 10 tane rakamının olmasıdır. Bu rakamlar 0,1,2,3,4,5,6,7,8 ve 9 dur. 0=sıfır, 1=bir, 2=iki, 3=üç, 4=dört, 5=beş, 6=altı, 7=yedi, 8=sekiz 9=dokuz sayılarını gösterir. Eğer yazacağımız sayı 10'dan küçükse bunu tek bir rakam ile yazabiliriz. Ama yazacağımız sayı 10 veya daha büyükse, o zaman birden fazla rakam kullanmamız gerekir. O zaman rakamları yanyana yazarız. Önce iki rakamlı bir örnek verelim: 23 Burada başta 2 rakamı, sonra 3 rakamı vardır. Onluk sayı sisteminde her basamak bir öncekinin 10 katı değerdedir. Bütün sayı sistemlerinde en sağdaki basamak birler basamağıdır. Sonraki basamaklar ise daima bir öncesinin on katı olur onlu sistem için. Yani onlar basamağı olur. Eğer bir üçüncü basamak olsaydı, bu da bir öncekinin (yani 10'un) on katı olacak, yüzler basamağı olacaktı. Örnekte verdiğim sayıyı okurken katiyyen "yirmiüç" diye okumayın. iki-üç diye okuyun. Amerikalıların telefon numaralarını söyledikleri gibi. Şimdi bu sayının kaç olduğunu bulalım: Soldaki basamak onlar basamağı demiştik. Burada 2 yazdığına göre, on ile çarparsak, 20 olur. Yani sol taraftaki 2 rakamı, "yirmi" sayısını ifade ediyor. Sağ tarafta ise 3 rakamı var. Burası birler basamağı olduğu için direkt olarak 3 sayısını ifade eder. Bu ikisini toplarsak yirmiüç olur. Üç basamaklı bir örnek verelim: 382 Bu sayıyı nasıl okuyacağız? Üç-sekiz-iki En sağdaki basamak bütün sayı sistemlerinde birler basamağıdır demiştik. Ortadaki bir öncekinin 10 katı olduğuna göre onlar basamağı, soldaki de bir öncekinin yani 10'un on katı, yani yüzler basamağı. Şimdi bu sayının kaç olduğunu bulalım: Yüzler basamağında 3 var. yani üçyüz (3 x 100). koyun kenara. Onlar basamağında ise 8 var. Bu da seksendir (8 x 10) Bunu da kenara koyun. Birler basamağında ise iki var. Şimdi bunları toplayalım: Üçyüz, seksen daha üçyüzseksen, iki daha üçyüzsekseniki. demek ki üç-sekiz-iki şeklinde yazılan sayı "üçyüzsekseniki" oluyormuş. Onlu sayı sistemini iyice anladınız mı Anlamadıysanız bir daha okuyun. Onluyu anlamadan buraya geçerseniz, zor öğrenirsiniz. Eğer yukarıdakini okuduysanız sizi burada bir sürpriz bekliyor. Çünkü şu "anlaşılmaz sır" olan onaltılı sayı sistemi onlu ile neredeyse aynı Heksadesimal - Hexadecimal (onaltılı) sistem, 0x00 şeklinde gösterdiğimiz sayı sistemidir. Onaltılı sistem denmesinin sebebi, 16 tane rakamının olmasıdır. Bu rakamlar 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E ve F dir. 0=sıfır, 1=bir, 2=iki, 3=üç, 4=dört, 5=beş, 6=altı, 7=yedi, 8=sekiz 9=dokuz A=on, B=onbir, C=onkiki, D=onüç, E=Ondört, F=Onbeş sayılarını gösterir. Eğer yazacağımız sayı 16'dan küçükse bunu tek bir rakam ile yazabiliriz. Ama yazacağımız sayı 16 veya daha büyükse, o zaman birden fazla rakam kullanmamız gerekir. O zaman rakamları yanyana yazarız. Önce iki rakamlı bir örnek verelim: 23 Burada başta 2 rakamı, sonra 3 rakamı vardır. Onaltılık sayı sisteminde her basamak bir öncekinin 16 katı değerdedir. Bütün sayı sistemlerinde en sağdaki basamak birler basamağıdır. Sonraki basamaklar ise daima bir öncesinin onaltı katı olur onaltılı sistem için. Yani onaltılar basamağı olur. Eğer bir üçüncü basamak olsaydı, bu da bir öncekinin (yani 16'nın) onaltı katı olacak, ikiyüzellialtılar basamağı olacaktır. Örnekte verdiğim sayıyı okurken katiyyen "yirmiüç" diye okumayın. iki-üç diye okuyun. Amerikalıların telefon numaralarını söyledikleri gibi. Şimdi bu sayının kaç olduğunu bulalım: Soldaki basamak onaltılar basamağı demiştik. Burada 2 yazdığına göre, onaltı ile çarparsak, otuziki olur. Yani sol taraftaki 2 rakamı, "otuziki" sayısını ifade ediyor. Sağ tarafta ise 3 rakamı var. Burası birler basamağı olduğu için direkt olarak 3 sayısını ifade eder. Bu ikisini toplarsak otuzbeş olur. Üç basamaklı bir örnek verelim: 382 Bu sayıyı nasıl okuyacağız? Üç-sekiz-iki En sağdaki basamak bütün sayı sistemlerinde birler basamağıdır demiştik. Ortadaki bir öncekinin 16 katı olduğuna göre onaltılar basamağı, soldaki de bir öncekinin yani 16'nın onaltı katı, yani ikiyüzellialtılar basamağı. Şimdi bu sayının kaç olduğunu bulalım: İkiyüzellialtılar basamağında 3 var. yani yediyüzaltmışsekiz (3 x 256). koyun kenara. Onaltılar basamağında ise 8 var. Bu da yüzyirmisekiz (8 x 16) Bunu da kenara koyun. Birler basamağında ise iki var. Şimdi bunları toplayalım: Yediyüzaltmışsekiz, yüzyirmisekiz daha sekizyüzdoksanaltı, iki daha sekizyüzdoksansekiz. demek ki üç-sekiz-iki şeklinde yazılan sayı "sekizyüzdoksansekiz" oluyormuş. Anlaşılmadıysa baştan okuyun. Gerekirse 10'lu sistemi bir daha okuyun. Binary (İkili) sistem, bilgisayarların asıl kullandığı sayı sistemidir. Biri onluk, diğer onaltılık iki sistem biliyorsunuz. Üçüncüsünü öğrenmek artık zor değil. Ancak 16lık sistemi tam anlamadıysanız buraya geçmeyin. Çünkü bu daha basit olduğu için iyice karıştırabilirsiniz. Espri yapmıyorum, gerçek. Gerçekten daha basit ve ötekini anlamadıysanız gerçekten kafanızı daha fazla karıştırır. İKİLİ sayı sistemi olduğuna göre iki tane rakam var demektir: 0 ve 1. Her basamak değeri onluk sistemde bir öncekinin on katı, onaltılık sistemde bir öncekinin 16 katı oluyordu. Bunda da doğal olarak biröncekinin iki katı olacak. Sayı yazarken sadece 0 ve 1 rakamları var. ne güzel Şimdi bir örnek yapalım: 101 Bir-sıfır-bir en sağdaki basamak birler basamağı. Burada 1 olduğuna görei "bir" i kenara koyun. Ortadaki basamak bir'in iki katı olan "ikiler basmağı". Burada sıfır var. sıfır kere iki sıfır olduğu için kenara koyacak bir şey yok. Soldaki basmak bir öncekinin (ikinin) iki katı olduğuna göre dörtler basamağıdır. Burada da "1" olduğuna göre, 1 x 4 = kenara dört koyalım. Hepsini toplayalım: 4+0+1=5 demek ki ikili sistemde bir-sıfır-bir diye yazılan sayı beş oluyormuş BYTE, BIT, HEX, BIN ve karşınızdaaaa NIBBLE Binary sayı sistemi, onaltılık sistemle çok güzel uyuşur. Onaltılık sistemdeki bir rakam, binary (ikili) sistemdeki 4 basamaklı bir sayı ile ifade edilebilir. Şöyle ki: 0=0000 8=1000 1=0001 9=1001 2=0010 A=1010 3=0011 B=1011 4=0100 C=1100 5=0101 D=1101 6=0110 E=1110 7=0111 F=1111 Belki de (belki değil, kesin) bilgisayarda onaltılı sayı sistemi kullanılmasının sebebi bu... Burada 4 basamaklı bir ikili sistem sayıdan oluşan ve bir onaltılı "rakam" ı (tek basamaklı sayı yani) ifade eden gruba, "nibble" denir. İki rakamlı bir HEX sayıya bir Byte denir. Yani bir Byte, 4+4 = 8 tane ikili rakamdan oluşan bir sayı ile ifade edilir. İkili sistemin rakamlarının özel bir adı daha vardır : BIT yani "en küçük parça" anlamında kullanılır. En basit şekli ile anlatmaya çalıştım. Yine de bir hata veya eksiklik ya da anlaşılmayan bir nokta varsa tartışma bölümüne yazabilirsiniz.
  20. şenol eker

    Tartışma

    Bu bölümdeki makalelerle ilgili tartışmalar bu başlık altında yapılacaktır. Makalelerde gördüğünüz hata veya eksiklikleri burada bildirirseniz, yöneticiler sizin isminizle gerekli düzeltmeyi yapacaktır.
  21. şenol eker

    İstekler

    Bu bölümde yer almasını istediğiniz konuları buradan yazabilirsiniz. Burada yer almayan bir konuda bir makale yazıp burada paylaşırsanız, yöneticiler makalenizi sizin adınızla müstakil bir başlık olarak ayrıcaktır.
  22. şenol eker

    arduino ile servo motor sürme.

    Doğrudan 180 ve sonra da sıfır yapmak yerine birer birer arttırarak araya da bekleme koyarak istediğin hızı ayarlayabilirsin örneğin. Şunun gibi bir şey deneyebilirsin: for(pos = 0; pos <= 180; pos ++){ sg90.write(pos); delay(30); } delay(3000) for(pos = 180; pos >= 0; pos --){ sg90.write(pos); delay(30); } Bunları loop() { içine yazmalısın. } Ben denemedim. Denedikten sonra sonucu bildirirsen sevinirim.
  23. şenol eker

    Forum Kuralları

    Forumda paylaşımda bulunmadan önce forum kurallarını kabul etmelisiniz. Forum kuralları, ihtiyaç duyuldukça değiştirilebilir, ilaveler yapılabilir. Forumda siyasi, dînî, futbol gibi tartışmaya sebep olabilecek konulardaki yorumlara kesinlikle izin verilmemektektir. DevreForum kullanıcı haklarına ve yazar uygulamaları emeğine saygı duyar. illegal içerikleri paylaşmaz, paylaşımlara aracılık etmez ve bu tür davranışlarda bulunanlara izin vermez. İllegal yazılım veya içerik kullanan, DevreForum forumlarında bunu dile getiren, diğer kullanıcıları illegal kullanıma özendiren hesaplar uyarılır. Bu davranışlara devam haklinde bu hesaplar kalıcı olarak kapatılır. Sadece kaynağından paylaşılan linklere izin verilir onun dışında foruma iliştirilen veya yüklenen illegal içeriklere izin verilmez ve silinir. Türkçe diline saygı duyar dilimizi doğru kullanıma teşvik eder bu konuda gerekli olması durumunda kullanıcılar uyarılır. Sorular uygun başlıklar altında sorulmalı kararsız kalınan durumlarda uygun genel kategorilerde konu açılabilir. DevreForum forumlarında kullanıcıların içeriklerinin değiştirilmesi, taşınması ve tamamen silinmesini hakkını saklı tutar. Sorular belirli kişilere yönelik sorulamaz, cevap alınmaya zorlanamaz. Konu başlıkları konuyu özetleyecek şekilde oluşturulmalı konu başlıklarında "çok acil", "acil yardım", "lütfen yardım" ifadeler kesinlikle kullanılmaz bu tür konular kapatılır veya silinir. Mesaj başlıkları tamamen büyük harflerden oluşturulamaz ve mesaj içeriği gözü rahatsız edici yazı tipi veya boyutu kullanılamaz. İçerik ortalama veya diğer mesajlara tezat oluşturacak şekilde oluşturulamaz. Özel mesajla adından da anlaşılacağı gibi özel durumlar hariç forumla ilgili sorular sorulamaz. bu tür özel mesajlar silinir ve görmezden gelinebileceği gibi ısrarcı durumda olanların özel mesaj hakkı kapatılır. Açılan konuların yönetim veya kullanıcılar tarafından cevaplanma zorunluluğu yoktur. DevreForum kuralları burada belirtildiği gibidir. DevreForum'a üye olmuş veya üye olmayı kabul etmiş her kullanıcı bu kuralları kabul etmiş sayılır.
  24. Bir ürün hakkında tanıtım / inceleme yapılmasını talep etmek için bu bölüme istek yapmalısınız. Örneğin: gibi. Bu bölümde inceleme /tanıtım istekleri dışında konular açılmamalıdır. Ürünle ilgili tartışmalar için "bilgi alışverişi" bölümündeki ilgili başlık altına konu açabilir, veya orada ilgili konu varsa devam edebilirsiniz.
×
×
  • Yeni Oluştur...

Önemli Bilgilendirme

Facebook / Twitter / Google hesabınızla kolayca kaydolup cevap verebilir, soru sorabilir, istekte bulunabilirsiniz.
Devam etmeniz, forum kurallarını kabul ettiğiniz anlamına gelir.            Forum Kuralları