Aktyw Forum
Zarejestruj się na forum.ep.com.pl i zgłoś swój akces do Aktywu Forum. Jeśli jesteś już zarejestrowany wystarczy, że się zalogujesz.
Sprawdź punkty Zarejestruj sięregulacja fazowa
Moderatorzy:Jacek Bogusz, robertw, k.pawliczak, Moderatorzy
Witam
poszukuje wszelkiego rodzaju kodów źródłowych w bascomie do regulacji fazowej - był w projekt regulatora fazowego na pilota w numerze 8/2001 EP ale niestety kodu źródłowego nie bylo (projekty czytelników -089
Jezeli mialby ktoś cos podobnego to byłbym wdzięczny
poszukuje wszelkiego rodzaju kodów źródłowych w bascomie do regulacji fazowej - był w projekt regulatora fazowego na pilota w numerze 8/2001 EP ale niestety kodu źródłowego nie bylo (projekty czytelników -089
Jezeli mialby ktoś cos podobnego to byłbym wdzięczny
w bscomie kodu nie mam ale to nie jest skoąplikowane... tyle ze do pisania takiego programu przydaje sie oscyloskop... dostajesz przerwanie od zewnętrzenego ukłądu wykrywania zera... najczesciej nie jest to dokładnie zero tylko jkaiś tam offset po zerze najczesciej można przyjąć ze jest stały. Znająć jesgo długość (tu przydaje sie oscyloskop) odliczasz sobie czas do następnego zera... potem odliczasz czas jaki ci wyjdzie z obliczeń co do planowanej zasterowanej mocy i właczasz triaka... . ot i cała filozofia... niedokładności z zerem można w sporej mierze pominąć bo przy punktach bliskich przejsciu przez zero zmiana momentu włącznia triaka i tak niewiele zmienia...
zasade sterowania znam - zreszta bawilem sie ostatnio troche ale to nie za pomoca ukontrolera tylko w bardziej "tradycyjny sposób"
chodziło mi raczej o to jakie timery zostaly wykorzystane do sterowania i jak zostały skonfigurowane
jest jeszcze jedna sprawa
ponieważ napięcie ma kształt sinusoidy to liniowa regulacja mocy nie bedzie szła w parze z liniowym przebiegiem w czasie a chciałem to uwzględnić i mieć w miare liniową regulacje mocy powiedzmy ze ze skokiem co 10%
co do wspomnianego projektu z numeru 6/2000 to niestety ale jest to regulacja grupowa i mnie sie nie przyda (a szkoda)
zresztą grupową mozna zrobic i bez timerów i przerwań czyli bez tego o co mi chodzi najbardziej
chodziło mi raczej o to jakie timery zostaly wykorzystane do sterowania i jak zostały skonfigurowane
jest jeszcze jedna sprawa
ponieważ napięcie ma kształt sinusoidy to liniowa regulacja mocy nie bedzie szła w parze z liniowym przebiegiem w czasie a chciałem to uwzględnić i mieć w miare liniową regulacje mocy powiedzmy ze ze skokiem co 10%
co do wspomnianego projektu z numeru 6/2000 to niestety ale jest to regulacja grupowa i mnie sie nie przyda (a szkoda)
zresztą grupową mozna zrobic i bez timerów i przerwań czyli bez tego o co mi chodzi najbardziej
jeśli chodzi o tą liniowość to niestety kłaniają sie całeczki i potem wpisanie tablicy z obliczonnymi wartościami w procek. Samego probramu nie napisze ci bo poprostu nie pameitam juz bascomo... teraz pisze w asm ale jak znajde dchwile czasu to opisze ci dokłądnie jak konfigurować timery i co robić programowo krok po kroku żeby ci to zadziałało... i mam nadzieje wg tych rad sam napiszesz program.
Do takich obliczń najlepszy jest kalkulator
Najlepiej stosować coś , jak poniżej:
Nazwy stałych mówią(chyba) same za siebie , a resztą zajmie się już Bascom
Piotrek
PS
Po kompilacji wypada zerknąć do raportu , by sprawdzić czy wyliczona wartość mieści się w zakresie ... .
Najlepiej stosować coś , jak poniżej:
Kod: Zaznacz cały
Const Xtal = 11059200
$crystal = Xtal
Const Jednostka = 1 / 1000000
Const Ile_jednostek = 100
Const Cykle_maszynowe = Int(ile_jednostek *(xtal / 12 * Jednostka))
Const Timer_16bit_do_przepelnienia = 65535 - Cykle_maszynowe
...
Timer1 = Timer_16bit_do_przepelnienia
...
Piotrek
PS
Po kompilacji wypada zerknąć do raportu , by sprawdzić czy wyliczona wartość mieści się w zakresie ... .
No to masz taki poglądowy szkielet programu , do fazowej regulacji mocy za pomocą triaka, tylko pamiętaj - to nie jest gotowiec.no ciemny jestem - ja przewaznie robie jakies komentarze - pytalem o rade jak ustawic timery i przerwania - a tu o tym nic ani slowka nawet - no coz - dzieki serdeczne za pomoc (5przez 10 rozumiem) ale musze wrocic do wertowania helpa
Kod: Zaznacz cały
$regfile = "89c2051.dat"
Const Xtal = 11059200
$crystal = Xtal
Tyrystor Alias P1.0 'wiadomo
'zmienna do której zapisujem procent mocy , jaką chcemy uzyskać na obciążeniu (0-100)
Dim Moc As Byte
'Zmienna pomocnicza
Dim Licznik As Word
Reset Tyrystor 'wylącz tyrystor - zakładam , że stan"1" na P1.0 to triak włączony.
Config Timer0 = Timer , Mode = 1 'timer0 w trybie 16 bit zlicza wewnętrzne cykle maszynowe
On Timer0 Tyrystor_on Nosave 'obsluga przerwania T0 bez zachowania ważnych rejestrów
On Int0 Zerosieci
Set Tcon.0 'przerwanie int0 przy zboczu opadającym
Enable Timer0
Enable Int0
Enable Interrupts
Moc = 0
Do
'np. instrukcje odczytu klawiatury i modyfikacji zmiennej "moc"
Loop
'przerwanie T0
Tyrystor_on:
Set Tyrystor 'wlącz tyrystor (inaczej p1.0=1)
Reset Tcon.4 'zatrzymaj timer0
Return
'przejście sieci przez "0" (najlepiej chwilę(~100uS) przed przejściem)
Zerosieci:
Reset Tyrystor 'wylącz tyrystor
If Moc > 0 Then
If Moc < 100 Then
Licznik = Lookup(moc , Tablicamocy)
Counter0 = Licznik
Start Timer0
Else
Set Tyrystor 'gdy moc=100 to włącz triak
End If
End If
Return
Tablicamocy:
Data 0%,1% , 2% , 3% , 4% ... 99% '... dane o kącie zaplonu triaka, które należy wyliczyć w zależności od częstotliwości z jaką taktujemy uC.
Piotrek
Może przerwania się nakładają , może ... coś innegook- troszke w inny sposob to zrobilem ale mam teraz taki ból
po 10 krotnym wywolaniu przerwania (przerwanie po wykryciu zera odlicza wczesniej zadeklarowany czas ) procek mi sie resetuje - jak sie zdązylem zorientowac jest to kwestia przepelnienia stosu - ale jak sie tego pozbyc ???
Daj coś do wglądu
Piotrek
przerwania sie nie nakladają bo jest tylko jedno
poniewaz uklad jest raptem drugim z kolei pisanym przeze mnie (poza lcd" hello" itp) wyslalem listing na priva
uklad ma regulowac kąt wyzwolenia tyrystorów ze zmienną wartoscią
czyli jest impuls i przerwa (tak to sobie nazwalem) impuls ma jedną wartość a przerwa drugą wartość kąta
czas trwania impulsu i przerwy bedzie liczony ilosciami półokresów - i tez bedzie regulowany
CZ_i - czas impulsu powiedzmy 50 półokresów
CZ_p - pas przerwy powiedzmy 30 półokresów
M_i - moc ipmulsu powiedmy ze bedą wyzwolone polokresy impulsu przy polowie mocy maxymalnej (czyli w szzycie sinusoidy )
M_p - moc przerwy powiedmy ze tu kąt wyzwolenia triaków będzie na poziomie 50 V przy opadającej sinusoidzie
Mam nadzieje ze wszystko zrozumiale
cel - jezeli ktos czytał o spawarce impulsTIG w EP to mniej wiecej wie o co chodzi - zamiast garsci kości 555 mam zamiar zastosowac dwa przyciski ( mam napisaną obsluge pod dwa klawisze) pare diódek pare bc i jednego atmela
[ Dodano: 11-12-2005, 17:10 ]
ok - juz chyba wiem skad klopoty
niestety kolega Szymel sie mylił - jest wykrycie przejscia przez zero ale do rzeczy
robilem petle
petla:
do
if p1.1=0 then goto podmenu
.................
.................
wyswietl menu
.................
loop
podmenu:
do
...................
inne instrukcje
..................
if p1.1=1 then goto petla
loop
w ten sposob skacząc z petli do petli z powrotem bez uzycia RETURN ,ewentualnie EXIT DO
w miare szybko dochodzilem do restartu procesora
po uzyciu return oraz innych mniej ważnych zmianach podczas testowania procka nie zauważylem zeby nastepowalo jego resetowanie sie
- to przestroga dla tych co zaczynają - lepiej sie uczyc na cudzych bledach niz na swoich
poniewaz uklad jest raptem drugim z kolei pisanym przeze mnie (poza lcd" hello" itp) wyslalem listing na priva
uklad ma regulowac kąt wyzwolenia tyrystorów ze zmienną wartoscią
czyli jest impuls i przerwa (tak to sobie nazwalem) impuls ma jedną wartość a przerwa drugą wartość kąta
czas trwania impulsu i przerwy bedzie liczony ilosciami półokresów - i tez bedzie regulowany
CZ_i - czas impulsu powiedzmy 50 półokresów
CZ_p - pas przerwy powiedzmy 30 półokresów
M_i - moc ipmulsu powiedmy ze bedą wyzwolone polokresy impulsu przy polowie mocy maxymalnej (czyli w szzycie sinusoidy )
M_p - moc przerwy powiedmy ze tu kąt wyzwolenia triaków będzie na poziomie 50 V przy opadającej sinusoidzie
Mam nadzieje ze wszystko zrozumiale
cel - jezeli ktos czytał o spawarce impulsTIG w EP to mniej wiecej wie o co chodzi - zamiast garsci kości 555 mam zamiar zastosowac dwa przyciski ( mam napisaną obsluge pod dwa klawisze) pare diódek pare bc i jednego atmela
[ Dodano: 11-12-2005, 17:10 ]
ok - juz chyba wiem skad klopoty
niestety kolega Szymel sie mylił - jest wykrycie przejscia przez zero ale do rzeczy
robilem petle
petla:
do
if p1.1=0 then goto podmenu
.................
.................
wyswietl menu
.................
loop
podmenu:
do
...................
inne instrukcje
..................
if p1.1=1 then goto petla
loop
w ten sposob skacząc z petli do petli z powrotem bez uzycia RETURN ,ewentualnie EXIT DO
w miare szybko dochodzilem do restartu procesora
po uzyciu return oraz innych mniej ważnych zmianach podczas testowania procka nie zauważylem zeby nastepowalo jego resetowanie sie
- to przestroga dla tych co zaczynają - lepiej sie uczyc na cudzych bledach niz na swoich
Kto jest online
Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 10 gości