Wyświetlacz LED na RS-232


8.66667
Ocena: None Średnia: 8.7 (3 głosujących)

Układ ten jest wyświetlaczem led sterowanym za pomocą portu RS-232. Urządzenie zbudowane jest w oparciu o mikrokontroler ATMEGA16 ale tylko ze względu na dużą liczbę wyprowadzeń potrzebnych do obsługi wyświetlacza LED. Układ został zbudowany w celu prezentacji temperatur mierzonych za pomocą innego systemu mikroprocesorowego oddalonego od opisywanego wyświetlacza o kilka/kilkanaście metrów. Obecnie urządzenie współpracuje ze sterownikiem Obrotnicy Kolektora Słonecznego ale nic nie stoi na przeszkodzie aby dane do wyświetlacza wysyłał komputer wyposażony w port RS-232. W podstawowej wersji oprogramowania urządzenie przyjmuje dwa bajty danych z zakodowaną informacją o wartości temperatury i pozycji na której ma być wyświetlona.

Działanie:


Schemat ideowy Wyświetlacza przedstawiony jest na rysunku poniżej:

Sercem układu jest mikrokontroler U1 (ATMEGA16) wraz z rezonatorem kwarcowym X1 (16MHz) i kondensatorami C1 (22pF) i C2 (22pF). Złącze Prog (Goldpin) uożliwia zaprogramowanie mikrokontrolera a poźniej służy do podłączenia przycisku wygaszającego wyświetlacz. Elementy C3 i C4 stanowią filtr zasilania. Do komunikacji z innym układem wykorzystywany jest prosty interfejs RS-232 zbudowany z dwoch tranzystorow T13 (BC556) i T14 (BC546) oraz rezystorow R25 - R27 (10k). Gdyby wyświetlacz był oddalony od układu wspołpracującego o więcej niż 5m do komunikacji będzie konieczny pełny interfejs RS-232 zbudowany na układzie MAX232. Złącza RxD_G i TxD_Vcc umożliwiają podłączenie zasilania i kabli sygnałowych. Wyświetlacze LED W1 - W3 ze wspolną anodą sterowane są za pomocą tranzystorow T1 - T12 (BC556) i rezystorow R1 - R24 (3,3k). W celu ograniczenia prądu segmentow LED zastosowano rezystory R28 - R35 (330R).

Budowa:


Wyświetlacz można zbudować korzystając z płytki drukowanej dostępnej tutaj. Rysunek w odbiciu lustrzanym dostępny jest tutaj. Montaż należy rozpocząć od wlutowania wszystkich zwór a w szczególności tej pod układem U1. Następne w kolejności powinny być rezystory a na końcu pozostałe elementy. Pod układ U1 dobrze jest zastosować podstawkę. Pod wyświetlacze LED stosujemy podstawki DIP14 rozcięte po długości na dwie części. Złącze programujące po załadowaniu programu do mikrokontrolera wykorzystywane jest jako złącze do podłączenia przycisku wygaszającego wyświetlacz (masa i najbliższy pin). Gdy wyświetlacz musi być odddalony od sterownika o więcej niż 4-5m to zamiast obwodu z tranzystorami T13 i T14 należy zastosować klasyczny konwerter RS232/TTL zbudowany na układzie MAX232. Po zaprogramowaniu procesora do PortB.7 (w złączu programującym) można dołączyć przycisk zwierający do masy (zwykły uSwitch). Jego nacisnięcie powoduje wyłączenie wskazań wyświetlacza i przejście urządzenia w tryb oszczędności energii. Pomocą w czasie konstrukcji może okazać się schemat montażowy dostępny tutaj

Wykaz Elementów:


2x Złącze Śrubowe ARK2(podwójne)
1x Listwa Goldpin 1x4 (Prog)

8x 330R
24x 3,3k
3x 10k

2x 22pF
1x 100nF
1x 47uF Elektrolit

1x Rezonator Kwarcowy 16MHz
1x BC546
13x BC556
1x Mikrokontroler ATMEGA16 + Podstawka
3x Wyświetlacz LED Poczwórny

Programowanie:


Mikrokontroler do sterownika został zaprogramowany w wersji demo programu BASCOM AVR firmy MCS Electronics (http://www.mcselec.com/). Program przedstawiony jest poniżej:

'************* Konfiguracja uC *****************
'***********************************************
$regfile = "m16def.dat"
$crystal = 16000000
$baud = 4800
 
Config Porta = &B11111111 : Porta = &B11111111
Config Portb = &B01111111 : Portb = &B11111111
Config Portc = &B11111111 : Portc = &B11111111
Config Portd = &B11111111 : Portd = &B11111111
 
Config Timer0 = Timer , Prescale = 64
Enable Timer0 : On Timer0 Prztimer0
Enable Interrupts
'********** Konfiguracja uC Koniec  ************
 
'******************  Zmienne *******************
'***********************************************
Dim D As Byte , N As Byte , Poz As Byte
Dim Mux As Byte
Dim W(2) As Byte
Dim Index As Byte
Dim Temp(3) As Word
Dim Flaga_1ms As Bit
Dim Wysw(12) As Byte , Wysw_pomoc As Word
Dim Opuznienie As Byte
Dim Licz_sw As Word , Wyswietlaj As Bit
Dim Dzielnik As Word , Mig As Bit
Dim Mig_t(3) As Byte
'*************  Zmienne Koniec  ****************
 
'************ Warunki Poczatkowe ***************
'***********************************************
For N = 1 To 12
  Wysw(n) = 127
Next N
N = 1
Wyswietlaj = 1
 
'*******  Warunki Poczatkowe Koniec  ***********
 
'**************  Petla glowna ******************
'***********************************************
Do
 D = Inkey()
 
 If D > 0 Then
   W(n) = D
   Incr N
   If N = 3 Then
     N = 1
     Index = W(2) And &B11000000
     Shift Index , Right , 6
     If Index > 0 And Index < 4 Then
       W(2) = W(2) And &B00111111
       Temp(index) = W(2) * 256
       Temp(index) = Temp(index) + W(1)
       If Temp(index) >= 900 Then Mig_t(index) = 1 Else Mig_t(index) = 0
       Gosub Przelicz
     End If
   End If
 End If
 
 
 If Flaga_1ms = 1 Then
   Flaga_1ms = 0
 
   If N = 2 Then
     Incr Opuznienie
     If Opuznienie >= 100 Then
       Opuznienie = 0
       D = Inkey()
       D = Inkey()
       D = Inkey()
       D = 0
       N = 1
     End If
   End If
 
   If Pinb.7 = 0 Then
     Incr Licz_sw
     If Licz_sw = 100 Then Wyswietlaj = Not Wyswietlaj
   Else
     Licz_sw = 0
   End If
 
 
   If Wyswietlaj = 1 Then
     Gosub Wyswietl
   Else
     Portc = 255
     Idle
   End If
 End If
 
Loop
End
'************ Petla glowna Koniec **************
 
'************ Przerwanie timer 0 ***************
'***********************************************
Prztimer0:
  Timer0 = 5
  Set Flaga_1ms
  Incr Dzielnik
  If Dzielnik = 300 Then
    Dzielnik = 0
    Mig = Not Mig
  End If
Return
'******** Przerwanie timer 0 Koniec ************
 
Przelicz:
 If Temp(index) < 1250 Then
   Wysw_pomoc = Temp(index) Mod 10
   Wysw(index + 9) = Wysw_pomoc
   Temp(index) = Temp(index) / 10
   Wysw_pomoc = Temp(index) Mod 10
   Wysw(index + 6) = Wysw_pomoc
   Temp(index) = Temp(index) / 10
   Wysw_pomoc = Temp(index) Mod 10
   Wysw(index + 3) = Wysw_pomoc
   Temp(index) = Temp(index) / 10
   Wysw_pomoc = Temp(index) Mod 10
   Wysw(index) = Wysw_pomoc
 
   If Wysw(index) = 0 Then
     Wysw(index) = 10                                       'wygaszenie zera wiod?cego
     If Wysw(index + 3) = 0 Then Wysw(index + 3) = 10
   End If
 
   Wysw(index + 9) = Lookup(wysw(index + 9) , Tabela)
   Wysw(index + 6) = Lookup(wysw(index + 6) , Tabela2)
   Wysw(index + 3) = Lookup(wysw(index + 3) , Tabela)
   Wysw(index) = Lookup(wysw(index) , Tabela)
 Else
   Wysw(index) = 127                                        '-
   Wysw(index + 3) = 100                                    'E
   Wysw(index + 6) = 119                                    'r
   Wysw(index + 9) = 127                                    '-
   Mig_t(index) = 0
 End If
Return
 
 
Wyswietl:
  Incr Mux
  If Mux = 12 Then Mux = 0
  Select Case Mux
    Case 0:                                                 '1000
      Set Porta.7
        If Mig_t(1) > 0 Then
          If Mig = 1 Then Portc = Wysw(1) Else Portc = 255
        Else
          Portc = Wysw(1)
        End If
      Reset Portb.0
    Case 1:                                                 '100
      Set Portb.0
        If Mig_t(1) > 0 Then
          If Mig = 1 Then Portc = Wysw(4) Else Portc = 255
        Else
          Portc = Wysw(4)
        End If
      Reset Portb.1
    Case 2:                                                 '10
      Set Portb.1
        If Mig_t(1) > 0 Then
          If Mig = 1 Then Portc = Wysw(7) Else Portc = 255
        Else
          Portc = Wysw(7)
        End If
      Reset Portb.2
    Case 3:                                                 '1
      Set Portb.2
        If Mig_t(1) > 0 Then
          If Mig = 1 Then Portc = Wysw(10) Else Portc = 255
        Else
          Portc = Wysw(10)
        End If
      Reset Portb.3
    Case 4:                                                 '1000
      Set Portb.3
        If Mig_t(2) > 0 Then
          If Mig = 1 Then Portc = Wysw(2) Else Portc = 255
        Else
          Portc = Wysw(2)
        End If
      Reset Porta.0
    Case 5:                                                 '100
      Set Porta.0
        If Mig_t(2) > 0 Then
          If Mig = 1 Then Portc = Wysw(5) Else Portc = 255
        Else
          Portc = Wysw(5)
        End If
      Reset Porta.1
    Case 6:                                                 '10
      Set Porta.1
        If Mig_t(2) > 0 Then
          If Mig = 1 Then Portc = Wysw(8) Else Portc = 255
        Else
          Portc = Wysw(8)
        End If
      Reset Porta.2
    Case 7:                                                 '1
      Set Porta.2
        If Mig_t(2) > 0 Then
          If Mig = 1 Then Portc = Wysw(11) Else Portc = 255
        Else
          Portc = Wysw(11)
        End If
      Reset Porta.3
    Case 8:                                                 '1000
      Set Porta.3
        If Mig_t(3) > 0 Then
          If Mig = 1 Then Portc = Wysw(3) Else Portc = 255
        Else
          Portc = Wysw(3)
        End If
      Reset Porta.4
    Case 9:                                                 '100
      Set Porta.4
        If Mig_t(3) > 0 Then
          If Mig = 1 Then Portc = Wysw(6) Else Portc = 255
        Else
          Portc = Wysw(6)
        End If
      Reset Porta.5
    Case 10:                                                '10
      Set Porta.5
        If Mig_t(3) > 0 Then
          If Mig = 1 Then Portc = Wysw(9) Else Portc = 255
        Else
          Portc = Wysw(9)
        End If
      Reset Porta.6
    Case 11:                                                '1
      Set Porta.6
        If Mig_t(3) > 0 Then
          If Mig = 1 Then Portc = Wysw(12) Else Portc = 255
        Else
          Portc = Wysw(12)
        End If
      Reset Porta.7
  End Select
Return
 
'*******************************************************************************
                           'Tabele do wyswietlania na wyswietlaczu
'*******************************************************************************
Tabela:
    Data 160 , 187 , 98 , 42 , 57 , 44 , 36 , 186 , 32 , 40 , 255
'znak:    0     1    2     3    4    5    6    7     8     9   pusty
Tabela2:
    Data 128 , 155 , 66 , 10 , 25 , 12 , 4 , 154 , 0 , 8 , 255
'znak:    0.    1.  2.    3.   4.   5.  6.   7.   8.  9.    pusty
'*******************************************************************************
'******************************************************************************

Zdjęcia Projektu:

ZałącznikWielkość
Schemat28.71 KB
Płytka26.12 KB
Płytka (odbicie lustrzane)26.02 KB
Płytka (2 na stronie)50.04 KB
Montowanie34.44 KB
Kod Źródłowy7.33 KB
Program po Kompilacji (BIN)3.13 KB
Program po Kompilacji (HEX)8.82 KB
Panel Przedni54.07 KB
Panel Przedni (*.dwg)77.94 KB



Portret użytkownika Robert Bar

Do D = Inkey() If D > 0

Do
D = Inkey()

If D > 0 Then
W(n) = D
Witam
Chciałbym zapyta czy w tej części kodu ustala się moment mrugania wyświetlacza przy przekroczeniu pewny granicy temperatury. chodzi mi o zmniejszenie progu do 50 *C

Incr N
If N = 3 Then
N = 1
Index = W(2) And &B11000000
Shift Index , Right , 6
If Index > 0 And Index < 4 Then
W(2) = W(2) And &B00111111
Temp(index) = W(2) * 256
Temp(index) = Temp(index) + W(1)
If Temp(index) >= 900 Then Mig_t(index) = 1 Else Mig_t(index) = 0
Gosub Przelicz
End If
End If
End If

Pozdrawiam
Robert

Portret użytkownika mirley

Re: Wyswietlacz LED

Należy zmodyfikować tylko linijkę:

 If Temp(index) >= 900 Then Mig_t(index) = 1 Else Mig_t(index) = 0

do postaci:

 If Temp(index) >= 500 Then Mig_t(index) = 1 Else Mig_t(index) = 0

i powinno działać

-

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 Robert Bar

Witam PD 2- PD 7 czy można


Witam
PD 2- PD 7 czy można wykorzystać te wyprowadzenia jako wyjścia .

Pozdrawiam

Portret użytkownika mirley

Re: Wyswietlacz LED

Oczywiście że można wykorzystać te wyprowadzenia. Mogą sterować czymś dodatkowym :)

-

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 Robert Bar

Witam Chciałbym aby trzy z

Witam
Chciałbym aby trzy z nich uruchamiały się dla sygnalizacji buzera w raz z miganiem wyświetlacza.
Czy mógłbyś wskazać miejsce gdzie w procedurach musiałbym coś namieszać .

Pozdrawiam

Portret użytkownika mirley

Re: LED -> Buzzery

W miejscu wywoływania procedury wyświetlania:

 If Wyswietlaj = 1 Then
     Gosub Wyswietl
 
      If Mig_t(1) > 0 Then
          If Mig = 1 Then Portd.7 = 0 Else Portd.7 = 1
      Else
          Portd.7 = 1
      End If
 
      If Mig_t(2) > 0 Then
          If Mig = 1 Then Portd.6 = 0 Else Portd.6 = 1
      Else
          Portd.6 = 1
      End If
 
      If Mig_t(3) > 0 Then
          If Mig = 1 Then Portd.5 = 0 Else Portd.5 = 1
      Else
          Portd.5 = 1
      End If
 
   Else
  ......

Takie coś powinno działać, chociaż na razie tego nie sprawdzałem. Jak będzie działać to daj znać

-

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 Robert Bar

Witam Dzięki może dzisiaj

Witam
Dzięki może dzisiaj wypróbuje.

