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



Teraz jest 25 kwi 2024, o 06:40


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 24 ] 
Autor Wiadomość
PostNapisane: 9 lip 2012, o 08:39 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 15 cze 2012
Posty: 420
Lokalizacja: Poznań
Pomógł: 5

Na początek przygody z C na ATB postanowiłem sobie zrobić termostat.
No więc spiąłem sobie DS18x20 i LCD i diodki i zacząłem się bawić ... i wszystko byłoby OK dopóki nie zapragnąłem mieć jak to w porządnym termostacie wygląda histerezy. No bo wcześniej to sprowadza się to tylko do tego jednego warunku:

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


No, ale z histerezą już nie było (u mnie) tak prosto i nie udało mi się tego ominąć nie dodając kolejnej zmiennej. Oczywiście całość z założenia działa już prawidłowo, więc tutaj właściwa część programu sterująca pracą TERMOSTATU (można śmiało korzystać), ale moim zdaniem (tak na oko) na pewno można to zrobić jakoś bardziej elegancko niż ja to zrobiłem ... tylko nie mogę wymyślić jak :)

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


PYTANIE/ZADANIE 4 brzmi :)

Czy można jakoś rozwiązać ten problem nie korzystając z dodatkowej flagi "alarm" itp. Tzn napisać tak warunki aby korzystać tylko z tych trzech zmiennych:
temp_aktualna
temp_progowa
temp_histerezy

Bardzo mnie to ciekawi 8-)

Na osoby, które rozwiążą ŁAMIGŁÓWKĘ nie czekają żadne nagrody :) Rozwiązania można nadsyłać do ... 1 stycznia 2013 :)

Pozdrawiam! :)

DO MODERATORA:
Może lepiej umieścić tego w:Strona główna » Strona główna forum » PROGRAMOWANIE » Język C dla AVR

_________________
Wysłane z nowego ATB 1.05beta + ATB ETHERNET



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 lip 2012, o 09:02 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 paź 2011
Posty: 8583
Pomógł: 337

OD Moderatora:

Zastanowię się co zrobić z twoim postem :)

OD Sun-a

Oczywiście że można nawet w mojej wytrawiarce sprawdzam 2 warunki i nimi steruję grzałką

- czyli czy osiągnięto zadana temp .... po prostu podglądam sobie to co idzie na LCD
- czy spadła poniżej o xxx stapni .... tu również podglądam to co idzie na LCD

i jeśli wartość zmiennej np. x = wartości b to grzałka jest włączana i grzeje dokąd x nie osiągnie wartości c

tak w skrócie :)

_________________
[b]San Escobar! Patria mia! Tu eres como la salud.[/b]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 lip 2012, o 09:11 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 14 lis 2011
Posty: 534
Lokalizacja: Mierzyn
Pomógł: 9

Sun sam robiles wyrtawiareczke ? Przymierzam sie do zrobienia. Masz jakies doswiadczenie ? Co polecasz :)

_________________
pozdrawiam
Jachu



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 lip 2012, o 09:41 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 paź 2011
Posty: 8583
Pomógł: 337

tak sam robiłem jest tu na forum wszystko :)
topic863.html

_________________
[b]San Escobar! Patria mia! Tu eres como la salud.[/b]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 lip 2012, o 09:49 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 14 lis 2011
Posty: 534
Lokalizacja: Mierzyn
Pomógł: 9

SunRiver napisał(a):
tak sam robiłem jest tu na forum wszystko :)
topic863.html


UU ale ze mnie "gapa" ;) Znalazlem thx wielkie :)

_________________
pozdrawiam
Jachu



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 lip 2012, o 15:05 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 15 cze 2012
Posty: 420
Lokalizacja: Poznań
Pomógł: 5

SunRiver napisał(a):
Oczywiście że można nawet w mojej wytrawiarce sprawdzam 2 warunki i nimi steruję grzałką

