avatar_ete

Volt-Ampermetre

Başlatan ete, 22 Mart 2012, 17:50:40

ete

Protect_OFF kod koruması kapalı demek. Bu şekilde kullanırsan bir başkası pici kopyalayabilir.
Kod koruması açık olursa kopyalanamaz.

Ete

n.atakan

#106
 @ ete

  Anladım hocam. Daha öncede dediğim gibi ben devreyi sadece voltmetre olarak yapacağım için mevcut kodlarda değişiklik yaptım, ampermetreyle ilgili verileri sildim çalışmada sorunsuz gibi görünüyor.
' I  var byte ' ve ' FOR I=0 to 19 ' bu kısımları sildiğimde derlemiyor hata veriyor, ' I ' komutunu yok edebilmenin yolu nedir hocam. İnceler misiniz lütfen. İlginiz için teşekkür ederim, dosya ilişiktedir.

Edit: TRISA=%00000001 olarak değiştirdim ayrıca ADCON1=%10001110 yapmalıyım galiba.

n.atakan

@ ete
Bu değiştirilmiş hali.

n.atakan


BASLA:
       TOP_VOLT=0
       FOR I=0 TO 19     
         ADCIN 0,VOLTHAM
         TOP_VOLT=TOP_VOLT+(VOLTHAM+1)
         PAUSEUS 5
       NEXT
       VOLTHAM=TOP_VOLT/20
       VOLT=VOLTHAM*/75


ETE hocam bu kısımdaki FOR I=0 TO 19 daki I=0 TOP_VOLT' u mu temsil ediyor, bu işlem 20 kere ölçüm yapıp sonraki işlemlerde bu sonuçların 20 ye bölünmesiyle ortalamasını kullandığımız işlem bildiğim kadarıyla, ayrıca I VAR BYTE komutunun buradaki I ile alakası var  mı yoksa amper kısmı için kullandığınız bir komut muydu, önceki mesajlarda söylemiştim ben sadece voltmetre kısmını kullanacağım için soruyorum, amper kısımlarını iptal ediyorum o yüzden

F®T

I döndü değişkeninin aldığı değer Byte olarak tanımlanmış olması lazım.onu kaldırırsan döngü oluşmaz.For next döngüsünü yoksa döndüremezsin.
"Hakk" şerleri hayr eyler Zannetme ki gayr eyler Ârif anı seyreyler Mevlâ görelim neyler Neylerse güzel eyler.

n.atakan

@F.T

    I döngü değişkeni burada TOP_VOLT u temsil ediyor mu peki ?
   
   Ben bu konularda yeniyim o yüzden belkide saçma sorular soruyorum kusura bakmayın. Cevap için teşekkür ederim.

F®T

ikiside farklı işlevlerde I yı iptal edemezsin.
"Hakk" şerleri hayr eyler Zannetme ki gayr eyler Ârif anı seyreyler Mevlâ görelim neyler Neylerse güzel eyler.

ete

I döngü değişkenidir. O işlemlerin 0 dan başlayıp 19' a kadar tekrarlanmasını sağlıyor.
Burada kullanılan I ile I VAR BYTE ilişikisi birebir vardır. Iikiside aynı I dır. Byte tanımlamasını kaldırırsan Döngü işlevsiz hale gelir ve değişkeni tanımlanmamış olacağı için derleyici hata verir. Ya o döngüleride silmen yada I ya dokunmaman gerekir.

Ete

n.atakan

 Öncelikle cevaplarınız için teşekkür ederim.

  Hocam madem döngü ile alakalı bende döngü olsun istiyorum kaldırmam o yüzden, o komutların amper ile alakası madem yokmuş o zaman amper kısmını iptal edebilmiş oluyorum, teşekkürler tekrar.

n.atakan

Arkadaşlar, bu devrenin sadece voltmetre kısmını kullanacağım 16F676 ya uydurmak istiyorum, isiste 16f88 ile çalıştırdım ama 16f676 ile çalıştıramadım.
 

@ DEVICE pic16F676
@ DEVICE pic16F676, WDT_off
@ DEVICE pic16F676, PWRT_ON
@ DEVICE pic16F676, PROTECT_OFF
@ DEVICE pic16F676, XT_OSC
define osc 4

DEFINE LCD_DREG     PORTC 'LCD data bacakları hangi porta bağlı?
DEFINE LCD_DBIT     2 'LCD data bacakları hangi bitten başlıyor?
DEFINE LCD_RSREG     PORTA 'LCD RS Bacağı Hangi Porta bağlı ?
DEFINE LCD_RSBIT     2 'LCD RS bacağı Hangi Bite bağlı ?
DEFINE LCD_EREG     PORTC 'LCD Enable Bacağı Hangi Porta bağlı?
DEFINE LCD_EBIT     1 'LCD Enable Bacağı Hangi bite bağlı ?
define lCD_RWREG         PORTC
define LCD_RWBIT          0
DEFINE LCD_BITS           4 'LCD 4 bit mi yoksa 8 bit olarak bağlı?
DEFINE LCD_LINES      2         'LCD Kaç sıra yazabiliyor

