Rozwijam płytkę drukowaną do zastosowania w wykrywaniu analogowym. Wykorzystuje wewnętrzny ADC na PSoC3. Jak zwykle aplikacja ma bardzo ograniczoną przestrzeń (11 mm x 21 mm), więc musiałem dokonać pewnych kompromisów w układzie płytki drukowanej, czego nie zrobiłbym na większej płytce drukowanej.
Płytka jest zasilana regulowanym napięciem 6 V i zawiera dwa regulatory liniowe 5 V. MCP1702 na dostawę cyfrowego i MIC5205 na dostawę analogowego. Płytka wykrywa pięć czujników efektu Halla A1324 . Każdy sygnał wyjściowy z efektem Halla jest filtrowany przez filtr RC 100nF + 1k. Jeden czujnik znajduje się na samej płytce drukowanej (prawy dolny róg). Pozostałe 4 wtyczki podłącz do 6-stykowego złącza po prawej stronie.
Układ działa jako urządzenie podrzędne SPI, ale próbki ADC są zawsze pobierane między transakcjami SPI, więc SPI nie powinien zakłócać sygnałów analogowych.
Niestety nadal widzę szum (około 1,5 LSB przy 12 bitach) na sygnałach analogowych i zastanawiam się, czy mógłbym coś zrobić inaczej w układzie, aby to poprawić.
Otwórz obraz w nowej karcie, aby zobaczyć go w wyższej rozdzielczości.
Dodany:
Inne konstrukcje PCB, które zrobiłem przy użyciu MCP3208 , i te same podwójne zasilacze 5 V, te same czujniki i te same filtry RC nie osiągnęły zauważalnego hałasu przy 12 bitach.
ADC na PSoC3 jest typu sigma delta. Ta wersja PSoC jest ograniczona do 12 bitów, ale inny numer części ma 16-bitowy ADC (chociaż z niższą częstotliwością próbkowania).
Dbam o hałas i naprawdę chciałbym przesunąć go nieco dalej w stronę 12 ENOB. Powodem nie jest dokładność, ale pomiar prędkości. Obecnie ten poziom hałasu uniemożliwia dokładną kontrolę położenia i prędkości na robocie.
Dodany:
Schematyczny. Niestety jest trochę ciasno, ale możesz tylko przeczytać wartości.
Odpowiedzi:
Zawsze będziesz mieć trochę hałasu na ADC, szczególnie na typach SA (sukcesywnej aproksymacji) na matrycy mikrokontrolera. Sigma-delta lepiej sobie radzą z szumem gaussowskim, ponieważ go integrują. Nie oczekuj 12 ENOB od 12-bitowego ADC.
Szum kontrolera jest przyczyną, dla której większość mikrokontrolerów nie zapewnia rozdzielczości wyższej niż 10 bitów, a AVR oferuje możliwość zatrzymania mikrokontrolera podczas akwizycji ADC, co powinno potwierdzić, że przynajmniej część szumu pochodzi z kontrolera .
Ale pytanie brzmi: czy cię to obchodzi? 1,5-bitowy szum w 12-bitowym ADC nadal pozostawia więcej niż 10 bitów, lub lepiej niż 0,1%. Jak dokładny jest Twój czujnik Halla? Inne elementy w obwodzie?
edytuj
Wygląda na to, że używasz wewnętrznego oscylatora PSoC, ponieważ nie widzę kryształu na schemacie. Wygląda OK: masz właściwe odsprzęganie. Poza zegarem wewnętrznym jedyną szybką częścią obwodu wydaje się być SPI, ale mówisz, że będzie cicho podczas pomiarów. Reszta płyty ma prąd stały lub prawdopodobnie stosunkowo niską częstotliwość, jak czujniki Halla. I to Damn Small ™, który również pomaga: krótsze ślady wychwytują mniej hałasu. Pewnie, że mógłbym wytropić MCP1702, który obracałbym o 90 ° CCW, aby kondensator wyjściowy mógł być umieszczony jeszcze bliżej pinów, ale to nie rozwiąże problemów.
Widzę tylko jedną zmianę w układzie, która może poprawić współczynnik S / N:
W arkuszu danych sugerowane są podzielone analogowe i cyfrowe płaszczyzny uziemienia dla „Optymalnej wydajności analogowej” (strona 10).
Co do reszty: to mała plansza, jak powiedziałem, co oznacza krótkie ślady i oddzielenie w odległości kilku mm. Chciałbym więc jeszcze raz przyjrzeć się źródłu hałasu. Najważniejszym podejrzanym jest zegar PSoC. PSoC może zasilać bardzo niskie napięcie zasilania, co zmniejszyłoby jego hałas. Oczywiście bardzo by to pomogło, gdyby VDDA również musiało zostać obniżone, ale nigdzie nie czytałem w arkuszu danych, że VDDA nie powinno być wyższe niż VDDD.
Następnie ADC. Na stronie 55 arkusza danych podano 66 dB SINAD, czyli 11 bitów, czyli blisko tego, co dostajesz teraz. Arkusz danych A1324 daje nam szum 7 mVpp przy spoczynkowym napięciu 2,5 V. To także znacznie mniej niż stosunek S / N 72 dB, który może dać 12-bit. Możesz to trochę ulepszyć dzięki dodatkowemu filtrowaniu.
Wspominasz o lepszej wydajności MCP3208, ale to ADC z dala od mikrokontrolera, a to może wyjaśniać, w jaki sposób ADC SA może radzić sobie lepiej niż sigma-delta o tej samej rozdzielczości.
Tak więc opcje, które widzę: obniżają napięcie zasilacza cyfrowego i dzielą analogowe i cyfrowe masy.
źródło
Zgadzam się z powyższym. 1,5LSB hałasu jest całkiem rozsądne. http://www.cypress.com/?docID=39346 pokazuje minimalny SINAD wynoszący 66 dB w trybie 12-bitowym, co sugeruje ENOB = 10,7.
Wiem, że nie jest to bezpośrednia odpowiedź na twoje pytanie, ale zinterpretuję to pytanie jako „jak rozwiązać moje problemy z kontrolą prędkości?” a nie „Jak uzyskać więcej niż 10.5 ENOB?”.
Jak się różnicujesz? Czy masz dość wolnych tyknięć zegara, aby zrobić coś gładszego niż dwupunktowa centralna różnica? Może opracujesz coś o szerokości 5 próbek, zoptymalizowane w Matlabie?
Może to również zabrzmieć trochę śmiesznie, ale hałas prędkości pogarsza się, gdy próbkujesz szybciej
Nie obrażaj się, ale również rzuć okiem, aby upewnić się, że nic nie dzieje się głupio w kontroli prędkości, np. Problemy z konwersjami między liczbami całkowitymi ze znakiem i bez znaku, i upewnij się, że liczby całkowite są wystarczająco szerokie, aby uniknąć błędów przepełnienia podczas różnicowania . Moje równania kontrolne często komplikują się na tyle, że czasami jawnie rzucam każdą operację.
Wreszcie, choć być może najbardziej prawdopodobne, czy tracisz efektywne bity poza górą, nie wzmacniając ich do prawie pełnej skali? Jeśli tak, możesz wzmocnić lub zapewnić mniejszy Vref.
źródło