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

[AVR][c] - pomiar czasu między impulsami w ns- układ analogowy ?

JuanD 07 Lis 2014 11:45 1797 9
  • #1 14109563
    JuanD
    Poziom 9  
    Witam.

    Mam przetwornik przemieszczenia Balluff BTL5-P1. Karta katalogowa tutaj:
    Link.

    Przebiegi sygnałów wyglądają tak:
    [AVR][c] - pomiar czasu między impulsami w ns- układ analogowy ?

    Przetwornik zabudowany jest w siłowniku hydraulicznym i mierzy aktualne położenie tłoka. O ile dobrze rozumiem zasadę jego działania, to na wejście INT należy podać impuls, aby w odpowiedzi uzyskać dwa impulsy. Czas między dwoma zboczami opadającymi jest proporcjonalny do aktualnego położenia.

    Maksymalny przesuw tłoka wynosi 100 mm, a dokładność z jaką powinno się to zmierzyć 0,1 mm.

    Czas jaki upłynie między dwoma jednakowymi zboczami sygnału jest proporcjonalny do drogi jaką będzie musiała pokonać fala elektromagnetyczna w przetworniku.

    S=V/t

    S-droga (położenie tłoka) [mm]
    V - prędkość propagacji fali [mm/us]
    t - czas [us]

    wg producenta w przybliżeniu V = 3000 m/s = 3 m/ms = 3mm/us

    Dla maksymalnego położenie tłoka tmax = 33,33 us (100[mm]/ 3[mm/us])

    Dla wymaganej dokładności 0,1 mm t01 = 0,033 us = 33ns !

    Jak można zmierzyć czas z taką dokładnością ? Rozumiem, że metody cyfrowe raczej odpadają, bo wymagają uC taktowanych w GHz.

    Zastanawiam się nad układem analogowym, który wykorzystywałby ładowanie kondensatora ze stabilnego źródła prądu. Coś takiego jest chyba realizowane w układach PIC z CTMU. Na razie nie znalazłem odpowiednika w AVR. Czy ktoś zetknął się już z takim tematem i może coś podpowiedzieć ?
  • #2 14109622
    Steryd3
    Poziom 33  
    Wychodzi z tego, że chodzi Ci o pomiar czasu z rozdzielczością minimum 33ns?
    Pomiar cyfrowy jak najbardziej wchodzi w grę -wystarczy zastosować tylko szybki mikrokontroler np.STM32. AVR z taktowaniem do 20 MHz (może Xmegi są szybsze) to stanowczo za mało.
  • #3 14109661
    tmf
    VIP Zasłużony dla elektroda
    Z AVR, XMEGA taktowana 32 MHz, daje okres 31,25 ns , czyli w zupełności wystarczy. Pomiar sprzętowy timerem ustawionym na pomiar szerokości impulsu - wszystko odbywa się całkowicie sprzętowo.
  • #4 14109696
    TvWidget
    Poziom 38  
    Zmierzenie czasu z podaną dokładnością nie jest specjalne trudne. Sprawdź jednak obliczenia. Taki pomiar wymaga dopasowanych falowo połączeń. Czyli odpowiednich złącz, kabli koncentrycznych itd. Tego przecież w tym przetworniku nie ma.
  • #5 14123632
    JuanD
    Poziom 9  
    Cytat:
    wystarczy zastosować tylko szybki mikrokontroler np.STM32. AVR z taktowaniem do 20 MHz (może Xmegi są szybsze) to stanowczo za mało.

    kolego Steryd3
    Mi właśnie chodzi o zrealizowanie tego na AVR. Dlatego piszę w tym dziale. Dzięki, za podpowiedź, ale to na razie nie dla mnie.


    kolego tmf:

    Dzięki za naprowadzenie. Nie używałem dotąd Xmega i nie pomyślałem o możliwości przekroczenia 20MHz. To chyba dobra okazja, żeby w końcu się w xmegi zaangażować

    TvWidget:
    Dla mnie właśnie jest trudne ;) Szczególnie, że te ok 33 ns to dla mnie minimalna dokładność jaką mogę dopuścić (+/- 0,1 mm), a przy 32 MHz i Atxmega to maksimum rozdzielczości.

    Do do podłączeń, to przetwornik ma wyprowadzony przewód ( 3x2 lub 4x2 w ekranie). Sygnały są przesyłane parami, np INT i ~INT.
  • Pomocny post
    #6 14123723
    TvWidget
    Poziom 38  
    Załóżmy, że chcesz zmierzyć czas pomiędzy dwoma impulsami. W rzeczywistości oznacza to pomiar czau pomiędzy dwoma zboczami. Zbocza jednak mają określony czas narastania. Co więcej w przypadku niedopasowanych falowo połączeń pojawią się odbicia sygnału oscylacje itp. To wszystko kompletnie uniemożliwi dokładny pomiar.
  • #7 14123735
    BlueDraco
    Specjalista - Mikrokontrolery
    Jest dostępnych mnóstwo uC z rdzeniami Cortex-M3, których timery są taktowane częstotliwościami rzędu 80..120 MHz, choćby STM32F4xx lub LPC17xx.
  • Pomocny post
    #8 14123747
    Steryd3
    Poziom 33  
    Ostatecznie możesz zrealizować taki pomiar w oparciu o układy cyfrowe. Budujesz generator o odpowiednio dużej częstotliwości do tego jakiś licznik i układ bramkujący ...a mikrokontroler stosujesz do sterowania tym układem oraz odczytem wartości z licznika i akwizycji na wyświetlacz.
    Wspomniane mikrokontrolery XMEGA są oczywiście lepszym wyjściem z sytuacji niż budowa układu cyfrowego, nie mniej mam wrażenie, że to trochę rozwiązanie "na granicy" -ale skoro to musi być 8-bitowy AVR.
    Nie rozumiem, za bardzo czemu STM32 lub inne ARMy miały by być nie dla Ciebie -skoro radzisz sobie z AVRami to i ARMy możesz okiełznać. Przypuszczam, że "przeskoczenie" z ATmega na ATxmega zajmie Ci niewiele mniejszą ilość czasu jak opanowanie STM32 w stopniu pozwalającym na napisanie programu który umożliwi pomiar z lepszą rozdzielczością.
  • Pomocny post
    #9 14123875
    tmf
    VIP Zasłużony dla elektroda
    BlueDraco - taktowanie timera nie jest problemem, nawet w XMEGA może to być 256 MHz, ba, nawet w zwykłym ATTiny może być to w granicach 100 MHz. Problemem jest to, że wejście jest synchroniczne i procesor musi mieć możliwość samplowania wejścia z tak dużą częstotliwością. Stąd też taktowanie IO musi być wysokie, a to pociąga konieczność albo pracy na granicy i XMEGA wystarczy, albo użycia MCU taktowanego bardzo wysoko, tak jak pisałeś.
    Pytanie otwarte, czy dla tego projektu szybciej jest wykorzystać narzędzie, które się zna (AVR), czy tracić czas na poznawanie nowego narzędzia. IMHO jeśli narzędzie, które znam mi wystarcza do realizacji projektu, to po co uczyć się nowego, tracąc czas?
    Tym bardziej, że jak słusznie zauważył kolega TvWidget przy wyższych częstotliwościach mogą pojawić się zgoła inne problemy, które nam zrujnują pomiary.
  • #10 14130297
    JuanD
    Poziom 9  
    Udało mi się znaleźć układ dedykowany do tego przetwornika. Oznaczenie producenta: BTL5-A-IC05-ASIC02-719977. Ciekawe, bo polski przedstawiciel firmy Balluff nie wiedział o jego istnieniu. Układ ten daje mi możliwość, bez dodatkowego kombinowania możliwość pomiaru z rozdzielczością 5 um. Co nawet przy dość dużej cenie (ok 200 zł) czyni go rozwiązaniem bezkonkurencyjnym. Obsługa wydaje się łatwa, tylko wymaga poświęcenia kilkunastu pinów uC (!). Układ zamówiłem, dam znać jak dojdzie i go uruchomię.

    Dziękuję za wszystkie podpowiedzi. Z powodu braku czasu nie mogłem brać pod uwagę przesiadki na całkiem inne środowisko. Najbliżej mi było do zastosowania Xmegi, tylko że efekt taj pracy byłby "na granicy" moich wymagań. O Xmaegach przy okazji trochę się dowiedziałem i myślę, że wkrótce się nimi zajmę ;)

    Wasze odpowiedzi pomogły mi szybko zorientować się w temacie. Klikam pomógł. Temat zamknę po wykonaniu prób.
REKLAMA