teknik etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
teknik etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

22 Mart 2022 Salı

Altium ile 74hc595 16 Bit DAC Tasarımı

 Merhaba arkadaşlar daha önceki yazımda size 16 Bit  için teorik olarak Dijital Analog Converter dizaynı yapmıştık  Arduino mikrodenetleyicisi ile kontrol edebildik bugün ise bu tasarımın devre şemasını ve Altium çizimini sizinle paylaşmak istiyorum. 480 Khz sinyal için diffarantiel pair olayına girmedim her bir direnç arasındaki mv cinsinden kaybı yazılım ile tolere edebiliriz. Bu devre kartının malzeme fiyatı  yaklaşık 10 lira günümüzde 16 bit D/A için 10 dolar üzerinde entegre/modül fiyatı bulunuyor.

Çıkışında Low pass filter var 47nF bir kondasatör için 1 Khz de orjinal sinyale çok yakın bir görünüm veriyor yakın bir zamanda kartı sipariş edip testlerini yapacağım. Onun dışında delikli pertinax ile deneysel bir devre tasarımı yaparak deneyebiliriz.

16 Bit Dac üst görünüm 

16 Bit Dac alt görünüm 


20 Mart 2022 Pazar

DAC Nedir ? Entegreleri neden pahalı ? Ucuz Ve Kaliteli DAC Yapalım

Merhaba arkadaşlar, bugün Mikroişlemci ve elektronik dünyasının vazgeçilmez çevrim işlemi olan dijital bir verinin analog olarak çıkış yönteminden bahsedeceğim. 

Günümüz dünyasında haberleşmenin elektronik için önemi büyük basit bir örnek ile açıklayım mikrofondan gelen analog sinyali uzaya taşımak istiyoruz ama bu datayı kimse çözemesin? analog olan bu sinyalin sayısal bir karşılığını kullanarak bu veriyi kripto edebiliriz karşı taraf da bunu tekrar çözüp ses sinyaline çevirmesi gerek. 

Eğer elektroniğe meraklı ve yeni öğrenen biriyseniz çoğu terime yabancılık çektiniz o halde Analog ve dijital sinyalden bahsedelim. 

Ucuz yöntemle kaliteli dac işlemi
DAC akış gösterimi

Analog Sinyal

Fiziksel sistemlerdeki ısı, sıcaklık, basınç, ağırlık, nem oranı, ışık şiddeti, ses şiddeti gibi büyüklükler olarak değişirler nedir bu analog? Bu büyüklükler elektronik ortama aktarmak için bazı enstrümanlar kullanırız mikrofon, sıcaklık sensörü yada bir kamera cihazı; ses, ısı, ışık gibi büyüklükleri genlik, akım, faz açısı veya frekans gibi elektriksel sinyallere çevirirler bu sinyaller anlık olarak düzgün olmazlar çok fazla gürültülü olabilirler iki kablo içerisindeki sinyal birbirine manyetik & endüktif  etkiye sebep olur birbirini bozabilir iyide dijital sinyal de böyle bir problem yok mu? yüksek frekansta çalışıyorsak var tabi şş orası sonra.. :) . 

Analog sinyallerde bir ortamdan başka bir ortama taşınırken elektriksel özellikleri kolay değişebilir, kayıp yaşanabilir  bozuk sinyal işimize pek yaramaz dijital sinyal ise az bozulmaya uğrar kısaca hdmi ile svideo sinyali arasındaki fark gibi püf noktamız bu olsun. 

Analog sinyaller sadece duyulabilir sinyaller olmayabilir eskiden teknoloji bu kadar gelişmiş değildi analog sinyaller kendi aralarında çevrimi yapılıyordu yani modüle edebiliyorduk yada genlik ile oynuyor faz açısını değiştiyor yada filtre ediyorduk ama bu analog in out için biraz mekaşetli ve pahalıydı çok fazla devre elemanı gerekiyordu  eski radyoların içini açın birde şimdiki radyoları boyutları epey küçüldü işte sebebi herşeyin dijital olması bu sinyallerin işlenebilmesi için devre elemanına ihtiyacımız yok. Mesela yeni nesil radyolarda rezanatör devresi bile yok çünkü mikroişlemciler geliştiğinden beri yazılım ile sayısal veriler ile oynamak kolay. Lütfen SDR için bir araştırma yapın ne dediğimi anlayacaksınız:) şimdi dijital sinyali kavrayalım. 


Analog sinyal gösterimi


Analog sinyal, T zaman aralığında [v1, v2, .. vn] kadar gerilim değeri alabilir bu gerilim kümesi iki referans gerilimin arasında zamana bağlı olarak değişir örn 3.567 volt olabilir. 

