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



Teraz jest 29 mar 2024, o 16:01


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 25 ] 
Autor Wiadomość
PostNapisane: 29 paź 2012, o 23:15 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 22 paź 2012
Posty: 119
Pomógł: 3

Witam. Jako, że to mój pierwszy post na tym forum chciałbym się przywitać. :)

Chciałbym (właściwie to muszę - praca inż. :D) wykonać sterownik pieca c.o. Niezbyt lubię prosić o pomoc ale programowanie idzie mi... tak sobie i boję się, że zanim ogarnę wszystkie założenia i skleję to w całość, będę z "ręką w nocniku". :(

Założenia sprzętowe:
- 2 czujniki DS18B20... na osobnych magistralach (tak, wiem... zjecie mnie za to, ale chciałbym, żeby tak to zostało). Pomiar z jednego czujnika to pomiar głównej temperatury kotła, drugi czujnik pełniłby rolę zabezpieczającą (zapłon w rurze podającej węgiel). Rozdzielczość 1 *C... więcej nie jest potrzebne.
- moduły wykonawcze 230v:
#1 pompa c.o
#2 silnik podajnika
#3 wentylator - tu możliwość regulacji fazowo / grupowo.

Do tego elementy interfejsu: wyświetlacz na HD44780, parę przycisków, jakiś buzzer - sygnalizacja od czujnika zabezpieczającego, diody sygnalizujące aktualny tryb pracy.

Oprogramowanie:
4 tryby pracy: stop, ręczny (sterowanie wentylatorem i silnikiem podajnika), automat (praca według zadanych ustawień)
Ustawienia na zasadzie utrzymania zad. temperatury, prędkości wentylatora, czasu przedmuchu przed podaniem węgla, czasu podawania węgla, czasu przedmuchu po podaniu węgla.
Zapis parametrów do eepromu i ich odczyt przy włączeniu sterownika.

Na chwilę obecną mam zrobioną jako taką obsługę czujników... piszę jako taką bo działać to działa ale o optymalizacji kodu, obsłudze błędów itd. nie ma co mówić.
Co do menu i poukładania tego wszystkiego... po prostu nie mam pomysłu, nie wiem od czego zacząć i od której strony zabrać się za cały szkielet programu, żeby później tego nie przerabiać po 20 razy.

Nie oczekuję gotowców tylko pomocnej nogi.
Pomożecie ? :)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 29 paź 2012, o 23:29 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27212
Lokalizacja: Szczecin
Pomógł: 1041

Witaj,

pewnie, że pomożemy ale jeśli chodzi o mnie to zadaj jakieś np konkretne pytania - z czym masz kłopot, jakiś fragment kodu, czego nie rozumiesz itp .... wtedy będzie łatwiej coś podpowiadać lub naprowadzać ;)

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 29 paź 2012, o 23:45 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 22 paź 2012
Posty: 119
Pomógł: 3

Hmm... w sumie dzisiaj walczyłem ze sterowaniem wentylatora więc może tak na świeżo. W domu mam sterownik który steruje piecem... jego układ sterowania wentylatorem oparty jest na triaku, optotriaku bez detekcji zera sieci i gasiku RC. Z poziomu menu sterownika jest możliwość sterowania obrotami i to działa ale na płytce nigdzie nie widziałem elementów, które odpowiadałyby za synchronizację z siecią. Wszystkie konstrukcje do sterowania urządzeniami AC, jakie wygrzebałem na googlach posiadają taki układ czy to do sterowania fazowego czy grupowego... więc jak to jest z tym sterowaniem ? Da się to zrobić bez synchronizacji ?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 30 paź 2012, o 07:40 
Offline
Użytkownik

Dołączył(a): 23 sty 2012
Posty: 27
Pomógł: 0

1. Od razu pomyśl o większej ilości czujników, masz „na pewno” bojler CWU potem będziesz chciał kolejne czujniki itp., a do tego najlepiej robić wszystkie czujniki na jednej magistrali.
2. Pomyśl czy nie powinna to być konstrukcja dwu-modułowa wtedy masz większą użyteczność sterownika,
3. Do wentylatora nie nadaje się regulacja grupowa, dlatego jeżeli chcesz regulować prędkość obrotową to wyłączenie fazowo(te silniki mogą pracować na napięciu 90-230V) – na początek proponuję załączać wentylator na stałe i regulować jego czas załączenia/działania, ale do końca nie wiem jak to się sprawdzi w piecu z podajnikiem,
4. WA ŻNE pomyśl jaki algorytm sterowania bo jest to kluczowa sprawa dla takiego sterownika,
5. Jeżeli zaczynasz od początku czasu może być mało żeby to w pełni uruchomić tej zimy.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 30 paź 2012, o 08:02 
Offline
Użytkownik

