Do Projektu iAutomatyka dołączyli:

https://iautomatyka.pl/wp-content/uploads/2018/10/20180911_215252-1.jpg

ROBOT KROKI – Elektronika, czyli zewnętrzne, szybkie liczniki dla enkoderów cz.6

autor: Rafał.

Artykuł z serii: "KROKI" - Robot przemysłowy, zbudowany na biurku


Nadszedł czas, by odejść choć na chwilę od druku 3D i zająć się innymi, równie ciekawymi zagadnieniami. Tak jak obiecywałem w poprzednim wpisie, dzisiaj postaramy się zabrać za projekt elektroniki, która pozwoli zapamiętać pozycję z enkoderów poszczególnych osi, nawet po zaniku napięcia. W tym celu będziemy musieli zaprojektować układ szybkich liczników sprzętowych z podtrzymaniem bateryjnym. Najpierw jednak musimy zastanowić się nad blokami wejściowymi tego układu. Musimy w końcu odpowiednio interpretować impulsy odczytywane z enkoderów, by wykorzystane liczniki poprawnie odzwierciedlały aktualne pozycje osi robota.

Ale po co?

Rozmawiając z różnymi osobami na temat konstrukcji mojego robota, gdy mówiłem akurat o potrzebie zastosowania dodatkowej elektroniki, kilkukrotnie usłyszałem pytanie „Po co?”.  Zastanówmy się więc, czy ta dodatkowa elektronika naprawdę jest potrzebna.

Niezaprzeczalny jest fakt, że utrzymywanie prawidłowej pozycji poszczególnych osi jest dla nas bardzo ważne. „Zgubienie kroków” przez zastosowane silniki krokowe powoduje, że pozycja chwytaka manipulatora znacząco odbiega od tej, która zadana została w programie. Ostateczna pozycja chwytaka zależna jest bowiem od wszystkich osi i nawet minimalne przekłamanie na jednej osi będzie powodować duży ostateczny błąd w pozycjonowaniu chwytaka.

Jednak czy do eliminacji tego problemu jest nam potrzebne jakieś inne urządzenie niż sam sterownik PLC? Oczywiście, że nie. S7-1200 posiada szybkie, sprzętowe liczniki, które idealnie nadają się do tego zadania. Każdą oś uzbrajamy w enkodery i podłączamy je do wejść szybkich liczników. Pomiędzy wykonywaniem kolejnych ruchów kontrolujemy pozycję zadaną z tą rzeczywistą i w razie przekłamania dokonujemy korekty. Jakiej korekty? To wszystko zależy od naszej koncepcji. W moim przypadku prawdopodobnie wyglądałoby to tak, że niewielkie uchyby byłyby kompensowane poprzez korektę pozycji, natomiast duże różnice wywoływałyby błąd, gdyż takie zdarzenie mogłoby oznaczać mechaniczne lub elektryczne uszkodzenie manipulatora.

Podsumowując, jeśli chcemy tylko kontrolować pozycję w trakcie wykonywania programu, to sam sterownik PLC nam wystarczy. Głównym powodem chęci zastosowania enkoderów był jednak problem zaniku napięcia. W takim przypadku pozycja enkoderów przechowywana w PLC ulega utracie, a nasz problem pozostaje. Po zaniku napięcia musielibyśmy od nowa zerować nasze osie, a nie chcemy tego robić, gdyż częste zerowanie osi będzie dla nas bardzo uciążliwe.

Pewnego rodzaju rozwiązaniem jest zapisywanie pozycji z szybkich liczników sprzętowych i wczytywanie jej po powrocie zasilania, ale czy całkowicie rozwiązuje to nasze problemy? Niestety nie, gdyż trzeba jeszcze wziąć pod uwagę możliwość zmiany pozycji osi podczas zaniku napięcia. Zastosowane silniki nie posiadają wbudowanych hamulców, a nie na każdej osi będzie wykorzystana przekładnia samohamowna.

Wszystko to przekłada się na potrzebę budowy oraz zastosowania dodatkowego sterownika, który pozwoli na odczyt oraz zapamiętanie rzeczywistej pozycji osi manipulatora.

Specyfikacja

W tym momencie musimy się zastanowić, jakie funkcje ma posiadać nasz dodatkowy układ. Konstruowany robot wyposażony został w 5 osi napędzanych silnikami krokowymi. Teoretycznie potrzeba wykorzystania enkoderów występuje na każdej z tych osi, ale piąta, ostatnia oś, może być trochę problematyczna. Oś ta jest już prawie gotowa, a w fazie projektu nie zostało przewidziane miejsce na montaż dodatkowego enkodera.

Zważając na fakt, że oś ta jest najmniej narażona na nadmierne obciążenia mechaniczne, to postanowiłem, że dla tej osi odpuszczę montaż enkodera. Jego montaż na tym etapie byłby bardzo problematyczny i wymagałby wydrukowania kilku nowych modeli. Dlatego też ostatecznie pozostaję przy tym, że w obecnej wersji robota wykorzystam tylko cztery enkodery.

Zatem pierwsza, ważna dla nas informacja to to, że projektowany układ musi posiadać cztery indywidualne kanały dla enkoderów. Każdy z tych kanałów musi wykrywać wszystkie z czterech zboczy sygnału AB, a długość licznika, w którym będzie przechowywana aktualna wartość to 20 bitów.

Sam układ musi pozwalać na łatwy odczyt wartości z liczników oraz musi umożliwić zerowanie wartości tam zapisanych. Na płytce umiejscowione zostaną także konwertery, które dostosują poziom napięć enkoderów do poziomu napięć PLC. Dzięki temu będziemy mogli użyć najpopularniejszych enkoderów o zasilaniu 5V oraz podłączyć je do naszego sterownika.


Obsługa enkodera

Zanim zaczniemy właściwy projekt, musimy przeanalizować nasze zadanie. Musimy zdecydować w jaki sposób wykrywać obrót naszych enkoderów, ale żeby to zrobić musimy znać również ich budowę.

Główną częścią enkodera jest szklana tarcza na której wyrysowane są prążki, które przysłaniają lub przepuszczają światło emitowane przez wbudowany nadajnik. Dwa kolejne ważne elementy enkodera, to wspomniany nadajnik emitujący światło i jego odbiornik. Pomiędzy tymi elementami obraca się również wcześniej wspomniana tarcza, a odbiornik, który najczęściej jest zwykłym fototranzystorem wykrywa, czy tarcza nie przysłoniła światła emitowanego przez nadajnik.

W rzeczywistej konstrukcji, najczęściej wykorzystywanych jest kilka odbiorników, które przesunięte są od siebie o pewien kąt. W ten sposób otrzymujemy dwa kanały A i B, których przebiegi przesunięte są względem siebie o 90°.

W tym momencie doszliśmy do kwestii, która najbardziej nas interesuje – przesunięcie kanałów A i B. Co nam to daje? Przesunięcie to powoduje, że poprzez poprawną analizę tych przebiegów możliwe jest wykrycie w którą stronę kręci się enkoder. Same impulsy wskazują jedynie na to, że nasz enkoder obrócił się o dany kąt, a w naszym przypadku musimy również wiedzieć w którą stronę wykonał obrót.

Na powyższym rysunku doskonale widać różnicę jak wygląda przebieg w przypadku obrotu enkodera w prawo, a jak wygląda przebieg w przypadku obrotu enkodera w lewo. W zależności od kierunku obrotu, jeden z kanałów wyprzedza kanał drugi o 90°. Jeśli wykryjemy który kanał jest tym wyprzedzającym, to uda nam się poznać kierunek obrotu, ale teraz powinno paść pytanie – „jak to zrobić?”

