avatar_ete

Dokunmatik Buton Kontrolü (CVD system)

Başlatan ete, 04 Eylül 2011, 10:26:39

ete

I2C haberleşmesi her nedense eepromlarla bağdaştırılmış. Her kes te genelde onlara ait bir haberleşme gibi düşünüyor.
Halbuki sistem genel amaçlı geliştirilmiş ve pek çok elemanda kullanılmaktadır.
Haberleşmenin temeli bir CLK bir data hattı kullanarak aynı hat üzerinden birden fazla cihazla haberleşme yapmaya dayanıyor. Bu nedenle ciahzların bir birlerine karışmaması için her bir cihazın bir ID numarası oluyor. Buna komut da CONTROL parametresi diyorlar. KOmut kullanım şekline ve parametrelerine bakarsak,

I2CREAD DataPin,ClockPin,Control,{Address,}[Var{,Var...}]{,Label}
Datapin, okunacak (yada yazılacak) data bilgisinin seri olarak verileceği pini ifade ediyor.
CLK , bildiğimiz clk sinyalinin çıkartılacağı pini ifade ediyor.
Control , dediğim gibi genelde cihaz numarası ( device Nr) olarak kullanılıyor.
Adress ise o cihaz içinde olması muhtemel hangi adresten bilgi okunacağını belirlemektedir.
Bundan gerisi artık kaç bilgi okunacağına (yada yazılacağına) bağlı olarak değişkenlerin yer aldığı bölüm olmaktadır.
Senin kullanmayı amaçladığın dokunma sensöründe cihaz numarası  $1B olarak verilmiş (%00011011)
O halde kullanman gereken CONTROL değeri $1B olacaktır.
Data sheet'i okursan Internal Register Adress lerinden bahsediyor. Bu cihaza gerekirse parametre verebilir ve gerekirse bu cihazdan parametre alabilirsin. Yazma ve okuma için bu adreslerden birini veya bir kaçını kullanman gerekiyor.
Şöyle yakından bakarsak;
Diyelimki sistemi kurdun çalışıyor. Tuşları taramak ve herhangi birisinde dokunma varmı yokmu kontrol etmek istiyorsun.
Şayet I2CREAD,DATApin,CLKpin,$1B,2,[KEYSTATUS] şeklinde bir okuma yaparsan cihazın 2 nolu adresini okumuş oluyorsun.
Bu adreste yer alan bilginin ilk biti (bit0) TOUCH bilgisini vermektedir. Şayet tuşlardan birisine dokunulmuş ise bu bit HIGH olduğu data sheetde belirtilmiş. O halde bu bit şayet HIGH ise tuşlardan birisine dokunuldu demektir. Peki hangisine dokunuldu anlamak için bu sefer de 3 nolu adresteki bilgiyi okumak lazım.
Aslında hem 2 nolu adresi hemde 3 nolu adresi aynı anda okuyabilirdin. Zira ilk adresi 2 verip okuma komutuna 2 ayrı değişken yerleştirirsen otomatik olarak 2 ve 3 nolu adresler okunup ilgili değişkenlerine yerleştirilecektir.
3 nolu register KEY STATUS oalrak verilmiş. İlk 7 bit tuşların dokunam bilgisini vermektedir. Şayet birisine dokunuldu ise o bit HIGH değilse LOW olarak okunacaktır. Buradan hangi tuşa dokunulduğunu kolaylıkla anlayabilirsin.

Benzer şekilde sana lazım olan registerleri adres numarasını vererek okuyabilir. yada peşpeşe registerileri okuyabilirsin.
Elbette data sheet'i dikkatlice okuyarak sana neler lazım onları tespit edip program mantığınıda bunlara göre ayarlaman gerekiyor. Takıldığın yerde yine fikir alışverişi yapabiliriz.

Gelelim Yazma komutuna,  KOmut kullanım şekli I2CWRITE DataPin,ClockPin,Control,{Address,}[Value{,Value...}]{,Label}
şeklinde olup parametreler aynıdır. Aslında I2C haberleşmesinde Adres bilgisinin ilk biti okuma yada yazma bitini ifade etmek üzere 1 yada sıfırdır. Okumada bu bit 1 olur yazmada sıfır olur. Bunu komut ayarlamaktadır. Senin yapamn gereken bir şey yok. Sen adresi verirken gerçek adres bilgisi olarak vereceksin komut onu bir bit sanırım sola kaydırarak başına 1 yada sıfır ekleyecektir.