Dołączył(a): 17 paź 2012
Posty: 58
Lokalizacja: Oława
Pomógł: 4

xpower napisał(a):
Nie oczekuję gotowców tylko pomocnej nogi.
Pomożecie ? :)

Witaj, pooglądaj sobie sterownik pompy C.O. na stronie Mirley'a. Nie traktuj tego jako gotowca, ale jako schemat co, gdzie i jak. Jest tak prosty, że nawet ja go rozumiem ;) Zrobiłem ten sterownik i działa u mnie już drugą albo trzecią zimę. Program jest w Bascomie.
Pozdrawiam, D.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 30 paź 2012, o 09:54 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 22 paź 2012
Posty: 119
Pomógł: 3

[quote="sirk77"]1. Od razu pomyśl o większej ilości czujników, masz „na pewno” bojler CWU potem będziesz chciał kolejne czujniki itp., a do tego najlepiej robić wszystkie czujniki na jednej magistrali.
2. Pomyśl czy nie powinna to być konstrukcja dwu-modułowa wtedy masz większą użyteczność sterownika,
3. Do wentylatora nie nadaje się regulacja grupowa, dlatego jeżeli chcesz regulować prędkość obrotową to wyłączenie fazowo(te silniki mogą pracować na napięciu 90-230V) – na początek proponuję załączać wentylator na stałe i regulować jego czas załączenia/działania, ale do końca nie wiem jak to się sprawdzi w piecu z podajnikiem,
4. WA ŻNE pomyśl jaki algorytm sterowania bo jest to kluczowa sprawa dla takiego sterownika,
5. Jeżeli zaczynasz od początku czasu może być mało żeby to w pełni uruchomić tej zimy.[/quote]

1) Raczej nie przewiduję takiej możliwości. Co prawda myślałem o termometrze pokojowym ale narazie to sobie odpuszczę.
2) Też o tym myślałem. Moduł wykonawczo - nastawowy w kotłowni przy piecu i drugi moduł, który byłby gdzieś w domu, z możliwością podglądu ustawień i ew. ich zmiany.
3) Opcja włącz/wyłącz to ostateczność. Wentylator działający na 100% przydaje się tylko do rozpalania :)
4) Co do samej zasady działania, to jako taki pomysł mam... gorzej z przełożeniem go na kod.
5) Do stycznia muszę zdążyć :D Poza tym... jak studenta goni termin, to i cuda się w 24h zdarzają :D


Ok, dzięki za info dareck70... w sumie zapomniałem, że miał tam sterownik c.o. zrobiony. Mam złożoną płytkę testową według jego projektu ;)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 30 paź 2012, o 11:58 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 22 paź 2012
Posty: 119
Pomógł: 3

Taki sposób podłączenia według mnie eliminuje potrzebę konfiguracji podpinanych czujników do pomiaru tej a nie innej temperatury.
Zakładam tu tylko 2 czujniki i dlatego zdecydowałem się na coś takiego. Jeśli miałbym więcej czujników to oczywiście zastosowałbym 1 magistralę.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 30 paź 2012, o 14:57 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27212
Lokalizacja: Szczecin
Pomógł: 1041

Jest jeszcze jeden super prosty sposób konfiguracji zarówno początkowej jaki późniejszej serwisowej takiej sieci czujników.

Wystarczy, że na początek wkładasz jeden typ czujnika np DS18S20 .... jak zlokalizujesz go - to zamieniasz na DS18B20 i przypisujesz do pomieszczenia. Potem to samo - chodzisz z jednym testowym DS18S20 (program musi umieć wykrywać jaki rodzaj czujnika podłączasz) .... i zawsze szybko zlokalizujesz miejsce i tzw slot w programie.

A biblioteki do obsługi 1wire opisane i zamieszczone w pierwszej książce - wszystko to pięknie potrafią robić - więc nawet nie trzeba się samemu męczyć aby oprogramowywać rozpoznawanie czujników ;)

co więcej biblioteki pozwalają w 100% zamiennie używać DS18B20 (12-bitowy) oraz DS18S20 (10-bitowy, który ma programową emulację 12 bitów i biblioteki ten myk ładnie wykorzystują)

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 30 paź 2012, o 16:18 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 22 paź 2012
Posty: 119
Pomógł: 3

No dobra, może i mnie przekonaliście :D ale muszę to dobrze przemyśleć i spróbować zastosować. :D

Nawet w przypadku programowego użycia tylko 2 czujników na 1 magistrali, zawsze istnieje możliwość implementacji kolejnego czujnika bez kombinowania w hardware gotowego urządzenia, co najwyżej podmiana programu na obsługujący 3 czujniki... to na pewno plus.
No i biblioteka do obsługi jest gotowa, co - nie ukrywam - cieszy :P



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 30 paź 2012, o 17:44 
Offline
Użytkownik
Avatar użytkownika

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

