Parę pytań odnośnie PWM


Witam mam pytania odnośnie PWM które zadałem pod tym artykułem [url=][/url]http://mirley.firlej.org/programowyPwm#comment-5497

Odp. dla mirley nie tego problemu ani problemu z sram-em nie ma pod tiny2313 ani innych podobnych klockach, natomiast na tiny 25/45/85 ten sam problem wyskakuje.




Portret użytkownika mirley

Re: PWM

No to będzie problem bo pod attiny13 pisałem tylko kilka prostych programików, nie próbowałem tam nigdy odpalać nic większego. Może poprostu w bascomie nie da się tego zrobić i trzeba to napisac w asemblerze lub chociaż w C. Spróbuj zaimplementować moje rozwiązanie, najpierw pod attiny2313 a potem pod tiny13, Programowy PWM powinien działać pod attiny13 bo nie ma tam nic specjalnego poza jednym licznikiem i ifem.

-

UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.

Portret użytkownika rafliczek22

Niestety w c ani tymbardziej

Niestety w c ani tymbardziej w assemblerze nie napiszę tego ponieważ nie umiem tych jezykow i dotychczas sie nimi nie interesowałem, najbardziej zadziwiającą rzeczą jest to że nawet na tiny 45/85 nie działa bo w końcu one maja dość flashu i SRAM-u jak na taki banalny program, zassam inną wersję bascoma i wtedy spróbuje.

Co do wysterowana prądu zmiennego to przychodzi mi na myśl pomysł triak z rezystorem i za nim tyrystor z bazą do uC.

Portret użytkownika rafliczek22

Witam ponownie Jakoś udało

Witam ponownie

Jakoś udało mi się odpalić ten program jutro go wgram do kloca i zobaczę czy działa proszę tylko o sprawdzenie tego kodu ładnie się kompiluje ale wyskakuje błąd nr.202, tłumaczenie z polskiej pomocy bascom

Quote:
202 Nie odnaleziono pseudoinstrukcji .EQU, prawdopodobnie ta funkcja nie jest obsługiwana przez wybrany procesor

i nie za bardzo wiem o co chodzi.

Portret użytkownika mirley

Re: Tiny13 i PWM

Tu nie chodzi teraz o ram ale o to co pokazuje Ci błąd "funkcja nie jest obsługiwana przez wybrany procesor". Czyli prawdopodobnie sprzętowy PWM nie będzie działał na tiny13 i tych małych procesorach. Funkcja którą ma bascom może po prostu nie działać lub innaczej trzeba ją konfigurować, bo zgodnie z kartą katalogową tiny13 ma PWM sprzętowy. Wklej kod źródłowy w formie tekstu abym mógł popatrzeć co jest nie tak i modyfikować zawartość

-

UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.

Portret użytkownika rafliczek22

Zamieszczam kod: $regfile =

Zamieszczam kod:

$regfile = "attiny13.dat"
$crystal = 9600000
$hwstack = 20
$swstack = 10
$framesize = 40
 
Config Portb = &B000011 : Portb = &B111111
 
Config Timer1 = Pwm , Prescale = 1 , Pwm = 8 , Compare A Pwm = Clear Down , Compare B Pwm = Disconnect
 
S1 Alias Pinb.2                                             '1 przycisk
S2 Alias Pinb.3                                             '2 przycisk
 
Dim F As Byte
Dim Pwm1a As Eram Byte
 
F = Pwm1a
 
Do
 
F = 122                                                     'wartosc poczatkowa pwm
 
If S1 = 0 Then
Waitms 15                                                   'zamiast polecenie debounce
If S1 = 0 Then
Incr F                                                      'zmniejsza wypelnienie
If F = 0 Then
F = 255
End If
End If
End If
 
 
If S2 = 0 Then
Waitms 15                                                   'zamiast polecenie debounce
If S2 = 0 Then
Decr F                                                      'zwieksza wypelnienie
If F = 255 Then
F = 0
End If
End If
End If
 
 
Loop
End

Aha wgrałem kod do proca i nie odpala, oraz gdy usunąłem ten kawałek

Dim Pwm1a As Eram Byte
to nie działa może być dowolna zmienna ale bez niej nie działa na innej wersji bascoma tak samo.

Portret użytkownika mirley

Re: PWM

Popierwsze tej linijki nie powinno być:

Dim Pwm1a As Eram Byte

Pwm1a to nazwa rejestru, nie możesz zadeklarowac takiej zmiennej nawet jak kompilator na to pozwala. Po drugie co ma znaczyc ta linijka:

F = Pwm1a

Przypisujesz w niej wartośc rejestru PWM do zmiennej F, potem w pętli głównej nigdzie nie modyfikujesz wartości rejestru pwm a jedynie zmieniasz zmienna F więc jak ma on działać. Wartość początkowa pwm powinna byc poza pętlą główną i powinno to wyglądać mniej więcej tak Pwm1a = 122. Możesz zapisywac do zmiennej wartość pwm ale potem musisz to wpisać do rejestru