Bunların dışında söylemem gereken son şey gerek DTA hattına ve Gerekse CLK hattına birer Pullup direnci bağlaman gerektiğidir. Bunu ihmal etme.

Umarım anlaşılmıştır.
Bu entegre ile bende ilgileniyorum. Bizim piyasada bulunuyormudur ?. Bulunuyorsa kaç paradır? ve nereden alınabilir.

Ayrıca çalışmaların sonucunuda yazarsan sevinirim.

Ete

Mastercodex

Hocam açıklamalarınız için çok teşekkür ederim.Çok açıklayıcı ve anlaşılır bir biçimde anlatım yapmışsınız.Verdiğiniz bilgilere göre hemen denemelarimi yapacağım.

Ben bu entegreyi direk Atmel firmasından getirttim.Eğer 1 adet lazımsa bana 3 adet AT42QT1070 SOIC ve 1 adet AT42QT1060 OFN geldi.Bana adres bilgilerinizi atarsanız 1 adet AT42QT1070 ve 1 adet AT42QT1060 QFN size hemen göndereyim.Ben Türkiyede bulunmayan entegreleri ya Çinden toplu olarak yada Farnell den az editli olarak istiyorum.Atmel firması çok iligili bir firma.İstadiğim Sample ürünler 3-4 gün içinde hemen elime geldi.Anlattığınız bilgiler doğrultusunda projemi tamamladığım zaman Farnell in Türkiye Distribütörü olan Yıldırım elektronikten 100 adede yakın sipariş vereceğim.Farnell firmasındaki fiyatı ise şöyle ;

Adet           Fiyat
-------------------------
1  - 4          €1.76 
5  - 9          €1.30 
10  - 24      €1.09 
25  - 99      €1.00 
100  - 499  €0.92 
500+          €0.85 

Tabiki çinden bu ürünü çok daha hesaplı bir şekilde almam daha mantıklı olacaktır.Birde şunu belirtmek isterim daha önceden sizden aldığım bilgiler ve yardımlar doğrıultusunda Kesme projemi bitirdim ve mükemmel bir performasta çalışıyor.Şimdi bu dokunmatik projesinide ona ilave ederek mükemmel bir devre tasarımı olacağına inanıyorum.Bu proje tamamen bittiğindede sizinle paylaşıp sizin fikirlerinizde almak bana büyük bir mutluluk verecektir.

Saygılarımla


Mastercodex® 3D Teknoloji
----------------------------------
http://www.mastercodex.com
info@mastercodex.com

greatgonzo

Arkadaşlar cvd ile ilgili takıldığım bir nokta var.  Sensör pinini değer olarak okuyorum fakat if döngüsünde sorgulamamda sanki içeriği boşmuş gibi işlem yapıyor.  0 ve 5 değerlerine takılmayın orada ne değer olursa olsun led yanıp sönüyor. Sadece belli bir değerden düşük olmasınıda sorgulayarak denedim ve dokunmaya hiç tepki alamadım. Oysaki raw değişkenini (ister direkt olarak, isterse bir değişken üzerinden)port b ye yüklediğimde 10000000 yada 010000000 değerlerini her dokunmada net alıyorum. Ete hocamın örneğindeki sorgulamayı ya anlayamadım yada 16f88 de bir farklılık oluşuyor. Acaba gözünüze takılan bir şey varmıdır ?

İyi çalışmalar...

TUSBAK:
ANSEL.2=1
TRISA.2=0   'dummy pin çıkış
PortA.2=1   'dummy pin high
ADCON0=%01010001 'dummy pin kanalı adc ye bağlı ve şarj ediyor
Pause 10        'şarj için bekliyor
ANSEL.0=0
'PORTA.0=0
TRISA.0=0
TRISA.0=1
ANSEL=%00000001
ADCON0=%01000001 'sensör pini adc kanala bağlı

ADCIN 0,raw     'sensör pininden kondansatör degeri okunuyor.
PAUSE 10


    IF raw<5 and raw>0 THEN
    PORTB.0=0
    ENDIF

TRISA.0=0
ANSEL.0=0
PORTA.0=0
pause 250  'saniyede 4 örnekleme
portb.0=1

GOTO TUSBAK   

ooben

