LM35 ile Motor kontrolü

Başlatan dadas331, 01 Ocak 2016, 01:30:16

dadas331

Arkadaşlar forumda yeniyim diğer konulara baktım ama bulamadım projemde 3 adet sıcaklık değerlerine göre motorların çalışması gerekiyor yalnız birden çok motor çalıştığı zaman motorlar sırayla çalışıyor if komutlarında bi hata var galiba ama çözemedim yardımlarınızı bekliyorum.Teşekkürler.
Basla:

AN0=ADIn 0
Sensor1= (484*AN0)/1000
Print At 1,1,"1. Derece= ", Dec Sensor1, "     " 

If  Sensor1 >= 35 Then  
PORTE.0=1
Else 
PORTE.0=0
EndIf

AN1=ADIn 1
Sensor2= (488*AN1)/1000
Print At 2,1,"2. Derece= ", Dec Sensor2, "     " 

If  Sensor2 >= 40 Then  
PORTE.1=1
Else 
PORTE.1=0
EndIf

AN2=ADIn 2
Sensor3= (488*AN2)/1000
Print At 1,17,"3. Derece= ", Dec Sensor3, "     "  

If  Sensor3 >= 45 Then  
PORTE.2=1
Else 
PORTE.2=0
EndIf 

GoTo Basla

http://dosya.co/rfqyjh0gyhss/project.zip.html

Maxim

böyle daha iyi

Device = 18F4520

Config_Start
  FCMEN = OFF	;Fail-Safe Clock Monitor disabled
  IESO = OFF	;Oscillator Switchover mode disabled
  PWRT = OFF	;PWRT disabled
  WDT = OFF	;WDT enabled
  WDTPS = 32768	;1:32768
  PBADEN = OFF	;PORTB<4:0> pins are configured as digital I/O on Reset
  LPT1OSC = OFF	;Timer1 configured for higher power operation
  MCLRE = On	;MCLR pin enabled; RE3 input pin disabled
  STVREN = On	;Stack full/underflow will cause Reset
  LVP = On	;Single-Supply ICSP enabled
  XINST = OFF	;Instruction set extension and Indexed Addressing mode disabled (Legacy mode)
  Debug = OFF	;Background debugger disabled, RB6 and RB7 configured as general purpose I/O pins
  Cp0 = OFF	;Block 0 (000800-001FFFh) is not code-protected
  CP1 = OFF	;Block 1 (002000-003FFFh) is not code-protected
  CP2 = OFF	;Block 2 (004000-005FFFh) is not code-protected
  CP3 = OFF	;Block 3 (006000-007FFFh) is not code-protected
  CPB = OFF	;Boot block (000000-0007FFh) is not code-protected
  CPD = OFF	;Data EEPROM is not code-protected
  WRT0 = OFF	;Block 0 (000800-001FFFh) is not write-protected
  WRT1 = OFF	;Block 1 (002000-003FFFh) is not write-protected
  WRT2 = OFF	;Block 2 (004000-005FFFh) is not write-protected
  WRT3 = OFF	;Block 3 (006000-007FFFh) is not write-protected
  WRTC = OFF	;Configuration registers (300000-3000FFh) are not write-protected
  WRTB = OFF	;Boot block (000000-0007FFh) is not write-protected
  WRTD = OFF	;Data EEPROM is not write-protected
  EBTR0 = OFF	;Block 0 (000800-001FFFh) is not protected from table reads executed in other blocks
  EBTR1 = OFF	;Block 1 (002000-003FFFh) is not protected from table reads executed in other blocks
  EBTR2 = OFF	;Block 2 (004000-005FFFh) is not protected from table reads executed in other blocks
  EBTR3 = OFF	;Block 3 (006000-007FFFh) is not protected from table reads executed in other blocks
  EBTRB = OFF	;Boot block (000000-0007FFh) is not protected from table reads executed in other blocks
Config_End

;**** End of Fuse Configurator Settings ****
;-------------------------------------------------------------------------------

Declare Xtal=4

Declare LCD_Type 0
Declare LCD_DTPin PORTB.4
Declare LCD_RSPin PORTB.2
Declare LCD_ENPin PORTB.3
Declare LCD_Interface 4
Declare LCD_Lines 4

Declare Adin_Res 10
Declare Adin_Tad FRC
Declare Adin_Stime 50


Output PORTE.0
Output PORTE.1
Output PORTE.2


