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.

Pomiar prędkości obrotowej silnika

ciochu 23 Mar 2009 18:33 9331 17
  • #1 23 Mar 2009 18:33
    ciochu
    Poziom 8  

    Witam.
    Mam do wykonania projekt układu mikroprocesorowego do pomiaru predkości obrotowej silnika elektrycznego. Podać schemat układu oraz schemat blokowy programu (RAM i ROM zewnętrzne)
    Dane: uK 8051, zakres pomiaru prędkosci 0-9999obr/min, wynik wyświetlany na wyśw. LED, 5poz z dokładnością 1obr/min
    Projekt jest czysto teoretyczny.
    Przejrzałem wiele postów, ale nie znalazłem nic co bym mógł jednoznacznie zastosować, dlatego proszę o pomoc - być może ktoś już robił cos takiego albo orientuje sie w temacie.Ja niestety dopiero uczę się mikroprocesorów i nie mam w wielu sprawach pojęcia.
    Największy problem mam jak dobrać to sprzętowo żeby działało wszystko.
    Co temat to każdy chwalił inny sposób pomiaru. Ja chyba przychyliłbym sie do enkodera, tylko pytanie czy spełni on warunki i czy bedzie współpracował z 51?Musze uzasadnić każdy wybór. Za pomoc z góry dziękuję

    0 17
  • #2 23 Mar 2009 18:47
    andrzej lukaszewicz
    Poziom 38  

    Enkoder jest wymagany, gdy potrzebujesz precyzyjnej pozycji wału. Do pomiaru predkości obrotowej wystarczy tani niezawodny czujnik indukcyjny, lub halla- cała motoryzacja na tym stoi.
    Enkodery sa drogie i delikatne, oraz wymagają precyzyjnego sprzegła mechanicznego kompensującego nieosiowośc mocowań wałków -enkodera i silnika.

    0
  • #3 27 Mar 2009 14:02
    Chris_W
    Poziom 37  

    Wystarczy zwykły impulsator - kontaktron (jeśli małe obroty), lub transoptor szczelinowy jeśli obroty są wyższe.
    To podłączasz pod wejście zewnętrzne licznika, włączasz pomiar i czekasz x czasu. Potem ilość zliczonych impulsów dzielisz na jednostke czasu x - przeliczasz do obr/min.

    0
  • #4 27 Mar 2009 14:45
    adamekamator
    Poziom 17  

    przepraszam że się wcinam i nie na temat ale mam pytanie czy jak pod timera (T1 lubT0) zewnętrznego podepnę czestotliwość i co dany czas będę sprawdzał stan licznika to mogę sterować dwoma przekazinikami
    a mianowicie jeśli stan licznika większy włącz pk1 , równy nierób nic , mniejszy włącz pk2 (proszę o wyrozumiałość dopiero się uczę w bascom 51 z góry dziękuję za odpowiedz)

    0
  • #5 27 Mar 2009 15:16
    piotr5000
    Poziom 21  

    Jeżeli pomiar ma być dokonywany z dokładnością 1obr/min (ale dlaczego tak dokładnie ) to czas pomiaru musi być dłuższy niż 1 minuta. Pomiar w ciągu 6 sekund daje błąd 10 obr/min. Tak długi czas próbkowania nie zapewni dokładnego pomiaru bo w tym czasie silnik może pod wpływem zmian obciążenia kilkakrotnie zwolnić i przyśpieszyć . Będziemy dokonywali pomiaru średniej prędkości obrotowej w czasie minuty.
    Chcąc mięć dokładny pomiar w krótkim czasie powinniśmy zastosować enkoder 100 imp/obrót - czas próbkowania < 1sekundy. Można jeszcze zmierzyć czas 1 obrotu wału i przeliczyć na prędkość obrotową , ale zaokrąglenia też spowodują niedokładności

    0
  • #6 27 Mar 2009 15:48
    kulmar
    Poziom 25  

    piotr5000 napisał:
    ... Można jeszcze zmierzyć czas 1 obrotu wału i przeliczyć na prędkość obrotową , ale zaokrąglenia też spowodują niedokładności


    Właśnie ten sposób pomiaru powinien być tu bezwzlędnie stosowany, 10000obr/min to zaledwie 167obr/sek. A to oznacza, ze mozna zmierzyć dokładnie czas jednego obrotu wału (lub np. 10) i przeliczyć to na obroty/min.

    Pozdrawiam

    Mariusz

    0
  • #7 27 Mar 2009 16:44
    piotr5000
    Poziom 21  

    Niestety nie do końca jest to słuszne.
    Przy prędkościach obr np 10000 czas obrotu wynosi
    6000 mikrosekund
    Przy 9999 obr/min czas obrotu = 6000,6 mikrosekundy.
    Oznacza to że pomiar czasu powinien być dokonywany z dokładnością do ułamków mikrosekund - jeśli dokładnośc ma być +/- 1 obr/ min

    0
  • #8 27 Mar 2009 17:03
    archanoid
    Poziom 25  

    Witam .Wykonałem osobiście obrotomierz mierzący z dokładnością do 1 obr/min na atmega88 i zegar 20MHz. Niestety projekt komercyjny ale kawałek kodu mogę wrzucić .Kod odpowiedzialny za wyliczanie obrotów.

    Code:

    volatile double a; //zmienna zawierajaca liczbe obrotow
    char tab[12];
    volatile long int c = 0; //zmienna zawierajaca zliczone impulsy wzorcowe


    while(1)
    {

    gotoxy(1, 1);
    a = ((20000000.0 / c) * 60);
    a = c;
    write_text(dtostrf(a, 6, 6, tab));
    }

    0
  • #9 27 Mar 2009 17:58
    piotr5000
    Poziom 21  

    Widzę , że uzyskałeś kompromis .Zliczasz impulsy i jednocześnie jesteś w stanie wyświetlić je > 5 razy na sekundę :D

    0
  • #10 27 Mar 2009 19:58
    kulmar
    Poziom 25  

    piotr5000 napisał:
    Niestety nie do końca jest to słuszne.
    Przy prędkościach obr np 10000 czas obrotu wynosi
    6000 mikrosekund
    Przy 9999 obr/min czas obrotu = 6000,6 mikrosekundy.
    Oznacza to że pomiar czasu powinien być dokonywany z dokładnością do ułamków mikrosekund - jeśli dokładnośc ma być +/- 1 obr/ min


    To też należy mierzyć czas np. 10 obrotów. Przy założeniu, że "wolne obroty" to mninimum 600 obr/min (10/sek), czas pomiaru wyniesie maksymalnie 1sek. A dla 9999 i 10000 czas ten wyniesie odpowiednio 600006 i 60000 mikrosekund. Przy zegarze 20MHz i programie napisanym w asemblerze taki pomiar jest wykonalny.

    Pozdrawiam

    Mariusz

    0
  • #11 04 Kwi 2009 02:51
    elektronikeer
    Poziom 9  

    Czyżby chodziło o projekt do pana T. :-) Regulację prędkości obrotowej silnika można uzyskać poprzez Timer 555, ale rozumiem, że Ty masz tylko mierzyć ją, a więc poszukaj sobie jakiegoś czujnika do pomiaru prędkości, najlepiej coś poczytaj najpierw sam na ten temat. Wynik z czujnika zapisz do pamięci.

    0
  • #12 04 Kwi 2009 06:33
    zerolinux
    Poziom 10  

    Witam.

    A ja Ci radzę dołożyć do silnika impulsator, np. tarczę z przeźroczystego tworzywa (idealnie się nadaje zapisywalna płytka cd ze zdartą warstwą zapisywalną) na którą naniesiesz odpowiednią liczbę nieprzeźroczystych pasków. Dodajesz prosty transoptor szczelinowy i gotowe.
    Czas pomiaru wystarczy wtedy sekunda. I dokładność też będzie dobra.

    Rafał

    0
  • #13 05 Kwi 2009 12:06
    ciochu
    Poziom 8  

    Widzę że elektronikeer swój człowiek - tak to do pana T.
    Zastosuję do projektu tarczę z otworami a do pomiaru wykorzystam fotoprzełącznik szczelinowy z przerzutnikiem Schmita firmy OMRON.
    Pomiar bede wykonywał co 1 sek. więc na tarczy muszę mięć conajmniej 60 otworów. Wyświetlać wynik chcę przy użyciu kodu BCD przez bufor i dekoder bcd na 7-seg i tu zaczyna się problem. Jak przeliczyć zawartośc licznika 16-bitowego na BCD żeby móc wyświetlić jednostki dziesiątki setki i tysiące?

    0
  • #14 05 Kwi 2009 15:20
    Chris_W
    Poziom 37  

    Użyj od razu liczników BCD.

    0
  • #15 06 Kwi 2009 10:24
    ciochu
    Poziom 8  

    Jeśli dobrze mi się wydaje to musiałbym użyć 4 liczników BCD i 16 portów mikrokontrolera - takie coś napewno nie przejdzie - chyba że jest inny sposób na liczniki BCD

    0
  • #16 06 Kwi 2009 10:27
    Chris_W
    Poziom 37  

    Ale jak masz kontroler to co innego - ja zrozumiałem że ty chcesz od razu liczniki - dekodery na 7-seg - drivery 7-seg - wyświetlanie.

    0
  • #18 29 Cze 2009 12:27
    ciochu
    Poziom 8  

    Projekt przyjęty więc raczej jest OK. No to wszystko w tym temacie, dzieki za pomoc!

    0
  Szukaj w 5mln produktów