Zapytanie


Witam

Mam fajny pomysł na zrobienie sterownika do pieca "co"

Sterownik będzie posiadał dwa moduły ,sterownik i bezprzewodowy wyświetlacz ,który będzie zamontowany w domu .
sterownik ma za zadanie czuwać nad prawidłowym funkcjonowaniu pieca jak i urządzeń z nim powiązanych ,czyli bojler ,pompa wentylator pieca a w późniejszej wersji obsługę zbiornika zapasowego na ciepłą wodę.
Wyświetlacz zdalny ma ułatwić kontrole nad tym co dzieje się w kotłowni Wyświetlając parametry w postaci temperatury i innych informacji .
Z panelu domowego będzie możliwość ustawiania temperatury w domu do ,której to sterownik dopasuje , wydajność pieca.
W terenie zabudowanym zasięg jest zależny od materiałów użytych do budowy domu ,ja u siebie uzyskałem zasięg we wszystkich zakątkach w domu dwu piętrowym,w terenie otwartym dochodził do 100m.
Wersja podstawowa już jest w fazie testów ale brak czasu może wprowadzić spore opóźnienia .
Żeby tego było mało to są moje początki w pisaniu programów .Przyznaje że program jest sklejany wielu źródeł i próbuje dopasować do moich potrzeb
Jeżeli byłby ktoś chętny aby przyśpieszyć projekt to proszę o info.
Myślę że Mirek pomoże w przeróbkach lub doróbkach programu.
Gdyby znalazł się ktoś kto zaprojektował by płytki do było by fajnie ja obecnie pracuje jeszcze nad schematami. Zrobiłem prototyp płytki do wyświetlacza zdalnego.
Późnie jeżeli Mirek nie będzie miał nic przeciwko to udostępnimy materiały na tej stronie aby inni też z tego mogli skorzystać.

Pozdrawiam
Robert48




Portret użytkownika mirley

Re: Sterownik C.O

Widzę że za ambitny projekt się zabrałeś. W razie kłopotów możesz umieszczać fragmenty programu w tym wątku, napewno wspólnie z innymi uzytkownikami coś pomożemy. Ja też ciągle nie mam czasu i odbija się to na czasie wykonywania projektów i rosnącej liście "TO DO"

-

UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.

Portret użytkownika robert48

sterownik pieca co ver.zdalna

Witam

Mirek wystawiłem prawie gotowy kod do "wyświetlacza zdalnego sterownika co".
Jeżeli możesz to skoryguj rażące błędy.

'*******************************************************************************
      $regfile = "m8def.dat"                                'informuje kompilator o pliku
                                                             'dyrektyw mikrokontrolera
      $crystal = 8000000                                    'informuje kompilator
 
 
      $baud = 1200                                          ' use baud rate
 
         $hwstack = 32                                      ' default use 32 for the hardware stack
 
            $swstack = 10                                   ' default use 10 for the SW stack
 
              $framesize = 40
 
'*******************************************************************************
 Config Lcd = 20 * 4
    Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portc.1 , Db7 = Portc.0 , E = Portc.4 , Rs = Portc.5
 
 
      Deflcdchar 1 , 4 , 10 , 4 , 32 , 32 , 32 , 32 , 32    'znak stopnia
 
      Config Portb.2 = Output                               'podswietlanie
      Config Portb.1 = Output                               'buzer
 
          Podswietlanie Alias Portb.1
          Buzer Alias Portb.2
 
             Dim Rozkaz As String * 7
             Dim Rozkaz1 As String * 7
             Dim Zmienna As String * 10
 
 
 
 
' ****************************** zminenne **************************************
      Cls
 
   Cursor Off Noblink
   Set Podswietlanie
 
      Locate 1 , 4
      Lcd "Zdlany panel"
      Lowerline
      Locate 2 , 9
      Lcd "LCD"
      Thirdline
      Locate 3 , 4
      Lcd "e-autoklima.eu"
      Fourthline
      Locate 4 , 5
      Lcd "Ver. * 1,0 * "
      Wait 5
 
  Cls