TRISA=%00000111
TRISB=0

ADCON1=%1011
ADCON2=%10000000

Dim SENSOR1 As Float
Dim SENSOR2 As Float
Dim SENSOR3 As Float

DelayMS 300
Cls

Print At 1,1, "Murat IZMIRLI"
DelayMS 500

Cls

Basla:

SENSOR1=ADIn 0
SENSOR1= (SENSOR1 * 5.0) /1024
SENSOR1= SENSOR1 * 100
Print At 1,1,"1.Derece=", Dec1 SENSOR1,"  " 

If  SENSOR1 >= 35 Then  
PORTE.0=1
Else 
PORTE.0=0
EndIf

SENSOR2=ADIn 1
SENSOR2= (SENSOR2 * 5.0) /1024
SENSOR2= SENSOR2 * 100
Print At 2,1,"2.Derece=", Dec1 SENSOR2,"  " 

If  SENSOR2 >= 40 Then  
PORTE.1=1
Else 
PORTE.1=0
EndIf

SENSOR3=ADIn 2
SENSOR3= (SENSOR3 * 5.0) /1024
SENSOR3= SENSOR3 * 100
Print At 1,17,"3.Derece=", Dec1 SENSOR3,"  "  

If  SENSOR3 >= 45 Then  
PORTE.2=1
Else 
PORTE.2=0
EndIf 

GoTo Basla

End 

dadas331

Kod için teşekkürler.
Birden fazla motor devreye girdiği zaman sırayla dönüyorlar parazit oluyor.Projemde devamlı dönmesi gerekiyor  devrede  bi eksiklik mi var acaba bu sorunu nasıl düzeltebilirim?

Maxim

#3
şimdi kod mu hatalı? devre tasarımımı hatalı?
sizin kod çalışmıyordu, benimkini denedinizmi?

hatta bunu kullanın daha az yer kaplıyor
Device = 18F4520

Config_Start
  FCMEN = OFF	;Fail-Safe Clock Monitor disabled
  IESO = OFF	;Oscillator Switchover mode disabled
  PWRT = OFF	;PWRT disabled
  WDT = OFF	;WDT enabled
  WDTPS = 32768	;1:32768
  PBADEN = OFF	;PORTB<4:0> pins are configured as digital I/O on Reset
  LPT1OSC = OFF	;Timer1 configured for higher power operation
  MCLRE = On	;MCLR pin enabled; RE3 input pin disabled
  STVREN = On	;Stack full/underflow will cause Reset
  LVP = On	;Single-Supply ICSP enabled
  XINST = OFF	;Instruction set extension and Indexed Addressing mode disabled (Legacy mode)
  Debug = OFF	;Background debugger disabled, RB6 and RB7 configured as general purpose I/O pins
  Cp0 = OFF	;Block 0 (000800-001FFFh) is not code-protected
  CP1 = OFF	;Block 1 (002000-003FFFh) is not code-protected
  CP2 = OFF	;Block 2 (004000-005FFFh) is not code-protected
  CP3 = OFF	;Block 3 (006000-007FFFh) is not code-protected
  CPB = OFF	;Boot block (000000-0007FFh) is not code-protected
  CPD = OFF	;Data EEPROM is not code-protected
  WRT0 = OFF	;Block 0 (000800-001FFFh) is not write-protected
  WRT1 = OFF	;Block 1 (002000-003FFFh) is not write-protected
  WRT2 = OFF	;Block 2 (004000-005FFFh) is not write-protected
  WRT3 = OFF	;Block 3 (006000-007FFFh) is not write-protected
  WRTC = OFF	;Configuration registers (300000-3000FFh) are not write-protected
  WRTB = OFF	;Boot block (000000-0007FFh) is not write-protected
  WRTD = OFF	;Data EEPROM is not write-protected
  EBTR0 = OFF	;Block 0 (000800-001FFFh) is not protected from table reads executed in other blocks
  EBTR1 = OFF	;Block 1 (002000-003FFFh) is not protected from table reads executed in other blocks
  EBTR2 = OFF	;Block 2 (004000-005FFFh) is not protected from table reads executed in other blocks
  EBTR3 = OFF	;Block 3 (006000-007FFFh) is not protected from table reads executed in other blocks
  EBTRB = OFF	;Boot block (000000-0007FFh) is not protected from table reads executed in other blocks
