Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki



Teraz jest 3 gru 2024, o 13:42


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 9 ] 
Autor Wiadomość
PostNapisane: 19 kwi 2016, o 13:35 
Offline
Nowy

Dołączył(a): 10 mar 2016
Posty: 7
Pomógł: 0

Witam,
Mam taki problem, że po włączeniu zasilania do układu termistor osiąga nie wiadomo jaką wartość. Zrobiłem tradycyjnie przez dzielnik napięcia. Program jest bardzo prosty że po przekroczeniu wartości zadanej ma się zapalić dioda. Procek który używam to aTtiny85.

Kod:
#include <avr/io.h>
#include <util/delay.h>

uint16_t pomiar(uint8_t kanal);


int main(){
   DDRB |=(1<<PB3); // podlaczona dioda
   uint16_t a = 0;

   ADCSRA |= (1<<ADEN); // do pomiaru ADC mam podlaczone PB4
   ADCSRA |= (1<<ADPS2)|(1<<ADPS1)|(1<<ADPS0); // preskaler 128
   ADMUX |= (1<<REFS2)|(1<<REFS1); //wewnętrzne źródło 2,56V
   for(;;){
      a = pomiar(PB4);
      if (a >= 200 ) PORTB |= (1<<PB3);
      else PORTB &= ~(1<<PB3);
   }
}

uint16_t pomiar(uint8_t kanal){
   ADMUX = (ADMUX & 0b11111100)|kanal; //maskowanie
   ADCSRA |= (1<<ADSC);
   while(ADCSRA & (1<<ADSC));
   return ADCW;
}

Całe podłączenie:
Obrazek

Tak wpięty termistor NTC bez zasilania pokazuje około 5K. gdy podłącze zasilanie na mierniku wyskakuje 1 jako znak przekroczenia zakresu. Gdy jest niepodłączony termistor to ma wartość 47K.

Proszę o pomoc gdzie zrobiłem błąd.

Proszę o poprawienie kodów w poście stosując się do zaleceń:
topic14999.html --- > SunRIver



Ostatnio edytowano 21 kwi 2016, o 06:41 przez toffik353, łącznie edytowano 1 raz

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 kwi 2016, o 13:51 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 26 sty 2016
Posty: 1164
Lokalizacja: Kraków
Pomógł: 93

Hmm, nie wiem, czy dobrze myślę... spróbuj podłączyć NTC do GND, a do Vcc daj rezystor o rezystancji podobnej do czujnika (47k albo 51k). Myślę, że w ten sposób łatwiej będzie Ci zapanować nad wynikiem.
Aha, i jeszcze pomiędzy dzielnikiem a wejściem procka daj rezystor ograniczający prąd, na wszelki wypadek. I może jakiś kondensator filtrujący



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 kwi 2016, o 17:13 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 11 sty 2013
Posty: 1760
Pomógł: 196

Witam
Może najpierw zrób prawidłowe pomiary
toffik353 napisał(a):
Tak wpięty termistor NTC bez zasilania pokazuje około 5K. gdy podłącze zasilanie na mierniku wyskakuje 1 jako znak przekroczenia zakresu. Gdy jest niepodłączony termistor to ma wartość 47K.

...czy chcesz przez to powiedzieć, że mierzysz rezystancję przy włączonym zasilaniu?
Zmierz napięcie jakie panuje na PINB4.

Pozdr.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 kwi 2016, o 21:47 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 01 lis 2015
Posty: 1448
Lokalizacja: okolice Warszawa
Pomógł: 149

Witam
Ja tak myślę że zaczął bym oczywiście od pomiarów napięć na wejściu PB4,dobraniu odpowiedniego dzielnika - idąc tropem kolegów "Marhef" i "kicajek", oraz zmienił bym " wartość zadaną" na większą,
ponieważ 200 to niecałe 20% wartości max.1023 czyli z ref=2,56 około 0,5 V i może tę wartość przekraczasz .

Pozdrawiam Darek



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 21 kwi 2016, o 09:11 
Offline
Nowy

Dołączył(a): 10 mar 2016
Posty: 7
Pomógł: 0

Wszystko co zrobiłem działa na atmega32 bo przed chwilą sprawdzałem i na LCD wyświetlało mi wartość z przetwornika ADC a na attiny85 nic nie chce działać. Sądzę, że problem leży w kodzie programu i coś w nim brakuje żeby uruchomić przetwornik ADC w tym attiny. Problem jest taki, że nie wiem co w nim brakuje bo z noty katalogowej wszystkie rejestry ustawiłem.

Proszę o dokładne sprawdzenie mojego kodu.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 21 kwi 2016, o 13:08 
Offline
Nowy

Dołączył(a): 10 mar 2016
Posty: 7
Pomógł: 0

Dalej próbuję coś wykombinować ale na marne. Zauważyłem że mogę całkowicie odpiąć dzielnik napięcia od przetwornika ADC i gdy podnoszę płytkę testową to zaświeci się dioda. gdy jej nie ruszam to jest ok. Ruszałem wszystkie kabelki bo myślałem że coś nie łączy i nic. Gdy przesuwam po stole też nic się nie dzieje, jedynie jak podniosę o milimetr to zaświeci się dioda :) (akcelerometr jakiś).
Sprawdzałem na dwóch attiny85 i jest to samo.
Zmieniałem wartość od jakiej ma się zaświecić dioda i nic to nie daje.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 21 kwi 2016, o 13:48 
Offline
Użytkownik

Dołączył(a): 10 lip 2015
Posty: 334
Pomógł: 32

Zamiast "a = pomiar(PB4)" powinno być "a = pomiar(2)", jeżeli chcesz przeprowadzić pomiar z ADC2 (PB4). Tak jest w nocie katalogowej.

Aktualnie przeprowadzasz pomiar błędu offsetu wyjścia ADC2 (PB4) przy wzmocnieniu 1.


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 22 kwi 2016, o 08:30 
Offline
Nowy

Dołączył(a): 10 mar 2016
Posty: 7
Pomógł: 0

Dziękuję, teraz wszystko działa tak jak powinno. To była główna przyczyna problemu.

Mam jednak pytanie dlaczego tak się działo skoro zrobiłem maskowanie tych bitów, których nie chciałem używać? Nie maskowałem 2 najmłodszych bitów bo tylko te się zmieniają w zależności który wybiorę kanał (PB2, PB3, PB4, PB5) "ADMUX = (ADMUX & 0b11111100) | kanal ", kanał wybieram podając w nawiasach z którego portu korzystam "a = pomiar(PBx)".



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 22 kwi 2016, o 11:05 
Offline
Użytkownik

Dołączył(a): 10 lip 2015
Posty: 334
Pomógł: 32

Zapis PB4 odpowiada liczbie 4, a to jest równe 0b00000100. Zobacz na tabele trybów ADC. Aby wykonać pomiar z PB4 trzeba wpisać 0b00000010, co odpowiada liczbie 2.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 9 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 2 gości


Nie możesz rozpoczynać nowych wątków
Nie możesz odpowiadać w wątkach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Skocz do:  
cron
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO