Skocz do zawartości

ATMEGA324 i MCP3302, pomiar różnicowy i komunikacja


qwee

Pomocna odpowiedź

Buduję układ do pomiaru napięcia na dwóch kanałach w układzie różnicowym z wykorzystaniem przetwornika MCP3302, oraz atmegi324 taktowanej kwarcem 20mhz.

Proszę o sprawdzenie mojego toku rozumowania, ewentualnie naprowadzenie mnie na dobrą drogę.

Głównie moje pytania dotyczą komunikacji czyli odbierania i wysylania danych, a w związku z tym ,że pierwszy raz używam zewnętrznego przetwornika, chciałbym aby spojrzał na to ktoś bardziej doświadczony.

W nocie przetwornika widnie zapis, że częstotliwość taktowania winna wynosić 21*Fsample. Czyli max 2,1Mhz, co też jest zapisane. Przy moich 20Mhz muszę więc wybrać preskaler 16 co da mi 1,25Mhz więc niecałe 60 ksps, przy dwóch kanałach czyli poniżej 30 ksps na kanał. To mnie w zupełności zadowoli.

Czytając notę od przetwornika i sposobu komunikacji wnioskuję, że aby otrzymać wartość pomiaru muszę:

1. ustawić linię CS w stan niski

2. wysyłam 4bitową informacje o wyborze kanału np wyslij_spi( 0b0X01 ) - pomiar różnicowy na 1 i wejściu, X- dowolny bit.

3. Następuje konwersja Tconv a następnie układ wysyła 13bitowy wynik.

Lecz tutaj muszę się zatrzymać, gdyż jak wiadomo SPI w avr jest 8 bitowe, więc nie wiem jak poradzić sobie z tym problemem. Niby jest to opisane w nocie katalogowej ale w tym momencie kompletnie zgłupiałem.

Mogę liczyć na podpowiedź jak uzyskać wynik przetwarzania z tego przetwornika?

oto nota: http://ww1.microchip.com/downloads/en/DeviceDoc/21697f.pdf

Link do komentarza
Share on other sites

To bardzo proste. Wszystko masz pokazane na rysunku 6-4 w ww dokumencie.

SPI jest dwukierunkowe, full-dupleksowe czyli jednocześnie nadajesz i odbierasz, czyli:

1. Nadajesz pierwszy bajt zawierający xxxx1sddd i ignorujesz to, co w tym czasie przyszło z przetwornika.

2. Nadajesz cokolwiek (np. 0x00), a bajt który w tym czasie przyszedł zawiera xx0sdddd.

3. Znowu nadajesz cokolwiek, a bajt który w tym czasie przyszedł zawiera dddddddd.

gdzie znaczenie bitów jest chyba oczywiste.

Zauważ, że jak większość prostych SARów ten robi konwersję w takt zegara SPI a to oznacza, że nie możesz zbyt długo zwlekać między wysyłanymi bajtami by utrzymać minimalną częstotliwość zegara. Inaczej kondensator układu próbkująco-pamiętającego naładowany w fazie "sample" rozładuje się o więcej niż 1 LSB i wynik można wyrzucić do kosza (rozdz. 5.2.1).

Zwróć też uwagę na zachowanie jakiejś sensownej impedancji źródła sygnału (rozdz. 5.2) bo wejście nie jest buforowane (a szkoda) i w czasie próbkowania napięcia wejściowego po prostu przez chwilę widać tam kondensator. Jeżeli Twoje źródło nie będzie w stanie w tym czasie naładować go do potrzebnej wartości, będziesz mierzył coś co będzie wypadkową poprzedniego i obecnego napięcia lub zawsze za mało - zależy od tego jak zrobili "ważenie" napięcia w układzie.

EDIT: Czy mógłbyś w zamian zdradzić co to będzie? Zawsze warto posłuchać jak ciekawe rzeczy robią inni 🙂

  • Lubię! 1
Link do komentarza
Share on other sites

