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

Jak zbudować rejestrator pęknięcia przewodu z ATmega128 i LCD?

szefo81 02 Gru 2005 15:48 2307 11
REKLAMA
  • #1 2047054
    szefo81
    Poziom 11  
    Posty: 5
    Potrzebuję zrealizować urządzenie, które zarejestruje pęknięcie (zerwanie ) połączenia a dokładnie kolejność i czas przerwania poszczególnych linii. WAŻNE!!! linii jest ok 40 a "zerwania" następują w czasach rzędu 0,005 s. Musze miec zarejestrowanie ktora liniia i w jakim czasie pękła. Dodatkowo urządzenie powinno wyświetlać na LCD kolejne czasy i poprzez np rs232 przesyłać dane do komputera. Myślałem o zastosowaniu ATmega128(duza ilosc pinów). Proszę o pomoc i sugestie.
    Zapomniałem dodać że mam dostęp do obydwu końców linii więc jeden może być stale zwarty do masy a procesor wykrywałby przełączenie stanu.
  • REKLAMA
  • #2 2050604
    Zaquadnik
    Poziom 27  
    Posty: 998
    Pomógł: 103
    Ocena: 25
    Generalnie zwierasz drugi koniec do masy, a do przewodu wpuszczasz impuls. I liczysz czas od momentu wpuszczenia. Jeśli nie wróci, to znaczy, że połączenie jest OK. Jeśli wróci, to znaczy, że przewód jest rozłączony. Znając prędkość rozchodzenia się impulsu w przewodzie i czas, po którym impuls wrócił możesz wyznaczyć odległość miejsca przerwania przewodu od stacji "bazowej". Tylko mikrokontroler jest na to za wolny. Musisz generować impulsy i liczyć czas na zewnętrznym urządzeniu, bo to pewnie będzie coś rzędu dziesiątek ns.
    Pozdrawiam.

    Wybacz, źle przeczytałem... w Twoim wypadku wystarczy rzeczywiście badać stan na nóżce... Tylko jeśli linii masz 40 i chcesz liczyć czas to hmmm..... mały kłopot. Można puścić powiedzmy 1 timer na 10 linii i osobno dla każdej linii zliczać "offset" w stosunku do wskazania timera, a za liczniki mogłyby robić dowolne komórki w pamięci...
  • #3 2051317
    dioda1000
    Poziom 28  
    Posty: 833
    Pomógł: 143
    Ocena: 132
    szefo81 napisał:
    Cytat:
    Proszę o pomoc i sugestie.


    5ms to kope czasu. Jak mniemam to te 0.005 sek to rozdzielczość

    Zastosowałbym 3 układy 74151 praca równoległa i odczyt równoległy.

    2 wariant drabinla z rezystorów i odczyt AC/ DC
    -wyzerowanie na poczatku
    - testowanie dc
    -start programu gdy 1 linia sie zerwie
    -odczyt dc gdy natąpila zmiana zapisz timer zapisz wartość dc/ wartość dc zapisujesz w tym celu by po analizie danych wyłapac pekniecie kilku przewodów w tym samym czasie

    pozdrawiam dioda
  • #4 2052269
    szefo81
    Poziom 11  
    Posty: 5
    Na początku serdeczne dzięki za odpowiedzi.
    Zaquadnik napisał:

    ..w Twoim wypadku wystarczy rzeczywiście badać stan na nóżce... Tylko jeśli linii masz 40 i chcesz liczyć czas to hmmm..... mały kłopot. Można puścić powiedzmy 1 timer na 10 linii i osobno dla każdej linii zliczać "offset" w stosunku do wskazania timera, a za liczniki mogłyby robić dowolne komórki w pamięci...
    Czy mógłbyś dokładniej wyjaśnić jakby to wyglądało?

    Ja myslalem nad czymś co dzialaloby jak klawiatura- na wszystkich pinach wymusić stan wysoki i poprzez linie zewrzeć do masy. Kontroler widzialby zero do momentu zerwania polaczenia, w chwili gdy pojawi sie zero, zapisywałby aktualny stan licznika do zmiennej o nr linii. Problemem jest ilosc linii (ok 40). Najwazniejsze dla mnie jest by zapisywac mozliwie dokladny czas "pęknięcia" poszczególnych linii, nie musze wiedziec w którym miejscu pęka przewód potem poprzez rs232 przesylac "tabelkę" do kompuetra. Jeśli ktoś próbował montować coś podobnego to proszę o sugestie. Druga sprawa to samo połączenie kontrolera z komputerem poprzez rs232 chodzi o stronę sprzętową. Jak wygląda schemat takiego połączenia? Do tej pory mialem doczynienia z konrolerami AVR (ATmega128) program piszę pod Bascomem. Jeszcze raz pozdrawiam i proszę o pomoc.
  • REKLAMA
  • Pomocny post
    #5 2052560
    GienekS
    Poziom 32  
    Posty: 1971
    Pomógł: 139
    Ocena: 15
    40 linii to tylko 5 portów a ATmega128 ma ich przeszło 6 czyli w zupełności Ci wystarczy. Niektóre porty mają możliwość generowania przerwania jak się zmieni ich stan ale przy tej rozdzielczości (5ms) wystarczy skanowanie wszystkich wejść a po wykryciu zmiany zapisać bieżący czas w buforze. Po zerwaniu się wszystkich przewodów cały bufor możesz wysłać przez RS do PC-ta. Ten procesor ma dwa USART-y możesz sobie wybrać który będziesz używał.
  • #6 2067539
    szefo81
    Poziom 11  
    Posty: 5
    GienekS napisał:
    wystarczy skanowanie wszystkich wejść a po wykryciu zmiany zapisać bieżący czas w buforze


    Czy jako bieżący czas mogę wykorzystać RTC? mam wbudowany w module (korzystam z MMEGA01 propoxu - ATMega128, RTC, ISP, Flash)

    I jeszcze raz jeśli ktoś ma konkretny schemat połączenia ATmega128 do PC przez RS 232 to bardzo proszę o pomoc.
  • Pomocny post
    #7 2071122
    GienekS
    Poziom 32  
    Posty: 1971
    Pomógł: 139
    Ocena: 15
    Raczej nie, ponieważ RTC w ATmega z reguły robi się na odrębnym kwarcu 32kHz co daje przy odpowiednim ustawieniu preskalera na T2 przerwanie co 1 sek, to dla twojego pomiaru stanowczo za mało.
    Co do RS-a to musisz zastosować MAX232 aby konwertowań poziomy logiczne i to wszystko.
  • REKLAMA
  • #8 2073081
    strdaniel
    Poziom 20  
    Posty: 357
    Pomógł: 29
    Ocena: 4
    WITAM

    do kontroli lini rzeczywiście stosuje się dwie metody

    piersza opisana przez kolegów polega na wpuszczeniu fali prostokątnej do lini z sprawdzeniu czy wraca - jeśli na końcu lini zapniemy diode to dodatkowo będziemy sprawdzać czy jest to logiczna 1 czy zero

    drugi sposób polega na zbudowaniu takiego ukłądu który będzie na nasze wejście podawał prąd i sobie go kontrolował - myśle o napięciu - a na końcu przy naszym styku zapinamy dwa rezystory mniejszy i większy jeden w szereg drugi równolegle w ten sposób przy jednym stanie wejścia dostajemy prąd mniejszy a przy drugim prąd większy - przy przerwaniu lini prądu nie będzie wogóle a przy jej zwarciu prąd na tyle duży ile pozwoli zabezpieczenie w naszym ukłądzie (tzw. wejścia NAMUR)

    miłej zabawy :D
  • #9 2090403
    szefo81
    Poziom 11  
    Posty: 5
    A czy mogę skorzystać z któregoś z timerów tak aby uzyskać odpowiednią rozdzielczość i ludzki (w ms) wynik? tzn. jakie to ustawienie preskalera dla kwarcu 16 MHz? Albo czy da się jakoś ustalić np w procedurze przerwania po przepełnieniu timera taką wartość (wpisywaną po przepelnieniu) żeby przerwanie występowalo co ms i dodatkowo w procedurze przerwania inkrementowac jakąś zmienną i ta zmienna wpisywac jako czas? Czy jest do tego jakiś konkretny przelicznik?
    Przypominam że program będzie w bascomie więc fragmenty kodu są bardziej niż mile widziane :D
  • REKLAMA
  • #10 2090458
    marpiasek
    Poziom 27  
    Posty: 884
    Pomógł: 63
    Ocena: 41
    Jak w temacie.
    Proszę wykonać -bardzo dobrze linie-chyba nie "pęknie" i po kłopocie.
  • Pomocny post
    #11 2091482
    GienekS
    Poziom 32  
    Posty: 1971
    Pomógł: 139
    Ocena: 15
    szefo81 napisał:
    A czy mogę skorzystać z któregoś z timerów
    Jka najbardziej od tego one są. Każdy timerek ma swój preskaler który tak dobierasz aby mieć dla swojego kwarcu częstotliwość będąca twoim minimum czasowym i decydująca o dokładności. Druga sprawa to zmienna licząca te interwały i będąca jednocześnie twoim wynikiem.
  • #12 2098396
    szefo81
    Poziom 11  
    Posty: 5
    marpiasek napisał:

    Proszę wykonać -bardzo dobrze linie-chyba nie "pęknie" i po kłopocie.

    Urządzenie ma właśnie rejestrować pęknięcia. Nie z obawy przed awarią ale z istoty jego funkcjonowania...

    Dzięki wszystkim za pomoc, części już zamówione od piątku składam. Jeszcze raz proszę o schemat połączenia Atmega128 -- PC przez RS232 i przykładowy program w AVR Bascom.