Config_End

;**** End of Fuse Configurator Settings ****
;-------------------------------------------------------------------------------

Declare Xtal=4

Declare LCD_Type 0
Declare LCD_DTPin PORTB.4
Declare LCD_RSPin PORTB.2
Declare LCD_ENPin PORTB.3
Declare LCD_Interface 4
Declare LCD_Lines 4

Declare Adin_Res 10
Declare Adin_Tad FRC
Declare Adin_Stime 50


Output PORTE.0
Output PORTE.1
Output PORTE.2


TRISA=%00000111
TRISB=0

ADCON1=%1011
ADCON2=%10000000

Dim SENSOR1 As Float
Dim SENSOR2 As Float
Dim SENSOR3 As Float

DelayMS 300
Cls

Print At 1,1, "Murat IZMIRLI"
DelayMS 500

Cls

Basla:

SENSOR1=ADIn 0
SENSOR1= SENSOR1 * 0.488
Print At 1,1,"1.Derece=", Dec1 SENSOR1,"  " 

If  SENSOR1 >= 35 Then  
PORTE.0=1
Else 
PORTE.0=0
EndIf

SENSOR2=ADIn 1
SENSOR2= SENSOR2 * 0.488
Print At 2,1,"2.Derece=", Dec1 SENSOR2,"  " 

If  SENSOR2 >= 40 Then  
PORTE.1=1
Else 
PORTE.1=0
EndIf

SENSOR3=ADIn 2
SENSOR3= SENSOR3 * 0.488
Print At 1,17,"3.Derece=", Dec1 SENSOR3,"  "  

If  SENSOR3 >= 45 Then  
PORTE.2=1
Else 
PORTE.2=0
EndIf 

GoTo Basla


mesaj birleştirme:: 01 Ocak 2016, 19:26:44

her sensör çıkışına 10k seri direnç ekleyin ve onların çıkışlarınada gnd arasına 100nf koyun
büyük oranda parazitler azalacaktır

dadas331

Evet kodda hata vardı LCDde yazılar bozuluyordu paylaştığınız kod ile düzelttim onu sağolun.
Direnç ve kondansatörleri şekildeki gibi bağladım yine parazit yapıyor bunun tam olarak bi çözümü yok mu? Realde nasıl görünür bu parazitler bi sorun olur mu sizce?

Maxim

yazdıklarımı dikkatli okumuyorsun
sensör çıkışlarına diyorum
sensör=LM35

dadas331

Sensör çıkışı deyince motora giden kablolar aklıma geldi nedense ??? Tamamdır şu şekilde hallettim gibi. Teşekkürler.


Projeme eklemek istediğim bazı şeyler daha var:
1) Sıcaklık sensörlerinin değerlerini analog olarak ayrı ayrı butonlar ile ayarlamak mümkün mü? Hiç kaynak bulamadım. Nasıl yapmam gerekiyor?
2) Ayrıca her 3 saatte bi 10 dk çalışacak motor eklemek istiyorum bu motoru da delay ile ayarlayabilirim ama kodda nereye yazmam gerekiyor diğer sistemin etkilenmemesi için?

Maxim

şimdi sensör okumadaki dalgalanma makul seviyeye indimi peki?

neredeyse herşey mümkün :)
mesela 3 buton olabilir, biri sensör seçer, diğerleri yukarı-aşağı değer ayarlar
diğeride yapılır tabi ama bu 4. motormu olacak? o zaman ana döngü içine bir delay döngüsü koymak lazım

mehmet

Sanırım arkadaş Protesus sanallığı ile gerçeklik
arasına sıkışmış durumda. Zira LM35 zaten
kendisi sıcaklığa göre çıkışını analog olarak
değiştiriyor. Dışarıdan bir butonla müdahaleye
gerek yok.
Olan olmuştur,
olacak olan da olmuştur.
Olacak bir şey yoktur.
---------------------------------------------
http://www.mehmetbilgi.net.tr
https://creativecommons.org/licenses/by/4.0/deed.tr "CC BY"

dadas331

#9
Projemin son hali şu şekilde:
http://dosya.co/ftnhhizlwlg8/proje.rar.html