Pozdrawiam

Portret użytkownika Robert Bar

Witam Chodzi pewnie o ten

Witam
Chodzi pewnie o ten fragment, ale mam jeszcze pytanie czy te procedury należy dodatkowo wstawić na początku ,czy pozmieniać w liniach?
Czy buzerki można podłączyć bezpośrednio czy standardowo przez tranzystor?
Che zrobić komunikacje RS na (433 .92 GOTOWYCH MODUŁACH) czy komunikacja w przypadku połączenia sterownika z led odbywa się w dwóch kierunkach czy wystarczy w jednym ?

Pozdrawiam
Robert

Portret użytkownika mirley

Re: LED rs232

Ten fragment programu ktory napisałem ma sie znaleźć w części:

 If Wyswietlaj = 1 Then
     Gosub Wyswietl
                               <<<<<< miejsce umieszczenia
   Else
     Portc = 255
     Idle
   End If

Znajduje się to przed procedurą wyświetlania, umieszczoną na samym dole programu. Linijki dodatkowe ktore widać na wyższym wpisie mają być w zaznaczonym miejscu

Do buzzerow tranzystory pnp podłączone w standardowy sposob.

Komunikacja jest konieczna tylko do wyświetlacza

-

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 Robert Bar

Witam Buzzerki działają

