Witam.
Chcę zmierzyć długośc (czas trwania) którkich impulsów o amplitudzie ok. 2,5V i czasie trwania od kilkunastu, do ponad 500 mikrosekund, za pomocą mikrokontrolera AVR.
Czy zmierzyć jako przerwanie, czy może pośrednio na ADC za pomocą integratora (w grę wchodzi zasilanie pojedyncze opampa tylko)? Sęk w tym, że impulsy są bardzo krótkie a potrzebna rozdzielczość to min. 2 µs.
Impulsy powtarzają się dopiero po ok. 1,2-1,5 sek.
Jak zmierzyć czas trwania impulsu za pomocą AVR?
Tak na oko, to wydaje mi się, że przerwanie szybsze od ADC. Ustaw sobie na zbocze narastające i jak wystąpi przerwanie to przestaw na zboczę opadające i włącz timer.
Gdy wejdzie znów do przerwania, ale ze zbocza opadającego, to odczytaj timer i chyba będzie.
Jak timer będzie na 1 MHz to powinien zliczać co 1 µs. Wtedy timer 16bitowy, jak dasz 0,5 MHz (rozdz. 2 µs) a impulsy trwają do 500 µs to nawet 8 bitowy by wystarczył.
Myślę, że powinno wystarczyć, oczywiście używając zewnętrznego kwarcu.
Właściwie założyłem, że to przebieg zbliżony do prostokątnego.
Gdy wejdzie znów do przerwania, ale ze zbocza opadającego, to odczytaj timer i chyba będzie.
Jak timer będzie na 1 MHz to powinien zliczać co 1 µs. Wtedy timer 16bitowy, jak dasz 0,5 MHz (rozdz. 2 µs) a impulsy trwają do 500 µs to nawet 8 bitowy by wystarczył.
Myślę, że powinno wystarczyć, oczywiście używając zewnętrznego kwarcu.
Właściwie założyłem, że to przebieg zbliżony do prostokątnego.
Tak, przebieg jest zbliżony do prostokątnego.
Wiem także, że ADC nie da rady zmierzyć tak krótkich impulsów, w notce (np. do Atmegi
są czasy konwersji 65 do 300 us, czyli cieżko by było a rozdzielczość pomiaru marna.
Mi chodziło jednak o to, żeby użyć integratora na opampie (mam jeden wolny w układzie, TLV2622), zgodnie z definicją wystawia on napięcie proporcjonalne do długości impulsu, i to napięcie można mierzyć na ADC, jednakże jak dotąd nie wyszedł mi taki pomiar (R=22k, C=10nF) i ADC pokazywał 0. Może jak się bardziej skrupulatnie dobierze wartości? Nie wiem tylko, gdzie podłączyć wejście (+) opampa. Normalnie idzie do masy przy zasilaniu symetrycznym, przy pojedynczym jak do masy,pokazuje 0, jak się ustali dzielnikiem jakąś masę pozorną, ADC pokazuje tylko ta masę pozorną wedle masy rzeczywistej - sprawdzałem.
Spróbuję na licznikach. Jak złapie INT0 rising, szybko go przekonfiguruję na falling, poustawiam flagi i zmierzę ilość cykli Timer1, bo na Timer 0 wychodziło mi to kiepsko w teoretycznych obliczeniach.
Wiem także, że ADC nie da rady zmierzyć tak krótkich impulsów, w notce (np. do Atmegi
Mi chodziło jednak o to, żeby użyć integratora na opampie (mam jeden wolny w układzie, TLV2622), zgodnie z definicją wystawia on napięcie proporcjonalne do długości impulsu, i to napięcie można mierzyć na ADC, jednakże jak dotąd nie wyszedł mi taki pomiar (R=22k, C=10nF) i ADC pokazywał 0. Może jak się bardziej skrupulatnie dobierze wartości? Nie wiem tylko, gdzie podłączyć wejście (+) opampa. Normalnie idzie do masy przy zasilaniu symetrycznym, przy pojedynczym jak do masy,pokazuje 0, jak się ustali dzielnikiem jakąś masę pozorną, ADC pokazuje tylko ta masę pozorną wedle masy rzeczywistej - sprawdzałem.
Spróbuję na licznikach. Jak złapie INT0 rising, szybko go przekonfiguruję na falling, poustawiam flagi i zmierzę ilość cykli Timer1, bo na Timer 0 wychodziło mi to kiepsko w teoretycznych obliczeniach.
Przyznam się szczerze, że nie słyszałem jeszcze o układzie integratora 
No ale tak jak mówisz, ADC ma minimalny czas konwersji. Po za tym weź także pod uwagę dokładność ADC. Gdy mierzy się napięcie normalnie, przy mniej wymagających zastosowaniach, to wykonuje się nawet kilka pomiarów i wynik jest ich średnią, dla lepszej dokładności. Po za tym, jeśli czas impulsu przekładany jest na napięcie, to myślę, że małe wahania tego napięcia mogą stanowić większy czas niż 2 µs. ADC jest 10bitowy w ATMegach, więc może być ciężko uzyskać te 2 µs.
Myślę, że chyba dokładniejsze i prostsze rozwiązanie to z tymi timerami i na przerwaniach.
Jak masz wolny Timer1 to sobie go użyj, będzie z zapasem.
A na 8 bitowym timerze, też chyba by poszło. Gdyby cykl timera trwał 2 µs, to zapełnienie timera wymagało by 2*256 = 512 µs, czyli w sam raz tyle ile potrzebujesz.
No ale przy użyciu 16 bitowego timera, możesz mieć większą dokładność.
No ale tak jak mówisz, ADC ma minimalny czas konwersji. Po za tym weź także pod uwagę dokładność ADC. Gdy mierzy się napięcie normalnie, przy mniej wymagających zastosowaniach, to wykonuje się nawet kilka pomiarów i wynik jest ich średnią, dla lepszej dokładności. Po za tym, jeśli czas impulsu przekładany jest na napięcie, to myślę, że małe wahania tego napięcia mogą stanowić większy czas niż 2 µs. ADC jest 10bitowy w ATMegach, więc może być ciężko uzyskać te 2 µs.
Myślę, że chyba dokładniejsze i prostsze rozwiązanie to z tymi timerami i na przerwaniach.
Jak masz wolny Timer1 to sobie go użyj, będzie z zapasem.
A na 8 bitowym timerze, też chyba by poszło. Gdyby cykl timera trwał 2 µs, to zapełnienie timera wymagało by 2*256 = 512 µs, czyli w sam raz tyle ile potrzebujesz.
No ale przy użyciu 16 bitowego timera, możesz mieć większą dokładność.
Z tymi timerami wygląda obiecujaco. W ogóle to chcę zmierzyć pole powierzchni pod takim impulsem. Ma on kształt zbliżony do trójkąta. Rozdzielam taki impuls na 2 części. W jednej mierzę amplitudę przetwornikiem pamiętająco-próbkującym na ADC, a drugiemu (na 3 diodach w kierunku przewodzenia do masy) obcinam znaczną częśc wieszchołka i jako zbliżony do prostokąta chcę zmierzyć. Co ciekawe, mam też 3-ci kanał, który podany jest na INT0 procka i wyznacza mi start pomiaru.
Próbowałem już okiełznać temat i poprzeliczać wszystko w procku, dostosowujac funkcję. Jest na tym Forum oddzielny temat o dopasowaniu funkcji. Jednak nie otrzymałem wystarczajacej dokładności, i doszedłem, ze problem jest w części elektronicznej (sprzętowej), tak więc gra toczy sie dalej.
Próbowałem już okiełznać temat i poprzeliczać wszystko w procku, dostosowujac funkcję. Jest na tym Forum oddzielny temat o dopasowaniu funkcji. Jednak nie otrzymałem wystarczajacej dokładności, i doszedłem, ze problem jest w części elektronicznej (sprzętowej), tak więc gra toczy sie dalej.