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.
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.
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.
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.
7. Przybliżony przebieg na ekranie, widać schodki, ale przede wszystkim widać kiepskiej jakości chińskie zasilanie
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.
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.


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.

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.


7. Przybliżony przebieg na ekranie, widać schodki, ale przede wszystkim widać kiepskiej jakości chińskie zasilanie


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.