Sposobów na implementację obsługi takiego enkodera jest wiele. Podstawowa różnica między nimi jest taka, że jeden ze sposobów wykorzystuje jedynie część dokładności takiego enkodera, a inne wykorzystują ją w pełni. A powiedzmy sobie szczerze, że jeśli z enkodera 2500 imp ostatecznie uzyskamy 10000 imp zamiast 2500 imp, to różnica w dokładności jest ogromna.

Jak ja to zrobiłem? Moja metoda jest w teorii bardzo prosta i jest wykorzystywana w wielu aplikacjach. W skrócie wykrywam wszystkie cztery zbocza, a przy każdym jego wykryciu sprawdzam jaki stan sygnału jest na drugim kanale. Wiem, że na podstawie jednego zdania może być ciężko to zrozumieć, więc przeanalizujmy sobie kilka przykładów.

Załóżmy, że w tym przypadku wykrywamy tylko zbocza narastające kanału A. Na podstawie rysunku przedstawiającego przebiegi dwóch kanałów, możemy zauważyć, że obracając enkoder w prawo i wykrywając zbocze narastające kanału A, na kanale B mamy stan niski. Obracając enkoder w lewo i ponownie wykrywając zbocze narastające kanału A,  kanał B przyjmuje stan wysoki. Widzicie już tą zależność? Przejdźmy do kolejnego przykładu, a wszystko będzie jaśniejsze.

Tym razem wykrywamy zbocze opadające kanału A. Obracając enkoder ponownie w prawo zauważamy, że w momencie wykrycia zbocza opadającego na kanale A, kanał B przyjmuje stan wysoki. Jeśli teraz zaczniemy obracać enkoder w lewo, to w momencie wykrycia zbocza opadającego na kanale A, kanał B przyjmie stan niski. Porównując ten przykład do pierwszego, możemy zauważyć, że jest to dokładnie odwrotność tamtego przykładu. Gdybyśmy wykrywali zbocza kanału B, to w analogiczny sposób również moglibyśmy określić kierunek obrotu enkodera

Na podstawie tych przykładów tworzymy sobie tabelkę, którą uzupełniamy naszymi spostrzeżeniami. Znajdą się tam wszystkie zbocza, które będziemy wykrywać, poziomy sygnałów kanałów przeciwnych oraz odpowiadające im kierunku obrotów. Na podstawie takiej tabelki możemy stworzyć układ, który będzie interpretował sygnały z enkoderów.

Układ wykrywania zbocza – czas propagacji

Pierwszy, poważny problem, to znalezienie sposobu na wykrywanie zboczy sygnałów A i B enkodera. Jest to dla nas najważniejszy element naszego układu. To właśnie od niego zależy, czy w pełni wykorzystamy możliwości zastosowanych enkoderów oraz czy przypadkiem nie będziemy gubić pojedynczych zboczy generowanych przez ekondery.

Sposób na wykrywanie zboczy jest wiele. Ogranicza nas jedynie prędkość wykrywania tych zboczy oraz to jaki sygnał dostaniemy bo wykryciu tego zbocza. Do tego celu moglibyśmy użyć dedykowanych układów do obsługi enkoderów, przerzutników, generatorów w tym nawet najpopularniejszego NE555.

Ja jednak podszedłem do tego zadania trochę inaczej. Przeszukując Internet w poszukiwaniu różnych możliwości wykrywania zboczy przebiegów, natrafiłem na bardzo ciekawy układ, który wykorzystuje niedoskonałości układów logicznych. A pisząc niedoskonałość mam na myśli czas propagacji.

I teraz proszę o podniesienie rąk osoby, które słyszały już to pojęcie 😉

Przypuszczam, że nie będzie zbyt dużo takich osób, więc już biegnę z tłumaczeniem. Propagacja, to czas jaki upływa od zmiany stanu na wejściu układu do ustabilizowania się stanu na wyjściu. Na poniższym przykładzie, ukazana została bramka NOT oraz przebieg czasowy na którym widzimy stan logiczny na jej wejściu oraz na jej wyjściu. Jak sami widzicie, przebiegi te są lekko przesunięte względem siebie ze względu na fakt występowania czasu propagacji.

