Elektroda.pl
Elektroda.pl
X
Servizza
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Przenośny gen. DDS na Atmega16A i MCP6022 programowany w środowisku Arduino IDE.

gdL 19 Paź 2017 10:29 5655 33
  • Projekt napisany od zera w środowisku Arduino IDE. Pisanie w C++ z użyciem klas zwłaszcza w dużych projektach znacznie ułatwia dalsze utrzymanie i rozwijanie kodu, poprawia czytelność . Przeniosłem się pod Arduino IDE po dłuższej przerwie, wcześniej pisałem w Avr Studio 4. W Arduino IDE można doinstalować biblioteki bezpośredniej obsługi różnych procesorów - ja zainstalowałem MightyCore, MiniCore i MicroCore do tych najpopularniejszych, bardzo pomaga obecność wielu gotowych rozwiązań ułatwiających obsługę wyświetlacza alfanumerycznego itp.

    Przenośny gen. DDS na Atmega16A i MCP6022 programowany w środowisku Arduino IDE.


    Wracając do projektu i dlaczego taki. Po moim powrocie do elektroniki, postanowiłem trochę zainwestować w swoje hobby i kupiłem oscyloskop, ale poza tym potrzebowałem kilku urządzeń warsztatowych, które nie należą do najtańszych, a zarazem zajmują sporo miejsca na biurku. Mam do dyspozycji niewiele miejsca i nie mam dużych potrzeb. Postanowiłem w ramach wprawy samemu stworzyć sobie kilka urządzeń. Rozpocząłem od zasilacza, dalej generator i elektroniczne obciążenie. Dwa ostatnie urządzenia zasilane bateryjnie pdp. trafią na łamy elektrody a także na mój kanał na youtube.




    Cechy urządzenia: dwa kanały, jeden 1# DDS, drugi 2# HS. Kanały pracują równolegle. Zmiana parametrów odbywa się podczas generowania -
    urządzenie pozostaje responsywne.


    1#:
    - sygnał - sinus, piła, odwrotna piła, prostokąt, ekg, szum, trójkąt
    - częstotliwość - 20Hz do 100kHz, fala bliżej 100kHz zaczyna wyglądać gorzej (mniejsza ilość próbek).
    - opcja software-owego wyłączenia i włączenia
    - amplituda od 100mV do 5V, wskazane zaopatrzenie się w sondę z 1:1 i 1:10, kupiłem Hanteka 4MHz za 25zł.
    - dla sygnału prostokątnego jest możliwość regulacji wypełnienia

    2#:
    - sygnał prostokątny
    - częstotliwość - 200Hz - 10MHz (wyższe częstotliwości mają duże kroki 1,2,5,10MHz).

    Zasilanie bateryjne, pojedyncze ogniwo 18650 Li-Ion Samsung ICR18650-26JM 2600mAh z typową aplikacją ładowarki Li-Pol TP4056 pojedyncza cela 1S 3,7V microUSB z zabezpieczeniami oraz wyjście 5V na taniej przetwornicy "własny power bank" do 500mA. Warto do niej dolutować duży kondensator elektrolityczny, żeby wygładzić przebiegi ZANIM zaklei się obudowę (silly me). Wskaźnik poziomu baterii.






    Co wyróżnia mój generator spośród wielu gotowych rozwiązań DIY?

    1. Spójny z innymi moimi projektami interfejs z pojedynczym klikalnym enkoderem.
    2. Przestrajanie w locie podczas generowania sygnału (krok 20Hz).
    3. Cyfrowa regulacja amplitudy.
    4. Zasilanie bateryjne.
    5. Czytelny kod napisany przeze mnie (można sobie łatwo dodać inne moduły).
    6. Minimalna ilość elementów.

    Budowa: Płytka uniwersalna z procesorem Atmega 16A i kwarcem 20MHz (przetaktowana, przy 16MHz sygnał będzie wyglądał nieco gorzej > 50kHz i może wymagać rekalibracji), do tego wzmacniacz rail-to-rail 10MHz MCP 6022. Schemat blokowy składa się z ADC zbudowanego na drabince R-2R, wzmacniacza z regulacją amplitudy, z opcją software-owego wyłączenia wyjścia.
    To czego na schemacie nie widać, to zasilanie - opisane wyżej.

    Przenośny gen. DDS na Atmega16A i MCP6022 programowany w środowisku Arduino IDE.
    Przenośny gen. DDS na Atmega16A i MCP6022 programowany w środowisku Arduino IDE.


    Dołączony projekt Arduino IDE 1.8.2 + MightyCore oraz schemat.

    Odpowiedzi na dotychczas zadawane pytania:

    1. PCB załączyłem w obrazkach - obudowa jest niewielka, więc musiałem zaprojektować logiczne rozłożenie elementów. Rezystory DAC jak najmniejsze, lutowane pionowo.
    2. Procesor Atmega16A jest przetaktowany, przy kwarcu 20MHz przebiegi wyglądają lepiej (więcej próbek).
    3. Oscyloskop RIGOL DS1054Z, polecam. Notabene kupowany w NDN :)
    4. Można ochronić wyjście HS rezystorem 300R, nie chronione przy zwarciu może 'spalić' procesor.
    Przenośny gen. DDS na Atmega16A i MCP6022 programowany w środowisku Arduino IDE.
    5. Tak, projekt jest skompilowany pod kwarc 20MHz, wszystkie przebiegi czasowe biorą to pod uwagę - da się to ustawić z MightyCore.
    6. Maksymalne przebiegi - 100kHz software (sinus) i 10MHz hardware (prostokątny) na krótkim kabelku. Na długim przypomina bardziej trójkąt.
    Przenośny gen. DDS na Atmega16A i MCP6022 programowany w środowisku Arduino IDE.
    Przenośny gen. DDS na Atmega16A i MCP6022 programowany w środowisku Arduino IDE.
    7. Przybliżony przebieg na ekranie, widać schodki, ale przede wszystkim widać kiepskiej jakości chińskie zasilanie :-)
    Przenośny gen. DDS na Atmega16A i MCP6022 programowany w środowisku Arduino IDE.
    8. Podczas zmian parametrów procesor odświeża wyświetlacz, jest to proces czasochłonny, więc będą się pojawiać glitche. Inne generatory często zamrażają się w momencie ustalenia parametrów (przechodzą w nieskończoną pętlę generowania przebiegu), potrzeba resetu, żeby móc je ponownie ustawić. Strasznie to wkurzające.


    Fajne! Ranking DIY
  • Servizza
  • #2 19 Paź 2017 14:40
    Mikroprocesorowiec
    Poziom 11  

    Popraw tą pierwszą fotkę (dodaj miniaturę). Nie oglądałeś postu po napisaniu?
    Zmień procek na M164, M16 masz przetaktowany, a nie napisałeś o tym.
    Jakiej precyzji rezystory masz w drabince R-@R? 0,05% czy dokładniejsze?
    Te dziwno obwody R/C przy enkoderze, jaka funkcje pełnia rezystory?
    Ten oamp da rezystancje wyjściową 51R? Jaz zewrzesz wyjście do masy, to amplituda na wyjściu oampa nie zmienia się?
    R1 pomiędzy AC out, DC out jaką pełni funkcję?

  • #3 19 Paź 2017 14:55
    gdL
    Poziom 27  

    Mikroprocesorowiec napisał:
    Popraw tą pierwszą fotkę (dodaj miniaturę). Nie oglądałeś postu po napisaniu?
    Zmień procek na M164, M16 masz przetaktowany, a nie napisałeś o tym.
    Jakiej precyzji rezystory masz w drabince R-@R? 0,05% czy dokładniejsze?
    Te dziwno obwody R/C przy enkoderze, jaka funkcje pełnia rezystory?
    Ten oamp da rezystancje wyjściową 51R? Jaz zewrzesz wyjście do masy, to amplituda na wyjściu oampa nie zmienia się?
    R1 pomiędzy AC out, DC out jaką pełni funkcję?


    Zostawiłem dużą fotkę, bo lepiej wygląda :)
    M16A radzi sobie ok, ale rzeczywiście fabrycznie jest do 16MHz. Zwiększając częstotliwość poprawiam trochę wygląd sygnału. Kupiłem sporo rezystorków i odrzuciłem kilka o odbiegających wartościach. Przy enkoderze chciałem trochę wygładzić przebiegi, teraz działa znacznie lepiej. Wiem, że powinien być procesor->rezystor->kondensator->rezystor->enkoder, ale nie miałem już miejsca i poeksperymentowałem trochę z oscyloskopem.
    Opamp siądzie jak zewrę do masy, fakt. Dzięki za wykrycie błędu, R1 miał iść do masy.

  • #4 19 Paź 2017 15:00
    Mikroprocesorowiec
    Poziom 11  

    gdL napisał:

    Zostawiłem dużą fotkę, bo lepiej wygląda :)

    Za to fajnie to post może trafić do kosza, ale rób jak chcesz.

    gdL napisał:

    Kupiłem sporo rezystorków i odrzuciłem kilka o odbiegających wartościach.

    O jakiej tolerancji? Czy sprawdzałeś wynik pomiaru po potraktowaniu lutownicą?

    gdL napisał:

    Przy enkoderze chciałem trochę wygładzić przebiegi, teraz działa znacznie lepiej. Wiem, że powinien być procesor->rezystor->kondensator->rezystor->enkoder,

    Wystarczy procesor->rezystor->kondensator->enkoder,
    po co dodatkowy rezystor?

    gdL napisał:

    Opamp siądzie jak zewrę do masy, fakt. Dzięki za wykrycie błędu, R1 miał iść do masy.

    Czyli 51R nie uzyskasz. Daj dodatkowe dwa tranzysotry (można dać oamp wiekszej mocy ale te sa drogie).

  • #5 19 Paź 2017 15:10
    gdL
    Poziom 27  

    Mikroprocesorowiec napisał:
    gdL napisał:

    Zostawiłem dużą fotkę, bo lepiej wygląda :)

    Za to fajnie to post może trafić do kosza, ale rób jak chcesz.

    gdL napisał:

    Kupiłem sporo rezystorków i odrzuciłem kilka o odbiegających wartościach.

    O jakiej tolerancji? Czy sprawdzałeś wynik pomiaru po potraktowaniu lutownicą?

    gdL napisał:

    Przy enkoderze chciałem trochę wygładzić przebiegi, teraz działa znacznie lepiej. Wiem, że powinien być procesor->rezystor->kondensator->rezystor->enkoder,

    Wystarczy procesor->rezystor->kondensator->enkoder,
    po co dodatkowy rezystor?

    gdL napisał:

    Opamp siądzie jak zewrę do masy, fakt. Dzięki za wykrycie błędu, R1 miał iść do masy.

    Czyli 51R nie uzyskasz. Daj dodatkowe dwa tranzysotry (można dać oamp wiekszej mocy ale te sa drogie).


    Tranzystory zepsują efekt 'rail to rail'. Być może jak ktoś będzie potrzebował rzeczywiście kupi droższy opamp mocy typu rail-to-rail.

  • #6 19 Paź 2017 15:28
    Mikroprocesorowiec
    Poziom 11  

    gdL napisał:
    Tranzystory zepsują efekt 'rail to rail'. Być może jak ktoś będzie potrzebował rzeczywiście kupi droższy opamp mocy typu rail-to-rail.

    No tak, zasilanie bateryjne, brak napięcia ujemnego. Można by kombinować z sztuczna masą ale w urządzeniu przenośnym to gra niewarta świeczki.

    Nie odpowiedziałeś jednak jakiej precyzji były rezystory. Jeśli 5% i je dobierałeś, to zrób taką próbę: zmierz rezystor, podgrzej do 300 stopni, poczekaj aż ostygnie i zmierz ponownie. Teraz zastanów sie czy dobieranie ich miało sens.
    Aby zrobić przetwornik 8-bit, potrzebne sa rezystory 0.4% jak się nie mylę. Na 1% uzyskasz 6,5 bita. Z jaką dokładnością dobrałeś rezystory uwzględniając efekt podgrzania ich podczas lutowania?

    Dodano po 8 [minuty]:

    gdL napisał:
    4. Można ochronić wyjście HS rezystorem 300R, nie chronione przy zwarciu może 'spalić' procesor.

    Ja bym użył raczej bufora w podstawce DIP, np 74HC00/08/04 (łatwa wymiana). Zobacz przebieg 10MHz, na końcu kabla 50R, gdy na jego początku jest rezystor 300R.

    PS
    Ciekawie rozwiązałeś regulacje poziomu sygnału, co prawda to tylko 7 poziomów ale jest cyfrowa. Można dodać dodatkowo potencjometr do płynnej regulacji, ale nie wymagajmy cudów na kiju od urządzenia przenośnego.

  • #7 19 Paź 2017 15:49
    gdL
    Poziom 27  

    Cytat:
    gdL napisał:
    4. Można ochronić wyjście HS rezystorem 300R, nie chronione przy zwarciu może 'spalić' procesor.

    Ja bym użył raczej bufora w podstawce DIP, np 74HC00/08/04 (łatwa wymiana). Zobacz przebieg 10MHz, na końcu kabla 50R, gdy na jego początku jest rezystor 300R.

    PS
    Ciekawie rozwiązałeś regulacje poziomu sygnału, co prawda to tylko 7 poziomów ale jest cyfrowa. Można dodać dodatkowo potencjometr do płynnej regulacji, ale nie wymagajmy cudów na kiju od urządzenia przenośnego.


    Masz rację, z 300R jest bezobsługowe, ale na końcu kabla 50R wygląda gorzej. Prawdę mówiąc ze mnie żaden elektronik, a jeśli chodzi o magię RF odpadam zupełnie. Może mógłbyś mi zaproponować jakieś przystępne wprowadzenie do RF online? albo na yt?

    Regulacja amplitudy jest nawet lepsza, niż myślisz. Od poziomu 2.5V do 5V atenuacja jest software'owa (generowany sygnał ma obniżaną amplitudę), potem włącza się pierwszy atenuator /2, a amplituda software wraca do poziomu wyjściowego, pomiędzy 1.25 a 2.5V znów amplituda zmniejsza się w sofcie przy włączonym atenuatorze /2. Przy 1.25V amplituda wraca do max, ale włącza się drugi atenuator /4. itd.
    Regulacja jest niemal płynna.

  • #8 19 Paź 2017 15:59
    Mikroprocesorowiec
    Poziom 11  

    gdL napisał:
    Masz rację, z 300R jest bezobsługowe, ale na końcu kabla 50R wygląda gorzej. Prawdę mówiąc ze mnie żaden elektronik, a jeśli chodzi o magię RF odpadam zupełnie. Może mógłbyś mi zaproponować jakieś przystępne wprowadzenie do RF online? albo na yt?

    Z RF też jestem kiepski.

    gdL napisał:

    Regulacja amplitudy jest nawet lepsza, niż myślisz. Od poziomu 2.5V do 5V atenuacja jest software'owa

    Nie oglądałem dokładnie kodów, pewnie wzorcowy wynik mnożysz przez wartość tłumienia, tak przeliczone próbki umieszczasz w ram. Przebieg generujesz pewnie z ram a nie flash, jak to przeważnie jest. Samo generowanie napisałeś w C, przeważnie jest używane gotowe rozwiazanie w ASM.

  • #9 19 Paź 2017 19:38
    SylwekK
    Poziom 29  

    Fajny, bo mały :) Jakiś czas temu też zacząłem robić generator, który zmieści się w kieszeni tyle, że mi potrzeba tylko prostokąt i parę innych unikatowych funkcji w kwestii impulsów. Zapewne opiszę go tu niedługo :)
    Jaki masz skok regulacji częstotliwości?

    Dodano po 30 [minuty]:

    Mikroprocesorowiec napisał:


    Wystarczy procesor->rezystor->kondensator->enkoder,


    Tak naprawdę to wystarczy procesor -> enkoder ;-) Pozostaje kwestia jak czytacie ten enkoder... Stosuję u siebie własną bibliotekę i nie mam żadnych przekłamań mimo katowania enkodera, a prędkość odczytu w zasadzie ograniczona jest mechaniką enkodera i próbkowaniem jego sygnałów :)

  • #10 19 Paź 2017 23:11
    vidmo91
    Poziom 9  

    Jesteś chyba pierwszą osobą która przeszła z AS na Arduino (przynajmniej ja nie spotkałem się z takim ewenementem w polskim i angielskim internetowym półświatku AVR). Osobiście uważam, że Arduino IDE jest do d**y, szczególnie, że środowisko można przenieść do nowego AS i innych IDE dających możliwość dożo wygodniejszego pisania. Nie wiem jak można w nim pisać bardziej złożone projekty. Co do językowej nakładki Arduino to polecam sprawdzić jak działa analogWrite, żeby zrozumieć dlaczego programy działają wolniej niż powinny. A propos gotowych bibliotek Arduino, to dziwnie jestem przekonany, że one i tak bazują na gotowych projektach w C obsługujących dany moduł i nie ma problemu znalezienie takich w sieci (szczególnie HD44780). AS też pozwala na pisanie w C++, a ponadto zmianę fusebitów na inne niż ich domyślne, prędkości programowania, debugowanie itp.

    Nie wiem, jakie są ustawienia m16 w MightyCore, ale overclocking Arduina (bez zmian F_CPU) powoduje problemy z czasem, a co za tym idzie chyba wszystkimi peryferiami.
    Brak oporników rozładowujących kondensatory przy enkoderze jest powodem powstawania zakłóceń, które mogą zaszkodzić uC, tak samo jak zaszkodzić mu może overclocking i brak kondensatorów przy każdej parze pinów (A)VCC i GND. Nie można też mówić o dokładności generowanej amplitudy (nawet z rezystorami 0.01%) jeśli napięcie będzie skakać, a w takim układzie będzie. Nie wolno olewać odsprzęgania! Jeśli naprawdę już nie ma miejsca na płytce, to zawsze można między wyprowadzenia układów TTH wlutować kondensatorki SMD 0805.

  • Servizza
  • #11 20 Paź 2017 08:27
    Mikroprocesorowiec
    Poziom 11  

    vidmo91 napisał:

    Brak oporników rozładowujących kondensatory przy enkoderze jest powodem powstawania zakłóceń, które mogą zaszkodzić uC,

    A dokładniej. Nie oglądałem dokładnie kodu, ale z pewnością użyte jest wewnętrzne podciąganie. Bez niego enkoder raczej by wcale nie działał. Więc rozładowywanie mamy, ale przyjmijmy, że rozładowania nie ma, jak może ono zaszkodzić uC? Uszkodzi się?

  • #12 20 Paź 2017 11:08
    vidmo91
    Poziom 9  

    Uszkodzić nie powinno, ale powstają duże szpilki prądu wtłaczanego do masy, które chwilowo podnoszą jej potencjał. Dodatkowo są jeszcze spadki na VCC spowodowane brakiem kondensatorów odsprzęgających. Oba te problemy poważnie mogą zaszkodzić pamięci EEPROM. BOD powinien pomóc, ale czasami to za mało. Wracając do tego projektu, to takie wachania na zasilaniu dają niestabilne napięcie wyjściowe.
    No i jeszcze takie szpilki mogą indukować się na wyprowadzeniach uC, także resecie, a to prowadzi do znanych konsekwencji.
    Napewno już był niejeden temat odsprzęgania AVRów i w ogóle elektroniki na elektrodzie. Po za tym noty katalogowe podają jakie i gdzie należy stosować kondensatory. W innym przypadku producent nie gwarantuje (poprawnego) działania uC.

  • #13 20 Paź 2017 11:16
    Mikroprocesorowiec
    Poziom 11  

    vidmo91 napisał:
    Uszkodzić nie powinno, ale powstają duże szpilki prądu wtłaczanego do masy,

    Problemy moga się zacząć gdy szpilka bedzie miał 0,6V lub więcej. Ile amperów popłynie aby powstała taka szpilka?

    Jeśli jednak kolega ma rację, to oznacza, ze setki tysięcy projektów, na AVR (ale także na ARM, PIC, MPS), także wykonywanych przez renomowane firmy, jest robione źle, bo nie mają rezystorów podciągających na wejściach przycisków, enkoderów w sytuacji gdy znajdzie sie tam kondensator filtrujący.

    Myślę, ze kolego pomyliło sie to z problemem, podłączenia dużej pojemności do wejścia układu C-MOS, gdzie należy szeregowo włączyc rezystor, ale szeregowo a nie podciągajacy.

    vidmo91 napisał:

    No i jeszcze takie szpilki mogą indukować się na wyprowadzeniach uC, także resecie,

    Tu sie zgadzam. Brak odsprzęgania to poważny błąd.

  • #14 20 Paź 2017 11:57
    sawitar
    Poziom 17  

    Fajny projekt.
    Przydał by się jeszcze opis zasady działania.

    Jeszcze takie pytanko.
    Nie dało by się dodać jakiegoś filtra aby wygładzić schodki w sygnale wyjściowym?

  • #15 20 Paź 2017 12:05
    Mikroprocesorowiec
    Poziom 11  

    sawitar napisał:

    Nie dało by się dodać jakiegoś filtra aby wygładzić schodki w sygnale wyjściowym?

    Tak o ile zdecydujesz się tylko na sinusoidę :-) Albo inny wybrany przebieg.
    W tym projekcie, jak w99% generatorów DDS na AVR i w 90% na ARM, przebieg bedzie dużo lepszy (liniowy) jak zastosujesz przetwornik CA zamiast rezystorów R-2R (pisałem o tym wcześniej).

  • #16 20 Paź 2017 12:08
    sawitar
    Poziom 17  

    Mikroprocesorowiec napisał:
    sawitar napisał:

    Nie dało by się dodać jakiegoś filtra aby wygładzić schodki w sygnale wyjściowym?

    Tak o ile zdecydujesz się tylko na sinusoidę :-) Albo inny wybrany rzebieg.


    No fakt.

  • #17 20 Paź 2017 12:10
    vidmo91
    Poziom 9  

    Mikroprocesorowiec napisał:


    Jeśli jednak kolega ma rację, to oznacza, ze setki tysięcy projektów, na AVR (ale także na ARM, PIC, MPS), także wykonywanych przez renomowane firmy, jest robione źle, bo nie mają rezystorów podciągających na wejściach przycisków, enkoderów w sytuacji gdy znajdzie sie tam kondensator filtrujący.

    Myślę, ze kolego pomyliło sie to z problemem, podłączenia dużej pojemności do wejścia układu C-MOS, gdzie należy szeregowo włączyc rezystor, ale szeregowo a nie podciągajacy.


    Może źle się wyraziłem, chodzi mi o rozwiązanie ujęte w końcówce artykułu kolegi Dondu o drganiu styków i debouncingu hardware'owym.

  • #18 20 Paź 2017 12:17
    Mikroprocesorowiec
    Poziom 11  

    vidmo91 napisał:
    Mikroprocesorowiec napisał:


    Jeśli jednak kolega ma rację, to oznacza, ze setki tysięcy projektów, na AVR (ale także na ARM, PIC, MPS), także wykonywanych przez renomowane firmy, jest robione źle, bo nie mają rezystorów podciągających na wejściach przycisków, enkoderów w sytuacji gdy znajdzie sie tam kondensator filtrujący.

    Myślę, ze kolego pomyliło sie to z problemem, podłączenia dużej pojemności do wejścia układu C-MOS, gdzie należy szeregowo włączyc rezystor, ale szeregowo a nie podciągajacy.


    Może źle się wyraziłem, chodzi mi o rozwiązanie ujęte w końcówce artykułu kolegi Dondu o drganiu styków i debouncingu hardware'owym.

    W elektronice ważna energia. Milion V nie uszkodzi uC jeśli prąd będzie mały lub prąd bedzie płynął krótki. 1V za duzo, może uszkodzić uC gdy zjawisko bedzie trwało długo a prad duży. Opisany w linku problem nie wystąpi przy kondensatorach 10n (jakich uzył autor). Gdyb tam było kilka uF, to juz trzeba by sie zastanowic nad pradem płynacym przez przycisk i w pewnych sytuacjach przez uC.

  • #19 20 Paź 2017 12:21
    vidmo91
    Poziom 9  

    Oczywiście, ale ja mam na myśli podnoszenie potencjału masy związane z długimi ścieżkami zasilania i brakiem odsprzęgania, a nie prąd płynący przez uC. W efekcie chwilowo powstałe niskie napięcie zasilania będzie miało wpływ na amplitudę sygnału wyjściowego.
    Po za tym mówię o szpilkach prądu a nie napięcia.
    Co do debouncingu należy stosować pełny, poprawny hardware,owy albo tylko softowy.

  • #20 20 Paź 2017 17:54
    Mikroprocesorowiec
    Poziom 11  

    Pod względem ilości projektów liderem jest @r-mik, na 2 miejscu ex aequo Ty, @lukashb i @piotr_go. Pokaż projekt zasilacza, wysuniesz się na czołówkę.

  • #21 21 Paź 2017 11:21
    2675900
    Użytkownik usunął konto  
  • #22 21 Paź 2017 13:09
    Mikroprocesorowiec
    Poziom 11  

    Piotrus_999 napisał:
    @Mikroprocesorowiec To może nowa kategoria - ilość projektów :)

    Nagroda publiczności jest (plusy) zdaje się lideram jest oscyloskop. Sprawdzę kto zajmuje 2 pozycje. A kolega nie startuje? Taki aktywny na forum, super porady. Czy miernictwo to nie kolegi działka?

  • #23 21 Paź 2017 14:40
    2675900
    Użytkownik usunął konto  
  • #24 21 Paź 2017 14:48
    Mikroprocesorowiec
    Poziom 11  

    Piotrus_999 napisał:
    To ja zadam kilka pytań:
    1. Czym szczególnym wyróżnia ten generator?

    Nie jest oparty o popularny "silnik" w ASM tylko własne rozwiązanie w C.

    Piotrus_999 napisał:

    2. Ile jest próbek - nie pokazał Kolega przebiegu "w powiekszeniu" a na takim wąziutkim oscylogramie z wieloma okresami wszystko wygląda dobrze. Chciałbym zobaczyć 1 okres sinusoidy na całym ekranie powiedzmy przy 60-70kHz.

    Pewnie 4. R-MIK pokazał przebiegi. Tu nie spodziewam się niczego lepszego. To jak w AD, 25MHz przy zegarze 50MHz. Ile próbek wypada?

    Piotrus_999 napisał:

    3. Po co jest enkoder jezeli przy zmianach (czy to częstotliwości ,czy też amplitudy) są takie straszliwe glitch-e.

    Wygoda, wolę kręcić niz kombinowac z przyciskami, zwłaszcza te strt/stop. Nie wiem czy ten projekt nie był wzorowany na rozwiazniu R-MIk pokazanym w tym konkursie. Z pewnością R-MIk wczesniej o tym myślać i wcześniej to zaproezentował.

    Piotrus_999 napisał:

    4. Czy można zobaczyć oscylogram HS 10MHz?

    Zwłaszcza z rezystorem 300R i kablem długości 1m. Pisałem o tym. R-MIk zdaje sie pokazał przebiegi ale u niego mozna regulować amplitude tego sygnału. Jest wyjście OC, może jak by tam zmienic rezystor z 1k na 100R byłoby lepiej, ale czy oamp przy 15V wyrobi? Z drógiej strony, kto uzywa teraz (poza domofonami) C-MOS 4xxx czy 45xx?

    Piotrus_999 napisał:

    5. Dlaczego atmega jes przetaktowana. Za to bardzo krytykowany jest R-MIK, kolego robi ten sam "bandycki" numer.

    R-MIk na schemacie ma M324, ten może byc taktowany 20MHz.

  • #25 21 Paź 2017 14:54
    2675900
    Użytkownik usunął konto  
  • #26 21 Paź 2017 15:18
    Mikroprocesorowiec
    Poziom 11  

    Piotrus_999 napisał:
    Mikroprocesorowiec napisał:
    Wygoda, wolę kręcić niz kombinowac z przyciskami, zwłaszcza te strt/stop.
    Chodziło mi o to że nie ma płynnej regulacji w locie (a jest w opisie). Takie zaglitch-owaneraczej trudno nazwać płynną i w locie.

    Płynna to nie, w locie to tak (raczej tak)

    Piotrus_999 napisał:

    PS nie pytałem o R-MIK tylko o ten projekt. A pytania zadałem bo IMO nieuczciwie kolega @gdL prezentuje urządzenie wg mnie mocno tuszując braki. oscylogramy są mówiąc oględnie mało mówiące.

    A czego sie spodziewac po:
    Kod: c
    Zaloguj się, aby zobaczyć kod

    Nie chce mi się tego kompilować, później generować ELF 9co AS robi w standardzie), ale pewnie wyjdzie cos podobnego do tego popularnego ASM.

    Dodano po 14 [minuty]:

    Piotrus_999 napisał:
    @Mikroprocesorowiec To może nowa kategoria - ilość projektów :)

    No to policzyłem, oto wyniki:
    Code:

    +39   mongoł2000   Przenośny dwukanałowy oscyloskop cyfrowy na FPGA & ARM (max 250MSPS/kanał)
    +26   SylwekK      Zdalny mini częstotliwościomierz / obrotomierz / licznik impulsów
    +23   piotr_go   Zegar z alarmem i autodetekcją wyświetlacza na STM8 by piotr_go
    +19   poprawa      Rozbudowa taniego multimetru VC99 do komunikacji z PC
    +18   rafels      Tester parametrów akumulatorów

    +17   R-MIK      Multimetr 4.5 cyfry "UIRftCLT", USB izolowane, terminal VT100
    +17   Infrat      Monitor energii elektrycznej bazujący na wyjściu optycznym licznika energii

    +12   R-MIK      Izolowana galwanicznie sonda różnicowa do oscyloskopu

    +11   mlassota   Detektor promieniowania gamma oraz beta do projektu Radioactive@Home
    +11   R-MIK       DDS AVR 100kHz, zmiana częstotliwości w czasie pracy, równoległa praca gen. HF      - co było pierwsze, jako czy kura? Na tiu na PCB jest 2015 rok
    +11   vidmo91      Diodowy termometr wysokotemperaturowy

    +15   piotr_go   Miernik częstotliwości, szerokości impulsu i wypełnienia by piotr_go
    +15   sq6dgt      radio3 - wielofunkcyjne urządzenie pomiarowe dla krótkofalowca

    +14   lukashb      Cyfrowy miernik Impedancji Pętli Zwarcia (IPZ/RPZ)

    +13   blue_17       Smok~Sensor - Personalny czujnik poziomu smogu
    +13   gdL      Przenośny gen. DDS na Atmega16A i MCP6022 programowany w środowisku Arduino IDE.

    +12   mario_ka   Prosty miernik pojemności i napięcia
    +10   Jacek Rutkowski   Tester taśm przewodzących + miernik niskich rezystancji.

    +9   paluszasty   24 bitowa karta pomiarowa ADC - LTC2400+MAX6350
    +9   R-MIK      1-Wire Emulator & Skaner. Tryb Host, obsługa Overdrive               - złamał zabezpieczenie Slicana. Byłem w szoku, że tak słabo Slican sie zabezpieczył. Cesiu pewnie się zdenerwował.

    +7   ryber      Miernik zakresu fluorescencji "KAMELEON"                  - Tu ciężko powstrzymac się od negatywnego komentarza
    +7   hubertfab   Rejestrator Temperatury - DATA LOGGER
    +7   R-MIK      Licznik częstotliwości czasu 0,14(0.28)ppm, 8ns, ext. sync.GPS

    +6   gdL      Przenośne elektroniczne obciążenie na Atmega8 i MCP6002, program pod Arduino IDE
    +6   ukashb      Tester instalacji gazowej, tester wycieków gazu

    +5   R-MIK      Dwukolorowy miernik panelowy 4,5 cyfry, U/I AC/DC, Hold, REL, izolowany USART      - to jest fajne a tylko +5?
    +5   R-MIK      Pirometr "tęczowy" z WS2812 + 7 x DS18B20, Wi-Fi, UsbHost, pilot IR

    +4   mateq96      termometry+nodemcuV3+ThingSpeak
    +4   Tytus Kosiarski   Licznik częstotliwości czasu 0,14(0.28)ppm, 8ns, ext. sync.GPS

    +2   TOCZEK13   Prototypowy, prosty miernik napięcia mięśni DIY

    R-mik pokazał 7 projektów, na razie nie ma sobie równych. Pierwsza pozycja oscyloskopu nie budzi wątpliwości. Multimetr 4.5 cyfry tak jakoś słabo wyglada. W sumie nie na temat, poprosze admina o przeniesienie do Konkurs z NDN: Zaprezentuj własne urządzenie pomiarowe .

  • #27 21 Paź 2017 15:34
    2675900
    Użytkownik usunął konto  
  • #28 21 Paź 2017 15:35
    Mikroprocesorowiec
    Poziom 11  

    O ranking mi chodzi, to nie bardzo na temat.

  • #29 21 Paź 2017 17:14
    gdL
    Poziom 27  

    Padło pytanie o to co wyróżnia mój projekt - odpowiedź jest w oryginalnym poście, poza tym dodałem już obrazki przebiegów o które prosiliście i odpowiedzi na pytania w dolnej części pierwszego posta.

    Na 100kHz można nawet policzyć schodki, żeby zobaczyć z ilu próbek składa się sygnał. Można osiągnąć lepsze rezultaty przy tym taktowaniu - ze zmienną lokalną w pętli zawierającą tablicę z sygnałem, jednak wtedy pętla będzie nieskończona i sygnału nie da się przestrajać podczas generowania.

    Jest jeden sposób na szybkie generowanie i przestrajanie 'w locie' - można raz na jakiś czas wyjść z pętli i sprawdzić globalną flagę, np. z częstotliwością 5Hz. Niestety wiąże się to z każdorazowym zaburzeniem generowanego przebiegu. Jest to niedopuszczalne w tej formie.

    Jakimś sposobem jest aplikacja kaskadowa z głównym procesorem obsługującym wejścia i wyświetlacz oraz przechowującym próbki oraz z procesorami dedykowanymi tylko do wytwarzania sygnału. Procesory te odpowiadające kanałom czekają po resecie na przesłanie próbek i parametrów, po czym zaczynają generować sygnał. Zmiana ustawień = reset i ponowne przesłanie danych.

    Super szybki generator arbitralny można zrobić na niedrogim Raspberry Pi Zero programowanym w C, przebiegi rzędu MHz są osiągalne, ale niska amplituda wyjściowa (chyba z 300mV) i parametry wymagają szybkiego wzmacniacza operacyjnego. Generalnie niebateryjny generator łatwiej zrobić, ale nie każdy ma miejsce, żeby go trzymać. Ja mieszkam w bloku w m3 i mam małe biureczko na moje projekty elektroniczne.

    Wrzuciłbym zasilacz, jednak wymaga on kilku zmian, pewnie zrobię to już pozakonkursowo. Póki co mam egzamin specjalizacyjny na głowie i bardzo dużo zmian w moim projekcie antistorm.eu (zapraszam do korzystania).

    EDIT: Nie wzorowałem się na projektach kolegów, uważam, że klikalny enkoder i płaskie menu to najbardziej ergonomiczne sposoby interakcji z urządzeniem.

  • #30 21 Paź 2017 17:41
    2675900
    Użytkownik usunął konto