Az önce farkettiğimiz gibi 3.567 volt bir gerilim değeri ve T zaman aralığında, onlarca değerden bir tanesi, zamanı ne kadar daraltırsak virgülden sonraki sayılar giderek sabitleşir. Analog sinyalin bir frekans oluşundan kaynaklı olmakla frekansın  değişken özellikte olması bu gerilim değerinin zaman içerisindeki değişimi ile doğru orantlıdır. f = 1/T formülü ile T yani zamanın bize frekansı verdiğni anlarız. 

Bu blog yazısı DAC için yüzeysel formüller mantık anlatımı ve resim destekli similasyon çalışması içerir. 

Dijital Sinyal 

Dijital sinyal gösterimi


Yukarıdaki görsel dijital sinyali görüyoruz bu sinyal yani bu veri kümesi elektrikte 1 açık ve 0 kapalı anlamına gelen 2 lik koddan oluşur matematik modellemede binary taban sayısıdır. Dijital sinyal T zaman aralığında, TTL veya CMOS transistör modellemesinde 5.0 veya 3.3 voltdur mesela TLL de' [1:5 Volt 0: 0 volt]  olmak üzere 2 farklı değer alabilir.. 

Örnek, 256 decimal (10luk taban) Binary karşılığı 11111111 olarak kodlanmıştır 256 = 2^8 in karşılığıdır. 
Burada görüleceği üzere 256 Decimal sayısının karşılığı ikilik düzeyde 8 Bit anlamına gelir, her bir bit ikili sayıdan oluşur 1 ve 0 mikroişlemcilerin anlayacağı elektriksel dilin matematik gösterimidir.
 
Örneğin, ilk kez makine diline çevrilmiş meşhur 2 kelimeden oluşan Hello World ikilik koda çevrilirse:
01001000 01100101 01101100 01101100 01101111 00100000 01010111 01101111 01110010 01101100 01100100
Şeklinde olur. Her bir karakter 8 bit uzunluğundadır ASCII kodu olarak tanınır latin alfabesinin 7 bitlik bir karakter kümesidir İlk kez 1963 yılında ANSI tarafından standart olarak sunulmuştur.

Elbette aranızda bilenler vardır binary ikilik kod sistemi yazılım dilinde byte olarak tanınır ve her zaman hex veya decimal karşılığı bulunur 8 bit 1 bayttır matematikte anlatılan taban sistemi olan bu bilgileri lütfen araştırın.. 

İkilik kod, açık ve kapalı şeklinde olup elektrikte kullanabiliyoruz kapı devreleri, sayıcılar, register, flip flop vb transistör devreleri bir araya geldiklerinde veri depolayabilirler toplama, çıkarma veya diğer işlemleri yapabilirler. Matematik işlemini  1 mhz hızda yapabilen bir işlemci 1960 lı yıllarda çalışıyordu tek yapmamız gereken matematik modellerini dijital ortama aktarıp işlemek bir ses sinyali işleme fikrini geliştirmek o yüzden uzun sürmedi zaman geçtikte transistörler arttı ve mikroişlemcilerin işlem kapasitesi ve hızı da arttı şuanda Ghz seviyesinde. 

Şimdiye kadar sadece matematik ve bilgisayar dilinden bahsettik sayısal veriyi anlamış olduk bilgisayarların ve transistörlerin aç ve kapa özelliği ile aritmetik işlemler yapabilen yonga setlerine kısaca mikroişlemcilerin dünyasına teorik olarak göz attık bu yazı epey uzun soluklu olabilirdi henüz işin matematik tarafındayız. 
Fakat bu yonga setlerinin nasıl çalıştığı ram, rom, cpu, io, saat frekansı, timer... Gibi kavramlarını başka bir makalede ele alabiliriz. 

Şekil 2 Dijital Analog sinyal

Analog ve dijital sinyali anladık şimdi ise dijital sinyali nasıl analog sinyale pekala DAC nın ne olduğuna bakmanın tam sırası.. 

Kısaca DAC Nedir ?  

Başlıkta da yazığı gibi yukarda yazılanlardan yola çıkarak Şekil 2'deki sinyal tablosunun  sağdan sola Dijital sinyalin (DACD/AD2A, veya D-to-AAnalog sinyale dönüştürme veya birbirine çevrimi diyebiliriz. Örneğin, MP3 dosyasını insan kulağının anlayacağı şekle yani ses dalgalarına büründürmek gibi.. 

Dijital çıkış verebilen bir mikrodenetleyici ile başlayalım bu çok bildiğiniz Arduino Uno kartı işlemcisi olan Atmega328; seçimi ile bugünkü projede kullanacağız. Donanım konusunda iyi şirketlerin kullandığı Stm32, Arçelik gibi firmaların kullandığı AT80xx işlemciler olabilir ve çoğunun giriş çıkış, hız vb donanım özellikler değişkende olsa amaçları aynı. 

