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



Teraz jest 28 mar 2024, o 17:42


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 4 ] 
Autor Wiadomość
PostNapisane: 25 maja 2015, o 22:14 
Offline
Nowy

Dołączył(a): 25 maja 2015
Posty: 1
Pomógł: 0

Witam,
Chciałbym za pomocą Arduino stworzyć regulator temperatury powietrza, który będzie sterował pracą grzałki. Sterowanie będzie odbywało się w cyklu np 2s, w zależności od obliczonego sygnały sterującego grzałka będzie się włączać i wyłączać (np. syg. sterujący 50% - 1s grzałka on, 1s off). Do pomiaru temperatury wykorzystuję czujnik ds18b20. Problem pojawia się w momencie odczytywania wartości temp - 750ms odczytu zakłóca pracę całego cyklu. Pytanie, czy istnieje programowy sposób obejścia problemu? Bo z tego co się domyślam sprzętowym rozwiązaniem mogłaby być wymiana czujnika na analogowy (mogę się oczywiście mylić, dlatego prosiłbym o komentarz :P) - a w przypadku takiego rozwiązania, jaki czujnik byście polecili? Zakres 0 -40' C, rozdzielczość może być 0,5', i możliwie najszybszy czas reakcji na zmianę temperatury. Za wszelkie wskazówki będę wdzięczny.

A tutaj kod z obecnym szkieletem projektu:

Składnia: [ Pobierz ] [ Ukryj ]
język cpp
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 26 maja 2015, o 07:05 
Offline
Użytkownik

Dołączył(a): 06 maja 2014
Posty: 415
Lokalizacja: Kraków
Pomógł: 26

Oczekujesz te 750ms na pomiar?
Najlepiej zrobić to w przerwaniu jakimś - w momencie, gdy pomiar zostanie dokonany, odczytaj jego wartość.

Ewentualnie można zmienić rozdzielczość przetwornika ds18b20 (datasheet, strona 8). Przy wymaganej przez Ciebie 0,5stopnia rozdzielczość może być mniejsza od 12 bit, a więc i czas się skraca.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 26 maja 2015, o 07:29 
Offline
Użytkownik

Dołączył(a): 22 sty 2014
Posty: 1806
Zbananowany użytkownik

Pomógł: 168

Użyj czujnika LM35. Ma on dokładność 0,5 stopnia i czas reakcji pewnie taki jak DS18B20. No i jest analogowy więc wartość możesz zczytywać ciągle. Z tego co widziałem w tej bibliotece w tej funkcji:
Składnia: [ Pobierz ] [ Ukryj ]
język cpp
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

jest pętla while która mieli się bez przerwy aż do dokonania konwersji. Możesz usunąć tą linijkę i sprawdzać w jakimś if'ie w programie czy dokonała się konwersja.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 26 maja 2015, o 08:07 

Pomógł: 0

paradaise1 - drugi mały procesor tylko do obsługi czujników ?



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

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 0 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:  
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO