Skocz do zawartości

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


qwee

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.

Link do komentarza
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.

Link do komentarza
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.

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.