Elektroda.pl
Elektroda.pl
X
Elektroda.pl
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

XMEGA - pomiar pojemności

25 Lis 2017 13:40 774 23
  • Poziom 16  
    Witam,
    Chciałbym zrobić miernik pojemności .
    Zdecydowałem się mierzyć czas ładowania tej pojemności.
    Ponieważ pojemności są rzedów 10-100pF więc czas ich ładowania będzie krótki.
    Wobec czego postanowiłem zastosować procesor ATXMEGA32E5 który będzie taktowany zegarem 32MHz.
    Zdecydowałem się mierzyć czas ładowania tej pojemnosci od napięcia około 1V do 9V.
    Zastosuje więc dwa komparatory.
    I teraz moje pytanie.
    Jak przygotować płytkę, to znaczy pod które wejścia doprowadzić te dwa sygnały ( startujący i zatrzymujący pomiar), aby wszystko wykonywało się sprzętowo?
    Czyli - przekroczenie napięcia 1V, komparator wysyła sygnał, procesor startuje timer.
    Przekroczenie napięcia 9V, drugi komparator wysyła sygnał Stop. Procesor zatrzymuje timer i kopiuje jego wartość do zmiennej.
    Oczywiście zależy mi na tym aby był to timer co najmniej 16 bitowy.
    I drugie pytanie, jak logicznie skomponować program, aby wszystko właśnie sie tak odbywało sprzętowo.
  • Użytkownik usunął konto  
  • Poziom 16  
    Wiem, że zależy od rezystora.
    Ale liczyłem i dla tak małych pojemności wychodzi mi, że rezystor ładujący powinien mieć wartości rzędu kilkudziesięciu mega omów.
    Takich rezystorów boję się użyć, bo wtedy wszelkie upływności na elektrodach będą zabójcze.
    Robię to jako czujnik wilgoci drewna, więc może się zdarzyć, że pojawi się woda na elektrodach.
    Napięcie specjalnie tak ustawiłem wysoko, aby wydłużyć czas pomiaru.
    A skoro napięcie jest wieksze niz 3,3V zatem nie mogę zastosować komparatora w procesorze.
  • Użytkownik usunął konto  
  • Pomocny post
    Moderator Mikrokontrolery Projektowanie
    @Piotrus_999 No ale jaki dzielnik napięcia zastosujesz? Przecież, żeby on istotnie nie obciążał źródła, czyli tego ładowanego kondensatora, to musiałyby to być setki megaomów (przy założeniu, że ładujemy przez rezystor rzędu megaoma). A i sam prąd polaryzacji wejścia komparatora w XMEGA będzie spory. Jeśli to miałby być pomiar przez określenie czasu ładowania, to jakiś opamp z wejściem J_FET będzie potrzebny.
    Pytanie brzmi - dlaczego autor nie chce zrobić prostego w realizacji generatora, w którym C przestawia częstotliwość?
  • Pomocny post
    Użytkownik usunął konto  
  • Pomocny post
    Poziom 16  
    Pomiar czasu ładowania przez rezystor to chyba nie najlepszy pomysł. Trze by dac źródło prądowe aby prąd ładowania był liniowy. Prościej jest mierzyć częstotliwość. Widziałem kilka rozwiązań z NE555.
  • Użytkownik usunął konto  
  • Poziom 16  
    Czy wedlug Was pomysl aby zrobic taki generator na ukladzie 555 jest dobry? Nie bedzie problemow z takimi malymi pojemnosciami? A moze zrobic generator na tranzystorze, albo na bramkach?
  • Pomocny post
    Poziom 16  
    Marek_Gorecki napisał:
    Czy wedlug Was pomysl aby zrobic taki generator na ukladzie 555 jest dobry? Nie bedzie problemow z takimi malymi pojemnosciami? A moze zrobic generator na tranzystorze, albo na bramkach?

    Tranzystory czy bramki, to jakies tam kłopoty. Użyj multiwibratora 9NE555, 74xx123, lub podobnego). Naturalnie bez kalibracji się nie obedzie. NE555 jest o tyle fajny, ze częstotliwość jego pracy jest mało zależna od napiecia zasilania. Oczywiście masz też 4046 (PLL więc ma VCO - kalibracja napięciem to fajna opcja) 4047.

    Co do małych pojemności i NE555 (a sa lepsze wersje). Kiedys zbudowałem miernik pojemności na NE555 kilkunastu TTL. Rozdzielczośc 0,1nF uzyskasz. Wtedy, problemem były pojemności własne i odejmowanie ich na licznikach (trzeba by dać 74193, które ciężko było kupić, a nie 7490) więc trymerem ustawiało sie 10pF a po podłaczeniu mierzonaj pojemności odejmowało te 10pF, teraz zrobisz to programowo.

    Co do:
    Cytat:

    Policzenie logarytmu naturalnego nie jest specjalnie trudne

    Zależy co tam jeszcze ta Xmega ma robic, trzeba bowiem pamiętać, że nie jest ona super szybka (architektura 8-bit) no i nie ma FPU.
  • Moderator Mikrokontrolery Projektowanie
    @Marek_Gorecki A nie możesz zrobić generator na wbudowanych w XMEGA komparatorach? Przecież są to normalne komparatory i nie ma powodu, aby stosować elementy zewnętrzne. W dodatku możesz wyjście z wbudowanego komparatora zastosować bezpośrednio do sterowania timerem mierzącym częstotliwość.

    Dodano po 4 [minuty]:

    @es2 Po co babrać się w zewnętrzną analogówkę, jeśli używa się sensownego mikrokontrolera, który ma wszystko co potrzeba? Stabilność napięciowa nie jest istotna, bo mamy ADC i można sobie zawsze dokładne napięcie zmierzyć, można korzystając z multipleksera analogowego, wbudowanego w MCU zrobić automatyczną kalibrację, z kilkoma wzorcowymi pojemnościami itd. Minęła już prawie druga dekada XXI wieku, nie ma więc sensu wracać do rozwiązań z przed 40 lat :)

    Dodano po 5 [minuty]:

    es2 napisał:
    Co do:

    Cytat:

    Policzenie logarytmu naturalnego nie jest specjalnie trudne


    Zależy co tam jeszcze ta Xmega ma robic, trzeba bowiem pamiętać, że nie jest ona super szybka (architektura 8-bit) no i nie ma FPU.


    Skoro piszemy o pomiarze pojemności, to użytkownik raczej kikadziesiąt tysięcy razy na sekundę nie będzie jej zmieniał. Ludzie przy pomocy tysiące razy wolniejszego MCU wylądowali na Księżycu,..
  • Poziom 16  
    tmf napisał:
    Skoro piszemy o pomiarze pojemności, to użytkownik raczej kikadziesiąt tysięcy razy na sekundę nie będzie jej zmieniał

    Ale moze w tym czasie chce robic 1e6 innych czasochłonnych operacji i bez FPU nie bedzie mozna tego zrobic w zadanym czasie. Sprzęto może mu pomóc. Może ten pomiar pojemności to np wilgotność powietrza a jeszcze przez USB, ETH i co tam jeszcze potrzeba w procesach technologicznych.
  • Użytkownik usunął konto  
  • Poziom 16  
    Piotrus_999 napisał:
    No to sobie zrobi tabelę we flash. I już problem rozwiązany

    Dla int, ok to tylko 65536 a dla long? O zmiennoprzeciwnkowym formacie nie wspomnę. Niby AC ma tylko 12 bit, ale jak tablic potrzeba 50? Cięzko powiedzieć co z tymi pomiarami chce robic, jak tylko zmierzyć pojemność i wyświetlić, to na Arduino to zrobi.
  • Użytkownik usunął konto  
  • Poziom 16  
    Dzieki koledze ES2 zdecydowałem się na zastosowanie któregoś z układów NE555, 4046 lub 4047. Moje pytanie brzmi: Jeśli mierzona wartość to 30-200pf to który z tych układów polecacie najbardziej?
  • Pomocny post
    Poziom 16  
    Marek_Gorecki napisał:
    Dzieki koledze ES2 zdecydowałem się na zastosowanie któregoś z układów NE555, 4046 lub 4047. Moje pytanie brzmi: Jeśli mierzona wartość to 30-200pf to który z tych układów polecacie najbardziej?

    Ja bym wybrał 74HC4046. Może pracować z dużymi częstotliwościami (zdaje sie 18MHz, std seria 4xxx przy 5V to 5MHz, przy 3V3 jeszcze mniej). To oznacza małe pojemności możliwe do użycia. Ma VCO, co może byc fajna opcja w kalibracji, moze to oczywiscie robic przeliczając wynik pomiaru, w/g mnie VCO jest prostsze w użyciu (Xmega ma CA).
  • Moderator Mikrokontrolery Projektowanie
    Marek_Gorecki napisał:
    Dzieki koledze ES2 zdecydowałem się na zastosowanie któregoś z układów NE555, 4046 lub 4047. Moje pytanie brzmi: Jeśli mierzona wartość to 30-200pf to który z tych układów polecacie najbardziej?


    Masz wbudowany w procesor generator, który jest w pełni zintegrowany z timerami, a ty upierasz się, żeby zastosować, wcale nie lepsze, układy zewnętrzne? Po co? Po to się bierze mikrokontroler, aby przy jego pomocy zrealizować wszystko co się da.
  • Poziom 16  
    tmf napisał:
    Marek_Gorecki napisał:
    Dzieki koledze ES2 zdecydowałem się na zastosowanie któregoś z układów NE555, 4046 lub 4047. Moje pytanie brzmi: Jeśli mierzona wartość to 30-200pf to który z tych układów polecacie najbardziej?


    Masz wbudowany w procesor generator, który jest w pełni zintegrowany z timerami, a ty upierasz się, żeby zastosować, wcale nie lepsze, układy zewnętrzne? Po co? Po to się bierze mikrokontroler, aby przy jego pomocy zrealizować wszystko co się da.


    A tak w swnsie ułatwienia pracy, AVR (timy167) ma źródło pradowe, jak jest w ARM? (o Xmega nie pytam, bo wydaje mi się, ze szkada na nie czau).
  • Moderator Mikrokontrolery Projektowanie
    @es2 Źródło prądowe w ATTiny167 to dużo powiedziane. W XMEGA też jest, nawet chyba można wybierać dwa prądy (co i tak jest postępem w stosunku do tego ATTiny), w ARM pewnie zależy od procka, przecież to w tej chwili pewnie mocno ponad tysiąc różnych modeli. Pytanie po co?
  • Poziom 16  
    tmf napisał:
    @es2 Źródło prądowe w ATTiny167 to dużo powiedziane. W XMEGA też jest, nawet chyba można wybierać dwa prądy (co i tak jest postępem w stosunku do tego ATTiny), w ARM pewnie zależy od procka, przecież to w tej chwili pewnie mocno ponad tysiąc różnych modeli. Pytanie po co?

    Po to aby nie trzeba zewnętrzych układów (to mi się tu zarzucało, że po co). Ja akurat szukam rozwiązania dla 10mA, ale pewnie dużych szans w uC nie ma. Tiny167 ma 100uA a to dla 100R to troche za mało. Niektóre UC moga pracowac z zewnętrzym Vref ale też są pewne granice (np Vre do 100mV a nie 10). Dlatego czasem wspomagam się zewnętrzym układem i to zaproponowałem autorowi. Nie zawsze program załatwi wszystko, bywa, ze jednak trzeba dac zewnętrzy komparator czy wzmacniacz operacyjny.
  • Moderator Mikrokontrolery Projektowanie
    Przy wbudowanych w MCU źródłach prądowych mniej by mnie martwiła ich wydajność, a bardziej tolerancja. Gdyby to było pewne 100 uA, to nawet pomiar na 100 omowym rezystorze byłby bezpośrednio możliwiy. Przy 12-bitowym ADC mamy rozdzielczość ok. 0,24 mV. Z oversamplingiem wyciśnie się sporo więcej. Oczywiście układy zewnętrzne są czasami potrzebne, ale warto je stosować wtedy, gdy MCU nie daje z czymś rady, a nie po to, żeby dublować dostępne w MCU podsystemy.
  • Poziom 16  
    tmf napisał:

    Masz wbudowany w procesor generator, który jest w pełni zintegrowany z timerami, a ty upierasz się, żeby zastosować, wcale nie lepsze, układy zewnętrzne? Po co? Po to się bierze mikrokontroler, aby przy jego pomocy zrealizować wszystko co się da.


    Nie bardzo rozumiem o którym generatorze wbudowanym w procesor mówisz?
    Czy sa one też w AVRach?
  • Pomocny post
    Moderator Mikrokontrolery Projektowanie
    @Marek_Gorecki Przecież jeśli masz komparator i masz dostępne wejścia, a także wyjście (w każdym AVR, w tym w XMEGA, możesz przepiąć wyjście na pin IO MCU), to możesz ten komparator wykorzystać jako generator. Całkiem to ładnie działa, w dodatku komparatory w XMEGA są dosyć szybkie. Wyjście przez event system sobie routujesz na timer, a w E5 timer ci zmierzy i szerokość impuslu i wypełnienie i częstotliwość przebiegu. Jako, że masz do dyspozycji prekalibrowany zegar, więc nawet kwarc nie będzie konieczny (o ile dokładność częstotliwości ok. 1 % ci wystarcza). Główny zegar MCU można automatycznie kalibrować z zegarem precyzyjnym przy pomocy wbudowanego DFLL.