Mikroişlemci ile ürettiğimiz dijital SİNÜS sinyalinin bozulmaya uğramadan osiloskopta görmek için bazı donanımlar kullanmamız gerekir. Bu harici donanımlara genelde DAC entegreleri diyoruz. Bu makaleyi yazmamdaki olay hikayesi, tonlarca DAC anlatımı blog hatta haber siteleri olsa da teknik olarak inceleyip gerçek bir deney ile minumum 3 dolar olan bu entegreleri nasıl 1 dolara imal edebiliriz sorusu ile başladı. 

İşlemci üzerindeki dahili donanımlar gerçek proccessing işlemleri için yeterli değil Arduino gibi bir geliştirme kartı DAC İşlemi için PWM yöntemi kullandığını anladığımızda bu iki noktanın kavramını bu makalede anlayabileceğiz çünkü, DAC için mutlaka harici donanım kullanacağız LPF de dahil. 

Nasıl ? 



Analog değerler zamana göre sürekli (kesintisiz) olduğundan, bütün zaman dilimlerine karşılık gelen bir analog gerilim değeri vardır. Her analog değer için bir dijital değer oluşturmak karmaşık ve maliyetli olacaktır. Bu nedenle analog değer üzerinden belirlenmiş zaman aralıklarında örnekler alınır. Her örnek için seviyesine göre kodlanmış dijital bir değer üretilir.

Referans gerilim değeri bu yüzden vardır -Ref ve +Ref sinyal üretilen analog sinyalin minumun ve maksimum değerini ifade eder.

Şekil 3 DAC matematiksel modeli 


DAC işleminini matematiksel ifadeler ile doğrudan anlayalım  Şekil 3'e bakacak olursak sol taraftaki n kadar bit uzunluğunda dijital binary kodlaması görülüyor. Yukarıda anlattığım gibi örneğin n=16 bit sinyal 65536 farklı değer alabilir (2^n) bu 16 sıralanmış ikilik koddan oluşur.  DAC işleminde gerçek analog sinyale ne kadar çok yaklaşırsak çözünürlük dediğimiz resolution yani n o kadar artar ve sinyali daha kaliteli elde edebiliriz. 

Grafikte okunnduğu gibi, negatif ve pozitif referans değeri arasındaki çözünürlük;

V+ref = 5.0 volt
V-ref = 0 volt
n = 8 bit
Q = (V+ref - V-ref ) / 2^n = (5-0)/256 
Q = 0.01953125 volt
Tablo 1 8 bitlik bir DAC için çıkış değerleri


Her bir adım yaklaşık 0.02 volta karşılık gelmektedir. Kısa bir deyişle 0-5 volt aralığını n=8 bit, 256 adet eşit aralığa bölmüş olduk. İşte kavranması gereken nokta burası çözünürlük n kadar bit değeri ile doğrudan ifade edilmesinin sebebi ref gerilimin adım aralığı ile artıyor.  Tablo 1'de örnek değerler gösterilmiştir.

Vmax değeri maksimum digital kodun (n=8, 256) max referans gerilimin 1 bit aşağısında kalmaktadır.

(256)10 = (11111111)2 sayısı yaklaşık 4.98 volt analog çıkış gerilimi ile ifade edilmektedir. bu hata örnekleme hatası olarak adlandırılmaktadır.

Vmax = 5 volt ve n = 16 bit olduğunda 65536 farklı sayısal kod farklı gerilim değerini ifade eder adım aralığı artmış olur. Dezavantajı çözünürlük maliyet ile doğru orantılıdır günümüzde 16 bit DAC entegreleri minumum 5$ dan aşağı satılmazlar. 

Çıkış gerilimi V(x), ile x burada digital kodun decimal karşılığı anlamına gelir. 
V(256) = x*Q = 256*0.01953 =  4.9800 volt

R-2R Kedi Merdiveni

R-2R yöntemi op-amp ile beraber direncin gerilim bölücü özelliği kullanılarak D/A dönüşümü yapılabilir her bir R-2R direnç bölmesi Şekil 4'deki gibi birbirine seri bağlanarak (n kadar bağlantı, n kadar çözünürlük ifade eder) şekildeki anahtar doğrudan işlemcinin dijital pinine bağlanır bu 4 bit bir D/A çevirici yani;
Vref = 5, 
n = 4, 
Q = 5/2^n 
Q = 0.3125

V(x) = x*Q

16 adımlık dijital çevirici V(x) sinyali, x değerlerinin 16 farklı değeri ile analog sinyali bulabiliriz.  

Şekil 4 Dört bitlik ikilik ağırlıklı direnç D/A çevirici

Bu tip D/A çeviricilerin bir dezavantajı direnç değerleri aralığının ve sayısının farklı olmasıdır. Örneğin sekiz bitlik bir D/A çevirici için sekiz direnç kullanılmalı ve bu dirençlerin değerleri R ile 128R arasında olmalıdır. Direncin, toleransları ve sıcaklığa bağlı olan değişimlerine bağlı olarak sonuç değişeceğinden, kararlılığı düşüktür. 

