pcbway

16f84 ile alınan voltajı kademeli artırma ve azaltma

Başlatan adigehigebz06, 01 Ekim 2012, 01:52:57

adigehigebz06

Pic 16f84 ile girişten aldığım voltajı display ekranda gösterip çıkışa aynı voltajı vermem gerekiyor. Ayrıca bu voltajı her seferinde artırıp tekrar ekrana ve çıkışa vermeliyim ama bu arttırma buton kontrollü olmalı. ikinci bir butonla ise aynı şekilde azaltmalıyım. Bana yardım eder misiniz?

yazici67

Kısaca voltajı okurken ADC kullanacaksınız. PIC te dahili DAC modülü yok o yüzden aynı voltajı çıkmak için ya PWM yada bir DAC kullanacaksınız. Pek hassas olmasa da R2R ladder denen merdiven DAC yapabilirsiniz. Kullanacağınız displayleri butonları kendiniz devreye göre ayarlayın. Şimdilik bu kadar, iyi çalışmalar...

adigehigebz06

Çok teşekkür ederim. Proteus  ile bir başlayayım bakalım.

pwm.c

bu dediklerin 16F84 ile olmaz...
bikere ADC ve PWM yok ancak harici eklenebilir. hadi bunuda yaptın diyelim, ozaman displeyleri hangi pine, butonları hangi pine, modülleri hangi pine bağlayacaksın. topu topu 13 IO pinin var. nasıl yetireceksin?
bütün bu dediklerimi yapsan bile 16f84 hiç iyi bir tercih değil.
_/\/\/\_ -[ı- -ı>|- -|ı|ı|ı- -ı< -||- -l[]l-

yazici67

Hmm evet F84 ü görmemiştim @pwm.c haklısın bu iş F84 ile olmaz. Arkadaş daha yetenekli uygun  bir PIC kullansın...
@pwm.c yalnız imkansız gibi konuştun, ama imkansız değil :) Bir kaç port çoğullayıcı ile çok şeyler yapılabilir...

adigehigebz06


adigehigebz06



Böyle bir devre çizimi var elimde. Burada pot yerine pic koysam olurmu? Ve nasıl bağlantı yapabilirim.

yazici67

Pot yerine PIC koymakla neyi kasdediyorsunuz? Analog çıkış verip tekrar okumayı mı?

adigehigebz06

Burada potun işlevi voltajı artırıp azaltmak. Benim istediğimde bu işi pic yapsın. 16f877a uygun olurmu acaba?

yazici67

F877 istediğinden  daha fazla özellik içerir. ADC, CCP, PSP, CAN, RS232 haberleşme donanımları ve daha bir sürü özellik vardır. CCP dediğimiz Capture - Compare - PWM oluyor. Bu modülle PWM sinyali üretip RC bir filtre ile analog sinyale/voltaja dönüştürebilirsin. F84 ile de çıkışları ( 8 veya daha fazla ) kullanarak basit bir merdiven DAC yapabilirsiniz. R2R dijital-analog çevirici için vikipedi de bilgi ve şema var:
http://en.wikipedia.org/wiki/Resistor_ladder
Buradan yola çıkarak basit bir DAC yaparsınız, DAC çıkışını devredeki PIC e verip ölçersiniz. Yine bunlardan yola çıkarak istediğiniz gerçek devreyi yaparsınız...

pwm.c

09 Ekim 2012, 08:48:59 #10 Son düzenlenme: 06 Ağustos 2017, 01:19:32 pwm.c
Arakadaşım, ben bişeyler yaptım. şunu bir incele bakalım:



dosyalar:
https://yadi.sk/d/Uf7-MDhF35bpXG

Devrede PIC16F876A kullanıp yazılımı ise CCS C ile yazdım. Displayler ORTAK KATOT.
_/\/\/\_ -[ı- -ı>|- -|ı|ı|ı- -ı< -||- -l[]l-

adigehigebz06

Çok güzel bir devre tam istediğim gibi. Ama iki sorum var :) birincisi bu voltajın çıkışını nerden alacağım. Yani ekranda gördüğüm voltajı dışarı vermem gerekiyor. Bir de ben CCS C bilmiyorum. Bu devreyi kurarken onu nasıl yükleyeceğim pic\'e. Çok teşekkür ederim bu arada ilginiz için :)

yazici67


Voltaj giriş-çıkışı üstteki gibi olacak herhalde. Program atma için HEX uzantılı dosyayı PIC e yüklemeniz gerekir. Elinizde bir programlayıcı devresi hazır yoksa, yapmanız gerekecek. Eğer hiç tecrübeniz ve niyetiniz yoksa tanıdığınız, bu işlerden anlayan bir elektronikçiye vs. yaptırın...

