AC korektor sa Pic-om 12F877
Moderators: pedja089, stojke369, [eDo], trax
AC korektor sa Pic-om 12F877
Pozdrav, napravio sam simulaciju ovog korektora iz knjige Voje Milanovica, i pokusavam da ga simuliram u Proteusu al mi nikako ne ide. Neznam gde gresim ako neko ima volje da mi pomogne unapred hvala
- Attachments
-
- 16f877.rar
- Projekat i .hex
- (25.82 KiB) Downloaded 313 times
Re: AC korektor sa Pic-om 12F877
Evo i .bas primera nesto mi nije logican, po njemu treba prortC da pusta izlaze za relej, a na semi ide portD, probao sam da to zamenim u basu ali kad probam da kompajliram izbaci mi gresku, da je kompajler demo verzija
Hvala
Hvala
- Attachments
-
- KOREKTOR.rar
- .bas fajl
- (1.24 KiB) Downloaded 288 times
- morski_pas
- Odlično uznapredovao
- Posts: 639
- Joined: 07-03-2011, 23:58
- Location: Rijeka
Re: AC korektor sa Pic-om 12F877
bilo bi dobro da pošalješ i proteus fajl
Re: AC korektor sa Pic-om 12F877
pa ima ga u prvom postu i projekat i hex
- morski_pas
- Odlično uznapredovao
- Posts: 639
- Joined: 07-03-2011, 23:58
- Location: Rijeka
Re: AC korektor sa Pic-om 12F877
u prvom postu imaš neki 1.pdsprj fajl za proteus je koliko ja znam ekstenzija .DSN
Re: AC korektor sa Pic-om 12F877
pa ja otvorim proteusom taj fajl i tu je sema, objasni mi kako da ga snimim drugacije pa cu i tako da ga postavim
Hvala
Hvala
- morski_pas
- Odlično uznapredovao
- Posts: 639
- Joined: 07-03-2011, 23:58
- Location: Rijeka
Re: AC korektor sa Pic-om 12F877
ja koristim proteus 7.7 SP2 ili ISIS 7 Profesional ,neznam koju ti verziju koristiš i ona snima u DSN ekstenziji
Re: AC korektor sa Pic-om 12F877
Morski, izgleda da je to neka vrsta arhive, otvara je Winrar.
Lijenost je iz raja izašla.
Re: AC korektor sa Pic-om 12F877
To je proteus projekat V8.0. Ali u tom fajlu nije simulacija. Bar tako mislim...
Re: AC korektor sa Pic-om 12F877
Koristim Proteus 8 i on tako snima projekat. Znaci samo sam zapakovao projekat i hex fajl u RAR. Preuzeto sa neta: Proteus 8 stores the design (DSN), layout (LYT) and common database in a single project file (PDSPRJ).
Hvala
Hvala
Re: AC korektor sa Pic-om 12F877
u medjuvremenu drugar mi je prepravio program, pa ako vidite da nesto ne valja da i to izmenimo:
'Program korektor napona.
'Meri mrezni napon i zavisno od rezultata merenja
'ukljucuje odgovarajuci relej i tako na autotransformatoru
'bira odgovrajuci izvod zavisno od mreznog napona.
'Max ulazni napon 260V = 1024 na AD konvertoru
'1/1024 na AD konvertoru = 0.254V ulaznog napona
'160V = 630
'170V = 669
'180V = 709
'190V = 748
'200V = 787
'210V = 827
'220V = 866
'260V = 1024
'konvertovana vrednost * 0.254V = ulazni napon
'konvertovana vrednost * 0.00488V = napon na delitelju
Define ADC_BITS 10 ' Broj bita
Define ADC_CLOCK 1 ' Klok (0=Oscilator /8)
AD_Rez var word ' Rezultat AD konverzije
Napon var word ' Promenljiva za dobijanje napona
TRISA = %11111111 ' Port A je ulazni
TRISB = %00000100 ' Port B
TRISC = %11111111 ' Port C je ulazni
TRISD = %00000000 ' Port D je izlazni
ADCON1 = %10000010 ' Port A je u analognom modu, 0 i 5V su
' referentni naponi a rezultat je desno formatiran.
Dummy var byte ' Promenljiva za 32 bitno delenje i mnozenje
symbol DQ = portc.2 ' DQ linija za termometar
symbol Greska = portb.5 'Linija LED diode greske
portb.5 = 1
symbol Rucni = portb.4 'Linija za identifikaciju rucnog rada
portb.4 = 1
symbol Rucni_rad = portb.2 'Linija za identifikaciju rucnog rada
portb.2 = 1
temperatura Var Word ' Izracunata temperatura
temper1 Var Word ' Izracunata temperatura
count_remain Var Byte ' Ostatak
count_per_c Var Byte ' Po stepenu C
PortD = $00 ' Postavi port D na 0 (svi releji ugaseni)
Pocetak:
'----------------MERI TEMPERATURU--------------------------------------
OWOut DQ, 1, [$CC, $44] ' Start merenja temperature
Sacekaj:
OWIn DQ, 4, [count_remain] ' Provera da li jos traje
IF count_remain = 0 Then Sacekaj
OWOut DQ, 1, [$CC, $BE] ' Procitaj temperaturu
OWIn DQ, 0, [Temperatura.LOWBYTE, Temperatura.HIGHBYTE, Skip 4, count_remain, count_per_c]
Temperatura = (((Temperatura >> 1) * 100) - 25)+ (((count_per_c - count_remain)*100) / count_per_c)
Temper1 = Temperatura / 100
If Temper1 < 70 Then Radi
High Greska
pause 500
Low Greska
pause 500
High Greska
pause 500
Low Greska
pause 500
High Greska
pause 500
Low Greska
pause 500
PortD = $00
Goto Pocetak
'-------------RAD KOREKTORA------------------------------------------
Radi:
If portb.2 = 0 Then
Goto Iskljucen
else
portb.4 = 1
endif
' Procitaj 1 kanal na RA1 i prikazi
Pause 1000
ADCIN 1, AD_Rez ' Izvrsi konverziju na RA1 i 16 bita i rezultat smesti u AD_Rez.
Pause 1000
'Dummy = AD_Rez * 5 * 100
'Napon = Div32 1023
'Pause 5000 ' Pauza 10 sec
' - - - - Napon 179 i manje - - - - - - - - - - - - - - - - - -
If AD_Rez > 709 Then RE2
PortD = $01
Goto REE
' - - - - Napon 180 - 190 - - - - - - - - - - - - - - - - - -
RE2: If AD_Rez > 748 Then RE3
PortD = $02
Goto REE
' - - - - Napon 190 - 200 - - - - - - - - - - - - - - - - - -
RE3: If AD_Rez > 787 Then RE4
PortD = $04
Goto REE
' - - - - Napon 200 - 210 - - - - - - - - - - - - - - - - - -
RE4: If AD_Rez > 827 Then RE5
PortD = $08
Goto REE
' - - - - Napon 210 - 220 - - - - - - - - - - - - - - - - - -
RE5: If AD_Rez > 866 Then ALLOFF
PortD = $10
Goto REE
' - - - - Napon 221 i vise - - - - - - - - - - - - - - - - - -
ALLOFF: PortD = $00
'PortD = $10
'Pause 2000 ' Pauza 2 sekunda
REE:
Goto Pocetak ' Kreni ponovo na merenje
'------------RUCNI RAD----------------------------
Iskljucen:
PortD = $00
portb.4 = 0
Pause 2000
Goto Pocetak
'Return
End ' Kraj programa
I dalje mi nije jasan ovaj deo za temperaturu, dioda za gresku temperature mi gori i kad treba i kad ne treba, stim da se program izvrsava normalno
'Program korektor napona.
'Meri mrezni napon i zavisno od rezultata merenja
'ukljucuje odgovarajuci relej i tako na autotransformatoru
'bira odgovrajuci izvod zavisno od mreznog napona.
'Max ulazni napon 260V = 1024 na AD konvertoru
'1/1024 na AD konvertoru = 0.254V ulaznog napona
'160V = 630
'170V = 669
'180V = 709
'190V = 748
'200V = 787
'210V = 827
'220V = 866
'260V = 1024
'konvertovana vrednost * 0.254V = ulazni napon
'konvertovana vrednost * 0.00488V = napon na delitelju
Define ADC_BITS 10 ' Broj bita
Define ADC_CLOCK 1 ' Klok (0=Oscilator /8)
AD_Rez var word ' Rezultat AD konverzije
Napon var word ' Promenljiva za dobijanje napona
TRISA = %11111111 ' Port A je ulazni
TRISB = %00000100 ' Port B
TRISC = %11111111 ' Port C je ulazni
TRISD = %00000000 ' Port D je izlazni
ADCON1 = %10000010 ' Port A je u analognom modu, 0 i 5V su
' referentni naponi a rezultat je desno formatiran.
Dummy var byte ' Promenljiva za 32 bitno delenje i mnozenje
symbol DQ = portc.2 ' DQ linija za termometar
symbol Greska = portb.5 'Linija LED diode greske
portb.5 = 1
symbol Rucni = portb.4 'Linija za identifikaciju rucnog rada
portb.4 = 1
symbol Rucni_rad = portb.2 'Linija za identifikaciju rucnog rada
portb.2 = 1
temperatura Var Word ' Izracunata temperatura
temper1 Var Word ' Izracunata temperatura
count_remain Var Byte ' Ostatak
count_per_c Var Byte ' Po stepenu C
PortD = $00 ' Postavi port D na 0 (svi releji ugaseni)
Pocetak:
'----------------MERI TEMPERATURU--------------------------------------
OWOut DQ, 1, [$CC, $44] ' Start merenja temperature
Sacekaj:
OWIn DQ, 4, [count_remain] ' Provera da li jos traje
IF count_remain = 0 Then Sacekaj
OWOut DQ, 1, [$CC, $BE] ' Procitaj temperaturu
OWIn DQ, 0, [Temperatura.LOWBYTE, Temperatura.HIGHBYTE, Skip 4, count_remain, count_per_c]
Temperatura = (((Temperatura >> 1) * 100) - 25)+ (((count_per_c - count_remain)*100) / count_per_c)
Temper1 = Temperatura / 100
If Temper1 < 70 Then Radi
High Greska
pause 500
Low Greska
pause 500
High Greska
pause 500
Low Greska
pause 500
High Greska
pause 500
Low Greska
pause 500
PortD = $00
Goto Pocetak
'-------------RAD KOREKTORA------------------------------------------
Radi:
If portb.2 = 0 Then
Goto Iskljucen
else
portb.4 = 1
endif
' Procitaj 1 kanal na RA1 i prikazi
Pause 1000
ADCIN 1, AD_Rez ' Izvrsi konverziju na RA1 i 16 bita i rezultat smesti u AD_Rez.
Pause 1000
'Dummy = AD_Rez * 5 * 100
'Napon = Div32 1023
'Pause 5000 ' Pauza 10 sec
' - - - - Napon 179 i manje - - - - - - - - - - - - - - - - - -
If AD_Rez > 709 Then RE2
PortD = $01
Goto REE
' - - - - Napon 180 - 190 - - - - - - - - - - - - - - - - - -
RE2: If AD_Rez > 748 Then RE3
PortD = $02
Goto REE
' - - - - Napon 190 - 200 - - - - - - - - - - - - - - - - - -
RE3: If AD_Rez > 787 Then RE4
PortD = $04
Goto REE
' - - - - Napon 200 - 210 - - - - - - - - - - - - - - - - - -
RE4: If AD_Rez > 827 Then RE5
PortD = $08
Goto REE
' - - - - Napon 210 - 220 - - - - - - - - - - - - - - - - - -
RE5: If AD_Rez > 866 Then ALLOFF
PortD = $10
Goto REE
' - - - - Napon 221 i vise - - - - - - - - - - - - - - - - - -
ALLOFF: PortD = $00
'PortD = $10
'Pause 2000 ' Pauza 2 sekunda
REE:
Goto Pocetak ' Kreni ponovo na merenje
'------------RUCNI RAD----------------------------
Iskljucen:
PortD = $00
portb.4 = 0
Pause 2000
Goto Pocetak
'Return
End ' Kraj programa
I dalje mi nije jasan ovaj deo za temperaturu, dioda za gresku temperature mi gori i kad treba i kad ne treba, stim da se program izvrsava normalno