R direnç değerleri, devrede R = 1k olabilir bu akımı etkiler D/A için gerilim değeri önemlidir ki zaten op-amp  burada akım değerini absorve edecektir.

Vo = -Vref * (8D3 + 4D2 +2D1 +D0) * 1/16
Tablo 2 4 bitlik R-2R D/A çıkış değerleri


Tablo 2 4 bitlik, ikilik ağırlıklı D/A çeviricinin sayısal veriye ait çıkış gerilim değerlerini göstermektedir




LFP (Low Pass Filter) Mantığı 


RC devresi adı geçen, genelde aktif ve pasif olmak üzere LPF olarak kullanılan şekildeki devre örneklerinden çok fazla var, aktif olanlar gerilim kazancı ile filtre edilmiş analog sinyalin gerilim  kaybını önler hatta yükseltebilir. Ses frekans endüstrisinde bass filtresi olarak adı geçtiği için zamanında çok fazlaca kurduğum bir devre, op-amp ile aktif filtre devresi yapılabiliyor  kondasatör seçimi ile giriş sinyalinin filtre edilecek frekansı belirlenebiliyor.

fc = 1/(2.π.R.C)  


 

LPF ile dijital sinyalin analog benzetimi sağlanabilir aşağıdaki şekilde bulunan STM32 den alınmış PWM sinyalin duty oranına göre LPF devresi ekleyerek analog gerilim benzetimi blog şeması gösteriliyor.



İşlemcilerin dijital pinlerinden doğrudan Analog sinyal çıkışı alamayız. PWM çıkışları ise duty cycle değeri ayarlanmış dijital bir sinyaldir ki bu sinyallerde LPF (Low Pass Filter) Devreleri ile analog sinyal değerleri PWM sinyalin duty ayarı ile yaklaşık tahmini yapılıyor fakat tahmin yanı sıra analog çıkış sinyali benzetimi için bu filtre devresini kullanmak gerekli sayılabilir.

Tek başına 2-2R Kedi merdiveni devresinden daha az performanslıdır 8bit 2-2R devresinin çıkışına bu devreden koymak yine yanlış olmaz sinyali analog sinyale yaklaştırmamız harmonikleri engeller ve temiz bir çıkış sağlar. 

Harici Donanım "DAC"


Çok popüler ve ucuz bir entegre devre D/A çevirici MC1408 veya eşdeğeri olan DAC0808 ‘dir. MC1408 standart 16 bacaklı DIP paket olarak gelir ve +5V ’luk Vcc ile minimum -5V, maximum -15V ‘luk VEE gerilimi gerektirir. MC1408’de, bir R/2R merdiven tipi D/A çevirici, akım yükseltecinden gelen referans akımını, 8 ikilik ağırlıklı akıma böler. Bipolar transistör anahtarlar (A1-A8), girişlerindeki ikilik bilgiye göre ikilik ağırlıklı akımları çıkış hattına bağlar. En yüksek değerlikli biti taşıyan girişin A1, en düşük değerlikli taşıyan girişin A8 ile gösterilmiştir. MSB ve LSB etiketlendirilmeleri normal etiketlendirilmenin tersinedir. Bu nedenle kullanılacak bir entegrenin veri sayfası dikkatle incelenmelidir. Şekil 19 MC1408’in blok diyagramını, bacak bağlantısını ve tipik uygulamasını göstermektedir.


I2C, SPI Haberleşmeli D/A 
Mcp4725 DAC Modülü



Örneğin yukarıdaki şekilde MCP4725 bulduğum en ucuz entegre, günümüz dolar kuru (15.00)  ile 29.99  (2$) gibi bir fiyatı var ; 12 bit (4096 örnekleme) olması aslında orta düzey işlerde yeterli çıkışta bir RC filtre ile tadından yenmez ve haberleşme protokolü desteklemesi hız olarak da yeterli özellikle SPI 4 mbit hatta 12 mbit'e kadar hız destekler. 

Onun dışında söylemek istediğim, çoğu entegre kedi merdiveni devresi kullanır pahalı olmasına sebep veren şey entegrenin üretim şekli olabilir. İçerisinde bulunan dirençlerin çok az toleranslı olması çıkış sinyalindeki kaybı aza indirmesi ile doğru orantılı olduğu için iyi bir direnç seçilmesi bu kaliteyi etkileyen bir faktördür.

MAX5891 RC filtre çıkışlı block diagramı 


MAX5891 16-Bit, 600Msps Destekleyen yüksek çözünürlük D/A entegresidir şuanda günümüzde 65 $ civarı fiyatı bulunmakta CMOS seviyesinde çalışmaktadır haberleşme olarak paralel port LVDS destekler 


Ucuz Yöntem