Bardzo dziękuje, jeszcze dziś postaram się z tym uporać.

To ma służyć do pomiaru składowej zerowej prądu i napięcia sieci trójfazowej do realizacji automatyki zabezpieczeniowej. Na podstawie przebiegów w czasie rzeczywistym układ ma podejmować stosowne decyzje według nastaw.

Moim źródłem jest filtr składowej zerowej napięcia, więc impedancja znikoma. sygnał kondycjonuje poprzez transformator jednofazowy i pomiar ma być dokonany bezpośrednio z zacisków. Jeśli dobrze rozumiem z wykresu, że impedancja ma być mała to układ spełnia założenie z dużym zapasem.

Link do komentarza
Share on other sites

A dlaczego zewnętrzny przetwornik? Nie starczało bitów rozdzielczości w procesorze? Szybkości? Dlaczego pomiar różnicowy? Przecież transformator możesz jednym końcem "umasić" i już masz pomiar jednokońcówkowy. Jak zrobisz polaryzację wejść przetwornika żeby były zawsze między Vcc a GND?

Nie wiem co to jest składowa zerowa w kontekście sieci 3F ale np. jeśli zabraknie jednej fazy itp to czy to nie może być naprawdę duże, np. 100 razy większe niż przyjęty zakres pomiarowy? Jak zrobisz zabezpieczenia przed tym? Czy tylko po stronie HV, czy również przy przetworniku? Czy będziesz mierzył jakieś wyższe harmoniczne i je analizował czy raczej tylko "jakąś wartość średnią, która ma być mniej więcej = 0 plus minus nastawy"? W jakie odporności na przepięcia celujesz: 2kV czy jednak wyżej? Będziesz robił CE?

No to tak kilka pytań z ciekawości 🙂

  • Lubię! 1
Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

Zewnętrzny przetwornik bo szczerze powiedziawszy miałem takie marzenie, żeby w końcu to użyć🙂 może to głupie, ale chciałem liznąć przetworników zewnętrznych. Równie dobrze atmega32 mogłaby posłużyć do tego, bo też ma wejścia różnicowe i najważniejsze - o dowolnej biegunowości. Pomiar różnicowy stosuje dlatego, że mam dwa kanały i nie mogę łączyć ich mas gdyż każdy z nich ma fizycznie uziemiony jeden z zacisków i należałoby pilnować tego które to, bo w przypadku odwrotnego połączenia będzie zwarcie przez ziemię. Niech to będzie więc uniwersalne.

Składowa zerowa pojawia się właśnie gdy jedna z faz jest doziemiona. Filtr jest połączeniem przekładników, które są tak dobrane aby napięcie na wyjściu było w stanie zwarcia w sieci na poziomie 100 V, zabezpieczam to warystorem(może zmienię na diodę transil). Dalej transformator aby nie przekroczyć zakresu pomiarowego (Vref 4,096) przy 150 voltach po stronie pierwotnej. Pomiar różnicowy jest również z tego względu, że w stanie bez zwarcia napięcie na wyjściu filtru jest bliskie zeru lub też zależy od uchybu i niesymetrii obciążenia w sieci. Przeczytałem, że AVRy mają problem z pomiarem napięć w okolicach zera, a napięcie odniesienia nie może być zbyt małe ze względu na szeroki zakres pomiarowy.

Harmoniczne oczywiście pojawiają się, nawet jest ich nadmiar. Filtrować mogę na dwa sposoby. Najpierw spróbuje filtr cyfrowy - stąd założyłem już na początku taktowanie 20Mhz, a jeśli się nie powiedzie to analogowy - pasmowo przepustowy w okolicach 50hz. Później wartość skuteczna.

Dalsza obróbka to porównanie z nastawami i działanie według obranego algorytmu - sterowanie łącznikami, sygnalizacja etc.

[ Dodano: 22-10-2013, 22:10 ]

Co do tematu to spłodziłem taki kod:

#define UART_BAUD_RATE 57600

