PWM na ATTINY2313

Znowu problem. Kod (BASCOM): $regfile = "attiny2313.dat" $crystal = 8000000

Config Portb = Output

Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Up , Compare B Pwm = Clear Down , Prescale = 1 dim X As Integer

Do For X = 1 To 100 Step 2 Pwm1a = X Waitms 100 Next

For X = 100 To 1 Step -2 Pwm1a = X Waitms 100 Next Loop End

Na ATMedze8 było wszystko ok, natomiast na ATTiny2313, dioda świeci coraz jaśniej, a później natychmiast gaśnie i znowu coraz jaśniej, tak jakby druga pętla nie działała.

Co robię nie tak ? Oscylator zewnętrzny 8MHz

Reply to
Melwin
Loading thread data ...

Spróbuj zamiast tego:

For X = 1 To 100 Step 2 Pwm1a = 100 - X

Reply to
Adam Wysocki

Adam Wysocki pisze:

Nic nie pomogło

Zrobilem taki test: Pwm1a = 10 Waitms 500 Pwm1a = 20 Waitms 500 Pwm1a = 30 Waitms 500 Pwm1a = 40 Waitms 500 Pwm1a = 50 Waitms 500 Pwm1a = 60 Waitms 500 Pwm1a = 70 Waitms 500 Pwm1a = 80 Waitms 500 Pwm1a = 90 Waitms 500 Pwm1a = 100 Waitms 500 Pwm1a = 90 itd

To według obserwacji diody wygląda to tak 10,20,30,40,50,10,20,30,40,50. Dlaczego nie idzie dalej ?

Jak zmienie program na taki: Do Pwm1a = 10 Waitms 500 Pwm1a = 20 Waitms 500 Pwm1a = 30 Waitms 500 Pwm1a = 40 Waitms 500 Pwm1a = 30 Waitms 500 Pwm1a = 20 Waitms 500 Loop

to od 10 do 40 idzie dobrze a potem od 40 do 10 z 5 razy szybciej.

Reply to
Melwin

Melwin pisze:

A wiesz że attiny2313 ma domyślnie w fusebitach włączony podział zegara /8 ? czyli realnie jakbyś miał 1MHz A wiesz że ma on watchdoga, który chyba na 2s jest nastawiony? Może pora robić "pełny konfig procesora" na początku programu, zamiast liczyć na takie same wartości domyślne we wszystkich procesorkach.

Reply to
BartekK

BartekK pisze:

Dzieki wielkie, Podział miałem wyłaczony, ale nie pomyślałem o tym watchdogu.

Reply to
Melwin

m. pisze:

W moim był włączony i do tego ustawiony kwarc 8MHz zewnetrzny (a ja nie widzialem czemu nie chce sie programowac :) )

Ale teraz mam inny problem, podłaczona dioda LED ładnie się ściemnia i rozjaśnia. Podłaczyłem Triaka przez Optotriaka MOC3021 i do tego żarówkę halogenową 20W. No i niestety żarówka tylko się zapala i gasnie, mimo, że w tym samym czasie podłaczona pod ten sam port dioda LED się ściemnia i rozjaśnia.

Czy muszę wykrywac zero ? Czy niewykrywanie zera powoduje tylko zakłócenia, czy jest wymagane do działania układu ?

Reply to
Melwin

Melwin pisze:

Widać nie przemyślałeś odpowiedzi w swoim wątku o MOC3041. Nie może być włączany w zerze bo nie da się posteropwać fazowo. Jeśli chcesz sterować fazowo to sygnał z PWM musisz zamienić z ciągu impulsów o zadanym wypełnieniu na napięcie stałe czyli przepuścić przez filtr dolnoprzepustowy np zwykły RC. W przeciwnym wypadku pierwszy nadchodzący impuls zapali triaka i już przez resztę półokresu on nie zgaśnie.

Reply to
Mario

Mario pisze:

RC pomiędzy A1 i A2 triaka ?

Reply to
Melwin