Witam

Buzzerki działają .jest ok.

Serdeczne dzięki

Pozdrawiam

Portret użytkownika Robert Bar

Witam Mam jeszcze jedną

Witam
Mam jeszcze jedną prośbę czy mógłbyś jeszcze dorobić reset tych sygnałów jednym przyciskiem.Dokładnie chodzi mi o to jak przekroczy poziom temp. a ktoś zareaguje ,to żeby nie wkurzało ucha .

Pozdrawiam
Robert

Portret użytkownika mirley

Re: Wyswietlacz RS232

Proponuje proste rozwiązanie dla wyłączenia buzzera. Wyłączenie wyświetlania powinno wyłączyć buzzery i po sprawie :)

If Wyswietlaj = 1 Then
     Gosub Wyswietl
                <<<<<< miejsce umieszczenia wcześniejszej procedury
   Else
     Portc = 255
     Portd.7 = 1      <<<<dopisz
     Portd.6 = 1      <<<<dopisz
     Portd.5 = 1      <<<<dopisz
     Idle
   End If

-

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 Robert Bar

WitamRozumiem iż ta

Witam

Rozumiem iż ta procedura spowoduje wyłączenie całkowite wyświetlacza ,ale pytanie kiedy on się włączy z powrotem i w którym momencie się wyłączy czy zaraz jak zacznie migać .Jeżeli tak to nie osiągnę celu i buzery są bez sensu.

If Wyswietlaj = 1 Then             ????
     Gosub Wyswietl                ????
 
   Else                            ????
     Portc = 255                   ????
 
   End If                          ????

Mam jeszcze prośbę ,czy mógłbyś mi wytłumaczyć co oznaczają dane linie?
Bardzo proszę

Portret użytkownika mirley

Re: Wyświetlacz LED

Tak na marginesie zapomniałem dopisać że do portu b.7 mozna podłączyć przycisk. Teraz dopisałem odpowiednią linijkę w sekcji budowa. Przycisk ten zmienia wartość zmiennej "Wyświetlaj" na przeciwny po każdym naciśnięciu. Standardowo gdy nie ma przycisku zmienna "Wyswietlaj = 1", cyfry są wyświetlane i buzerry działają. Jeżeli przycisk zostanie naciśniety to "Wyswietlaj = 0" i zostanie wykonany fragment, ktory aktualnie ma u ciebie wyglądać tak:

     Portc = 255      'wygaszenie wyświetlacza
     Portd.7 = 1      'wyłączenie buzzera
     Portd.6 = 1      'wyłączenie buzzera
     Portd.5 = 1      'wyłączenie buzzera
     Idle             'przejście mikrokontrolera do trybu oszczędzania energii - uśpienia