sayın ete hocam günaydın, bir süredir laptop da sorunum vardı baglanamadım ve şu an da bi cafe deyim o yüzden cevap ve teşekkür edemedim özür dilerim. 555'li devre ile dokunmatiği algıladım ve pic 12f675 ile çıkış aldım mantığını da 100u50v bi condansatör ile zaman ayarı yaparak,transistöre çıktım oradan da  push pull  yaparak pic e girdim sonuç güzel oldu. teşekkür ederim sonrada pic i çıkarıp yerine 4013 kullandım ve gayet iyi çok çok teşekkür ederim... saygılar bulent

. Kağan

ETE hocam yeminle süpersin. Teşekkürler.

F®T

bu touch özelliği ile baskı ile değişen kapasite ile ağırlık ölçülebilir mi?mesela 5 kg baskı ile 10 birim elde ediliyorsa 10 kg da 20 birim elde edilebilir gibi. eğer baskıya göre bir değişiklik elde ediliyorsa bu linermi yoksa logaritmik mi?
"Hakk" şerleri hayr eyler Zannetme ki gayr eyler Ârif anı seyreyler Mevlâ görelim neyler Neylerse güzel eyler.

1956

Herkese merhaba.kapasitif hassasiyetli dokunmatik anahtar devresini yapmak için bu siteye üye oldum.İnternette çok araştırdım.çok şema var.benim istediğim www.pcbheaven.com(PIC lı) daki gibi hasassiyeti yüksek olan (üzerinde bunca bahsedilen ve benimde hastası olduğum) bu anahtarı yamak istiyorum.Ama PIC la ilgili yazılım ve donanımım yok pıc sız nasıl yapabilirim.Sizlerden isteğim bu hassasietlikte pıc sız bir şema,normal bir 220v lamba açıp kapatmak için kullanacağım.şimdiden teşekkürler.

ete

Dokunmatik sistemlerin pek çoğu 220V AC den etkilenir. Etkilenir derken ortamda sürekli bir 50 Hz lik parazit dolaşır ve bu insan vücudundan dokunulan cisme geçer. Yada havadan dokunma yüzeylerine geçerek istenmeyen açılmalara sebep olurlar.
Bu nedenle 220VAC yi aç kapa şeklinde kontrol edebilmek için daha profesyonel dokunmatik sensörler kullanmak gerekebilir.
Mesela Aztoteq firmasının IQS127D gibi bir elamanı mikroişlemci olmadan tek butonlu yada dokunma yüzeyli bir sistemi kontrol edebilir. Bunu AC kontrole çevirmek için ilave bazı ekipmanlar kullanmak lazım.Mesela MOC3041 ile bu sistem yapılabilir diye düşünüyorum.

Ete

1956

Hocam aslında aradığım  devrenin kendisini bulabilirsem 220v a sürmek kolay triac veya dediğiniz gibi moc 3xxx li izole devreleri kulanacağımda varsın elekrtikteki 50hz spark frekanslarındanda etkilenmesi önemli değil birşekilde o da halledilir diye düşünüyorum.





Mastercodex

Eğer pic ile dokunmatik yapmayacaksan o zaman hazır capacitive sensor entegreleri mevcut. Mesela TS08P entegresi 8 kanallı dokunmatik kontrolü yapabiliyor.Bu enterenin çıkışınıda uygun şekilde sürersen 220 volt cihazları kontrol edebilirsin. Yada Atmel serisi sensör entegreleri senin işini görebilir. Ben bu sensörleri düşük voltajlarda sorunsuzca kullanıyorum ama 220V sürmek için tabiki ek donanımı kendin belirlemen gerekir. Eğer tek kanal kontrol edeceksen sana tek kanallı hazır kit gönderebilirim.
Mastercodex® 3D Teknoloji
----------------------------------
http://www.mastercodex.com
info@mastercodex.com

1956

Mastercodex arkadaş çok teşekkür ederim cevabın için hemen yazamadım internetle ilgili problem vardı o yüzden hemen yazamdım özür dilerim.
Ben sizden hazır kit değilde QT110 entegresini sormak istiyorum zannedersem hazır bir tousch switch QT113 te aynı
bu çip sizde varmı diye sormak isterim.saygılar

Mastercodex

Merhaba,

Ben Atmel serisi dokunmatik IC lerin 6 kanallısını kullanıyorum. Tek kanallı olarak elimde hazır kit mevcut maalesef.
Mastercodex® 3D Teknoloji
----------------------------------
http://www.mastercodex.com
info@mastercodex.com

1956


. Kağan


1956


Powered by EzPortal