- czyli czy osiągnięto zadana temp .... po prostu podglądam sobie to co idzie na LCD
- czy spadła poniżej o xxx stapni .... tu również podglądam to co idzie na LCD

i jeśli wartość zmiennej np. x = wartości b to grzałka jest włączana i grzeje dokąd x nie osiągnie wartości c

tak w skrócie :)
Trochę nie rozumiem ... ten drugi warunek jest zagnieżdżony w tym pierwszym?
Ty histerezę chyba rozwiązałeś nieco inaczej tzn masz jakby temp min i max i sprawdzasz gdzie aktualnie jesteś, tak?

w pseudo kodzie tak:
min=30;
max=40;
if (temp < temp_min) grzej;
if (temp > temp_max) nie grzej;

Ale coś mi tu jednak nie gra, bo jeśli założymy wartości jak powyżej to przy 31' odłączy się grzałka... no chyba że rzeczywiście źle zrozumiałem Twój opis warunków. Jakbyś mógł słoneczko to rozpisz to chociaż jako pseudo kod używając "zrozumiałych" zmiennych a nie a b c x xx itp :)

_________________
Wysłane z nowego ATB 1.05beta + ATB ETHERNET



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 lip 2012, o 17:27 
Offline
Użytkownik

Dołączył(a): 15 lut 2012
Posty: 344
Lokalizacja: Bydgoszcz
Pomógł: 11

Kolego NIEBO!, a nie myślał kolega nad zastosowaniem histerezy czyli pewną jakby to powiedzieć tolerancją temperatury przy załączaniu i wyłączaniu grzałki?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 lip 2012, o 17:50 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 14 paź 2011
Posty: 307
Lokalizacja: Lbt
Pomógł: 8

Nie wiem czy ma to sens i czy ktokolwiek zrozumie co mam na myśli, ale można robić tak, żeby temperatura progowa zmieniała się raz w liczbę parzystą, a raz w nieparzystą po przejściu pętli i w ten sposób i później tylko sprawdzać czy przy dzieleniu przez 2 zostaje reszta, która działałaby jak flaga.

_________________
Ujemna delta to dopiero początek zabawy...



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 lip 2012, o 18:01 
Offline
Użytkownik

Dołączył(a): 15 lut 2012
Posty: 344
Lokalizacja: Bydgoszcz
Pomógł: 11

Ok, to ja moją propozycję rozpiszę wg. pseudokodu

temp_zadana
temp_odczytana
histereza

if(temp_odczytana<temp_zadana)

załącz grzałkę

if(temp_odczytana+histereza>temp_zadana)

wyłącz grzałkę

Nie wiem czy to ma sens ale mi się wydaję że powinno pomóc.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 lip 2012, o 21:21 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 15 cze 2012
Posty: 420
Lokalizacja: Poznań
Pomógł: 5

MichalXY napisał(a):
Kolego NIEBO!, a nie myślał kolega nad zastosowaniem histerezy czyli pewną jakby to powiedzieć tolerancją temperatury przy załączaniu i wyłączaniu grzałki?
Nie wiem czy kolega czytając po raz pierwszy zadanie zrozumiał, że właśnie to jest moją zagwozdką :) To co Ty proponujesz później "bardzo przejrzyste" i powiem Ci szczerze, że moje pierwsze warunki tak właśnie wyglądały i na pierwszy rzut oka to działa, jednak jak podstawisz konkretne wartości okaże się, że:

na przykład zmienne przy wejściu do pętli przyjmą takie wartości:
Cytuj:
temp_zadana=25
temp_odczytana=24
histereza=5


if(temp_odczytana<temp_zadana) (prawda)

załącz grzałkę


if(temp_odczytana+histereza>temp_zadana) (24+5>25) (też prawda - zonk! :) )

wyłącz grzałkę


Czyli jeżeli F-CPU mała, a urządzenie wykonawcze to przekaźnik to mamy z przekaźnika ładny "KLIKACZ" :)