Evet maxim ustam dediğin gibi 3 buton ile ayarlama yapılabilir. Fakat bunu nasıl yapacağım hiç bi fikrim yok  :-[ . Bunun ile ilgili bi kaynak önerebilir misiniz?
4. motor şeklinde olacak ama ana döngü içerisine 3 saatlik delay yazdığım zaman LM35ler duruyor bunu nasıl önleyebilirim?

Mehmet ustam zaten amacım realde buton ile ayarlayabilmek.

mehmet

Sanırım şimdi anladım; sensör referanslarını değiştireceksiniz. Bunun
için buton ile ekranda değişken artırma/eksiltme örnekleri çalışınız.
Her sensör ve sensör seçimi için birer değişken tanımlayıp değişikliklerini
gözlemleyiniz.
Uzun zamanlı gecikmeler için de sayıcı yapınız, bu sayıcının istediğiniz
süreye gelinceye kadar ki sayısını hesaplayıp bu sayıya ulaşmayı
kontrol edebilirsiniz...
Olan olmuştur,
olacak olan da olmuştur.
Olacak bir şey yoktur.
---------------------------------------------
http://www.mehmetbilgi.net.tr
https://creativecommons.org/licenses/by/4.0/deed.tr "CC BY"

Maxim

#11
butonlar için eeproma kayıtlı bir kod yazdım (pek iyi olmadı ama çalışıyor)

öncelikle programda değişiklikler var
-internal osc kullandım 8mhz, devreye kristal takmaya gerek yok, A6 ve A7 artık normal input-output pini.
-mclr iptal, mclr ucunu +5 volta vermeye gerek kalmadı, PORTE.3 normal input pini oldu.
-PORTC çıkış komutu yerine LATC kullandım sorun çıkıyordu.
-EERPOM kullanırken dikkat edin, hatalı kullanım eepromun ömrünü bitirebilir.
-proteusta parazit olmaz, boşuna sensör çıkışlarına kondansatör eklemeyin.

*PORTC.0 , PORTC.1 VE PORTC.2 girişleri 10k direncçler ile +5 volta pull-up şekilde bağlı
bu girişlerde 3 adet buton var, butonların diğer uçları GND ye bağlı.

portc.0 seçim butonu
portc.1 (+)
portc.2 (-)


;-------------------------------------------------------------------------------
;**** Added by Fuse Configurator ****
; Use the Fuse Configurator plug-in to change these settings

Device = 18F4520

Config_Start
  OSC = INTIO67	;Internal oscillator block, port function on RA6 and RA7
  FCMEN = OFF	;Fail-Safe Clock Monitor disabled
  IESO = OFF	;Oscillator Switchover mode disabled
  PWRT = On	;PWRT enabled
  BOREN = OFF	;Brown-out Reset disabled in hardware and software
  BORV = 3	;Minimum setting
  WDT = OFF	;WDT disabled (control is placed on the SWDTEN bit)
  WDTPS = 32768	;1:32768
  CCP2MX = PORTC	;CCP2 input/output is multiplexed with RC1
  PBADEN = On	;PORTB<4:0> pins are configured as analog input channels on Reset
  LPT1OSC = OFF	;Timer1 configured for higher power operation
  MCLRE = OFF	;RE3 input pin enabled; MCLR disabled
  STVREN = OFF	;Stack full/underflow will not cause Reset
  LVP = OFF	;Single-Supply ICSP disabled
  XINST = OFF	;Instruction set extension and Indexed Addressing mode disabled (Legacy mode)
  Debug = OFF	;Background debugger disabled, RB6 and RB7 configured as general purpose I/O pins
  Cp0 = OFF	;Block 0 (000800-001FFFh) not code-protected
  CP1 = OFF	;Block 1 (002000-003FFFh) not code-protected
  CP2 = OFF	;Block 2 (004000-005FFFh) not code-protected
  CP3 = OFF	;Block 3 (006000-007FFFh) not code-protected
  CPB = OFF	;Boot block (000000-0007FFh) not code-protected
  CPD = OFF	;Data EEPROM not code-protected
  WRT0 = OFF	;Block 0 (000800-001FFFh) not write-protected
  WRT1 = OFF	;Block 1 (002000-003FFFh) not write-protected
  WRT2 = OFF	;Block 2 (004000-005FFFh) not write-protected
  WRT3 = OFF	;Block 3 (006000-007FFFh) not write-protected
  WRTC = OFF	;Configuration registers (300000-3000FFh) not write-protected
  WRTB = OFF	;Boot block (000000-0007FFh) not write-protected
  WRTD = OFF	;Data EEPROM not write-protected
  EBTR0 = OFF	;Block 0 (000800-001FFFh) not protected from table reads executed in other blocks
  EBTR1 = OFF	;Block 1 (002000-003FFFh) not protected from table reads executed in other blocks
  EBTR2 = OFF	;Block 2 (004000-005FFFh) not protected from table reads executed in other blocks
  EBTR3 = OFF	;Block 3 (006000-007FFFh) not protected from table reads executed in other blocks
  EBTRB = OFF	;Boot block (000000-0007FFh) not protected from table reads executed in other blocks
Config_End

;**** End of Fuse Configurator Settings ****
;-------------------------------------------------------------------------------

Declare Xtal=8
OSCCON.1=1
OSCCON.6=1
OSCCON.5=1
OSCCON.4=1

TRISA=%00000111
TRISB=0
TRISC=%00000111
TRISE=%000

Declare LCD_Type 0
Declare LCD_DTPin PORTB.4
Declare LCD_RSPin PORTB.2
Declare LCD_ENPin PORTB.3
Declare LCD_Interface 4
Declare LCD_Lines 4

Declare Adin_Res 10
Declare Adin_Tad FRC
Declare Adin_Stime 50

ADCON1=%1011
ADCON2=%10000000

Dim SENSOR1 As Float
Dim SENSOR2 As Float
Dim SENSOR3 As Float

Dim SEC As Byte:If SEC=0 Or SEC>3 Then SEC=1

Dim S1 As Byte:If S1<30 Or S1>50 Then S1=30
Dim S2 As Byte:If S2<30 Or S2>50 Then S2=30
Dim S3 As Byte:If S3<30 Or S3>50 Then S3=30

S1 = ERead 10
S2 = ERead 15
S3 = ERead 20

DelayMS 300
Cls

Print At 1,1, "Otomatik Kontrol"
DelayMS 500

Cls

Basla:
GoSub OLCUM
GoSub MOTOR

If PORTC.0=0 Then 
DelayMS 1000
Inc SEC
EndIf
If SEC=0 Or SEC>3 Then SEC=1

'------------------------------
If SEC=1 Then
  If PORTC.1=0 Then
  DelayMS 500
  S1=S1+1
  If S1<30 Or S1>50 Then S1=30
  EWrite 10,[S1]
  EndIf
  
  If PORTC.2=0 Then
  DelayMS 500
  S1=S1-1
  If S1<30 Or S1>50 Then S1=30
  EWrite 10,[S1]
  EndIf
  
EndIf
'------------------------------
If SEC=2 Then
  If PORTC.1=0 Then
  DelayMS 500
  S2=S2+1
  If S2<30 Or S2>50 Then S2=30
  EWrite 15,[S2]
  EndIf
  
  If PORTC.2=0 Then
  DelayMS 500
  S2=S2-1
  If S2<30 Or S2>50 Then S2=30
  EWrite 15,[S2]
  EndIf
  
EndIf
'------------------------------
If SEC=3 Then
  If PORTC.1=0 Then
  DelayMS 500
  S3=S3+1
  If S3<30 Or S3>50 Then S3=30
  EWrite 20,[S3]
  EndIf
  
  If PORTC.2=0 Then
  DelayMS 500
  S3=S3-1
  If S3<30 Or S3>50 Then S3=30
  EWrite 20,[S3]
  EndIf
EndIf
'------------------------------

Print At 4,1,"SEC:",Dec SEC," ","1:",Dec S1," ","2:",Dec S2," ","3:",Dec S3," "
GoTo Basla


OLCUM:
SENSOR1=ADIn 0
DelayMS 1
SENSOR1= SENSOR1 * 0.488
Print At 1,1,"1.Derece=", Dec1 SENSOR1,"  "

SENSOR2=ADIn 1
DelayMS 1
SENSOR2= SENSOR2 * 0.488
Print At 2,1,"2.Derece=", Dec1 SENSOR2,"  "

SENSOR3=ADIn 2
DelayMS 1
SENSOR3= SENSOR3 * 0.488
Print At 3,1,"3.Derece=", Dec1 SENSOR3,"  "
Return


MOTOR:
If  SENSOR1>= S1 Then  
LATE.0=1
Else 
LATE.0=0
EndIf

If  SENSOR2>= S2 Then  
LATE.1=1
Else 
LATE.1=0
EndIf

If  SENSOR3>= S3 Then  
LATE.2=1
Else 
LATE.2=0
EndIf 

Return




dadas331

mehmet ve Maxim ustam size ne kadar teşekkür etsem azdır sayenizde projemi tamamladım :)