#define MOSI PB5
#define SCK PB7
#define CS	 PB4


void init_spi(void);
uint8_t transfer_spi(uint8_t bajt);


void init_spi(void)
{
DDRB |= (1<<MOSI)|(1<<SCK)|(1<<CS);
SPCR |= (1<<SPE) |(1<<MSTR) | (1<<SPR1) ;

}

uint8_t transfer_spi(uint8_t bajt)
{
SPDR = bajt;
while(!(SPSR & (1<<SPIF)))
return SPDR;
}



int main(void)
{
DDRB|=(1<<PB0);
PORTB |= (1<<PB0);
uart_init(UART_BAUD_SELECT(UART_BAUD_RATE,F_CPU));

sei();
init_spi();
uint8_t a;
uint8_t b;
uint8_t c;



  while (1)
  {

   PORTB &=~(1<<PB0);
   a=transfer_spi(0b00000001);
   b=transfer_spi(0x00);
   c=transfer_spi(0x00);
   uart_puts(a);
   uart_puts(b);
   uart_puts(c);
   PORTB&=~(1<<PB0);
   _delay_us(100);

 }


   return 0;
}

No i nie gra. wysyła mi tylko wartość "63"jednorazowo. z uart jest na pewno wszytko w porządku, lecz czy sprawy dotyczące spi są poprawne?

Link do komentarza
Share on other sites

W pierwszym wysyłanym bajcie musi być ustawiony bit numer 5, to on zaczyna całą zabawę i jest de facto bitem startu całej transmisji a potem przetwarzania. Obejrzyj bardzo dokładnie rysunek 6-4.

Bardzo mnie zaintrygowałeś tym pomysłem z dwoma układami bez wspólnej masy. Musisz wiedzieć, że nazwa pomiar różnicowy jest tylko pewnym hasłem, opisującym to, ze przetwornik mierzy różnicę miedzy dwoma swoimi wejściami - tylko tyle. Absolutnie nie znaczy to, że możesz zrobić dwa układy wiszące zupełnie w powietrzu, odizolowane galwanicznie od jego masy i to mierzyć. Coś takiego to wielka pomyłka i czuję, że chyba pobłądziłeś. Musisz, po prostu musisz zagwarantować, by każde wejście przetwornika zmieniało się wyłącznie w zakresie od jego zasilania do jego GND a nawet mniej - w zależności od przyjętego Vref. Czy mógłbyś zdradzić ten niewielki fragment schematu z układem czujnika/transformatora i co tam jeszcze jest, aż do wejść przetwornika A/C?

EDIT: A dziś widzę, że dodatkowo nie kończysz prawidłowo ramki, brakuje podniesienia linii CS do stanu 1.

  • Lubię! 1
Link do komentarza
Share on other sites

oto mój schemat. Jak na razie chciałbym mimo wszytko odpalić ten pomiar różnicowy na mcp3302, taki sobie obrałem cel. Jeśli to nie bedzie sie na dawać to obiorę inną drogę.

poprawiłem kod:


#define F_CPU 16000000UL
#include <avr/io.h>
#include <util/delay.h>
#include <stdio.h>
#include "uart.h"
#define UART_BAUD_RATE 57600

#define MOSI PB5
#define SCK PB7
#define CS  PB4
void init_spi(void);
uint8_t transfer_spi(uint8_t bajt);


void init_spi(void)
{
DDRB |= (1<<MOSI)|(1<<SCK)|(1<<CS);
SPCR |= (1<<SPE) |(1<<MSTR) | (1<<SPR1) ;

}

uint8_t transfer_spi(uint8_t bajt)
{
SPDR = bajt;
while(!(SPSR & (1<<SPIF)))
return SPDR;
}



