RTV forum PL | NewsGroups PL

Jak ustabilizować pomiar prądu na ATmega8 przy zasilaniu silnikiem mikrowiertarki?

Pomiar prądu - atmega8

NOWY TEMAT

elektroda NewsGroups Forum Index - Elektronika Polska - Jak ustabilizować pomiar prądu na ATmega8 przy zasilaniu silnikiem mikrowiertarki?

Goto page Previous  1, 2

Name
Guest

Tue Jun 02, 2009 8:22 pm   



ulyssess wrote:
Quote:
Teoretycznie możanby zwiększyc ilość pomiarów do np 100. W tym przypadku
lepiej by było jeszcze porównywac je i odrzucać szczególnie za duże/za małe
wartości. dopiero wtedy miałoby chyba to sens.

Mógłby przydać się filtr medianowy. Zasada jest trywialna: dla każdej
nowej próbki sortujesz bufor i wybierasz środkowy element = wynik
filtrowania.

ulyssess
Guest

Tue Jun 02, 2009 8:25 pm   



Quote:
Ale tego chyba właśnie nie zajarzyłeś.

Mierz prąd co kilkanaście (czy ile tam trzeba) ms, każdy pomiar zapisuj w
pamięci.
Niech pamięć ma rozmiar 256 pomiarów. Po zapisaniu 255 komórki, zacznij
nadpisywać dane w komórce nr 0.
Średnią zaś licz co pomiar z zakresu od 1 do 256 komórek. Tu możesz
sterować sobie.

Załóżmy że mamy 250 pomiarów co 10ms. Czyli zapis do komórki 1 bedzie co 2,5
sekundy Jeżeli będziemy mieli skok prądu z 2 na 4 A to efekt przejścia z 2
na pełne 4 bedzie trwał 2,5 sekundy w skrajnym przypadku. To bardzo duże C
;)

Quote:
Dzięki temu średnią masz co kilkanaście ms liczoną z okresu od 1 do
256xkilkanaście ms (to może być nawet i 1 s).
Oczywiście pomiar pierwszych 256 próbek jest zafałszowany (bo były same
zera w pamięci).
Nie przesadzaj z długością, bo się bedzie muliło. Tak jak z za duzym C w
filtrze RC.

Lub R
--
Pozdrawiam Piotrek
www.tajemnicesw.cba.pl

ulyssess
Guest

Tue Jun 02, 2009 8:30 pm   



Quote:
Mógłby przydać się filtr medianowy. Zasada jest trywialna: dla każdej
nowej próbki sortujesz bufor i wybierasz środkowy element = wynik
filtrowania.

Czyli po 10 pomiarach wyrzucam pierwszy, dodaje kolejny i znowu licze
średnią? Czy to bedzie lepsze niz srednia z kolejnych 10?


--
Pozdrawiam Piotrek
www.tajemnicesw.cba.pl

rpdrobny
Guest

Tue Jun 02, 2009 8:40 pm   



Quote:
Załóżmy że mamy 250 pomiarów co 10ms. Czyli zapis do komórki 1 bedzie co
2,5 sekundy Jeżeli będziemy mieli skok prądu z 2 na 4 A to efekt przejścia
z 2 na pełne 4 bedzie trwał 2,5 sekundy w skrajnym przypadku. To bardzo
duże C

Niby racja
Zmieniasz prąd skokowo z 2 na 4 ampery, jak wrzucisz do Excela to masz
tablekę
po 10 ms 2,008 A
po 20 ms 2,015 A
po 100 ms 2,08 A
po 200 ms 2,15 A
po 500 ms 2,37 A

ale kto Tobie każe robić tak duży filtr. Tu właśnie jest pole do popisu i
optymalizacji okresu próbkowania i ilości próbek.
Zresztą masz do wyboru, albo duży kondensator albo trochę pamięci do
wykorzystania.

ulyssess
Guest

Tue Jun 02, 2009 8:48 pm   



Quote:

ale kto Tobie każe robić tak duży filtr. Tu właśnie jest pole do popisu i
optymalizacji okresu próbkowania i ilości próbek.
Zresztą masz do wyboru, albo duży kondensator albo trochę pamięci do
wykorzystania.


Pewnie mając troche czasu pokombinuje z tym też. Ale filtr RC napewno
pozostanie może tylko z mniejszym C jeśli programowy sie sprawdzi.


