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ę

Bascom osiem kanałów PWM

gski
-
-
Posty:2
Rejestracja:22 sie 2005, o 12:20
Lokalizacja:BP
Bascom osiem kanałów PWM

Postautor: gski » 22 sie 2005, o 12:32

Witam
Potrzebuje rozwiązać problem sterowania osmioma niezależnymi kanałami PWM.
Interesuje mnie podanie na piny wyjściowe stałej częstotliwości i zmiennym wypełnieniu.
Nie bardzo wiem jak ten temat podejść?.

Awatar użytkownika
Avatar
-
-
Posty:46
Rejestracja:12 gru 2003, o 13:39
Lokalizacja:Ruda Śląska
Kontaktowanie:

Postautor: Avatar » 22 sie 2005, o 15:33

Witam, bawilem sie kiedys w cos takiego, ponizej zamieszczam listing:

$regfile = "m16def.dat"
'$regfile = "8535def.dat"
$crystal = 7372800

'***************** Konfiguracja timerow ****************************************
' do generowania PWM na "piechote"
Config Timer0 = Timer , Prescale = 1
On Timer0 Zaswiec
Enable Timer0
Enable Interrupts
Start Timer0

Config Porta = Output ' port do ktorego sa podpiete np. ledy

Dim Pwm As Byte ' wartosc z ktora porownywane jest wypelnienie kazdego kanalu
Dim Led(8) As Byte ' zmienne w ktorych jest przechowywana wartosc wypelnienia


do
' jakies instrukcje
loop



Zaswiec: ' podprogram wywolywany po przepelnieniu timera
Stop Timer0
Incr Pwm
' If Pwm = 101 Then Pwm = 0

If Pwm < Led(1) Then
Porta.0 = 1
Else
Porta.0 = 0
End If

If Pwm < Led(2) Then
Porta.1 = 1
Else
Porta.1 = 0
End If

If Pwm < Led(3) Then
Porta.2 = 1
Else
Porta.2 = 0
End If

If Pwm < Led(4) Then
Porta.3 = 1
Else
Porta.3 = 0
End If

If Pwm < Led(5) Then
Porta.4 = 1
Else
Porta.4 = 0
End If

If Pwm < Led(6) Then
Porta.5 = 1
Else
Porta.5 = 0
End If

If Pwm < Led(7) Then
Porta.6 = 1
Else
Porta.6 = 0
End If

If Pwm < Led(8) Then
Porta.7 = 1
Else
Porta.7 = 0
End If

start timer0
Return



Mam nadzieje, ze bedzie dzialac wg oczekiwan autora tego postu, zycze udanych ekspyrementow.

[ Dodano: 22-08-2005, 16:35 ]
Zamiast led(8) ma byc led( 8 ) oczywiscie 8)

gski
-
-
Posty:2
Rejestracja:22 sie 2005, o 12:20
Lokalizacja:BP

Postautor: gski » 23 sie 2005, o 07:32

Wielkie dzieki dzisiaj posiedze sprawdze.
Nie mogłem tego tematu jakoś rozwalić.Zastosowanie procesora z tyloma PWM-ami nie ma sensu.
A muszę sterować osiem wyjść niezależnie ,szerokością impulsu.
Jeszcze raz wielkie dzięki .

sablik
-
-
Posty:101
Rejestracja:7 lip 2004, o 06:18
Lokalizacja:Czaniec
Kontaktowanie:

Postautor: sablik » 23 sie 2005, o 15:45

Witam.
program powinien działać poprawnie ale nie za bardzo nadaje się do urządzeń które wymagają dużej częstotliwosci.
Jeśli masz w procku program który powinien się szybko wykonywać np mierzysz jakieś zmienne i odpowiadasz na nie za pomocą PWM to musisz ustawić przerwania tak aby było więcej czasu na wykonywanie programu, jezełi ustawisz przerwanie timera tak że będzie ono z częstotliowscią 1000 Hz a PWM będzie o rozdzielczości 100 to na wyjściu dostaniesz żenującą częstotliwość.
Spróbowałbym poszukać jakiegośc układu pwm sterowanego przez spi np. lub coś o czym ostatnio myślałem wykorzystać procki np m 32 a w nich masz trzy PWM sprzętowe.
PozdrawiamAS

euromatic
-
-
Posty:77
Rejestracja:27 lip 2003, o 21:38
Lokalizacja:00000

Postautor: euromatic » 30 sie 2005, o 19:42

Proponuję użyć układu 4094, kilku rezystorów do przetwornika R2R, multipleksera 4051, wzmacnacza LM324 i już masz 8 wyjść PWM 0....10V

Sterowanie tuym jest proste jak " kopanie staruszki"

Awatar użytkownika
r-mik
-
-
Posty:351
Rejestracja:14 cze 2005, o 19:18
Lokalizacja:Wawa
Kontaktowanie:

Postautor: r-mik » 30 sie 2005, o 22:28

z resystorami bylbym ostrozny jesli ma byc sensowna linniowosc. Mozna zastosowac resystory 0,5% ale ich cena jest wyzsza niz scalonego przetwornika CA.

Pzdr
SS

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 22 gości