74HC595 Shift Register entegresini çoğunuz biliyorsunuz eminim. Bu entegre digital bir sinyali 8 bit çıkışa ayırır. Ve günümüzde fiyatı 1 lira civarında olması çok iyi alternatif, 2 adet 74hc595 ile 16 bit çözünürlüklü R2R yöntemini kullanarak DAC tasarımı yapacağız. Yukarıdaki görsel bu tasarıma ait yüzeysel block şemayı gösteriyor Mikroişlemci olarak Arduino'dan faydanalabiliriz. Stm32 deki gibi fazla kod gürültüsü ile uğraşmadan temiz bir kod ile amacımız 16 bit çözünürlüklü sinyal oluşturmak. Aynı devre ile 4, 8, 12 ve 16 bit D/A için deneyler yapmak istiyorum. 

Aşağıda D/A devre şemasının tam halini sizinle paylaştım bu şemayı bread-board üzerinde deneyeceğiz. n = 16 bit için toplamda 32 adet direnç kullandık. Hazır entegrelerden kabaca farkı giriş sinyalinin  clock sinyali ile alıyor bu clock sinyalinin maksimum fc frekansını hesaplayıp, hali hazırda devrenin gerçek değerlerini ve toleranslarını hesaba katarak çıkıştaki gerilim kaybını ölçeceğiz. Pahalı olan 16 bit entegre ile sinyal farkını göreceğiz.. MAX5891 Entegresi ile çıkış özelliklerini teorik olarak karşılaştıracağım.




Arduino'ya 2^16 / 96 =  682 adımlı bir kod yazdım bu kod 16 bitlik D/A için 682 adımlık analog gerilim sinyali üretecek proteus'daki ideal opamp -15, +15 besleme gerilimi değerine ayarlandı op-amp besleme geriliminde evirmeyen girişini yükseltiği için ;
V+ref = 15 volt
V-ref = -15 volt
n = 16 bit
Q = (V+ref - V-ref ) / 2^n = (15-(-15))/65536 
Q =  0.000457763672
Burada dikkat etmemiz gereken nokta 65536 adımın 682 adıma düşmesi yazılım ile adım aralığını düşürdüğümüzden dolayı her bir Q değeri aralığı yukardaki grafiğimize göre 0.04394 volt olmalı 

Dönüştürülmüş analog sinyalden kesit
Yukarıdaki (Volt-Time) sinyal grafiğine baktığımda müthiş hissetim adeta yarım dolarlık bir D/A entegresi tasarlamış oldum. İşlemini kabaca anlatabilirim aslında grafik testere uçlu bir sinyali gösteriyor olsa da aklınıza gelebilecek her türlü analog sinyalini üretebiliriz. Ses sinyali de buna dahil olsa da kaliteli bir ses frekansı alabilmemiz için bazı detaylara takılmak gerek PCMXX entegrelerinin neden pahalı olduklarına da hiç şaşmamalı.
Dönüştürülmüş analog sinyal çıktısı







Biraz amatör bir iş yapmış da olsam 16 bit D/A elde etmiş oldum yüksek sıcaklıklarda ve düşük sıcaklıklarda bu devreyi pratikte deneyerek kontrol etmek istiyorum. 

0 ile 65536/96 aralığında decimal dijital sayının 0 - (-15) volt aralığındaki dönüştürülmüş gerilim grafiğini clock, data, latch sinyali ile birlikte göstermektedir. Bir üstteki sinyal grafiği zoomlanmış hali olanı gösteriyor bariz farkla dijital kodun shift register aracılığı ile her latch ediltikten sonra sinyalin referans sinyale bölünmüş oranını aynı şekilde gösteriyor. Kabaca 0, -15 volt gerilimi  65536/96 oranında bölmektedir.

Bir problem var !

f = 1/T 
fc = 16Mhz = 62.5 ns

Ts - Ti = 249.143 - 249.368 
Ts- Ti = 0.225 ms 

=  225us 
f = 1/225us  = 4.444 Khz

Hesapladığımız zaman 62.5 ns mikroişlemcinin (Arduino UNO Atmega 328) saat darbe frekansı yani zaman aşımı süresi. 
 
Proteus similasyon aracında (ideal ortam) Arduino ile 74hc595 için haberleşme hızını 225 us zaman aşımı süresi ölçtüm. Ölü zaman aralığı olduğundan; çıkıştaki analog sinyal bu süre boyunca bir önceki durumu ile değerini çıkışta korur zaten arada op-amp devresi buffer olarak çalıştığı için sürekli olan sinyalde kopmalar olmaz register bir sonraki data için durumunu koruyor. 
Mesele şu ki 4.44 Khz Bant genişliğimiz bulunmakta bir ses örneklemesi 44.1 Khz bant genişliğinde çalışır yani bu değerin 10 katı. 74hc595 ile haberleşme süresi Arduino'nun çıkış zaman aralığı ile bağlantılıdır. Yazılımda shiftOut fonksiyonunu kullandık Arduino kütüphanesinin hazır bir fonksiyonu olmasından dolayı aşımını değiştirmek için kodu yeniden düzeltmemiz gerekiyor. Bildiğim kadarıyla ardunio dijital pin çıkışı frekansı 8 Mhz kadar destekleyebilir. 16 Bit ses sinyali işlemek için bir yöntem olması gerek yoksa bir işe yaramaz tabiki en azından ses üzerinden örnek verdiysem de sinyalin 4.4 Khz ile sınırlı kalmaması gerek.