Sizin gönderdiğiniz kodun üzerinde bazı ufak değişiklikler yaptım ve ayrı bi motor bağlayarak onu kontrol ettim.
Verileri LCDye sığdırabilmek içinde kısaltmalar yaptım :)

http://dosya.co/eacau981r6vn/proje.rar.html

Maxim

bir sürü hata var

öncelikle şunu hemen yap:
sendeki proteus dosyasındaki lcd simulasyonu bir şekilde bozulmuş
1-proteusu aç
2-şemadan lcd ekranı sil ,kaydet
3-edit altında "Tidy design" var onu tıkla, ok de , tekrar kaydet.
4-şimdi tekrar parçalardan lcd ekranı bul ve şemaya ekle, bağlantıları yap ve kaydet.

print komutu kullanımın çok hatalı, onları düzenledim
şöyle bir menü yaptım



gerçek devrede tüm röle bobinlerine ters diyot koyman şart.
yoksa her röle çekişinde lcd resetler.

;-------------------------------------------------------------------------------
;**** Added by Fuse Configurator ****
; Use the Fuse Configurator plug-in to change these settings

Device = 18F4520

Config_Start
  OSC = INTIO67	;Internal oscillator block, port function on RA6 and RA7
  FCMEN = OFF	;Fail-Safe Clock Monitor disabled
  IESO = OFF	;Oscillator Switchover mode disabled
  PWRT = On	;PWRT enabled
  BOREN = OFF	;Brown-out Reset disabled in hardware and software

  WDT = OFF	;WDT disabled (control is placed on the SWDTEN bit)
  WDTPS = 32768	;1:32768
  CCP2MX = PORTC	;CCP2 input/output is multiplexed with RC1
  PBADEN = On	;PORTB<4:0> pins are configured as analog input channels on Reset
  LPT1OSC = OFF	;Timer1 configured for higher power operation
  MCLRE = OFF	;RE3 input pin enabled; MCLR disabled
  STVREN = OFF	;Stack full/underflow will not cause Reset
  LVP = OFF	;Single-Supply ICSP disabled
  XINST = OFF	;Instruction set extension and Indexed Addressing mode disabled (Legacy mode)
  Debug = OFF	;Background debugger disabled, RB6 and RB7 configured as general purpose I/O pins
  Cp0 = OFF	;Block 0 (000800-001FFFh) not code-protected
  CP1 = OFF	;Block 1 (002000-003FFFh) not code-protected
  CP2 = OFF	;Block 2 (004000-005FFFh) not code-protected
  CP3 = OFF	;Block 3 (006000-007FFFh) not code-protected
  CPB = OFF	;Boot block (000000-0007FFh) not code-protected
  CPD = OFF	;Data EEPROM not code-protected
  WRT0 = OFF	;Block 0 (000800-001FFFh) not write-protected
  WRT1 = OFF	;Block 1 (002000-003FFFh) not write-protected
  WRT2 = OFF	;Block 2 (004000-005FFFh) not write-protected
  WRT3 = OFF	;Block 3 (006000-007FFFh) not write-protected
  WRTC = OFF	;Configuration registers (300000-3000FFh) not write-protected
  WRTB = OFF	;Boot block (000000-0007FFh) not write-protected
  WRTD = OFF	;Data EEPROM not write-protected
  EBTR0 = OFF	;Block 0 (000800-001FFFh) not protected from table reads executed in other blocks
  EBTR1 = OFF	;Block 1 (002000-003FFFh) not protected from table reads executed in other blocks
  EBTR2 = OFF	;Block 2 (004000-005FFFh) not protected from table reads executed in other blocks
  EBTR3 = OFF	;Block 3 (006000-007FFFh) not protected from table reads executed in other blocks
  EBTRB = OFF	;Boot block (000000-0007FFh) not protected from table reads executed in other blocks
