Poglej prejšnjo temo :: Poglej naslednjo temo |
Avtor |
Sporočilo |
damijan Novinec
Pridružen/-a: Sre Apr 2014 10:56 Prispevkov: 6 Kraj: Kopriva
|
Objavljeno: Sre Apr 02, 2014 11:53 am Naslov sporočila: Program za dimmer |
|
|
Pozdravjeni
Da bi si malo razširil znanje pri programiranju z bascom 8051, sem napisal
program za dimmer:
regfile = "89c51RD.dat"
$crystal = 12000000
Config Timer0 = Timer , Mode = 1 , Gate = Internal
Enable Timer0
Enable Int0
Enable Interrupts
On Int0 Prekinitev
Set Tcon.0
Dim Milisekunde As byte
Milisekunde = 0
Do
Loop
End
Prekinitev:
Th0 = &HFC
Tl0 = &H18
Start Timer0
Incr Milisekunde
If Milisekunde >= 4 Then
Stop Timer0
Set P2.0
Milisekunde = 0
Else
Reset P2.0
End If
Return
Vendar se je pojavil problem, ker zadeva ne deuje, kot bi želel. Prosil bi vas pomoč, kje sem napravil napako. |
|
Nazaj na vrh |
|
|
Jure Urednik
Pridružen/-a: Pon Jan 2004 12:51 Prispevkov: 2132 Kraj: Ljubljana
|
Objavljeno: Pon Apr 07, 2014 10:04 am Naslov sporočila: |
|
|
Damijan,
žal preslabo poznam 8051 družino, da bi lahko dal kompetenten odgovor. Takole na hitro sem program pogledal in nikjer nisem videl, da bi Timer postavil na 0 v začetku programa. Kot rečeno žal ne poznam 8051 družine dovolj podrobno, da bi vedel, ali se Timer avtomatično postavi na 0 ali ne....
Mogoče napiši, kaj ne dela.
Lp
Jure |
|
Nazaj na vrh |
|
|
Vlado Profesionalec
Pridružen/-a: Ned Jan 2004 16:11 Prispevkov: 556 Kraj: Ljubljana
|
Objavljeno: Pon Apr 07, 2014 4:14 pm Naslov sporočila: |
|
|
Žal tudi jaz sem že pozabil družino 8051, bom pa poskusil pomagati.
Za začetek bi bilo dobro da bi nam opisal kako naj bi delal dimer da ne ugibamo.
Ni mi prav jasno zakaj uporabljaš prekinitev na INT0.
V programu imaš:
Citiram: | On Int0 Prekinitev |
mogoče bi program po pretečenm času moral iti na to prekinitev, ne pa z neko zunanjo prekinitvijo.
Opiši malo kako naj bi to vezje delovalo in kaj ne deluje tako kot bi želel.
LP |
|
Nazaj na vrh |
|
|
damijan Novinec
Pridružen/-a: Sre Apr 2014 10:56 Prispevkov: 6 Kraj: Kopriva
|
Objavljeno: Pon Apr 07, 2014 4:16 pm Naslov sporočila: |
|
|
Timer števca postavim na nič na začetku programa (milisekunde=0) ter še kasneje pred koncem programa. Problem je ker žarnica brli, namesto da bi gorela z minimalno močjo. (mogoče premajhna frekvenca?).
Ko z osciloskopom spremljam dogajanje na žarnici, se mešajo med sabo dve sinusoidi. |
|
Nazaj na vrh |
|
|
damijan Novinec
Pridružen/-a: Sre Apr 2014 10:56 Prispevkov: 6 Kraj: Kopriva
|
Objavljeno: Pon Apr 07, 2014 4:20 pm Naslov sporočila: |
|
|
Ko sinus naredi prehod skozi 0, da detektor zero cross-a inpulz. Ta signal gre potem na INT0, da je odziv prekinitve čim hitrejši. Timer bi potem moral zakasniti vklop triaka. |
|
Nazaj na vrh |
|
|
Jure Urednik
Pridružen/-a: Pon Jan 2004 12:51 Prispevkov: 2132 Kraj: Ljubljana
|
Objavljeno: Tor Apr 08, 2014 8:32 am Naslov sporočila: |
|
|
Kako pa krmiliš triak?
Lp
Jure |
|
Nazaj na vrh |
|
|
damijan Novinec
Pridružen/-a: Sre Apr 2014 10:56 Prispevkov: 6 Kraj: Kopriva
|
Objavljeno: Tor Apr 08, 2014 6:43 pm Naslov sporočila: |
|
|
Triac krmilim preko optokoplerja MOC 3041. |
|
Nazaj na vrh |
|
|
Jure Urednik
Pridružen/-a: Pon Jan 2004 12:51 Prispevkov: 2132 Kraj: Ljubljana
|
Objavljeno: Tor Apr 08, 2014 7:54 pm Naslov sporočila: |
|
|
Z MOC 3041 ne bo šlo dimmanje, ker ima prehod skozi ničlo. Vzemi navaden optotriac.
Lp
Jure |
|
Nazaj na vrh |
|
|
damijan Novinec
Pridružen/-a: Sre Apr 2014 10:56 Prispevkov: 6 Kraj: Kopriva
|
Objavljeno: Sre Apr 09, 2014 9:03 am Naslov sporočila: |
|
|
Hvala Jure, bom poizkusil z navadnim, pa da vidim kakšen bo rezultat. |
|
Nazaj na vrh |
|
|
damijan Novinec
Pridružen/-a: Sre Apr 2014 10:56 Prispevkov: 6 Kraj: Kopriva
|
Objavljeno: Sre Apr 09, 2014 9:57 am Naslov sporočila: |
|
|
Sem narobe napisal. Je MOC 3023, tako da ta ne bi smel biti problem. Mislim, da je glavni problem v timerju. |
|
Nazaj na vrh |
|
|
|