Kolego Xpower po to ktoś wymyślił magistralę , żeby z niej korzystać . Inaczej jaki byłby tego sens ??

nawet programu nie trzeba przerabiać wystarczy zrobić procedurę odpytującą magistralę i wykrywać czujniki w locie
po np resecie ...:)

Możliwości jest wiele naprawdę wiele ... dodatkowo 1wire jest chyba najprostsze w implementacji :)

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



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 30 paź 2012, o 20:05 
Offline
Użytkownik

Dołączył(a): 23 sty 2012
Posty: 27
Pomógł: 0

xpower napisał(a):
3) Opcja włącz/wyłącz to ostateczność. Wentylator działający na 100% przydaje się tylko do rozpalania :)


nie bardzo mnie zrozumiałeś: wentylator pracuje na 100% ale regulacja polega na wyliczeniu długości czasu jego włączenia, sterownik pracuje z pętlą regulacji np. Tc=30s algorytm(np. Fuzzy Logic, PID) wylicza czas załączenia od 5-30s w zależności od parametrów procesu. jest to bardzo prosty i łatwy sposób implementacji. z tym obniżaniem mocy wentylatora też nie ma co przesadzać, ponieważ proces spalania może być niewystarczający, oczywiście wybór należy do Ciebie...



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

Dołączył(a): 22 paź 2012
Posty: 119
Pomógł: 3

Po kilku dniach odpuszczenia tematu / sprawdzania różnych pomysłów... doszedłem do wniosku, że nie wiem jak przełożyć przypisanie czujników na kod. :(

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


W przypadku podpięcia 1 czujnika na linię, wykonywany byłby kod:

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


Czy takie przepisanie tablicy jest poprawne ? Czy to w ogóle zadziała ?

Jeśli tak, a został by podłączony 2 czujnik, zmieniłaby się tylko tablica docelowa i wiersz tablicy odczytywanej

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


Późniejsze odczytywanie temperatury z czujników odbywałoby się za pomocą

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


Czy ogólnie ta teoria ma szansę działać ?

[size=85]Ew. czy jest jakieś przytulne miejsce w lochach ? ;) [/size]



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

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

chwilowo w lochach jest remanent i mamy kontrolę z NIKU , oraz zlot maniaków lochów więc raczej szybko wolnych miejsc nie będzie,

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



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 6 lis 2012, o 21:48 
Offline
Uzytkownik zasłużony dla forum.atnel.pl
Avatar użytkownika

Dołączył(a): 16 lip 2012
Posty: 2088
Lokalizacja: Leżajsk / Kraków
Pomógł: 411

Musisz doczytać o tablicach.
Jak tworzysz zmienną tablicową to podajesz jej wymiary, a ty podałeś jeden wymiar zerowy. Natomiast jak chciałbyś skopiować tablicę to należy podać adres 1 elementu np. &tab[0][0], albo tylko nazwę tablicy np. tab, bo nazwa to wskaźnik na 1 element tablicy. Jako rozmiar bloku nie podaje się sizeof elementu tablicy bo to zwraca rozmiar elementu a nie rozmiar tablicy.

_________________
Dragonus Cracovus: Biomagia



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 6 lis 2012, o 22:03 
Offline
Użytkownik

Dołączył(a): 29 mar 2012
Posty: 595
Lokalizacja: Jaworzno
Pomógł: 39

Tak jak kolega Krauser zauważył. Są sytuacje kiedy lepiej zadeklarować tablicę w stylu tablica[] niż tablica[0], ale to zależy od tego jakiego typu dane mają być w tablicy.

_________________
Pozdrawiam
PP



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 6 lis 2012, o 22:12 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 22 paź 2012
Posty: 119
Pomógł: 3

Zależało mi na tym, żeby tablica miała tylko 1 wiersz. Jedna tablica - jeden przypisany czujnik.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 6 lis 2012, o 22:17 
Offline
Uzytkownik zasłużony dla forum.atnel.pl
Avatar użytkownika

Dołączył(a): 16 lip 2012
Posty: 2088
Lokalizacja: Leżajsk / Kraków
Pomógł: 411

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

_________________
Dragonus Cracovus: Biomagia



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 6 lis 2012, o 22:25 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 22 paź 2012
Posty: 119
Pomógł: 3

Ojj coś czuje, że ciężka przeprawa czeka mnie przez najbliższy miesiąc, jak takie głupie błędy sadzę. :/


Edit:

Skleciłem coś takiego

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


Jeśli wstawię t_co, mam pomiar z czujnika, więc sądzę, że kopia tablicy jest ok. Jak podmienię t_co na zmienną która powinna trzymać ID w eepromie, to nie działa. Co tym razem spaprałem ? :D



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 20 lis 2012, o 12:21 

Pomógł: 0