int main(void)
{
DDRB|=(1<<PB0);
PORTB |= (1<<PB0);
uart_init(UART_BAUD_SELECT(UART_BAUD_RATE,F_CPU));

sei();
init_spi();
uint8_t a;
uint8_t b;
uint8_t c;

  while (1)
  {

PORTB &=~(1<<PB0);  //CS w stan niski

	   a=transfer_spi(0b00010001); //wysylam znaczacy 5 bit i wybieram pomiar roznicowy na kanale 0 i1 
	   b=transfer_spi(0x00);  //wysylam cokolwiek i odbieram pierwsza czesc danych
	   c=transfer_spi(0x00);  //wysylam cokolwiek i odbieram druga czesc danych
PORTB|=(1<<PB0);

uint16_t wynik = 0;
wynik=256*b+c;
char tekst[4];

sprintf(tekst,"%d ",wynik);

       uart_puts(tekst);

   _delay_ms(100);


 }


   return 0;
}

dorzcam jeszcze schemat polaczen przetwornika:

2ykgj9v.png

Taki układ wysyła mi po RSie tylko 0, a po odłączeniu przetwornika nic się nie zmienia, czyli wnioskuje że coś jest nie tak z komunikacją. Tylko czy w kodzie wszytko jest ok?

Dodam jeszcze że po skompilowaniu wyrzuca mi ostrzeżenie, dla funkcji transfer_spi() , a konkretnie przed klamrą zamykającą - "control reaches end of non-void function [-Wreturn -type]"

Link do komentarza
Share on other sites

Ech, to może warto się zastanowić sekundę co ten komunikat oznacza zanim wyślesz kod na Forum?

Kompilator usiłuje Ci powiedzieć, że w funkcji która powinna zwracać jakąś wartość - czyli właśnie w transfer_spi() sterowanie dochodzi do nawiasu zamykającego ciało funkcji bez wykonania instrukcji return(cośtam) a przynajmniej ze struktury programu wynika, że jest taka szansa. Tak, masz instrukcję return ale należy ona do poprzedniego while bo zapomniałeś o średniku.

Short story: ładujesz rejestr SPDR, hardware zaczyna nadawać po czym pierwsze sprawdzenie warunku zakończenia nadawania wykonuje odczyt z SPDR i wraca z tym śmieciem jako z wartościa funkcji. Nieźle.

EDIT: A teraz o schemacie:

W jaki sposób zapewnisz, że wejścia kanałów 0 i 1 będą w zakresie zasilań przetwornika? Przecież to jest pomiar różnicy ale oba napięcia muszą być dodatnie i w odpowiednim zakresie. Musisz zrobić jakś polaryzację tych wejść.

Rozumiem, że jeden z końców drugiego kanału różnicowego, jest na masie przetwornika, tak? To drugi będzie niestety bipolarny, czyli będzie zapodawał napięcie zarówno dodatnie jak i ujemne względem masy a to jest niedopuszczalne.

Co zabezpieczają i jakie mają wartości bezpieczniki F1 i F2? Bo chyba nie wejścia przetwornika? Tam popłynięcie jakiegokolwiek prądu innego niż przeładowanie kondensatora sample-hold (pojedyńcze mA przez mikrosekundy) oznacza, że coś sknociłeś i otworzyły się diody zabezpieczające.

  • Lubię! 1
Link do komentarza
Share on other sites

Rozumiem, mój błąd, przeoczenie. wstyd.

Problemem byłoteż źródło odniesienia które nie dzialalo poprawnie. Teraz wszytko gra i mogę działać z tematem dalej.

Dziękuje bardzo!

[ Dodano: 23-10-2013, 13:41 ]

Do schematu:

Napięcie na wyjściu z filtru składowej zerowej napięcia to 100V w stanie nieustalonym do 150V. Obniżam to transformatorem 230/3,5 co powinno dać 2,3 V rms - 3,2 w szczycie.

W obwodzie prądowym popłynie kilkadziesiąt - kilkaset mA a rezystor pomiarowy ma wartość ok 1 Ω, więc napięcie również nie powinno przekroczyć wartości.

