Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Atmega pomiar wypełnienia impulsu

12 Mar 2018 10:38 792 26
  • Poziom 5  
    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.
  • Poziom 18  
    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.
  • Poziom 40  
    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.
  • Poziom 18  
    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.
  • Poziom 40  
    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.
  • Poziom 18  
    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.
  • Poziom 5  
    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.
  • Poziom 18  
    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?
  • Poziom 5  
    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?
  • Poziom 18  
    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.
  • Poziom 5  
    Max musi miec 20 pin

    Dodano po 1 [minuty]:

    Ma odczytywac pozycje z enkodera 12bit
  • Poziom 18  
    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?
  • Poziom 18  
    jari17 napisał:
    Oznaczenie rohs MA3

    Może jakis PDF?
  • Poziom 5  
    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.
  • Poziom 18  
    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.
  • Poziom 5  
    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?
  • Poziom 18  
    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ć?
  • Poziom 5  
    Czyli atmega16m1 tez odpada :(
  • Poziom 18  
    jari17 napisał:
    Czyli atmega16m1 tez odpada :(

    Szukaj w STM32, w AVR nie znajdziesz.
  • Poziom 5  
    A STM8? Maja taka moxliwosc?
  • Poziom 18  
    jari17 napisał:
    A STM8? Maja taka moxliwosc?

    Też mi przyszedł do głowy Link
  • Poziom 26  
    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.
  • Poziom 18  
    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.
  • Poziom 26  
    Witam .Można obniżyć taktowanie do 10 MHz i będziemy mieli 10000 taktów a wtedy mamy jesze prostsze obliczenia.