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.

Atmega pomiar wypełnienia impulsu

jari17 12 Mar 2018 10:38 405 26
  • #1 12 Mar 2018 10:38
    jari17
    Poziom 4  

    Witam,
    poszukuje uC Atmega/Attiny z dwoma (lub więcej) pinami ICP. Potrzebuje zmierzyć szerokość impulsu sygnału PWM.
    Czy można zmierzyć wypełnienie inną metodą?? Częstotliwość PWM wynosi 1kHz.

    0 26
  • #2 12 Mar 2018 10:48
    ghost2000
    Poziom 17  

    jari17 napisał:
    poszukuje uC Atmega/Attiny z dwoma (lub więcej) pinami ICP

    Strona Microchipa milczy? Była wyszukiwarka układów, wystarczyło wprowadzić czego się oczekuje od układu. Zasadniczo wszystkie mega w obudowie 40/44pin mają co najmniej 2 ICP.

    jari17 napisał:

    Czy można zmierzyć wypełnienie inną metodą

    Zależy jakiej rozdzielczości oczekujesz. Jeśli niedużej (kilka bit), to można w przerwaniu od timera.

    0
  • #3 12 Mar 2018 11:00
    excray
    Poziom 39  

    Jeden sygnał = jeden pin ICP. Wystarczy sobie zmieniać w przerwaniu od ICP, zbocze na jakie ma reagować to przerwanie. Ewentualnie przy większej liczbie sygnałów - przerwania INT lub PCINT.

    0
  • #4 12 Mar 2018 11:09
    ghost2000
    Poziom 17  

    excray napisał:
    Ewentualnie przy większej liczbie sygnałów - przerwania INT lub PCINT.

    Ale to już bardziej programowy pomiar, przez co mniej dokładny ale dokładniejszy niż w przerwaniu od timera.

    0
  • #5 12 Mar 2018 11:12
    excray
    Poziom 39  

    Masz błąd związany z upływem czasu między wystąpieniem przerwania a odczytaniem rejestru TCNT w obsłudze przerwania. Niemniej ten błąd jest taki sam dla każdego kolejnego pomiaru przez co odejmuje się on i otrzymujesz dokładne wskazania.

    0
  • #6 12 Mar 2018 11:31
    ghost2000
    Poziom 17  

    excray napisał:
    Niemniej ten błąd jest taki sam dla każdego kolejnego pomiaru przez co odejmuje się on i otrzymujesz dokładne wskazania

    O ile nie ma uruchomionych innych przerwań. Nawet, jak te inne przerwania zrobi o "niższym priorytecie" to i tak mogą wystąpić w tym samym czasie lub te "niższe" trochę wcześniej niż przerwanie np PCINT. To może spowodować konieczność wykonania skoku w przerwanie o "niższym priorytecie", wykonania sei() i rozkazu zaraz za nim. Ponadto, ciężko zrobić aby przerwania od USART były NO_BLOCK a jeśli już to sei() nie będzie pierwszym rozkazem a 5 czy 10 i bez wstawki asm sie nie obejdzie.
    Skoro więc autor jest na etapie wyboru procka i zależy mu na rozdzielczości to musi wybrać taki, co ma odpowiednią liczbie wejść ICP.

    excray napisał:
    i otrzymujesz dokładne wskazania

    Nie, bo rozkazy mogą wykonywać się w różnej liczbie cykli i nawet jak nie ma innych przerwań, to czas wejścia w np PCINT będzie różny.

    Naturalnie, jeśli rozdzielczość nie musi być duża (np timer ma preskaler 1024)y, można użyć dowolnej metody.

    0
  • #7 12 Mar 2018 11:38
    jari17
    Poziom 4  

    Z tego co widze wiekszą liczbe icp mają tylko duże atmegi. Mi zależy jednak na malym attinie. Nie znalazlem czy cos pominłem.

    0
  • #8 12 Mar 2018 12:07
    ghost2000
    Poziom 17  

    jari17 napisał:
    Z tego co widze wiekszą liczbe icp mają tylko duże atmegi. Mi zależy jednak na malym attinie. Nie znalazlem czy cos pominłem.

    Tiny mają co najwyżej jedno wejście ICP. Mały to w sensie wielkości obudowy? Jaka max?

    0
  • #9 12 Mar 2018 12:28
    jari17
    Poziom 4  

    Tak. Maly w sensie z mala iloscia pinow.
    Dodano po 2 [minuty]:
    A moze zastosowac filtr DP i ADC (przetwornik pwm-voltage)? Macie z tym doswiadczenie?

    0
  • #10 12 Mar 2018 12:34
    ghost2000
    Poziom 17  

    jari17 napisał:
    Tak. Maly w sensie z mala iloscia pinow.

    A ile to mało? 6? 8?

    Dodano po 57 [sekundy]:

    jari17 napisał:
    A moze zastosowac filtr DP i ADC

    Wszystko zależy od rozdzielczości i precyzji. Wiesz jaki rozrzut mają kondensatory?

    Łatwiej byłoby powiedziec do czego ta ma służyć. Jak będzie sterować np wskaźnikiem analogowym czy linijką led, to rozdzielczość nie musi byc duża.

    0
  • #11 12 Mar 2018 12:38
    jari17
    Poziom 4  

    Max musi miec 20 pin

    Dodano po 1 [minuty]:

    Ma odczytywac pozycje z enkodera 12bit

    0
  • #12 12 Mar 2018 12:50
    ghost2000
    Poziom 17  

    jari17 napisał:
    Max musi miec 20 pin

    Z AVR nic nie kojarzę. W obudowie 44pin tak, 32 zdaje się też są. ST8 ma tylko jedno wejście więc odpada. Zdaje się tylko ARM wchodzi w grę ale nie szukałem, bo pewnie ARM odpada.

    jari17 napisał:

    Ma odczytywac pozycje z enkodera 12bit

    Co to za enkoder co daje PWM?

    0
  • #13 12 Mar 2018 13:03
    jari17
    Poziom 4  

    Oznaczenie rohs MA3

    0
  • #14 12 Mar 2018 13:30
    ghost2000
    Poziom 17  

    jari17 napisał:
    Oznaczenie rohs MA3

    Może jakis PDF?

    0
  • #15 12 Mar 2018 13:43
    jari17
    Poziom 4  

    Nie moge. Nie mam zgody.
    Potrzebuje tylko wiedziec czy przez tyn filtr i adc bedzie to dzialac. Enkoder ma 12 bit.
    Zasada jego dzislania jest prosta . Im pelniejszy obrot tym wieksze wypelnienie.

    0
  • #18 12 Mar 2018 13:50
    ghost2000
    Poziom 17  

    jari17 napisał:
    Nie moge. Nie mam zgody.

    Tajne przez poufne, przychodzi mi na myśl "radź sobie sam".

    jari17 napisał:

    Potrzebuje tylko wiedziec czy przez tyn filtr i adc bedzie to dzialac. Enkoder ma 12 bit.

    Będzie, ale 12 bit to nie uzyskasz:
    - AVR ma przetwornik 10-bit
    - Jak realnie na AVR uzyskasz 8 to max (możesz kombinować z oversamplingiem)
    - Elementy RC ograniczają dokładność, jak uzyskasz 1% (ok 7-bit) to będzie dobrze (problemem sś kondensatory)
    - Możesz uzyskać większa dokładność, ale będzie wymagana okresowa kalibracja.

    0
  • #19 14 Mar 2018 08:47
    jari17
    Poziom 4  

    Atmega16M1 posiada da piny ICP1A i ICP1B. Czy można korzystać z tych pinów jednocześnie?? To znaczy czy mozna mierzyć szerokość impusu 2 niezależnych sygnałów?

    0
  • #20 14 Mar 2018 09:07
    ghost2000
    Poziom 17  

    jari17 napisał:
    Atmega16M1 posiada da piny ICP1A i ICP1B. Czy można korzystać z tych pinów jednocześnie?? To znaczy czy mozna mierzyć szerokość impusu 2 niezależnych sygnałów?

    Możesz czekać aż ktoś, za ciebie, przeczyta notę katalogową, możesz kliknąć w Link, możesz wziąć na logikę. Przetwornika ma 8 wejść ADC, z ilu równocześnie może próbkować sygnał? Timer ma kilka wejść, z ilu równocześnie może korzystać?

    0
  • #21 14 Mar 2018 09:19
    jari17
    Poziom 4  

    Czyli atmega16m1 tez odpada :(

    0
  • #22 14 Mar 2018 09:21
    ghost2000
    Poziom 17  

    jari17 napisał:
    Czyli atmega16m1 tez odpada :(

    Szukaj w STM32, w AVR nie znajdziesz.

    0
  • #23 14 Mar 2018 09:39
    jari17
    Poziom 4  

    A STM8? Maja taka moxliwosc?

    0
  • #24 14 Mar 2018 09:46
    ghost2000
    Poziom 17  

    jari17 napisał:
    A STM8? Maja taka moxliwosc?

    Też mi przyszedł do głowy Link

    0
  • #25 14 Mar 2018 10:37
    archanoid
    Poziom 25  

    Witam . Ja proponował bym ci coś z Microchipa . Przykładowo pic18f26k22 to aż na wyrost . Ma trzy timery 16 bitowe które można taktować sygnałem 64MHz a dodatkowo każdy timer ma sterowanie bramką. Jeden timer może mierzyć czas trwania stanu wysokiego , drugi stanu niskiego a trzeci cały okres . Potem pozostaje tylko matematyka. Nawet w asemblerze program będzie prosty gdyż większość pomiarów będzie robiona sprzętowo. Przy taktowaniu 64MHz i sygnale wejściowym 1kHz mamy 64000 na jeden okres sygnału wejściowego .Więc rozdzielczość powinna być aż nad to wystarczająca.

    0
  • #26 14 Mar 2018 10:41
    ghost2000
    Poziom 17  

    archanoid napisał:
    Nawet w asemblerze program będzie prosty gdyż większość pomiarów będzie robiona sprzętowo.

    Pomiary tak, matematyka niekoniecznie będzie prosta w asm.

    0
  • #27 14 Mar 2018 10:53
    archanoid
    Poziom 25  

    Witam .Można obniżyć taktowanie do 10 MHz i będziemy mieli 10000 taktów a wtedy mamy jesze prostsze obliczenia.

    0