Jest to parametr, który wprost determinuje to jak szybko dany układ może pracować. Wynika to z tego, że jeśli podalibyśmy sygnał prostokątnie zmienny na wejściu, którego okres byłby krótszy niż czas propagacji danego układu, to prawdopodobnie w ogóle nie zauważylibyśmy zmiany na wyjściu tego układu. Katalogowy czas propagacji zawsze różni się od propagacji rzeczywistej. Dodatkowo są to tak niewielkie wartości, że wpływ na nie ma napięcie zasilające układ, obciążenie wyjścia, czy nawet temperatura otoczenia. A gwoli ścisłości, mówimy tu o wielkościach rzędu kilku lub kilkunastu ns. Tak, nano sekund 😉 W przypadku większych, bardziej skomplikowanych układów oczywiście ten czas jest trochę większy, ale nadal nie przekraczający 100ns.

Bogatsi o kolejną dawkę wiedzy, wróćmy teraz do sposobu na wykrywanie zboczy. Tak jak wspomniałem, wykorzystamy tutaj czas propagacji, który jest niezwykle krótki. Najprostszy układ składa się z bramki NOT oraz bramki AND, których działania nie będę już opisywał, bo mam nadzieję, że każdy automatyk taką wiedzę posiada.

Układ teoretycznie jest bardzo prosty i gdybyśmy przeprowadzili jego czysto teoretyczną analizę, to niestety ale na pewno nie działałby tak jak tego oczekujemy. W klasycznej analizie układów kombinacyjnych odrzucamy bowiem istnienie propagacji oraz stanów nieustalonych, by ułatwić sobie analizę dużych, skomplikowanych układów. W naszym przypadku musimy uwzględnić rzeczywiste działanie układu, a nawet trochę wyolbrzymimy sam czas propagacji, by działanie układu było dobrze widoczne.

Niżej ukazane są dwie analizy tego układu. Jedna z nich została przygotowana tak jak przy analizie większości układów logicznych, czyli odrzuca ona istnienie czasu propagacji. Tak jak wspomniałem, na takim przebiegu nie widzimy, by układ ten działał tak jak byśmy sobie tego życzyli. Dodatkowo, działanie logiczne, które spełnia ten układ to najprostszy przykład reguły pochłaniania, która mówi, że jeśli wykonujemy operację koniunkcji (iloczyn logiczny) na zmiennej „a” i jej negacji, to wynik zawsze jest równy 0.

Drugi przykład, mocno uwidacznia to zjawisko i pokazuje w jaki sposób wykrywane są zbocza sygnałów. Wbrew pozorom najważniejszym układem wcale nie jest tu bramka AND. Największy wpływ ma tu bramka NOT i to jej dobór jest tak ważny, gdyż czym dłuższy czas propagacji, tym dłuższy impuls otrzymujemy na wyjściu.

Ewentualnie jeśli nie posiadamy bramki o wystarczająco długim czasie propagacji, to jedną z możliwości jest wykorzystanie kilku bramek połączonych szeregowo. Trzeba jedynie pamiętać o tym, by liczba bramek NOT zawsze była nieparzysta – sygnał wejściowy musi być zanegowany.

Dzięki tym bramkom otrzymujemy dwa sygnały A i !A, które dzięki propagacji są przesunięte między sobą w fazie. Podając te sygnały na bramkę AND, wygenerowane zostają impulsy, których długość odpowiada czasowi propagacji. Impulsy te generowane są jedyne w miejscach wystąpienia zboczy narastających i to właśnie o taki efekt nam chodziło.

Zastanawiacie się co musimy zrobić, by wykryć zbocza opadające? Nic prostszego. Dodajemy jeszcze jedną bramkę NOT na wejściu naszej układu kombinacyjnego i w ten sposób negujemy sygnał A.