Co do drugiego kanału pomiarowego to nie obieram masy właśnie ze względu na to, aby nie stosować przetwornika bipolarnego. Miałem to w zamiarze ale okazały się o wiele droższe.

Bezpieczniki nie zabezpieczają układu pomiarowego tylko obwody wtórne przekładników. Dla napięcia myślę że będzie to kilkadziesiąt mA, zaś dla prądu - prąd przekładnika z małym zapsem.

Link do komentarza
Share on other sites

Rozumiem teraz Twój pomysł ale to nie będzie dobrze działać, choć jesteś już bardzo blisko. Wyobraź sobie, że jedno z wejść przetwornika ma upływność do plusa lub do masy, np. 1uA. To żaden wydumany pomysł - taki prąd jest zupełnie możliwy. To oznacza, że to wejście będzie ciągnięte przez tę upływność w stronę - odpowiednio Vcc lub masy przetwornika i tam utknie. Mając między wejścia podłączony transformator spowodujesz, że na drugim wejściu zrobi się taka sama składowa DC i mimo bipolarnego pomiaru prawidłowa będzie tylko połowa wyników. Druga będzie niknąć w szarej strefie napięć zabronionych dla jednego z wejść.

Żeby tego uniknąć musisz przynajmniej jedno wejście każdej pary różnicowej wyposażyć w dzielnik rezystorowy podający tam np. połowę zasilania. Bezwzględna wartość napięcia nie jest ważna choć połowa zasilania daje największy zakres dynamiczny możliwych zmian na drugim wejściu = Vcc/2.

Jeszcze fajniejszym rozwiązaniem byłoby trafo z wyprowadzonym środkiem uzwojenia wtórnego, który mógłbyś na takim dzielniku powiesić. Wtedy każde z wejść mogłoby machać od Vcc do GND i miałbyś dwa razy lepszy odstęp od zakłóceń. Oczywiście wymagało by to zmiany Vref.

Trzecią możliwością jest po prostu uziemienie jednego końca transformatora, podanie drugiego przez prosty dzielnik podciagający składową stałą do połowy Vcc i zrezygnowanie z pomiaru różnicowego. Proste i skuteczne.

Nie widzę też żadnych zabezpieczeń układu pomiarowego - moje pytanie było retoryczne. Takie proste układy jak narysowałeś działają tylko do pierwszego przepięcia lub innej poważniejszej awarii sieci. Obecnie transformator, jako źródło o małej impedancji wyjściowej w przypadku przepięcia załatwi Ci każde wejście przetwornika. Nie masz żadnego ograniczania prądu jaki wpłynie do wejść gdy otworzą się diody zabezpieczające strukturę krzemową. Dałbym conajmniej rezystory szeregowe po 1k i diody zabezpieczające do plusa i do masy.

Szczerze mówiąc układ wygląda na mocno szkolny i jeżeli taki jest jego cel to OK, ale jeśli planujesz rzeczywiste wykorzystanie tego gdzieś w rzeczywistości, to jeszcze trochę mu brakuje. Dodawanie elementów zabepieczających zwykle zwiększa odporność ale z drugiej strony pogarsza inne parametry. Układ się wtedy rozbudowuje itd.. Cóż, takie życie elektronika. Systemy pomiarowe muszą być tak pewne jak to tylko możliwe, bo na podstawie wyników ich pracy ktoś lub coś wypracowuje decyzje, w których błąd może naprawdę drogo kosztować.

  • Lubię! 1
Link do komentarza
Share on other sites

Powiem szczerze, że to dopiero moje pierwsze praktyczne wykorzystanie przetworników, stąd jestem taki zielony. Wiele mi rozjaśniłeś i cieszę się, że ktoś zwrócił uwagę na niedociągnięcia.

Zasadniczo mógłbym jeden zacisk rezystora pomiarowego obrać jako masę przy pomiarze prądu, a przy pomiarze napięcia również jeden zacisk umasić, ale bo transformator da mi separacje galwaniczną. Przyznam się, że nie wziąłem tego wcześniej pod uwagę.

