PWM -> liczba



Masz problem? Zapytaj na forum elektroda.pl

Poprzedni Następny
Wiadomo¶ć
Spis tre¶ci
From: jareka1234_at_nospam_dawid.com.pl (Jaroslaw Andrzejewski)
Subject: PWM -> liczba
Date: Sat, 27 May 2000 19:32:11 GMT


Tak się zastanawiam jak zamienić PWM na liczbę.
Dodatkowe informacje na temat sygnału PWM:
można założyć stałego okresu.
chcę zamienić na liczbę (no, ale to chyba wynika z "PWM".

Na razie mam trzy pomysły:

a) rozwiązanie software'owe (+ użycie licznika z '51 lub AVR).
Najtańsze i chyba przy użyciu 89C2051 taktowanego 24MHz wystarczająco
dokładne (o ile czas trwania stanu wysokiego zmierzy mi jeden timer o
tyle długo¶ć okresu będę chyba musiał zmierzyć przy użyciu przerwań i
drugiego timera).

b) filtr + przetwornik AC. Wadą takiego rozwiązania jest niestety
opóźnienie wynikające z czasu reakcji filtru, a ja chciałbym wyciągać
dokładną liczbę z każdego okresu przebiegu.

c) licznik zliczający sygnał o f będącej wielokrotno¶cią f sygnału;
np. zliczanie sygnału generatora pętli PLL 4046 (po podziale np. przez
1000 i zsynchronizowaniu z PWM) dawałoby liczby od 0 (dla czasu
trwania stanu wysokiego 0%) do 1000 (dla czasu trwania stanu wysokiego
100%)
Wadą tej metody jest pewna komplikacja układu: dwa liczniki po 10 lub
więcej bitów, PLL, bramki, zatrzaski; zaletą: dokładny odczyt w
wybranym zakresie (wystarczy dzielnik PLLa o wybranym współczynniku)

Wiem, że możnaby spróbować "zamknąć" tę logikę w jakie¶ PLD, ale
ponieważ moje do¶wiadczania z PLD zakończyły się kilka lat temu na
GALxxVx chętnie posłucham propozycji przy założeniach:
podczas jazdy, więc kilkaset mA nie robi różnicy)
zupełno¶ci wystarczy)
kiedy¶ to był kłopot: dostałem parę katalogów AMD o PALCE'ach i
MACHach i nawet kilka ko¶ci. Niestety z braku opisów nie byłem w
stanie nic z nimi zrobić. Co więcej - mój Seprog też nie miał ich na
li¶cie obsługiwanych układów z tego samego powodu.
To, że nie mam do¶wiadczania z nowszymi PLD nie powinno być
decydujące, bo nawet je¶li w tym projekcie ich nie użyję to i tak mam
zamiar uaktualnić wiedzę. Chętnie posłucham porad, a zakup
"starter-kitu" też mnie nie "przeraża".

Juliuszu, czego Ty używasz?

W przypadku PLD możnaby też zrezygnować z PLL i zrealizować dzielenie
liczby impulsów jakiego¶ generatora zliczonej podczas stanu wysokiego
przez liczbę impulsów zliczoną podczas całego okresu. Dodatkowo można
zatrzasnąć iloraz na czas, aż nie pojawi się nowy wynik, żeby
mikrokontroler mógł go odczytać w dowolnym momencie.

--
Jarek Andrzejewski
(UWAGA: z adresu wytnij CYFRY - to jest pułapka na spamerów)

Poprzedni Następny
Wiadomo¶ć
Spis tre¶ci
From: "Gooral" <agorski_at_nospam_elbud.waw.pl>
Subject: Re: PWM -> liczba
Date: Mon, 29 May 2000 06:36:25 GMT



