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.

Int0 zliczanie impulsów synchronizacja obrotów

konstruktor_123456 11 Cze 2010 14:27 1859 12
  • #1 11 Cze 2010 14:27
    konstruktor_123456
    Poziom 14  

    Pracuje nad programem którego część w której mam właśnie problem ma sie zajmować zliczaniem impulsów od dwóch silników.Silniki pracują jednocześnie i każdy z nich daje 2 impulsy na jeden obrót.Prędkośc obrotowa każdego to 600 obr /min.moje zliczanie impulsów ma słózyć do regulacji obrotów tak aby mniej wiecej równa sie kreciły ale tak nie super dokładnie.
    Zrobiłem to na 1 przerwaniu Int0 do którego sygnał doprowadzam przez 2 diody z 2 pinów do których śą podpiete czujniki odpowiednio z 1 i 2 silnika.
    Przerwanie reaguje na zbocze opadajace a w przerwaniu sprawdzam czy jeden lub moze dwa piny od czujników obrotów są zadziałane. I wszystko dziła pieknie dopuki nie jestem zmuszony wyłączyć jednego silnika czekając na ten wolniejszy aż ilość impulsów sie zrówna.Jak wyłączony silnik zatrzyma się tak że impulsator jest zadziałany trace mozliwośc wywoływanie przerwania przez ten drugi impulsator.Bo na INT0 mam wciąż stan 0 .Jek to mozna rozwiązać.

    0 12
  • #2 11 Cze 2010 14:45
    Paweł Es.
    Pomocny dla użytkowników

    Najprościej to chyba będzie zróżniczkować (układem RC) impulsy z czujników obrotów, tak by zatrzymanie jednego silnika nie blokowało całego toru przechwytywania impulsów.

    Druga metoda to podać impulsy z jednego silnika na Int0 a z drugiego na Int1 i robić obróbkę całości programowo.

    0
  • #3 12 Cze 2010 10:30
    PO.
    Poziom 20  

    Oczywiście że na dwóch przerwaniach - co, jeśli się nałożą? I nie wiesz który silnik regulować...

    0
  • #4 12 Cze 2010 10:57
    konstruktor_123456
    Poziom 14  

    Raczej zrobie to różniczkowanie i 1 przerwanie wykorzystam.

    0
  • #5 12 Cze 2010 12:19
    PO.
    Poziom 20  

    A jak rozpoznasz, który silnik regulujesz? Czy regulujesz je wspólnie?

    0
  • #6 12 Cze 2010 13:33
    janbernat
    Poziom 38  

    To jakieś bramki sterowane z procesora- aby wiedzieć który czujnik.
    Ale dwa przerwania- lepsze.
    Ostatecznie to jest wolne.

    0
  • #7 12 Cze 2010 13:41
    PO.
    Poziom 20  

    Przełączanie bramek to dodatkowe piny :) czyli więcej niż dugi int.

    Mogę sobie to wyobrazić tylko jako rozpędzanie najpierw jednego silnika, jak już go rozpędzimy i wiemy mniej więcej które przerwania są od niego to rozpędzamy drugi. Tylko jak się coś zgubi to masakra...

    0
  • #8 12 Cze 2010 14:00
    rpal
    Poziom 27  

    kol PO zawsze któryś z silników będzie pierwszy jako wywołujący przerwanie a ustalone priorytet przerwań sam sobie poradzi z obsługą. Autor nie pisze tu o silniku który gania z prędkością 60tys obr /min tylko 600 więc każdy impuls wystepuje co 0,1 sekundy to taki czas w którym przerwanie zrobi masę rzeczy nawet dwa przerwania więc problem jest co nieco sztuczny. Nie ma sensu kombinowac tam gdzie jest to przerostem formy nad treścią. Jeśli już kolega chce miec 100 % pewności to przerzutnik typu D załatwi sprawę w kwesti ustalenia które impuls był pierwszy tylko trzeba będzie potem te przerzutniki zerować. Tylko po co sobei komplikować życie. 2 przerwania INT starcza z powodzeniem.

    0
  • #9 12 Cze 2010 14:05
    PO.
    Poziom 20  

    rpal napisał:
    kol PO zawsze któryś z silników będzie pierwszy jako wywołujący przerwanie a ustalone priorytet przerwań sam sobie poradzi z obsługą. Autor nie pisze tu o silniku który gania z prędkością 60tys obr /min tylko 600 więc każdy impuls wystepuje co 0,1 sekundy to taki czas w którym przerwanie zrobi masę rzeczy nawet dwa przerwania więc problem jest co nieco sztuczny. Nie ma sensu kombinowac tam gdzie jest to przerostem formy nad treścią. Jeśli już kolega chce miec 100 % pewności to przerzutnik typu D załatwi sprawę w kwesti ustalenia które impuls był pierwszy tylko trzeba będzie potem te przerzutniki zerować. Tylko po co sobei komplikować życie. 2 przerwania INT starcza z powodzeniem.


    Chyba nie zrozumiałeś zagadnienia: on chce mierzyć oba silniki na jednym przerwaniu.
    Dwa starczą z powodzeniem, zgadza się.

    0
  • #10 12 Cze 2010 15:50
    Paweł Es.
    Pomocny dla użytkowników

    Pytania do autora tematu:

    1. Jak rozróżniasz, z którego silnika pochodzą impulsy ?

    2. Czy możesz przybliżyć ideę regulacji w tym układzie ?

    3. Czy możesz podać jakich elementów użyłeś i jak je połączyłeś ?


    Jak dla mnie to ten układ mógłby działać następująco:

    Pierwszy silnik jest nieregulowany, drugi ma regulowaną prędkość.

    W programie jest licznik, zmniejszany np. przez impulsy pierwszego silnika (np. INT0) i zwiększany przez impulsy z silnika z regulowaną prędkością (int1).
    Na podstawie zawartości licznika oceniamy czy drugi silnik kręci się szybciej od pierwszego (licznik ma wartość dodatnią) czy wolniej (licznik ma wartość ujemną). Wartość licznika optymalnie powinna się utrzymywać w jakimś zakresie w okolicach zera, jeżeli go przekracza (np.na etapie uruchamiania niejednoczesnego silników) to licznik jest ustawiany na jakąś wartość bliską zeru ale z odpowiednim znakiem (by sterowanie prędkością silnika 2 było prawidłowe. Na podstawie wartości licznika i jego znaku jest zwiększana lub zmniejszana prędkość silnika 2 tak by zawartość licznika dążyła do zera. Oczywiście w programie jest też kontrola prędkości silnika 2 by się nie rozbiegał na skutek błędu w programie.

    Czy to działa mniej więcej w opisany sposób ???

    0
  • #11 15 Cze 2010 22:31
    rpal
    Poziom 27  

    kol. PO zrozumiałem o co chodzi jeśli użyjesz kilku bramek TTL to nie ma problemu aby jedno przerwanie od dwóch źródel podać na jedno wejście przerwania ale stan źródła mimo wszystko trzeba sprawdzać na którymś z portów. Reasumujac przerwania na bramkę (jaką to zależy od poziomu wyzwalania) a na dwa wejścia portów połączone do bramek TTL tak aby na ich podstawie sprawdzać które z przerwań inicjuje to właśnie przerwanie.

    0
  • #12 16 Cze 2010 01:18
    PO.
    Poziom 20  

    Z bramek sobie zdaję sprawę, tylko przerwanie + dwa piny sprawdzania to razem trzy piny czyli więcej niż dwa piny od przerwań - a miało być oszczędnie? Rozbija się o sensowną implementację tego...

    0
  • #13 21 Cze 2010 10:29
    rpal
    Poziom 27  

    W takich sytuacjach zwykle można doradzić że jak jest za mało pinów w procku to trzeba sięgnąc po model który ma ich więcej zwykle jest to taniej i prościej niż dołączanie kolejnych układów do procesora.

    0
  Szukaj w 5mln produktów