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



Teraz jest 24 lut 2025, o 10:19


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 7 ] 
Autor Wiadomość
PostNapisane: 11 cze 2014, o 11:30 
Offline
Nowy

Dołączył(a): 23 kwi 2014
Posty: 2
Pomógł: 0

Witam serdecznie!
Postanowiłem zrobić termostat z LCD na czujniku DS18B20. Zmontowałem układ na płytce stykowej (sporządzając wcześniej schemat :) ) i z pomocą książki i CD Pana Mirka odpaliłem magistrale 1WIRE :)
Chciałbym aby za pomocą trzech przycisków dało się nastawić "temperature zadana" Np. trzymając S1 (nastaw) operujemy przyciskami S2 (+) i S3 (-) następnie puszczamy przycisk S1.
Grzałką jest dioda LED która ma się zapalać po spadku temp i wyłączać po jej osiągnięciu (czujnik nagrzewam przez dotkniecie palcem). Później może wzbogacę program o jakaś nastawialną histerezę, ale na razie nie potrzeba.

W tej chwili odczytuje mi ładnie temp, ale nie wiem jak zapisać wartość temperatury i zastosować do niej jakąś arytmetykę. Próbowałem również aby trzymając przycisk S1(nastaw) wyświetlacz
wyświetlał mi inny tekst, ale migotał i był mało czytelny :(
Uda się coś pomóc? Czy jestem zbyt początkujący?

Oto mój schemacik:
Obrazek

I main Pana Mirka który przerobiłem pod siebie:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



Ostatnio edytowano 12 cze 2014, o 11:13 przez nowak90, łącznie edytowano 1 raz

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 11 cze 2014, o 15:18 
Offline
Użytkownik

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

Pomógł: 168

Odnośnie nastawiania temperatury zadanej, ja rozbudowałbym obsługę drgań styków pokazaną przez Pana Mirka na jego blogu mniej więcej w taki sposób:

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


okomentowałem kod, nie kompilowałem ani nie sprawdzałem, to tylko idea. Wydaję mi się że trafna. Być może koledzy z forum polecą Ci lepszą metodę obsługi klawiszy :)

W programie musisz jakoś uwzględnić co chcesz w danej chwili pokazywać. Podowiem Ci tak:

Jak S1 nie wciśnięty jakaś flaga = 0
Jak S1 wciśniety jakaś flaga = 1

jak jakaś flaga = 0 to rób to co masz robić, wyświetlaj temperatur itd.
jak jakaś flaga = 1 to pokazuje na wyświetlaczu aktualnie nastawioną temp i S2 albo S3 ją zwiększaj

trzeba troszkę pomyśleć:)

do funkcji od wyswietlania temperatury możesz dopisać że np:

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


a później sprawdzać czy temperatura nastawiona jest mniejsza od odczytanej i:
jeżeli tak to DIODA ON
jeżeli nie to DIODA OFF

oczywiście nie uwzględniam tutaj czy temp jest ujemna czy dodatnia. o tym informuje Cie zmienna subzero którą też możesz wykorzytsać w warunku do gaszenia i zapalnia diodełki:)

to takie moje rozkminy na szybko. Może Ci coś w głowie zaświta:)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 11 cze 2014, o 16:25 
Offline
Nowy

Dołączył(a): 23 kwi 2014
Posty: 2
Pomógł: 0

Dziękuje bardzo za pomoc. Wiem już chociaż gdzie mam braki i jak to powinno działać. Już się biorę za czytanie o flagach, przerabianie i testowanie.
Będę informował o postępach lub jakiś problemach :)
Nie takie hop siup ten termostat :P



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 23 sie 2014, o 18:15 
Offline
Nowy

Dołączył(a): 21 sie 2014
Posty: 1
Pomógł: 0

Witam,
to mój pierwszy post na forum więc serdecznie wszystkich witam. :)

Mnie do stworzenia termostatu zmusiła sytuacja. Okazyjnie zakupiłem nastoletnią chłodziarkę przemysłową Vestfrost, taka sklepowa lodówka na napoje. Okazało się, że temperatura chłodzenia jest zbyt niska i nawet wbudowany termostat z regulacją nie był w stanie zapewnić oczekiwanych warunków pracy - od 10 do 15°C. Poza tym wentylator wymuszający obieg powietrza pracuje ciągle, co uważam za niedopuszczalne - z uwagi na hałas oraz nieefektywną wymianę powietrza (i ciepła). Stąd pomysł na termostat oparty o mikrokontroler.

Kiedyś miałem styczność z BASCOMem, choć na co dzień działam w PHP. Znalazłem stronę Pana Mirka, kursy Eagla, jeszcze jakieś blogi o mikrokontrolerach. Zamówiłem na aukcji wyświetlacz lcd 128x64 na płytce z Atmega8, wyprowadzeniami do DS18B20 i goldpinami do programatora (ok. 60 zł + wysyłka). Nawet wgrany był wsad pokazujący temperaturę z 4 czujników Dallasa - na początek starczy, czego chcieć więcej? :) Aha... 4 microswitche też są.