Jaroslaw Andrzejewski napisał(a) w wiadomo¶ci:
<3936fa35.7198340_at_nospam_news.tpsa.pl>...
Tak się zastanawiam jak zamienić PWM na liczbę.
Dodatkowe informacje na temat sygnału PWM:
- częstotliwo¶ć (do wyboru) ok. 400Hz-2,5kHz. Zakładam raczej 1kHz.
- częstotliwo¶ć "pływa" np. na skutek zmian temperatury, więc nie
można założyć stałego okresu.
- iloraz czasu trwania stanu wysokiego do okresu koduje warto¶ć, którą
chcę zamienić na liczbę (no, ale to chyba wynika z "PWM".
- dodatkowa informacja: źródłem sygnału będzie akcelerometr ADXL202

Na razie mam trzy pomysły:

Czesc.

Proponuje rozwiazac to analogowo.
dwa uklady calkujace zakonczone prostownikami z WO (bez straty napiecia.)
jeden sterowany okresem (zaleznosc od czestotliwosci) wytwarza napiecie
proporcjonalne do czestotliwosci.
nalezy zmienic zaleznosc napiecia od czestotliwosci na odwrotnie
proporcjonalna.
to napiecie nalezy uzyc do ustalenia pradu kondensatora w drugim ukladzie
calkujacym
sterowanym sygnalem PWM. na wyjsciu oczywiscie prostownik bezstratny i masz
napiecie proporcjonalne do wypelnienia niezalezne od czestotliwosci. A/D i
gotowe.

zwykle usrednianie daje rowniez takie napiecie jednak sadze, ze ma
zdecydowanie wieksza stala czasowa.
a w tym ukladzie jak sie uprzesz to mozesz mierzyc wypelnienie za kazdy
okres.

ilosc potrzebnych elementow:
1. poczworny OP
2. podwojny KOMP
3 do 10 REZ
4. 2 KOND
5. 2 TRANZ
6. 2 diody. (moze jeszcze cos...)(?)


Adam.



Poprzedni Następny
Wiadomo¶ć
Spis tre¶ci
From: jareka1234_at_nospam_dawid.com.pl (Jaroslaw Andrzejewski)
Subject: Re: PWM -> liczba
Date: Mon, 29 May 2000 07:26:58 GMT


Mon, 29 May 2000 06:36:25 GMT, "Gooral" <agorski_at_nospam_elbud.waw.pl>
napisał(-a):


Jaroslaw Andrzejewski napisał(a) w wiadomo¶ci:
<3936fa35.7198340_at_nospam_news.tpsa.pl>...
Tak się zastanawiam jak zamienić PWM na liczbę.

Proponuje rozwiazac to analogowo.
OK. Dzięki - to jest jaki¶ pomysł. Zamiana częstotliwo¶ci sygnału na
napięcie nie nawet musi być "szybka" bo ewentyualne zmiany są raczej
powolne.

--
Jarek Andrzejewski
(UWAGA: z adresu wytnij CYFRY - to jest pułapka na spamerów)

Poprzedni Następny
Wiadomo¶ć
Spis tre¶ci
From: "Tomasz Gumny" <tomasz.gumny_at_nospam_ep.com.pl>
Subject: Re: PWM -> liczba
Date: Mon, 29 May 2000 08:28:34 GMT


Proponuje rozwiazac to analogowo.
dwa uklady calkujace zakonczone prostownikami z WO (bez straty napiecia.)
jeden sterowany okresem (zaleznosc od czestotliwosci) wytwarza napiecie
proporcjonalne do czestotliwosci.
[...]

AVR-y od 2313 w gore maja pin ICP. Wybrane zbocze na tej nozce przepisuje w
locie zawartosc timera do specjalnego rejestru ICR i generuje przerwanie. Caly
program zmiesci sie w kilku linijkach:
1. ICP na narastajace zbocze;
2. SLEEP;
3. poczatekH = ICR1;
4. ICP na opadajace zbocze;
5. SLEEP;
6. koniecH = ICR1;
7. ICP na narastajace zbocze;
8. SLEEP;
9. koniecL = ICR1;
10. liczbaPWM = ( koniecH - poczatekH ) / ( koniecL - poczatekH );
11. poczatekH = koniecL;
12. goto 4
Timer liczy na okraglo bez zatrzymywania. Przepisywanie zawartosci odbywa sie
sprzetowo, wiec odpadaja bledy wynikajace z czasu obslugi przerwania. W dodatku
w AVR-ach timery moga chodzic z czestotliwoscia kwarcu. Prze fmin=400Hz moze to
byc nawet 10MHz (max dla AVR).
TG



Poprzedni Następny
Wiadomo¶ć
Spis tre¶ci
From: jfox_at_nospam_friko6.onet.pl (J.F.)
Subject: Re: PWM -> liczba
Date: 29 May 2000 14:06:20 GMT


On Sat, 27 May 2000 19:32:11 GMT, Jaroslaw Andrzejewski <jareka1234_at_nospam_dawid.com.pl> wrote:
Tak się zastanawiam jak zamienić PWM na liczbę.
Dodatkowe informacje na temat sygnału PWM:
- częstotliwo¶ć (do wyboru) ok. 400Hz-2,5kHz. Zakładam raczej 1kHz.
- częstotliwo¶ć "pływa"

a) rozwiązanie software'owe (+ użycie licznika z '51 lub AVR).
Najtańsze i chyba przy użyciu 89C2051 taktowanego 24MHz wystarczająco
dokładne (o ile czas trwania stanu wysokiego zmierzy mi jeden timer o
tyle długo¶ć okresu będę chyba musiał zmierzyć przy użyciu przerwań i
drugiego timera).