Prawda, że piękne? Wykorzystywanie defektów rzeczywistej budowy układów logicznych do funkcjonalnych celów. Są jedynie dwa bardzo ważne warunki, które determinują to, czy układ będzie działał poprawnie. Jeden z nich to to, by jeden z sygnałów podawany na bramkę AND był negacją sygnału drugiego. Natomiast drugi warunek jest taki, że czas propagacji bramki NOT lub suma propagacji kilku wykorzystanych bramek NOT była znacznie większa niż czas propagacji bramki AND. Trzeba bowiem pamiętać, że jeśli propagacja bramek NOT, czyli przesunięcie sygnałów wejściowych będzie mniejsze niż propagacja bramki AND, to niestety, ale na jej wyjściu nie zauważymy żadnej zmiany lub zauważymy tylko część tych zmian.

Praktyczne zastosowanie

Mając już pierwszy element układanki możemy spróbować zaprojektować pierwszy blok układu. Blok ten będzie odpowiadał za wykrywanie wszystkich narastających i opadających zboczy z sygnałów A i B enkodera.

W chwili obecnej mamy do dyspozycji dwa różne, małe układy kombinacyjne. Jeden z nich wykrywa zbocza narastające, a drugi opadające. Pamiętając, że musimy wykrywać wszystkie cztery zbocza. Musimy zatem wykorzystać dwa układy wykrywające zbocza narastające i dwa układy wykrywające zbocza opadające.

Ale co nam dają te cztery układy połączone w całość? W obecnej formie praktycznie nic. Musimy przecież jeszcze wykryć jaki poziom logiczny występuje na drugim kanale. Do tego celu wykorzystamy bramki AND, przy czym niektóre wejścia będziemy musieli zanegować. Na przykładzie układu wykrywającego zbocze narastające kanału A, spróbujemy dodać bramki AND, które pozwolą wykryć kierunek obrotu enkodera.

Przypominamy sobie teraz tabelkę, w której wypisane mamy kombinacje zboczy, poziomów napięć i wynikające z tego kierunki obrotów enkodera. Na jej podstawie zdecydujemy, przy której bramce AND zanegujemy sygnał A lub B, by na jej wyjściu otrzymywać impulsy tylko w przypadku obrotu enkodera w danym kierunku. Na schemacie poniżej dodane zostały już dwie bramki AND. Przy pierwszej z nich, zanegowane zostało wejście na które podany jest sygnał B, by na wyjściu uzyskać impulsy tylko w przypadku obrotu enkodera w prawo.

Czemu negujemy akurat wejście tej bramki? Tak jak wspomniałem, wszystko to wynika z tabelki stworzonej wcześniej. Zgodnie z nią, jeśli wykrywamy zbocza narastające na kanele A, to w przypadku obrotu w prawo, kanał B zawsze przyjmuje stan niski. By stan niski mógł aktywować bramkę AND, to musimy ten sygnał zanegować.

Poniżej jest pełny schemat układu, który wykrywa wszystkie cztery zbocza i w zależności od kierunku obrotu generuje impulsy na wyjściach innych bramek AND. Uzyskujemy zatem cztery wyjścia na których dostajemy impulsy w przypadku obrotu enkodera w prawo oraz cztery wyjścia, na których uzyskujemy impulsy w przypadku obrotu enkodera w lewo. Wykorzystując dwie czterokanałowe bramki OR uzyskujemy tylko dwa wyjścia – pierwsza bramka zbiera impulsy generowane podczas obrotu enkodera w prawo, a druga bramka zbiera impulsy generowane podczas obrotu enkodera w lewo.

Rzeczywisty układ

Powyżej mamy schemat, który można przełożyć na rzeczywisty układ elektroniczny i z pewnością spełniałby swoje zadanie. Jednak musimy zadać sobie pytanie, czy zaprojektowany przez nas układ jest wystarczająco zoptymalizowany? Moim zdaniem nie, gdyż jest kilka bramek, które realizują tę samą funkcję na tym samym sygnale. Czy nie możemy zatem zmniejszyć ich ilość i dzięki temu uprościć nieco układ? Możemy i to zrobimy!

