Fot. 9 Widok połączeń strzykawki z zaworem, czujnikiem i kroćcami przyłączeniowymi.
Praktyczną realizację układu z rysunku nr 8 przedstawia zdjęcie nr 9. W układzie zastosowałem plastikowe złączki skręcane oraz trójniki do doprowadzenia wartości ciśnień do sensora. Zakupione złączki przedstawia zdjęcie nr 10.
Fot. 10 Skręcane złączki polipropylenowe zastosowane w urządzeniu.
Złączki w bardzo prosty sposób umożliwiały połączenie układu za pomocą silikonowych węży. Elementem kierującym gaz do strzykawki ze źródła oraz ze strzykawki na zewnątrz będzie elektrozawór trójdrogowy. Taki element udało mi się kupić za grosze na allegro, złącza, które posiadał zastąpiłem zakupionymi wcześniej złączami plastikowymi. Jedyna jego wada to napięcie zasilania, które wynosi 230 V ale i ten problem udało się rozwiązać o czym napiszę w dalszej części opracowania.
Fot. 11 Elektrozawór trójdrogowy sterowany napięciem 230 V.
Wysuwanie tłoka po wzroście ciśnienia o którym wspomniałem wcześniej następowało aż do momentu osiągnięcia krańcówki sygnalizującej wysunięcie maksymalne. Algorytm po wykryciu tego stanu musi zareagować przede wszystkim zmianą stanu wyjścia sterującego DIR, które zmieni kierunek przesuwu tłoka by nie doszło do uszkodzenia oraz przełączeniem zaworu gazu, by możliwy był wydmuch zebranego gazu. Może także wyłączyć sygnał taktujący, ale tylko w przypadku gdy ciśnienie będzie poniżej progu załączenia. Jeśli nadal będzie wyższe, po wydmuchu układ będzie dalej realizował zasysanie.
Ad. 3
Jak dotąd układ zasysa i wydmuchuje gaz na bieżąco w miarę jego powstawania, ale bez informacji o ilości gazu układ byłby całkowicie bezużyteczny. Pierwszym pomysłem na odmierzanie ilości gazu było wykalibrowanie układu w taki sposób że mikrokontroler powinien zliczyć wszystkie impulsy podane do silnika w przedziale od krańcówki sygnalizującej minimum do tej załączającej się przy maksymalnym wychyleniu. Następnie po podzieleniu objętości gazu jaką strzykawka zassie w tym przedziale przez ilość impulsów otrzymamy wynik objętości na impuls.
Tą wartość można by wprowadzić do algorytmu mikrokontrolera, który przy każdym impulsie podanym do sterownika silnika inkrementował by zmienną sumarycznej objętości o tę wartość. W teorii wszystko pięknie, niestety w moim układzie nie każdy impuls podany do sterownika przekłada się na przesunięcie tłoka. Zastosowany napęd śrubowy posiada pewien luz i po zmianie kierunku potrzeba kilkudziesięciu impulsów by rozpoczęło się przesuwanie. Ten luz wprowadzał by zbyt duży błąd. Potrzebowałem rzeczywistego i bardzo dokładnego pomiaru przesunięcia. Postanowiłem więc zastosować enkoder inkrementalny.
Fot. 12 Enkoder inkrementalny o rozdzielczości 2500 impulsów na obrót podczas testów.
Enkoder inkrementalny, który podczas testów przedstawia zdjęcie nr 12 jest to urządzenie, generujące na wyjściach impulsy w momencie obrotu jego osi o pewien minimalny kont (przyrosty kontowe). Cechą charakterystyczną enkodera jest ilość impulsów jaką wygeneruje na wyjściach przy pełnym obrocie osi o 360 stopni. Na tej podstawie można dokładnie pozycjonować elementy obracające się, czy określać ich prędkość, lub przesunięcie. Na ekranie oscyloskopu pokazanego na zdjęciu nr 12 widzimy impulsy, które generuje enkoder w momencie obracania jego osią. Takie enkodery zazwyczaj również są bardzo drogie, ale od czego mamy aukcje internetowe - prezentowany model zasilany napięciem 5 V, posiada wyjścia TTL i rozdzielczość 2500 impulsy/obrót.
Mówiąc o wyjściu impulsów posługiwałem się liczbą mnogą dlatego, że enkoder posiada kilka wyjść. Zazwyczaj jest to 6 wyjść: Kanały A i B, których fazy przesunięte są o 90 stopni, kanał Z, na którym pojawia się tzw. impuls zerowy co jeden pełny obrót, oraz negacje tych trzech kanałów. Przesunięcie sygnałów o 90 stopni wykorzystywane jest do detekcji kierunku obrotu i początkowo w moim układzie miałem taką detekcję wykorzystać jednak podczas testów zrezygnowałem z dodatkowego rozbudowywania układu elektronicznego.
W moim układzie zachodziła konieczność pomiaru przesunięcia liniowego a nie obrotowego, musiałem zastosować więc dodatkową oś, na której zmontowałem drugi trybik i pomiędzy nimi zawiesiłem pasek, który w jednym punkcie połączyłem z tłokiem strzykawki.
Dzięki takiemu rozwiązaniu mogłem przenieść ruch liniowy tłoka na obrotowy enkodera. Teraz wystarczyło sygnał z enkodera wprowadzić do mikrokontrolera, wyliczyć porcję gazu zassanego do strzykawki przypadającą na jeden impuls z enkodera i zapisać w algorytmie funkcje inkrementowania zmiennej objętości gazu przy każdym odebranym impulsie o wyliczoną wartość. W taki sposób podczas zasysania można było od razu dokonywać pomiaru oczywiście, należało w algorytmie zapisać warunek zezwalający na dokonywanie inkrementacji tylko podczas poruszania się tłoka w jedną stronę, w przeciwnym razie wartość zliczonej objętości była by dwa razy większa.