Strona 1 z 1
Triggering - problem
: 31 lip 2009 04:26
autor: set-han
Witam,
na wstepie powiem, ze korzystam z NI USB-6210, karta NI-PXI-8106.
Mam dwa kanaly na ktore wprowadzam 2 sygnaly : analogowy (napiecie) i cyfrowy (prostokatny). Chcialbym pobrac 256 probek z sygnalu analogowego. Pobierane powinny byc wtedy, gdy na prostokatnym sygnale wystapi narastajace zbocze. Czyli pobieranie powinno zaczac sie przy pierwszym zboczu narastajacym, i zakonczyc przy 256tym.
Kombinowalem 2 dni, ale nie udalo mi sie tego rozwiazac, mam nadziej, ze tutaj znajde rozwiazanie.
Pozdrawiam
Re: Triggering - problem
: 31 lip 2009 10:46
autor: Nowszy
Witam
Może najprościej po prostu wykorzystać sygnał prostokątny jako sample clock dla wejścia analogowego?
Re: Triggering - problem
: 31 lip 2009 12:31
autor: set-han
Witam,
dzieki za szybka odpowiedz.
Tylko teraz w 70-80% uruchamiania programu wyskakuje nastepujacy blad:
Error -200019 occurred at DAQmx Read (Analog 1D DBL 1Chan NSamp).vi:1
Possible reason(s):
Measurements: ADC conversion attempted before the prior conversion was complete.
Increase the period between ADC conversions. If you are using an external clock, check your signal for the presence of noise or glitches.
Task Name: _unnamedTask<4E7>
Do tego mam wrazenie, ze niezbyt dokladnie sa pobierane te probki.
Sygnalem prostokatnym jest sygnal pochodzacy z enkodera, w zaleznosci od predkosci silnika bedzie wieksza/mniejsza czestotliwosc. Ale nawet przy niewielkich predkosciach ten blad sie pojawial.
Wczesniej ten problem rozwiazalem porownujac stany sygnalu prostokatnego, ale to dzialalo tylko przy niskich obrotach silnika - przy wyzszych program "gubil" probki.
Tutaj fragment programu odpowiedzialny za to:
Triggering - problem
: 31 lip 2009 13:16
autor: Nowszy
Masz możliwość zobaczenia tego sygnału prostokątnego na oscyloskopie? Może faktycznie są tak zakłucenia?
Triggering - problem
: 31 lip 2009 13:45
autor: vugie
Na pewno chcesz używać zmiennego częstotliwościowo sygnału jako zegara? Jedna próbka sygnału powinna mieć stałą szerokość czasową, inaczej sygnał będzie raczej bezwartościowy, abstrahując już od możliwości sprzętowych takiego pomiaru.
Rozumiem, że enkoder ma 256 impulsów/obrót i chcesz zmierzyć sygnał dla pełnego kąta obrotu? Czy silnik kręci się cały czas, czy rozpędza się podczas pomiaru? Myślę że powinieneś użyć wewnętrznego zegara z częstotliwością przynajmnie 10x większą niż to co daje enkoder i mierzyć OBA sygnały przes czas wystarczająco długi by znalły się tam te 256 impulsów (można użyć licznika). Niezależnie możesz oczywiście wyzwalać pomiar sygnałem z enkodera, ale ma to chyba sens tylko wtedy gdy przed pomiarem silnik stoi.
I jeszcze jedno: Czy świadomie użyłeś trybu differencial? Łączy się to z tym, że masy mierzonego sygnału nie podpina się do masy urządzenia tylko do drugiego wejścia analogowego (zwykle jest to np. para AI0-AI8)
Re: Triggering - problem
: 31 lip 2009 14:15
autor: set-han
Nowszy, sprawdzałem to na oscyloskopie, zakłóceń nie ma. Ponadto przy metodzie porównywania stanów wszystko działa ładnie, tylko że wolno.
vugie , sygnał nie jest zmienny częstotliwościowo - ustawiam daną prędkość i tak będzie zawsze pracował silnik. Teraz staram się, aby ta prędkość była jak najwyższa. Czyżbym gdzieś w programie popełnił błąd i ustawił zmienną częstotliwość? Pierwszy raz działam z tym, możliwe, że coś przeoczyłem.
Tak, 256 impulsów to jeden obrót silnika. Faktycznie nie zwróciłem uwagi - silnik startuje - zbieram próbki - silnik zatrzymuje się. Nie czuje się mocny w konfigurowaniu odpowiednio zegarów wewnętrznych / zewnętrznych i teraz, jak nie mam przed sobą LabVIEW to nie bardzo wiem jak się za to zabrać

