Jump to content
  • Kaydol

şenol eker

Administrators
  • İçerik sayısı

    57
  • Katılım

  • Son ziyaret

  • Days Won

    18

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

  1. Normal telefon. Caller ID cihazı diye cihazlar var. Eskiden seri porttan bağlı olurlardı, şimdi USB bağlanıp seri port emüle ediyorlar. Bir bilgisayarda çalışan, Visual Studio'da yazılmış bir program bu. Yani hem yazıcı, hem de CALLER ID cihazı, bilgisayara bağlı. Google'da Caller ID arayınca birçok satıcı çıkıyor. Olay da şudur: Birinci çalıştan sonra telefon hattı 48V DC'ye düştüğünde, ikinci ring gelmeden önce 9600 bps ile bir bilgi gönderir. Bu cihazlar, bu bilgiyi alırlar.
  2. Facebook'ta bazı arkadaşların isteği üzerine buradan paylaşıyorum. Bu programı, bundan 5-10 sene önce, marketçi bir arkadaşıma "hatır için" yazmıştım. Arayan müşterilerden sipariş almak için bir şey. Telefon çaldığında yazıcıdan bir kağıt çıkartıyor. O kağıdı alıyorsunuz, üstünde telefon numarası var, müşteri daha önceden kayıtlı ise adı ve adresi de var. Telefonu açıp siparişi bu kağıdın üstüne alıyorsunuz, sonra gönderiyorsunuz. İlkel bir "getir" gibi. Eğer arayan numara kayıtlı değilse onu isterseniz adıya adresiyle kaydediyorsunuz, ya da mevcut bir adrese ikinci / üçüncü / n. numara olarak ekliyorsunuz. Böyle bir program. İşini görüyor olmalı ki, arkadaş bunu marketlerinde halen kullanıyor. Buradan herkese çok destek veremem ama, birden çok kişi alırsa birbiri ile fikir alışverişi yapabilir, uygun oldukça ben de destek veririm. Paket içinde ayrı bir klasörde Caller ID cihazının sürücüsü de var. Kolay gelsin. CID.rar
  3. şenol eker

    Sürekli verilerde ortalama

    Yazdığın kod son derece doğru. Ama float olan yerleri float olarak belirtmek daha garanti olacak: float oranh=0.9; float oranl=1.0-oranh; //.0 ekledim float sonuc=(float)ReadVeri(); //float ekledim while (1) { printf("%i\r\n";(int)sonuc); sonuc=sonuc*oranh+(float)ReadVeri()*oranl; //(float ekledim) } Bunda yaşadığınız sıkıntı nedir? Eğer yeterli yumuşatma yapmıyorsa, oranh'ı yükseltin. Örneğin: float oranh=0.95; ya da float oranh=0.98; gibi. Kimi uygulamalarda 0.998'e kadar çıkmak icap eder eğer veri çok gürültülü ise ve oluşacak lag sorun çıkartmayacaksa.
  4. şenol eker

    Sürekli verilerde ortalama

    Ne yapmak istediğinizi anladığıma emin olamadım. Burada bir "normal ortalama alma yöntemi" kodu var, bu kod çok uzun, çok yavaş ve çok bellek tüketiyor. Makalede asıl anlatılan ise "akan veride ortalama alma yöntemi". Bu kod çok kısa, RAM gereksinimi de çok az. Siz hangisini uygulamak istiyorsunuz?
  5. şenol eker

    Sürekli verilerde ortalama

    Neden hızlı verilerde uygun olmadığını düşündünüz? Eğer birinci gönderideki kodu kullanırsanız tabii ki uygun olmaz Ama ikinci gönderideki kod oldukça uygun kanımca, yüksek frekanslarda da. Aslında veriye göre, hangi yöntemin daha iyi olacağı değişir. Örneğin ben özel bir işte bir filtre kullanmıştım. Burada gelen veriler; periyodu tamı tamına bilinen, ama fazı bilinmeyen çok gürültülü bir sinüse ait idi. Gerekli bilgi ise, bu sinüsün fazı idi. Ne medyan ile ne ortalama ile çözüelmez. Birinde ortalama daha iyi iken diğerinde medyan iyi olabilir. Yukarıdaki kod ise, eşdeğer bir yürüyen ortalamaya nazaran çok çok az bir kod, çok az bellek gereksinimi çok az clock ile yaklaşık aynı sonucu verir. Burada yayınlama sebebim o idi.
  6. şenol eker

    Sürekli verilerde ortalama

    Aynı (ya da çok benzer) işi yapmanın çok kolay bir yolu var aslında. Bu yöntemle elde edilen çıkış şöyle: Diğeriyle neredeyse aynı sonucu veriyor gördüğünüz gibi. Ama yazmamız gereken kod diğeri ile mukayese bile edilemez: float oranh=0.9; float oranl=1-oranh; float sonuc=ReadVeri(); while (1) { printf("%i\r\n";(int)sonuc); sonuc=sonuc*oranh+ReadVeri()*oranl; } Burada verdiğimiz oranh, son kaç verinin ortalamasını almak istediğimiz. 0.9 verdiğimizde son 10; 0.99 verdiğimizde son 100; 0.999 verdiğimizde son 1000 verinin ortalamasını almaya benzer bir sonuç elde ederiz. Bu yöntemi ben bir yerden öğrenmedim; daha önce çok defa başıma geldiği gibi kendim buldum ama sonradan benden yıllar önce başka birinin bunu zaten icat etmiş olduğunu öğrendim. Kaynak olmaksızın, eğitim almaksızın kendine kendine öğrenmenin zararları işte... Bunun da daha önce icat edildiğinden eminim. Ama kim icat etmiştir, adı nedir bilmiyorum. Bilen varsa ve yazarsa ben de öğrenirim...
  7. Bir sensordan aldığımız verileri kullanırken, eğer sensor örneğin bir ivmeölçer ya da analog bir sensor gibi "gürültülü" veri üretiyorsa, bu verilerin ortalamasını alarak kullanmak iyi bir fikirdir. Örneğin son 10 değerin ortalamasını alabiliriz. Peki, bunu nasıl yapacağız? Son on tane değeri belleğe alıp sonra bunların ortalamasını mı almalıyız? Ya da çok hızlı veri akışı varsa, son yüz tane, son bin tane verinin ortalamasını almak için, son bin tane veriyi bellekte tutmamız mı gerekir? Ortalama alırken bu son bin tane veriyi toplayıp sonra bir kaydırıp yeni veriyi en sona koyabiliriz. Epey karmaşık değil mi? Ya da kaydırma yerine bir işaretçi ile son veriyi işaret edip, kaydırma yapmadan bu işi yapabilecek bir yöntem de geliştirebiliriz. Hatta bir de her seferinde toplamak yerine her seferinde iptal edilen (1001. eski) veriyi çıkartıp son gelen veriyi toplama ekleyebiliriz. İşlem süresi daha kısalır ama kodumuz daha karmaşıklaşır. Ayrıca ilk 1000 veri gelene dek çıkış vermememiz gerekir. Çünkü henüz gereğince veri toplanmamıştır. Bunun önüne geçmek için ilk 1000 veri sırasında "gelen kadarıyla" ortalama alınabilir. Bunu da ilave ettiğimizde gerçekten karmaşık ve uzun bir kodumuz olur. Ayrıca son 1000 tane veriyi kaydecedek bellek alanı bilgisayarlarda sorun olmasa da, bir mikrodenetleyicide bu ciddi bir sorundur. Aslında aynı işi yapmanın çok kolay bir yolu da vardır. Size bu algoritmayı tanıtmak isterim. Bunun için bir örnek veri seti hazırladım: Görüldüğü gibi, sinüse benzer ama oldukça gürültülü bir veri. Eğer bu verilerin klasik usulde "10 eleman ortalaması" alınırsa, veriler oldukça düzelir: Bunu yapabilmek için kabaca şöyle bir kod yazmak gerek: int veri[10]; //Okunan son veriyi saklayacağımız alan int i; for (i=0;i<10;i++) //ilk 10 veri okunuyor { veri[i]=ReadVeri(); } while (1) //Ana döngü { int top=0; //toplam for (i=0;i<10;i++) //Son 10 verinin toplamını alıyoruz { top+=veri[i]; } float sonuc=top/10.0; //Ortalama printf ("%i\r\n",(int)sonuc); //sonucu yazıyoruz for (i=0;i<9;i++)//Verileri bir kaydırıyoruz { veri[i]=veri[i+1]; } //son olarak da yeni açılan boş yere, yeni veriyi okuyalım: veri[9]=ReadVeri(); } Sonraki gönderide "sihirli formül" geliyor.
  8. şenol eker

    Ac ve DC ark nasıldır

    Bu konu bana "Verilerin Ortalaması Nasıl Alınır" başlıklı bir makale hazırlama fikri verdi. Hemen başlayayım.
  9. şenol eker

    Rf alıcı verici

    Bu arada, eğer bilmiyorsanız "Amatör radyoculuk" hakkında da bilgi edineceksiniz bu sitede. Belki siz de bu hobiye merak salabilirsiniz. 73.
  10. şenol eker

    Ac ve DC ark nasıldır

    Sadece ortalama almak bile bu sonucu verir gibi göründü bana. Ama davulun sesi uzaktan hoş gelir. İşin içine girince neler çıkar bilinmez.
  11. şenol eker

    PIC-ADC bit sayısı hakkında

    Kesinlikle katılıyorum
  12. şenol eker

    PIC-ADC bit sayısı hakkında

    DMA kullanmanız mantıklı görünüyor. Nasıl bir tasarım yapacaksınız bilmiyorum. Ama benim aklıma gelen şu: ADC'den bir süre; örneğin 1 milisaniye boyunca örnek alırsınız, Bu durumda 20 MSPS ve 16 bit hesabı ile 20k word yani 40 kb bir veri oluşacak. Eğer DMA ile alınırsa bu veri, alındıktan sonra bellekten bunu işleyebilirsiniz. Ama ben böyle bir uygulama yapmadım. Dolayısı ile bir sıkıntı çıkar mı tecrübe etmedim ama "bilgi" ile gidersek, çıkmayacak gibi görünüyor. Dolayısı ile DMA ile 80Mbit/s veri alabilen, DMA'nın kullandığı 40kB belleğe sahip bir işlemciye ihtiyacınız var gibi görünüyor.
  13. şenol eker

    PIC-ADC bit sayısı hakkında

    Bir kere 20 msps hızda okuma yapacak bir ADC'den bilgiyi nasıl alacağınızı düşünün. Bu, çok yüksek bir hız. 16 bit veri alacaksanız, saniyede 320 megabit veri aktarmanız gerekecek. Diyelim aldık, bunu nasıl işleyeceksiniz? Bunları tasarlayın kafanızda en önce. Ama bu 20 Mhz'de bir hata olmasın? Zira 20 Mhz ciddi bir hız.
  14. şenol eker

    PIC-ADC bit sayısı hakkında

    16F84'ü seçmeyin. Bu, "tarihi" bir çip. 628 de "antika" düzeyinde. Yeni çipler var, onları kullanın. https://www.microchip.com/ParamChartSearch/chart.aspx?branchID=1005 Bu sayfadan seçim yapabilirsiniz.
  15. şenol eker

    Ac ve DC ark nasıldır

    İkisinin çekirdekleri farklı. DC'de bobinin sarıldığı çekirdek, demirden yapılır. Ancak AC rölelerde böyle yapılırsa çok fazla kayıp (ısınma) olacağından, biririnden yalıtılmış saclardan üretilmiş çekirdekler kullanılır, trafolardaki gibi. Ayrıca bir bobin, DC'de reaktans (bobin etkisinden kaynaklanan direnç) olmadığından AC'ye nazaran daha fazla tur sayısına sahiptir. Yine kontak tarafında DC'de ark sürekli olduğundan kontak tarafı ark söndürecek düzeneklere sahip olmalıdır.
  16. şenol eker

    PIC-ADC bit sayısı hakkında

    16F84, 16F628 gibi çipler çok eski. Onlardan çok daha iyi olan yeni nesil kardeşleri bunların dörtte biri fiyatta, onlardan çok daha hızlı ve yetenekli. Bu yüzden bir projeye f84/628 gibi çiplerin kullanılmasını önermem.
  17. şenol eker

    FVR (Sabit Referans Voltajı) Nimetleri

    Diğer dillere de kolayca uyarlanabilir. Batarya gerimini kontrol etmek için karmaşık yöntemlere / donanımlara ihtiyaç olmayacak bu durumda.
  18. şenol eker

    Ac ve DC ark nasıldır

    Neden Edison'un değil de Tesla'nın yolundan gittiğimiz anlaşılıyor sanırım.
  19. şenol eker

    Emülatör vs Simülatör

    Bu iki kelime çok sıkça kullanılıyor, birbirine benzer de şeyler. Hatta kimi zaman hangisini kullanacağımıza emin olamıyoruz. Emülatöre "öykünücü", simülatöre de "benzeteç" diye karşılıklar var Türkçe olarak, ama galat-ı meşhur lügat-ı fasihadan evladır(*) diyerek tanımlara bakalım: Eğer bize bir "şey" lazımsa ama bir sebeple temin edemiyorsak, onun yerine "emülatör" kullanabiliriz. Yani emülatörü, emüle ettiği şey yerine, orijinali kadar verimli olmasa da kullanabiliriz. Örneğin bir Android telefonda yapmamız gereken bir işlem varsa ve bir android telefonumuz yoksa, "idareten" android telefon emülatörü ile işimizi görebiliriz. Mesela -olmaz da, misal olsun- bir cerrahın neşter yerine maket bıçağı kullanması diyelim. Eğer bir şey üzerinde çalışma yapmamız gerekiyor ama o şey üzerinde çalışma yapmak bize sıkıntı verecekse, tehlikeli olacaksa, zor olacaksa, o zaman o şeyin kendi üzerinde değil de "simülatörü" üzerinde yapabiliriz çalışmamızı. Örneğin uçak kullanmayı öğrenmek istiyorsak doğrudan kokpite girip öğrenemeyiz, çünkü çok tehlikelidir. Bunun yerine "uçağa benzer" (ama uçmayan, yani uçak yerine asla kullanamayacağımız) bir düzenek üzerinde çalışabiliriz. Simülatör bu. Yine cerrah örneğine dönersek, cerrahın bir insanı değil de bir maketi ameliyat etmesi durumunda bu maket, "simülatör" olacaktır. Kısaca: Emülatör, emüle ettiği şey elimizde yoksa, onun YERİNE kullanılabilir. Simülatör, simüle ettiği şey elimizde yoksa, onun YERİNE kullanılamaz. Siz de bu konuda yorum yapmak isterseniz bekliyoruz. (*)Yaygın hatalı kullanım, kullanılmayan ama doğru olandan daha iyidir.
  20. Isı sensörü değil. Bkz: Piyasada analog olarak LM35, digital olarak da DS18B20 çok popüler. Ama özellikle LM35'lerin içinde çok sayıda sahte ürün çkıkıyor. Bunları test etmek için bir şeyler yaptık. Siz olduğu gibi kullanabilir ya da içindeki kodları inceleyerek faydalanabilirsiniz. Kullanılan malzemeler: https://www.hobidevre.com/lm35dz?search=lm35&description=true https://www.hobidevre.com/DS18B20?search=ds18b20&description=true https://www.hobidevre.com/index.php?route=product/product&product_id=946&search=26k22&description=true https://www.hobidevre.com/2x16-yesil-lcd-display?search=lcd&description=true sicaklik.rar
  21. şenol eker

    Akım Kaynağı vs Gerilim kaynağı

    500mA demeyelim de, yüke bağlı olarak, belirtilen gerilimi (Örnekte 5V) aşamayacağından, belirtilen gerilimin akıtabileceği akım kadar, yani belirlenmiş akımdan (Örneğimizde 1A) daha azını akıtabilecektir. Örneğin 1A bir akım kaynağı en çok 5V veriyorsa, buna 10 Ohm bir direnç bağlarsak, dediğiniz gibi 10 Ohm x 5V= 500mA olacaktır.
  22. şenol eker

    Akım Kaynağı vs Gerilim kaynağı

    Hayır, kaynak verebileceği maksimum gerilimi verdiği halde istenen akım geçmiyorsa, maksimum gerilimde (Örneğimizde 5V) kalacaktır. Çünkü ideal gerilim kaynağı nasıl ki kaç amper çekersen çek; istersen sonsuz akım çek, hep aynı gerilimi vermeli ama pratikte, güç kaynağının sınırları aşıldığında verdiği gerilim azalacaktır. Varsa, sigortası atacaktır. İdeal akım kaynağında ise uçlar açık devre olursa sonsuz gerilim vermelidir ama pratikte böyle bir şey olamayacağına göre, yüksek direnç bağlandığında vermesi gereken akımı veremeyecek, hatta açık devre durumunda hiç akım akıtamayacaktır.
  23. şenol eker

    HEX editor

    HEX dosyaları düzenlemek / değiştirmek için bir excel dosyasıdır bu. Dosyayı açtığınızda bir uyarı gelecek. Programın çalışabilmesi için bu uyarıyı onaylamalısınız. Ekranın en üstünde "Load Hex" ve "Save Hex" düğmeleri göreceksiniz. Load Hex ile hex dosyanızı yükleyin. Bu, birkaç saniye sürecek ve bittiğinde bir uyarı çıkacaktır. Şimdi HEX dosya ilk stunda, sonra içeriği HEX olarak ve en sağ grupta ise karakter olarak göreceksiniz. İsterseniz doğrudan HEX dosya içinde değişiklik yapabilirsiniz. Bunu yaparsanız checksum'u değiştirmezseniz bir hata mesajı verilir ve checksum düzeltilir. İsterseniz ortadaki HEX değerleri ya da en sağdaki karakterleri değiştirerek de düzenleme yapabilirsiniz. Her durumda diğerleri de uygun şekilde düzenlenecektir. İstediğiniz değişikliği yaptıktan sonra "Save Hex" ile kaydedebilirsiniz. Ayrıca isterseniz kaynağı inceleyerek bunun nasıl yapıldığına bakabilirsiniz. Soru ve yorumlarınızı buraya yazabilirsiniz. HEX_EDITOR.xlsm
  24. şenol eker

    Akım Kaynağı vs Gerilim kaynağı

    5 voltta 500 mA akım çekecek direnç, R=V/I => R=5/0,5=10 Ohmdur. 1A 5V akım kaynağına (R=V/I=>R=5/1=5) 0-5 ohm arası bir direnç bağlarsak, daima 1A akım verecektir. 5 Ohm'dan daha yüksek direnç bağlanırsa, max gerilimi 5V olduğundan, 1A akımı sağlayamayacaktır. Yine gerilim kaynağı ile karşılaştırma yaparsak: 5V 1A bir gerilim kaynağına (R=V/I=>R=5/1=5) 5-sonsuz ohm arası bir direnç bağlarsak, daima 5V verecektir. 5 Ohm'dan daha düşük direnç bağlanırsa, max akım 1A olduğundan, 5V gerilimi sağlayamayacaktır. Gerilim kaynaklarında uçlar kısadevre edildiğinde teoride sonsuz akım geçmeli. Bu yüzden güç kaynağı zarar görmesin diye ya sigorta konur, ya da gerilimin düşmesi pahasına akım, sınır değerde tutulur ve varsa, kısadevre lambası yanar. Akım kaynaklarında uçlar açıkdevre bırakıldığında teoride sonsuz gerilim olmalı. Bu yüzden güç kaynağı zarar görmesin diye akımın düşmesi pahasına gerilim, sınır değerde tutulur ve varsa, açıkdevre lambası yanar.
  25. şenol eker

    Kondansatör vs Bobin

    İnternet üzerinde ulaşabildiğimiz kaynaklar genellikle birbirine benzerler ve ders kitaplarındaki bilgileri içerirler. Burada biraz "değişik" bir açıdan bakmaya çalıştım. "Nerelerde kullanılır" konusunda bir şeyler yazmak isterim: Yukarıda ne demiştik? Eğer bobinden bir akım geçirmek istersek, buna direnir; akımı geçirmemek ister. Ama bir süre sonra akımı geçirmeye ikna olur. Fakat aynı "sıkıntı", biz akım geçirmeyi kesmek istediğimizde de karşımıza çıkar, bu sefer de illaki bir akım geçirmeye çalışır. Bu yüzden gerekirse üzerinde çok büyük bir gerilim oluşabilir, hatta bu gerilim devremize zarar verebilir. Bu yüzden bu gerilimleri yok etmek için diyot koyduğumuzu hatırlayın. Bobinin bu özelliğinden örneğin filtre tasarlarken faydalanırız. Çünkü eğer bizim sinyalimiz çok hızlı değişiyorsa, bobin buna tepki verecektir. Akım geçirmek istediğimizde en önce direnecek, akım geçirmeyi kesmek istediğimizde de yine direnecektir. Yani eğer sinyalimizde yüksek frekanslı bileşenler varsa ve bunu bir bobinden geçirirsek, bobinimizin yüksek frekanslı bu bileşenleri geçirmeyeceği anlamı çıkar. Yahut bu sinyali bir bobinle kısadevre edersek, bu sefer de düşük frekanslı bileşenleri süzmüş olursunuz. Bunun neden böyle olduğunu anlıyorsunuz değil mi? Anlamıyorsanız yukarıdakileri ve başka kaynakları okuyup üzerinde düşünün. Bu, bir bobinin nasıl çalıştığını içselleştirirseniz, formüllerden arınmış bir şekile düşünebilirseniz, hepsine "daha yukarıdan" bakabilir ve "formül"leri ezberlemek yerine anlayabilirsiniz. Ya da salıncak bilirsiniz, bir salıncağı salladığınızda daha az ya da daha yükseğe sallayabilirsiniz ama her zaman aynı hızda sallanır. Örneğin az salladığınızda dakikada 30 defa sallanıyorsa, en yükseğe kadar sallağınızda da dakikada 30 defa sallanacaktır. Bunu lise fizik derslerinden hatırlayın. Dakikada kaç kez sallanacağı sadece ve sadece salıncağın ipinin uzunluğuna ve yerçekimine bağlıydı. Hatırladınız mı? Salıncağın enerjisi bir ucundaki kütlenin hızı (kinetik), bir yerçekiminden kaynaklanan (potansiyel) enerji olarak değişir. Eğer bir bobinle bir kondansatörü paralel bağlarsak da salıncağa benzer bir yapı oluşur. Buradaki enerji bir bobine, bir kondansatöre geçer ve aynen salıncaktaki gibi "sallanır". Buradaki titreşimin frekansı da sadece bobin ve kondansatörün değerine bağlı olduğundan bu devre sabit frekanslı sinyaller üretmek için kullanılan osilatörlerin kalbi olarak kullanıldı uzun zaman ve halen de kullanılıyor. Bir bobinden akım geçirildiğinde bir "mıknatıs" gibi davranıyor olması ise, "telgraf"tan başlayıp röle, motorlar, transförmotörler, kablosuz şarj gibi çok temel sistemlerden tıbbi MR görüntüleme, NFC gibi teknolojik sistemlere kadar sayısız sistemlerle hayatımızın içinde.
×
×
  • 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ı