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
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
@ Analyzer
Min 10 mS cok uzun değil mi?
1 mS olsa olcumun sonucu degisir mi?
Kolay Gelsin...
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.
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.
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.
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.
Selam,
Mikro yerine mili yazmışım.m aslında u olacak ;)
Analyzer