Kombinując według tego co napisałeś spróbowałem stworzyć schemat. Przyjąłem dwa rozwiązania - uziemienie po jednym zacisku i dodanie składowej stałej z dzielnikiem - 1 i 2.

Co do transformatora z odczepem w połowie uzwojenia wtórnego czy miałeś na myśli to co przedstawiłem pod numerem 3?

Dodałem też rezystory szeregowo przed wejściem przetwornika, oraz transita i warystor pomiędzy zaciski. O ile w obwodzie napięciowym wzrost napięcia móglby być możliwy to przy obwodzie prądowym raczej jest niemożliwy ze względu na to, że przekładnik pracuje praktycznie na zwarciu. Jedyna możliwość to dołączenie lub upalenie rezystora i rozwarcie obwodu. wtedy napięcia będą ogromne ze względu na duży strumień magnesujący.

Link do komentarza
Share on other sites

Ciepło, ciepło ale to jeszcze nie to. Przede wszystkim pomieszałeś dwie rzeczy. Jedna to sprawa polaryzacji wejść przy pomiarze różnicowym a druga to przejście na pomiar asymetryczny, unipolarny.

1. Tutaj dzielnik jest bez sensu. Trafo jest tak silne, że bez trudu przywłaszczy sobie napięcie w punkcie wspólnym i będzie tam tyle, ile da uzwojenie. Czyli bipolarnie a tego nie chcemy. Musisz sztucznie zwiększyć impedancję wyjściową transformatora przekładając opornik szeregowy z prawej na lewą stronę, przed dzielnik. Wtedy dzielnik zapoda jakąś składową stałą, np. 2.5V a odpowiednio policzony rezystor szeregowy zrobi wahania ± ileśtam. To możesz spokojnie mierzyć przetwornikiem z wejściem unipolarnym. Odmianą tego rozwiązania jest podłączenie jednego końca uzwojenia do dzielnika a drugiego wprost do ADC. Wtedy też dostajesz skłądową stałą jaką chcesz ± to co daje trafo.

2. Tutaj to samo. Jak rozumiem R2 jest na tyle mały, że stanowi co najmniej tak dobre przybliżenie zera jak uzwojenie transformatora. Czyli: patrz punkt 1.

3. Moja uwaga dot. trafo ze środkiem odnosiła się tylko do użycia pomiaru różnicowego. Wtedy dzielnik przypinasz do środka uzwojenia tak jak to zrobiłeś a oba końce już bezpośrednio do wejść różnicowych ADC. Oczywiście z dokładnością do elementów zabezpieczających ale to dotyczy każdego z rozwiązań.

Zanim zaczniesz rysować jakiś schemat albo zanim go wyślesz 🙂 spróbuj na szybko przesymulować go w głowie. Zastanów się jak będą płynęły prądy i jakie napięcia dostaniesz tam gdzie tego chcesz. Najpierw próbuj z samą ideą, bez zabezpieczeń itp utrudnień. Jeśli to będzie dawało szansę działania, idź dalej. Jeśli nie, próbuj inaczej. Musisz naprawdę rozumieć jak to działa. Inaczej polegniesz albo będziesz skazany na kopiowanie cudzych rozwiązań. Transformator jest w sumie dość fajnym i wygodnym źródłem sygnału właśnie z uwagi na elastyczność podłączania końców uzwojeń do czego akurat jest wygodniej.

  • Lubię! 1
Link do komentarza
Share on other sites

Tym razem tak zrobiłem, że spróbowałem sobie obliczyć to i tamto i wstępnie otrzymałem jakiś schemat i wyniki. Korzystając z podanych wskazówek przerzuciłem rezystor i dobrałem wartości na drodze wstępnych obliczeń i symulacji.

Myślę, że zrezygnuję z opcji transformatora z odczepem, gdyż tak czy owak muszę obrać wspólną masę, chociażby dla pomiaru prądu na rezystorze pomiarowym, a poza tym kombinowanie z tym wymagałoby zmiany Vref.

