Fázishasítás Triac-al

Hogyan programozzak AVR chipet? Programozók beállításai...
Bascom nyelvű programok...
Avatar
otto
DrótVégénSzéndarab
Hozzászólások: 40
Csatlakozott: 2007. július 27. péntek, 6:00
Tartózkodási hely: Budapest,XVIII.ker.
Kapcsolat:

HozzászólásSzerző: otto » 2011. december 6. kedd, 19:15

Szia kefeur!

A sallangokat kitöröltem,a program lényegét az alábbi helyre feltöltöttem.
Remélem a hiba okának megtalálására alkalmas lesz a forma.
Fő vonalakban:
Egy fényérzékelő figyeli a környezetet és a lámpa fényének szabályozásával próbálja a megvilágítást konstans értéken tartani.

http://www.ottomat.hu/archivum/PRG_BASCOM/program.TXT

Üdv. Ottó

Avatar
muszer
Biztosítékgyilkos
Hozzászólások: 50
Csatlakozott: 2009. december 28. hétfő, 7:00

HozzászólásSzerző: muszer » 2011. december 6. kedd, 21:32

Szia!

A Portb.0 = 0 állapotban van gyújtva a triakod?
A 80 ciklus nem sok kicsit? Számolva azzal, hogy a nullátmenetet se tudod pontosan akkor detektálni amikor nulla?
Elképzelhető hogy az időzítés átnyúlhat a következő ciklusba?

Avatar
otto
DrótVégénSzéndarab
Hozzászólások: 40
Csatlakozott: 2007. július 27. péntek, 6:00
Tartózkodási hely: Budapest,XVIII.ker.
Kapcsolat:

HozzászólásSzerző: otto » 2011. december 7. szerda, 8:04

Szia!

A "0" állapotban gyújt be a triak (MOC-al)
A ciklus hossza pontosan 78.
Ezt magával a programmal mérettem be,a próbálgatás egy bizonyos időszakában.
16MHz-es kvarcot raktam be,mert korábban 4MHz-es volt és arra gyanakodtam,hogy a sebesség okozza a problémát.

Üdv. Ottó

Avatar
muszer
Biztosítékgyilkos
Hozzászólások: 50
Csatlakozott: 2009. december 28. hétfő, 7:00

HozzászólásSzerző: muszer » 2011. december 7. szerda, 8:53

Szia Ottó!

Nézem a programot, véleményem szerint jónak tűnik.
De várjunk meg más hozzászólást is.

Végignézted a részegységeket működésük szerint?
Ha az optót Te nyitod külső rásegítéssel akkor is van hullámzás?
(szoftveres hiba kiiktatása)
Ha letakarod az érzékelőt, a szoftver teljesen kinyitja a Triakot, akkor megszűnik a fényerő ingadozás?
(szabályzási pont körüli lengés kiiktatása)

Mint irtam nálam nincs a nullátmenet érzékelő tranzisztor bázis ágában kondenzátor. Ki ugyan nem számoltam, hogy nálad mennyit tol el a nullatámeneten, de érzésem szerint gond lehet ez is. Ezalatt értem azt, hogy a pontos nullaátmeneted mérése két helyen is szenved hibát.
1. trafó utáni csökkentett feszültség miatt
2. ellenállás-kondenzátor hálózat a tranzisztor előtt

Egyszóval amit ki akartam hozni ebből, hogy a hálózati 10ms-os félhullám, és a Te általad létrehozott 10ms-os időrés nagyon nincs összhangban egymással. Átfedés lehet, ami magyarázná az ingadozást.
Mit gondoltok erről?

Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3344
Csatlakozott: 2008. augusztus 29. péntek, 6:00
Tartózkodási hely: Újkígyós

HozzászólásSzerző: kapu48 » 2011. december 7. szerda, 10:19

Szerintem ha SW hibát kerestek a Bascom ajánlás szerint itt indítják az ADC-t:

Kód: Egész kijelölése

'-----------------------[ INICIALIZÁLÁS ]---------------------------------------
'ADC KONFIGURÁLÁS
Rem reference lehetne belső=internal vagy 5V-OS TÁPFESZ=AVCC
Rem a belső ref. vagy AVCC használata esetén az AREF lábra külső szűrő kondenzátort
'kell rakni.
Rem A belső referencia feszültség 2,56V (azért ezt az adatlapról ellenőrizni!)
Rem EBBEN AZ ESETBEN KÜLSŐ referenciát használunk,ezért "Off"
Rem a futási mód lehet "single" vagy "free"
Rem a "Single" mód esetén a GETADC() funkciót kell használni!
Rem a Prescaler=auto beállítás a processzor órajeléből automatikusan választja ki
Rem az ADC működéséhez szükséges megfelelő órajel leosztást.

