avatar_ete

PIC Basic Ders-05 (Analog Digital Çevirici Kullanımı)

Başlatan ete, 28 Ağustos 2011, 16:11:16


hgungor

Merhaba arkadaşlar
Foruma yeni üye oldum gerçi uzun zamandır ete beyin derslerini okuyup onlardan yararlanıyordum ama ilk defa bir sorunla karşılaştım ilk etapta çözüm bulamadım yardımınızı rica ediyorum.

Yapmak istediğim şey şudur elimdeki load cell (ağırlık sensörü) kullanarak bir tartı yapmak, bu load cell e  bağlayabileceğim bir analog-dijital çevirici var fakat bu çevirici 24 bit ve benim kullanmak istediğim pic 16f628 8 bit bilgiyi kabul ediyor diye biliyorum, şimdi ben bu çeviricinin 24bitlik çıkışını nasıl pice 8 bit  olarak gönderirim ?

Şimdiden herkese teşekkürler

ete

16F628 işlemci 8 bitlik bir işlemci olmasına rağmen Basic ,16 bit bilgi kullanmanı engellemiyor.
24 bitlik bir sayının ilk 8 biti o sayını küsüratıdır. Bu durumda 24 bitlik sayıyı 2 parçaya ayırabilirsen sondaki 2 byte 16 bit edecek ilk 8 biti ise işleme almayacaksın. PBP dabaşka yolu yok bu işin. Yok derken bir yolu daha var aslında.
Şayet 18F serisi işlemci kullanabilirsen onda Long değişkeni (32 bit) tanımlayabilir ve bu değişkene 24 bitlik değeri verebilirsin.

Ete

hgungor

Teşekkürler yanıt için ete bey
18f2550 entegreyi kullanmak sanırım daha kolay olacak, bu 24bitin nasıl ayırabileceğimi bilmiyorum, dediğiniz gibi 16biti alınabilirse 628 entegresi ilede olacak gibi gözüküyor. Bu bitleri ayırma işi ile ilgili bir bilginiz varsa o şekildede deneme yapmak isterim.

ete

Genelde hangi bilgi olursa olsun 8 bitlik dilimler haline getirilebilir.
Nasıl getirileceği ise tamamen 24 bitlik ADC den okuma şeklinize bağlı.
24 bit peş peşe gelen bir bit topluluğu var ise bunu 8 bit+8bit+8bit şeklinde okumak mümkün.
Böylece elinizde 3 adet 8 bitlik veri olur ve siz istedşğinizi birleştirip 16 bit haline getirebilirsiniz.

Ete

hgungor

sanırım şu şekilde bir deneme yapmam yerinde olacak
gerekli ayarlamalar ile A0 portuna bilgiyi 8 bit alacak şekilde ayarlayıp

ADCIN 0,BILGI1
H:
IF ADCCON0.2=1 THEN H

ADCIN 0,BILGI2
HH:
IF ADCCON0.2=1 THEN HH

ADCIN 0,BILGI3
HHH:
IF ADCCON0.2=1 THEN HHH

Bu şekilde BILGI1,2,3  değişkenlerine  24bitlik bilgi 8 bit olarak alınabilirmi ?

ete

Bir yanlışın olsa gerek. Ben harici bir adc çeviricisi kullandığını sanıyordum. Burada verdiğin komutlar pic in kendi ADC çeciricisine aitler ve en fazla 10 bitlik bilgi okuyabilirsin oradan.
Ne yaptığını yada yapmaya çalıştığını anlamadım doğrusu.

Ete

hgungor

Doğru haklısınız ete bey aklım bir an için picin kendi çeviricisine gitti.Dediğiniz gibi harici bir çevirici kullanıyorum, peki bunun çıkışını ben pic teki 8 bitlik üç değişkene nasıl alacağım ?

ete

Önce onun çıkışını nasıl okuyacaksın onu bilmek lazım. harici ADC entegresi ile pic bir şekilde haberleşebilmeli. data sheetinde yazıyordur. 24 bit lik sonuç tek seferde alınmıyordur herhalde. 3x8 bit şeklinde yollanıyor ise o zaman sorun yok dediğim gibi sende 3 x 8 bi olarak alır işlem yaparsın. Bana kalırsa o entegrenin data sheetini incele çözüm orada.

Ete

hgungor

Dediğiniz gibi ete bey, entegrenin datasheet ini inceledim, entegrenin clock girişine verilen her kare dalgada bir bit çıkış veriyor.Bunun üzerine biraz çalışıp deneme yapayım sonuçları burada paylaşırım.

Çok teşekkürler

dismissed_fear

merhabalar
daha önceki derslerden faydalanarak pwm kullanarak tristör sürdüm şimdide tristörde kullandığım soğutucu için sıcaklığa göre on-off çalışacak fan devresi yapmak istiyorum ama bi türlü çözemedim mantığını bitler hesaplar vs birbirine girdi çorba oldu herşey. malzeme olarak 16f628a ile ds18s20 kullanıyorum malzeme seçimimde değişikliğe gitmeme gerek var mı?

ete

Nerede takıldın anlaşılmıyor. Yapman gereken sıcaklığı okuyup şu sıcaklıkta fanı çalıştır, şu sıcaklıkta durdur şeklinde bir kod dizisi vermen. Unutma hiç bir zaman 1 derecelik farklarla çalışma. Mümkünse çalışma sıcaklığı ile durma sıcaklığı arasında en az 5 derece fark olsun.
Ete





dismissed_fear

sıcaklık konusunda sıkıntı yok 50'nin üstünde çalış altında dur olarak ayarlayacam fakat daha oraya gelemedim yazdığınız örnek programı kopyala-yapıştır yapsam dahi derlerken symbol not previously defined hatası alıyorum neden kaynaklandığını anlayamadım

ete

Bu şekilde bir yere varmak mümkün değil. Hatanın olduğu yeri ve hatayı birebir vermen lazım ki ne olduğunu anlayalım. Açıklamandan kopyaladığın yerde kullanılan değişken adlarının kendi programında tanımlanmadığını sanıyorum.
Programı versen bizde senin yatığın gibi derleyerek hatanın ne olduğunu kolaylıkla anlayabilir çözümünüde gösterebiliriz.

Ete

dismissed_fear

ben anlayamadım ki ne olduğunu anlatayım bu dersi hiç anlamamışım maalesef. adcon ile ilgili hata alıyorum sanıyorum bu picte adcon yok silince hata vermiyor ama program konusunda sıkıntım var sıcaklığı ra0 üzerinden nasıl okuyacağımı anlayamadım bi türlü bende kolaya kaçtım fanları sıcaklığa göre değil pwm sinyalini ürettiğim zaman çalıştırıyorum olmadığında durduruyorum.

Powered by EzPortal