DEFINE ADC_BITS            10     ' Set number of bits in result
DEFINE ADC_CLOCK     3     ' Set clock source (3=rc)
DEFINE ADC_SAMPLEUS     50     ' Set sampling time in uS
     
ADCON1=%10001110
TRISA =%00000001
TRISC=0

VOLTHAM  VAR WORD
TOP_VOLT VAR WORD
VOLT     VAR WORD 

MV      VAR BYTE
I       VAR BYTE


PORTC=0
PORTA=0
VOLT=0
PAUSE 200
LCDOUT $FE,1
pause 100

BASLA:
       TOP_VOLT=0
       FOR I=0 to 19     
         ADCIN 0,VOLTHAM
         TOP_VOLT=TOP_VOLT+(VOLTHAM+1)
         PAUSEus 5
       NEXT
       VOLTHAM=TOP_VOLT/20
       VOLT=VOLTHAM*/75  '0-30V arası okuma için  sonuç 300 şeklinde çıkacak 

       lcdout $fe,$80,"      VOLT"
'       lcdout $fe,$80,"V=",#VOLTHAM," T:",#top_volt
       lcdout $fe,$c0,"     ",dec2 volt/10,",",dec1 volt//10," V"
       
       PAUSE 300
       GOTO BASLA


  PORTC de 5 bit olduğu için RS bacağını PORTA nın 2. bitine bağladım, böyle yaptığım için mi çalışmadı acaba isis dosyasınıda yüklüyorum ilgilenebilecek arkadaşlar ve ete hoca yardımcı olabilirseniz çok iyi olur benim için, teşekkürler.

n.atakan

@F.T

   Hocam bakar mısınız hatalarım nelerdir acaba

F®T

#116
OSCCAL=%11111100

define OSC 4

PORTA=%00000000
PORTC=%00000000
TRISA =%000000001
TRISC =%00000000
ADCON0=%10000001
ANSEL =%00000001
CMCON=7

DEFINE LCD_DREG PORTC 'LCD data port
DEFINE LCD_DBIT 0 'LCD data starting bit 0 or 4
DEFINE LCD_RSREG PORTC 'LCD register select port
DEFINE LCD_RSBIT 4 'LCD register select bit
DEFINE LCD_EREG PORTC 'LCD enable port
DEFINE LCD_EBIT 5 'LCD enable bit

DEFINE LCD_BITS 4 'LCD bus size 4 or 8
DEFINE LCD_LINES 2 'Number lines on LCD
DEFINE LCD_COMMANDUS 2000 'Command delay time in us
DEFINE LCD_DATAUS 50 'Data delay time in us


DEFINE ADC_BITS 8 'Number of bits in ADCIN result
DEFINE ADC_CLOCK 3 'ADC clock source (rc = 3)
DEFINE ADC_SAMPLEUS 50 'ADC sampling time in microseconds



VOLTHAM  VAR WORD
TOP_VOLT VAR WORD
VOLT     VAR WORD 

MV      VAR BYTE
I       var byte

PAUSE 500


BASLA:
       TOP_VOLT=0
       FOR I=0 to 19     
         ADCIN 0,VOLTHAM
         TOP_VOLT=TOP_VOLT+(VOLTHAM+1)
       
       NEXT
       VOLTHAM=TOP_VOLT/20
       VOLT=VOLTHAM*/75  '0-30V arası okuma için  sonuç 300 şeklinde çıkacak 

       lcdout $fe,$80,"      VOLT"
'       lcdout $fe,$80,"V=",#VOLTHAM," T:",#top_volt
       lcdout $fe,$c0,"     ",dec2 volt/10,",",dec1 volt//10," V"
       
       PORTA.4=1
       GOTO BASLA       
       


Baya bi uğraştım :)

konfigrasyonlarının hepsini hemen hemen yaptım ama proteusta bir sorun var heralde.Ete hocamın bir bakması lazım.
"Hakk" şerleri hayr eyler Zannetme ki gayr eyler Ârif anı seyreyler Mevlâ görelim neyler Neylerse güzel eyler.

n.atakan

#117
Hocam çok teşekkür ederim emek verip uğraşmışsınız ama dediğiniz gibi proteustan kaynaklı bir sorun var herhalde, bu işlemciyle olmazsa artık başka bir işlemciyle yapıcaz, emeğiniz için tekrar teşekkür ederim, iyi çalışmalar :D

MS_59

yine ekranda bişey çıkmıyormu
mehmet

n.atakan

Yok zaten o kısmı mesajımdan sildim şimdi yazı geldi ama doğru ölçüm yapılmıyor hocam

Powered by EzPortal