napisz tak:

Pwm1a = 122
 
Do                                       
 
If S1 = 0 Then
  Waitms 15                                               
  If S1 = 0 Then   
   If F < 255 Then  
     Incr F 
     Pwm1a = F 
   end if
End If
End If
 
 
If S2 = 0 Then
  Waitms 15                                                  
  If S2 = 0 Then
    If F >0 Then
      Decr F                                                     
      Pwm1a = F
    End If
  End If
End If
 
Loop
End

Tak w zasadzie to wydaje mi się że zmienna f jest do niczego nie potrzebna i można piac poprostu Pwm1a

-

UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.

Portret użytkownika rafliczek22

Zmieniłem kod tak jak

Zmieniłem kod tak jak powiedziałeś i wygłada tak ale nadal występują błędy w tych 3 miejscach(komentarz w kodzie):

$regfile = "attiny13.dat"
$crystal = 9600000
$hwstack = 20
$swstack = 10
$framesize = 40
 
Config Portb = &B000011 : Portb = &B111111
 
Config Timer1 = Pwm , Prescale = 1 , Pwm = 8 , Compare A Pwm = Clear Down , Compare B Pwm = Disconnect
 
Dim F As Byte
 
S1 Alias Pinb.2
S2 Alias Pinb.3
 
Pwm1a = 122          'tutaj błąd
 
Do
 
If S1 = 0 Then
  Waitms 15
  If S1 = 0 Then
   If F < 255 Then
     Incr F
     Pwm1a = F       'tutaj błąd
 End If
End If
End If
 
 
If S2 = 0 Then
  Waitms 15
  If S2 = 0 Then
    If F >0 Then
      Decr F
      Pwm1a = F       'i tutaj błąd
  End If
End If
End If
 
Loop
End

Próbowałem bez zmiennej f ale wyskakuje jeszcze więcej błędów.

Poszukałem trochę w internecie i znalazłem kawałek kodu do ustawienia PWM odrazu w rejestrze, skompilowałem (ładnie się kompiluje) i wygląda tak:

$regfile = "attiny13.dat"
$crystal = 9600000
$hwstack = 20
$swstack = 10
$framesize = 40
 
Config Portb = &B000011 : Portb = &B111111
 
S1 Alias Pinb.2
S2 Alias Pinb.3
 
Set Tccr0a.0
Set Tccr0a.1
Set Tccr0a.7
Pwm0a = 10
Set Tccr0b.cs00
 
Dim F As Integer
 
F = Pwm0a
F = 122
 
Do                                                          'wartosc poczatkowa pwm
 
If S1 = 0 Then
Waitms 15                                                   'zamiast polecenie debounce
If S1 = 0 Then
Incr F                                                      'zmniejsza wypelnienie
If F = 0 Then
F = 255
End If
End If
End If
 
 
If S2 = 0 Then
Waitms 15                                                   'zamiast polecenie debounce
If S2 = 0 Then
Decr F                                                      'zwieksza wypelnienie
If F = 255 Then
F = 0
End If
End If
End If
 
 
Loop
End

ale ostatnio do innego programu podpiąłem źle tiny13 i czekam aż listonosz przywiezie nowe procki czy mógłbyś ten kod sprawdzić u siebie (jeżeli masz pod ręka tiny13).

Portret użytkownika mirley

Re: PWM

Nie dam rady sprawdzić twojego programu bo poprostu nie mam kiedy, nawet nie pracuje aktualnie na windowsie a nie mogę się przełączyć teraz.... Uważam że program z internetu nie pójdzie bez żadnych modyfikacji bo nigdzie nie wpisujesz wartości do PWM, tylko na samym początku "Pwm0a = 10", modyfikowanie zmiennej F nic Ci nie da bo nie przypisujesz jej do PWM. Takie jest moje zdanie..

Co do programu co napisałem wyżej to błąd jest w tym że ustawiamy timer1 a tiny13 nie ma timera1, ma tylko timer0. Zmień to w kodzie i powinno działać. Pwm1a zmień na Pwm0a Błędy mogą być bo piszę bezpośrednio na stronie z pamięci a nie w bascomie

-

UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.

Portret użytkownika rafliczek22

Zrobiłem kod na Timer0 i

Zrobiłem kod na Timer0 i działa dzięki mirley, ale nadal mam pytania nr.2,3

Portret użytkownika mirley

Re: PWM

Quote:
2. Mi chodziło o to aby na wyśw. nie wyświetlać wartości 0-255 tylko aby to ładnie i przyjemnie wyglądało, że u góry kolejno wyświetlają się matryce wyśw. a w dolnej linijce wartość ale od 0-100%.

3. A czy nie dało rady by jakoś wykorzystać tego układziku??? [url=]http://mirley.firlej.org/regulator_obrotow_silnika_230v[/url]