74HC'nin datasheet incelemesinde giriş ile çıkış arasındaki zaman aşımı 1us yani 1 Mhz hızına kadar çalışabiliyor.  Buda bir ses frekansı işlemek için çok çok yeterli. Hatta bir video sinyali bile işleyebiliriz.!!

Çözüm: SPI Donanımı ile haberleşmek

Diğer çoğu d/a entegrelerinde olduğu gibi donanım yüksek frekansta haberleştiği için bant genişliği yeterli. 

Arduino forum sayfasında 74x595 için digitalWrite komutu haricinde maksimum 32 Khz civarı bir hıza ulaşıldığı tartışılmış, bu fonksiyon komutunun dışında bir kod ile sağlanmış shiftOut fonksiyonu da aynı şekilde digitalWrite fonksiyonunu kullanıyor buda hızı sınırlıyor.

f = 1/T 

Ts - Ti = 77.28520 - 77.28280
Ts- Ti = 0.0024 ms 

=  2.4us 
f = 1/2.4us  = 450 Khz

#digitalwrite speed
t = 4.64us 

Sonunda SPI ile 450 Khz haberleşme hızına ulaştım. Müthişşş!!!
16bit Latch Clock, Data dijital port çıkış grafiği

Grafikte en üstteki latch sinyali dijitalWrite komutu yavaş olduğundan spi data gönderme işlemi bittiği halde zaman kaybı yaratıyor az da değil 4.64us o yüzden Arduino kodu dışında farklı bir yöntemle latch yapmamız gerekiyor. Belki Ardinonun frameworkü bu bakımdan tercih edilmeyebilir.. 

Stm32 için özür dileyebilirim bir kaç sigorta ayarı, spi ile sağlam bir iş çıkartabilirmişiz. Cortex M ile awr ailesi tartışmamalı.. :)

  digitalWrite(pin_latch, LOW);
  SPI.transfer16(val); 
  digitalWrite(pin_latch, HIGH);


Final: Çıkışa LPF Ekleyelim 

Sonuca ulaştığımıza göre gözle göremeyecek kadar küçük bir sinyal olmasına karşın eğer çıkış frekansımız belli ise de çıkışta bir LPF kullanabiliriz neden olmasın. Genelde aktif LPF kulladığımdan bu projede de bir opamp olmasından dolayı sadece 1 kondasatör bu işi çözebilir mi ? evet bence çözebilir.. 

        
Aktif LPF Op-amp 


1/2πR37C1 frekans hesabı ile 500 Hz altıdaki sinyale 47nF kondasatör ekleyelim..




Low Pass Filter eklenmiş sinyal görüntüsü

Bakın bakın sinyalin analog sinyale ne kadar yakınlaştığına bakın ve böylelikle teorik olarak projeyi tamamladık bir sonraki yazıda bu projenin deneyini yapacağım elimdeki osiloskop bu iş için gayet yeterli diyede düşünüyorum.. Teşekkürler.




  • Arduino kodunu aşağıda bulabilirsiniz.
#include <SPI.h>
#define sbi(port, bit) (port) |= (1 << (bit))
#define cbi(port, bit) (port) &= ~(1 << (bit))

int pin_latch = 10,
    pin_clock = 13,
    pin_data  = 11;

void setup() {
  // put your setup code here, to run once:
  pinMode(pin_latch ,OUTPUT);
  pinMode(pin_clock, OUTPUT);
  pinMode(pin_data, OUTPUT);
  
  //SPI.setClockDivider(SPI_CLOCK_DIV2);
  SPI.setBitOrder(MSBFIRST);
  SPI.setDataMode(SPI_MODE0);
  SPI.begin();

  
}

void loop() {
  // put your main code here, to run repeatedly:
  for(int i = 0; i< 65536; i=i+1){
    shift_out(i);
    delay(1);
  }
}

void shift_out(int val){
   /*digitalWrite(pin_latch, LOW);
   shiftOut(pin_data, pin_clock, MSBFIRST, val>>8);
   shiftOut(pin_data, pin_clock, MSBFIRST, val);
   digitalWrite(pin_latch, HIGH);*/


  //digitalWrite(pin_latch, LOW);
  cbi(PORTB, 2);
  SPI.transfer16(val); 
  sbi(PORTB, 2);
  //digitalWrite(pin_latch, HIGH);
   
}

Deney yazım yakında..


Referanslar

