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

Atmega/Attiny z dwoma pinami ICP do pomiaru szerokości impulsu PWM 1kHz

jari17 12 Mar 2018 10:38 1362 26
REKLAMA
  • #1 17097384
    jari17
    Poziom 7  
    Posty: 93
    Ocena: 7
    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.
  • REKLAMA
  • #2 17097408
    ghost2000
    Poziom 18  
    Posty: 375
    Pomógł: 2
    Ocena: 12
    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.
  • #3 17097428
    excray
    Poziom 41  
    Posty: 5502
    Pomógł: 739
    Ocena: 657
    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.
  • #4 17097441
    ghost2000
    Poziom 18  
    Posty: 375
    Pomógł: 2
    Ocena: 12
    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.
  • #5 17097451
    excray
    Poziom 41  
    Posty: 5502
    Pomógł: 739
    Ocena: 657
    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.
  • #6 17097481
    ghost2000
    Poziom 18  
    Posty: 375
    Pomógł: 2
    Ocena: 12
    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.
  • #7 17097501
    jari17
    Poziom 7  
    Posty: 93
    Ocena: 7
    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.
  • REKLAMA
  • #8 17097570
    ghost2000
    Poziom 18  
    Posty: 375
    Pomógł: 2
    Ocena: 12
    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?
  • #9 17097623
    jari17
    Poziom 7  
    Posty: 93
    Ocena: 7
    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?
  • #10 17097648
    ghost2000
    Poziom 18  
    Posty: 375
    Pomógł: 2
    Ocena: 12
    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.
  • #11 17097653
    jari17
    Poziom 7  
    Posty: 93
    Ocena: 7
    Max musi miec 20 pin

    Dodano po 1 [minuty]:

    Ma odczytywac pozycje z enkodera 12bit
  • REKLAMA
  • #12 17097686
    ghost2000
    Poziom 18  
    Posty: 375
    Pomógł: 2
    Ocena: 12
    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?
  • #13 17097727
    jari17
    Poziom 7  
    Posty: 93
    Ocena: 7
    Oznaczenie rohs MA3
  • #14 17097794
    ghost2000
    Poziom 18  
    Posty: 375
    Pomógł: 2
    Ocena: 12
    jari17 napisał:
    Oznaczenie rohs MA3

    Może jakis PDF?
  • #15 17097825
    jari17
    Poziom 7  
    Posty: 93
    Ocena: 7
    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.
  • #16 17097830
    Sareph
    Poziom 24  
    Posty: 638
    Pomógł: 65
    Ocena: 378
    jari17 napisał:
    Nie moge. Nie mam zgody.

    https://www.usdigital.com/products/encoders/absolute/rotary/shaft/ma3 - ten?
  • #17 17097833
    jari17
    Poziom 7  
    Posty: 93
    Ocena: 7
    Tak. To ten.
  • REKLAMA
  • #18 17097843
    ghost2000
    Poziom 18  
    Posty: 375
    Pomógł: 2
    Ocena: 12
    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.
  • #19 17101793
    jari17
    Poziom 7  
    Posty: 93
    Ocena: 7
    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?
  • #20 17101830
    ghost2000
    Poziom 18  
    Posty: 375
    Pomógł: 2
    Ocena: 12
    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ć?
  • #21 17101859
    jari17
    Poziom 7  
    Posty: 93
    Ocena: 7
    Czyli atmega16m1 tez odpada :(
  • #22 17101865
    ghost2000
    Poziom 18  
    Posty: 375
    Pomógł: 2
    Ocena: 12
    jari17 napisał:
    Czyli atmega16m1 tez odpada :(

    Szukaj w STM32, w AVR nie znajdziesz.
  • #23 17101895
    jari17
    Poziom 7  
    Posty: 93
    Ocena: 7
    A STM8? Maja taka moxliwosc?
  • #24 17101909
    ghost2000
    Poziom 18  
    Posty: 375
    Pomógł: 2
    Ocena: 12
    jari17 napisał:
    A STM8? Maja taka moxliwosc?

    Też mi przyszedł do głowy Link
  • #25 17101978
    archanoid
    Poziom 26  
    Posty: 867
    Pomógł: 76
    Ocena: 251
    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.
  • #26 17101985
    ghost2000
    Poziom 18  
    Posty: 375
    Pomógł: 2
    Ocena: 12
    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.
  • #27 17102003
    archanoid
    Poziom 26  
    Posty: 867
    Pomógł: 76
    Ocena: 251
    Witam .Można obniżyć taktowanie do 10 MHz i będziemy mieli 10000 taktów a wtedy mamy jesze prostsze obliczenia.

Podsumowanie tematu

LABEL_AI_GENERATED
Użytkownik poszukuje mikrokontrolera Atmega/Attiny z co najmniej dwoma pinami ICP do pomiaru szerokości impulsu sygnału PWM o częstotliwości 1 kHz. W odpowiedziach zasugerowano, że większość układów Atmega w obudowach 40/44 pin ma dwa piny ICP, jednak mniejsze modele Attiny zazwyczaj mają tylko jeden. Proponowano również alternatywne metody pomiaru, takie jak wykorzystanie przerwań od timera lub zastosowanie filtru DP i przetwornika ADC. Użytkownik rozważał również użycie enkodera MA3, który generuje sygnał PWM, ale napotkał ograniczenia w dokładności pomiarów na platformie AVR. Wskazano na możliwość użycia mikrokontrolerów STM32 lub Microchip PIC, które oferują większą liczbę pinów i lepsze możliwości pomiarowe.
Podsumowanie AI na podstawie dyskusji. Może zawierać błędy.
REKLAMA