|
Svet elektronike Revija za prave elektronike
|
|
Poglej prejšnjo temo :: Poglej naslednjo temo |
Avtor |
Sporočilo |
ata Profesionalec
Pridružen/-a: Pon Apr 2004 9:26 Prispevkov: 110
|
Objavljeno: Pet Okt 17, 2008 5:01 pm Naslov sporočila: bascom program za vklop releja po izteku določenega časa |
|
|
Dokler je recimo temperatura nad določeno vrednostjo je rele izklopljen ,ko pa pade pod vrednost in jo več ne prekorači naj bi po recimo 20 minutah rele preklopil.Če pa v manj kot 20 minutah temperatura zopet naraste nad določeno vrednost program teče naprej IN RELEJA NE VKLOPI. Ne vem če lahko uporabim za tako dolg čas ukaz wait.Ali mi lahko kdo pomaga?
ata |
|
Nazaj na vrh |
|
|
stursc Profesionalec
Pridružen/-a: Pet Feb 2005 14:50 Prispevkov: 109 Kraj: Ravne
|
Objavljeno: Pet Okt 17, 2008 5:58 pm Naslov sporočila: |
|
|
Uporabiš Timer in števec, ki ga boš poljubno nastavljal
LP, stursc |
|
Nazaj na vrh |
|
|
Vlado Profesionalec
Pridružen/-a: Ned Jan 2004 16:11 Prispevkov: 556 Kraj: Ljubljana
|
Objavljeno: Pet Okt 17, 2008 5:59 pm Naslov sporočila: Bascom program za izklop releja po določenem času |
|
|
Ukaz Wait je lahko tipa Byte, (255 sec).
Tudi če bi lahko nastavili zakasnitev na 20 min (1200 sekund) v tem času nebi mogli preveriti temperature ker se program za čas Wait vrti v zanki.
Najbolj enostavno bi bilo uporabiti for next ter v njej zakasnitev 1 sec. .
v zanki vsako sekundo pomeriti temperaturo, ter jo primerjati z vrednostjo.
V primeru da je vrednost večja od nastavljene zapustimo zanko, če pa je manjša ponavljamo zanko toliko časa kolikor smo nastavili zakasnitev za vklop releja. Ko v zanki naštejemo dovolj časa vklopimo rele in zapustimo zanko (nadaljujemo v nekekm podprogramu v katerem bomo spet merili temperaturo in po potrebi izklopili rele).
Wait ukaz ni ne vem kako natančen, natančnost bo še manjša če bomo imeli zelo dolgo For Next ter v njej opravljali še kaj), tako da bo čas potrebno ugotoviti z malo računanja, najlažje pa to naredimo v Simulatorju ki je vgrajen v Bascom ter pogledamo koliko časa procesor porabi za določen ukaz.
Vlado |
|
Nazaj na vrh |
|
|
ata Profesionalec
Pridružen/-a: Pon Apr 2004 9:26 Prispevkov: 110
|
Objavljeno: Sob Okt 25, 2008 8:54 pm Naslov sporočila: Bascom program za izklop releja |
|
|
Ne uspe mi sprogramirati ne v timerju ne v for next zanki vse kaze na to da temu nisem dorasel. Prosim če mi lahko kdo bolj konkretno pomaga.
Manjka mi samo dotični del programa. |
|
Nazaj na vrh |
|
|
Jure Urednik
Pridružen/-a: Pon Jan 2004 12:51 Prispevkov: 2132 Kraj: Ljubljana
|
Objavljeno: Pon Okt 27, 2008 7:43 am Naslov sporočila: Re: Bascom program za izklop releja |
|
|
ata je napisal/a: | Ne uspe mi sprogramirati ne v timerju ne v for next zanki vse kaze na to da temu nisem dorasel. Prosim če mi lahko kdo bolj konkretno pomaga.
Manjka mi samo dotični del programa. |
Ata,
kaj ko bi se prijavil na Bascom-AVR tečaj, ki bo v sredini novembra? V treh urah se boš naučil to in še marsikaj drugega.
Lp
Jure |
|
Nazaj na vrh |
|
|
ata Profesionalec
Pridružen/-a: Pon Apr 2004 9:26 Prispevkov: 110
|
Objavljeno: Pon Okt 27, 2008 2:43 pm Naslov sporočila: |
|
|
Program je sestavljen iz timerja in temperaturnega releja.Vsaka enota zase deluje skupaj pa ne ,deluje samo temperaturni program ne dela pa timer in ne vem kje sem ga polomil.Program sem sestavil od več avtorjev nekaj programa je moje delo.Rad bi šel na tečaj vendar se vse v zivljenju ne izpolni.
Napisal sem nov program mi deluje brezhibno in vodi pec pri prijatelju ze teden dni brez tezav.Če bo po sreči bom nov program skupno z razlago objavil kmalu, saj ste mi vi tudi pomagali
ata
Nazadnje urejal/a ata Sre Nov 19, 2008 1:48 pm; skupaj popravljeno 20 krat |
|
Nazaj na vrh |
|
|
Vlado Profesionalec
Pridružen/-a: Ned Jan 2004 16:11 Prispevkov: 556 Kraj: Ljubljana
|
Objavljeno: Pon Okt 27, 2008 5:21 pm Naslov sporočila: Bascom program za vklop releja po izetku določenega časa |
|
|
S katerim procesorjem pa bo to narejeno?
V bascom8051 (predvidevam da je 8051 ker se omenja P3.0), bi znalo biti težav z RAM-om (stack)!
Program bi bilo dobro komentirati da se ne lovimo.
Citiram: | Do
Locate 2 , 3 : Lcd Minute : Lcd " "
Temp_proc
Waitms 250
Keyboard
Compare_proc
loop
|
Kdaj pa program zapusti to zanko?
Vlado |
|
Nazaj na vrh |
|
|
stursc Profesionalec
Pridružen/-a: Pet Feb 2005 14:50 Prispevkov: 109 Kraj: Ravne
|
Objavljeno: Pon Okt 27, 2008 5:40 pm Naslov sporočila: |
|
|
P.S.
zbrisal sem vso vsebino sporočila, ker mi "pol teksta požre" in je vsebinsko
prazno. Zakaj tako nevem.
LP, stursc
Nazadnje urejal/a stursc Tor Okt 28, 2008 4:09 pm; skupaj popravljeno 2 krat |
|
Nazaj na vrh |
|
|
vilko Profesionalec
Pridružen/-a: Pon Jan 2004 11:54 Prispevkov: 807 Kraj: Ljubljana
|
Objavljeno: Sre Okt 29, 2008 8:09 am Naslov sporočila: |
|
|
Jaz vse releje preklapljam s pomočjo števcev, vsakemu releju, če jih je več dodelim svojega.
Stanje števcem lepo zmanjšuje proti nič timer prekinitveni podprogram, če gre za daljše čase, s pomočjo if v glavnem programu.
V programu postavim števec na določeno stanje, če želim rele vklopiti, ali na nič, če ga želim predčasno izklopiti.
vse je opisano v projetku "Z SMS-i vodeni avtomat", ki je bil pred časom objavljen v SE.
No v glavnem gre za to:
Koda: | '
$regfile = "89c4051.dat"
' $crystal = 11059200
Triac Alias P3.3 'ali rele, ista stvar, ali ne
Dim I As Byte
Dim J As Byte
Dim K As Byte
Dim L As Byte
' Števci
Dim Triacminute As Byte
Triacminute = 2
' V glavnem programu štejemo četrtinke sekunde
' 11059200 / 12 (8051) / 256 (Mode = 1) = 3600
' (za četrt sekunde 900 / 18 (tistevec) = 50 (load timer)
Config Timer0 = Timer , Gate = Internal , Mode = 1
On Timer0 Titi Nosave
Load Timer0 , 50
Enable Timer0
Start Timer0
Dim Tistevec As Byte
Dim Cetrtsek As Byte 'četrtinke sekunde!
Start Timer0
Enable Interrupts
' triac se krmili posredno preko števca minut Triacminute
'
'
Do
If Tistevec > 17 Then
' Nova četrtinka sekunde ----------------------------1/4
Tistevec = Tistevec - 18
Incr Cetrtsek
If Cetrtsek > 239 Then
Cetrtsek = Cetrtsek - 240
' Nova minuta ------------------------------------min
If Triacminute > 0 Then
Decr Triacminute
End If
End If
' ostalo v glavnem programu tukaj .....
' upravljamo triac in ledico
If Triacminute = 0 Then
Set Triac
Else
Reset Triac
End If
Ledica = Triac
Loop
Titi:
'Timer0 interrupt: <-------------
Load Timer0 , 50
Incr Tistevec
Return
'---------timer0 interrupt subroutine - end ----
|
_________________ Sliši se paradoksalno, a je vendarle res:
Nekateri ljudje imajo vedno vse prav. No, včasih. |
|
Nazaj na vrh |
|
|
ata Profesionalec
Pridružen/-a: Pon Apr 2004 9:26 Prispevkov: 110
|
Objavljeno: Sre Okt 29, 2008 11:38 am Naslov sporočila: |
|
|
Vilko ,jaz sem zadnje čase za sprogramirat kaj takega ze nesposoben,sem star in spomin mi ne dela več dobro .Poiskal sem vaš članek v reviji št.129 nalozil programe sms ,prebral članek ,pregledoval programe in glej ga čudo -posvetilo se mi je . Rešili ste mi problem in sem Vam dolzan zahvalo.Lep dan Vam zelim. |
|
Nazaj na vrh |
|
|
vilko Profesionalec
Pridružen/-a: Pon Jan 2004 11:54 Prispevkov: 807 Kraj: Ljubljana
|
Objavljeno: Pet Okt 31, 2008 9:16 am Naslov sporočila: Nikar tako skromno! |
|
|
Nikar tako skromno, ata, mimogrede, jaz sem že dedek.
vsak nekaj zna, in tudi nekaj takega, kar nekdo drug ne zna. Tudi vi znate stvari, ki jih jaz ne znam, in na forumu je veliko takih, ki znajo zelo veliko. zato sem tudi rad na forumu, kjer tudi jaz veliko sprašujem, in tudi veliko izvem. Je namreč na forumu nekaj takih, ki se še niso naveličali razdajati svoje znanje.
Pozdrav in uspešno naprej! _________________ Sliši se paradoksalno, a je vendarle res:
Nekateri ljudje imajo vedno vse prav. No, včasih. |
|
Nazaj na vrh |
|
|
ata Profesionalec
Pridružen/-a: Pon Apr 2004 9:26 Prispevkov: 110
|
Objavljeno: Pet Nov 14, 2008 8:47 pm Naslov sporočila: |
|
|
Najlepša hvala vsem posebno pa Vilkotu. Uspelo mi je sprogramirati program za vodenje peči(pirolitske)z sledečimi funkcijami:
nastavitev vklopa in izklopa ventilatorja-kontrola temperature
regulacija crpalk-vklop-izklop
automatski zaključek vseh funkcij ko pade temperatura po določenem času pod vrednost nastavljene
ustavitev ventilatorja in vklop črpalk v slučaju pregretja
program objavljen predhodno je za nastavitev vklopa in izklopa grelca-kontrola temperature z temperaturo v decimalkah(temperaturni rele-načrt in razlaga je v stevilki 66 ali 68 svet el.) bascom program sem priredil za svoje potrebe in je sestavljen iz programov avtorjev ki so bili objavljeni na forumu ali v revijah svet el.Vodenje peči res nima automatske regulacije ventilatorja in lambda sonde vendar je tudi ta program zame uspeh konec koncev sem le samo elektronik-amater.prepričan sem da lahko marsikdo iz podatkov ki so objavljeni na forumu in v revijah zase sprogramira podoben program po lastnih zeljah
ps: jaz sem tudi dedek z petimi vnuki
ata
Nazadnje urejal/a ata Sre Nov 19, 2008 10:42 am; skupaj popravljeno 1 krat |
|
Nazaj na vrh |
|
|
vilko Profesionalec
Pridružen/-a: Pon Jan 2004 11:54 Prispevkov: 807 Kraj: Ljubljana
|
Objavljeno: Sob Nov 15, 2008 6:17 pm Naslov sporočila: N0 |
|
|
No, vidiš, da imaš nekaj, da se lahko pohvališ! _________________ Sliši se paradoksalno, a je vendarle res:
Nekateri ljudje imajo vedno vse prav. No, včasih. |
|
Nazaj na vrh |
|
|
ata Profesionalec
Pridružen/-a: Pon Apr 2004 9:26 Prispevkov: 110
|
Objavljeno: Sre Nov 19, 2008 1:55 pm Naslov sporočila: |
|
|
Obljuba dela dolg
nov program
'program za vodenje NA PRIMER : peci(pirolitske) na trda goriva
'grelcev
'in podobno
'VIRI:
'JURE
'nacrt (shema) za tiskano vezje in opis temp programa-svet elektronike st 66- izdelajmo merilnik temperature
'avtor Jure Mikeln
'temperaturni in casovni del programa -
'FRENKI
' Program ura s senzorjem temperature DS1820
'http://www2.maxi.si/phpBB2/index.php
'VILKO
'SMS VODENI ..timerji..... bascom programi
'in se veliko forumovcev
'lcd ,nastavitve temperatur tipke in sestavitev programa itd - ata
'procesor AT 89 C4051
'P3,4 vklop in izklop releja za gretje(npr. ventilator,grelec itd)
'P3,5 vklop in izklop releja za casovno zakasnitev(12MINUT)-IZKLOP PEČI če je temperatura vode v peči <12>minut(nastavljiv čas) manjša od nastavljene temp(D=30-nastavljivo)in delovanje peči če je temp večja od nastavljene
'P3.1,P3.0 in P3.3 so tipke za nast. VKLOPNE IN IZKLOPNE temperature vode v peči in nast. temperature za izklop peci po X minutah .
'bodite pozorni na pullup! upore
LCD modul 2x16 standardni brez osvetlitve- po zelji
'vklopna temperatura A mora biti manjša od izklopne N(HISTEREZA)
'uporaba programa na lastno odgovornost
'///////////////////////////////////////////////////////////////////////////////
$large
$regfile = "89c4051.dat"
Rele Alias P3.5
$crystal = 12000000
Declare Sub Rele
Declare Sub Id_1820
Declare Sub Read1820
Declare Sub Temperatura
Declare Sub Keyboard
Declare Sub Compare
Dim 1820_id(8) As Byte , Bd(9) As Byte
Dim Clock As Byte , Clock1 As Byte
Dim Sekunde As Byte , Minute As Byte , Ure As Byte , Tmp As Byte
Dim T As Integer , T1 As Integer , T2 As Integer
Dim A As Integer
Dim N As Integer
Dim D As Integer
Config 1wire = P1.0
Config Lcd = 16 * 2
Cursor Off Noblink
Cls
Config Timer0 = Timer , Gate = Internal , Mode = 2
On Timer0 Timer_0_int
Load Timer0 , 250
Priority Set Timer0
Enable Interrupts
Enable Timer0
'-------------------------------------------------------------------------------
Clock = 0
Clock1 = 0
Sekunde = 0
Minute = 0
Ure = 0
D = 30
A = 25
N = 27
'-------------------------------------------------------------------------------
Id_1820
Start Timer0
Do
If Sekunde > 59 Then
Incr Minute
Sekunde = 0
End If
If T > D Then
Reset Minute
Minute = 0
Lcd ; Minute ; " "
End If
If Minute <> 12 Then
Reset Rele
Else
Set Rele
End If
If Minute > 12 Then
Set Rele
Stop Timer0
End If
Locate 1 , 1 : Lcd "TEMP " ; T : Lcd Chr(46) : Lcd T1 : Lcd "C " ; Chr(126) ; A
Locate 2 , 1 : Lcd "VENT*" ; D ; "* " : Lcd Minute ; " " : Lcd ; Chr(127) ; N ; " "
Temperatura
Keyboard
Compare
Loop
End
'-------------------------------------------------------------------------------
'-------------------------------------------------------------------------------
Sub Id_1820
1wreset 'reset the device
1wwrite &H33 'read ROM command
For Tmp = 1 To 8
1820_id(tmp) = 1wread() 'place into array
Next
End Sub
'-------------------------------------------------------------------------------
Sub Read1820 'bere senzor 'T za 0.1 C
Stop Timer0
1wreset 'reset
1wwrite &H55 '1Wire ukaz
1wwrite 1820_id(1) , 8
1wwrite &HBE
Bd(1) = 1wread(9)
1wreset
Start Timer0
Tmp = Bd(1) And 1 '0.1C natancnost
If Tmp = 1 Then
Decr Bd(1)
End If
T = Makeint(bd(1) , Bd(2))
T = T * 50 : T = T - 25 : T1 = Bd(8) - Bd(7) : T1 = T1 * 100
T1 = T1 / Bd(8) : T = T + T1 : T = T / 10
T1 = T
T = T / 10
T2 = T * 10
T1 = T1 - T2
T1 = Abs(t1)
End Sub
'-------------------------------------------------------------------------------
Sub Temperatura 'merjenje temperature
1wreset
1wwrite &H55
1wwrite 1820_id(1) , 8 '1Wire ukaz
1wwrite &H44
'Wait 1
Wait 1
Read1820 'read 9 bytes
End Sub
'-------------------------------------------------------------------------------
Timer_0_int: 'Vsakih 250 Usek
Incr Clock
If Clock > 99 Then 'ce vec od 99 / vsakih 0.25mili sek
Clock = 0 'postavi ga na 0
Incr Clock1 'povecaj clock1
End If
If Clock1 > 39 Then 'ce 40 (40*25 msek) pretekla je 1 sek
Clock1 = 0 'vrni variablo na 0
Incr Sekunde 'povecaj sekunde
End If
Return
'////////////////////////////////////////////////////////////////////////////////
Mode1:
Cls
Do
Upperline
Lcd "nast vklopa"
Home
Lowerline
Lcd "vklop="
If P3.1 = 0 Then
If P3.0 = 0 Then
Return
End If
Incr A
'Lcd A ; " "
Lcd A
Waitms 250
End If
If P3.3 = 0 Then
Decr A
'Lcd A ; " "
Lcd A
Waitms 250
End If
If P3.0 = 0 Then
If P3.1 = 0 Then
Cls
Return
End If
End If
Loop
Return
Mode2:
Cls
Do
Upperline
Lcd "nast izklopa"
Home
Lowerline
Lcd "izklop="
If P3.1 = 0 Then
If P3.0 = 0 Then
Return
End If
Incr N
'Lcd N ; " "
Lcd N
Waitms 250
End If
If P3.3 = 0 Then
Decr N
'Lcd N ; " "
Lcd N
Waitms 250
End If
If P3.0 = 0 Then
If P3.1 = 0 Then
Cls
Return
End If
End If
Loop
Return
Mode3:
Cls
Do
Upperline
Lcd "nast VENT"
Home
Lowerline
Lcd "VENT="
If P3.1 = 0 Then
If P3.0 = 0 Then
Return
End If
Incr D
'Lcd D ; " "
Lcd D
Waitms 250
End If
If P3.3 = 0 Then
Decr D
'Lcd D ; " "
Lcd D
Waitms 250
End If
If P3.0 = 0 Then
If P3.1 = 0 Then
Return
End If
End If
Loop
Return
Sub Keyboard
Debounce P3.3 , 0 , Mode1 , Sub
Debounce P3.0 , 0 , Mode2 , Sub
Debounce P3.1 , 0 , Mode3 , Sub
End Sub
'///////////////////////////////////////////////////////////////////////////////
Sub Compare
If T <= A Then
P3.4 = 0
End If
If T >= N Then
P3.4 = 1
End If
End Sub
ata |
|
Nazaj na vrh |
|
|
ata Profesionalec
Pridružen/-a: Pon Apr 2004 9:26 Prispevkov: 110
|
Objavljeno: Čet Apr 09, 2009 1:40 pm Naslov sporočila: |
|
|
Zgoraj napisani program je opravljal svojo nalogo regulacije pirolitske peči celo zimsko sezono brezhibno in sem zelo vesel, prijatelj pa še bolj. |
|
Nazaj na vrh |
|
|
|
|
Ne, ne moreš dodajati novih tem v tem forumu Ne, ne moreš odgovarjati na teme v tem forumu Ne, ne moreš urejati svojih prispevkov v tem forumu Ne, ne moreš brisati svojih prispevkov v tem forumu Ne ne moreš glasovati v anketi v tem forumu You cannot attach files in this forum You cannot download files in this forum
|
Powered by phpBB © 2001, 2005 phpBB Group
|