Po ponownym nacisnięciu przycisku wszystko wroci do normalnego stanu

-

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 gosc

3 czujniki ds18b20

Witam . Czy mogę niezależnie mierzyć temperaturę (w tym ujemną )przy pomocy trzech czujników DS18B20 ? jeśli tak to gdzie je podłączyć i co zmienić ?

Portret użytkownika mirley

Re: Wyświetlacz RS

Ten układ nie mierzy temperatury a jedynie wyświetla dane odbierane od innego procesora. Pomiarem temperatury musi zajmować się inny uC (program nie jest skomplikowany). W tym projekcie należało by tylko zmienić program aby wyświetlał też ujemne temperatury odbierane przez Rs232.

-

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 gosc

pomiar na 3xds18b20

Bardzo podoba mi się ta konstrukcja ale czy mógłby autor lub(ktoś)zmodyfikować urządzonko tak żeby było można mierzyć temperatury w zakresie -40 do 150st C na 3xds18b20 lub zamieścić nowy projekt.

Portret użytkownika mirley

Re: Pomiar 3xDS

Pomiar do 150 stopni jest nie możliwy bo ds ma max 125 stopni, a do pomiaru to raczej lepszy byłby drugi uC bo z obsługą jednocześnie wyśw LED i czujników DS (więcej niż jednego) są pewne problemy. Takie coś mogło by powstać dopiero gdzieś w październiku najwcześniej.

-

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 gosc

Pomiar 3xDS

Może być od-30 do 100stC i jakie muszą być te dwa uC ? Ok poczekam do pazdziernika

Portret użytkownika mirley

Re: 3xDS

trzeba wykonać dokładnie ten układ co tu jest przedstawiony, tylko zrobić jeszcze taki prosty układzik powiedzmy na Tiny2313 który będzie mierzył temperaturę i wysyłał do tego wyświetlacza po rs232 tak jak robi to procesor obrotnicy kolektora z którym u mnie współpracuje ten wyświetlacz

-

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 gosc

3xds

Układ ten zmontowałem i po wgraniu hex na wszystkich led świecią segmenty G. Czy mógłby Pan narysować schemat i dopisać tak żeby to współpracowało ? (jestem raczkujący ).Ja używam oscylator wewnętrzy czy muszę dać kwarc zewnętrzy do poprawnej pracy ? Czy mogę stosować przewody do DS-ów do 20metrów ?

Portret użytkownika mirley

Re: Wysw

Segmanty pokazują "-" jak nic nie jest wysyłane do wyświetlacza na tej pozycji. Skorzystaj z fragmentu:

Rs_wyslij:
 Incr Licz_help
 If Licz_help = 3 Then Licz_help = 0
 Select Case Licz_help
 Case 0:
   Help_word = T(1)
   Help_word.15 = 0
   Help_word.14 = 1
   Printbin Help_word
 Case 1:
   Help_word = T(2)
   Help_word.15 = 1
   Help_word.14 = 0
   Printbin Help_word
 Case 2:
   Help_word = T(3)
   Help_word.15 = 1
   Help_word.14 = 1
   Printbin Help_word
 End Select
Return

Zmienne T(x) typ word to temperatury pomnożone przez 10 (234 to 23,4 stopnia), reszta zmiennych to pomocnicze. Przewody do Ds mogą mieć 20m, możesz też pracować na wewnętrznym oscylatorze, tylko prędkość transmisji baud ustaw na 4800.

-

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 gosc

3xds

Witam. Czy powstało coś takiego na 3xds po pazdzierniku i czy jest nadzieja ? pozdr

Portret użytkownika mirley

Re: Program do 3xds

