Picproje Elektronik Sitesi

DERLEYİCİLER => PIC C => Konuyu başlatan: anafor - 18 Nisan 2004, 20:09:05

Başlık: 16f877 ile a/d çevrimi yapıp bilgisayara göndermek?
Gönderen: anafor - 18 Nisan 2004, 20:09:05
Merhabalar bana ADC çevrimini CCS ile yapmada YARDIM edebilecek varsa lütfen yardım etsin . 16f877 de referans gerilimlerini vcc ve gnd aldım ayrıca A0 DAN OKUMA YAPACAĞIM. benim sormak istediğim okumada 10 bitlik veriyi hangi tip değişkene kopyalamalıyız (int,float...?)
ve aldığımız veriyi mesala (2.325 V ) gibi nasıl printf ile seri porttan bilgisayara yollarım?. :roll:  çok teşekkürler
Başlık: 16f877 ile a/d çevrimi yapıp bilgisayara göndermek?
Gönderen: Analyzer - 18 Nisan 2004, 23:45:07
Selam,

Önce adc kanalını  set_adc_channel( int ch) ile set etmen gerekir.Daha sonra adc portlarını analog'a ayarlaman gerekir.Daha sonra  adc'nin saat frekansını setup_adc(xx) ile ayarlaman gerekir. Min. 10 ms bekleyip ilk okuma işlemini yapabilirsin. v = read_adc(); gibi.. Zaten rs232'yi konfigure ettiysen  printf(); ile değerleri seri porta yollarsın.Her voltaja göre sabit integer bir değer gönderdiği için integer kullanman gerekir. read_adc() prosedürünün prototipinde yazar ;)

Kolay gelsin.

Analyzer
Başlık: 16f877 ile a/d çevrimi yapıp bilgisayara göndermek?
Gönderen: Erol YILMAZ - 18 Nisan 2004, 23:54:04
@ Analyzer
Min 10 mS cok uzun değil mi?
1 mS olsa olcumun sonucu degisir mi?
Kolay Gelsin...
Başlık: 16f877 ile a/d çevrimi yapıp bilgisayara göndermek?
Gönderen: Erkan Gench - 19 Nisan 2004, 00:43:22
877'nin datasheet'inde gerekli zamanı hesaplamak için bir formül vermiş (Tacq=acquisition time) buna göre 50 derecede yaklaşık 20us yeterliymiş. CCS'nin helpinde de 10us yazıyor.

öncelikle kodun başında (başlık dosyasında)
#device adc=10
şeklinde bir tanımlama lazım bu adc'yi 10 bit olarak okumak için.

read_adc() ile aldığın verileri en azında 16 bitlik bir değişkene atamalısın (mesela int16)

vdd'yi referans aldığına göre 5/1024=0.0048828 eder yani read_adc() ile okuduğun sayı '1' ise girişteki gerilim 0.0048828Volttur. eğer '1024' ise 5 volttur. buna göre giriş gerilimini hesaplaman lazım.
Başlık: 16f877 ile a/d çevrimi yapıp bilgisayara göndermek?
Gönderen: es-es - 19 Nisan 2004, 09:07:59
Bir ADC çevrim zamanı 13 usn civarı sürüyor. Eğer sadece bir kanaldan ADC okunuyorsa arka arkaya çevrim başlatılabilir. Ama arka arkaya değişik kanallar okunacaksa kanal değiştirdikten sonra  15 usn civarı bir bekletme yapmak gerekiyor.
Başlık: merhaba;
Gönderen: anafor - 19 Nisan 2004, 15:33:58
merhabalar
peki ben float bir değişkeni nasıl printf ile seri porttan yollarım.??(integera çevirmeden)
mesela 12.55 sayısını nasıl ekranda görebilirim.
Başlık: 16f877 ile a/d çevrimi yapıp bilgisayara göndermek?
Gönderen: Erkan Gench - 19 Nisan 2004, 20:45:49
printf("%f",sayi);

şeklinde virgülden sonra ve önce kaç sayı görmek istiyorsan ona göre 1.1 den 9.9' kadar sayılarını kullanabilirsin.
yani virgülden önce iki virgülden sonra üç karakter görmek istiyorsan

printf("%2.3f",sayi);

şeklinde yazmalısın.
Başlık: 16f877 ile a/d çevrimi yapıp bilgisayara göndermek?
Gönderen: Analyzer - 19 Nisan 2004, 22:51:21
Selam,

Mikro yerine mili yazmışım.m aslında u olacak ;)

Analyzer