https://www.youtube.com/watch?v=gYmY3izes8g
http://ee.tek.firat.edu.tr/sites/ee.tek.firat.edu.tr/files/LJ1B5_%20ADC_DAC_2.pdf


7 Eylül 2014 Pazar

Bilim, Beyinden Beyine Sözlü Mesaj Yollamayı Başardı

Bilim, Beyinden Beyine Sözlü Mesaj Yollamayı BaşardıDünyanın en popüler efsanelerinden olan telepati yeteneği, bilim sayesinde bir adım daha gerçeğe yaklaştı.ABD ve İsrail'den araştırmacı bilim insanları, iki insan beyni arasında doğrudan veri aktarılmasını gerçekleştirdi.

Geleneksel olarak yapılan yöntemlerin aksine, (sözlü ya da yazılı kullanılmayan) veri alışverişi aralarında 5000 km mesafe bulunan denekler arasında gerçekleştirildi. 28 ve50 yaş aralığında olan 4 denekten de başarılı sonuçlar alan yöntem, deneklerin kafa derisine yerleştirilen elektrot sayesinde mesajın algılanması ile başlıyor. 5000 kilometreötedeki alıcıya internet üzerinden ulaştırılan veri,elektromanyetik indüksiyon yöntemi ile mesajı alacak kişinin beynine işleniyor.

Hiçbir şekilde cerrahi müdahele bulunulmayan bu yöntem, internetin, insanoğlunun sanki bir sinir uzantısıymış gibi işlev görmesine ön ayak oldu. Kişisel iletişim açısından baktığımızda devrim yaratacak bir araştırma olduğunu düşündüğümüz bu yöntemin, birbirimizi daha iyi anlamamıza ve farklılıklarımızı kabullenmemize vesile olmasını ümit ediyoruz. (gidipte bilim insanına "acaba şu kız hoşlanıyor mu benden, bi öğrensek ya" tarzında cümleler kurup bu yöntemi kullanmak aklınıza şimdiden gelmeye başladı, değil mi? bizde işte böyle çalışıyor mekanizma)

30 Mayıs 2014 Cuma

Gizli Dv kameralı kol saatini sizler için inceledik..

Merhaba arkadaşlar bu cihazı iki gün önce aldım araştırdım ve hiçbir yerde bu saatler adına bir paylaşım yok birazdan sizlere tüm detaylarıyla birlikte bu cihazların özelliklerini artılarını eksilerini inceleyeceğiz.

Ayrıntılı Özellikler:
Cihazı şöyle bir tanıtalım günümüze uyarlanmış basit ve şık dizaynı ile normal bir saatden tamamen farksız kol saati.
Video , fotoğraf ve ses kayıt yapabiliyor üzerinde iki adet adet tuş ve birde mikrofon çıkışı mevcut.
içine özel olarak yerleştirilmiş bir çip ve dv kamera ile çekim yapıyor saatin en önemli özelliği video kaydından bağımsız olması. yani normal pilli saat ile kamera fonsiyonu ayrı olarak tasarlanmış kamera çipine birşey olsa dahi saat özelliği halen çalışır durumda.


• Video formatı: AVI
• Video Code: M-JPEG
• Video çözünürlüğü: 640x480
• Fotoğraf çözünürlüğü: 1280x960
• Video oynatım hızı: 30fps
• Bellek: 8GB (Dahili)
• Resim formatı: JPG
• Görüntü oranı: 4:3
• Pil kapasitesi: 280mAh
• Çalışma süresi: 115 dakika
• Gerilim Şarj: DC-5V
• Arayüz tipi: Mini 4Pin USB
• Depolama desteği: NAND flaş
• Pil tipi: Yüksek kapasiteli lityum polimer
• Desteklenen sistemler: Windows me/2000/xp/2003/vista; Linux ve üzeri


Paket içeriği:

• 1x Çok fonksiyonlu Kol Saati
• 1x USB kablosu
• 1x Kullanım kılavuzu














Bu cihazın +ları 