adigehigebz06

Hex uzantılı dosyayı pice yüklemek için gereken cihazı temin edeceğim. Onu biliyorum ama ccs c ile yazdığını söylemiş arkadaş. programlama biliyorum ama o dili tam olarak bilmiyorum. Onu da pic\'e yüklemem gerekiyomu ya da o dosyayı nasıl kullanmalıyım? Onu bilmiyorum ???

pwm.c

13 Ekim 2012, 10:18:03 #14 Son düzenlenme: 06 Kasım 2013, 14:48:40 pwm.c
Alıntı yapılan: adigehigebz06 - 12 Ekim 2012, 22:03:19Hex uzantılı dosyayı pice yüklemek için gereken cihazı temin edeceğim. Onu biliyorum ama ccs c ile yazdığını söylemiş arkadaş. programlama biliyorum ama o dili tam olarak bilmiyorum. Onu da pic\'e yüklemem gerekiyomu ya da o dosyayı nasıl kullanmalıyım? Onu bilmiyorum ???
öncelikle, giriş voltajını RA0 pininden vereceksiniz. oradaki 10k pot test amaçlıdır ve kullanma zorunluluğu yoktur ancak pic potunu korumak için seri 10k direnç bağlamada fayda var.

Çıkış voltajını ise 10uf olan C1 kondansatörü üzerinden alıyorsunuz. buraya bağlı voltmetreyi gösterge amaçlı eklendim. bu arada, çıkış akımıda önemli mi? bize fazla ayrıntı vermediğin için emin olamıyoruz. eğer akımda önemli ise çıkışı istediğin akıma uygun transistörler ile sürmek gerekir. devre bu hali ile sadece deney amaçlı çalışır. uygulama alanına göre bazı eklemeler yapılması gerekir. örneğin 7805 regülatörü gibi. sakın PIC beslemesine 5v dan fazla vermeyin.

CCS C kodları devrenin ana yazılımıdır. bunu derlediğimiz zaman hex dosyası oluşur ve pice yüklenir. eğer programda değişiklik yapacak iseniz C  dosyasını düzenleyip CCS ile derlemeniz gerekecek. yok değişiklik yapılmayacaksa bununla işiniz olmaz. zaten bilseniz aynısını siz yazardınız.

devrenin çalışması hakkında birazdaha bilgi vereyim.
giriş voltajı PIC in içinde dahili bulunan 10 bit ADC ile okunup dijital sayıya dönüştürülür. daha sonra bu değere göre voltaj hesaplanıp ondalıklı olarak ekranda gösterilir. bu hali ile en fazla 5.0v destekler.
girişten okuduğumuz ADC değerimiz çıkışa 10 bit PWM ile direk sürülür ve RC devresi ile filitrelenip DC voltaja dönüştürülür.
çıkışı arttırmak veya azaltmak için - ve + butonları kullanılır. butona her basmada 0,1v artar veya azalır. bu artma ve azalma değerleri sürekli sabit kalır. diyelimki 1v azalttınız. bu durumda giriş voltajı 3v ise çıkıştan 3-1= 2v alırsınız. eğer girişimiz ayarlanan değerden az ise çıkıştan 0v verir, fazlaysa tam 5v çıkar. örneğin okunan değeri 3v arttırdınız varsayalım. girişimiz 4v ise, 4+3=7v eder ancak bu voltajı PIC çıkışından alamayacağımız için 5v üzeri sonuçlar çıkıştan sabit 5v okunur.

unutmadan şunuda belirteyim ki, devreyi gerçekte test etmedim. sadece proteus simülasyonu ile çalıştırdım. eğer gözümden kaçan herhangibi mantık hatası varsa yeniden düzenleyebilirim. umarım devreyi doğru çalıştırabilirsin.
_/\/\/\_ -[ı- -ı>|- -|ı|ı|ı- -ı< -||- -l[]l-

adigehigebz06

Açıklamanız çok ayrıntılı ve bilgilendirici. Öncelikle hem devre hem de açıklama için çok teşekkür ederim. Devreyi gerçekte oluşturup gerekli geri bildirimleri veririm. Bir sorum olursa yine rahatsız ederim.  :)

pwm.c