Podsumowanie tematu

✨ Dyskusja dotyczy budowy urządzenia rejestrującego pęknięcia (zerwania) około 40 linii sygnałowych z dokładnością czasową rzędu 5 ms, wykorzystującego mikrokontroler ATmega128 oraz wyświetlacz LCD. Proponowane rozwiązania obejmują monitorowanie stanu linii poprzez wymuszenie stanu wysokiego i wykrywanie przełączenia na stan niski w momencie zerwania przewodu. Do pomiaru czasu sugerowane jest wykorzystanie timerów mikrokontrolera z odpowiednio dobranym preskalerem dla kwarcu 16 MHz, co pozwala na generowanie przerwań co 1 ms i inkrementację zmiennej czasowej. Wskazano, że RTC wbudowane w moduł nie zapewni wystarczającej rozdzielczości czasowej. Do komunikacji z komputerem zalecane jest użycie interfejsu RS232 z konwerterem poziomów logicznych MAX232. ATmega128 posiada wystarczającą liczbę portów (co najmniej 6) do obsługi 40 linii oraz dwa USART-y do transmisji danych. Proponowano także metody sprzętowe, takie jak multipleksery 74151 do równoległego odczytu linii lub układy monitorujące prąd na liniach (wejścia NAMUR). Autor prosił o schemat połączenia ATmega128 z komputerem przez RS232 oraz przykładowy kod w Bascom AVR do realizacji pomiarów i transmisji danych.
Wygenerowane przez model językowy.
REKLAMA