ADC LOADCELL

Başlatan cenkishan, 18 Mart 2007, 19:36:11

cenkishan

slm arkadaslar daha once adc ile loadcelll okuyan deneyimli biri varmı.adc 7730 ve bir program var onu cozmeye calısıyorum az kaldı cozucemde bazen takılıyorum birilerine danısmam gerekiyor.YARDIM EDECEK VARMI ACEP RECEP yada herkes susacakmı.belki yerdım eden cıkar  :(  :(  :(  :(  :(  :(  :(

Düzeltme: Mesaj içeriği bu bölüme daha uygun olduğu için başlık taşınmıştır. Düzenleyen Prof.EleCTroN
Bir bit olsam dolaşsam C de byte byte

Klein

derdini söylemezsen kimse yardım etmez.

OG

cenkishan

Söylediğim gibi özelden yazmana gerek yok, arkadaşımız derdini açık söyle demiş ama konuyu burada daha da açmak yerine özelden devam ettiriyorsun.
FORUMU İLGİLENDİREN KONULARA ÖM İLE CEVAP VERİLMEZ.

cenkishan

bukadar msj trafiginin ardından işallah cozumu buluruz.arkadaslar ad7730 ile terazi programi(asm)ile yazmaya basladım.gerekli olan baglantıları yaptım.CLK unu referansını voltajlarını örnek bir adc baglantısına gore bagladım.ŞİMDİ elimdeki programda ilk önce adcye yazılmıs
      MOVWF   BUFF
      MOVLW   08H
      MOVWF   BIRL
ADC_WR_LP
      RLF   BUFF,1
      BTFSC   STATUS,C
      BSF   PORTA,ADC_DIN
      BTFSS   STATUS,C
      BCF   PORTA,ADC_DIN
      BSF   PORTA,ADC_CLK
      BCF   PORTA,ADC_CLK
      DECFSZ   BIRL,1
      GOTO   ADC_WR_LP
   ;   CLRWDT
      RETURN
SONRA
ADC_RD
      CLRF   BUFF
      MOVLW   08H
      MOVWF   BIRL
ADC_RD_LP
      BSF   PORTA,ADC_CLK
      BTFSC   PORTA,ADC_DOU
      BSF   STATUS,C
      BTFSS   PORTA,ADC_DOU
      BCF   STATUS,C
      RLF   BUFF,1
      BCF   PORTA,ADC_CLK
      DECFSZ   BIRL,1
      GOTO   ADC_RD_LP
   ;   CLRWDT
      RETURN
ADC okunmus sonra hassalık ayarı var sonrada goruntuleme
benim sorum;ADC yi nasıl bir programla okurum bu program 2000 satır kod cat pat birseyler anladım.birisi ornek program veya mantıgını adam akıllı anlatsa işi çözerim.bilmem bu sefer anlatabildimmi.daha once hiç adc okumadım anladıgım kadarıyla ref voltajı ile sürekli degisen voltajı karsılastırıyosun(loadcell oldugu için)ve büyükmü küçükmü mantıgı var.ve adc okudugu degeri pic degisen reg registerlerine atıyor. su bilgileri toparlayıp anlatcak biri lazım. :?:   :?:   :?:
Bir bit olsam dolaşsam C de byte byte

ground

Burası yardımlaşma grubu..

Piyasadaki projelere zorunlu danışmanlık yapan bir yer değil @cenkishan..

Kimse size yardım etmeye de mecbur değil..

Üslubumuza özen gösterelim..

Gelelim sorunuzla alakalı bilmeniz gerekenlere..

Nedir bu ADC? Bu başlıktan başlayın öğrenmeye..
https://www.picproje.org/index.php/topic,11983

https://www.picproje.org/main/modules.php?name=Forums&file=search

Buraya adc yazarak aratın.. Karşınıza gelecek olan 441 sonuç tüm dertlerinize derman olacaktır..

Bir öneri..

Öncelikle pic in adc pinleriyle çalışmaya başlayın.. ADC  kavramını anladıktan sonra 24-Bit lik Delta Sigma ADC lere geçisi yapabilirsiniz.. Okuma aynı değil tabiki birinde direk analog değer okuyacaksınız diğerinde SPI dan bilgi alacaksınız..

http://www.piclist.com/techref/microchip/spi-ad7730-tk.htm

Ama öncelikle ADC  nedir ne değildir bir bakın..

İyi Çalışmalar..
⌒╮'╭⌒╮⌒╮.
╱◥██◣                  
| 田︱田田|              
╬╬╬╬╬╬╬╬╬

Picproje - Sözde değil özde paylaşım..

cenkishan

slm sevgili OG
;Burası yardımlaşma grubu..
Piyasadaki projelere zorunlu danışmanlık yapan bir yer değil @cenkishan..
Kimse size yardım etmeye de mecbur değil..
Üslubumuza özen gösterelim.;
demişsin  bu bir Piyasadaki proje değil sadece kendi merakım..ogrenmek istedigim için arastırıyorum benim hiç oyle bir niyetim olmadı olmaz.ben baskasının yaptıgı seyi asla kopyalamam.kopyalarsam benim olmaz. sadece adc okuma için degisik mantıklar arastırıyorum.bu sitede herkes birbirine kardes gibi davrandıgı için biraz uslubum degismis olabilir.AFFOLA
yol gosterdigin için sagol.
Bir bit olsam dolaşsam C de byte byte

ground

Tabiki kardeşiz sadece üslubumuza dikkat edelim..

Verdiğim sadece bir örnekti..

Ana fikir üslup.. Ne demişler tatlı dil yılanı deliğinden çıkarır.

İyi Çalışmalar..
⌒╮'╭⌒╮⌒╮.
╱◥██◣                  
| 田︱田田|              
╬╬╬╬╬╬╬╬╬

Picproje - Sözde değil özde paylaşım..

cenkishan

SLM arkadaslar ilk adc mesajımı yazalı uzun zaman oldu ve adc den binary sayilar okuyorum.AIN girişlerine hassas potlar taktım.(loadcell gibi düsünmek zorundayım.)şimdi registerler 8bit old gore(aslında 24bit adc oteki bitler cok geziyor ondan stabil olmuyor gezen bitleri okuyorum.)18 biti nasıl displayde gostericem.ve nasıl agırlık tartarım arkadaslar benim için zor kısım burası daha önce hiç adc okuyup kg tartmadım.benim takıldıgım yerde burasıydı aslında.YARDIM edebilecek varmı sadece nasıl yapıldıgını anlatın yeter bana.
Bir bit olsam dolaşsam C de byte byte

ground

Hassas ölçümlerde bilmen gereken..;

Wheatstone Köprüsü : Wheatstone köprüsü bir direnç köprüsüdür. Genellikle yüksek hassasiyette direnç ölçümünün gerekli olduğu cihazlarda kullanılmaktadır.


Devrenin İki girişi ve iki de çıkışı vardır. Girişler iki paralel kol uçlarından
bağlanmaktadır. Çıkış ise paralel kolların ortasından alınmaktadır.

Tüm dirençler aynı değerde olursa her direncin üzerinde aynı gerilim düşümü olur.. Buda çıkışdaki pinlerde aynı gerilim düşümü demek olur ve potansiyel bir fark olmaz.. Bir akım akmaz. Buna köprünün dengelenmesi denir. Yada rezonans anı..

Eğer bu dirençleri belli bir oranda seçersek.. Bu orana göre ufak değişimler büyük gerilim değişimlerine sebeb olacaktır..

Hassas ölçüm yapacağın zaman şekilde de gördüğün gibi loadcell (Rg) i bağlayacaksın..
⌒╮'╭⌒╮⌒╮.
╱◥██◣                  
| 田︱田田|              
╬╬╬╬╬╬╬╬╬

Picproje - Sözde değil özde paylaşım..

arslan74

Mehaba,

PIC'in ADC si Loadceller için uygun cözünürlükte değil. bu işler için genellikle 24 bit ADC kullanılıyor. Hiçbir PIC de 24 bit ADC yok. O zaman ya harici bir ADC kullanmalısın yada 24 bit ADC ye sahib başka bir firmanın miroişlemcisine gecmelisin. Örneğin Texsas MPS430 işlemcisi gibi hem 16 bit mimariye hemde 24 bit ADC sahib, fiyatıda uygun.

Ayrıca gördüğüm kadarıyla sen Asemblerde kod yaziyorsun. ASM ile böyle bir program yazmakta cok zorlanırsın. Daha yüksek seviyeli bir dile gecmeni tavsye ederim. Örneğin C gibi.

Selamlar.

cenkishan

arslan74 ve ground size teşekkür ederim.bunca işinizin arasında birde bana yardım ediyosunuz.sagolun ama sorunumu pek anlatımıyorum herhalde.sizide sıkmak istemiyorum.
ground dedigi
loadcell iç yapısını en ince ayrıntısını ve opamplarla sinyali nasıl yukseltebilecegimi biliyorum.arslan74 dedigi adcmide secmiştim 24bit ad7730 datashetinede baktım zaten bu adc nin countlarını okuyorum.ŞİMDİ zurnanın zırt dedigi yer burası;
ben bu 10101111000..... gibi sayıyı nasıl dönüstürücem.registerler 8 bit.nasıl bir yol izlicem.ve nasıl kg tartar hale getircem asm de
beni zorlayan burası yapanlar nasıl yapıyor hocam mantık ne nasıl bir yol izleniyor.bana bu lazım.bu okunan binary sayılar nasıl işlenecek agırlık tartar hale gelecek.düsün düsün ara ara kafayı adc ile yicem.zaten insanın basına ne gelirse ya MERAKTAN yada BUMERANKTAN gelir.
Bir bit olsam dolaşsam C de byte byte

Klein

eğer c ile yazıyorsan biraz anlatmaya çalışayım.

önce low, mid  ve high byte olarak 3 sefetde aldığın sayıları tek bir sayı haline getirmeliyiz. bunun için long int tipinde bir değişkene ihtiyacımız var.

örn:
unsigned long int  adrawvalue;

adrawvalue= (adhival*65536)+(admidval*256)+(adloval);

not: ( çarpma kullanmak istemez isen  shift komutları ile yapabilirsin. ancak eğer çarptığımız değer 2 nin katları ise compiler zaten aynı kodu üretecektir)

şimdi elimizde  işlenmemiş AD değeri var.

istersek ve ADC miz biraz hızlı ise

adfilteredval= (adfilteredval+adrawvalue)/2 veya
adfilteredval= adfilteredval*0.8 + adrawvalue*0.2
gibi fonksiyonlarla filtre edebiliriz.

bu aşamadan sonra ,öncelikle  offset değerimizi bulmalıyız. Loadcell de hiç yük yokken ADC den okuduğumuz değer offset değeridir.  daha sonra çarpan değerini bulmalıyız. Loadcell'i maximum yük ile yükleyip ADC den okuduğumuz değeri de biryere kaydettikten sonra çarpanımızı hesaplayabiliriz
örn max yükümüz 40Kg 40000gr.

çarpan=maxyük/(adcmaxval-adcoffset);

son olarak da filtre edilmiş ADC değerimizin kaç kilogram gösterdiğini hesaplayabiliriz.

kgvalue=(adfilterval-adoffset)*çarpan; gibi basitçe hesaplayabilirsin.

tabi buradaki değişkenler float olur ise daha doğru sonuçlar alırsın.

cenkishan

EYVALLAH klein kardesim sagol ama C dilinden cok az anlıyorum.İLGİNİZ için cok teşekkür ederim.daha yeni yeni ogreniyorum.(led yakıp sondurme gibi) bana assembler dilinde yazmam lazım ornegi olan yoksa bir kac hafta tırmalıcam gibi.yaptıgım zamanda foruma hemen koyucam.baslkası zorluk cekmesin diye.EYVALLAH kardesler sagolun.KLEİN kardes sen hangi C derleyiciyi kullanıyorsun.c18 saddece (18 ailesi için)studentmi.CCS  mplab 7.40da sorunlar cıkıyo.hep hata hep hata varmı bunun sorunsuz sürümü.
Bir bit olsam dolaşsam C de byte byte

ground

Picproje de CCS ile ilgili birçok anlatım (anasayfa makaleler) ve program ile ilgilide birçok download bulabilirsin..

Picproje Arama
https://www.picproje.org/main/modules.php?name=Forums&file=search

Burada CCS le yapılmış bir kod örneği bulunuyor.
http://www.ccsinfo.com/forum/viewtopic.php?t=28801&highlight=ad7730

Böyle bir işi ASM ye bırakma :) Direk assemblera Delta sigma adc ile başladın sanırım ;)

İyi Çalışmalar.
⌒╮'╭⌒╮⌒╮.
╱◥██◣                  
| 田︱田田|              
╬╬╬╬╬╬╬╬╬

Picproje - Sözde değil özde paylaşım..

CoşkuN

Delta-sigma ADC demişken,AD7738 kullanan oldu mu acaba?