Elektroda.pl
Elektroda.pl
X

Search our partners

Find the latest content on electronic components. Datasheets.com
Elektroda.pl
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

ATtina2313 - Obrotomierz

lukaskay 01 May 2009 11:30 3392 21
  • #1
    lukaskay
    Level 10  
    Witam

    Chciałbym was poprosić o pomoc robię prace dyplomowa stanowisko do badania silnika BLDC i niedawno wpadłem z promotorem na pomysł aby wykonać pomiar prędkości obrotowej tego silnika przez mikrokontroler nie ukrywam ze ta strona pomogła w decyzji.
    Różnica jest taka ze ja mam juz gotowy silnik z falownikiem i mam dostęp do sygnałów z enkodera (optycznego) sa one wyprowadzone po to by moc je poobserwować jest to idealny sygnał prostokątny na poziomie 12 V.
    Wykonanie tego układu nie jest głównym celem mojej pracy a skutecznie ja opóźnia gdyż jestem dosyć kiepski z mikrokontrolerów.
    tyle co do opisu sytuacji



    TERAZ

    Pierwszy problem
    Na powyższej stronie jest gotowy program bawiąc się w bascomie dostosowałem go do swoich potrzeb (dodałem linijkę dotycząca wyświetlacza gdyż jej brakowało) , czy ktoś znający się na tym może mi powiedzieć czy trzeba coś jeszcze dodać do tego programu (w sensie definiowania czegoś ).
    Następnie do zaprogramowania ATtiny2313 chce użyć układu i programu PonyProg
    Bascom wypluwa mi kilka plików czy do zaprogramowania mikrokontrolera muszę użyć pliku o rozszerzeniu .hex (bo inne pliki wydaje mi się ze służą Bascomowi do symulacji) a i PonyProg tylko ten plik przyjmuje:D
    Kolejny problem jak ustawić Fuse bits podczas programowania??

    Za wszelkie podpowiedzi lub strony gdzie to jest wytłumaczone po polsku z góry Dziękuje.

    a i jeszcze jedno pytanie czy ma ktoś pomysł jak ograniczyć ten sygnał 12V do poziomu 5V ale tak aby nie obciążyć tego wyjścia i nie zniekształcić sygnału??
  • Helpful post
    #2
    emarcus
    Level 38  
    lukaskay wrote:
    Witam

    Chciałbym was poprosić o pomoc robię prace dyplomowa stanowisko do badania silnika BLDC i niedawno wpadłem z promotorem na pomysł aby wykonać pomiar prędkości obrotowej tego silnika przez mikrokontroler nie ukrywam ze ta strona pomogła w decyzji.
    ?


    Odnosnie programu dla kalkulacji RPM:
    Jezeli akceptujesz niska dokladnosc pomiaru wynikajaca z wybrania "Wait 1" jako podstawy czasowej, to rownie mozesz wykorzytac wewnetrzny 1 MHz oscylator jako zrodlo zegara, wtedy nie potrzebyjesz rezonatora kwarcowego. Do okreslenia podstawy czasowej (1 sec. lub 0.1 sec.) zastaosowalbym Timer1, a impulsy obrotow zliczac poprzez timer/counter0. W bezposrednim kontekscie ograniczyloby to pomiar max. obrotow do 15000/min. , pod warunkiem ze otrzymujesz tylko jeden impuls na jeden obrot z encodera; Inna alternatywa to zliczac obroty/impulsy przez Interrupt0 lub 1 do dodatkowej zmiennej, ktora podstawimy do rachunku RPM.
    Drugie pytane:
    Baskom w kompilacji generuje plik *.hex, ktorym zaprogramujesz swoj processor w dowolnym programie obslugujacym programator.

    Dopasowanie napiecia sygnalu (5V) mozesz uzyskac na 2 R z proporcjonalnym odczepem (np: 5k + 7k). Nie musi to byc dokladnie 5V.
    Innym rozwiazaniem moze maly optocoupler.

    e marcus
  • #3
    lukaskay
    Level 10  
    emarcus wrote:
    W bezposrednim kontekscie ograniczyloby to pomiar max. obrotow do 15000/min. , pod warunkiem ze otrzymujesz tylko jeden impuls na jeden obrot z encodera;



    chodziło ci o 1500/min bo max obroty silnika wynosza 1550/min a i przypadają 4 impulsy na obrót

    jeśli chciałbym wykorzystać twój 2 proponowany sposób to musiał bym dostać jakiś półprodukt( w sensie program do przeróbki) gdyż jak już pisałem programowanie to dla mnie czarna magi.

    ale serdecznie dziękuje za pomysły jeśli pomiar będzie na serio kiepski po uruchomieniu układu to będę wiedział w którym kierunku szukać rozwiązania
  • #4
    PiotrPitucha
    Level 33  
    Witam
    Pomiar będzie bardzo kiepski, masz wyświetlać obroty na minutę, czyli przy czterech czujnikach masz rozdzielczość do 15 obrotów. lepszą metodą dla przebiegów o małej częstotliwości jest pomiar czasu obrotu lub kilku obrotów i wyliczenie z tego prędkości, co do wewnętrznego generatora to jet tak mało stabilny w funkcji napięcia zasilania i temperatury że możesz o nim zapomnieć.
    Ze względu na możliwe pomysły radziłbym też wymianę procesora na Atmegę 8 , jeśli to ma być stanowisko to dopinając się do wejść analogowych możesz zobrazować prądy, temperaturę, napięcia itd...
    Piotr

    Ps. tu masz coś co mogłoby Ci się przydać, płytka moja układ mój ale program kolegi więc Cię nim nie "poczęstuję", ale w zasadzie jest to pełne stanowisko do badań, poczytaj ten cały wątek od początku.

    Link
  • #5
    emarcus
    Level 38  
    lukaskay wrote:


    chodziło ci o 1500/min bo max obroty silnika wynosza 1550/min a i przypadają 4 impulsy na obrót

    ................

    ale serdecznie dziękuje za pomysły jeśli pomiar będzie na serio kiepski po uruchomieniu układu to będę wiedział w którym kierunku szukać rozwiązania


    Nie, chodzilo o max. 15 tys. obr/nin.. a dokladniej 15300.

    Rozdzielczosc timer/counter0 jest 8 bit czyli 256 (praktyczny rachunek 255) na 1 sec. co daje ok 15,000 zliczen w czasie 1 min. Jezeli mierzone obroty sa wyzsze niz 255/sec, wtedy licznik przepelni sie i nasz obrachunek gubi sens.
    Skoro obroty silnika w twoim projekcie mieszcza sie w granicach ok.1500/min wiec jestes w absolutnie bezpiecznym przedziale pomiarowym.
    I jeszcze jedno na koniec:
    Jezeli pomiar ilosci obrotow/min ma byc tylko orientacyjny, czyli nie mierzysz dynamicznych zmian obrotow w zaleznisci od obciazenia z dokladnoscia do pomiaru kata obrotu (stopni), zatem ta dokladnosc w przykladzie moze byc uznana za wystarczajaca.

    e marcus
  • #6
    lukaskay
    Level 10  
    e marcus - dzikij za wyjaśnienie sprawy z prędkością
    PiotrPitucha - masz racje dokładność pomiaru będzie do 15obr/min ale nie mam zbytnio na to wpływu gdyż encoder mam już gotowy a jak juz pisałem z programowania jestem kiepski, mi zależny na jak najprostszym programie by sobie nie komplikować i nie opóźniać pracy.

    a gdybym czas oczekiwania zwiększył do 15 s wtedy dokładność wzrosła by mi do 4 obr/min
    mogę użyć komendy:
    Wait 15
    ??
    ale wtedy chyba dojdzie do przepełnienia licznika??
    Mam jeszcze pytanie bo aby wejsc w stan programowania reset musi byc podpiety do GND a jak mam ustawić fuse bits?? czy ktos mi w tym moze pomoc lub gdzie tego szukać w instrukcji bo czytam ja juz któryś raz i może to po prostu omijam ciągle lub cos...
  • Helpful post
    #7
    emarcus
    Level 38  
    [quote="lukaskay"]
    a gdybym czas oczekiwania zwiększył do 15 s wtedy dokładność wzrosła by mi do 4 obr/min
    mogę użyć komendy:
    Wait 15
    ??
    ale wtedy chyba dojdzie do przepełnienia licznika??
    quote]

    Przy twoich parametrach silnika el., oczywiscie ze dojdzie do przepelnienia licznika0.
    Ponadto uwazam ze stosowanie dyrektywy "Wait" w pomiarach nie jest najlepszym rozwiazaniem, gdyz czas w ten sposob mierzony jest najmniej dokladny (w ogole nie jest dokladny). Poza tym czy masz zamiar czekac kazdorazowo 15 sec. na wynik pomiaru obrotow (?), gdy tymczasem przy testowaniu jakiegokolwiek projektu RPM moze sie zmienic kilkakrotnie.
    Jak ja bym to widzial; (to tylko sugestia);\
    Skoro Att2313 sluzy ci tylko do pomiaru RPM i obslugi dysplay, wiec
    Timer1 wykorzystaj do odmierzania podstawy czasowej, powiedzmy 1 sekunda. Timer1 pracuje w trybie CTC (dosc dokladny pomiar, poniewaz stan licznika jest ciagle sprawdzany i porownywany do zadanej wartosci).
    W miedzyczasie zliczasz impulsy z encodera badz to przez licznik0 albo na wejsciu Int0 lub Int1 (w tej sytuacji ilosc impulsow gromadzisz do zmiennej). Co sekunde dostajesz impuls/interrupt od Timer1, w tym momencie odczytujesz ilosc impulsow otrzymanych z encodera, wstawiasz do wzoru na RPM z uwzglednieniem ilosci pulsow na kazdy obrot, razy 60 sec/min; posylasz to do LCD display,; zerujesz zmienna liczenia pulsow (albo Counter0) i proces sie powtarza. W ten sposob masz display updated co 1 sec. Jezeli to jest zbyt czesto, to mozesz dodac specjalna subrutyne dla obslugi display, korzystajac jednak z tychsamych impulsow co poprzednio.

    Zauwaz, ze przyjmujac podstawe czasu 1 sekunda wprowadzamy ograniczenie rozdzielczosci pomiaru RPM zalezna od pulsacji encodera, ktora extremalnie moze byc az 60 przy 1 puls z encodera/1 obrot walu.
    Modyfikujac podstawe czasu do 0.1 sekundy i 4pulsy /1 obrot z encodera (lub wiecej) mozemy uzyskac dosc przystepna rozdzielczosc pomiarowa.

    Odnosnie Fusebits:
    Pytanie1. Czy w ogole potrzebujesz cos zmieniac?
    ATtiny 2313 moze pracowac bez zewnetrnego rezonatora kwarcowego, wykorzystujc wbudowany oscylator RC. z czestotliwoscia 1 MHz bez zmiany fusebits. Dokladnosc wew RC jest w zakresie +/- 5% to znaczy moze byc lepsza i zwykle rozrzut miesci sie w 2% pomiedzy dwoma egzemplarzami processora.
    Czy mozesz sobie na to pozwolic?..
    Sa oczywiscie sposoby poprawy tej dokladnosci, ale dla potrzeb tego projektu nie wglebiaj sie zbyt daleko w temat calibracji oscylatora wewnetrznego.
    Powiedzmy zechcesz zmienic 'f' - taktowania processora dla wew. RC lub stosowac zewn. rezonator/oscylator, musisz zmienic/programowac fusebytes (H) & (L).
    Tu masz link do calculatora:
    http://www.engbedded.com/fusecalc/

    e marcus
  • #8
    Dr.Vee
    VIP Meritorious for electroda.pl
    Najdokładniej będzie zmierzyć czas pomiędzy impulsami z enkodera - możesz do tego użyć trybu input capture (ICP) timera1. Przy max. prędkości obrotowej masz ok. 100 zdarzeń na sekundę. Przy min. prędkości możesz zwiększać preskaler timera żeby wykluczyć przepełnienie bez "łapania" impulsu.

    Jeśli odstępy między impulsami z dekodera nie są identyczne, to możesz np. mierzyć czas trwania N impulsów - ustawiasz Timer1 w trybie free running, a Timer0 w trybie CTC, OCR0A ustawiasz na N. Wtedy po N impulsach otrzymujesz przerwanie z timera0, a w nim zapisujesz stan Timera1 i liczysz prędkość obrotową.

    Pozdrawiam,
    Dr.Vee
  • #9
    rpal
    Level 27  
    Pozwole sobie niezgodzić się z kol. Dr.Vee. Pomiar poprzez zliczanie impulsów na liczniku i przepisywanie jego wartości do zmienne w czasie przerwania Timera będzie równie dokładne a poza tym banalnie proste. Dobierając odpowiednio kwarc uP oraz wartość preskalera można spokojnie zdefiniować jaką przyzwoitą stała czasową (nie mającą w okresie np. 0,333333). Podobnie i manipulacja wynikiem będzie równie łatwa i w zupełności AtTiny2313 sobie z tym poradzi tym bardziej że może ganiać z kwarcem 20MHz a więc bardzo szybko. Nierozwiązane pozostaje tylko zobrazowanie wyniku pomiary ale z racji wygody starczy zwykły wyświetlacz LED np. 4 pozycyjny. Na to wszystko spokojnie starczy pinów uP jak rónierz jego pamięci. Któryś z kolegów słusznie proponował jako dopasowanie do napięć zastosowanie transoptora. Myślę że jest to także polecane rozwiązanie bo jako stopień wejściowy wystarczy jeden pin procka i rezystor podciągnięty do zasilania. Natomiast należy w tym przypadku zastosować się do noty transoptora aby odpowiednio dobrać wartość szeregowego rezystora który wpływa na stromość zbocza generowane tak przebiegu :) Jakby kolega miał dalej pytania to wyskrobię w Eaglu jakiś schemat. PZDR
  • Helpful post
    #10
    Dr.Vee
    VIP Meritorious for electroda.pl
    Zauważ, że przy zliczaniu impulsów w cyklu pomiarowym np. 1s można zliczyć max 15000/60 = 250 impulsów z enkodera. Czas pomiędzy dwoma impulsami to min. 4ms, a więc przy kwarcu 1MHz timer odmierzy minimum 4000 taktów. Błąd pomiaru w każdym przypadku to średnio 1/2 impulsu - w przypadku 1) mamy przy maksymalnej prędkości błąd względny 0,2%, który rośnie wraz ze spadkiem prędkości obrotowej. W przypadku 2) mamy błąd względny 0,025%, który maleje wraz ze spadkiem prędkości obrotowej.

    Na dodatek w przypadku 1) wynik masz co 1 sekundę, a w 2) dużo częściej - co 1 sekundę dopiero przy prędkości tak niskiej jak 15 obrotów/min.

    Edit: poprawa us na ms (dzięki PiotrPitucha za uwagę)

    Pozdrawiam,
    Dr.Vee
  • #11
    rpal
    Level 27  
    Policzyłęm impulsy i wychodzi mi że przy prędkości maksymalnej = 1500 obr/min i 4 impulsa na jeden obrót (tak podaje utor) z każdym obrotem na "wirtualne" wejście układu pomiarowego idzie 100 impulsów czy 100 Hz.=(1500/60)*4. Ganiając procka z maksymalną prędkością błąd pomiaru można zminimalizować bo impulsy na wejściu wewnętrznego licznika są szybciej próbkowane. Poza tym co to za bład pomiaru kiedy na wejście licznika podawane jest maksymalnie 100 Hz a próbkowanie zboczy następuje z prędkością zegara procesora czyli np. 16Mhz ? Stosując zewnętrzny dzielnik częstotliwości a są np. w serii 40xx układy które dokonują wielokrotnego podziału można zachowując dużą częstotliwość zegara wytworzyć przebieg zegarowy np. 1 Hz który będzie podawnay na INT, wyzwalając przerwanie które będzie przepisywać zawartość licznika do zmiennej i dalej go zerować do następnego zliczania no i tak w koło wojciechu.
    Istotnie problem może być z małymi prędkościami obrotowymi ale i tutaj można sobie poradzić np. zmieniając zakres pomiarowy poprzez zmianę częstotliwości wyzwalania przerwania INT. Może to się dziać automatycznie poprzez zmianę stopnia podziału w.w. dzielnika częstotliwości. Osobiście optuję za takim rozwiązaniem tymbardziej że w minimalnym stopniu podnosi koszty o góra 1-2 scalaki za 2-5 PLN. Z resztą i tak jakąś kość trzeba dodać aby obsłużyć LED np. ULN2803 i kilka tranzystorów pnp do zasilania anod LED-a. To tyle moich uwag niekoniecznie słusznych :)
  • #12
    PiotrPitucha
    Level 33  
    Cześć
    Dr.Vee , masz rację, przebiegi z silnika są na tyle wolnozmienne że jedynie pomiar okresu jest w tym wypadku sensowny, co do tego nie mam wątpliwości. Przy okazji wkradła Ci się mała literówka, nie 4uS tylko 4ms, ale dalsze obliczenia wskazują że liczysz na dobrych jednostkach :).
    Co do uwagi rpal to zawsze jest jakieś podejście minimalistyczne i biorąc pod uwagę wydajność prądową typowego AVRa to można się obyć i bez ULN2804 jak i bez tranzystorów w anodach a jeśli mierzymy obroty w warunkach ostrego oświetlenia to bardziej widoczny będzie typowy LCD niż LED. Minimalistyczne podejście spowoduje lekkie grzanie procesora, ale zauważmy że zegar popędzamy kwarcem i mimo zmian temperatury będzie on stabilniejszy niż błąd wynikający z metody pomiaru.
    Tacho mierzących obroty tą metodą jest cała masa w sieci ze źródłami w Bascom, w C a nawet assemblerze zarówno na AVRy jak i na PIC, zawsze można popatrzeć jak to robią inni.
    Piotr
  • #13
    rpal
    Level 27  
    KOlego Piotrze na marginesie, na Świeta Bożego Narodzenia zrodził się pomysł zrobienia migającej choinki z led-ami. Pod ręką miałem atmega8535 i zrobiłem co miałem zrobić czyli każdy port dostał swojego led-a czyli 32 szt łacznie. Pracowało to w ramach wersji minimalistyczmej czyl tylko z rezystorami szerogowymi. Wytrzymało ok. 15 min. Potem padło. Wniosek stąd taki że 32 led-ów avr nie pociągnie, oczywiście świecąc na tyle jasno aby było coś widać :) To tak na temat minimalizmu :)
  • #14
    lukaskay
    Level 10  
    Dziękuje za wszelkie pomysły i pomoc ale jak już pisałem z programowaniem u mnie ciężko i zaczynam sie w tym gubić naprawdę chciałbym w minimalnym stopniu zmieniać ten uklad i program który mam aby go nie zepsuć.

    po pierwsze w układzie zostanie wykorzystany transoptor gdyz muszę obniżyć sygnał a nie chce łączyć GND falownika z GND uC jedyny problem ktory będę musiał sprawdzić eksperymentalnie to taki czy wyjście z falownika ktore wykorzystuje do pomiaru prędkości jest w stanie wydać z siebie wystarczający prąd by zasilić foto diodę i układ zadziałał.

    po drugie chce wykorzystać wewnętrzny kwarc 8Mhz

    po trzecie czytając helpa jesli dobrze rozumiem to timer1 jest 16bitowy
    a timer0 jest 8 bitowy

    emarcus - gdybym chciał wykorzystać twój pomysł to gdybym zostawil timer1 jako counter a jako timer wykorzystał timer0 ktory by zliczał czas w jakim sa zbierane impulsy - jeśli o to ci chodziło i jeśli jest to możliwe??(nie będzie jakiś powiązań wewnętrznych miedzy timerami ze nie będą mogły tak pracować)
    do końca jeszcze nie mam koncepcji jak to miało by wyglądać w kodzie

    W tym tygodniu zaczęły mi sie schodzić części i powoli składam wszystko do "kupy" wiec teraz mogę powoli testować rozwiązania bo na oddanie stanowiska do czerwca juz nie licze;/

    jeszcze raz dziękuje za pomoc i za uświadomienie mnie z jakimi błędami pomiaru mam do czynienia.
  • Helpful post
    #15
    emarcus
    Level 38  
    lukaskay wrote:



    ........ chce wykorzystać wewnętrzny kwarc 8Mhz

    po trzecie czytając helpa jesli dobrze rozumiem to timer1 jest 16bitowy
    a timer0 jest 8 bitowy

    emarcus - gdybym chciał wykorzystać twój pomysł to gdybym zostawil timer1 jako counter a jako timer wykorzystał timer0 ktory by zliczał czas w jakim sa zbierane impulsy - jeśli o to ci chodziło i jeśli jest to możliwe??(nie będzie jakiś powiązań wewnętrznych miedzy timerami ze nie będą mogły tak pracować)


    Zaczne od konca.
    Byc moze jest to oczywiste dla ciebie, ale wydaje mi sie, ze dla 'przypomnienia helpa' nie zaszkodzi.
    Oba timery w AVR moga pracowac niezaleznie od siebie.
    Ten, ktory zlicza przedzialy czasowe, konfigurujesz jako "TIMER" i dasz mu odpowiedni prescaler czyli 'podzielnik' od taktowania processora tak, aby otrzymane liczby byly 'podzielnikami bez reszty' w odniesieniu do mierzonego przedzialu czasu.
    Ten drugi zliczajacy impulsy konfigurujesz jako "COUNTER" , prescaler =1.
    Nie ma specjalnych preferencji co kazdy Timer ma zliczac. W zasadzie to oba sa licznikami (niektore maja wiecej funkcji - tu bez znaczenia), ale preferencje wynikaja z wygody programowania i zakresu zliczanych wielkosci.

    Oczywiscie, mozesz uzyc Timer0 jako timer, ale przy taktowaniu 8 MHz nie ma mozliwosci uzyskania przedzialu czasowego 1sec albo nawet 0.1 sek bez zliczania przepelnien licznika do dodatkowej zmiennej.
    W tym celu musisz dobrac odpowiedni prescaler i naliczac przepelnienia.
    Troche rachunkow. Dla uproszczenia/ ulatwienia zadania mozesz posluzyc sie 'Timer-calculator'-em. AVR Timer1.25 (znany jako "Ian's Timer" )znajdziesz tu:
    http://mail.planet-ian.com/bascom/avrtimerbeta.zip

    Reszta powinna byc prosta.

    Czy rozwazales alternatywna metode pomiaru przedstawiona przez Dr.Vee - 'Pomiar czasu pomiedzy impulsami...'

    e marcus
  • #16
    PiotrPitucha
    Level 33  
    Witam
    Rpal oczywiście wersje minimalistyczne mają to do siebie .... ale przy zapalaniu segmentów w wyświetlaczach nie ma chwili w której świeciłoby więcej niż 7 segmentów bo jak rozumiem kropki nam nie trzeba .... i tu zmieścimy się z jasnymi wyświetlaczami w prądach katalogowych AVR, więc bez ryzyka spalenia procesora się obędzie.
    Wspominałem o gotowcach, zerknij na www.elfly.pl, tam jest fajny obrotomierz modelarski, zrobiłem tego trochę sztuk... w zasadzie mógłby być gotowym układem gdybyś zamiast z czujnikiem optycznym wszedł na niego sygnałem z Twoich czujników.
    Pozdrawiam
  • #17
    lukaskay
    Level 10  
    PiotrPitucha - no szkoda ze niema dostępu do kodu programu z tej strony minus tego miernika jest ze mierzy od 100obr/min | ale kod programu byłby dla mnie cenny bo mógłbym możne cześć wykorzystać a przynajmniej cos sie z niego nauczyc.

    emarcu - w programowaniu sa to moje totalnie pierwsze kroki zajecia ktore mialem jedynie dały mi pojecie ze cos takiego istnieje wiec pisanie do mnie jak najprostszym językiem i tłumaczenie każdej myśli jest jak najbardziej wskazane i dziękuje ci ze właśnie tak piszesz
    co do pomysłu Dr.Vee nie zastanawiałem sie nad nim bo nie wiem jak zrobic to programowo - jesli Dr.Vee byłby tak miły(czyt. w stanie) i mógłby mi podrzucić ta cześć programu z opisem(chciałbym to rozumieć jeśli bym miał użyć) byłbym wdzięczny. tam zastanawiałeś się czy sygnały z enkodera sa równe to one sa wypełnienie wynosi dokładnie 0.5

    Co do Timer-calculator' jeśli poprawnie go używam to przy 8Mhz 1 s osiągnę timer-em 1 wykorzystując program ktory generuje kalkulator - jeszcze muszę nad tym pomyśleć by to zrozumieć lub kogoś na zywo pomęczyć

    jeszcze jedno pytanie co znaczy ustawienie timera w tryb CKC?? - niebylo pytannia google pomoglo:D
  • #18
    PiotrPitucha
    Level 33  
    Witam
    Kiedyś był w EdW kurs programowania AVRów, w jednym z odcinków była omawiana sprawa pomiaru częstotliwości ( w Twoim przypadku obrotów ) z analizą w jakich przedziałach jaka metoda jest efektywna, spróbuj dotrzeć do tego kursu w jakiej bibliotece, może ktoś ma PDFy do tego, oczywiście były źródła do programów.
    Piotr
  • #19
    Dr.Vee
    VIP Meritorious for electroda.pl
    lukaskay - nie piszę w Bascomie więc się nie podejmuję :)

    Zwróć uwagę, że w proponowanej przeze mnie metodzie pomiaru będziesz musiał wykonać dość niewygodne dzielenie stałoprzecinkowe, albo użyć liczb zmiennoprzecinkowych. Na pewno mniej dokładny sposób pomiaru jest łatwiejszy do obróbki numerycznej.

    Pozdrawiam,
    Dr.Vee
  • #20
    emarcus
    Level 38  
    lukaskay wrote:


    jeszcze jedno pytanie co znaczy ustawienie timera w tryb CKC?? - niebylo pytannia google pomoglo:D


    Zapewne chodzi ci o tryb CTC ?
    Clear Timer on Compare

    Jest to jeszcze jeden sposob pracy timera polegajacy na okresleniu gornej wartosci do jakiej timer ma liczyc impulsy, (zamiast do pelnej skali licznika; dla Timer1 - 65536 lub timer0 - 256), a nastepnie generuje Interrupt (OCnA), zeruje sie, w konsekwencji cykl powtarza sie.
    - Porownywanie aktualnego stanu licznika z liczba zadana.
    W trybie "Normalnym" zliczamy ta sama liczbe impulsow ale ta liczba musi byc kazdorazowo ladowana do timera, ktory pracuje do pelnego zakresu i po przepelnieniiu zechce pracowac od zera jezeli nie ma reload.

    Jezeli chcesz przeanalizowac/wzorowac sie na gotowych opracowaniach licznikow czestotliwosci to tu masz link do kilku kompletnych rozwiazan, lacznie ze schematami i kodami zrodlowymi a takze omowieniem wykonania:
    http://www.electronics-lab.com/blog/?p=2869

    e marcus
  • #21
    PiotrPitucha
    Level 33  
    Witam
    Dodatkowa informacja co do kursu w Elektronice dla Wszystkich, to jest styczniowy numer z 2005 roku, niestety nie mam dojścia do skanera :(.
    Tam masz wszystko jak na tacy i teoretycznie i w postaci gotowych programów.
    Piotr
  • #22
    lukaskay
    Level 10  
    emarcus tak o CTC chodziło , i dziękuje za link
    PiotrPitucha dziękuje za informacje poszukam tego w bibliotece : "Elektronika dla wszystkich styczeń 2005"