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.

Kontroler obrotów (ruchu)

AF7018 03 Cze 2008 12:49 2654 15
  • #1 03 Cze 2008 12:49
    AF7018
    Poziom 10  

    Witam,
    Mam zamiar zbudować kontroler ruchu, szczegółowy opis jak to by miało działać jest w tym temacie
    https://www.elektroda.pl/rtvforum/viewtopic.php?t=542899&highlight=indukcyjny&sid=d4ec2cd90c8daa9fb4aab34b9e4eba17
    Myślałem żeby zrobić to analogowo ale na jakimś mikrokontrolerze było by znacznie prościej fizycznie i z możliwością szybkiej zmiany parametrów w razie potrzeb.

    Jaki mikrokontroler nadawał by się do tego? Brałem pod uwagę ATMega8 lub AT90s2313. Do procesora było by podpięte 6 czujników indukcyjnych dających impulsy, każdy z inną częstotliwością. Na wyjściach 6 LED odpowiadających każdemu czujnikowi.

    Nie zajmuje się teraz programowaniem procesorów. Liznąłem tylko programowania w asemblerze i C na studiach 10lat temu. Nawet napisałem jakiś prosty program na 8051 powodujący miganie LED na wyjściach z określoną częstotliwością.
    Ostatnio prześledziłem kilka kursów programowania w necie i ściągnąłem programy Bascom oraz WinAVR. O ile asembler nigdy nie był dla mnie do końca zrozumiały to uważam, że bascom jest dość prosty.

    Czy wsad do zrealizowania założonych funkcji będzie bardzo skomplikowany i czy da się go napisać w bascomie?
    Myślałem o porównywaniu czasu pomiędzy poszczególnymi zboczami a zadanym lub o zliczaniu tych impulsów np co 1 sek. i porównywaniu z ilością zadaną.
    Pozdrawiam

    Jeśli umieściłem temat w nieodpowiednim dziale proszę moderatora o przeniesienie.

    0 15
  • #2 03 Cze 2008 13:02
    snow
    Poziom 28  

    Wsad nie byłby trudny do napisania, poszukaj na forum postów o częstotliwościomierzu. Dałbym z koła pasowego układ formujący impulsy których częstotliwość byłaby proporcjonalna do wartości prędkości. Następnie na multiplexer 6-wejściowy i sterował multiplexerem z procka wybierając które aktualnie koło pasowe ma być czytane. Później możesz sobie to na port na ledy wystawić albo do komputera po RS'ie przesłać.

    0
  • #3 03 Cze 2008 13:28
    AF7018
    Poziom 10  

    Impulsy będą pochodziły z czujników indukcyjnych umieszczonych przy kołach pasowych ich częstotliwość będzie proporcjonalna do obrotów tylko wypełnienie nie koniecznie 50/50.
    A nie można by kontrolować tych obrotów równolegle na wszystkich czujnikach jednocześnie bez multipleksera?

    0
  • #4 03 Cze 2008 13:40
    snow
    Poziom 28  

    Możesz użyć procesora który ma obsługę tylu przerwań ile masz kół pasowych. Zdaje się że ATtiny2313 ma możliwość obsługi do 8 zewnętrznych przerwań zatem on by się pewnie nadał, tyle że ma 2kB flash'a i może ci się program w bascomie nie zmieścić

    0
  • #5 05 Cze 2008 13:17
    AF7018
    Poziom 10  

    To może lepiej użyć dwóch procków z mniejszym flash-em, albo dwie ATtiny wykorzystując obsługę po 3 przerwania w każdym wtedy wsad będzie lżejszy.
    ATtiny 2313 nie są drogie i mają wbudowany rezonator co upraszcza sprawę.
    Tylko jak się tu zabrać za ten wsad:D
    Na razie zamówiłem na Allegro programator STK 200 i czekam. Mam nadzieję , że nie zaginie po drodze na poczcie.

    0
  • #6 05 Cze 2008 20:40
    arturkumiec
    Poziom 11  

    Witam. Problem jest dość prosty do rozwiązania. Sam robiłem kiedyś gościowi podobny patent ( kontrola obrotów kilu kół pasowych ) w proszę się tylko nie śmiać w kombajnie do buraków. Patent działa w sposób następujący . Procek co 0,1 sekundy odczytuje stan portu do którego podpięte są czujniki . Dla każdego czujnika jest inny czas pomiędzy impulsami. Jeśli któryś z czujników nie wygeneruje impulsu do stanu wysokiego w określonym czasie to włącza się alarm (dźwiękowy ) i na LCD wyświetla się awaria danego koła. Na samym początku trzeba ustalić potrzebne czasy dla wszystkich kół. Robi się to w sposób ten że włącza się najwolniejsze z możliwych obrotów , a następnie uruchamia się układ w trybie adaptacji do obrotów. Układ sam zapisuje w pamięci eeprom czasy pomiędzy poszczególnymi impulsami. powiem tyle , układ pracuje od kilku lat i nie ma z nim problemu.

    1
  • #7 06 Cze 2008 07:33
    AF7018
    Poziom 10  

    Na pewno ja się śmiał nie będę bo ten układ ma być też do kombajnu tyle że zbożowego :)
    Zasada działania identyczna bo i taka sama rolę ma to pełnić.
    Na jakim procku to jest zrobione? Masz może wsad do niego?
    Ja na razie chcę zrobić najprościej na diodach (poszczególne diody wskazują, który czujnik nie podaje impulsów) i podłączyć się do już istniejącej sygnalizacji dźwiękowej. Teraz trochę kiepsko z czasem ale docelowo też myślałem o wyświetlaczu pokazującym informację, które koło zostało zatrzymane.
    Do tego jeszcze chcę jeszcze rozbudować i dołożyć pomiar strat ziarna. Teraz mam straty ziarna zrobione w postaci analogowej na zwykłej linijce diodowej.
    Będę bardzo wdzięczny za pomoc.
    Pozdrawiam

    0
  • #8 06 Cze 2008 16:23
    arturkumiec
    Poziom 11  

    Witam . Przeszukałem swoje zasoby i niestety wsad i źródła się ulotniły. Układ był zbudowany na AT90S8515 i pisany był w asemblerze.
    Gdyby przyszło mi jeszcze raz to pisać to wybrał bym ATMega8 i pisałbym to w C.

    0
  • #9 09 Cze 2008 16:09
    AF7018
    Poziom 10  

    A jak wyglądał dokładniej algorytm działania wsadu?

    Cytat:
    Procek co 0,1 sekundy odczytuje stan portu do którego podpięte są czujniki . Dla każdego czujnika jest inny czas pomiędzy impulsami. Jeśli któryś z czujników nie wygeneruje impulsu do stanu wysokiego w określonym czasie to włącza się alarm

    Zastanawiam się co będzie w przypadku kiedy czujnik ustawi się tak, że cały czas będzie stan wysoki (ząb przy czujniku). Wtedy warunek czasowy będzie spełniony ale koło nie będzie w ruchu?

    Szukałem jeszcze na forum i znalazłem taki temat:
    https://www.elektroda.pl/rtvforum/viewtopic.php?t=554180&highlight=obs%B3uga+przerwa%F1+atmega8&sid=f79fdb65fdd661cb0c06ac39ebc09a93
    To zdaje się jest koncepcja o której mówił snow polegająca na zliczaniu przerwań. Do tego dołożył bym jeszcze warunek (minimalna ilość przerwań w czasie) i do tego uzależnił przerwania od zbocza dodatniego lub ujemnego.

    0
  • #10 09 Cze 2008 17:17
    snow
    Poziom 28  

    Możesz sobie zmierzyć przy najwolniejszych i przy najszybszych obrotach jakie masz wartości i założyć warunki od góry i od dołu, jeżeli zostaną przekroczone to piszesz że dane koło jest uszkodzone. Jak byś zrobił częstotliwościomierz który mierzy względem zbocza sygnału to dostaniesz 0Hz nie zależnie od tego czy koło zatrzyma się w przesłonie czy poza nią.

    0
  • #11 09 Cze 2008 18:29
    PiotrPitucha
    Poziom 33  

    Cześć
    Attiny26 może przyjąć przerwania od każdej nogi, robisz licznik od jakiegoś wewnętrznego timera i zliczasz od 0 do 255, jeśli doliczysz do 255 to włączasz alarm, liczysz oczywiście na tylu zmiennych naraz ile Ci potrzeba.
    Teraz dodajesz do tego przerwania od czujników, jeśli przyjdzie przerwanie to zerujesz odpowiadającą mu zmienną i znowu ją inkrementujesz, jeśli przerwanie nie przyjdzie to masz informację ze koło się nie obraca, proste jak budowa przysłowiowego cepa.
    Piotr

    0
  • #12 12 Cze 2008 15:21
    AF7018
    Poziom 10  

    Jeśli to takie proste to czy mógłbym prosić o kawałek kodu obsługującego chociaż jeden czujnik?
    Żniwa zbliżają się wielkimi krokami, nadal czekam na programator STK200, do tego od kilku dni walczę z Proteusem i nawet głupi program z diodami nie nie działa tylko wyskakuje jakiś błąd.
    Kontroler obrotów (ruchu)

    :cry::cry::cry:

    0
  • #13 18 Cze 2008 14:45
    AF7018
    Poziom 10  

    Widzę,że nie ma zainteresowania tematem. A mnie na razie udało się stworzyć układ na Attiny2313.

    Code:
    Config Portb.0 = 1                                          ' ustawienie całego Portu B0 jako wyjścia
    
           Portb.0 = 1                                          ' stan spoczynkowy Portu B0 ustawiony na 1
    Config Portb.1 = 1                                          ' ustawienie całego Portu B1 jako wyjścia
           Portb.1 = 1                                          ' stan spoczynkowy Portu B1 ustawiony na 1

     Config Timer0 = Counter , Edge = Rising                    'konfiguracja Timera0 do zliczania impulsów (zbocze narastające)
     Config Timer1 = Counter , Edge = Rising                    'konfiguracja Timera1 do zliczania impulsów (zbocze narastające)


    Do                                                          'program główny - pętla

        Timer0 = 0                                              'zeruj licznik0
       Start Timer0                                             'zacznij liczyć

       Timer1 = 0                                               'zeruj licznik1
       Start Timer1                                             'zacznij liczyć
       Wait 1                                                   'zliczaj impulsy przez 1 sekundę
          Stop Timer0
       Stop Timer1


         If Timer0 < 120 Then Portb.1 = 0                       'jeśli czestotliwość na liczniku0 jest mniejsza od 120Hz zapala się dioda sygalizująca
                                                                 'jeśli czestotliwość na liczniku0 jest większa od 120Hz dioda sygalizująca gaśnie
      If Timer0 > 120 Then Portb.1 = 1

        If Timer1 < 10 Then Portb.0 = 0                         'jeśli czestotliwość na liczniku1 jest mniejsza od 10Hz zapala się dioda sygalizująca

      If Timer1 > 10 Then Portb.0 = 1                           'jeśli czestotliwość na liczniku1 jest większa od 10Hz dioda sygalizująca gaśnie

    Loop                                                        'koniec pętli i programu
    End


    W proteusie wszystko działa ale nie wiem czy realu ma szansę działać bo jeszcze czekam na procesor.
    Wadą jest to, że obsługuje tylko dwa czujniki poza tym możliwości są wystarczające.
    Czy na Attiny2313 da się zrobić tak żeby obsługiwać 6 wejść równocześnie? Ja na razie mam mglistą koncepcję jak to zrealizować. Będę próbował, tymczasem czekam na jakieś wskazówki.
    Pozdrawiam

    0
  • #14 22 Sie 2009 19:47
    justin19
    Poziom 9  

    Witam, AF7018 napisał:

    Cytat:
    Do tego jeszcze chcę jeszcze rozbudować i dołożyć pomiar strat ziarna. Teraz mam straty ziarna zrobione w postaci analogowej na zwykłej linijce diodowej.


    Jestem ciakawy w jaki sposób zrealizowałeś pomiar strat i czy stosowałeś fabryczne czujniki czy własne rozwiązania. Z góry thx za odpowiedz!

    Justin19,

    0
  • #15 23 Sie 2009 01:40
    PawelecXX
    Poziom 10  

    AF7018 napisał:

    Czy na Attiny2313 da się zrobić tak żeby obsługiwać 6 wejść równocześnie? Ja na razie mam mglistą koncepcję jak to zrealizować.


    Jednocześnie raczej się nie uda ale stosując multiplekser i zakładając, że te impulsy będą generowane z częstotliwością dziesiątek herców to nie powinieneś nawet zauważyć, że nie są pobierane jednocześnie. To jest naprawdę dobre rozwiązanie.

    0
  • #16 26 Sie 2009 06:29
    AF7018
    Poziom 10  

    Czujnik strat jest zrobiony na bazie oryginalnego LH Agro, tylko do prezentacji pomiaru jest zastosowana zwykła linijka diodowa z 12 diód po małej przeróbce, zamiast komputera.
    Jeśli chodzi o mutipleksowanie to właśnie częstotliwość jest mała i waha cię od 7 do 80Hz.

    0