Config_End

;**** End of Fuse Configurator Settings ****
;-------------------------------------------------------------------------------

Declare Xtal=8
OSCCON.1=1
OSCCON.6=1
OSCCON.5=1
OSCCON.4=1

TRISA=%00000111
TRISB=0
TRISC=%00000111
TRISE=%000

Declare LCD_DTPin PORTB.4
Declare LCD_RSPin PORTB.2
Declare LCD_ENPin PORTB.3
Declare LCD_Interface 4
Declare LCD_Lines 4

Declare Adin_Res 10
Declare Adin_Tad FRC
Declare Adin_Stime 50

ADCON1=%1011
ADCON2=%10000000

Dim SENSOR1 As Float
Dim SENSOR2 As Float
Dim SENSOR3 As Float

Output PORTD.3

Dim SEC As Byte:If SEC=0 Or SEC>3 Then SEC=1
Dim sayi As Byte
Dim S1 As Byte:If S1<30 Or S1>50 Then S1=30
Dim S2 As Byte:If S2<30 Or S2>50 Then S2=30
Dim S3 As Byte:If S3<30 Or S3>50 Then S3=30

S1 = ERead 10
S2 = ERead 15
S3 = ERead 20

DelayMS 300


Print At 1,2, "Otomatik Kontrol"
DelayMS 500

