Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

AVR, 51 - Wysłanie ramki danych do portu RS232

Wojtek.zse 08 Lis 2015 08:17 1713 21
  • #1 08 Lis 2015 08:17
    Wojtek.zse
    Poziom 31  

    Witajcie,
    Mam pytanie do bardziej doświadczonych kolegów.
    Potrzebuje wysłać ramkę danych do urządzenia z portem RS232. Z mikrokontrolerami nie miałem od dłuższego czasu doczynienia, a na pewno wiele się w temacie zmieniło (moje ostatnie spotkanie z mikrokontrolerami dotyczyło układów firmy Atmel z rodziny 89C2051 oraz 89S52)
    Pamiętam, że te układy miały wówczas port UART, do którego podpinając MAX232 mógłbym wysyłać dane do portu RS232.

    Jakiego typu mikrokontroler byście polecili ? Potrzebuje podawać sygnał na jedno wejście mikrokontrolera -(z transoptora) i w momencie zmiany stanu na porcie uC wysłać ramkę danych do urządzenia posiadającego właśnie port RS232.

    Proszę o informację czy taki sposób rozwiązania problemu (np 89Sx051 -> MAX232) będzie ok, czy istnieją mikrokontrolery z mniejsza ilością wyprowadzeń z rodziny 51, AVR oraz posiadające UART - czy może iść jeszcze w zupełnie innym kierunku?


    Pozdrawiam,
    Wojtek

    0 21
  • #2 08 Lis 2015 09:08
    Tomasz Gutewicz
    Poziom 10  

    89S52 i max232 lub podobny będzie jak najbardziej na miejscu, ale musisz mieć programator.
    Jeśli chodzi o AVR to są attiny z mniejszą ilością wyprowadzeń np. 8 lecz Uart musisz symulować programowo, i tak jak wyżej potrzebujesz programator. Ceny programatoròw bardzo spadły, kupisz poniżej 20 zł.
    Ja natomiast przesiadłem się na cortexy, np. mały LPC812 który programuje się przez Uart. Minusem jest brak wersji w obudowie DIP.

    0
  • Pomocny post
    #3 08 Lis 2015 09:20
    vania
    Poziom 22  

    Wojtek.zse napisał:
    Proszę o informację czy taki sposób rozwiązania problemu (np 89Sx051 -> MAX232) będzie ok, czy istnieją mikrokontrolery z mniejsza ilością wyprowadzeń z rodziny 51, AVR oraz posiadające UART - czy może iść jeszcze w zupełnie innym kierunku?

    Najmniejszy dostępny w detalu serii MCS51 ze sprzętowym UARTem to chyba 89C(S)4051 20pin. Z rodziny AVR to ATTINY85. Jeśli chcesz tylko wysyłać ramkę danych to można transmisję zrobić programowo. Wtedy możesz zastosować np ATTINY4 w obudowie SOT-23. MAX232 też będzie potrzebny chyba że zrobisz konwersję napięć na tranzystorze.

    0
  • Pomocny post
    #4 08 Lis 2015 09:34
    Andrzej__S
    Poziom 28  

    Polecam Product Finder Atmela.

    Najmniejsze MCS51 z programowym UART jakie tam znalazłem to 14-pin TSSOP/PDIP AT89LP214, a z AVR 8-bit to 14-pin SOIC ATtiny441/ATtiny841. Jeśli to za duże obudowy, to (jak już wcześniej koledzy napisali) pozostaje zrobić UART programowo.

    EDIT:

    vania napisał:
    Najmniejszy dostępny w detalu

    Tego nie wziąłem pod uwagę :( ale widzę, że ATtiny441 już się pojawiają w ofertach niektórych sklepów internetowych.

    0
  • #5 08 Lis 2015 09:59
    Wojtek.zse
    Poziom 31  

    Cześć,
    Obudowa nie ma dla mnie znaczenia, nie chciałem jedynie pchać układu, który ma 16 portów w momencie kiedy ja wykorzystam tylko 1 oraz wyjście UART - dlatego interesowało mnie czy są jakies układy w obudowach np 8 pinowych z UART na pokładzie.
    Programowo transmisji nie będę robić.
    Wykorzystam zatem 89S4051 oraz MAX232 - programator gdzieś do niego mam.
    Dziękuje również za linka do wyszukiwarki.

    0
  • #6 08 Lis 2015 14:15
    BlueDraco
    Specjalista - Mikrokontrolery

    Jest NXP LPC810 z dwoma UART, ale kosztuje majątek. Następny co do wielkości to zapewne Kinetis MKE04Z8 w TSSOP16.

    0
  • Pomocny post
    #8 08 Lis 2015 15:00
    BlueDraco
    Specjalista - Mikrokontrolery

    Autor wątku miał życzenie - jak najmniej nóg (np. 8) i UART. LPC810 ma 8 nóg, ale jego cena wzrosła absurdalnie. MKE04Z8 jest tańszy - poniżej 2 zł przy 100 szt.

    Co więcej - na obu można zrobić RS232 bez transceivera, oczywiście przy ograniczonym zasięgu i odporności na zakłócenia.

    0
  • #9 08 Lis 2015 19:28
    Wojtek.zse
    Poziom 31  

    Tomasz Gutewicz napisał:
    ...

    Jeszcze są 8051 od nxp w cenie 3,99 zl netto http://www.tme.eu/pl/details/p89lpc913fdh/mikrokontrolery-nxp-8051/nxp/p89lpc913fdh129
    Zasilanie max. 3,6 v lecz piny 5 v tolerant.


    Cześć,
    Te układy NXP są obecnie w TME niedostępne.

    Może napiszę kilka słów jak całe urządzenie ma działać.
    Układ ma badać obecność fazy zasilającej pewne urządzenie. W projektowanym układzie planuję wstawić akumulator lub np jakiś superkondensator do podtrzymania pracy układu nadzorującego po zaniku fazy - układ ma wówczas odliczyć odpowiedni czas oraz po ustalonym czasie wysłać odpowiednią komendę po RS232 do urządzenia, którego zasilanie było nadzorowane (samo urządzenie wpięte będzie przez UPS podtrzymujący jego pracę przez około 15minut). Nadzorowane urządzenie ma wówczas zatrzymać swoją prace w kontrolowany sposób.

    Dlatego wykorzystanie uC wydawało mi się najprostsze.
    AVR, 51 - Wysłanie ramki danych do portu RS232

    0
  • #10 08 Lis 2015 19:34
    BlueDraco
    Specjalista - Mikrokontrolery

    No to cały układ bez zasilania będzie kosztował jakieś 3 zł plus ten supercap i płytka (pewnie ze 3 zł). Wystarczy mikrokontroler i z 5 elementów biernych oraz jakieś 20 linii kodu w C. Do zasilania można użyć dowolnego zasilacza 5V typu ładowarka telefoniczna.

    0
  • #13 10 Lis 2015 23:54
    2675900
    Użytkownik usunął konto  
  • #14 16 Lis 2015 10:14
    Wojtek.zse
    Poziom 31  

    Cześć,
    Moglibyście polecić jakiś programator do tego 89s4051? Jak się okazało mój to niezły dziadek - jeszcze na port LPT, którego obecnie nie mam w żadnym z użytkowanych komputerów :(

    0
  • #16 16 Lis 2015 17:50
    Badmaneq
    Poziom 23  

    Piotrus_999 napisał:
    Wpisz sobie w allegro albo ebay usbasp (linków wygasających dawać nie wolno)


    Musi mieć wgrany specjalny firmware, który pozwoli zaprogramować 89Sxx

    0
  • #17 16 Lis 2015 20:04
    2675900
    Użytkownik usunął konto  
  • #18 03 Gru 2015 09:26
    Wojtek.zse
    Poziom 31  

    Cześć,
    Wybrałem rozwiązanie na 90S2313 oraz MAX232. Dzięki wszystkim za odpowiedzi.

    Pytanie z innej beczki, program chcę napisać w BASCOM AVR, to co muszę wysłać do urządzenia wygląda następująco:

    cmd1 - 1B 02 12 1B 03 E9
    cmd2 - 1B 02 10 1B 03 EB

    Czy za pomocą komendy PRINThex można wysłać dwie komendy po 6 bajtów każda jak wyżej?

    Myślałem o czymś takim:

    B1 = &H1B02121B03E9
    Print Hex(b1)

    0
  • #20 03 Gru 2015 15:24
    Wojtek.zse
    Poziom 31  

    Czy dobrze rozumiem, że mam utowrzyć tablice o długości 6 elementów (w tym przypadku bajtów) po czym pętlą FOR wysłać do Uart poszczególne elementy tablicy?

    0
  • Pomocny post
    #21 03 Gru 2015 18:01
    ASMnauka_
    Poziom 14  

    Tak, dokładnie.
    Nie koniecznie musi to być pętla For Next, może być i Do Loop, z tym że w przypadku tej drugiej Musisz zastosować zmienną, zwiększającą element tablicy.
    Na przykład tak

    Kod: vbnet
    Zaloguj się, aby zobaczyć kod

    0
  • #22 05 Sty 2016 09:58
    Wojtek.zse
    Poziom 31  

    Cześć,
    Układ działa poprawnie, lecz chciałbym wydłużyć czas działania na zasilaniu awaryjnym - obecnie jest to kilka sekund a potrzebne mi jest nawet do 4 minut.

    Pomyślałem aby zrobić układ z akumulatorkiem i ewentualnie przetwornicą StepUp.
    Mam akumulatory do wlutowania w PCB - Ni-Mh 3,6V oraz 4,8V.
    Ten 4,8V podłączyłem przez diodowy układ OR i działa to ok tylko zastanawiam się nad jakimś kontrolerem do podtrzymywania napięcia na akumulatorze podczas gdy zasilanie jest.
    Jaki układ ładowarki użyć? W urządzeniu mam dostępne 5VDC, zależy mi na rozmiarach bo miejsca jest niewiele.

    Znalazłem fajny układ MCP73831 ale on nadaje się do ładowania ogniw Li-Ion,
    Li-Pol.
    Znacie może coś podobnego do ładowania/podtrzymywania Ni-Mh?

    0