logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Jak zbudować generator infradźwięków 1-20Hz z dokładnością 0,1Hz?

kiler129 04 Lis 2006 23:27 2441 9
REKLAMA
  • #1 3188856
    kiler129
    Poziom 27  
    Posty: 1304
    Pomógł: 12
    Ocena: 80
    Więc tak sprawa z pozoru prosta ale jednak.
    Potrzebuję generować infradźwięki :D
    Potrzebuję generatora który wygeneruje częstotliwość z przedziału 1-20Hz z dokładnością 0,1Hz i zmierzy z tą samą dokładnością i pokaże na mierniku.

    Wykonalne ?
  • REKLAMA
  • #2 3189369
    kpodstawa
    Poziom 33  
    Posty: 1806
    Pomógł: 234
    Ocena: 245
    W książce A. Filipkowskiego "Układy elektroniczne analogowe i cyfrowe",
    WNT Warszawa 1980, na stronie 346 jest wzmianka o generatorach
    niskich częstotliwości ze sprzężeniem cieplnym, co ma zastosowanie
    w układach scalonych
  • #3 3189387
    tszczesn
    Specjalista - oldradio
    Posty: 2495
    Pomógł: 383
    Ocena: 184
    kiler129 napisał:
    Więc tak sprawa z pozoru prosta ale jednak.
    Potrzebuję generować infradźwięki :D
    Potrzebuję generatora który wygeneruje częstotliwość z przedziału 1-20Hz z dokładnością 0,1Hz i zmierzy z tą samą dokładnością i pokaże na mierniku.


    Sinusoida, prostokąt, cokolwiek innego? Wykonalne jest, najprościej prostokąt - jeden mały procesor, generuje prostokąt podając jednoczesniej wartośc jego częstotliołsci na wyświetlaczu. Sinus tylko troche trudniej - musisz mieć w pamięci wartości probek, dołączasz do µC przetwornik C/A i masz sygnał. Albo jak procesor się nudzi - wyliczasz kolejne próbki z funkcji sinus.
  • REKLAMA
  • #4 3189658
    kiler129
    Poziom 27  
    Posty: 1304
    Pomógł: 12
    Ocena: 80
    A ja utrudnię jeszcze zadanie - przełączane między sinus i prostokąt.
    Procek nie będzie miał co innego do roboty więc może policzyć trochę :D
    Aby za bardzo go nie obciążać ledowym wyświetlaczem dałbym mu 1x16 lcd :D


    edit: Znalazłem coś takiego - http://www.cyfronika.com.pl/kitynepdf/150-k.pdf - dobre to będzie ?
  • #5 3189991
    tszczesn
    Specjalista - oldradio
    Posty: 2495
    Pomógł: 383
    Ocena: 184
    kiler129 napisał:
    A ja utrudnię jeszcze zadanie - przełączane między sinus i prostokąt.
    procesor nie będzie miał co innego do roboty więc może policzyć trochę :D
    Aby za bardzo go nie obciążać ledowym wyświetlaczem dałbym mu 1x16 lcd :D


    To ja bym to zrobil tak: uzylbym jakiegoś procesora, np. ATiny2313, ustawił w nim czasomierz tak, aby dawal przerwania do 20ms, w każdym przerwaniu wysyłal próbkę z bufora do przetwornika C/A i wyliczal do bufora nastepną próbkę. Nie wiem co prawda ile mocy potrzeba do liczenia sinusa z wymaganą dokładnościa w czasie 20ms (zakładam próbkowanie 50Hz, do fmax=20Hz wystarczy), ale zapewne 8MHz procesor wystarczy. Sinusa liczyc można np. z szeregów Taylora (pisałem to kiedys na Z80, nawet działa :), albo uzyc gotowej biblioteki numerycznej.

    Prostokąt jeszcze prościej - każde przerwanie zegrowe zmniejsza licznik o 1, jak licznik sie przekręci to zmienia wartośc próbki w buforze z 00 na FF.
  • REKLAMA
  • #6 3189998
    kiler129
    Poziom 27  
    Posty: 1304
    Pomógł: 12
    Ocena: 80
    Żebym ja jeszcze wiedział jak to oprogramować :|
  • REKLAMA
  • #7 3190032
    tszczesn
    Specjalista - oldradio
    Posty: 2495
    Pomógł: 383
    Ocena: 184
    kiler129 napisał:
    Żebym ja jeszcze wiedział jak to oprogramować :|


    Tu ci nie pomogę, ale w sieci jest mnóstwo kursów programowania. Jak to ma byc twój jedyny projekt na procesorze to poszukaj BASCOMa, jak chcesz sie dalej bawic procesorami to polecam zapoznanie sie z asmeblerem - na poczatek znacznie trudniejsze, ale i fajne rzeczy można wted robić.
  • #8 3192618
    _jta_
    Specjalista elektronik
    Posty: 49124
    Pomógł: 3212
    Ocena: 4255
    Do takiego zastosowania nie ma sensu liczyć z Taylora, zamiast tego startujesz z sin_x=0 cos_x=1 (dla x=0),
    kolejne wartości liczysz mnożąc cos_x+i*sin_x przez 1+i*omega, i pilnujesz, żeby sin_x^2+cos_x^2 było 1.
    Wystarczy do tego mieć mnożenie z wynikiem w podwójnym słowie, i wychodzi w kilku działaniach... :)
  • #9 3192842
    tszczesn
    Specjalista - oldradio
    Posty: 2495
    Pomógł: 383
    Ocena: 184
    _jta_ napisał:
    Do takiego zastosowania nie ma sensu liczyć z Taylora, zamiast tego startujesz z sin_x=0 cos_x=1 (dla x=0),
    kolejne wartości liczysz mnożąc cos_x+i*sin_x przez 1+i*omega, i pilnujesz, żeby sin_x^2+cos_x^2 było 1.
    Wystarczy do tego mieć mnożenie z wynikiem w podwójnym słowie, i wychodzi w kilku działaniach... :)


    Możliwe, nigdy nie miałem potrzeby stosować trygonometrii na mikrokontrolerach, podałem cos co napewno działa, bo kiedyś sam spawdziłem. Można tez użyć DDSa, a procka używac tylko do jego programowania i wyświetlania częstotliwości :)
  • #10 3194425
    _jta_
    Specjalista elektronik
    Posty: 49124
    Pomógł: 3212
    Ocena: 4255
    Ja kiedyś stosowałem ten sposób, żeby z dużą szybkością rysować kółka na ekranie PC (z zegarem 4.77MHz).
    Gdybym próbował używać koprocesora do liczenia sinusów i kosinusów, to byłoby _dużo_ wolniej, niż w ten sposób.

