4 Kanal Voltmetre Yardım!

Başlatan karrizma77, 09 Mayıs 2015, 12:25:08

karrizma77

18F452 ile 4 kanal bir voltmetre yapmak istedim ve basitçe kodları yazdım.referans gerilimini ölçmekte bir sıkıntı yaşamıyorum.ama dışardan kaynak bağladığımda 5 volttan fazlasını ölçemiyorum.yanlış bilmiyorsam zaten pic'e 5 volttan fazla gerilim verilmemeli.
devre şu şekilde:

şimdi benim sorum şu bir güç kaynağının yada basitçe bir pilin gerilimini ölçmek için ne yapmam gerekiyor?

ete

DEFINE ADC_BITS 11
şeklinde bir satırın var programda. Bu satır ADC okuma işinde 11 bit kullanılacağını söylüyor. Pic işlemcisi 10 bit ADC okuyabilir.
Bu nedenle bu satır yerine;
DEFINE ADC_BITS 10 yazman gerekiyor.

İkincisi ;
kanal1=(sonuc1*/5000)>>2 şeklinde bir hesap maksimum voltaj girişinde(5V) 4995 gibi bir rakam hesaplar.
Bunun yerine şöyle bir hesap yapmalısın.
Max okunan değer 1023 Kaç volt için 5000 mv için  ohalde sabit çarpanım ,(5000/1023)=4,887585533 bunu 256 ile çarparak (*/ ) çarpanı kullanabilirz. 1251,22 bunu 12513  kabul edip çıkan sonucu 10'a bölersem hesap doğru çıkacaktır
O halde formü;

kanal1=(sonuc1*/12513)/10   şeklinde kullanıllmalıdır.
Buraya kadar yapılanlar sana 5V luk girişi doğru biçimde mv olarak göstermeye yönelik idi. Ama ben 30V girip ölçecek isem ne yapmalıyım?

Birincisi Pic'e 5V dan fazlası verilemeyeceğine göre benim giriş voltajımın olası maksimum değerini tespit ederim. Bu şimdilik 30,5 V olsun. Yani 30,5 V dan daha fazla girmeyeceğimi varsayıyorum.
Şimdi pic Analog girişine bir gerilim bölücü yapıp 30,5V geldiğinde Analog pine 5V gelmesini sağlayacağız.
30V dan (yada Şemandaki potun orta ucuna 5k1 değerinde seri bir direnç bağla. Direncin diğer ucunu 1K ile GND ye bağla. Bu dirençler %1 toleranslı olmalıdır. İki direncin birleştiği noktayı alıp pic analog girişine bağla. İşte sana gerilim bölücü. Potun üst ucundaki 5V (power) kaynağını sil oraya 30,5V ver .Bu durumda pot değeri maksimuma gelince pic in analog girişine 5V tatbik edilmiş olacaktır. Bunlar donanım ayarlamalarıdır. Şmdi programa bakalım.
Maksimum voltajım 30,5V ve buna karşılık okuyacağım değer 1023 olacaktır. O halde sabit çarpan hesabım şöyle olmalı,
30500mv/1023 =7633, o halde formül,
kanal1=(sonuc1*/7633) şeklinde uygulanacaktır.
Bu şekildeki bir hesaptan sonra voltaj göstermeyide şöyle yapsan daha güzel olurdu.

LCDOUT $fe,$80,dec2 kanal1/1000,",",dec3 kanal1//1000,"V"
böylece ekran görünümü 30,000 V şeklinde olabilirdi.
Diğer kanallarıda sen yaparsın artık.

Ete


karrizma77

Çok teşekkür ederim hocam iyi ki varsınız sayenizde pic basic pro öğreniyorum.

karrizma77

dediğiniz şekilde düzenledim ve son bir şey sormak istiyorum:

devreye 4 led eklemek istiyorum bu ledler ise analog girişlerdeki voltaja göre yanacak(parlaklığı azalıp artmalı) şekilde nasıl yapabilirim?


ete

İki şekilde led ilavesi yapılabilir. Her bir pot dan yine bir gerilim bölücü yardımı ile maksimum voltajda tam led voltajını verecek kadar bir gerilim bölme yapılır ve lede verilirse maksimum voltajda led en parlak minimum voltajda ise sönük olarak çalışır.

İkincisi ledlere okunan voltaja uygun bir PWM sinyali uygulanabilir. Ama bunu senin yapabileceğini pek sanmıyorum.
Tek yada 2 tane led olsa pic in donansımsal PWM çıkışlarını kullanıp yapabilirdin ama bu işlemcide 2 tane PWM çıkışı var. Bu durumda 4 adet PWM çıkışını yazılımla yaratmak lazım gelir ki bir araba kod yazmaklazım bunun için hiç bulaşma derim.

Ete

karrizma77

#5
PWM PORTB.7,127,100 ' Send a 50% duty cycle PWM signal out Pin7 for 100 cycles

diye örnek bir kod buldum ama rakamları neye göre yazmak gerekiyor?

ete

Bu komut işine yarar ancak sürekliliği yoktur. Kullanım şekli yanındaki açıklamada yazıyor ama galiba İngilizcen yok. Ben açıklayayım  ,
PWM Pin , Duty , sinyal_adedi
Pin sinyalin çıkarılacağı pini belirliyor. Duty , 0 ile 255 arasında değer alabiliyor ve bu değere bağlı olarak %0-%100 arasında duty üretiyor. Sinyal adedi ise o sinyaln kaç defa tekrarlanacağını belirliyor.
PORTB.7,127,100 örneğine göre konuşursak,
PORTB.7 den  %50 duty oranına sahip bir PWMsinyalini 100 defa tekrarlayacak nir komut örneğidir.
Tekrar adedi burada programı bloke etmesi açısından önemlidir. Tekrar adedi bitmeden program oradan ayrılmaz.
ADC den okunan bilgiye bağlı olarak Duy üretmek istersen, okunan değeri 4 e bölmen yeterli olacaktır. Bu sana 0-255 aralığında bir değer verir oda ledine gerekli parlaklığı verecektir.

Ete

Powered by EzPortal