14 Ekim 2012, 14:21:09 #16 Son düzenlenme: 17 Ağustos 2017, 14:24:56 pwm.c
Alıntı yapılan: adigehigebz06 - 14 Ekim 2012, 12:11:43Açıklamanız çok ayrıntılı ve bilgilendirici. Öncelikle hem devre hem de açıklama için çok teşekkür ederim. Devreyi gerçekte oluşturup gerekli geri bildirimleri veririm. Bir sorum olursa yine rahatsız ederim.  :)
Ne demek... bizde teşekkür ederiz. herzaman destek vermeye hazırız.
bu arada devrenin yazılımında ufak bir düzenleme yaptım. göncellediğim dosyayı buradan indirebilirsin.
https://github.com/pwmccs/elektronik/raw/master/16f876voltpwm.zip

kolay gelsin.
_/\/\/\_ -[ı- -ı>|- -|ı|ı|ı- -ı< -||- -l[]l-

adigehigebz06

Teşekkür ederim. Tek bir sorun var. Çıkışta voltmetrede de displayde de gördüğüm değerler tamam birer artıp azalıyor ama ufak da olsa sürekli bir voltaj değişimi oluyor. Benim için hassas bu durum. Çıkışa kondansatör koysam düzelir mi dersiniz?

pwm.c

Alıntı yapılan: adigehigebz06 - 15 Ekim 2012, 00:57:50Teşekkür ederim. Tek bir sorun var. Çıkışta voltmetrede de displayde de gördüğüm değerler tamam birer artıp azalıyor ama ufak da olsa sürekli bir voltaj değişimi oluyor. Benim için hassas bu durum. Çıkışa kondansatör koysam düzelir mi dersiniz?
bahsettiğin durum simülasyondaki değer ise bu gerçeği aynen göstermez. sapma miktarı çok az olur ve yüksek hızlıdır yani farkedemessin.
aynen dediğin gibi güç katı çıkışına ayrıca kondansatör flitresi ekleyerek bunu azaltabilirsin. büyük değerli kondansatör yanında paralel bağlı küçük değerli olanlarından da ekle. bunu genelde 100n kullanırız.
Bunun haricinde, PIC in +5v beslemesine 220uf yada 470uf bir kondansatör eklemen gerekebilir.
_/\/\/\_ -[ı- -ı>|- -|ı|ı|ı- -ı< -||- -l[]l-

yazici67

Çıkış transistör ile sürülürse RC + LC köprü filtre kurulabilir. Daha sağlıklı olur ama bobindeki güç kaybınıda saymayacaksınız.

adigehigebz06

Çıkışa paralel kondansatör ekledim ama bir faydası olmadı. Pic beslemesine de ekledim o da bir işe yaramadı :) kondansatör değerleriyle de oynadım yine bir sonuç alamadım :)

yazici67

Simülasyonda zaten düzeltemezsiniz. Gerçek devrede böyle bir sorun olmayacaktır. Siz bu voltajı ne ile okuyacaksınız/kullanacaksınız? Anfi gibi ses devrelerinde cızırtı duyulabilir ama ölçü aletinde emin olun doğru voltaj gözükecektir.Yindede olmazsa R2R merdiven DAC ekleriz titreşim kalmaz...

pwm.c

Alıntı yapılan: adigehigebz06 - 17 Ekim 2012, 00:47:11Çıkışa paralel kondansatör ekledim ama bir faydası olmadı. Pic beslemesine de ekledim o da bir işe yaramadı :) kondansatör değerleriyle de oynadım yine bir sonuç alamadım :)
bahsettiğin durum simülasyonda oluyorsa bunu önemseme. eğer gerçekte olduysa öncelikle giriş voltajını kontrol et. buradan değişken bir gerilim veriyorsan çıkışta bundan etkilenebilir.
2. olalısık, besleme geriliminde parazit olabilir. bu ölçüm sonucunu etkiler. 3. olasılık ise display tarama akımından dolayı beslemede bir miktar değişim oluşur ve bu ölçüm sonucuyla beraber çıkışıda etkiler.
bunu düzeltmenin 2 yöntemi var. 1.si PIC in ADC referans gerilimini diyot ile beslemeden ayırıp kondansatörle filitreleyeceksin. bunu yapmak için yazılımda ve hesaplamalarda değişiklik olması gerekiyor. 2.si ise PICe bağlı 4Mhz kristali çıkarıp yerine 20Mhz bağlarsan çıkıştaki değişim azalır. osilatör ayarını HS olarak ayarlamıştım. 20Mhz ile çalışır.
_/\/\/\_ -[ı- -ı>|- -|ı|ı|ı- -ı< -||- -l[]l-

adigehigebz06

Voltaj oynamaları simülasyonda oldu. En kısa zamanda gerçek devreyi yapacağım. Herşey için çok teşekkür ederim  :)