Miniscope v2e
Bardzo prosty oscyloskop PC/USB z mikrokontrolerem STM32F042.
Specyfikacja:
- kontynuacja idei miniscope v2a-d: bardzo proste urządzenie strumieniujące dane w czasie rzecywistym do PC; większość funkcjonalności zawarta w oprogramowaniu PC,
- próbkowanie: 480 kSps, 8 bit, 1 zakres czułości, strumieniowanie USB FS z użyciem sterownika libusb (32/64bit),
- rozmiar bufora/ramki danych: 4k to 1M zdefiniowane w DLL; do 512M próbek przy zapisie do pliku,
- upgrade programu poprzez USB (DFU bootloader zawarty w pamięci ROM),
- minimalny koszt i złożoność: MCU, regulator napięcia, gniazdo mini-USB i kilka pasywnych elementów na jednostronnej płytce drukowanej.
Zapowiedziana w styczniu 2014 podrodzina mikrokontrolerów z rdzeniem Cortex-M0 wyposażona w interfejs USB full-speed zdolny do pracy bez rezonatora kwarcowego pozwala na obcięcie części kosztów przy budowie oscyloskopu/rejestratora podobnego do miniscope v2c/v2d. W szczególności interesujące są mikrokontrolery STM32F042F ze względu na zastosowanie obudowy TSSOP20 i minimalną liczbę linii zasilających co upraszcza druk.
STM32F042F4 wyposażony jest w bootloader USB (DFU), pojedynczy przetwornik analogowo-cyfrowy 1MSps, 16 kB pamięci FLASH i 6 kB pamięci RAM.
Schemat
miniscope_v2e_20140501.pdf
Rezystor 1k5 (USB pull-up) nie powinien być montowany - STM32F042 posiada wewnętrzny pull-up, używany też przez wbudowany bootloader.
Wersja z 2015.02.20 używa dzielnika napięciowego R8 27k + R4 51k.
Wykorzystać można stabilizator 3V (użyty przeze mnie) lub 3,3V.
Z porównania schematu ze schematem kitu Discovery dla STM32F072 wynika, że prawdopodobnie układ mógłby obyć się
bez kilku elementów RC stanowiących filtr na liniach USB data.
Jeżeli częste zmiany firmware nie są przewidywane przełącznik SMD wprowadzający mikrokontroler w tryb bootloader może być zastąpiony
zworką/jumperem.
Pliki Eagle
Wczesna, niezoptymalizowana wersja płytki mieszająca techniki THT i SMD: miniscope_v2e_eagle.zip
Biblioteka Eagle z STM32F042Fx: STM32F042Fx.lbr
Bieżąca wersja: miniscope_v2e_eagle_20150113.zip.
Oparta tylko o elementy SMD (praktycznie - z wyjątkiem otworów na kołki będące elementem gniazda USB - brak konieczności wiercenia).
Przeznaczona do opakowania w rurkę termokurczliwą i używania jak sondy.
PDF do wydruku dla metody termotransferowej: miniscope_v2e_pcb_panelized.pdf
Z przylutowaną sondą (spinacz do papieru), krokodylkiem łączącym masę i kablem mini-USB:
Top: (prawie) brak potrzeby wiercenia:
Aplikacja PC (miniscope v4):
Z testów praktycznych - wygoda użytkowania zależy w dużym stopniu od giętkości i ciężaru kabla USB - w szczególności
kable z filtrem ferrytowym przy wtyku mini-USB nie są dobrym wyborem.
Firmware
Pierwsza wersja (nie polecana!).
Konfiguracja ADC: 8bit (9.5 cykli SAR), czas próbkowania 13.5 cykla, zegar ADC 12MHz.
Wynikowa częstotliwość próbkowania = 12M/(13.5+9.5) = 521.7k [Sps].
Uwaga: biblioteka DLL jest skompilowana z myślą o zaresie pomiarowym 6V (użyty regulator napięcia 3V). Dla zaresu 6.6V (gdy użyte jest
zasilanie 3.3V i dzielnik 1:2 wymagane jest przekompilowanie biblioteki lub użycie funkcji kalibracji w GUI (miniscope v4).
Firmware (Keil v5 Lite): miniscope_v2e_20150215.7z
DLL (TC++ Explorer) + win driver: miniscope_v2e_dll_20150215.7z
2015.02.20 update
- poprawiony problem z USB FIFO
- zakres pomiaru napięcia zmieniony na 0...8.6V: rezystory 51k+27k dla zminimalizowania nieoczekiwanego problemu z prądem upływu pochodzącym z wejścia ADC
- częstotliwość próbkowania zmniejszona do 480kSps; wyższa częstotliwość skutkowała w testach sporadyczną utratą danych, nieakceptowalną ze względu na przeznaczenie urządzenia do zapisu danych w sposób ciągły
Start
Miniscope v2e jest bardzo podobny do v2d ze względu na to, że zarówno STM32F0x2 jak i STM32F3 używają bootloadera USB zawartego w pamięci ROM.
Dla wprowadzenia w tryb bootloader należy przy odłączonym przewodzie USB wcisnąć przycisk i nie puszczając go podłączyć USB. Urządzenie powinno zostać wykryte jako urządzenie klasy DFU. Do zapisu firmware można użyć aplikacji STM DFUse demo lub podobnej. Bezpośrednio po zapisie wykryte zostanie nowe urządzenie.
Firmware Miniscope v2e bazuje na przykładzie CDC i jest wykrywane jako urządzenie złożone. Interfejs 01 jest interfejsem obsługującym transfer bulk i odpowiadający mu sterownik (libusb) jest zawarty w pakiecie. Po zainstalowaniu sterownika urządzenie będzie widoczne w menedżerze urządzeń w grupie libusb-win32. Interfejs 00 (pozostałość po CDC, control interface) jest nieużywany i pozostanie bez sterownika.
Analogicznie do miniscope v2c i v2d główna aplikacja jest odrębnym projektem - miniscope v4. Po rozpakowaniu biblioteka miniscope_v2e.dll powinna być skopiowana do podkatalogu /device a następnie wybrana w konfiguracji po uruchomieniu.
Problemy
- Wejście ADC STM32F0 w trybie ciągłego próbkowania zachowuje się jak słabe źródło napięcia; przy odłączonym wejściu mierzone na nim napięcie wynosi około 220mV (forum STM).
Firmware z 2015.02.20 zakłada że dzielnik wejściowy składa się z rezystorów 51k+27k, skutkując zakresem pomiarowym 8.6V przy zasilaniu 3V. Przy użyciu tego dzielnika powyższy problem jest mniej widoczny / pomijalny - mierzony przez oscyloskop offset wejściowy jest równy 3 jednostkom ADC.