Jak sie troche przylozyc to da sie te liczniki troche wykorzystac.
MOzesz uzyc ktoregos z 805xx siemensa - ma "input capture".
Albo ktoras motorolke. Niezly jest tez stary dobry 8253/8254 -
trzy timery licza ladnie.

b) filtr + przetwornik AC.

Nie polecam. Po co mieszac analogowke do cyfrowki?
Nie po to przeciez AD zrobil wyjscie PWM. Jak chcesz to uzyj
innego sensera - z wyjsciem analogowym.

c) licznik zliczający sygnał o f będącej wielokrotno¶cią f sygnału;
np. zliczanie sygnału generatora pętli PLL 4046

Tez dobry pomysl.

Wadą tej metody jest pewna komplikacja układu: dwa liczniki po 10 lub
więcej bitów, PLL, bramki, zatrzaski;

Jeden licznik nie jest problemem - on tylko dzieli do PLL. Gorzej
z drugim, bo trzeba go odczytac. Jest taki zgrabny chip do czestosciomierza
ci 10 bitow? DOkladnosc nie jest taka ze 2 sie tylko marnuja?

Wiem, że możnaby spróbować "zamknąć" tę logikę w jakie¶ PLD, ale

oprocz tych licznikow to logiki jest tam niewiele i spokojnie mozna
na jakims galu lub bramkach. No chyba ze chcesz liczniki wpakowac
do srodka. Jest taka zgrabna kostka Latticei, obecnie Vantis : ispLSI 1016.

- szybko¶ć działania też nie jest krytyczna (zliczanie kilku MHz w
zupełno¶ci wystarczy)
- niska cena (np. do 50 zł/ko¶ć)

No niestety - dobre kostki nie robi sie w wersji wolnej i taniej :_)
Jak tanio - to do sklepu po standardowe TTL/40

Ale ta akurat powinna sie zmiescic, a 60-100MHz chyba nie przeszkadza?

W przypadku PLD możnaby też zrezygnować z PLL i zrealizować dzielenie
liczby impulsów jakiego¶ generatora zliczonej podczas stanu wysokiego
przez liczbę impulsów zliczoną podczas całego okresu.

Brr - dzieli sie w PLD bardzo zle. Lepiej dzielic procesorem
[tez nielatwo]. Tylko tak - licznikow 12bit powiedzmy dwa,
rejestrow do tego rowniez 2*12. Razem nie mniej 48 macrocel.
1016 jeszcze starczy, ale z trudem, inne PLD byc moze juz
przekraczaja granice cenowe. Przy PLL kawalek oszczedzas ..

J.


Poprzedni Następny
Wiadomo¶ć
Spis tre¶ci
From: jareka1234_at_nospam_dawid.com.pl (Jaroslaw Andrzejewski)
Subject: Re: PWM -> liczba
Date: Tue, 30 May 2000 09:08:56 GMT


29 May 2000 14:06:20 GMT, jfox_at_nospam_friko6.onet.pl (J.F.) napisał(-a):

b) filtr + przetwornik AC.

Nie polecam. Po co mieszac analogowke do cyfrowki?
Nie po to przeciez AD zrobil wyjscie PWM. Jak chcesz to uzyj
to PWM z tego scalaka jest "naturalne"
innego sensera - z wyjsciem analogowym.
ten filtr (RC) już jest wewnątrz scalaka, więc wybór jest
z drugim, bo trzeba go odczytac. Jest taki zgrabny chip do czestosciomierza
- cos chyba ICM 71xxx - moze on by sie nadal ? A w ogole potrzebne
ci 10 bitow? DOkladnosc nie jest taka ze 2 sie tylko marnuja?
muszę policzyć dokładnie. te 10b to pewne przybliżenie

do srodka. Jest taka zgrabna kostka Latticei, obecnie Vantis : ispLSI 1016.
poczytam
Brr - dzieli sie w PLD bardzo zle. Lepiej dzielic procesorem
[tez nielatwo]. Tylko tak - licznikow 12bit powiedzmy dwa,
rejestrow do tego rowniez 2*12. Razem nie mniej 48 macrocel.
1016 jeszcze starczy, ale z trudem, inne PLD byc moze juz
przekraczaja granice cenowe. Przy PLL kawalek oszczedzas ..
to w takim razie chyba jednak podzielę procesorem. Kilkana¶cie
"obrotów" pętli nie zajmie zbyt wiele czasu
--
Jarek Andrzejewski
(UWAGA: z adresu wytnij CYFRY - to jest pułapka na spamerów)