Config Adc = Single , Prescaler = Auto , Reference = Off
'Config Adc = Single , Prescaler = Auto , Reference = Internal
Start Adc
'-------------------------------------------------------------------------------

A megszakításból kihagynám!
Mivel kevés az idő a mérés elvégzésére a „Start Adc - Ertek0 = Getadc(channel)” között.
Inkább:

Kód: Egész kijelölése

'------------------------------------------------------------------------
Sub Ad_meres

Set Mukodesled                                              'set világít
Channel = 0
  Ertek0 = Getadc(channel)
Reset Mukodesled                                            'reset sötét

End Sub
'--------------------------------------------------------------------------

Így folyamatosan mér a HW-ADC és mindig az utolsó mérést olvasod a regiszterből.
8)

Avatar
willmenn
Biztosítékgyilkos
Hozzászólások: 61
Csatlakozott: 2012. július 14. szombat, 6:00
Tartózkodási hely: Oroszlány

Re: Fázishasítás Triac-al

HozzászólásSzerző: willmenn » 2013. január 24. csütörtök, 22:29

Egy kissegítséget szeretnék kérni a hozzáértőktől!
Valamiért nem müxik a triakos vezérlés, és nem tudom hogy hol lehet a hiba.
Már több napja kínlódok vele! Optoval van leválasztva a hálózati szinkronjeltől, és a triaktol is. A szinkron jel szkop szerint rendesen megvan. A kimeneten megjelenik a jel, de ha éppen begyújt a triak, akkor is inkább csak vibrál, szaggat, vagy folyamatosan világit.

Kód: Egész kijelölése

$regfile = "attiny13.dat"
$crystal = 9600000

$hwstack = 8
$swstack = 8
$framesize = 8
$prog &HFF , &H7A , &HFF


Dim Ertek As Byte


Dim B As Byte

Config Int0 = Low Level
On Int0 Pulse
Enable Interrupts
Enable Int0

Pinb = &B00000110


Config Portb.0 = Output                                     ' Kimenet
Config Portb.4 = Input                                      ' Fel
Config Portb.3 = Input                                      ' Le
Config Pinb.1 = Input                                       ' Int0

Config Portb.2 = Input

Led1_1 Alias Portb.0
Le Alias Pinb.3
Fel Alias Pinb.4


Ertek = 2



Do
If Pinb.2 = 0 Then Incr B

If B > 9 Then B = 1
If Fel = 0 Then Ertek = Ertek + 1
If Le = 0 Then Ertek = Ertek - 1

 Waitms 10

Loop


Pulse:

Waitms Ertek                                                'Megszakitas:
Led1_1 = 1
Waitms B
Led1_1 = 0
Return


Vagy a tiny13 frekije nem jó?
Szerintetek mit nem csináltam jól?

Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3344
Csatlakozott: 2008. augusztus 29. péntek, 6:00
Tartózkodási hely: Újkígyós

Re: Fázishasítás Triac-al

HozzászólásSzerző: kapu48 » 2013. január 25. péntek, 10:29

Elég rossz ötlet megszakításba Waitms-eket rakni!

Mivel amíg egy megszakításban tartózkodik a programod,
Addig a másik megszakítás (Wait) nem tud érvényesülni!

Avatar
winnerbt
Chipfüstölő
Hozzászólások: 894
Csatlakozott: 2007. március 25. vasárnap, 6:00
Tartózkodási hely: Kecskemét

Re: Fázishasítás Triac-al

HozzászólásSzerző: winnerbt » 2013. január 25. péntek, 10:43

Én inkább élvezérelt INT-et állítanék be.
Ha Zerocross INT jön, akkor
kimenet=0
Timerx=offset+valamennyi
Start Timerx
Return

Timerx lejár, akkor kimenet=1
STOP Timerx
Return
Timer természetesen belőve <10msec-re.

Az ilyen cuccok villogása általában a többszörös triggerből vagy a túlságosan hosszú időzítésből adódik (túlnyúlik az aktuális
perióduson, a következőt meg gyújtja).
JAni

Avatar
willmenn
Biztosítékgyilkos
Hozzászólások: 61
Csatlakozott: 2012. július 14. szombat, 6:00
Tartózkodási hely: Oroszlány

Re: Fázishasítás Triac-al

HozzászólásSzerző: willmenn » 2013. január 25. péntek, 12:00

Tehát ha megjön a nullponti jelem, akkor int-ből át timerx-be és ott számoltatom a késleltetési időt?
Köszi kipróbálom!