Açıkcası kalitesi bu kadar minik bir cihaz için harika diyelibilirim ama yanlış anlaşılmasın bazı arkadaşlara çok kötü gelebilir nedeni belki ellerinde profosyonel kameralar vardır ama benim bu cihazınb kalitesini beğenmemin tek sebebi bu cihazın çok minik oluşudur ani bir elektrikçi olarak bu kadar küçük cihazın böyle kalitede çekmesi çok güzel yani piyasada satılan samsung replika malzemelerin kameralarından daha iyi diyebilirim.
Ses kalitesi olduklça iyi ama profosyonel cihazlarla karşılaştırılmaz bile , dediğim gibi ses kalitesi beni tatmin etti ama sizleri ediyor mu bilemiyorum. Ayrıca ses kayıt olarak basit bir somun tasarlanmış üzerinde minik bir delik bulunan bu somunu çıkartıp takarak ses tonunu değiştirebilirsiniz aşağıda video , fotoğraf ve ses kaydını ekledim tamamen cihaz tarafından çekilmiş medialardır. Ses kayıt yaparken sizler için bu somunu ilk başlarda takılı iken ortalarında çıkardım ve en sonunda tekrar taktım. Buda +bir yön.
Ve bu cihazın en önemli yanı kullanımı kolay ve oldukça gizli olmasıdır öyleki bir kimseyi bu saat ile çektiğinizde kesinlikle anlamaz çünki çekim esnasında hiçbir ışık yanmamakta
Saatin en önemli özeliği de pilinin yüksek kapasitede olması yani saat 280 mah ve bu sebeple en az 2 3 saat kayıt yapabilirsiniz.
Satin içinde herhangi bir nandflash yok yaniğ yerleştirilmiş hafıza yok tamamen piyasada satılan microsd kart yerleştirilmiş fotoğraflarda da görülüyor zaten bu özelliği sayesinde cihazınız uzun süre suda kalsa bile hafızaya hiçbirşey olmaz.

Bu cihazın -leri.
Kesinlikle su geçirir öyle yada böyle cihazın altında bir lastik var ve usb giriş somunundada lastik var ama mikrofon somununda delik var.
Cihaz taşıma sırasında yada kullanım esnasında ses kayıdını yapan elektret mikrofonun kayması sonucu mkrofon cihazın içine kayıyor buda size su altında ses kaydı yapıyormuşsunuz gibi his veriyor.
Cihaz bana göre biraz kalın geldi ama gerekli bir kalınlılık değil.  Yani dahada küçükltme imkanları var.
Cihazın usb si piyasaki usb kablolarından tamamen farklı yapıdo o sebeple kaybetmeniz durumda saati şarj edemiyorsunuz.
Cihazın bahsediği gibi donanım olarak hd video kaydı yapmıyor yani yazılımsal olarak yapıyor ama kalite donanım olarak yazıldığı gibi değil buda demek oluyorki bilgisayar ortamında hd olarak açılan görüntünün sadece büyütülmüş 240*320px lik bir görüntü olduğunu görüyorsunuz. Fakat bu sadece video çekerken.
Saat de ilk ses kaydını yaparken açıkcası hayal kırıklığına uğradım, çünki sesi sanki su altında çekmişim gibi bir ton verdi ve sesler anlaşılmıyordu,sebebini cihazın içini açınca anladım mikrofon cihazın içine kaçmış yani saatin kenarında olması gerekirken içinde ortasında biryerde buda sesin boğuk çıkmasına neden oluyordu saati geri takarken mikrofonu yerine otuturdum ve üzerine silikon çektim şimdi daha iyi oldu.
Gizli kameralı kol saati nasıl çalışır. 

Saat elinize ilk geldiğinde nasıl çalıştığını anlayamıyorsunuz çünkü çekim esnasında hiçbir ışık yanmıyor. Peki bu saati nasıl çalıştırabiliriz ?
Üzerinde  kamera mod. tuşu ve on/off tuşu mevcut önce saatin on/off tuşuna basılı tutuyorsunuz o esnada kırmızı ve mavi ledler aynı anda 2 saniye yandıkdan sonra artık sürekli mavi yanmaya başlıyor bu esnada saatiniz açık ve hiçbir işlem yani kaydetme yapılmıyor bu esnada aynı tuşa bir kere basarsanız mevi led ışık yanıp söndükten sonra video kaydı başlıyor. video kaydını bitirmek için yine aynı tuşa basılı tutarsanız video duruyor ve saat kapanıyor.
Fotoğraf çekmek için yukarıdaki gibi cihazı açtıktan sonra yani mavi led ışık sürekli yanmaya devam ederken kamera mod tuşuna bir kere basarsanız bir görüntü alırsınız. Kamera mod tuşuna 2 saniye basılı tıtarsanız bu sefer kırmızı led yanıp sönecektir ve ses kaydı başlayacakdır aynı tuşa bir kere daha basarsanız kayıt duracaktır.
Fotoğraf kalitesi video kalitesi gibi değil o beni pek tatmin etmedi.

Saatin saatini ayarlama.
Saat elinize ulaştığında video saat ayarı tabiki aşağıdaki gibi farklı olacaktır aşağıdaki görüntüler 30.05.2014 tarihinde çekildi.
Öncelikle bilgisayarınıza saati bağladıktan sonra time.txt adı altında dosya olacaktır bu dosyayı nod defteri ile açıp düzenleyin ve saati bilgisayarınızdan çıkarın ve açıp kapatın saat ayarı değişecektir.


























görüntü tam anlamıyla kaliteyi yansıtmamakta


ses kaydını indir dinle..


Esp32 İle TV Tuner Radio Alıcısı

 Yıllar evvel aklıma gelen bir proje rf sinyallere olan merakım giderek artıyor ve şimdiki pcb üretimimde rf antenler konusuna bir tık daha ...