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

Atmega8 i pseudoenkoder z ITR9606-F - gubienie kroków po 20 minutach pracy

MastrPlastr 28 Cze 2017 08:29 2958 29
  • #1 16555538
    MastrPlastr
    Poziom 11  
    Witam,
    Mam problem z układem który ma zliczać ilość obrotów silnika i przełączać kierunek obrotów przeciwną stronę po odliczeniu odpowiedniej ilości. Silnik napędza pręt gwintowany na którym jest nakrętka (uproszczony prototyp siłownika z którym układ będzie pracował w rzeczywistości).
    Program działa tak, że po odliczeniu 50 obrotów w jedną stronę, przełącza silnik w drugą stronę i to działa w pętli. Zliczanie obrotów odbywa się przez pseudo enkoder zrobiony z tekturki wraz z transoptorem szczelinowym (ITR9606-F) później sygnał trafia na bramke Schmitta (złożoną z LM324) w celu określenia jednoznacznie sygnału (0 lub 1, bez stanów przejściowych) a następnie na INT0 Atmegi8 jako sygnał przerwania zewnętrznego (zbocze narastające).
    Zaznaczyłem sobie na tekturce zakres ruchu nakrętki na pręcie gwintowanym, po około 20 minutach ciągłej pracy zakres jest przesunięty o ok 1cm (zakładając że cały zakres ruchu nakrętki to 5cm)
    Schemat:
    Atmega8 i pseudoenkoder z ITR9606-F - gubienie kroków po 20 minutach pracy


    Zdjęcia układu:
    Atmega8 i pseudoenkoder z ITR9606-F - gubienie kroków po 20 minutach pracy Atmega8 i pseudoenkoder z ITR9606-F - gubienie kroków po 20 minutach pracy Atmega8 i pseudoenkoder z ITR9606-F - gubienie kroków po 20 minutach pracy Atmega8 i pseudoenkoder z ITR9606-F - gubienie kroków po 20 minutach pracy

    I jeszcze sygnał który wchodzi na INT0 mikrokontrolera, a wychodzi z bramki Schmitta:
    Atmega8 i pseudoenkoder z ITR9606-F - gubienie kroków po 20 minutach pracy



    Program:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod



    Nagrałem 10 minut film z pracy układu, potem przeanalizowałem na komputerze, okazuje się, że czasem układ doliczy 46/47 obrotów (zwykle liczy 50 obrotów) i przełącza kierunek... Hmm.. czyżby jakieś zakłócenia? Może ktoś ma jakiś pomysł?
  • #2 16555748
    Tomasz Gumny
    Poziom 28  
    Przeanalizuj co się stanie, gdy tarcza zatrzyma się szczeliną naprzeciwko transoptora.
  • #3 16555775
    MastrPlastr
    Poziom 11  
    Tomasz Gumny napisał:
    Przeanalizuj co się stanie, gdy tarcza zatrzyma się szczeliną naprzeciwko transoptora.


    Na wyjściu z LM324 będzie stan wysoki, i na INT0 będzie podawany ciągle stan wysoki. Atmega nie będzie wtedy zliczać, bo przerwanie jest ustawione od zbocza narastającego a nie od stanu. Chyba że coś pominąłem?
  • #4 16555822
    Tomasz Gumny
    Poziom 28  
    Czyli to narastające zbocze spowoduje doliczenie impulsu. Po zmianie kierunku wystąpi tylko zbocze opadające, więc zaliczenia nie będzie.
  • #5 16555848
    MastrPlastr
    Poziom 11  
    Tomasz Gumny napisał:
    Czyli to narastające zbocze spowoduje doliczenie impulsu. Po zmianie kierunku wystąpi tylko zbocze opadające, więc zaliczenia nie będzie.


    Tak zliczenia nie będzie, ale będzie po ponownym obrocie tarczy i tak ma być. Gdyby było tak jak piszesz to pierwszy impuls zostałby policzony po kilku stopniach obrotu tarczy, a w chwili obecnej jest po pełnym obrocie. Na potwierdzenie tego co mówię, nagrałem film kamerą w slow motion.
    https://www.youtube.com/watch?v=ZLrtbXG8y4U

    Proszę zwócić uwagę od 12 sekundy zaczyna się nowy cykl pracy. Potem jest 50 obrotów w jedną stronę i kolejne 50 w drugą stronę.

    Problem jest taki że co jakiś czas z nieznanych mi przyczyn pomija 3-4 kroki, to wynika z mojej analizy nagrywając 10minut pracy układu i analizując na komputerze liczbę kroków. Czasem liczy równo 50 a czasem troche mniej.
  • #6 16555934
    Tomasz Gumny
    Poziom 28  
    Zobacz co się stanie, gdy zrobisz prawie cały obrót w prawo, zatrzymasz się na szczelinie i wrócisz w lewo zatrzymując się przed szczeliną . Mimo, że obracasz tyle samo w prawo i w lewo, zaliczane będą tylko obroty w prawo.
    1. ustaw program tak, żeby robił po jednym obrocie w lewo i w prawo. Jeśli cała szczelina przesunie się przed transoptorem, to po zmianie kierunku silnik nie zrobi całego obrotu, tylko wróci do początku szczeliny i zawróci.
    2. zrób szczelinę na pół obwodu.
  • #7 16556005
    MastrPlastr
    Poziom 11  
    Tomasz Gumny napisał:

    1. ustaw program tak, żeby robił po jednym obrocie w lewo i w prawo. Jeśli cała szczelina przesunie się przed transoptorem, to po zmianie kierunku silnik nie zrobi całego obrotu, tylko wróci do początku szczeliny i zawróci.


    Zrobiłem tak, układ jak widać się gubi i czasem robi po 2 obroty. Nawet zrobiłem film z działania:
    https://youtu.be/sGRv70AiW8g


    Tomasz Gumny napisał:
    2. zrób szczelinę na pół obwodu.


    Zrobiłem, tarcza przesuwa się o pół obrotu w porównaniu do przypadku z filmu, nadal nie działa poprawnie bo sie gubi.
  • #8 16556043
    Tomasz Gumny
    Poziom 28  
    Jeśli zatrzymuje się na obu końcach szczeliny, czyli teoretycznie na obu zboczach, to znaczy, że masz tam zakłócenia.
  • #9 16556293
    MastrPlastr
    Poziom 11  
    Problem teoretycznie rozwiązany. Dokonałem zmiany takiej, że wyjście z LM324 nie powoduje zgłoszenia przerwania w atmedze, tylko atmega ciągle sprawdza stan linii przy pomocy PINx.
    Jednak z ciekawości jeśli ktoś wie dlaczego, metoda z użyciem przerwania nie zdała egzaminu to proszę o sugestie. Myślałem że te przerwania zewnętrzne są właśnie po to żeby je stosować w takich sytuacjach jak ta....
  • #10 16556363
    dondu
    Moderator na urlopie...
    MastrPlastr napisał:
    Myślałem że te przerwania zewnętrzne są właśnie po to żeby je stosować w takich sytuacjach jak ta....

    I dobrze myślałeś, a zastosowane rozwiązanie problemu to jedynie jego zamaskowanie :)

    Weź drugą ATmegę, symuluj za jej pomocą sygnał z enkodera i sprawdź swój program.
    W ten prosty sposób zabezpieczysz się przed ewentualnymi problemami sygnału z enkodera i będziesz wiedział, gdzie szukać przyczyny.
  • #11 16621006
    Piotrekdpp
    Poziom 1  
    Mam pytanie do autora wątku. Buduje nawijarkę cewek opartą na atmega16, silniku DC, silniku krokowym. Silnik DC jest sterowany z atmegi przez PWM potencjometrem podpiętym pod ADC. Jako licznik zwojów zamontowałem również ITR9606, niestety nie mam jeszcze układu LM324 by zbudować bramkę schmitta. Postanowiłem sprawdzić czy da się wykonać tymczasowo licznik zwojów bez bramki schmitta. Podłączyłem wyjście transporta pod ADC atmegi i wyswietlilem różnice napięć na wyświetlaczu . Następnie podane napięcia dodałem do programu który piszę w bascomie i tu pojawia się problem , ponieważ licznik jest w stanie poprawnie zliczać obroty jedynie przy prędkości około jeden obrót wału silnika na sekundę. Gdy zwiększę obroty silnika adc atmegi nie rozpoznaje zmiany napięcia. Pojawiło mi się pytanie czy przypadkiem ITR9606 nie jest za wolny? Nie miałeś z tym problemów ? Jakie prędkości osiąga Twój silnik ?
  • #12 16621055
    dondu
    Moderator na urlopie...
    Typowy czas narastania lub opadania zbocza dla tego czujnika to 15µs (dla VCE=5V, IC=1mA, RL=1K) co pozwala osiągnąć ponad 33000 impulsów na sekundę.
    W jakim celu pomiary robisz za pomocą ADC? Nota bene nawet wtedy można osiągnąć do 15000 pomiarów na sekundę.
    Na pinach cyfrowych są przerzutniki Schmitta: http://mikrokontrolery.blogspot.com/2011/04/jak-mikrokontroler-widzi-sygnal-cyfrowy.html

    Najprawdopodobniej więc masz źle napisany program.
  • #13 16623879
    el2010tmp
    Poziom 25  
    MastrPlastr napisał:
    Silnik napędza pręt gwintowany na którym jest nakrętka (uproszczony prototyp siłownika z którym układ będzie pracował w rzeczywistości).
    Program działa tak, że po odliczeniu 50 obrotów w jedną stronę, przełącza silnik w drugą stronę i to działa w pętli.

    Do tego wystarczą dwie krańcówki [pozycja przód, tył "nakrętki"] i dwa przekaźniki.
    Po co Ci jeszcze mikrokontroler, enkoder, program itd ?
  • #14 16623900
    MastrPlastr
    Poziom 11  
    el2010tmp napisał:
    MastrPlastr napisał:
    Silnik napędza pręt gwintowany na którym jest nakrętka (uproszczony prototyp siłownika z którym układ będzie pracował w rzeczywistości).
    Program działa tak, że po odliczeniu 50 obrotów w jedną stronę, przełącza silnik w drugą stronę i to działa w pętli.

    Do tego wystarczą dwie krańcówki [pozycja przód, tył "nakrętki"] i dwa przekaźniki.
    Po co Ci jeszcze mikrokontroler, enkoder, program itd ?


    Docelowo śruba jest w siłowniku który jest zabudowany. Nie ma możliwości żeby dołożyć tam krańcówki.
    Poza tym temat krańcówek kiedyś przerabiałem, jest to rozwiązanie mechaniczne (styki) a te lubią zwłaszcza zimą dziwnie się zachowywać, woda skraplająca się z powietrza powoduje, że te krańcówki się zatrzaskują (testowane nawet na krańcówkach hermetycznych, przemysłowych z jakiejś maszyny).
    Dodatkowo mając feedback z takiego układu napędowego można dowolnie spowalniać silniki przy położeniu granicznym nakrętki na śrubie co też ma znaczenie jeśli układ ma płynnie działać.

    Generalnie, układ w dalszym ciągu nie działa choć z braku czasu odłożyłem go na później. Silniki wraz z enkoderami są na kilkumetrowych kablach. Rozwiązanie z PINx zamiast przerwania od INT0 i INT1 również jest zawodne, silnik gubi kroki.
    Tak w ogóle jest to napęd do bramy dwuskrzydłowej, i powiedzmy raz na kilka otworzeń/zamknięć bramy, brama się nie domknie lub nie otworzy do końca. Co ciekawe przy zliczaniu przez przerwanie INT błąd się inkrementuje, z każdym kolejnym otwarciem jest coraz gorzej, jeśli chodzi o zliczanie przez sprawdzanie stanu linii PINx, brama powiedzmy otworzy się 10 razy dobrze, a 11 raz w połowie.
  • #15 16624370
    el2010tmp
    Poziom 25  
    MastrPlastr napisał:
    Dodatkowo mając feedback z takiego układu napędowego można dowolnie spowalniać silniki przy położeniu granicznym nakrętki na śrubie co też ma znaczenie jeśli układ ma płynnie działać.

    W takim razie zastosuj enkoder inkrementalny z linią indeks, co pozwoli skompensować błędy, oraz coś mądrzejszego niż dwa przekaźniki na wyjściu.

    MastrPlastr napisał:
    Poza tym temat krańcówek kiedyś przerabiałem, jest to rozwiązanie mechaniczne (styki) a te lubią zwłaszcza zimą dziwnie się zachowywać, woda skraplająca się z powietrza powoduje, że te krańcówki się zatrzaskują (testowane nawet na krańcówkach hermetycznych, przemysłowych z jakiejś maszyny).

    Jest cała masa krańcówek mechanicznych które b.dobrze radzą sobie w trudnych warunkach.
    Poza tym nożna zastosować rozwiązania niemechaniczne, polecam indukcyjne czujniki zbliżeniowe.
    https://www.google.pl/search?q=indukcyjne+czu...9LzVAhWMfFAKHRpgCS0Q_AUICigB&biw=1138&bih=558
    Oraz czujniki optyczne do ochrony strefy ruchu
    https://www.google.pl/search?client=firefox-b....0....0...1.1.64.psy-ab..2.6.1645.PJKstWnQdZ4
  • #16 16625332
    MastrPlastr
    Poziom 11  
    el2010tmp napisał:
    W takim razie zastosuj enkoder inkrementalny z linią indeks, co pozwoli skompensować błędy, oraz coś mądrzejszego niż dwa przekaźniki na wyjściu.

    Inkrementalny z linią indeks to taki, gdzie badając przesunięcie faz można określić kierunek? Za bardzo skomplikowane poza tym mam ograniczoną liczbę przewodów w bramie. A w czym przeszkadzają przekaźniki? Coś mądrzejszego? Mostek H? na tranzystorach? Skomplikowane jest sterowanie takim mostkiem, gdy np. jest kluczowany on PWM'em.

    el2010tmp napisał:

    Jest cała masa krańcówek mechanicznych które b.dobrze radzą sobie w trudnych warunkach.
    Poza tym nożna zastosować rozwiązania niemechaniczne, polecam indukcyjne czujniki zbliżeniowe.
    https://www.google.pl/search?q=indukcyjne+czu...9LzVAhWMfFAKHRpgCS0Q_AUICigB&biw=1138&bih=558
    Oraz czujniki optyczne do ochrony strefy ruchu
    https://www.google.pl/search?client=firefox-b....0....0...1.1.64.psy-ab..2.6.1645.PJKstWnQdZ4


    To że krańcówki nie są doskonałe to był dodatkowy argument do tego że nie mam gdzie ich zamontować, a głownym powodem tego że ich nie stosuje jest właśnie brak miejsca. Enkoder zbudowałem sobie sam, mała tarcza na osi silnika + transoptor. Rozmieszczenie krańcówek bądź innych czujników magnetycznych na śrubie nie wchodzi w grę.
  • #17 16625450
    Konto nie istnieje
    Konto nie istnieje  
  • #18 16625469
    MastrPlastr
    Poziom 11  
    niveasoft napisał:
    Kolego w tym Twoim "enkoderze" masz tylko jedno wyjście tak?
    Potraktuj go jak zwykły przycisk.

    Podłącz do Twojego kodu zwykły przycisk i naciśnij go, na przykład, 20 razy.
    Założę się, że jakiś wyświetlacz, albo wysłanie wyniku do terminala pokazałoby czasem inną wartość.

    Po lekturze tego artykułu lub podobnych które znajdziesz w sieci pod hasłem "debounce" powinno Ci się coś rozjaśnić :D


    Dysponuje oscyloskopem cyfrowym, doskonale wiem jak wyglądają przebiegi w moim układzie, wiem co tam się dzieje. Ale jak widzę że na INT0 wchodzi ramka składająca się z 3 zbocz narastających a mikrokontroler realizuje if'a który wykonuje się pod warunkiem pojawienia się 4 to chyba coś nie halo. Poza tym jest problem bo kable od enkodera lecą w wiązce z kablami od silnika i indukują się w nich szpilki które też mają wpływ na przerwania.
    Sprawdzanie stanu linii, odczekanie na ustabilizowanie stanu kilkadziesiąt ms a później ponowne sprawdzenie, również jest nieskuteczne. Dodam że na wejściach jest filtracja sprzętowa, przy samym enkoderze i kilka metrów dalej na kablu też, zmniejsza to znacząco zakłócenia ale i tak zbyt mało. Największe zakłócenia są widoczne w momencie wyłączenia silnika, w sumie logiczne, ciągłość prądu w cewce.
  • #19 16625778
    kamyczek
    Poziom 38  
    Prowadzenie nieekranowanych i długich przewodów od encodera wraz z impulsowym sterowaniem obciążenia indukcyjnego to "strzelanie sobie w kolano" Większość czujników sprzedawanych z przewodem ma ekranowany przewód sygnałowy do tego jeśli już musi być prowadzony ze sterowaniem mocy obwodów o charakterze indukcyjnym wymaga odpowiedniego ich zaprojektowania tak żeby ograniczyć emisję zakłóceń które generują . Takie rozwiązania wymagają sporej wiedzy z zakresu projektowania obwodów mocy , automatyki i programowania . Tu trzeba po prostu zminimalizować zakłócenia , odseparować i ekranować przewody mało sygnałowe i odpowiednio napisać program obsługi . Najlepsze efekty daję łączenie kilku metod korekcji zakłóceń analogowy (filtry pasmowe) + cyfrowy + rozsądne rozłożenie przewodów i czujników . Oscyloskop daje tylko wiedzę że układ nie ma prawa działać prawidłowo bo są w nim zakłócenia wyciągnij wnioski i popraw projekt bo jest po prostu źle zrobiony .
  • #20 16625941
    MastrPlastr
    Poziom 11  
    kamyczek napisał:
    Prowadzenie nieekranowanych i długich przewodów od encodera wraz z impulsowym sterowaniem obciążenia indukcyjnego to "strzelanie sobie w kolano" Większość czujników sprzedawanych z przewodem ma ekranowany przewód sygnałowy do tego jeśli już musi być prowadzony ze sterowaniem mocy obwodów o charakterze indukcyjnym wymaga odpowiedniego ich zaprojektowania tak żeby ograniczyć emisję zakłóceń które generują . Takie rozwiązania wymagają sporej wiedzy z zakresu projektowania obwodów mocy , automatyki i programowania . Tu trzeba po prostu zminimalizować zakłócenia , odseparować i ekranować przewody mało sygnałowe i odpowiednio napisać program obsługi . Najlepsze efekty daję łączenie kilku metod korekcji zakłóceń analogowy (filtry pasmowe) + cyfrowy + rozsądne rozłożenie przewodów i czujników . Oscyloskop daje tylko wiedzę że układ nie ma prawa działać prawidłowo bo są w nim zakłócenia wyciągnij wnioski i popraw projekt bo jest po prostu źle zrobiony .


    Oooo i takie wnioski są rzeczowe. Przynajmniej nie są już n'te zarzuty występowania drgań styków, gdzie w zasadzie styków żadnych tam nie ma.
    Z uwagi na to że projekt jest zmontowany (z tym że nie działa do końca poprawnie), nie mam możliwości robienia wszystkiego od nowa, a tylko wprowadzenie poprawek. Wpadłem na pomysł żeby przy siłowniku, wrzucić attiny13, który będzie zliczał impulsy z enkodera a sygnał (ten na kilkumetrowych kablach) do Atmegi sterującej przekaźnikami będzie bardziej jednoznaczny np. stan wysoki trwający określoną ilość czasu. Znacznie łatwiej będzie taki sygnał rozpoznać niż zliczać impulsy które będą obarczone błędami wynikającymi z występowania zakłóceń.
  • #21 16626043
    Konto nie istnieje
    Konto nie istnieje  
  • #22 16626173
    dondu
    Moderator na urlopie...
    @MastrPlastr
    Pomimo jak się wydawało porządnego pierwszego postu, twoje wypowiedzi są niekompletne, dozują nam stan faktyczny po troszkę i są sprzeczne, co nie pozwala nam zdiagnozować problem. Na przykład:

    MastrPlastr napisał:
    Hmm.. czyżby jakieś zakłócenia?

    versus:
    MastrPlastr napisał:
    Dysponuje oscyloskopem cyfrowym, doskonale wiem jak wyglądają przebiegi w moim układzie, wiem co tam się dzieje.

    Jeśli więc impulsy na wejściu INT0 są takie jak na załączonym oscylogramie, to nie istotne są wszelkie dywagacje na temat przewodów i zakłóceń.
    Jeśli natomiast są jakieś zakłócenia na pinie INT0, to pokaż oscylogram z zarejestrowanym zakłóceniem - dopiero wtedy będziemy mieli podstawy do wskazania rozwiązania.

    Poza tym, czy wykonałeś test programu?:

    dondu napisał:
    Weź drugą ATmegę, symuluj za jej pomocą sygnał z enkodera i sprawdź swój program.
  • #23 16627636
    MastrPlastr
    Poziom 11  
    dondu napisał:
    @MastrPlastr
    Pomimo jak się wydawało porządnego pierwszego postu, twoje wypowiedzi są niekompletne, dozują nam stan faktyczny po troszkę i są sprzeczne, co nie pozwala nam zdiagnozować problem. Na przykład:

    MastrPlastr napisał:
    Hmm.. czyżby jakieś zakłócenia?

    versus:
    MastrPlastr napisał:
    Dysponuje oscyloskopem cyfrowym, doskonale wiem jak wyglądają przebiegi w moim układzie, wiem co tam się dzieje.

    Jeśli więc impulsy na wejściu INT0 są takie jak na załączonym oscylogramie, to nie istotne są wszelkie dywagacje na temat przewodów i zakłóceń.
    Jeśli natomiast są jakieś zakłócenia na pinie INT0, to pokaż oscylogram z zarejestrowanym zakłóceniem - dopiero wtedy będziemy mieli podstawy do wskazania rozwiązania.

    Poza tym, czy wykonałeś test programu?:

    dondu napisał:
    Weź drugą ATmegę, symuluj za jej pomocą sygnał z enkodera i sprawdź swój program.


    Co do sprzeczności moich wypowiedzi które zacytowałeś: problem był taki, że pierwszy post dotyczył prototypu złożonego z kartonu, z silnikiem od drukarki, tam płynęły małe prądy, wszystko było złożone na płytkach uniwersalnych, zakłócenia były, szybko udało się problem rozwiązać do napisałem w innym moim poście:
    MastrPlastr napisał:
    Problem teoretycznie rozwiązany. Dokonałem zmiany takiej, że wyjście z LM324 nie powoduje zgłoszenia przerwania w atmedze, tylko atmega ciągle sprawdza stan linii przy pomocy PINx. [...]

    Potem złożyłem układ rzeczywisty, wyglądał on mniej więcej tak:



    I w zasadzie, powróciłem do pomysłu z przerwaniem od INT, bo płytki zaprojektowałem tak że były krótkie ścieżki, wszystko oblane polygonem z masy. Układ działał idealnie, w stanie "laboratoryjnym" czyli to co przedstawione na filmie z yt. Gdy przeniosłem urządzenie do warunków bojowych, czyli pod bramę, zaczęły się schody, długie kable, zakłócenia itd. powodowały że układ działał jak kilka postów wyżej. Gdy znalazłem rozwiązanie problemu o którtym pisałem wcześniej tzn inkrementujący się błąd, wystąpił problem taki że po nieokreślonej liczbie otwarć i zamknięć układ się wysypywał. A wiadomo że najgorsze problemy są takie które występują losowo, w ogóle wtedy trudno podejrzeć dlaczego tak się stało a nie inaczej.
    Moje sprzeczności w wypowiedziach wynikły też z tego powodu, że zrobiłem prototyp, napisałem tutaj post, potem powstało kilka innych prototypów a na elektrodzie się dłuższy czas nie wypowiadałem. Chodzi o to że dużo sam kombinowałem i próbowałem do tego dojść.
    Aha i jeśli chodzi jeszcze o te zakłócenia, dość długo nie chciałem zabierać oscyloskopu pod bramę, bo przy bramie wjazdowej musiałbym sobie zorganizować laborke, ale w końcu sytuacja mnie zmusiła, dlatego później dopiero napisałem o tym że jestem pewien że to zakłócenia.
    Na tą chwile niewiadome dla mnie rzecz to to:
    1. na oscyloskopie widzę że na INT0 wchodzi przebieg prostokątny mające 3 zbocza, atmega CZASEM spełnia warunek if(zbocza == 4) czyli zlicza zbocza których nie ma, tutaj nie ma mowy o zakłóceniach na kablu bo są bramki schmitta i przebiegi mają w miare ostre krawędzie.
    2. sprawdzam stan lini przy pomocy PINx po kilkudziesięciu ms ponownie sprawdzam, jeśli się utrzymuje stan wysoki, mogę potraktować to jako obrót tarczy a nie zakłócenie, a mimo to mikrokontroler czasem wyłącza silniki przed całkowitym otwarciem (sytuacja np. raz na 10 otwarć bramy)

    Męczyłem się z tym na prawdę długo, kolega niveasoft zarzucił mi oburzenie, zresztą słusznie, trochę się oburzyłem bo zrobiłem milion różnych rzeczy a on dalej o drganiach styków.
    Oprócz tego że oblane wszystko polygonem z GND zastosowałem wg mnie porządną filtracje, płytki nie są bezpośrednio narażone na zakłócenia. Dodaje schematy ostatecznej wersji urządzenia:
    Atmega8 i pseudoenkoder z ITR9606-F - gubienie kroków po 20 minutach pracyAtmega8 i pseudoenkoder z ITR9606-F - gubienie kroków po 20 minutach pracy

    Poza tym, straciłem do tego cierpliwość, nie chce spędzić nad tym kolejnego miesiąca, dlatego postawnowiłem że przebuduje siłowniki, dodając krańcówki, a układ zrobię chyba bardziej jako elektryk niż elektronik. Atmegi uczą się głupot i później głupoty wychodzą, czyste przekaźniki są chyba mniej zawodne.


    dondu napisał:
    Weź drugą ATmegę, symuluj za jej pomocą sygnał z enkodera i sprawdź swój program.


    Tak zrobiłem to, górny przebieg atmega dająca sygnał z zakłóceniami, dolny przebieg wyjścowa reakcja atmegi ze sterownika, jak widać zakłócenia omija skutecznie:
    Atmega8 i pseudoenkoder z ITR9606-F - gubienie kroków po 20 minutach pracy
  • #24 16627736
    kamyczek
    Poziom 38  
    Z oscylogramu wynika że przerwanie napisane masz tak że atmega reaguje na każde zbocze narastające i przy nim zmienia stan . Poza tym w warunkach bojowych musisz zadbać o osłonięcie od światła transoptora szczelinowego . Światło słoneczne ma znacznie większe spectrum niż oświetlenie sztuczne i może skutecznie dodawać impulsy na szczelinówce jak w nią zajrzy ;) . Poza tym wystarczy spadek napięcia lub jego brak by okazało się że układ nie ma pojęcia gdzie jest więc proponował bym montaż choć jednej krańcówki bazowej przy osiągnięciu której układ zerował by licznik . Poza tym warto dołożyć tam układ diagnostyki polegający na wyłączeniu układu w przypadku załączenia silnika i braku impulsów bo będzie on sygnalizował po prostu awarię jednego lub drugiego . Można też diodę świecącą zasilać sygnałem prostokątnym i sprawdzać czy jest on na wyjściu eliminuje to skutecznie sygnały obce . Sterując diodą pwm w przerwaniu możesz sprawdzać zapaliłem diodę odebrałem sygnał stan 1 zgasiłem diode odebrałem sygnał o zgaszeniu stan 1 zapaliłem diodę nie odebrałem sygnału stan 0 ograniczysz wtedy skuteczność powstawania zakłóceń . W układach tego typu musisz zabezpieczyć się przed wszelkimi ewentualnościami brakiem prądu zacięciem przekładni ingerencją człowieka i zwierzątkami bramka tego typu musi być możliwie bezpieczna i reagować na sytuacje awaryjne dołożył bym więc czujnik przeciążenia silnika mierzący jaki pobiera prąd lub chociaż bezpiecznik .
  • #25 16628613
    MastrPlastr
    Poziom 11  
    kamyczek napisał:
    Z oscylogramu wynika że przerwanie napisane masz tak że atmega reaguje na każde zbocze narastające i przy nim zmienia stan .

    Akurat program z oscylogramu był napisany specjalnie po to aby niwelować zakłócenia. Wykrywanie działało w przerwaniu od timera, sprawdzny był stan stan linii, w kolejnym przerwaniu sprawdzane było czy w dalszym ciągu stan się utrzymuje. Gdybym wstawił oscylogram z programu który reaguje na INT0 to nie byłoby to nic odkrywczego, z każdym zboczem wykonywana byłaby jakaś akcja.

    kamyczek napisał:
    Poza tym w warunkach bojowych musisz zadbać o osłonięcie od światła transoptora szczelinowego . Światło słoneczne ma znacznie większe spectrum niż oświetlenie sztuczne i może skutecznie dodawać impulsy na szczelinówce jak w nią zajrzy ;) .

    I tak i nie, na zdrowy rozsądek też powiedziałbym że na to znaczenie, jednakże sprawdzałem oscyloskopem co się stanie jak oświetle transoptor wiązką światła słonecznego. No i nic się nie działo. Ogólnie to siłowniki mają także obudowy na część z silnikiem więc jest tam ciemno jak wiadomo gdzie :D

    kamyczek napisał:
    Poza tym wystarczy spadek napięcia lub jego brak by okazało się że układ nie ma pojęcia gdzie jest więc proponował bym montaż choć jednej krańcówki bazowej przy osiągnięciu której układ zerował by licznik . Poza tym warto dołożyć tam układ diagnostyki polegający na wyłączeniu układu w przypadku załączenia silnika i braku impulsów bo będzie on sygnalizował po prostu awarię jednego lub drugiego .

    Tak, ale to są dodatkowe funkcjonalności które można w każdym momencie dopisać. W samochodzie który w ogóle nie jeździ nikt się nie przejmuje niedziałającą klimatyzacja. Najpierw to ma to wszystko jeździć żeby zacząć naprawiać klime.
    Chociaż pomysł z krańcówką bazującą jest bardzo dobry. Tak się robi w urządzeniach np. z silnikami krokowymi. Przy starcie urządzenia silnik przesuwa np. jakiś element do pozycji transoptora i od tego momentu można liczyć kroki. U mnie jest tego typu problem że nie ma gdzie tej krańcówki wstawić, jak wstawiłbym jedną to i drugą i enkoder nie jest potrzebny.

    kamyczek napisał:
    Można też diodę świecącą zasilać sygnałem prostokątnym i sprawdzać czy jest on na wyjściu eliminuje to skutecznie sygnały obce . Sterując diodą pwm w przerwaniu możesz sprawdzać zapaliłem diodę odebrałem sygnał stan 1 zgasiłem diode odebrałem sygnał o zgaszeniu stan 1 zapaliłem diodę nie odebrałem sygnału stan 0 ograniczysz wtedy skuteczność powstawania zakłóceń .

    Nie wiem czy nie będzie to zbyt skomplikowane, bo dochodzi jeszcze do tego obracająca się tarcza która przerywa wiązke światła, więc wydaje mi się że trudno będzie odróżnić zakłócenie od poprawnej pracy układu.


    kamyczek napisał:
    W układach tego typu musisz zabezpieczyć się przed wszelkimi ewentualnościami brakiem prądu zacięciem przekładni ingerencją człowieka i zwierzątkami bramka tego typu musi być możliwie bezpieczna i reagować na sytuacje awaryjne dołożył bym więc czujnik przeciążenia silnika mierzący jaki pobiera prąd lub chociaż bezpiecznik .

    Ja to wszystko rozumiem, i się zgadzam i tak też bym zrobił. Sam często zabezpieczam różne układy przed samym sobą jeśli chodzi o względy bezpieczeństwa. Ale tutaj pojawia się kwestia z fragmentu wyżej nt samochodu i klimy :)
  • #26 16630803
    el2010tmp
    Poziom 25  
    Przyglądałeś się może innym rozwiązaniom tego typu?

    Przykładowo sterowanie szyby w samochodzie - bez enkodera, bez krańcówek. Silnik się kręci w lewo lub w prawo a pozycje krańcowe są wykrywane poprzez analizę prądu pobieranego przez silnik.

    Wystarczy usunąć "enkoder" (który zresztą daje tylko sygnał Index bez sygnałów AB) i wstawić układ pomiaru prądu, reszta to już soft.

    Puki co Twoja koncepcja jest po prostu mizerna.
  • #28 16631831
    MastrPlastr
    Poziom 11  
    squelch napisał:
    W programie który masz u góry są delay_ms program się zatrzymuje na tym a przerwania są nadal zgłaszane i możliwe że już nastąpiło zliczenie do piędziesiątki a potem zmienna się przepełnia a ty nadal w delay_ms.




    Pozdrawiam


    Nie no, tak to nie działa... delay jest po tym jak silniki się wyłączą więc żaden sygnał z enkodera nie przychodzi, a co za tym idzie nic nie zgłasza przerwania.



    el2010tmp napisał:
    Przyglądałeś się może innym rozwiązaniom tego typu?

    Przykładowo sterowanie szyby w samochodzie - bez enkodera, bez krańcówek. Silnik się kręci w lewo lub w prawo a pozycje krańcowe są wykrywane poprzez analizę prądu pobieranego przez silnik.

    Wystarczy usunąć "enkoder" (który zresztą daje tylko sygnał Index bez sygnałów AB) i wstawić układ pomiaru prądu, reszta to już soft.

    Puki co Twoja koncepcja jest po prostu mizerna.


    Tak przyglądałem, zwykle są albo krańcówki albo wyłączenie silnika przez wyłącznik przeciążeniowy. Takie rozwiązanie mnie nie zadowala, bo spadnie śnieg, zawieje wiatr i brama sie nie otworzy. Znajomy ma zestaw somfy za 2k PLN gdzie tak to właśnie działa jak napisałem wyżej.

    Koncepcja jest bardzo dobra, układ ze sprzężeniem zwrotnym od ilość wykonanych obrotów silnika. Typowy elektromechaniczny system napędowy. Do perfekcji brakuje mu tylko ograniczenia prądowego, aczkolwiek silniki wyposażone są w sprzęgła bo są to silniki z wkrętarek więc w razie co krzywdy nie zrobi. Mizerne jest wykonanie, bo nie do końca działa tak jak powinno.
  • #30 16632060
    squelch
    Poziom 11  
    A ok wiec ty patrzysz ile zrobil obrotow i jak zrobil 50 to wyłaczasz silnik myslalem ze przekazniki steruja innymi silnikami. Pisałeś żeten 1 problem rozwiązałeś teoretycznie gdzie leżał problem. Co do gotowego już ukladu powiedzmy ten 2 problem to pokazałeś schemat pokaż aktualny kod.
REKLAMA