Próbowałeś wyświetlać to co wrzucasz do eeproma?, właśnie walczę z tym samym. Bo lekko przerobiłem twój przykład

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


I wiem, że robię coś źle, bo nie wiem, jak rozgraniczyć ID poszczególnych czujników w pamięci eeprom, oraz jak je potem wyłuskać
bo na pewno nie tak, jak poniżej......hmmm, chyba, żeby wrzucić to do struktury, ale i tak nadal nie wiem, jak się zabrać za odpowiednie przydzielanie poszczególnych czujników, typu sprawdzanie czy już taki jest w bazie, czy jest podpięty nowy, czy np. stary został wypięty i wpięty ponownie.... ależ mnie to męczy ;).
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
  
cytowanie selektywne  Cytuj  
PostNapisane: 20 lis 2012, o 13:41 
Offline
Uzytkownik zasłużony dla forum.atnel.pl
Avatar użytkownika

Dołączył(a): 16 lip 2012
Posty: 2088
Lokalizacja: Leżajsk / Kraków
Pomógł: 411

xpower napisał(a):
DS18X20_read_meas(t_co, &subzero, &cel, &cel_fract_bits)
[/syntax]
Jeśli wstawię t_co, mam pomiar z czujnika, więc sądzę, że kopia tablicy jest ok. Jak podmienię t_co na zmienną która powinna trzymać ID w eepromie, to nie działa. Co tym razem spaprałem ? :D

Nie można podchodzić do zmiennych z EEPROM i Flash tak samo jak do zwykłych zmiennych. To tak jakbyś chciał wysłać list do kogoś podając tylko ulicę i numer domu. Przecież w tym czy innym mieście może być ten sam adres. Trzeba podać miasto. Jak chcesz wykorzystać zmienną z EEPROM musisz ponownie skopiować ją do RAM, albo mieć specjalne funkcje do działania na nich porównaj to sobie z lcd_str, lcd_str_E, lcd_str_P.

Co do drugiego problemu to jak w EEPROM utworzysz tablicę 2 wymiarową to masz rozgraniczone ID czujników. Jak chcesz sprawdzić czy aktualnie podpięty czujnik jest już zapisany to musisz porównać wszystkie bajty ID i tak tyle razy ile masz czujników. Puste miejsce w pamięci EEPROM będzie miało wszystkie te bajty równe 0xFF.

_________________
Dragonus Cracovus: Biomagia



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 20 lis 2012, o 15:15 

Pomógł: 0

Dalsze dywagacje będę prowadził już w tym temacie ;) topic1767.html



Góra
  
cytowanie selektywne  Cytuj  
PostNapisane: 20 lis 2012, o 16:37 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 22 paź 2012
Posty: 119
Pomógł: 3

Krauser z tym swoim przypadkiem już sobie poradziłem bo dostałem podpowiedź od kogoś (niestety nie pamiętam już od kogo) na chat'cie.

Konfigurację mam prawie zrobioną. Brakuje mi tylko obsługi jakiejś "flagi", żeby za każdym razem po odłączeniu i podłączeniu zasilania nie trzeba było konfigurować czujników.

Przy okazji, okazało się, że straciłem sporo czasu, bo jeden z DS'ów był walnięty. Sam na linii jeszcze jako tako działa, jak jest ich więcej - ma problemy.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 26 lis 2012, o 22:40 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 22 paź 2012
Posty: 119
Pomógł: 3

Edytowanie w toku.... :D



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 27 lis 2012, o 08:33 

Pomógł: 0

Kumpel z pracy przewalił wiadro DSów, czasem skubańce nie chcą razem ( w większej ilości niż 2-3) chodzić na jednym dłuższym kablu przy braku zasilania tj. parasite. Nawet bardziej agresywne podciąganie nie pomogło. Dopiero układ DS2490 sobie poradził. Bo nie chciało mu się ciągnąć nowych kabli po domu ;).
Puszczał to skrętką.



Góra
  
cytowanie selektywne  Cytuj  
PostNapisane: 2 gru 2012, o 20:51 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 22 paź 2012
Posty: 119
Pomógł: 3

Kończą mi się pomysły na sensowne zrobienie menu i przełączanie trybów sterowania. :/

Sterownik miałby zapamiętywać ostatni uruchomiony tryb. Koncepcję miałem taką, żeby przed główną pętlą while(1) odczytywać, który tryb pracy był uruchomiony, a w głównej pętli while(1) umieścić tylko switch'a do przełączania trybów.
W funkcjach trybów pracy byłby kolejny while(1) a w nim wywołanie timerów programowych w których byłyby sprawdzane warunki pracy pompy i zabezpieczenia, robiony pomiar temperatury z czujników, czy sprawdzanie stanu klawiszy.

Ma to sens, czy znowu błądzę po ciemku w lecie z zawiązanymi oczami ?



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

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