logo elektroda
logo elektroda
X
logo elektroda
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Jak zbudować układ z AT90S2313 do rejestracji czasu pracy maszyny?

KaJakKrzysztof 12 Maj 2007 13:59 2109 27
  • #1 3876595
    KaJakKrzysztof
    Poziom 14  
    Posty: 143
    Ocena: 5
    Witam

    Mam pytanie do Was znawców czy da radę na takim powiedzmy AT90S2313 zrobić układ spełniający poniższe wymagania:

    Budowa urządzenia: 3 przyciski

    - praca
    - przezbrajanie
    - awaria

    pracownik wciska któryś z nich zgodnie z wykonywaną czynnością a urządzenie rejestruje tylko sam czas włączonego przycisku (z dokładnością 1 sek).
    Teraz pytanie gdzie gromadziłby te dane abym mógł je (moze przez podłączenie pendriva) skopiować do kompa.
    Czy trudne to będzie zbudowanie takiego czegoś? :)

    Napisałem program w Pythonie i obecnie maszynę a reczej te 3 przyciski mam podłączone do kompa (RS-232) który musi działać 16 godzin (2 zmiany na dobę) denerwujący jest też fakt ciągnięcia 30 metrów kabla na halę do maszyny :)
    Pozdrawiam
  • Pomocny post
    #2 3876675
    MirekCz
    Poziom 35  
    Posty: 2220
    Pomógł: 330
    Ocena: 62
    Trudność:
    średnia (w kierunku łatwa)

    Procesor:
    będzie ok

    Gdzie trzymać dane:
    pamięć zew. (eeprom jakiś)

    Komunikacja:
    najłatwiej rs232 (ew. poprzez kabel rs232<->usb)
    pendrive zapomnij. Jak juz to karta typu CF lub SD
  • #3 3876840
    KaJakKrzysztof
    Poziom 14  
    Posty: 143
    Ocena: 5
    Mirek bardzo dziękuję za odpowiedź. Dopiero zaczynam przygodę z mikrokontrolerami - mam nadzieję, że szybko nie polegnę ;)

    ten eeprom musi byc? :D nie wystarczy pamiec wewnetrzna procka? chce odczytywac raz na dobe te dane i pewnie tak jak piszesz karta SD
  • Pomocny post
    #4 3877046
    MirekCz
    Poziom 35  
    Posty: 2220
    Pomógł: 330
    Ocena: 62
    Nie znam dobrze tego procesora. Jeżeli ma on wewnętrzny eeprom to jak najbardziej się nadaje.

    Może dobrze byłoby zająć się jakimś popularnym procesorem (w tej chwili atmega8 jest chyba najpopularniejsza i spokojnie poradzi sobie z twoim zadaniem).

    Jedno co musisz pamiętać to do eeproma nie można robić zbyt wielu zapisów(jest to przeważnie kilka-kilkadziesiąt tysięcy), więc nie zapisuj tam danych non-stop a np. co godzinę czy co dzień.

    Najlepiej też stosuj podwójny zapis do eepromu z bajtem kontrolnym. (tzn zapisuj dane w dwóch miejscach z jakimś bajtem kontrolnym np. crc. jeżeli jedna część danych będzie uszkodzona - np. procesor straci zasilanie podczas zapisu eeproma - to nadal będziesz mógł odczytać poprawne dane z drugiej kopii znajdującej się w innej części eeproma)

    O karcie SD znajdziesz na forum informację. Jak poszukasz to pewnie nawet gotowe rozwiązanie/kod będzie.
  • #5 3877939
    KaJakKrzysztof
    Poziom 14  
    Posty: 143
    Ocena: 5
    Atmega8? - jaki konkretnie typ? jaki programator najlepiej do tej Atmegi? taki żebym nie zbankrutował ;) i najważniejsze czy mozna go programowac przy uzyciu Bascoma?
    Dziękuję i pozdrawiam
  • Pomocny post
    #6 3877972
    wlamywacz2004
    Poziom 17  
    Posty: 279
    Pomógł: 10
    Ocena: 1
    Atmega8 programator to np. si prog i do tego program PonyProg sam używam i jestem zadowolony.
  • #7 3877992
    KaJakKrzysztof
    Poziom 14  
    Posty: 143
    Ocena: 5
    bardzo dziękuję za odpowiedź - czyli taki zestawik byłby ok?

    http://www.multi-com.pl/index.php/pl_PL,details,id_pr,1036,menu_mode,categories.html

    Atmega8 ma eeprom rozumiem?

    zastanawiam sie czy nie lepiej wladowac karte SD i na niej dokonywac zapisow 2 razy dziennie hmm bo na tym eepromie skoro kilka tysiecy i koniec to nie wiem...

    pytanie z innej bajki jako ze zaczynam przygode:

    czym sie roznia te 3 procesory?

    http://www.gembara.pl/cgibin/shop?sid=74a8a593
  • Pomocny post
    #8 3878126
    wlamywacz2004
    Poziom 17  
    Posty: 279
    Pomógł: 10
    Ocena: 1
    Hmm to zły wybór proszę na allegro wpisać w wyszukiwarce "si prog" a ten drugi link tam jest wiele produktów i nie wiem o co chodzi.
  • Pomocny post
    #10 3878534
    bogdan_p
    Poziom 39  
    Posty: 3849
    Pomógł: 525
    Ocena: 120
    zupełnie nie wiem po co Ci ten programator , do zaprogramowania ATmegi wystarczy programator STK200 , programowanie wewnętrznego jak i zewnętrznego pamięci Eeprom zrealizuje mikrokontroler , chyba że chcesz również programować pamięci poza układem
    Bascom obsługuje STK 200
  • #11 3878580
    KaJakKrzysztof
    Poziom 14  
    Posty: 143
    Ocena: 5
    ok kupiłem ten programator - jak go otrzymam kupię Atmegę8 i do dzieła ;) zacznę naukę.
    Pytanie co do tych trzech procków

    http://www.gembara.pl/cgibin/shop?sid=74a8a593

    czym one sie roznią? (w polu szukaj w sklepie wpisałem atmega8 i wyskoczyly mi 3 z różną ceną)
  • #13 3878907
    KaJakKrzysztof
    Poziom 14  
    Posty: 143
    Ocena: 5
    wielkie dzięki!

    czyli procek ATMEGA8-16PI DIL28 różni się od ATMEGA8535-16PI DIL40 ilością wyprowadzeń? (pewnie nie tylko)
  • Pomocny post
    #14 3879091
    MirekCz
    Poziom 35  
    Posty: 2220
    Pomógł: 330
    Ocena: 62
    Nie, to są odmienne procesory.

    Ściągnij ze strony www.atmel.com datasheety obu procesorów i możesz porównać (jak i poczytać o samej atmedze)

    W zasadzie z tej rodziny masz wybór pomiędzy (wszystkie procesory maja 28 wyprowadzen i ten sam układ końcówek, różnią się detalami):

    atmega8 - standard, pracuje do 16mhz
    atmega8l - wersja low voltage, pracuje do 8mhz przy 5V i do bodajże 4mhz przy 2,7v
    atmega48/88/168 (różnią się głównie ilością pamięci flash na program) - nowsza odmiana procesora atmega8 , posiada odpowiednio 4/8/16kb pamięci flash + dodatkowe bajery w stosunku do atmega8 jak przerwanie na wszystkich pinach, praca do 20MHz czy możliwość pracy od 2,7V w standardzie (zegar do 10MHz przy low voltage)

    Ogólnie polecam przejrzeć tutoriale i opisy procków. Opis do atmegi8 jest chyba nawet gdzieś po polsku - przeszukaj forum to link się pewnie znajdzie.
  • Pomocny post
    #15 3879198
    bogdan_p
    Poziom 39  
    Posty: 3849
    Pomógł: 525
    Ocena: 120
    jeżeli dobrze rozumie to dane mają być odczytywane i archiwizowane w programie w PC tak więc jaki sens ma zapisywanie ich w pamięci , następnie odczytywanie ich w PC , problemem dla Ciebie jest połączenie kablowe urządzenie > PC , czy nie lepiej pomyśleć o bezprzewodowym łączu RS232 przy nie dużym zasięgu powinny wystarczyć tanie hybrydowe moduły http://www.cyfronika.com.pl/hybrydy.htm
  • #16 3879537
    KaJakKrzysztof
    Poziom 14  
    Posty: 143
    Ocena: 5
    z bezprzewodową łącznością mam złe przygody - na hali produkcyjnej wśród maszyn (silników, pól magnetycznych zakłóceń itp.) nie działało to zbyt dobrze dlatego chciałem zapisywać w pamięci i sam odczytywać np. kartą SD. Być może mógłbym podłączyć kablem do PC i odczytywać w chwili w której chce (bo teraz musze mieć PC cały czas włączonego aby badał...). Być może masz rację - te hybrydy mógłbym połączyć z urządzeniem które chce zbudować - czy dobrze rozumiem?

    Mam książkę "Mikrokontrolery AVR w praktyce" Jarosława Dolińskiego - przyda się do nauki na Atmedze8? ;)
    szukam całkowitych podstaw w sieci

    Pozdrawiam
  • Pomocny post
    #17 3879634
    bogdan_p
    Poziom 39  
    Posty: 3849
    Pomógł: 525
    Ocena: 120
    wspomniałeś nauce programowania w Bascomie , jako podstawy bardzo dobry kurs masz na stronach EdW , dość dobra o Bascomie i konkretnie o ATmedze 8 jest książka
    "Programowanie mikrokontrolerów AVR w języku Basom " Marcina Wiązania
    przejrzyj również inne propozycje na tej stronie http://www.kamami.pl/?id_k1=56&id_k2=200
  • #18 3879662
    KaJakKrzysztof
    Poziom 14  
    Posty: 143
    Ocena: 5
    ok dziekuję
  • #19 3880993
    KaJakKrzysztof
    Poziom 14  
    Posty: 143
    Ocena: 5
    czyli wg Atmela ATmega8 standardowa taka jak np. ATMEGA8-16PI DIL28 ma parametry:

    Flash (Kbytes) 8
    EEPROM (Kbytes) 0.5
    SRAM (Bytes) 1024
    Max I/O Pins 23
    F.max (MHz) 16
    Vcc (V) 2.7-5.5

    czyli na 3,3V powinien ten mikrokontroler działać

    teraz pytanie co do kwarca - muszę poczytać jaki - pewnie 16 MHz
    musi to być rezonator kwarcowy specjalnie do tego mikrokontrolera tak?
  • Pomocny post
    #20 3881243
    MirekCz
    Poziom 35  
    Posty: 2220
    Pomógł: 330
    Ocena: 62
    1.Standardowy Atmega8 nie będzie (wg. noty kat.) działał przy 3,3V. Możesz użyć ATmega48/88/168 lub Atmega8L

    2.Przy niskich napięciach musisz używać niższego zegara (bodajże 4MHz dla ATmega8L i 10MHz dla Atmega48/88/168)

    3.Najlepiej używać rezonatora kwarcowego, szczególnie, że ty musisz mieć dokładnie odmierzany czas.
    Standardowy rezonator będzie działał, dokładasz do niego kondensatory ok. 22pF i wszystko hula.

    Na pytania które ostatnio zadajesz znajdziesz gotowe odp.:
    a)na forum
    b)w nocie katalogowej procesora

    Poczytaj dokładnie...

    No i jeszcze poczytaj regulamin forum dot.pisania posta pod postem...
  • #21 3881356
    KaJakKrzysztof
    Poziom 14  
    Posty: 143
    Ocena: 5
    tak właśnie przeczytałem że:

    ATmega8 - zasilanie: 4.5V - 5.5V; max 16Mhz
    ATmega8L - zasilanie: 2.7V - 5.5V; max 8Mhz

    czytałem też że rezonator kwarcowy jest stabilniejszy od ceramicznego

    Mirek jako, że jesteś z Poznania - gdzie najlepiej zaopatrzyć się w podzespoły - Gembara?

    dzięki jeszcze raz pozdrawiam
  • Pomocny post
    #22 3881417
    bogdan_p
    Poziom 39  
    Posty: 3849
    Pomógł: 525
    Ocena: 120
    oczywiście możesz pracować przy niższym napięciu , ale dużo mniej kłopotów jest stosując typowe napięcie 5V , praktycznie wszystkie układy pracują z tym napięciem i nie ma żadnego problemu z poziomami napięć sterujących dla innych komponentów w systemie
    nie ma specjalnych kwarców dla ATmegi , w Twoim przypadku kiedy w grę wchodzi dokładny pomiar czasu , oraz transmisja danych wskazane jest zastosowanie zewnętrznego oscylatora
    na początek jak będziesz miał już podstawowy zestaw do nauki programowania zacznij od dowolnych prostych przykładów dopiero potem myśl nad konkretnym własnym programem
    przykłady znajdziesz tu http://mikrokontrolery.net/index.htm
    http://www.mcselec.com/
    http://www.henwyd.republika.pl/TekstyHTML/ProgramyDoNauki1.htm
  • #23 3881495
    KaJakKrzysztof
    Poziom 14  
    Posty: 143
    Ocena: 5
    ok dziekuję - widzę że na stronie http://www.henwyd.republika.pl/TekstyHTML/DataCzas2.htm jest zbudowany układ do odmierzania czasu i to na kwarcu 32 KHz czyli w moim przypadku nawet 4 MHz wystarczą
    Zastanawiam się nad złączem ISP zebym nie musial wyciagać mikrokontrolera podczas programowania.
  • Pomocny post
    #24 3881557
    bogdan_p
    Poziom 39  
    Posty: 3849
    Pomógł: 525
    Ocena: 120
    projekt wykorzystuje prace programowego zegara czasu rzeczywistego RTC , dokładniej asynchroniczną pracę Timera2 mikrokontrolera , a sam mikrokontroler jest taktowany wewnętrznym zegarem 8MHz
    złącze programujące to podstawa szczególnie przy konstrukcjach testowych
    proponuje kup sobie jaką książkę na temat budowy uC rodziny AVR znajdziesz odpowiedź na większość swoich pytań
  • #25 3881596
    KaJakKrzysztof
    Poziom 14  
    Posty: 143
    Ocena: 5
    mam już książkę (wcześniej pisałem) właśnie zabieram się za czytanie :)

    mam już książkę (wcześniej pisałem) właśnie zabieram się za czytanie :)

    jeszcze jedno pytanie - czy jako zaslianie takiej Atmegi8 mogę użyć zasilacza np. 9V? (oczywiście z odpowienim rezystorem obniżającym napięcie do np. 5V)
  • #27 3892100
    KaJakKrzysztof
    Poziom 14  
    Posty: 143
    Ocena: 5
    myślałem że zasilacze mają stabilizowane - widze np. w sklepie taki stabilizator 7805 stabiliz. 5V 1,5A TO22O ale jakie napiecie zasilania do niego pasuje? czy to prawda że powinien być zasilany o 2V wyższym napięciem niż wyjściowe czyli około 7V ?
  • Pomocny post
    #28 3894999
    bogdan_p
    Poziom 39  
    Posty: 3849
    Pomógł: 525
    Ocena: 120
    dla serii stabilizatorów LM78XX wymagane jest dla prawidłowej pracy napięcie zasilania większe o 2V od napięcia stabilizacji maksymalne masz podane w nocie katalogowej dla danej grupy stabilizatorów
    warto pamiętać że większe napięcie zasilania powoduje proporcjonalne zwiększenie mocy strat w stabilizatorze , co wiąże się z koniecznością stosowania radiatorów dlatego nie ma co przesadzać z napięciem zasilnia stabilizatora
    co do zasilaczy to bywa różnie i nie warto zbytnio wierzyć to co na nim pisze , szczególnie te tanie modele , w nich jest tylko transformator, prostownik i kondensator