miszczo napisał(a):
Nie wiem czy ma to sens i czy ktokolwiek zrozumie co mam na myśli, ale można robić tak, żeby temperatura progowa zmieniała się raz w liczbę parzystą, a raz w nieparzystą po przejściu pętli i w ten sposób i później tylko sprawdzać czy przy dzieleniu przez 2 zostaje reszta, która działałaby jak flaga.
Twoje obawy się sprawdziły... ja nie rozumiem. :lol: Przecież temperatura progowa ma być niezmienna ...np 90stopni ... chcesz żeby raz miała 91, a raz 90? co to zmieni w stosunku do histerezy, która może wynieść np 20'C... rozwiń pomysł


Czekam na dalsze pomysły :)

_________________
Wysłane z nowego ATB 1.05beta + ATB ETHERNET



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 lip 2012, o 21:39 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 05 maja 2012
Posty: 256
Pomógł: 3

MichalXY napisał(a):
Ok, to ja moją propozycję rozpiszę wg. pseudokodu

temp_zadana
temp_odczytana
histereza

if(temp_odczytana<temp_zadana)

załącz grzałkę

if(temp_odczytana+histereza>temp_zadana)

wyłącz grzałkę

Nie wiem czy to ma sens ale mi się wydaję że powinno pomóc.

Tak zadziała.

zmienna. temp teraz >> temp za 5 minut
temp_zadana . 34 >> 34
temp_odczytana . 30 >> 40
histereza . 5 >> 5

if(temp_odczytana<temp_zadana) // 30<34 True temp rośnie do 40<34 False, temp spada aż do 34, gdzie znów True

załącz grzałkę

if(temp_odczytana>temp_zadana+histereza) // 30>39 False temperatura rośnie aż do 40>39 True, gdzie wyłączy grzałkę i spada będąc False
wyłącz grzałkę

A tak sobie myślę, że histeraza nie powinna w dwie strony lecieć? Że włączanie grzałki dopiero przy temp_zadana-histereza?


Przepraszam, nie ogarniam bbcode i nie wiem jak dużo spacji wstawić, by bardziej zrozumiale było ;)



Ostatnio edytowano 9 lip 2012, o 21:42 przez ajek, łącznie edytowano 2 razy

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 lip 2012, o 21:40 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 14 lut 2012
Posty: 598
Lokalizacja: Warszawa
Pomógł: 13

No to ja tak na szybko coś takiego skleciłem
temp = to temperatura maksymalna
pomiar = wynik pomiaru


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


------------------------ [ Dodano po: 17 minutach ]

O kurka, ale wy już wymysliliście prawie wszystkie kombinacje :)
A ja normalnie jak ten Filip ............ ;)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 10 lip 2012, o 12:17 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 15 cze 2012
Posty: 420
Lokalizacja: Poznań
Pomógł: 5

Malutki_27 napisał(a):

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

Podałeś w końcu rozwiązanie w formie jakiej oczekiwałem :) Zgrabne i eleganckie. Brawo! Byłem nawet blisko takiej samej konstrukcji tego, tylko widocznie pokręciłem warunki matematycznie i przez to nie działało prawidłowo, więc poszedłem w przysłowiowe maliny i całość skomplikowałem do postaci jak w pierwszym poście, a później mając już zły trop nie dało się zmienić toku myślenia :) Wiedziałem, że taką konstrukcję można stworzyć tylko za diabła ... eeeh. Nawet myślałem, że Słoneczko ma tak samo, ale nie podał szczegółów.

Sprawdziłem to na żywym organizmie Maleńtas i działa :D Chyba przyznam Ci jakąś nagrodę :D :D :D Np. marchewkę :)

Pozdrawiam!

_________________
Wysłane z nowego ATB 1.05beta + ATB ETHERNET



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 10 lip 2012, o 12:19 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 22 gru 2011
Posty: 450
Pomógł: 4