W poniedziałek będę z powrotem w pracy to spróbuje coś pokombinować. Jeżeli miałbyś czas i chęci wrzucić jakiś przykładowy program odnośnie tego zegara wewnętrznego to byłbym wdzięczny.
Co do differencial - tak, użyłem tego celowo i podpięte mam AI - AI9

Re: Triggering - problem
: 31 lip 2009 18:14
autor: skoziate
Wciaz najprawdopodomniej mamy do czynienia z "brudnym" sygnalem z enkodera. Mozna go przefiltrowac przy pomocy licznika:
http://decibel.ni.com/content/docs/DOC-3766
Re: Triggering - problem
: 03 sie 2009 04:31
autor: set-han
Witam po weekendzie.
Dzieki za rady, ale nie bardzo wiem jak mam ten filtr zastosowac. Mam podac zrodlo licznika, ale to jakiegos wbudowanego? jak moge sie dowiedziec gdzie jest taki licznik? bo jak probowalem podac sciezke do enkodera, to pojawial sie blad.
I jak moge wykorzystac ten przefiltrowany sygnal jak argumentem podawanym na zegar jest po prostu sciezka do sygnalu ( tak jak jest to pokazane na moim screenie pare postow wyzej), a jak dany sygnal chce przefiltrowac, to nie ma na wyjsciu sciezki.
Mam nadzieje, ze pisze z sensem, bo niebardzo sie na tym znam.
Triggering - problem
: 03 sie 2009 12:03
autor: vugie
Sygnał z licznika można przefiltrować, ale nie bardzo widzę w jaki sposób użyć go potem jako zegara...
Odnośnie konfiguracji licznika. Jeżeli wybrałeś już w selektorze polimorficznym CI (Counter input) to na wejściu ścieżki prawo-kliknij i stwórz stałą. Będzie ciut inna niż dla normalnego i będzie tam coś w rodzaju dev1/ctr0 i ctr1 (piszę z pamięci, mogłem coś pokręcić). A które to są fizycznie porty, to trzeba już znaleźć w dokumentacji, w każdym razie są to konkretne dwa porty i na innych licznik nie będzie działać.
Re: Triggering - problem
: 04 sie 2009 07:45
autor: set-han
witam znow.
Stworzylem VI z filtrem, ktory zaproponowal skoziate.
Jezeli go odpale, pare razy przekreci sie silnik, i potem odpalam program glowny to jest wszystko wporzadku ;] Ale bez odpalenia tego VI z filtrem program bedzie sypal bledy. Tak jest za kazdym uruchomieniem komputera.
I teraz moje pytanie. Czy proponowane przeze mnie rozwiazanie jest dobre? Mianowicie: Przy rozpoczeciu programu po prostu odpalic silnik na kilka okrazen i przefiltrowac sygnal tym filtrem? I potem zaczac wlasciwa prace programu?
EDIT: ok, juz sobie poradzilem inaczej. wszystko ladnie dziala. Dziekuje za pomoc.
Re: Triggering - problem
: 04 sie 2009 16:13
autor: skoziate
Wybaczcie wszyscy, chyba zbyt pochopnie podałem wcześniej link. Raz zastosowałem licznik do filtrowania sygnału cyfrowego, lecz w prostszy sposób. Działa to tak:
1. Tworzę zadanie generowania pojedynczego impulsu przy pomocy licznika, które może być wyzwalane wielokrotnie (property:retriggerable)
2. Ĺąródłem wyzwalania będzie sygnał, który chcę wyltrować.
3. Wyjściem będzie sygnał filtorwany.
3. Długość generowanego impulsu będzie określała częstotliwość graniczną filtru.
Re: Triggering - problem
: 05 sie 2009 04:00
autor: set-han
hmm...
Szczerze mowiac, to ten schemat ktory mi podales wczesniej dziala bez zarzutow. Przed kazda wlasciwa praca programu wrzucam ten filtr i nie ma najmniejszych problemow, wiec chyba to tak zostawie

Triggering - problem
: 05 sie 2009 13:01
autor: skoziate
Zorientowałem się, że przykład z debounce filter jest dla kart licznikowych, a tutaj mamy do czynienia z 6210. Nie doceniłem tej karty, bo okazuje się, że też posiada debounce filter.
Drugi przykład do zastosowania dla tych, którzy filtra nie mają. Można wtedy zrobić sobie filtr z licznika.