2. Co do wyświetlania procentów to nie ma problemy wystarczy pomnozyć wartość PWM przez 100 i podzielic przez 255 i będą procenty

3. Co do tego ukłądu regulatora to raczej trudno będzie to wykorzystać.... pisałem że można by zamienić jakoś prosto impulsy na napięcie które by podawac na wejście drugiego układu ale nie wiem cy układ u2008 "lubi" takie coś na swoim wejściu

-

UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.

Portret użytkownika rafliczek22

Z procentami sie uporałem ale

Z procentami sie uporałem ale mam pewien pomysł do pyt.3 jak dokładnie działa optotriak czy jeżeli na diode sie da mniejszy prad to bedzie słabiej swiecic i zmniejszec rozwartosc triaka???

Portret użytkownika mirley

Re: Optotriak

Jeśli dasz mniejszy prąd to uzyskasz progowe działanie.. do pewnego prądu nic się nie dzieje a potem nagle się włączy. Triak ma pewien prąd bramki do właczenia i optotriak musi tak świecić żeby jego druga wysokonapięciowa część zapewniła taki prąd

-

UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.

Portret użytkownika rafliczek22

mam 2 pomysły; 1. Z twojej

mam 2 pomysły;

1. Z twojej strony układ ktory podałem wczesniej + potencjometr cyfrowy.

2. Jakoś przerobić sciemniacz do lampy.

Portret użytkownika mirley

Re: PWM

Z potencjometrami cyfrowymi trzeba uważać na napięcia maksymalne jakie mogą mieć na swoich końcówkach względem masy

-

UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.

Portret użytkownika rafliczek22

Witam ponownie po dosc dlugim

Witam ponownie po dosc dlugim czasie.

Szukalem w internecie i cos znalazlem:

[url=][http://www.fotosik.pl/pokaz_obrazek/41fb2306de5ed9b0.html/url]

Nie wiem czy to bedzie dzialalo, a triakow i opto w domu nie mam (jakos wole przekazniki) i wolalbym sie wstepnie zapytac czy ma to szanse dzialania poniewaz w moim sklepie sa takie czesci bardzoooo drogie a na allegro tych paru czesci narazie nie bede zamawial.
Poczytalem troche o bascomie i program dla wiekszej dokladnosci oczywiscie zrobilbym na timerach.
Tak jak pisalem wczesniej chce to wykorzystac do chalogenow (glownie) a jesli by sie dalo do went. pieca c.o

Portret użytkownika mirley

Re: Sterowanie PWM

Pisałem już sterowanie fazowe dla żarówki na tiny2313 jednak potrzebny był jeden timer dla jednej żarówki co jest trochę problemem. Nie udało mi się tak zrobić żeby jeden timer sterował jasnością kilku żarówek niezależnie. Do żarówek nadaje się tylko sterowanie fazowe i zależności czasowe które są tam podane muszą być idealnie spełnione bo inaczej żarówka świeci jak świeczka. Jeśli twoje halogeny są z transformatorem na 12V to zastanów się czy nie wyprostować napięcia mostkiem a potem dać tranzystora mosfet do sterowania PWM na wysokiej częstotliwości, tak jak zwykłe diody led

-

UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.

Portret użytkownika rafliczek22

Urządzeniem chciałem sterować

Urządzeniem chciałem sterować podczerwienią jak już pisałem na tiny13 niestety ma 1 timer który będzie pracował dla TSOP1736 więc trzeba coś co ma 2 lub więcej timerów więc attiny2313 mogło by być dla 1 żarówki, ale m8 ma już 3 timery więc bez problemu dwoma urządzonkami.
Tylko jeszcze jak sprawa wyglądała by do went. od pieca c.o
I mi się wydaje że program musiałby wyglądać tak:

Timer0 = 0
Incr Dzielnik
If Dzielnik = A Then
Toggle Triak
End If

A była by zmienną ustawianą w programie za pomocą podczerwieni, i w tym wypadku nie regulowało by się wypełnienie tylko sama częstotliwość podawana na diodę triaka.
Niestety moje halogeny działają na 230V, gdyby działały na 12 to bym nie zadawał tych pytań, ale gdyby tak 230V z gniazdka wyprostować ale nie filtrować i sterować wysokonapięciowym mosfet-em ale do silnika by się to napewno nie nadawało [uszkodziło].

Portret użytkownika mirley

Re: Sterowanie

230V raczej nie prostuj bo to nie jest dobry pomysł. Do silnika to już napewno nie jest dobre. Co do tego sterowania fazowego żarówki to nie będzie to takie proste ale sam sprawdzisz jak to będzie działało w praktyce jak zaczniesz programować, nie ma co na sucho się zastanawiać

-

UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.

Portret użytkownika rafliczek22

Ok. Narazie dzięki, jak będę

Ok. Narazie dzięki, jak będę miał triaki to opiszę efekty.