Szybki przegląd powyższego układu i już wiemy, które bramki spełniają tę samą funkcję:

  • Bramki IC5, IC10, IC12 i IC22 – Funkcja NOT na sygnale B,
  • Bramki IC1, IC11, IC16 i IC21 – Funkcja NOT na sygnale A.

Osiem bramek zastępujemy dwiema i rysujemy nowy układ, a efekt tych zabiegów przedstawia się następująco.

Czyż nie zgodzicie się ze mną, że ten układ jest znacznie bardziej praktyczny? Mniej bramek potrzebnych do wykonania układu, to mniejsza płytka PCB na której będziemy lutować te układy. Oczywiście powyższy schemat nie jest ostateczną wersją, gdyż wymagana jest mała optymalizacja pod przygotowanie wyżej wspomnianej płytki PCB. Na powyższym schemacie, każda jedna bramka, to osobny układ scalony, a w rzeczywistym układzie ekonomiczniejsze i praktyczniejsze będzie wykorzystanie układów scalonych zawierających w sobie kilka bramek logicznych.

Ciąg dalszy

Ciąg dalszy nastąpi… 😀

Do tej pory udało mi się stworzyć jeden układ. Potrzeba jeszcze kolejnych bloków układu, które będą zliczać generowane impulsy, a zapisane ciągi bitów wysyłać do sterownika PLC. Jednak to ten pierwszy element układanki jest najbardziej skomplikowany. Kolejne bloki będą już dużo prostsze, gdyż wykorzystywać będą standardowe aplikacje układów scalonych. Układy te, to na przykład liczniki, rejestry przesuwne, czy generatory sygnałów zegarowych i ich dzielniki.

Połączenie wszystkich tych układów przedstawię już w kolejnym odcinku, gdzie dokładniej opiszę testy wyżej zaprojektowanego układu oraz przedstawię kolejne etapy projektowania szybkich liczników sprzętowych, aż do ostatecznego schematu elektronicznego. Na podstawie tego schematu stworzymy płytki PCB, których opis projektowania również przedstawię w kolejnych odcinkach.

Podziękowania

Projekt robota wydrukowanego w 3D „KROKI” koordynowany jest przez Zespół iAutomatyka.pl. W wyniku współpracy z firmami z branży udało się pozyskać wiele materiałów i urządzeń niezbędnych do ukończenia projektu. Szczególne podziękowania kierujemy do następujących firm:

 Firma Rittal dostarczyła do projektu robota „KROKI” wysokiej jakości obudowę szafy elektrycznej oraz niezbędne komponenty montażowe.

https://www.rittal.com/

 

Firma WAGO dostarczyła komponenty łączeniowe, złączki, zabezpieczenia i akcesoria montażowe.

http://www.wago.pl/

 

Dzięki uprzejmości Centrum Szkoleniowego EMT-SYSTEMS Rafał Lelito miał możliwość odbycia szkolenia z Programowania Robotów Kuka. Zobacz relację z tego wydarzenia.

http://emt-systems.pl/

 Firma IGE+XAO GROUP zapewniła pełne oprogramowanie See Electrical do projektowania schematów elektrycznych.

Pobierz za darmo: http://www.ige-xao.com/

 Firma NOCTUO dostarczyła część filamentów jako materiał do druku 3D części robota „KROKI”.

http://www.noctuo.pl/

 

 Firma EATON dostarczyła dotykowy panel HMI serii XV-300

https://www.moeller.pl/

Rafał Lelito


Więcej z serii: "KROKI" - Robot przemysłowy, zbudowany na biurku


Utworzono: / Kategoria: , , , ,

Reklama

Newsletter

Zapisz się i jako pierwszy otrzymuj nowości!



PRZECZYTAJ RÓWNIEŻ



NAJNOWSZE PUBLIKACJE OD UŻYTKOWNIKÓW I FIRM

Reklama



POLECANE FIRMY I PRODUKTY