Cls

Basla:
GoSub OLCUM
GoSub MOTOR
GoSub SULAMA

If PORTC.0=0 Then 
DelayMS 1000
Inc SEC
EndIf
If SEC=0 Or SEC>3 Then SEC=1

'------------------------------
If SEC=1 Then
  If PORTC.1=0 Then
  DelayMS 500
  S1=S1+1
  If S1<30 Or S1>50 Then S1=30
  EWrite 10,[S1]
  EndIf
  
  If PORTC.2=0 Then
  DelayMS 500
  S1=S1-1
  If S1<30 Or S1>50 Then S1=30
  EWrite 10,[S1]
  EndIf
  
EndIf
'------------------------------
If SEC=2 Then
  If PORTC.1=0 Then
  DelayMS 500
  S2=S2+1
  If S2<30 Or S2>50 Then S2=30
  EWrite 15,[S2]
  EndIf
  
  If PORTC.2=0 Then
  DelayMS 500
  S2=S2-1
  If S2<30 Or S2>50 Then S2=30
  EWrite 15,[S2]
  EndIf
  
EndIf
'------------------------------
If SEC=3 Then
  If PORTC.1=0 Then
  DelayMS 500
  S3=S3+1
  If S3<30 Or S3>50 Then S3=30
  EWrite 20,[S3]
  EndIf
  
  If PORTC.2=0 Then
  DelayMS 500
  S3=S3-1
  If S3<30 Or S3>50 Then S3=30
  EWrite 20,[S3]
  EndIf
EndIf

Print At 1,11,"Set1)",Dec S1," "
Print At 2,11,"Set2)",Dec S2," "
Print At 3,11,"Set3)",Dec S3," "
Print At 2,20,Dec SEC
GoTo Basla


OLCUM:
SENSOR1=ADIn 0
DelayMS 1
SENSOR1= SENSOR1 * 0.488
Print At 1,1,"1)", Dec1 SENSOR1,"  "

SENSOR2=ADIn 1
DelayMS 1
SENSOR2= SENSOR2 * 0.488
Print At 2,1,"2)", Dec1 SENSOR2,"  "

SENSOR3=ADIn 2
DelayMS 1
SENSOR3= SENSOR3 * 0.488
Print At 3,1,"3)", Dec1 SENSOR3,"  "
Return


MOTOR:
If  SENSOR1>= S1 Then  
LATE.0=1
Else 
LATE.0=0
EndIf

If  SENSOR2>= S2 Then  
LATE.1=1
Else 
LATE.1=0
EndIf

If  SENSOR3>= S3 Then  
LATE.2=1
Else 
LATE.2=0
EndIf 
Return

SULAMA:
Inc sayi

If sayi=1 Then
PORTD.3=0
Print At 4,5, "MOTOR KAPALI"
EndIf

If sayi=51 Then
PORTD.3=1
Print At 4,5, "MOTOR ACIK  "
EndIf

If sayi=61 Then
PORTD.3=0
Print At 4,5, "MOTOR KAPALI"
sayi=0
EndIf
Return

dadas331

Maxim ustam Allah razı olsun eline sağlık  :)
LCDyi 20x4 olarak değiştirdim herşey daha güzel oldu çok sağolun
Dediğiniz diyotları da yerleştirdim artık reale geçme zamanı umarım tüm parçaları bulup projeyi bitiririm.