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

rdt
-
-
Posty:87
Rejestracja:20 sie 2003, o 18:03
Lokalizacja:100km od Wawy
regulacja fazowa

Postautor: rdt » 24 lis 2005, o 23:17

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

Czajnik
-
-
Posty:264
Rejestracja:17 cze 2004, o 15:40
Lokalizacja:Kraków
Kontaktowanie:

Postautor: Czajnik » 27 lis 2005, o 07:42

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...

PIOTR11
-
-
Posty:15
Rejestracja:20 kwie 2003, o 07:15
Lokalizacja:Chrzanów

bascom

Postautor: PIOTR11 » 27 lis 2005, o 11:27

Witam
w numerze 6/2000 EP jest cały przykład na sterowanie fazowe i działa sprawdzałem
Pozdrawiam PIOTR

rdt
-
-
Posty:87
Rejestracja:20 sie 2003, o 18:03
Lokalizacja:100km od Wawy

Postautor: rdt » 28 lis 2005, o 01:30

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

Czajnik
-
-
Posty:264
Rejestracja:17 cze 2004, o 15:40
Lokalizacja:Kraków
Kontaktowanie:

Postautor: Czajnik » 28 lis 2005, o 06:20

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.

rdt
-
-
Posty:87
Rejestracja:20 sie 2003, o 18:03
Lokalizacja:100km od Wawy

Postautor: rdt » 4 gru 2005, o 22:36

ok to jak odmierzyc dokladnie czas - calki juz policzone ale nie wiem jak ustawic timer zeby odliczyc np 100 us
niestety nie moge liczyc w milisekundach bo to za duza rozdzielczosc
kwarc to 11.059 (choc moze byc pokazane i dla 8 MHz)
a procek to 89c2051

szymel
-
-
Posty:212
Rejestracja:16 sty 2005, o 16:42
Lokalizacja:Włocławek

Postautor: szymel » 5 gru 2005, o 20:11

Do takich obliczń najlepszy jest kalkulator ;)
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 ...
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 ... .

rdt
-
-
Posty:87
Rejestracja:20 sie 2003, o 18:03
Lokalizacja:100km od Wawy

Postautor: rdt » 5 gru 2005, o 21:42

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

szymel
-
-
Posty:212
Rejestracja:16 sty 2005, o 16:42
Lokalizacja:Włocławek

Postautor: szymel » 6 gru 2005, o 00:04

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
No to masz taki poglądowy szkielet programu , do fazowej regulacji mocy za pomocą triaka, tylko pamiętaj - to nie jest gotowiec.

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.
Teraz tylko pomyśl ;)

Piotrek

rdt
-
-
Posty:87
Rejestracja:20 sie 2003, o 18:03
Lokalizacja:100km od Wawy

Postautor: rdt » 9 gru 2005, o 23:08

ok- 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 ???

szymel
-
-
Posty:212
Rejestracja:16 sty 2005, o 16:42
Lokalizacja:Włocławek

Postautor: szymel » 10 gru 2005, o 13:42

ok- 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 ???
Może przerwania się nakładają , może ... coś innego :?:
Daj coś do wglądu ;)

Piotrek

rdt
-
-
Posty:87
Rejestracja:20 sie 2003, o 18:03
Lokalizacja:100km od Wawy

Postautor: rdt » 10 gru 2005, o 20:06

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

Wróć do „Projektowanie PCB, programy EDA, CAD, narzędziowe”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 16 gości