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.

rejestrator pęknięcia przewodu

szefo81 02 Gru 2005 15:48 1866 11
  • #1 02 Gru 2005 15:48
    szefo81
    Poziom 10  

    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.

    0 11
  • #2 03 Gru 2005 20:07
    Zaquadnik
    Poziom 27  

    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...

    0
  • #3 03 Gru 2005 23:45
    dioda1000
    Poziom 27  

    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

    0
  • #4 04 Gru 2005 12:49
    szefo81
    Poziom 10  

    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.

    0
  • Pomocny post
    #5 04 Gru 2005 14:11
    GienekS
    Poziom 32  

    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ł.

    0
  • #6 09 Gru 2005 10:35
    szefo81
    Poziom 10  

    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.

    0
  • Pomocny post
    #7 10 Gru 2005 14:47
    GienekS
    Poziom 32  

    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.

    0
  • #8 11 Gru 2005 09:14
    strdaniel
    Poziom 20  

    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

    0
  • #9 16 Gru 2005 22:51
    szefo81
    Poziom 10  

    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

    0
  • #10 16 Gru 2005 23:03
    marpiasek
    Poziom 27  

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

    0
  • Pomocny post
    #11 17 Gru 2005 12:34
    GienekS
    Poziom 32  

    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.

    0
  • #12 19 Gru 2005 18:47
    szefo81
    Poziom 10  

    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.

    0