logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

[ATmega16][C] Zewnętrzne źródło napięcia odniesienia

Barbossa 07 Wrz 2010 10:16 2603 4
REKLAMA
  • #1 8484648
    Barbossa
    Poziom 10  
    Witam,

    mam trywialny wręcz problem, ale po przeczytaniu dokumentacji i dziesiątek różnych stron nie znalazłem odpowiedzi. Staram się stworzyć dokładniejszy (niż przy wykorzystaniu źródła wbudowanego) woltomierz na ATmega16. Po przeczytaniu kilkunastu tematów na tym forum zwątpiłem w przydatność źródła zewnętrznego przy przetwornikach 10-cio bitowych, ale skoro płytka jest już wytrawiona i polutowana...

    Problem polega na tym, że skoro napięcie wewnętrzne jest wyłączone:


    REFS0 i REFS1 ustawione na 0 to w jaki sposób, korzystając ze wrozu:

    ADC=Vin*1024/Vref

    czyli po przekształceniu:

    Vin=(float)(ADC*Vref)/1024;


    jak odnieść się przez Vref do pinu AREF ? Skoro REFS0 i REFS1 są wyłączone ?

    a nie chcę tego numerycznie w programie definiować
  • REKLAMA
  • #2 8484674
    dj_west
    Poziom 17  
    Rozumiem, że chcesz zmieniać napięcie odniesienia podczas działania programu... No cóż... Chyba nie masz wyjścia i musisz zdefiniować podzakresy napięcia referencyjnego w programie. Chcesz określić wartość napięcia na wejściu przetwornika nie znając wcześniej Vref? To się nie uda. ATmega nie mierzy napięcia na AREF, tylko mierzy na ADCx odnosząc je do AREF.
  • REKLAMA
  • #3 8484700
    Barbossa
    Poziom 10  
    Zgadzam się całkowicie. Nie chcę zmieniać napięcia odniesienia, tylko wyświetlić dobry wynik, a to się nie udaje ponieważ wyliczając:

    Vin=ADC/1024

    lub

    Vin=ADC;
    Vin=Vin>>10;

    wyświetla źle :/

    żeby wyświetlić dobrą wartość we wzorze muszę uwzględnić napięcie odniesienia z którego przetwornik korzysta, a do którego nie wiem jak się odnieść, bo o ile przy źródle wbudowanym nie ma problemu (mamy REFS1 i REFS0) to w przypadku zewnętrznego w C, czy C++ takiej referencji nie znalazłem.
  • REKLAMA
  • #4 8484761
    Andrzej__S
    Poziom 28  
    Nie bardzo rozumiem Twój dylemat. Skoro bity REFS1 i REFS0 masz ustawione na 0, wewnętrzne źródło napięcia odniesienia jest wyłączone i mikroprocesor korzysta z takiego napięcia odniesienia, jakie mu dostarczysz. Nie ma fizycznej możliwości, żeby procesor znał to napięcie, więc musisz je w programie "zdefiniować numerycznie" by móc obliczyć wartość zmierzoną przez ADC.
  • #5 8484797
    tmf
    VIP Zasłużony dla elektroda
    Dokładnie, jedyną możliwością jest podstawienie do w/w wzoru jako Vref napiecia źródła referencyjnego, które zostało wykorzystane. Pisząc program musisz wiedzieć jakie to napięcie ma wartość. Z drugiej strony jeśli wykorzystujesz dobrze stabilizowane i filtrowane napięcie zasilające procesor to dlaczego nie użyć go także jako napięcia referencyjnego? Nie będzie to kosmicznie dokładne oczywiście, ale w zwykłym woltomierzu to raczej bez znaczenia. No chyba, że budujesz jakiś kosmiczny przyrząd :) Ale to raczej nie na ADC z ATMegi :)
REKLAMA