Jest to raczej sprzęt dla fanów atmegi
Stosując elementy smd oraz inny mikrokontroler można zrobić sprzęt i lepszy i tańszy. A części użyłem jakie miałem na stanie.
Właściwości:
- 1,2,4 kanały analogowe min (max 100,50,20 ksps) pasmo ok 40 kHz rezystancja ok 2Mom
- 1 kanał z wejściem różnicowym, rezystancja różnicowa 2Mom, w odniesieniu do masy 1Mom
- zakres sygnałów analogowych +-100mV
- tryb powtarzalny pomiaru dla sygnałów okresowych (minimum 2-4kHz)
(ekwiwalent 250ksps-16Msps) pasmo ok 300kHz
- 1,2,4 kanały cyfrowe 100-10ksps (od 20ksps-2Msps zawsze 4 kanały)
- 1 kanał cyfrowy 62k5 - 8Msps
- prosty generator na timerze ok 1kHz - 8 Mhz
- kalibracja
- synchronizacja jest tylko dla trybu powtarzalnego
- tryb 8 i 10 bit ADC
- bufor 512 bajtów
- sygnalizacja za pomocą LED, aktywnych kanałów itp
- wejście synchronizacji zewnętrznej
- wyjście uart jednokierunkowe: 9600,19200,38400,57600,115200,230400,0M5,1M,2M
- transmisja danych tekstowa w formacie hex
- wyjście izolowane na transoptorze (9600)
- wyjście SPI
- zasilanie 9-15 V (max 16V)
- oprogramowanie odbiorcze do linuxa
Ze względu na cięcia kosztów, sprzęt nie posiada tłumika wejściowego
przerzucając koszty na sondę (obwody zewnętrzne).
Opis przycisków:
1. tryb ( ANALOG , A EKWIW, DIGITAL, D SPI , SETTING)
2. zmniejsz
3. zwiększ
4. ilość kanałów
5. typ synchronizacji
6. ilość bitów przetwornika
7. generator zmniejsz częstotliwość
8. generator zwiększ częstotliwość
9. generator zmiana dzielnika i wyłączenie
Z początku generator był w jednym trybów, ale przeniosłem go na osobne przyciski.
Ustawienia generatora nie działają w trybie ustawień (settings)
W sumie po zrobieniu zdjęcia zauważyłem że jest błąd w opisie generatora, zamienione jest up z down.
Te opisy na obudowie nie są pełne, ponieważ jeszcze nie wiem co będzie w wyjściami SPI
Możliwe też jest umieszczenie dwóch dodatkowych przycisków.
Tryb ustawień
2. zmniejsz szybkość UART
3. zwiększ szybkość UART
4. kalibracja 0 (lub 0 i 80mV)
5. kalibracja 80mV
6. zapisz ustawienia kalibracji
7. zapisz stan urządzenia (kanały, UART, generator)
W plikach które wrzucam jest bardziej szczegółowy opis dla zainteresowanych.
Tutaj nie chce robić zbyt długiego elaboratu.
PCB jest zrobione z jednostronnej i doklejonej folii miedzianej która służy za mase.
Pomalowane lakierem do szkła w celu ochrony. Prowadzenia drugiej warstwy jak widać drucikami.
Na przyciski aby się PCB nie rozleciało podczas wciskania dogrzałem podtrzymania.
---------
Sprzęt jest w wersji 0.1.0. I z powodu że nie jest to jakiś wypas chwilowo wystarcza,
choć przydałoby się zrobić wyzwalanie bo nie każdy badany przebieg jest okresowy.
Ale liczę na wasze uwagi i krytykę co wam się nie podoba, co można zrobić lepiej i postaram
się te uwagi jakoś uwzględnić.
---------
Film, przepraszam ale jakość nie wyszła najlepsza.
Może to kwestia ustawień kamery.
---------
Kilka zrzutów z pomiarów.
Wyjście z komputera - prawdziwa historia:
Kiedyś ktoś był zdumiony że mam schody na wyjściu, no to prosze (podane przez dzielnik):
A po przepuszczeniu przez butterwortha:
A teraz bez dzielnika, sygnał ok 80mV i mnóstwo szumów.
Sygnał z kompa jest zaszumiony. Jednak ujawnia się tutaj jedna z wad pomiarów powtarzalnych.
Po prostu szum powoduje błędy czasowe i rozmycie przebiegu w pozycji poziomej.
Sutuacja byłaby lepsza gdyby zastosować w linii synchronizacji filtr dolnoprzepustowy.
Ale musiałby by przełączany ponieważ nie można ograniczać pasma innym pomiarom.
A tak wygląda w trybie zwykłym 100kHz
Inny przykład, gdy przebieg jest czysty ale nie idealnie okresowy:
Dla 2khz (okresowy) i 2.125
Ma to wadę i zaletę bo widać że przebieg nie jest idealnie okresowy, ale
może być problem odróżnić czy jest to spowodowane szumami czy brakiem idealnego okresu.
Co do pasma, przebiegi prostokątne z generatora 1MHz i 250kHz:
Inne:
---------
Na chwilę obecną sprzet nie posiada wyświetlacza. Więc robi za przystawkę do komputera.
Aby przyspieszyć i ułatwić sobie zadanie, jako że nie jestem jakiś wybitny,
aplikacja odbierająca dane na komputerze do wyświetlania danych korzysta z programu gnuplot.
Gnuplot może być uruchamiany z terminalem jako x11 lub wxt.
Wxt ma troche możliwości jak zapisywanie do pliku png, dzięki temu prezentuje te zrzuty.
Program zapisuje każdą paczke danych dla wykresu do pliku "data_000000000".
Uruchomienie programu w terminalu:
Kod: TeX
np:
Kod: TeX
Jak ktoś ma ścieżki w zmiennej środowiskowej do gnuplota oraz programu oscg,
to można oczywiście bez ścieżek.
Kod: TeX
kończymy program przez 'q' i zatwierdzenie enterem.
Jeśli ktoś ma wolny dysk proponuje skorzystać z ram dysku tmpfs
Ja mam taką linijke w pliku fstab:
Kod: TeX
opcje w terminalu (zatwierdzamy enterem):
q - wyjście
1 - włącz/wyłącz ograniczenie zmiany przebiegu na 1 sek
s - zatrzymaj przebieg
r - wznów przebieg
Przydatne opcje dla gnuplota:
- prawym przyciskiem klikamy i zaznaczamy powiększenie
- u - powrót do poprzedniej skali
Gdyby ktoś chciał moge przygotować skrypt, zrzut z pomiarów.
Będzie można sobie zobaczyć na własnym sprzęcie, bez oscyloskopu.
Plany:
1. synchronizacja wejść. Szczerze powiedziawszy nie wiem
jeszcze jak ją zrealizować, ponieważ sygnały mogą być różniste.
Nie wiem czy też uda się zaimplementować bufor kołowy, może braknąć mocy obliczeniowej.
Jeśli chodzi o cyfrowe to w oparciu o przerwanie czy flage da się, tylko będzie z opóźnieniem.
2. przepisanie programu na PC. W planach możliwość zapisywania na bieżąco wszystkich pomiarów.
Też jeszcze nie mam koncepcji, bo ilość danych może być duża. Moze jakieś ograniczenie?
3. Przetwornik w atmedze działa z zegarem 2MHz czyli dwa razy więcej niż mówi specyfikacja.
Poniewaz wpływa to troche na jakoś sygnału, w planach mam również dodanie trybu
z niższą częstotliwością. Oraz może jakaś prosta filtracja.
4. Watchdog w oprogramowaniu atmegi też by się przydał, nie ma go jeszcze
ponieważ nie wiem jaką formę przybierze synchronizacja.
5. Jakiś wyświetlacz.
6. Do urządzenia można zamontować jeszcze dwa przyciski gdyby zaszła taka potrzeba.
7. Bufor jak pisałem jest 512, ale może opcja zmiany bufora, atmega328 ma 2k ramu,
więc w razie potrzeby byłoby x2 więcej danych. Jednak miejcie na uwadze,
czas przesyłania danych z szybkością 19200 to 1 sek dla bufora 512.
8. Oprogramowanie na komputerze i zbieranie ciągłe pomiarów. Na chwile obecną jest opcja, ale żyje własnym życiem.
Minimum 50 pomiarów na sek powinno dać rade w trybach nawet 4 kanałowych.
Elektronika:
- Wejścia analogowe 1-4 na TL074.
- Wejście różnicowe na buforach BF245A oraz wzmacniacz LF356.
- Przesównik napięć na TL072.
- Bufor cyfrowy na bramkach schmitta HCT14.
- Zasilanie MC34063.
- Synchronizacja dla trybu powtarzalnego zrobiona na komparatorze LM311
- Wyjście izolowane transoptor 4n35, wlecze się, w zasadzie więcej jak 9600 to może nie działać
Jeden ze sposobów w jaki można podłączyć, na przewodzie 2 żyłowym:
Problemy techniczne.
Główne problemy, to szumy
Z początku myślałem że nie da się zejść do sensownego poziomu, i będzie
trzeba zmniejszać czułość wejściową. No ale przecież 10mV szumu to skądś się bierze.
1. Przetwornica na MC34063, zmniejszyłem pojemność do 300pF, dzięki czemu
częstotliwość z jaką działa jest większa i wynosi ok 100kHz.
2. W projekcie jest prosty stabilizator na linii -5V. D27 R97 Q9 C30. Nie zamontowałem go, a w zamian zastosowałem pojemność 1000uF,
generalnie 330uF jest koniecznością. Wynika z faktu że linia ta jest odczepem i działa podobnie jak flyback i wymaga lepszej filtracji.
Jeśli ktoś jest wrażliwy na punkcie MC34063, może sobie zastosować stabilizatory liniowe.
3. Sygnały są w odniesieniu do napięcia podawanego przez U4 TL072.
Z poczatku do testu zamontowałem LM358 który jednak szumiał i niezbyt dobrze trzymał
napięcia dla większych częstotliwości.
4. Z początku rezystancje wejściowe były 10Mom, ale to zbierało wszystko i jeszcze troche.
Więc dałem 2Mom na TL074 i 1Mom do masy na bufor różnicowy.
5. Górne PCB zaszumia sygnały w dolnej ze wzmacniaczami, więc dodatkowy ekranik.
6. Czasami zaszumiał sam sygnał z generatora, dodałem na linii koralik ferrytowy smd.
7. Wejścia powinny być typu BNC, zastosowałem zwykłe 2 PIN, ten 1 cm też zbiera szumy z otoczenia.
Stąd mały ekranik na obudowie. No i oczywiście sondy muszą być ekranowane.
8. W zwykłym trybie analogowym przetwornik ADC jak pisałem taktowany jest z wyższą
częstotliwością, co też przekłada się na gorsze wyniki w tym zakresie.
W trybie powtarzalnym jest taktowany 500kHz.
Obecnie dla 4 kanałów:
Zmiany względem schematu:
-
Dodałem kondensatory ograniczające pasmo na wzmacniaczach.
Podczas testu wychodziło mi że braknie pasma dla TL074 w urzadzeniu okazało się odwrotnie.
Stąd nie montowałem kondensatorów C4 C5 C6 C7, a dolutowałem 100pF w sprzężeniu.
Poprawiłem to na schemacie.
-
C13 C14 C15 C16 nie montowałem, nie zauważyłem efektu.
-
R13 R14 R23 R29 - nie montowałem, one są z myślą gdyby atmega zasilana byłaby z 3V3
-
LED D11 D12 D14 D20 D21 - nie montowane, zarezerwowane na przyciski itp
-
dioda D1 z sygnałem UWSET jest zamontowana gdzie indziej ponieważ tutaj jej nie może być,
zamiast na U8 jest na U11 (4094) pin11
-
Dodana jest dioda z rezystorem na zasilanie +5V wstępnie obciążająca przetwornice.
Aby napięcie ujemne było sensowne przetwornica najlepiej jakby pracowała w trybie ciągłym.
-
zamiast stabilizatora na linii -5V jest kondensator 1000uF i zenera 6V8 dla zabezpieczenia
-
R1 nie montowane, ponieważ SWR3 z przycisków jest podpięty do PD2.
poprawione na schemacie, ale nie na PCB, ale po prostu ich nie montujemy.
C33 nie montowany ale może będzie potrzebny w przyszłości gdyby były zakłócenia
-
Pin PD4 nie używany. nie podłączamy tam nic.
-
Błędy i nie przemyślenia:
Płytka ma dwa wyjścia SPI z sygnałami CE. I jest tylko taki niuans
że nie ma na nich sygnału MISO i urządzenie nie może odczytywać.
A robiłem SPI z myślą o np karcie SD. MISO zajęty był przez sygnał z przycisków.
A drugi SPI z myślą o wyświetlaczu. No i to wymaga przemyślenia bo brakuje pinów z atmegi.
Można sygnały CE wziąść z zatrzasku szeregowego. Pierwotnie miały służyć innym celom.
Na chwile obecną sygnał jest przepięty, i zmiany są na schemacie ale nie na PCB które zamieszczam.
Z tym że nie wiem czy takową obsługe karty SD i tak zrobie, bo w asm raczej i tak nie będe pisał.
Na razie zamontowane tylko złącze dla 1 SPI, ale nie wiem co zrobie z tym w przyszłości.
Być moze przydałyby sie diody zabezpieczające na wejście różnicowe
Czasem pojawiają się takie błędy, nie wiem skąd:
Spasowanie PCB w relacji do gniazd wyszło przeciętnie.
Na filmie prezentuje sposób wciskania w obudowe.
---------
Wersja 0.1.0 jest na licencji MIT.
Program pisałem w asemblerze. Udostępniam wsad na atmega328.
Fuse bity dla atmega328: bodlevel 2V7 nodiv8 full crystal
LOW: 0xd7
HIG: 0xd9
EXT: 0xfd
Jakby ktoś chciał pomyśle nad atmega168 bo zmian wiele nie będzie. Może się uda, bo różnice nie są duże.
Na razie nie udostępniam źródeł na atmege.
W pliku zip lub qz (do wyboru), katalogi: doc pcb schem soft_atmega328 soft_linux
gnuplota trzeba sobie ściągnąć, program odbiorczy w soft_linux, kompilujemy poleceniem make.
---------
Fajne? Ranking DIY