'*******************************************************************************
 
      Do
 
   Reset Buzer
   Set Podswietlanie
   Input Rozkaz1
 
   Rozkaz = Mid(rozkaz1 , 2)
 
 
 
 
 
          If Rozkaz = "boj: " Or Rozkaz1 = "boj: " Then
  Input Zmienna
  Zmienna = Mid(zmienna , 2)
  Lowerline
  Locate 1 , 2
  Lcd "bojler CO:  " ; Zmienna ; Chr(1) ; "C "
        End If
 
 
         If Rozkaz = "piec:" Or Rozkaz1 = "piec:" Then
  Input Zmienna
  Zmienna = Mid(zmienna , 2)
  Lowerline
  Locate 2 , 2
  Lcd "piec     :  " ; Zmienna ; Chr(1) ; "C "              ' napis w cudzysłowie możesz zmienić na dowolny
 
        End If
 
 If Rozkaz = "Dom: " Or Rozkaz1 = "Dom: " Then
 Input Zmienna
 Zmienna = Mid(zmienna , 2)
  Thirdline
  Locate 3 , 2
  Lcd "Dom      :" ; Zmienna ; Chr(1) ; "C "                ' napis w cudzysłowie możesz zmienić na dowolny
 
        End If
 
  If Rozkaz = "Piec Gaz.: " Or Rozkaz1 = "Piec Gaz: " Then
 Input Zmienna
 Zmienna = Mid(zmienna , 2)
  Fourthline
  Locate 4 , 2
  Lcd "Piec Gaz  :" ; Zmienna ; Chr(1) ; "C "               ' napis w cudzysłowie możesz zmienić na dowolny
 
        End If
 
 
 
                                                              Lowerline
 If Rozkaz = "alarm" Or Rozkaz1 = "alarm" Then
 
 Fourthline                                                 'Input Zmienna
  Locate 4 , 2
  Wait 1
  Lcd "Piec przegrzany !!"
       Toggle Podswietlanie
       Set Buzer                                            'Uruchomić Byzer
  Wait 2
  Locate 4 , 2
  Lcd " Sprawdz piec "
  End If
 
 
 If Rozkaz = "wygasz" Or Rozkaz1 = "wygasz" Then
 
 Fourthline                                                 'Input Zmienna
 Locate 4 , 4
 Wait 4
 Lcd "Piec zimny !!!"
           'Toggle Podswietlanie
          ' Set Buzer                                        'Uruchomić Byzer
 
 
  Wait 4
  Locate 4 , 4
  Lcd "Brak wegla"
  End If
 
Loop

-

Pozdrawiam
Robert48

Portret użytkownika mirley

Re: Wyswietlacz C.O

Rażących błędów nie widzę ale nie rozumiem czemu zmienna rozkaz mówiąca co ma być na wyświetlaczu jest u ciebie stringiem a nie np typu byte

-

UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.

Portret użytkownika robert48

Proszę o krutkie wyjasnienie

Mirek a możesz mi wytłumaczyć to zagadnienie i wytrącić różnice tylko proszę w sposób prosty .

pozdrawiam

-

Pozdrawiam
Robert48

Portret użytkownika mirley

Re: Program

Twój program powinien działać a przynajmniej tak mi się wydaje, jednak dało by się go trochę prościej napisac a mianowice:

Input Rozkaz1
   Rozkaz = Mid(rozkaz1 , 2)

w tym fragmencie program oczekuje na dane z innego układu poprzez UART, czeka na zmienną typu string która zawiera niepotrzebnie dużo danych, jedna litera to jeden bajt. Poniewaz masz zaledwie kilka trybów odbioru danych (piec, bojler, dom, alarm itp) to prościej było by przypisać do nich odpowiednie wartości liczbowe, w jednym bajcie mieści się 256 wartości więc nie będzie problemu. Dane w pętli głównej odebrał byś wtedy za pomocą inputbin lub inkey i w instrukcjach warunkowych było by zamiast

If Rozkaz = "boj: " Or Rozkaz1 = "boj: " Then

na przykład tak:

If Rozkaz = 1 Then

z tym ze zmienna rozkaz musiała by być typu byte. To samo musi być w nadajniku tak aby wyświetlacz wiedział że 1 to alarm, 2 bojler, 3 dom itd, kolejność przypisania liczb jest dowolna.

Jeśli tak zrobisz to po pierwsze nie będziesz musiał przesyłać kilku bajtów aby sprawdzić prosty warunek a po drugie program przyspieszy w działaniu. Co prawda wtak prostym układzie nie ma to większego znaczenia jednak warto sobie od razu zdać z tego sprawę i wysyłać zawsze najmniej jak się da.

Podobnie ma się sprawa z temperaturami. Po co wysyłać string'a np "23" (dwa bajty+ znak końca linii) jak można wysłac liczbę binarną 23 która zmieści się w jednym bajcie.

-

UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.

Portret użytkownika robert48

