Skocz do zawartości
qwee

Atmega32, 4 kanały ADC, błędy i dziwne odczyty.

Pomocna odpowiedź

Panowie

Kombinuje z pomiarem napięcia na potencjometrach z wykorzystaniem atmego32. 4 potencjometry podpięte do 4 kanałów ADC.

Schemat:

kod:

     ADMUX |= (1<<REFS0);
    ADCSRA |= (1<<ADEN) | (1<<ADPS1) |(1<<ADPS0) ;


       char tekst[30];
int a = pomiar_nastawy(0);
	int b = pomiar_nastawy(1);
	int c = pomiar_nastawy(2);
int d = pomiar_nastawy(3);
sprintf(tekst,"%d %d %d %d ",a,b,c,d);
uart_puts(tekst);

uint16_t pomiar_nastawy(uint8_t kanal)
{
ADMUX = (ADMUX & 0xF8)| kanal;
ADCSRA |= (1<<ADSC);
while(ADCSRA & (1<<ADSC));
return ADC;
}

Problem w tym, ze gdy wszystkie potencjometry są skręcone na 0 to wszedzie są mierzone 0, a gdy wszystkie mają wartość VCC to jest 1023. Jednak gdy kręce tylko jednym, wówczas jego napięcie zmienia się istotnie, lecz nie w całym zakresie - ok od 0 do 950 bitów. Mało tego w na innych kanałach też rejestrowane jest napięcie. Przyjmują one wartości mniejsze i są to dość stabilne wartości.

Czy orientuje się ktoś w czym może być problem? Nie sądze aby spadało napięcie źródła, bo na zasilaniu mam 2 kondensatory 2000uF, przez co po odłączeniu od napięcia atmega działa jeszcze kilka sekund.

Udostępnij ten post


Link to post
Share on other sites

1. Czym to wszystko zasilasz?

2. Jaka wartość potencjometrów?

3. Jak masz kwarc o dużej częstotliwości to masz za wysoko nastawione częstotliwości ADC.

Zmień ADCSRA na ADCSRA |= ( 1 << ADEN ) | ( 1 << ADPS2 ) | ( 1 << ADPS1 ) ;

To ośmiokrotnie zwolni konwersje.

Udostępnij ten post


Link to post
Share on other sites
1. Czym to wszystko zasilasz?

2. Jaka wartość potencjometrów?

3. Jak masz kwarc o dużej częstotliwości to masz za wysoko nastawione częstotliwości ADC.

Zmień ADCSRA na ADCSRA |= ( 1 << ADEN ) | ( 1 << ADPS2 ) | ( 1 << ADPS1 ) ;

To ośmiokrotnie zwolni konwersje.

1. Zasilam z transformatora 230/8 V -> mostek prostowniczy -> 7805 z kondensatorami 2x2000uF. Reszta połączeń jak na schemacie.

2. 10k. Ale to raczej nie ma znaczenia bo liczy się stosunek dzielnika.

3. Tak też zrobiłem.

Problem rozwiązałem. Zbyt szybko dokonywane były kolejne pomiary. opóźnienie pomiędzy nimi rozwiązało problem.

Udostępnij ten post


Link to post
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.


×
×
  • Utwórz nowe...