Picproje Elektronik Sitesi

DERLEYİCİLER => PIC C => Konuyu başlatan: bulut_01 - 30 Nisan 2012, 19:32:27

Başlık: ADC bir soru ?
Gönderen: bulut_01 - 30 Nisan 2012, 19:32:27
öncelıkle butun arkadaslara ıyı aksamlar şöyle bir sorunum var bitane saksı ıcıne yerlestırdıgım probla gerılım ölcerek saksının susuz kaldıgında devre calısarak sulama görevı yapacagım yanlız code yazdım gerılım okuyorum hersey tamam code ufak bı eklentı yapmam lazım kod asagıda devre topragın geregından fazla kuru oldugunu anladıgında ledler kayarak yanıyor buraya kadar tamam kayma işlemını yaparkan AN0 yanı adc okudugum portuda etklıyor bu leddler kayarken bu portu etkılememesı ıcın kodda nasıl bi değişiklik yapmam lazım ? bide leddler kayarken flaşöru nasıl eklerım ? bu dedıklerımı yapmak ıcın ugrasdım ama işin ıcınden cıkamadım yardımlarınızı beklıyorum sımdıden tsk ederım sema ve code asagıdadır.
probu temsilen pot vardır şemada.

(http://e1204.hizliresim.com/w/y/53jvk.jpg)

#include <12F675.h>

#device ADC=10 
#fuses INTRC_IO
#FUSES NOWDT                    //No Watch Dog Timer
#fuses INTRC_IO                     
#FUSES NOPUT                    //No Power Up Timer
#FUSES NOPROTECT                //Code not protected from reading
#FUSES NOBROWNOUT               //No brownout reset
#FUSES NOMCLR                   //Master Clear pin disabled
#FUSES NOCPD                    //No EE protection

#use delay(clock=4000000)

unsigned long int x=0;
int z,led;

void main()
{
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
setup_timer_1(T1_DISABLED);
setup_comparator(NC_NC_NC_NC);
setup_vref(FALSE);

setup_adc(adc_clock_div_32);
setup_adc_ports( AN0_analog);
set_adc_channel(0);
set_tris_a(0x01);
delay_us(20);
output_a(0x00) ;

   while(TRUE)
   {
          led=1;
          x=Read_adc();
          delay_ms(10);
           if(x>43)
           {
           for (z = 0; z <=6; z++)
           {
           output_a(led);
           led=led<<1;
           delay_ms(150);
         
           }
           }
           }
           }
Başlık: Ynt: ADC bir soru ?
Gönderen: z - 30 Nisan 2012, 19:44:18
1. Ledleri seri direnç olmadan kullanmaman gerekir.
2. Sistemin pille çalıştığını varsayalım. ADC ile ölçüm yapmaya başlamadan önce ledleri söndürür ardından ölçüm yapar daha sonra da yanması gereken ledleri enerjilersen ADC ledlerin akım yüklemelerinden etkilenmez.

ADC ölçümü çok hızlı yapıldığından, yanan bir ledi ADC ölçümü esnasında söndürüp ardından yakman görsel olarak farkedilemez.
Başlık: Ynt: ADC bir soru ?
Gönderen: bulut_01 - 30 Nisan 2012, 19:59:35
bulent hocam cvp ıcın teşekkür ederım sema temsılı ledler önunde 330R drenc var pcb de burda koymadım sadece sımılasyonda  devre 9v pille calısıyor 7805 var bu devreyı ılk etapda nemlı toprakda calısmaya baslatacagım ıcın toprak kurudukca cıcek suyu emdıkce bellı degere geldıgınde toprak nem oranı baya azaldıgında devre çalıyor ve ledler kaymaya baslayıp buzzer ötüyor benım sorunum leddleri kaydırırken AN0  adc portuda yanıp sönüyo ledlerı kaydırdıgım ıcın benım sorum şu komut nasıl yazarımkı ledler kayarken an0 adc portu etkılenmez output_a(led); komutunda led değişkenı cıkıs portlara aktarılyor ama hepsıne ben bu komutta nasıl değişiklik yapmam lazımkı cıkısa aktarırken int led değişkenını AN0 adc portu  harıc diyebılmem için bunun yerıne şöyle yazdım calısmadı
örnek: output_bit((pin_a1);(pin_a2);(pin_a4);(pin_a5),led) seklinde led int bit olarak dedıgım portlara aktarım dedım olmadı bunu nasıl yaparım ? AN0 ADC portu katmamak ıcın cıkısa ? bıde led flasör ıcın nasıl kod eklemem lazım hem kayacak ve flasor gıbı cakacak ledler ? sorum bu.
Başlık: Ynt: ADC bir soru ?
Gönderen: bulut_01 - 30 Nisan 2012, 21:00:23
yardım edecek kımse yok mu ? :(
Başlık: Ynt: ADC bir soru ?
Gönderen: justice_for_all - 30 Nisan 2012, 21:22:18
donguyu 5 e kadar saydir ve led =2 yap
Başlık: Ynt: ADC bir soru ?
Gönderen: bulut_01 - 30 Nisan 2012, 21:35:51
Alıntı yapılan: justice_for_all - 30 Nisan 2012, 21:22:18
donguyu 5 e kadar saydir ve led =2 yap

eyw kardesım oldu :D cok basıtmıs hıc aklıma gelmedı sayma rakamı degıstırmek son olarak kayan leddlere nasıl flaşör eklerız ?
Başlık: Ynt: ADC bir soru ?
Gönderen: justice_for_all - 30 Nisan 2012, 21:41:02
Alıntı yapılan: bulut_01 - 30 Nisan 2012, 21:35:51
eyw kardesım oldu :D cok basıtmıs hıc aklıma gelmedı sayma rakamı degıstırmek son olarak kayan leddlere nasıl flaşör eklerız ?

ledlerin kaydigi donguden hemen sonra yapabilirsin kac kez flash yapcak.bise sorcak ledleri neden kaydiriyosun?kac ledin var?
Başlık: Ynt: ADC bir soru ?
Gönderen: bulut_01 - 30 Nisan 2012, 21:46:47
3 tane ledım var onlar kayıyor flasor ıcın nasıl dongu eklemem lazım ? semada gıbı devre ledler kaydıgı surece daıma flash yapacak. ledlerı kaydırmamın ve flas seklınde cakmasının ıstememın sebebı anımasyon olsun dıye
Başlık: Ynt: ADC bir soru ?
Gönderen: justice_for_all - 30 Nisan 2012, 21:52:31
peki ledleri kaydirmak yerine ledlerle topragin nemlilik oranini gostersen daha iyi olmazmi ? vuumetre gibi.soruna gelince flash nasil yapilir su sekilde ledler yakilir ve hemen sondurulur yani yanma suresi cok kisa olmasi gerek.

mesela soyle burda bekeleme surelerini kafama gore yaptim sen istedigim sekilde degistirebilirsin.

output_high(pin_a1);
delay_us(100);
output_low(pin_a1);
delay_ms(1);
Başlık: Ynt: ADC bir soru ?
Gönderen: bulut_01 - 30 Nisan 2012, 21:54:24
bu kodu tam olarak nereye eklıcem yazdıgım kodda ?
Başlık: Ynt: ADC bir soru ?
Gönderen: justice_for_all - 30 Nisan 2012, 21:59:43
for dongusunden sonra
Başlık: Ynt: ADC bir soru ?
Gönderen: bulut_01 - 30 Nisan 2012, 23:07:04
Alıntı yapılan: justice_for_all - 30 Nisan 2012, 21:59:43
for dongusunden sonra
dediğin sekılde ekledım tam flasor olarak yanmıyor dengesız yanıyor
Başlık: Ynt: ADC bir soru ?
Gönderen: justice_for_all - 30 Nisan 2012, 23:17:46
bekleme surelerini degisik sekillerde ayarlaman gerek mesela bide soyle dene birince delaya 1ms ver ikinci delaya 10 ms ver bakalim
Başlık: Ynt: ADC bir soru ?
Gönderen: bulut_01 - 30 Nisan 2012, 23:30:11
Alıntı yapılan: justice_for_all - 30 Nisan 2012, 23:17:46
bekleme surelerini degisik sekillerde ayarlaman gerek mesela bide soyle dene birince delaya 1ms ver ikinci delaya 10 ms ver bakalim


yapdım şöyle bi manzara çıkdı.

(http://g1204.hizliresim.com/w/y/53y9t.jpg)
#include <12F675.h>

#device ADC=10 
#fuses INTRC_IO
#FUSES NOWDT                    //No Watch Dog Timer
#fuses INTRC_IO                     
#FUSES NOPUT                    //No Power Up Timer
#FUSES NOPROTECT                //Code not protected from reading
#FUSES NOBROWNOUT               //No brownout reset
#FUSES NOMCLR                   //Master Clear pin disabled
#FUSES NOCPD                    //No EE protection

#use delay(clock=4000000)

unsigned long int x=0;
int z,led;

void main()
{
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
setup_timer_1(T1_DISABLED);
setup_comparator(NC_NC_NC_NC);
setup_vref(FALSE);

setup_adc(adc_clock_div_32);
setup_adc_ports( AN0_analog);
set_adc_channel(0);
set_tris_a(0x01);
delay_us(20);
output_a(0x00) ;

   while(TRUE)
   {
          led=2;
          x=Read_adc();
          delay_ms(100);
           if(x>43)
           {
           for (z = 0; z <=5; z++)
           {
           output_high(pin_a1);
           delay_us(500);
           output_low(pin_a1);
           delay_ms(5);
           
           output_high(pin_a2);
           delay_us(500);
           output_low(pin_a2);
           delay_ms(10);
           
           output_high(pin_a4);
           delay_us(500);
           output_low(pin_a4);
           delay_ms(15);
           
           output_a(led);
           led=led<<1;
           delay_ms(150);
         
           }
           }
           }
           }
Başlık: Ynt: ADC bir soru ?
Gönderen: justice_for_all - 30 Nisan 2012, 23:41:52
#include <12F675.h>

#device ADC=10 
#fuses INTRC_IO
#FUSES NOWDT                    //No Watch Dog Timer
#fuses INTRC_IO                     
#FUSES NOPUT                    //No Power Up Timer
#FUSES NOPROTECT                //Code not protected from reading
#FUSES NOBROWNOUT               //No brownout reset
#FUSES NOMCLR                   //Master Clear pin disabled
#FUSES NOCPD                    //No EE protection

#use delay(clock=4000000)

unsigned long int x=0;
int z,led;

void main()
{
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
setup_timer_1(T1_DISABLED);
setup_comparator(NC_NC_NC_NC);
setup_vref(FALSE);

setup_adc(adc_clock_div_32);
setup_adc_ports( AN0_analog);
set_adc_channel(0);
set_tris_a(0x01);
delay_us(20);
output_a(0x00) ;

   while(TRUE)
   {
          led=2;
          x=Read_adc();
          delay_ms(100);
           if(x>43)
           {
           for (z = 0; z <=5; z++)
           {

           
           output_a(led);
           led=led<<1;
           delay_ms(150);
         
           }

           for (z = 0; z <=5; z++)
           {

                output_a(0x16);
                delay_us(500);
                output_a(0x00);
                delay_ms(5);
           }
           
           }
           }
           }


boyle dene bakalim
Başlık: Ynt: ADC bir soru ?
Gönderen: bulut_01 - 30 Nisan 2012, 23:59:30
Alıntı yapılan: justice_for_all - 30 Nisan 2012, 23:41:52
#include <12F675.h>

#device ADC=10 
#fuses INTRC_IO
#FUSES NOWDT                    //No Watch Dog Timer
#fuses INTRC_IO                     
#FUSES NOPUT                    //No Power Up Timer
#FUSES NOPROTECT                //Code not protected from reading
#FUSES NOBROWNOUT               //No brownout reset
#FUSES NOMCLR                   //Master Clear pin disabled
#FUSES NOCPD                    //No EE protection

#use delay(clock=4000000)

unsigned long int x=0;
int z,led;

void main()
{
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
setup_timer_1(T1_DISABLED);
setup_comparator(NC_NC_NC_NC);
setup_vref(FALSE);

setup_adc(adc_clock_div_32);
setup_adc_ports( AN0_analog);
set_adc_channel(0);
set_tris_a(0x01);
delay_us(20);
output_a(0x00) ;

   while(TRUE)
   {
          led=2;
          x=Read_adc();
          delay_ms(100);
           if(x>43)
           {
           for (z = 0; z <=5; z++)
           {

           
           output_a(led);
           led=led<<1;
           delay_ms(150);
         
           }

           for (z = 0; z <=5; z++)
           {

                output_a(0x16);
                delay_us(500);
                output_a(0x00);
                delay_ms(5);
           }
           
           }
           }
           }


boyle dene bakalim




scop amca pek farkı olmadı diyor  :o


(http://g1204.hizliresim.com/w/y/53zwn.jpg)
Başlık: Ynt: ADC bir soru ?
Gönderen: justice_for_all - 01 Mayıs 2012, 00:03:31
ordaki ki minik kare dalgalar flash yapiyor aslinda proteusda goremezsin.bekleme surelerini buturun biraz daha fark olacaktir.
Başlık: Ynt: ADC bir soru ?
Gönderen: bulut_01 - 01 Mayıs 2012, 00:14:50
biliyorum ordakı kare dalgalar flash oldugunu ama buyuk kareler olmaması lazım sadece flashların olması lazım o buyuk kare dalgaların olması ılgınc
Başlık: Ynt: ADC bir soru ?
Gönderen: justice_for_all - 01 Mayıs 2012, 00:18:14
o buyuklerde led kaymasi iste sen sirayla olsun demedin mi once ledler kayacak sonra flash yapacak bu sirayla gtmicekmi
Başlık: Ynt: ADC bir soru ?
Gönderen: bulut_01 - 01 Mayıs 2012, 00:20:53
evt de ordakı flash dıkkat ettıyle eş zamanlı çakıyo 3 led aynı anda cakıyo hem kayıp hemde cakmıyo ? benim istediğim 1 led çaksın sonra 2 led caksın sonra 3 led caksın hem kayacak hem cakacak ama 3 led aynı anda cakmıyacak sırayla cakıp kayacak.
Başlık: Ynt: ADC bir soru ?
Gönderen: justice_for_all - 01 Mayıs 2012, 00:23:57
nasil istedigini daha detayli yazarmisin  yani once ledler kayacak sonra 1.led cakacak sonra ikinci sonra ucuncu oylemi?
Başlık: Ynt: ADC bir soru ?
Gönderen: bulut_01 - 01 Mayıs 2012, 00:31:29
kardesım 1. led çakdı sonra 2. led çakdı sonra 3. led çakdı bu sırayla devam edecek ne olacak hem kaymıs hemde cakmıs olacak yanlız kayarken ve çakarken 2 led aynı anda yanmıyacak sırayla bırı cakacak sonecek dıgerı cakacak sönecek dıgerı cakacak sonecek ne oldu 3 ncu led en son gıne 1 led aynı sekıl devam edecek.
Başlık: Ynt: ADC bir soru ?
Gönderen: justice_for_all - 01 Mayıs 2012, 00:37:19
#include <12F675.h>

#device ADC=10 
#fuses INTRC_IO
#FUSES NOWDT                    //No Watch Dog Timer
#fuses INTRC_IO                     
#FUSES NOPUT                    //No Power Up Timer
#FUSES NOPROTECT                //Code not protected from reading
#FUSES NOBROWNOUT               //No brownout reset
#FUSES NOMCLR                   //Master Clear pin disabled
#FUSES NOCPD                    //No EE protection

#use delay(clock=4000000)

unsigned long int x=0;
int z,led;

void main()
{
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
setup_timer_1(T1_DISABLED);
setup_comparator(NC_NC_NC_NC);
setup_vref(FALSE);

setup_adc(adc_clock_div_32);
setup_adc_ports( AN0_analog);
set_adc_channel(0);
set_tris_a(0x01);
delay_us(20);
output_a(0x00) ;

   while(TRUE)
   {
          led=2;
          x=Read_adc();
          delay_ms(100);
           if(x>43)
           {
           for (z = 0; z <=5; z++)
           {
                 output_a(led);
                 delay_ms(1);
                 output_a(0x00);
                 led=led<<1;
                 delay_ms(15);
           }
           
           }
           }
           }


boyle olmasi lazim
Başlık: Ynt: ADC bir soru ?
Gönderen: bulut_01 - 01 Mayıs 2012, 01:08:20
justice_for_all eyw kardesım oldu buzzer ıcınde farklı zamanla ekleyerek ıstedıgım gıbı calısıyor yardımların ıcın cok saol son halı kodun.


#include <12F675.h>

#device ADC=10 
#fuses INTRC_IO
#FUSES NOWDT                    //No Watch Dog Timer
#fuses INTRC_IO                     
#FUSES NOPUT                    //No Power Up Timer
#FUSES NOPROTECT                //Code not protected from reading
#FUSES NOBROWNOUT               //No brownout reset
#FUSES NOMCLR                   //Master Clear pin disabled
#FUSES NOCPD                    //No EE protection

#use delay(clock=4000000)

unsigned long int x=0;
int z,led;

void main()
{
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
setup_timer_1(T1_DISABLED);
setup_comparator(NC_NC_NC_NC);
setup_vref(FALSE);

setup_adc(adc_clock_div_32);
setup_adc_ports( AN0_analog);
set_adc_channel(0);
set_tris_a(0x01);
delay_us(20);
output_a(0x00) ;

   while(TRUE)
   {
          led=2;
          x=Read_adc();
          delay_ms(100);
          if(x>43)
           {
         
           
           
           
           for (z = 0; z <=3; z++)
           {
            output_bit(pin_a5 0X00);
            delay_ms(200);
            output_toggle(pin_a5);
            delay_ms(20);
           
            output_a(led);
            delay_us(600);
            output_a(0x00);
            led=led<<1;
            delay_ms(15);
            }
            }
            }
            }
           
Başlık: Ynt: ADC bir soru ?
Gönderen: justice_for_all - 01 Mayıs 2012, 01:11:17
kodda bir hata var sanirim duzelt onu istersen
Başlık: Ynt: ADC bir soru ?
Gönderen: bulut_01 - 01 Mayıs 2012, 01:11:57
hangısı nerde ?
Başlık: Ynt: ADC bir soru ?
Gönderen: justice_for_all - 01 Mayıs 2012, 01:15:01
output_bit(pin_a5 0X00); burda ikisinden biri olcak hangisi ?
Başlık: Ynt: ADC bir soru ?
Gönderen: bulut_01 - 01 Mayıs 2012, 01:18:34
output_bit(pin_a5 0X00); burda neden hata varkı ? ben sadece pin_a5 portunu sıfırlıyorum sace picin a5 portu sıfırladım burda hata hangısı ?
Başlık: Ynt: ADC bir soru ?
Gönderen: justice_for_all - 01 Mayıs 2012, 01:20:12
yazilim hatali bu sekilde derleyici hata vermedimi  ??? benim bildigim output_bit(pin_a0,0); olmasi lazimdi   ???
Başlık: Ynt: ADC bir soru ?
Gönderen: bulut_01 - 01 Mayıs 2012, 01:23:18
benım ccs akıllı abısı o benım dılımden anlıyo hata vermedı output_bit(pin_a1 0X00); ile output_bit(pin_a1,0); arasında fark yokkı neden hata versın  ;D
Başlık: Ynt: ADC bir soru ?
Gönderen: justice_for_all - 01 Mayıs 2012, 01:28:05
bu ccs ya cok salak yada cok akilli hangisi bilmiyom artik  ;D  kendi yardim dosyasinda su sekilde vermis "output_bit (pin, value)" senin kodda arada virgul yok ama hata vermemis bise diyemiyorum artik  ;D neyse sana iyi geceler kardesim. buarada adananin neresindensin sen bende adanaliyim

Başlık: Ynt: ADC bir soru ?
Gönderen: cemilkendir - 01 Mayıs 2012, 01:29:28
bence ccs c nin versiyonunu kontrol et bazı sürümleri hatalı oluyor
arada virgül olması lazım mutlaka
Başlık: Ynt: ADC bir soru ?
Gönderen: bulut_01 - 01 Mayıs 2012, 01:30:05
eyw saolasın kardesım yardımların ıcın kucukseyler gozden kacıyo ugrasdırıyor ınsanı ama ccs yi pbp daha cok sevdım daha zevklı yazması sanada ıyı geceler.
Başlık: Ynt: ADC bir soru ?
Gönderen: bulut_01 - 01 Mayıs 2012, 01:31:40
Alıntı yapılan: cemilkendir - 01 Mayıs 2012, 01:29:28
bence ccs c nin versiyonunu kontrol et bazı sürümleri hatalı oluyor
arada virgül olması lazım mutlaka

hocam bendekı PCWHD 4.068 2012 full versiyonu.
Başlık: Ynt: ADC bir soru ?
Gönderen: bulut_01 - 01 Mayıs 2012, 20:12:46
Alıntı yapılan: justice_for_all - 01 Mayıs 2012, 01:28:05
buarada adananin neresindensin sen bende adanaliyim

Adana merkez cukurova adanakoop da oturuyorum yuzuncu yıla yakın.