Nie, musisz wykrywac zero i regulowac jasnosc poprzez czas pomiedzy wykryciem zera a odpaleniem triaka. Czas przy 50Hz 0-10ms.

Reply to
T.M.F.

Dolutowałem wykrywanie zera, no i kolejny problem. W tej chwili mam takie coś:

$regfile = "attiny2313.dat" $crystal = 16000000

Config Pind.4 = Output Bramka Alias Portd.4

Config Int1 = Rising

On Int1 Zero Enable Int1 Enable Interrupts

Do Loop

Zero: Bramka = 1 Waitms 10 Bramka = 0 Return

I żarówka się sie ściemnia, dlaczego ? Przecież powinna świecić jednakowo

Reply to
Melwin

Po pierwsze zapodaj schemat. Po drugie, jak zrobiles wykrywanie zera? Jesli podlaczyles po prostu faze przez opornik do pinu int to moment detekcji zera mocno plywa, w efekcie zarowka bedzie pulsowac. Inna sprawa to, ze 10ms to czas pomiedzy kolejnymi przejsciami przez "0", czyli pierwsze wyzwala przerwanie, ktore trwa troche dluzej niz

10ms, kolejne nastepuje z pewnym przesunieciem, kolejne z jeszcze wiekszym itd. az kolejne wypadnie i zabawa zaczyna sie od nowa. A BTW, to cos w czym programujesz to chyba Bascom? Zainteresuj sie AVR-gcc, na przyszlosc ci sie przyda.
Reply to
T.M.F.

T.M.F. pisze:

Schemat według Twojego

formatting link
,tylko dołożyłem drugą diodę przeciwnie do tej w transoptorze, bo mam CNY17 a one są z jedną diodą w środku.

Jeśli chodzi o sterowanie to podobnie jak na

formatting link
,tylko bez ULN2803 oczywiście.

Jak dam mniej niż 10ms to cholernie mruga.

Tak to jest Bascom, wiem, mam w planach ABR-gcc, ale od czegoś trzeba zacząć.

Reply to
Melwin

Nie zadziala, gdyz w tym wypadku wykrywasz co drugie przejscie.

Reply to
T.M.F.

Chyba, ze masz przerwanie wyzwalane z obu zboczy, tylko, ze wtedy raz masz je tuz przez rzeczywistym zerem sieci, nastepnym razem tuz po. Przejrzyj noty aplikacyjne Atmela, jest tam przyklad dimmera.

Reply to
T.M.F.

T.M.F. pisze:

Czyli na CNY17 wogóle się nie da ? czy zamiast tej mojej dodatkowej diody można zastosować coś innego co zabezpieczy diodę w CNY17 przed napięciem wstecznym ?

Reply to
Melwin

Chodzi o to, ze kiedy sinusoida przechodzi z + na - to powiedzmy twoja dioda w transoptorze gasnie tuz przed zerem. Z kolei w nastepnej polowce przy przejsciu z - na + zapala sie tuz po zerze. Wiec musisz wyzwalac przerwanie oboma zboczami i dodatkowo uwzgledniac te roznice w czasie wyzwolenia. Dodatkowo wyzwalanie z przerwania nie jest dobre, bo w okolicach "0" mozesz miec wiele zaklocajacych zboczy, w efekcie przerwanie moze byc wywolane wielokrotnie. Dlatego w moim projekcie dalem tani transoptor z dwoma antyrownoleglymi diodami, z jednej strony sie zabezpieczaja, z drugiej wiem, ze "0" sieci wypada dokladnie w polowie czasu pomiedzy dwoma impulsami z transoptora. Te diody sa na tej samej strukturze i maja praktycznie identyczne parametry elektryczne co gwarantuje symetrycznosc wyzwolenia.

Reply to
T.M.F.

T.M.F. pisze:

Dałem mostek i 4 x 680k równolegle przed transoptorem. Teraz jest lepiej. Ale mam tylko 5 poziomów jasności, 0ms,1ms,2ms,3ms,4ms, jak dam

5ms to mruga ? Czyli wychodzi na to ze nie wykrywam zera, tylko cos obok.
Reply to
Melwin

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.