Elektroda.pl
Elektroda.pl
X

Wyszukiwarki naszych partnerów

Wyszukaj w ofercie 200 tys. produktów TME
Proszę, dodaj wyjątek elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Atmega+pseudoenkoder gubi kroki.

MastrPlastr 28 Cze 2017 08:29 1746 29
  • #1 28 Cze 2017 08:29
    MastrPlastr
    Poziom 10  

    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:
    Atmega+pseudoenkoder gubi kroki.


    Zdjęcia układu:
    Atmega+pseudoenkoder gubi kroki. Atmega+pseudoenkoder gubi kroki. Atmega+pseudoenkoder gubi kroki. Atmega+pseudoenkoder gubi kroki.

    I jeszcze sygnał który wchodzi na INT0 mikrokontrolera, a wychodzi z bramki Schmitta:
    Atmega+pseudoenkoder gubi kroki.



    Program:

    Kod: 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 28 Cze 2017 10:34
    Tomasz Gumny
    Poziom 27  

    Przeanalizuj co się stanie, gdy tarcza zatrzyma się szczeliną naprzeciwko transoptora.

  • #3 28 Cze 2017 10:48
    MastrPlastr
    Poziom 10  

    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 28 Cze 2017 11:10
    Tomasz Gumny
    Poziom 27  

    Czyli to narastające zbocze spowoduje doliczenie impulsu. Po zmianie kierunku wystąpi tylko zbocze opadające, więc zaliczenia nie będzie.

  • #5 28 Cze 2017 11:18
    MastrPlastr
    Poziom 10  

    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 28 Cze 2017 12:09
    Tomasz Gumny
    Poziom 27  

    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 28 Cze 2017 12:48
    MastrPlastr
    Poziom 10  

    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 28 Cze 2017 13:07
    Tomasz Gumny
    Poziom 27  

    Jeśli zatrzymuje się na obu końcach szczeliny, czyli teoretycznie na obu zboczach, to znaczy, że masz tam zakłócenia.

  • #9 28 Cze 2017 15:06
    MastrPlastr
    Poziom 10  

    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 28 Cze 2017 15:40
    dondu
    Moderator Mikrokontrolery Projektowanie

    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 02 Sie 2017 09:43
    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 02 Sie 2017 10:08
    dondu
    Moderator Mikrokontrolery Projektowanie

    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 03 Sie 2017 20:54
    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 03 Sie 2017 21:05
    MastrPlastr
    Poziom 10  

    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 04 Sie 2017 08:13
    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 04 Sie 2017 18:51
    MastrPlastr
    Poziom 10  

    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 04 Sie 2017 20:28
    niveasoft
    Poziom 34  

    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

  • #18 04 Sie 2017 20:41
    MastrPlastr
    Poziom 10  

    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 05 Sie 2017 00:06
    kamyczek
    Poziom 33  

    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 05 Sie 2017 08:03
    MastrPlastr
    Poziom 10  

    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 05 Sie 2017 09:45
    niveasoft
    Poziom 34  

    Nie wiem skąd te oburzenie. Jak nie wiadomo o co chodzi to trzeba wrócić do podstaw i po mojej wypowiedzi uzupełniłeś obraz tego urządzenia o te "kwiatki".

    Zbudowałem układ który automatycznie reguluje prędkość tarczy gramofonu. Nie pomyli się przez godzinę nawet o jeden impuls mimo iż ma ich tam 40/s a korzysta z "trudniejszego" transoptora odbiciowego a nie szczelinowego. Wiem jak wygląda sygnał z takiego transoptora i nie jest to czyste Hi-Lo.

    Dobrze że zastosowałeś histerezę, ale:
    1.Mogłeś zastosować dedykowany układ komparatora typu LM393. Użycie OPamp jako komparatora jest możliwe, ale komparator do tego stworzony zawsze będzie lepszym wyborem.
    2.Mogłeś stan spoczynkowy ustalić na wysoki czyli 5V a impulsy dać masowe. Wtedy jakaś wygenerowana szpilka nie wpłynie na rozpoznanie tego jako impuls.

    Układ transoptora można by znacząco dalej poprawić niemniej przyłączam się do słów przedmówcy że:

    Cytat:
    Najlepsze efekty daję łączenie kilku metod korekcji zakłóceń analogowy (filtry pasmowe) + cyfrowy + rozsądne rozłożenie przewodów i czujników .
    a o tym jak to poprowadziłeś Ty i jakie tam są warunki dla sygnałów dowiedzieliśmy się dopiero po mojej wypowiedzi.

  • #22 05 Sie 2017 11:42
    dondu
    Moderator Mikrokontrolery Projektowanie

    @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 06 Sie 2017 12:50
    MastrPlastr
    Poziom 10  

    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:

    Link

    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:
    Atmega+pseudoenkoder gubi kroki.Atmega+pseudoenkoder gubi kroki.

    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:
    Atmega+pseudoenkoder gubi kroki.

  • #24 06 Sie 2017 13:44
    kamyczek
    Poziom 33  

    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 06 Sie 2017 21:29
    MastrPlastr
    Poziom 10  

    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 08 Sie 2017 09:10
    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.

  • #27 08 Sie 2017 20:13
    squelch
    Poziom 11  

    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

  • #28 08 Sie 2017 20:23
    MastrPlastr
    Poziom 10  

    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 08 Sie 2017 22:00
    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.

 Szukaj w ofercie
Zamknij 
Wyszukaj w ofercie 200 tys. produktów TME