--
Pozdrawiam Piotrek
www.tajemnicesw.cba.pl

John Smith
Guest

Tue Jun 02, 2009 10:17 pm   



Quote:
A może też taki drobny uśredniający filterek programowy.
Nie zaszkodzi przecież.
Dla przykładu, zajmujesz kawałek pamięci, zapisujesz ją w kółeczko, a
pomiar polega na policzeniu średniej z tegoż obszaru.
Jak ilość próbek będzie wielokrotnością 2ki to i średnią łatwo się liczy.




No to zrobiłem też. Robie 10 pomiarów, dodaje do siebie i dziele przez 10.
Ale jeżeli każdy wynik jest inny ze zwględu na zakłucenia to niewiele to
daje.

To już lepiej brać 8 lub 16 próbek a dzielenie zastąpić przesunięciem wyniku
w prawo o 3 lub 4 bity.
K.

Zbych
Guest

Tue Jun 02, 2009 10:21 pm   



ulyssess pisze:
Quote:
Mógłby przydać się filtr medianowy. Zasada jest trywialna: dla każdej
nowej próbki sortujesz bufor i wybierasz środkowy element = wynik
filtrowania.

Czyli po 10 pomiarach wyrzucam pierwszy, dodaje kolejny i znowu licze
średnią? Czy to bedzie lepsze niz srednia z kolejnych 10?

Nie średnią, a środkową i nie liczysz tylko szukasz.


--
przeciez moje rozumowanie bylo bez skazy,
no sam bym wskoczyl do tego wulkanu,
ale kto by tak pieknie gwizdal...

Zbych
Guest

Tue Jun 02, 2009 10:28 pm   



rpdrobny pisze:
Quote:
Dzięki temu średnią masz co kilkanaście ms liczoną z okresu od 1 do
256xkilkanaście ms (to może być nawet i 1 s).

Zamiast marnować tyle pamięci można zrobić prosty filtr IIR. Efekt
będzie podobny.


--
przeciez moje rozumowanie bylo bez skazy,
no sam bym wskoczyl do tego wulkanu,
ale kto by tak pieknie gwizdal...

ulyssess
Guest

Wed Jun 03, 2009 4:11 am   



Quote:

To już lepiej brać 8 lub 16 próbek a dzielenie zastąpić przesunięciem
wyniku
w prawo o 3 lub 4 bity.
K.


A jaka to różnica w działaniu filtra?

--
Pozdrawiam Piotrek
www.tajemnicesw.cba.pl

BartekK
Guest

Wed Jun 03, 2009 8:37 am   



ulyssess pisze:
Quote:
To już lepiej brać 8 lub 16 próbek a dzielenie zastąpić przesunięciem
wyniku
w prawo o 3 lub 4 bity.
K.


A jaka to różnica w działaniu filtra?
Filtra - niewielka. Programu - ogromna. Przesunięcie w prawo to jedna

bitowa operacja asemblera, jeden cykl procesora. A dzielenie przez 10
jest operacją matematyczną wykonywaną programowo, zwłaszcza na avr który
nie ma sprzętowego dzielenia

--
| Bartlomiej Kuzniewski
| sibi@drut.org GG:23319 tel +48 696455098 http://drut.org/
| http://www.allegro.pl/show_user_auctions.php?uid=338173

ulyssess
Guest

Wed Jun 03, 2009 2:14 pm   



Quote:
Filtra - niewielka. Programu - ogromna. Przesunięcie w prawo to jedna
bitowa operacja asemblera, jeden cykl procesora. A dzielenie przez 10 jest
operacją matematyczną wykonywaną programowo, zwłaszcza na avr który nie ma
sprzętowego dzielenia


No fajnie tylko trzeba jeszcze pisać w asemblerze, czego nie robie, a avr z
dzieleniem programowym radzi sobie dość dobrze. Program gotowy na pomiar
napiecia i pradu z filtrem programowym(niewielkim) zajął mi 3k kodu. Zatem
miejsca mam jeszcze oporowo


--
Pozdrawiam Piotrek
www.tajemnicesw.cba.pl

BartekK
Guest

Wed Jun 03, 2009 3:10 pm   



ulyssess pisze:
Quote:
Filtra - niewielka. Programu - ogromna. Przesunięcie w prawo to jedna
bitowa operacja asemblera, jeden cykl procesora. A dzielenie przez 10 jest
operacją matematyczną wykonywaną programowo, zwłaszcza na avr który nie ma
sprzętowego dzielenia