Wartości jakie obrałem dla napięcia to

R1 =1,5k

R4= 4k

R7=1k

Da to rezystancje widzianą ze strony przetwornika na poziomie 0,5k co według wykresu 5-2 z noty przetwornika powinno być optymalne.

Poza tym z obliczeń z twierdzenia thevenina otrzymałem w punkcie wspólnym obwodow 1,73 V składowej stałej i amplitudę napięcia przemiennego 1,66V. Da to zakres od -0.06 do 3,39 V.

Czyli teoretycznie powinno nie przekroczyć zakresu.

Obrałem 5 V zasilanie dzielnika i 3,2V (amplituda) transformatora.

To samo chciałbym przeliczyć dla pomiaru prądu jeśli oczywiście dobrze kombinuję.

Oczywiście uwzględnię też rezystancje uzwojenia transformatora, bo nie pozostanie bez znaczenia. Chciałbym tylko upewnić się czy idę dobrą drogą? Czy może dzielnik musi być symetryczny i dopasować mogę tylko rezystance szeregową transormatora?

Link do komentarza
Share on other sites

🙂

To zaczyna wyglądać dobrze.

Kilka uwag na gorąco: nie projektuj na styk. Jeżeli jakieś napięcie wychodzi poza zasilanie układu to to jest do zmiany. Zawsze zostawiaj sobie margines zakresów pomiarowych by jakiś fragment toru nie stał się wąskim gardłem. Lepiej żeby napięcie zmieniało się od +200mV do iluśtam w górę niż żeby zbyt blisko podchodziło do 0 lub do Vcc. Myśl też o tolerancjach elementów i zmianach tempraturowych. Ani 5V nie będzie 5.000V ani oporniki 1k nie będą miały 1.000k. Jeżeli zaczniesz robić sobie budżet błędów, to żeby spać spokojnie warto mieć ze 20% zapasu na każdym końcu zakresu. I tak kalibracja będzie robiona w procesorze ale cały tor pomiarowy musi funkcjonować od początku do końca liniowo. Jeżeli gdzieś coś się zacznie opierać o szynę zasilania/masy - jesteś w kropce a błąd przetwarzania urasta od razu do kosmicznych wartości. Poza tym to, że sygnał wyszedł poniżej masy lub powyżej zasilania jest zwykle cechą wykorzystywaną przez elementy zabezpieczające. Odpowiednie diody wtedy się otwierają i obcinają. Jeżeli dasz diody Schottky'ego to przy -0.15V już zaczyna coś płynąć. Normalny sygnał nigdy nie może wejść w ten obszar.

Nie, dzielnik nie musi być symetryczny. Ważne by układ opornikowy był liniowy od wejścia do wyjścia a tak przecież będzie. Nie znam się na tym Twoim pomiarze ale rozważ, czy składowa stała prądu płynąca przez uzwojenie wtórne transformatora nie zaszkodzi rdzeniowi lub jakoś nie zaburzy pomiarów? Będzie go trochę podmagnesowywać i przesunie pętlę histerezy ale pojedyńcze mA w energetyce to pewnie jak zamknięcie okna w czasie tornada - i tak nie masz już dachu. W każdym razie gdyby stały prąd był problemem to może lepiej użyć trafo wiszącego między dzielnikiem z jednej strony a wejściem ADC z drugiej? Ponieważ takie rozwiązanie nie pobiera prądu, to masz tam czysty pomiar napięcia i nie musisz się martwić o rezystancję uzwojenia.

  • Lubię! 1
Link do komentarza
Share on other sites

Na pewno podliczę wszytko tak aby ten margines zachować. Policzę wszytko według potrzeb a później wezmę się za programowanie.

Bardzo dziękuje za wszystkie rady, teraz patrzę na to zupełnie inaczej.

Link do komentarza
Share on other sites

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.