32bit işlemi lcd'de gösteremiyorum

Başlatan transistor, 12 Mayıs 2018, 02:14:29

aRci

#15
.

ete

#16
Anladığım kadarı ile ampermetrede ne görüyorsan onuda ekranda görmek istiyorsun.
Buda kolay aşağıdaki program bunu yapıyor. Ancak kullandığın sensör 30 Amperlik bir akım sensörü ve hesaplamalar onun maksimum akım değerine göre yapılır. Bunu yaptığın zamanda düşük akımlar bu sensörle çok hassas ölçülemez. Ya büyüklerden feragat edeceksin yada küçüklerden.

Sigorta ayarları ile derleme yapamıyorsan aşağıdaki linki dikkatlice oku. Makinan muhtemelen 64 bitlik bir makina ve sen MPASM kullanarak derleme yapman gerekiyor. Bunun için derleyicide Assemler kımsında MPASM yi seçmen ve makinanda yer alan Proteus klasöründe tools menüsü altındaki mapsm klasörünün yerini derleyiciye göstermen gerek. Sen en iyisi aşağıdaki linki dikkatlice oku.

http://etepic.com/index.php/topic,1687.0.html

Buda olması gereken program. Dikkat edersen motor devresinde AC AMMETER kullanmışsın DC AMMETER kullanman gerek devrende AC voltaj yok.
@ __config _BODEN_OFF  & _PWRTE_ON & _WDT_OFF & _LVP_OFF & _XT_OSC
DEFINE OSC 4
CMCON=7
'*******************************************************************************
TRISA=255
;*******************************************************************************
DEFINE LCD_DREG        PORTB   
DEFINE LCD_DBIT        4       
DEFINE LCD_RSREG    PORTB   
DEFINE LCD_RSBIT    2   
DEFINE LCD_EREG        PORTB   
DEFINE LCD_EBIT        3       
DEFINE LCD_BITS        4   
DEFINE LCD_LINES    4
;*******************************************************************************
DEFINE ADC_BITS 10
DEFINE ADC_CLOCK 3
DEFINE ADC_SAMPLEUS 50
ADCON1=%10000100
;*******************************************************************************
ADC    VAR WORD
TOPLAM    VAR WORD
AKIM    VAR WORD
IOND    VAR WORD
GERILIM VAR WORD
VOLTAGE    VAR WORD
ONDALIK VAR WORD
X VAR BYTE
CLEAR
lcdout $fe,1:pause 500
;*******************************************************************************
BASLA:

GOSUB HESAPLA
LCDOUT $FE,$80," I= ",DEC amps/10,",",DEC1 AMPS//10," "
LCDOUT $FE,$C0," V= ",DEC VOLTage/1000,",",dec3 VOLTage//1000," "
LCDOUT $FE,$94," ADC=",DEC ADC ," "

PAUSE 150

goto BASLA
;*******************************************************************************
HESAPLA:
TOPLAM=0
FOR X=0 TO 9
ADCIN 1, ADC
TOPLAM=TOPLAM+ADC
PAUSEUS 50
NEXT X
ADC=(TOPLAM/10)
adc=abs(511-adc)
voltage=(adc*/1247)
voltage=voltage+2500
AKIM=(ADC*/1889)/10
ONDALIK=(AKIM//10)
RETURN

Voltaj gösterimi konusunada değinmek lazım. Sensör boşta 2,5V zaten veriyor. Bu nedenle akım çekildiğinde buna eklenen voltajı hesaplamamız gerekir. Çünki akım tersine akarsa bu voltaj 2,5V un altına düşmektedir
Dolayısıyla en akıllıca olanı 2,5V boşta verilen voltajı sıfır kabul edip akım çekildiğinde buna eklenen veya bu değerden düşen voltajı belirtmek gerekir ki bence voltaj meselesi kafa karıştırmaktan başka bir işe yaramıyor burada. İsis bağlantısında akım çekilince ADC değeri 511'in üzerine çıkmakta ve dolayısıyla boştaki voltaj değeride 5V ta doğru yaklaşmaktadır.  Programı bu açıklamaya göre değiştirdim.
Ete

aRci


aRci

tersine hesap ile bulmaya calışıyordum ama hesaplayamamıştım sanırım devreyi kurup deneme yapılarak ayar yapmam gerekecek

ete

Bana kalırsa bir şey ayarlaman gerekmiyor. Son verdiğim kod örneği direk çalışması gerekir.
Ete

Powered by EzPortal