Założyłem, że program ma realizować następujące funkcję:
- sprawdzanie temperatury w lodówce,
- włączanie/wyłączanie agregatu w odpowiednim momencie,
- włączanie/wyłączanie wentylatora z opóźnieniem w stosunku do agregatu,
- wyświetlanie temperatury wraz z rysowaniem wykresu (tyle pikseli w lcd nie może się marnować ;)),
- regulacja temperatury maksymalnej i minimalnej (włączającej i wyłączającej agregat),
- regulacja opóźnienia wł/wył. wentylatora,
- wyświetlanie stanu pracy (czy włączony agregat/wiatrak, temp. min, max, aktualna).

Do obsługi wyświetlacza wykorzystałem biblioteki u8g. Debouncing klawiszy znalazłem na blogu o mikrokontrolerach. Szybko okazało się, że 8 kB pamięci to wcale nie jest dużo i dały znać o sobie moje braki w znajomości C. Obecnie program jest "na styk" a chciałbym go jeszcze rozbudować (automatyczna histereza, zapis ustawień w eeprom). Z nieba spadł mi kurs C++ kolegi Mokrowski, po którym jeszcze szczęki nie mogę znaleźć - praca jaką włożył w przygotowanie tutoriali iście tytaniczna. Przyznam bez bicia, że zarejestrowałem się tylko co by te listingi zobaczyć :). Mam nadzieję, że po przepisaniu programu do C++ i uporządkowaniu wszystkiego, wywalczę jakiś wolny kB może dwa :D.

Od razu chciałbym zaznaczyć, że w C jestem początkujący. Ostatni program w tym języku pisałem jakieś 10 lat temu i to na PC. Z uC styczności nie miałem chyba jeszcze dłużej, a i tak był to BASCOMowy Basic. Stąd też prośba - gdyby ktoś z bardziej obeznanych kolegów wychwycił jakieś herezje czy kombinacje alpejskie - będę bardzo wdzięczny za uwagi.

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


Obecnie próbuję przetrawić wcześniej wspomniany kurs C++ i przepisać wszystko od nowa, tak jak się to powinno w cpp robić. A propos estetyki kodu - co sądzicie o Ruby w uC? Zawracanie głowy czy warte spróbowania?
Zdaje się, że też wpadłem w ten mikrokompot ;).

Pozdrawiam

Obrazek



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 23 sie 2014, o 18:58 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 17 sie 2013
Posty: 3797
Lokalizacja: Grudziądz
Pomógł: 143

Bardzo fajny projekcik i lcd godne uwagi.



Namazane ze smarta.

_________________
Usługi druku przestrzennego - www.drumik.pl



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 10 sty 2016, o 22:27 
Offline
Nowy

Dołączył(a): 11 lis 2015
Posty: 12
Pomógł: 0

Witam,

Zamiast zakładać własny temat, uznałem że kontynuuję ten, bo bardzo dobrze oddaje i moją sytuację.
Atmega88PA-PU, USART działa i korzystam w celu debug'u. Wykorzystany termometr to DS18S20Z+ od Maxima.
Atmega działa póki co na 1MHz.

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


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


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


Kod powinien:
-na samym początku przez USART przesłać napis [DZIAŁA]
-po odebraniu sygnału przez USART odpalić pętlę mierzenia temperatury [DZIAŁA]
-wypisać zmierzoną temperaturę [DZIAŁA]
-temperatura mogłaby być poprawna...[NIE DZIAŁA]

Niestety w RealTermie dostaję informację, że temperatura wynosi 3 stopnie...siedzę w podkoszulku i zapewniam Was, że tak nie jest. Płytka jest niedaleko wiatraka od komputera...ale nie dość, że nie wieje centralnie na nią, to jeszcze temperatura również się nie zgadza :P.

Wrzucam jeszcze schemat gdzie widać jak podłączona jest Atmega do zasilania oraz termometru:
Obrazek

------------------------ [ Dodano po: 57 minutach ]

mkk13 napisał(a):
Witam,

Zamiast zakładać własny temat, uznałem że kontynuuję ten, bo bardzo dobrze oddaje i moją sytuację.
Atmega88PA-PU, USART działa i korzystam w celu debug'u. Wykorzystany termometr to DS18S20Z+ od Maxima.
Atmega działa póki co na 1MHz.

Kod wygląda następująco:
(...)

Problem rozwiązałem. O dziwo za szybko zgarniałem temperaturę i termometr nie wyrabiał z zapisem.
Jako że nie jest zasilany pasożytniczo, to mogę nasłuchiwać na porcie, aż oznajmi kiedy zakończy konwersję temperatury.
Zmiana w pliku ds18b20.c:
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: 11 sty 2016, o 18:40 
Offline
Nowy

Dołączył(a): 11 lis 2015
Posty: 12
Pomógł: 0

Podłączyłem ekran LCD PCD8544.
Podłączenie wygląda tak:
Obrazek
PCD8544 podłączone:
RST - RES
CE - SCE
DC - D/C
DIN - SDIN
CLK - SCLK
VCC - VDD
BL - VOUT
GND - GND

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

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

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


Niestety po odpaleniu Atmegi na ekranie nic się nie dzieje - a powinien widnieć elegancki ekranik.
Kod ekraniku:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Jakieś propozycje co można sprawdzić?



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 3 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