Jeszcze nie powstało... napewno nie mam czasu aby zrobić urządzenie ale sam program można by napisać na podstawie innych urządzeń które robiłem. Nic nie obiecuje ale postaram się zmodyfikować program sterownika domowego z mojej strony tak aby wysyłał temperaturę po rs232 do tego wyświetlacza

-

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 BIGjack

Witam, czy w takim

Witam,
czy w takim rozwiązaniu 1 avr obsługa 7led 2 avr pomiar i komunikacja rs wystepuje migotanie wyswietlaczy? czy wyswietlanie jest stabilne w 100%
pozdrawiam
BIGjack

Portret użytkownika mirley

Re: wyswietlacz

Nic nie miga ale procek zajmuje się tylko wyświetlaniem i odbieraniem, nic innego nie robi

-

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 BIGjack

miganie

Z tym miganiem, pytałem ponieważ po doświadczeniach z termometrami na ds-ach nigdy nie udało mi się w bascomie tak dobrac czasów aby nie było czasem jakiegoś mrugnięcia. Jeszcze mam pytanko czy przy komunikacji po rs-ie procki musza byc taktowane tym samym zegarem? jakie warunki muszą byc spełnione dla poprawnej komunikacji?

Portret użytkownika mirley

Re: Rs232

Muszą być te same parametry transmisji, boundrate, data bits oraz parity i bity stopu. Kwarce nie muszą być te same

-

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 BIGjack

rs232

Jestem w trakcie budowy termometra z kilkoma ds-ami jeden procek do odczytu a drugi do wyświtlania 6x7led procki mają się komunikować po rs232 i tu właśnie poległem. Na początku skupiłem się na danych tylko z jednego ds-a ale mam problem z odbiorem ponieważ wyświetla poprawnie temperature ale tylko przy pierwszym odczycie przy drugim juz jakieś losowe cyfry. Czy po odczycie powinienem wyczyścić bufor uart? jak poprawnie napisać procedurę odbioru z "nadajnika"

Portret użytkownika mirley

Re: Komunikacja RS

Z wysyłaniem nie ma problemu bo poprostu dajesz prointbin i wartość, gorzej z odbiorem bo trzeba odpowiednio odczytywać wartości. Ja wysyłam zawsze wartości większe od 0 i korzystam z polecenia Inkey. Jak jest wartość większa od 0 to zapisuje do kolejnych komórek tablicy, jak odczytam te 2 bajty, to zmienna N zostaje ustawiona na 1. Cały czas jest sprawdzana wartość zmiennej N. Jeśli przez jakiś czas utrzymuje się wartość różna od 1 to znaczy że nie odebrało dwóch bajtów a np 3 lub 1 i się licznik pokręcił, więc trzeba go skasować.

najlepiej dla odbioru jest zrobić jeszcze jeden próg wyżej a mianowicie zrobić jakiś protokuł transmisji. Mam tak w projekcie mirlighta. Wysyłam najpierw wartość 128 jako początek paczki, potem kolejne dane ale tak żeby wartość była nie większa niż 127 i na końcu sumę kontrolną. Dopiero jak się odebrała dobra ilość bajtów i suma się zgadza to dane są wykorzystywane a jak się nie zgadza to olewane :)

Pamiętaj że jak masz długi kabel to będziesz miał napewno problemy z transmisją. Czy dasz wolniejszą tym będzie lepiej. Jak masz kilka m kabla to zastosuj sobie bufory rs485, powinno działać o wiele lepiej

-

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 tomba

Duże ledy i uln2803

Witaj Mirley.
Chciałbym wykorzystać twój wyświetlacz.
2 linie po 5-6 cyfr ( Twój projekt jest 3x4 )
Proszę o informacje jak to ugryźć.
Zmienne musiały by być większe,
oraz chcę zastosować uln2803 & led'y 57mm wysokości.
Uln2803 sterowanie jest 1 a w projekcie masz stan świecenia 0 jak się nie mylę.

Tom