CCS C - 16F628A - LDR Ve Karşılaştırıcı sorunu?

bagztov

Üye
Katılım
5 Nis 2018
Mesajlar
182
Puanları
6
Yaş
26
Herkese merhabalar, iyi forumlar dilerim.
Benim PIC mikrodenetleyici kullanarak güneş panelinin sağ ve sol üst köşesine koyduğum 2 LDR'den aldığım veri ile motoru kontrol ederek güneş panelini devamlı güneşi görecek şekilde döndürmeyi düşünüyorum. İnternette birkaç arduino projesi var ama elimde arduino yok maalesef.
CCS C'de kod yazarken komutları ile iki LDR'den aldığım analog sinyalleri karşılaştırarak motoru kontrol etmeliyim. Yalnız ADC konusunu sayısız video izlememe rağmen tam olarak anlayamadım. 16F877A ve ADC yerine 16F628A ile kendi karşılaştırıcısını kullanmayı düşündüm. 16F628A'nın karşılaştırıcısı ile ilgili hiçbir Türkçe kaynak bulamadım. Tek tük bulduklarım da başka derleyici kullanmış pek bir şey anlamadım.
Bir de aklıma ADC entegresi ve 16F628A entegresini kullanarak ADC olayını yazılım olmadan yapmak geldi aklıma ama nasıl olur bilmiyorum. Bir fikir verirseniz çok sevinirim.
Özetle algoritma;

Başla;
iki ldrnin değerini oku
sağ ldrnin değeri sol ldrden yüksekse motoru sağa döndür
değilse
sola döndür
iki ldr değeri de eşit ise;
bekle

bitir.

Bu şekilde olmasını planlıyorum. Yardımınız için şimdiden teşekkür ederim. İyi forumlar dilerim.
 
Böylede yapabilirsin.
https://www.electroschematics.com/diy-solar-tracker-system/
solar-tracker-system.webp
 
ADC nin açılımından açıklamaya başlayayım, Analog Digital Convertör yanii analog değerleri dijital bir bilgiye dönüştürme modülüdür.Nedir analog bilgi dersen Elektronik olarak baktığında senin kullanacağın devredende örneklersek senin ldr den sonra analog girişe bir Elektrik sinyali gidecektir.Elektrik sinyali 3v 4v gibi bildiğimiz elektrik bunu pic kendisi anlayacağı bir değere dönüştürüyor bölme oranı ile bir sayıdal değere dönüştürüyor ve senin yapman gerekense bir if koşul deyimiyle bunu çözebilirsin herhangi bir komparatöre gerek almaz diye düşünüyorum
 
Öncelikle cevabınız için teşekkür ederim. Proteus/isis uygulamasında bir deneyeyeyim. Yalnız iki LDR arasında "A" yazan bir baloncuk var, bu ne anlama geliyor acaba? Tekrardan teşekkür ederim. Bir deneyeyim.
Bu noktadaki gerilim iki ldr ye eşit ışık geldiğinde besleme voltajının yarısı olmalıymış. yani 2 ldr de güneşe çevrildiğinde besleme 12 v ise 6v olacakmış. yani denge durumu.
 
Bu noktadaki gerilim iki ldr ye eşit ışık geldiğinde besleme voltajının yarısı olmalıymış. yani 2 ldr de güneşe çevrildiğinde besleme 12 v ise 6v olacakmış. yani denge durumu.
Evet iki ldr arasına voltmetre bağladım. Işık değerleri eşit iken voltmetre beslemenin yarısını gösteriyor. Teşekkür ederim ama devreyi proteusta çalıştıramadım.
ADC nin açılımından açıklamaya başlayayım, Analog Digital Convertör yanii analog değerleri dijital bir bilgiye dönüştürme modülüdür.Nedir analog bilgi dersen Elektronik olarak baktığında senin kullanacağın devredende örneklersek senin ldr den sonra analog girişe bir Elektrik sinyali gidecektir.Elektrik sinyali 3v 4v gibi bildiğimiz elektrik bunu pic kendisi anlayacağı bir değere dönüştürüyor bölme oranı ile bir sayıdal değere dönüştürüyor ve senin yapman gerekense bir if koşul deyimiyle bunu çözebilirsin herhangi bir komparatöre gerek almaz diye düşünüyorum
Öncelikle cevabınız için teşekkür ederim. Bu bilgileri ben de biliyorum aslında ama yine de emeğiniz için sağ olun. Benim anlayamadığım kısım algoritmanın nasıl yazılması gerektiği. Yani ses, ışık, sıcaklık, voltaj, akım v.s bu değerler analog. Bunları picin analog girişine girdiğimiz zaman yazılımda ne tarz komutlar kullanmalıyım ki picin analog pinine gelen 2.5V'u 512 olarak okuyayım ve iki analog pindeki değerleri (A0 - 2.5V / A1 - 3.2V) gibi karşılaştırabileyim. Tekrardan teşekkür ederim.
 