Podsumowanie tematu

LABEL_AI_GENERATED
Dyskusja dotyczy budowy generatora infradźwięków o częstotliwości 1-20 Hz z dokładnością 0,1 Hz oraz możliwości pomiaru i wyświetlania tej częstotliwości. Proponowane rozwiązania obejmują wykorzystanie mikrokontrolera (np. ATiny2313) do generowania sygnału prostokątnego lub sinusoidalnego. Sygnał sinusoidalny można uzyskać poprzez przechowywanie próbek w pamięci lub obliczanie ich na bieżąco za pomocą funkcji sinus, np. z użyciem szeregów Taylora lub metody iteracyjnej opartej na mnożeniu zespolonym, co jest bardziej efektywne obliczeniowo. Do konwersji cyfrowo-analogowej sugeruje się zastosowanie przetwornika C/A. Propozycja wyświetlania częstotliwości na wyświetlaczu LCD 1x16 znaków. Wspomniano także o gotowym zestawie kitowym (http://www.cyfronika.com.pl/kitynepdf/150-k.pdf) jako potencjalnym rozwiązaniu. Dyskusja podkreśla wykonalność projektu, zwracając uwagę na dobór odpowiedniego mikrokontrolera i metody generacji sygnału oraz na kwestie programistyczne, w tym rekomendacje dotyczące nauki programowania w BASCOM lub asemblerze.
Podsumowanie AI na podstawie dyskusji. Może zawierać błędy.
REKLAMA