Postaw mu browara. Korespondencyjnie :mrgreen: :mrgreen: :mrgreen:

O ile jest pełnoletni :roll:



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 10 lip 2012, o 14:30 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 14 lut 2012
Posty: 598
Lokalizacja: Warszawa
Pomógł: 13

Niebieski cieszę się że udało mi się pomóc :)

Uff dobrze że marchewkę bo już obawiaem się że jakąsiś wędką po garbie dostanę ;)

Jest pełnoletni i to podwójnie :roll:



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 10 lip 2012, o 14:50 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 22 gru 2011
Posty: 450
Pomógł: 4

O, to tak, jak ja. Też podwójnie, z małym naddatkiem :mrgreen:



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 10 lip 2012, o 16:21 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 14 lut 2012
Posty: 598
Lokalizacja: Warszawa
Pomógł: 13

Bo Ty, Sun, i ja jesteśmy w podobnym wieku ;)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 10 lip 2012, o 16:28 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 paź 2011
Posty: 8583
Pomógł: 337

a tam zaraz malutki a tam zaraz :)

_________________
[b]San Escobar! Patria mia! Tu eres como la salud.[/b]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 10 lip 2012, o 17:53 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 14 lut 2012
Posty: 598
Lokalizacja: Warszawa
Pomógł: 13

SunRiver napisał(a):
a tam zaraz malutki a tam zaraz :)


Ty tu a tam nie zarazuj :P

------------------------ [ Dodano po: kilkunastu sekundach ]

Bo jeszcze jaka epidemia wyniknie ;)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 10 lip 2012, o 19:52 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 15 cze 2012
Posty: 420
Lokalizacja: Poznań
Pomógł: 5

A nie wydaje się Wam, że po pierwszej 18-ce ten życiowy RTC zlicza jakby dwa razy szybciej ... i za diabła nie idzie przetaktować, a najbardziej to widać po pociechach ... kiedyś w PCtach był taki exstraśny przycisk TURBO, który defacto spowalniał :) Fajnie by było sobie tak czasem wcisnąć ....

ale się OT zrobił :) Ale co tam - zadanie rozwiązane, więc pobiadolić można :)

_________________
Wysłane z nowego ATB 1.05beta + ATB ETHERNET



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 10 lip 2012, o 20:59 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 paź 2011
Posty: 8583
Pomógł: 337

NIEBO! napisał(a):
ale się OT zrobił :) Ale co tam - zadanie rozwiązane, więc pobiadolić można :)


Tia a teraz przyjacielu Niebiański ...

przyjdzie leśniczy i wy..... (goni) nas z lasu :)

_________________
[b]San Escobar! Patria mia! Tu eres como la salud.[/b]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 10 lip 2012, o 22:58 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 22 gru 2011
Posty: 450
Pomógł: 4

Malutki_27 napisał(a):
Bo Ty, Sun, i ja jesteśmy w podobnym wieku ;)



My młodzi, My młodzi nam .... wiedza nie zaszkodzi :mrgreen: :lol:

... chciałoby się zaintonować :D



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 10 lip 2012, o 23:02 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 15 cze 2012
Posty: 420
Lokalizacja: Poznań
Pomógł: 5

SunRiver napisał(a):
przyjdzie leśniczy i wy..... (goni) nas z lasu :)
Myślisz, że od razu wy..... (goni)? Jeśli tak, to pozwolisz, że napoję tylko konia Maleńtasa, bo mu strasznie w pysku zaschło i językiem wilgoć z powietrza wyłapuje :lol: i już mnie tu nie ma :)

_________________
Wysłane z nowego ATB 1.05beta + ATB ETHERNET



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 11 lip 2012, o 21:34 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 14 lut 2012
Posty: 598
Lokalizacja: Warszawa
Pomógł: 13

No i ^&$^%$#$%# kuń się napił i powiedział :shock: że dalej nie pojedzie :lol:



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

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