Avatar
winnerbt
Chipfüstölő
Hozzászólások: 894
Csatlakozott: 2007. március 25. vasárnap, 6:00
Tartózkodási hely: Kecskemét

Re: Fázishasítás Triac-al

HozzászólásSzerző: winnerbt » 2013. január 25. péntek, 12:36

Neeem, csak 0 átmenetnél lekapcsolod a triac-ot (ehhez az kell,
hogy a 0 jeled a 0-fok előtt legyen egy kicsivel) feltöltöd a timert a késleltetési idővel és elindítod.
Aztán otthagyod a francba, futtatod a főprogramod.
A Timer INT meg csak annyit csinál, hogy leállítja saját magát (nehogy többször átforduljon)
és gyújtja a triac-ot.
Tehát ha szkóppal nézed, a gyújtási szög és a 0 között (következő 0)
lesz a gyújtóimpulzusod, jó hosszú.
JAni

Avatar
Robert
Elektronbűvölő
Hozzászólások: 9993
Csatlakozott: 2005. december 9. péntek, 7:00
Tartózkodási hely: Budapest
Kapcsolat:

Re: Fázishasítás Triac-al

HozzászólásSzerző: Robert » 2013. január 25. péntek, 12:45

Triacra nem elég egy gyújtóimpulzus? Ha begyujtod az úgy is marad?

- Nullátmenet
- késleltetés letelik
- gyujtoimpulzus (L->H->L)

Esetleg nem induktív holmit kapcsolsz és az rúg vissza és kapcsol be?
H a atriac folyamatosan H-n van vezérelve, akkor a fényerő teljes?
Igaz nem halogénlámpa amit vezérelsz?

Avatar
winnerbt
Chipfüstölő
Hozzászólások: 894
Csatlakozott: 2007. március 25. vasárnap, 6:00
Tartózkodási hely: Kecskemét

Re: Fázishasítás Triac-al

HozzászólásSzerző: winnerbt » 2013. január 25. péntek, 13:04

Elméletben elég egy impulzus, de akkor az elvisz még egy időzítést
a SW-ben (vagy NOP-olsz vagy ciklus vagy...) mert a túl
rövidre nem gyújt be és a uC-k azért elég gyorsak, tehát
az INTben várakoznod kell egy kicsit.
Így meg a két INT "látatlanban" csinálja a dolgát
időveszteség nélkül.
Végül is nem gond az impulzus, csak egy másik módot írtam le.
A gyújtásnál még akkor szokott akadozni, ha túl kicsi
a gyújtófesz (általában osztó méretezés).
No, meg a nullpontkapcsoló jelét is megnézném, nem
glitch-es-e.
JAni

Avatar
willmenn
Biztosítékgyilkos
Hozzászólások: 61
Csatlakozott: 2012. július 14. szombat, 6:00
Tartózkodási hely: Oroszlány

Re: Fázishasítás Triac-al

HozzászólásSzerző: willmenn » 2013. január 25. péntek, 14:07

Most igy probálom, de most se megy!


Kód: Egész kijelölése


Int0_int:
  Reset Triac
 
    Start Timer0
Return


Timer0_isr:
  Load Timer0 , Varakozas

     Set Triac

    Stop Timer0


Return


mi ebben a hiba?
most szkoppal nézve változik az idő, de akkor is folyamatosan világít.

Avatar
willmenn
Biztosítékgyilkos
Hozzászólások: 61
Csatlakozott: 2012. július 14. szombat, 6:00
Tartózkodási hely: Oroszlány

Re: Fázishasítás Triac-al

HozzászólásSzerző: willmenn » 2013. január 25. péntek, 14:51

Ilyen a nullpont jel!
Nincs meg a kellő jogosultságod a hozzászóláshoz csatolt állományok megtekintéséhez.

Avatar
winnerbt
Chipfüstölő
Hozzászólások: 894
Csatlakozott: 2007. március 25. vasárnap, 6:00
Tartózkodási hely: Kecskemét

Re: Fázishasítás Triac-al

HozzászólásSzerző: winnerbt » 2013. január 25. péntek, 15:19

Gondolom, 5msec/div az osztásod, elég használhatónak tűnik.
Ha pipeckedni akarunk, akkor lefutóra INT, egy kis offset+érték
a Timerbe és kész. Bár az a kis szögveszteség fényerőben nem
sokat számít, lehet felfutóra is INT. (akkor nem is kell offset).
Szóval ott valami más gond lesz, ha villog. A rutin jónak néz ki.
Esetleg kapcsrajz?
JAni


Vissza: “Bascom-AVR nyelvű programozás (AVR programozásának lehetőségei)”

Ki van itt

Jelenlévő fórumozók: nincs regisztrált felhasználó valamint 4 vendég