No fajnie tylko trzeba jeszcze pisać w asemblerze, czego nie robie, a avr z
dzieleniem programowym radzi sobie dość dobrze. Program gotowy na pomiar
napiecia i pradu z filtrem programowym(niewielkim) zajął mi 3k kodu. Zatem
miejsca mam jeszcze oporowo
Jest coś takiego jak kultura programowania, nawet jeśli ty nie widzisz

różnicy, to nie znaczy że w kodzie (po skompilowaniu) nie ma. Skoro
dzielenie przez potęgę dwójki kompilator może zamienić na jeden rozkaz
asemblera (kodu maszynowego) a do twojego dzielenia musi wrzucać
skomplikowaną procedurę, to różnica musi być. Choćby w prędkości
działania programu - nawet jak ci nie zależy na niej zbytnio, ani nie
wyciskasz ostatnich us z czasu procesora, to lepiej program pisać tak by
był maksymalnie wydajny i "płynny" (a nie stawał w bliżej nieokreślonych
miejscach na jakimś dzikim obliczeniu programowym na zmiennej
wielobajtowej na kilkanaście/dziesiąt ms), a potrzebne opóźnienia
"waity" były robione programowo w tych miejscach i w takiej wielkości
jaką zaprojektujesz, a nie "jak wyjdzie"

--
| Bartlomiej Kuzniewski
| sibi@drut.org GG:23319 tel +48 696455098 http://drut.org/
| http://www.allegro.pl/show_user_auctions.php?uid=338173

Sławomir Szczyrba
Guest

Wed Jun 03, 2009 6:14 pm   



Może ulyssess trolluje, a może i nie... Ale pisze :
Quote:

No fajnie tylko trzeba jeszcze pisać w asemblerze, czego nie robie, a avr z

Uwierz w kompilator.

On naprawdę nie jest zupełnie głupi Smile
(no i jest jeszcze operator >> ;)

Sławek
--
________
_/ __/ __/ 17. Fizyk do konca zycia nie ucieknie przed grupa obrotow.
\__ \__ \_______________________________________________________________
/___/___/ Sławomir Szczyrba steev/AT/hot\dot\pl

ulyssess
Guest

Wed Jun 03, 2009 6:34 pm   



Quote:

No fajnie tylko trzeba jeszcze pisać w asemblerze, czego nie robie, a avr
z dzieleniem programowym radzi sobie dość dobrze. Program gotowy na
pomiar napiecia i pradu z filtrem programowym(niewielkim) zajął mi 3k
kodu. Zatem miejsca mam jeszcze oporowo
Jest coś takiego jak kultura programowania, nawet jeśli ty nie widzisz
różnicy, to nie znaczy że w kodzie (po skompilowaniu) nie ma. Skoro
dzielenie przez potęgę dwójki kompilator może zamienić na jeden rozkaz
asemblera (kodu maszynowego) a do twojego dzielenia musi wrzucać
skomplikowaną procedurę, to różnica musi być. Choćby w prędkości działania
programu - nawet jak ci nie zależy na niej zbytnio, ani nie wyciskasz
ostatnich us z czasu procesora, to lepiej program pisać tak by był
maksymalnie wydajny i "płynny" (a nie stawał w bliżej nieokreślonych
miejscach na jakimś dzikim obliczeniu programowym na zmiennej
wielobajtowej na kilkanaście/dziesiąt ms), a potrzebne opóźnienia "waity"
były robione programowo w tych miejscach i w takiej wielkości jaką
zaprojektujesz, a nie "jak wyjdzie"


Ja rozumie że jesli bym pisał oprogramowanie z bardzo długim kodem to może i
miałoby to znaczenie i pewnie wtedy bym sie nad tym pomęczył trochę. Przy
tym projekcie robię tak a nie inaczej z innych wzgledów, a po drugie nie dam
sie kolejny raz wciagnąć w dyskusje na temat wyzszości tego języka
programowania nad innym.


--
Pozdrawiam Piotrek
www.tajemnicesw.cba.pl

Goto page Previous  1, 2

elektroda NewsGroups Forum Index - Elektronika Polska - Jak ustabilizować pomiar prądu na ATmega8 przy zasilaniu silnikiem mikrowiertarki?

NOWY TEMAT

Regulamin - Zasady uzytkowania Polityka prywatnosci Kontakt RTV map News map