Podsumowanie tematu

✨ Dyskusja dotyczy budowy układu rejestrującego czas pracy maszyny za pomocą mikrokontrolera AT90S2313 lub alternatywnie ATmega8. Proponowane rozwiązanie obejmuje trzy przyciski (praca, przezbrajanie, awaria), które rejestrują czas aktywacji z dokładnością do 1 sekundy. Dane najlepiej przechowywać w pamięci EEPROM mikrokontrolera lub na karcie SD, gdyż pamięć wewnętrzna AT90S2313 jest ograniczona, a EEPROM ma ograniczoną liczbę cykli zapisu (kilkadziesiąt tysięcy). Zaleca się stosowanie podwójnego zapisu z bajtem kontrolnym (np. CRC) dla bezpieczeństwa danych. Komunikacja z komputerem może odbywać się przez interfejs RS232 lub RS232-USB; pendrive jest niezalecany. Alternatywnie rozważano łącze bezprzewodowe, jednak w warunkach hali produkcyjnej z zakłóceniami elektromagnetycznymi jest to problematyczne. Do programowania mikrokontrolera polecany jest programator SI Prog lub STK200, kompatybilny z Bascom. Wskazano na różnice między modelami ATmega8, ATmega8L oraz ATmega8535, głównie w zakresie napięcia zasilania, częstotliwości taktowania i liczby wyprowadzeń. Do stabilnego odmierzania czasu rekomendowany jest rezonator kwarcowy (np. 16 MHz) z kondensatorami 22 pF. Zasilanie mikrokontrolera powinno być stabilizowane, np. za pomocą stabilizatora LM7805, z napięciem wejściowym o około 2 V wyższym niż wyjściowe. Podano źródła materiałów edukacyjnych i przykładów programów dla AVR oraz wskazówki dotyczące nauki programowania w Bascomie.
Wygenerowane przez model językowy.
REKLAMA