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



Teraz jest 16 sty 2026, o 17:42


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 7 ] 
Autor Wiadomość
PostNapisane: 29 paź 2017, o 11:15 
Offline
Użytkownik

Dołączył(a): 03 paź 2017
Posty: 39
Pomógł: 0

Witam, piszę pewien program, który będzie miał za zadanie dokonywać pomiaru prądu, napięcia i temperatury w zasilaczu. Na podstawie temperatury będzie zrobione sterowanie wiatrakiem. Jak na razie udało mi się zrobić pomiar napięcia i prądu, ale mam pewien problem z pomiarem temperatury. Jeśli chodzi o sposób połączenia DS18B20 do mikroprocesora to jest dobrze podłączone, bo wgrywałem na Atmegę8 program z BB i działa dobrze, ale w moim programie z tym pomiarem temperatury coś jest nie tak.

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


A tu schemat:
Obrazek

Fragment kodu programu w pętli głównej, gdzie sprawdzana jest flaga tyknięcia co 1s wydaje mi się, że też działa poprawnie. Sprawdziłem to na migającej diodzie, wpisując taki fragment kodu:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 29 paź 2017, o 12:34 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 09 gru 2014
Posty: 1540
Pomógł: 269

avrLearner napisał(a):
w moim programie z tym pomiarem temperatury coś jest nie tak.


Nie napisałeś niestety co dokładnie jest nie tak.
Wygląda na to, że co 100ms kasujesz ekran i wyświetlasz napięcie i prąd.
Temperaturę wyświetlasz co 3 sekundy, więc nie zdążysz jej zobaczyć. ;)
Wywal po prostu tą linijkę: lcd_cls();, a kasowanie zrób już w konkretnych funkcjach do wyświetlania napięcia i prądu, na przykład tak: lcd_str(" ");


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 29 paź 2017, o 12:50 
Offline
Użytkownik

Dołączył(a): 03 paź 2017
Posty: 39
Pomógł: 0

Dzięki za radę, tak właśnie zrobiłem i działa.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 29 paź 2017, o 17:07 
Offline
Użytkownik

Dołączył(a): 03 paź 2017
Posty: 39
Pomógł: 0

Mam kolejne pytanie. Chciałbym zrobić tak, że gdy temperatura wzrośnie powyżej jakiejś wartości - np. 50 st. C, to załącza się wiatrak. W tym celu podaję stan wysoki na PB0. I tu mam pytanie. Jak sprawdzić czy temperatura jest większa od 50 st. C?

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


Coś takiego nie działa. W przypadku pomiaru napięcia, wartość zmierzona jest zapisywana w rejestrze ADCW, a jak jest tutaj? Nie rozumiem tego zbytnio



Ostatnio edytowano 29 paź 2017, o 20:06 przez avrLearner, łącznie edytowano 1 raz

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 29 paź 2017, o 19:03 
Offline
Użytkownik

Dołączył(a): 19 sty 2014
Posty: 83
Pomógł: 2

PB1 |= (1<<PB0);
Powinno być PORTB |= (1<<PB0);



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 29 paź 2017, o 19:49 
Offline
Użytkownik

Dołączył(a): 03 paź 2017
Posty: 39
Pomógł: 0

To akurat pisałem z palca na szybko. Bardziej mi chodzi o wytłumaczenie, jak zrobić warunek z tą temperaturą :)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 29 paź 2017, o 21:50 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 09 gru 2014
Posty: 1540
Pomógł: 269

Czy ustawiłeś PB0 jako wyjście?
Mam tutaj na myśli:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

W którym miejscu w kodzie wstawiłeś tą linijkę:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

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

Warto pomyśleć nad zastosowaniem histerezy. ;)
Na przykład:
http://forum.atnel.pl/post195278.html?hilit=histereza#p195278



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: 7 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 4 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