Son düzenleme:
Evet iki ldr arasına voltmetre bağladım. Işık değerleri eşit iken voltmetre beslemenin yarısını gösteriyor. Teşekkür ederim ama devreyi proteusta çalıştıramadım.

Öncelikle cevabınız için teşekkür ederim. Bu bilgileri ben de biliyorum aslında ama yine de emeğiniz için sağ olun. Benim anlayamadığım kısım algoritmanın nasıl yazılması gerektiği. Yani ses, ışık, sıcaklık, voltaj, akım v.s bu değerler analog. Bunları picin analog girişine girdiğimiz zaman yazılımda ne tarz komutlar kullanmalıyım ki picin analog pinine gelen 2.5V'u 512 olarak okuyayım ve iki analog pindeki değerleri (A0 - 2.5V / A1 - 3.2V) gibi karşılaştırabileyim. Tekrardan teşekkür ederim.
proteus şemasını ekleyin bakalım.
 
Fikir vermesi açısından yapmak istediğinize benzer şöyle bir şey var ama pek kullanışlı sayılmaz. Sonuçta havanın bulutlu ve kapalı olduğu zamanlarda da çalışması için sistem, arduino+zaman modülü ile kullanılmalı ve güneşin olduğu yöne redüktörlü/servo motoruyla yönlenmelidir. Akşam belli bir saatte ise sabah olması gereken konuma otomatik yönelmeli. Kendim de böyle bir şey yapmayı düşünüyorum fakat henüz mekanik kısmı çözebilmiş değilim. Tasarı aşamasında.;)
 
Evet iki ldr arasına voltmetre bağladım. Işık değerleri eşit iken voltmetre beslemenin yarısını gösteriyor. Teşekkür ederim ama devreyi proteusta çalıştıramadım.

Öncelikle cevabınız için teşekkür ederim. Bu bilgileri ben de biliyorum aslında ama yine de emeğiniz için sağ olun. Benim anlayamadığım kısım algoritmanın nasıl yazılması gerektiği. Yani ses, ışık, sıcaklık, voltaj, akım v.s bu değerler analog. Bunları picin analog girişine girdiğimiz zaman yazılımda ne tarz komutlar kullanmalıyım ki picin analog pinine gelen 2.5V'u 512 olarak okuyayım ve iki analog pindeki değerleri (A0 - 2.5V / A1 - 3.2V) gibi karşılaştırabileyim. Tekrardan teşekkür ederim.
Kod:
C

void main()

{

   // Kullanacağımız analog girişleri belirtiyoruz

   setup_adc_ports(AN0_AN1_AN2_AN3_AN4);



   int16 analogBilgi; // Okuduğumuz analog değeri bu değişkene aktaracağız



   while(TRUE) // Sonsuz döngümüz

   {

      set_adc_channel(1); // AN1 numaralı kanaldan okuma yapacağımızı belirttik

      analogBilgi = read_adc(); // AN! numaralı kanaldan analog değeri oku

      delay_ms(1000); // 1 saniye bekle

   }

}
örnek olarak buradan anlayabilirsin
 

Forum istatistikleri

Konular
129,892
Mesajlar
931,095
Kullanıcılar
452,780
Son üye
eyaraef25

Yeni konular

Geri
Üst