Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki

KURS HOME ASSISTANT

Chcesz zautomatyzować swój dom bez skomplikowanego kodowania?
Zastanawiasz się nad wyborem sprzętu, oprogramowania i aplikacji?
Od czego zacząć przygodę z HA w 2025? Co będzie najlepsze na start?

Nasz kurs Home Assistant nauczy Cię krok po kroku, jak łatwo zautomatyzować swój dom i oszczędzić na rachunkach za prąd i ogrzewanie. Bez chmur, bez zbędnych abonamentów. Twoja przygoda z Home Assistant zaczyna się tutaj!

↓↓↓

    Szanujemy Twoją prywatność. Możesz wypisać się w dowolnym momencie.




    Teraz jest 21 maja 2025, o 03:26


    Strefa czasowa: UTC + 1





    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 4 ] 
    Autor Wiadomość
    PostNapisane: 24 sty 2021, o 18:44 
    Offline
    Użytkownik

    Dołączył(a): 04 kwi 2013
    Posty: 107
    Lokalizacja: Zabrze
    Pomógł: 0

    Witam,
    chciałbym zaimplementować na Atmega32 prosty filtr cyfrowy IIR (max 2 rzędu).
    Do tego celu potrzebuję stabilnego okresu próbkowania ADC.
    Jak mogę taki uzyskać? Jak obliczyć precyzyjnie ten czas próbkowania? Użyć do tego timery?
    Z góry dziękuję za podpowiedzi.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 24 sty 2021, o 23:52 
    Offline
    Użytkownik

    Dołączył(a): 26 mar 2014
    Posty: 34
    Pomógł: 11

    Okres próbkowania, a co z tego wynika, częstotliwość próbkowania zależy od tego jaka częstotliwość może wystąpić w sygnale mierzonym. Jesli np. wiesz że na pinie ADC będziesz miał sygnał o maksymalnej częstotliwości 2kHz to częstotliwość próbkownia wyniesie minimum 4kHz (okres 0,25ms) co wynika z twierdzenia o próbkowaniu (Nyquista-Shannona). Jeśli nie jesteś pewny maksymalnej częstotliwości to zastosuj na wejściu ADC filtr dolnoprzepustowy np RC żeby wyłtumić wyższe częstotliwości, a dalej już tak samo. Od strony AVR i programu żeby uzyskać te 4kHz próbkowania, najlepiej wykożystać któryś z timerów (w Atmega32, 0 lub 1) jako trigger dla ADC. Możesz np. skonfigurować timer0 do trybu CTC, i wybrać go jako trigger dla ADC (ADC Auto Trigger Source), a w samej konfiguracji ADC włączyć przerwania po zakończonej konwersji, w którym przeliczysz sobie filtr cyfrowy. Co do samego filtru żeby przyspieszyć jego działanie warto zastować fixed-point math zamiast typów float i wykożystać przesunięcia bitowe zamiast dzielenia.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 9 lis 2021, o 21:09 
    Offline
    Użytkownik

    Dołączył(a): 04 kwi 2013
    Posty: 107
    Lokalizacja: Zabrze
    Pomógł: 0

    A czy dobrym pomysłem jest:
    1) ustawienie częstotliwość próbkowania 10-bitowej rozdzielczości ADC np. na 200kHz (tak jak w niebieskiej książce)
    2) przekazanie odczytanej wartości do pętli głównej
    3) Utworzenia timera programowego i przetwarzanie tej wartości z określoną częztotliwością (np. 1kHz)
    Inaczej mówiąc filtr byłby wywoływany w pętli głównej co 1kHz i przetwarzał wartość odczytaną z ADC.

    Oznaczało by to tak jakby podwójne próbkowanie. Pierwsze szybkie sprzętowe, drugie wolniejsze.
    Czy dobrze podchodzę do tematu?

    Dodam jeszcze, że sygnał podawany do miklokontrolera będzie filtrowany poprzez filtr
    antyaliasingowy oczęstotliwości granicznej 500Hz.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 12 lis 2021, o 22:02 
    Offline
    Użytkownik

    Dołączył(a): 04 kwi 2013
    Posty: 107
    Lokalizacja: Zabrze
    Pomógł: 0

    Czy to będzie dobre rozwiązanie?



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    Wyświetl posty nie starsze niż:  Sortuj wg  
    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 4 ] 

    Strefa czasowa: UTC + 1


    Kto przegląda forum

    Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 6 gości


    Nie możesz rozpoczynać nowych wątków
    Nie możesz odpowiadać w wątkach
    Nie możesz edytować swoich postów
    Nie możesz usuwać swoich postów
    Nie możesz dodawać załączników

    Szukaj:
    Skocz do:  
    Sitemap
    Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
    phpBB SEO