lcd zdalny

POMOCY

-

Pozdrawiam
Robert48

Portret użytkownika robert48

lcd zdalny

Mirek prosił bym abyś dał przykład prawidłowego zapisu wg: sugestii ,którą padałeś .próbuje i wyskakuje błąd za błędem.
czy to ma być tak

 Dim Rozkaz As byte
 Dim Rozkaz1 As byte
 Dim Rozkaz2 As byte
 Dim Rozkaz3 As byte
 Dim Rozkaz4 As byte
 Dim Rozkaz5 As byte
 Dim Zmienna As String * 10

xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
  If Rozkaz = 1 Then
  Input Zmienna
  Zmienna = Mid(zmienna , 2)
  Lowerline
  Locate 1 , 2
  Lcd "bojler CO:  " ; Zmienna ; Chr(1) ; "C "
        End If 
 
 
  If Rozkaz = 2 Then
  Input Zmienna
  Zmienna = Mid(zmienna , 2)
  Lowerline
  Locate 2 , 2
  Lcd "piec     :  " ; Zmienna ; Chr(1) ; "C "             
 
        End If
 
[qb]
 
 
 
tak to zapisywałem 
 
 
 
Pozdrawiam

-

Pozdrawiam
Robert48

Portret użytkownika mirley

Re: Kod programu

Dokładnie tak powinieneś rozpoznawać poszczególne rozkazy. Wcześniej zanim wejdzie w te waruki Rozkaz=1, rozkaz=2 itd musisz odczytać wartość rozkaz poleceniem inputbin lub podobnym, od strony komputera albo innego urządzenie będzie trzeba nadać liczbę a potem dopiero string z temperaturą. Dokładnie gdzie jest bład to nie znajdę tak na sucho bez kompilowania. Wyślij mi kod na emaila to popatrzę ale nic nie obiecuje.

-

UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.

Portret użytkownika robert48

prośba

Mirek bardzo bym Cię prosił o dopisanie do kodu z tego postu "zdalny wyświetlacz Lcd" kod ,który odpowiadał by za sygnalizacje na pinie RX ( ATMEGA 8) pojawienie się sygnału przy przesyłaniu z odbiornika .Dioda była by podłączona do poru "PD2" .Chciałbym jeszcze zapytać czy wystarczyło by podłączyć przez rezystor czy trzeba tranzystorek.

Tak na marginesie to sterownik działa na starej wersji i tak chwilowo pozostanie do momentu dopracowania kodu z Twoimi sugestiami.Biorąc pod uwagę że płytki posiadają złącze programujące to wymiana oprogramowania to pikuś.
JaK dobrze pójdzie to w tym tygodniu prześle Ci pliki do publikacji.

Pozdrawiam

-

Pozdrawiam
Robert48

Portret użytkownika mirley

Re: zdalny LCD

Chodzi Ci o dopisanie w twoim programie do wyświetlacza LCD takiej funkcji żeby dioda mignęła jak przyjdzie bajt czy coś innego chcesz wykonać. Zawsze pisz dokładnie od A do Z co trzeba zrobic bo mam mało czasu, wiele pytań i emaili i nie mam kiedy się z tym wyrobić. Dokładne info poprawia sprawę.

Co do diody to może byc bezpośrednio do portu z szeregowym rezystorem.

-

UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.

Portret użytkownika robert48

sterownik

Dokładnie tak jeżeli do odbiornika 433mhz trafi sygnał z nadajnika to na RX pin2 układu odbiornika ( atmega 8) pojawia się sygnał ,i chce w ten sposób kontrolować komunikacje z nadajnikiem.

Pozdrawiam

-

Pozdrawiam
Robert48

Portret użytkownika mirley

Re: zdalny LCD

To po prostu podłącz do jakiegoś pinu mikrokontrolera w odbiorniku diodę i po każdej odebranej paczce poprostu zaświeć ją na chwilę. Skąd Ci się pojawia sygnał na RX skoro nic nie wysyłasz? Chyba że imput wysyła jakies potwierdzenia odbioru.. mało uzywam tego polecenia

-

UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.

Portret użytkownika robert48

Sygnalizacja

Obawiałem się że takie rozwiązanie obciąży za bardzo sygnał z odbiornika
Pozdrawiam

-

Pozdrawiam
Robert48

Portret użytkownika mirley

Re: Sygnalizacja

Nie mówię żebyś podłączał diodę do linii Rx lub Tx a do innego portu i na nim sterował impulsami jak dane przychodzą

-

UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.