Skocz do zawartości

Projekt stołu probierczego wtryskiwaczy CR w oparciu o arduino leonardo


majster10

Pomocna odpowiedź

Potrzebuje pomocy w programowaniu arduino do stołu probierczego.Płytka arduino ma za zadanie sterować wtryskiwaczami,zaworem utrzymania ciśnienia (informacja do arduino z czujnika ciśnienia ) i wyświetlać dane na wyświetlaczu lcd (ciśnienie aktualne,zadane przez mnie  i czas wtrysku).Zawór wysterowany przez sygnał PWM. Wtryskiwacze będą  miały 3 tryby czasowe pracy (impuls wyzwalający wtryskiwacz 2ms,3ms,5ms).Nietypowy projekt ale bardzo przydatny, z góry dziękuje za informację.

Link do komentarza
Share on other sites

Czy zrobiłeś kiedyś z powodzeniem jakieś projekty użytkowe z mikrokontrolerami? W ogóle jakąś elektronikę? Jakich "informacji" oczekujesz? Jak się do tego zabrać? Jak to zmajstrować? Szacunku kosztów? Wyboru elementów? Narysowania schematów? Napisz coś więcej. Urządzenie nie wydaje się skomplikowane, ale to tylko na pierwszy rzut oka. Zwykle w takich wypadkach nie dostrzega się i nie docenia szczegółów, w których - jak wiadomo - diabeł siedzi.

Link do komentarza
Share on other sites

Dziękuje że zwróciłeś uwagę na mój post.Moim problemem będzie napisanie programu do arduino. Na co dzień zajmuję się głównie elektroniką analogową mniej cyfrową. Nie tworzyłem jeszcze projektów z udziałem mikrokontrolerów. Moje działania związane z procesorami ograniczały się głównie do odczytywania danych i wgrywania do nowego układu, ewentualnie małej korekty.Wybrałem arduino ze względu na cenę i sprowadzenia programatora i procesora w jedno (możliwość szybkiej korekty programu). Gdy dokończę schemat poglądowy zamieszczę go na forum do weryfikacji. Widziałem podobny projekt tylko z użyciem proc.PIC. Układ hydrauliczny będzie wykonany w całości z podzespołów pozyskanych z demontażu pojazdów (co pozwala na zastosowanie napięć nie wyższych jak 15V ). Na obecną chwilę zakupiłem arduino leonardo , wyświetlacz LCD 2x16 i zestaw 8 przekaźników odseparowanych transoptorami ( do wysterowania stycznika 3 fazowego załączającego silnik elektryczny 2,8KW) . Silnik stołu już posiada płynną regulację obrotów. Wysterowaniem wtryskiwaczy na początek będą zajmować się tranzystory N-MOSFET (podobne jak zaworem sterującym ciśnieniem) .

Program ma za zadanie kontrolować ciśnienie. Pomiar rzeczywistego ciśnienia przeprowadzany przez czujnik i zwracany będzie do procesora w postaci napięcia od 0-5V (im wyższe ciśnienie tym wyższe napięcie).Procesor ma za zadanie tak dobrać PWM zaworu aby utrzymał zadane ciśnienie które będę mógł podnieść za pomocą dwóch jedno stykowych przycisków.

Jednocześnie musi wysterować 4 wtryskiwacze pojedynczo w odpowiednich czasach (2ms,3ms,5ms) do wyboru czasu wtryskiwacza będą służyć 3 przyciski. Takich cykli (załączenia wtryskiwacza i wyłączenia wtryskiwacza każdego z osobna) ma wykonać 100 po czym wyłączy silnik maszyny. Proszę o porady i pomysły w utworzeniu tego projektu.

Link do komentarza
Share on other sites

Dawno nie widziałem na tym Forum tak dobrze i rzeczowo opisanych założeń do projektu. Zaczynam wątpić czy w ogóle potrzebujesz jakiejś pomocy 🙂

Nie mam jeszcze dobrego obrazu całości (silnik stołu? czy to jest właśnie napęd pompy? jak ma wyglądać ta regulacja obrotów? dlaczego MOSFETy tylko "na początek", jak wygląda to sterowanie zaworem PWM? itd) więc poczekam na schemat, nawet blokowy - ten język rozumiem i będzie to dobry start ew. dyskusji.

Na dzisiaj mogę powiedzieć tylko tyle: spróbuj puścić wodze fantazji i zobaczyć urządzenie w formie jakby już było gotowe i stało gdzieś w docelowym miejscu pracy. Zastanów się czy np. przyjęty "interfejs użytkownika" czyli kilka przycisków i LCD 2x16 nie jest zbyt ubogi. Nie chodzi o to, że nie da się za jego pomocą wszystkiego ustawić i zrobić, tylko o to czy nie będzie ograniczał wygody, ergonomii i funkcjonalności urządzenia. Np. jeśli będziesz potrzebował jakichś informacji w trakcie procesu (ile cykli, ile czasu do końca, statystyki, wykresy ciśnienia itp) to 2 linijki po 16 znaków może być maławo żeby upchnąć już nawet 4 liczby z jakimś skromnym opisem. Z resztą ludzie zawsze mieli problemy z intuicyjnym odczytywaniem liczb. Suwaczki i wskaźniki obrotowe dużo lepiej do nas przemawiają - patrz samoloty czy samochody. Tego nie narysujesz na znakowym LCD.

Nie wiem kto będzie to obsługiwał, gdzie i w jakich warunkach (czasem takie projekty żyją dużo dłużej niż planowaliśmy), ale np. duży zielony przycisk START plus dwie-trzy diody "GOTOWOŚĆ", "KONIEC" i "BŁĄD"? Może jakiś czerwony "grzyb" awaryjnie kończący pracę bo coś strzeliło lub się spaliło?

Zastanów się także nad kolejnym, "wyższym poziomem" eksploatacji: liczenie cykli pracy, zapamiętywanie logów, podsumowań itp np. na karcie SD lub we własnej pamięci FLASH lub EEPROM. To wszystko teraz wydaje się mało istotne bo stoisz przed ścianą jakiegokolwiek uruchomienia sprzętu. Niemniej to w końcu opanujesz - to jasne a za chwilę zaczniesz się rozglądać "co by tu jeszcze ulepszyć". I wtedy może się okazać, że bez zrobienia kompletnej rewolucji w projekcie jakieś drogi masz pozamykane. Tak więc zapomnij na razie o "jak to zrobić" a pomyśl "co". Lepiej świadomie się ograniczać i powyrzucać być może zbędne wodotryski niż o czymś fajnym zapomnieć a potem żałować.

No i jesteś chyba pierwszą osobą tutaj, która przyznaje się oficjalnie do pracy w elektronice analogowej. Witamy na pokładzie 🙂

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

Dzieje się dzieje tylko ostatnio mam troszkę mało czasu, ale będę drążył ten temat. Dużo pracuję z dieslem i stół jest mi nieodzownie potrzebny.

Faktycznie masz rację co do przycisku awaryjnego zatrzymania stołu trzeba będzie to wprowadzić. Przydałby się jeszcze licznik obrotów. Podejrzewam że nie obsłużę wszystkiego jedną płytką arduino leonardo dlatego rozważam czy nie dokupić drugiej i wyświetlacza. Mały koszt a rozwiązał by problem i wtedy jedna płytka zajmowała by się ciśnieniem paliwa a druga wtryskiwaczami i obrotami. Co sądzisz o takim rozwiązaniu?

Link do komentarza
Share on other sites

Unikaj jak możesz rozwiązań wieloprocesorowych. Większość czasu poświęcisz na problemy komunikacji, zupełnie drugoplanowe z punktu widzenia funkcjonalności urządzenia.

Trudno mi oceniać jak to masz zrobić. Wiem co potrafią AVRy, ale nie wiem czego dokładnie oczekujesz. Już wiemy, że kilka sygnałów o programowalnej długości, jednak dużo zależy od szczegółów. Jeżeli wtryskiwacze będą pobudzane jeden po drugim (lub tylko któryś wybrany) albo w jakiś jeszcze inny sposób ale tak, że nigdy nie odpalają ani nie zachodzą na siebie dwa jednocześnie to wystarczy jeden sygnał z timera. Drugi timer może zająć się generacją PWM do zaworu ciśnienia. A teraz jakiego rzędu prędkości chcesz mierzyć i jak dokładnie? Możesz do tego użyć kolejnego timera (szybko się kończą), ale można zrobić to inaczej. Potrzebne są liczby. Dawaj ten schemat plus objaśnienia jakich sygnałów się spodziewasz, jakie musisz generować i jakie peryferia "interfejsu użytkownika" chcesz mieć. Wtedy wyjdzie co się da a co nie. Procesor może robić jednocześnie sporo prostych rzeczy albo kilka trudnych, może nadzorować sporo wolnych procesów lub kilka (lub nawet tylko jeden) szybki. Część zadań można przerzucać na sprzęt, ale masz ograniczone jego zasoby. Żeby odpowiedzialnie potwierdzić wykonalność, dobrze jest wiedzieć jak najwięcej o projekcie w sensie wielkości liczbowych, czasów, częstotliwości itd. A i tak zostaje zawsze margines nieokreśloności i kiedy jesteś blisko, zamiast ryzykować trzeba od razu wziąć większy sprzęt.

Link do komentarza
Share on other sites

OK, to mamy już pierwszą przymiarkę. Moje uwagi:

1. Postaraj się o inne Arduino, np. poczciwe UNO. W systemach gdzie ważne są czasy, częstotliwości itp szybkie procesy czasu rzeczywistego dobrze jest zadbać o nienękanie procesora niepotrzebnymi bzdurami. A wbudowane w Leonardo USB jest dość obciążające, bo zmusza do obsługi wciąż napływających pakietów w celu udawania wirtualnego portu szeregowego. Za to płytki używające tylko swój natywny UART (i zewnętrzny konwerter na USB) po prostu nie robią nic gdy nie ma transmisji. System na zwykłej mega328 będzie działał sprawniej a nieoceniony kanał szeregowy nie będzie kulą u nogi a potężnym wsparciem procesu debugowania kodu.

2. Robiąc trzy przełączniki czasów skazujesz się na trzy czasy plus obsługa sytuacji gdy ktoś wciśnie więcej niż jeden. Zrób dwa: '+' i '-' a załatwisz sobie wszelkie kombinacje czasowe jakie przyjdą Ci w przyszłości do głowy. I tak masz LCD aby pokazywać aktualnie wybrany czas.

3. Wejścia z przycisków staraj się robić zwierające do masy, bo procesor ma wewnątrz oporniki podciągające do Vcc właśnie w celu ustabilizowania stanu wejścia (na 1) gdy nic nie jest wciśnięte. Stanem aktywnym jest wtedy 0 - to dotyczy też włącznika wtrysków na pinie A2.

4. Mega328 ma tylko jeden fajny timer, który świetnie nadaje się do generacji sygnałów czasowych. Niestety, ma on tylko dwa wyjścia. Dlatego pytałem, czy musisz generować te sygnały jednocześnie na wszystkich wyjściach lub w jakiś inny, ale nakładający się czasowo sposób. To ważne. Jeśli nie musisz odpalać więcej niż jeden zawór na raz, wystarczy użyć jednego wyjścia i przy użyciu zewnętrznego dekodera (koszt 1.50zł) "kierować" sygnał do jednego z wielu driverów zaworów.

5. Wszelkie programowe metody generacji czasów na razie bym odrzucił. Zobaczymy jak to się sprawdzi. Czasem nie ma wyjścia i w prostszych systemach można programowo coś tam na pinach gmerać, ale spróbujmy czy sprzęt obroni się przy takim roboczym założeniu.

6. Dobrze byłoby, żeby procesor/program wiedział o wciśnięciu grzyba i odłączeniu zasilań układów wykonawczych. Albo trzeba mierzyć to zasilanie albo inaczej zrobić wyłącznik.

7. Jak ma wyglądać sygnał podawany na zawór ciśnienia? PWM? Jak szybki?

8. Jak często chcesz mierzyć czujnik ciśnienia?

Link do komentarza
Share on other sites

Dobrze pójdę za radą i zamówię UNO.Moim zdaniem również lepszym wyjściem będzie dwa przyciski +i- do sterowania czasem wtrysku, myślałem że łatwiej będzie programowo rozwiązać trzy ale więcej możliwości można uzyskać za pomocą +i-.Sygnał wejścia przycisków podałem przykładowo 5V. Łatwiej i pewniej będzie zwierać do masy (brak zbędnych wahań napięcia itp.)Co do ciśnienia musi być mierzone i korygowane na bieżąco gdyż przy każdym otwarciu wtryskiwacza jest spadek ciśnienia dlatego między innymi chcę pojedynczo otwierać i zamykać wtryskiwacze. Nie znam jeszcze częstotliwości i wypełnienia sygnału do sterowania zaworu ciśnienia ale jak trafi mi się auto z taką pompą jak moja to postaram się zmierzyć przy jakim ciśnieniu jaką częstotliwością steruje komputer zaworem. Możesz podpowiedzieć oznaczenie dekodera jaki byś proponował? Bardzo dziękuję za poważne podejście do tematu

Link do komentarza
Share on other sites

Dekoderów cyfrowych jest kilka: 74HC138, 74HC42, CD4028 - to te co mi od razu do głowy przychodzą. Przede wszystkim różnią się polaryzacją sygnałów wyjściowych, te dwa pierwsze mają wszystkie wyjścia normalnie w stanie H a to jedno wybrane w stanie L. Ten z serii 4000 ma dokładnie odwrotnie. Ponieważ i tak MOSFETy powinny dostać swoje drivery, to możesz wstawić odwracające lub nie i polaryzacja wyjść dekodera nie ma znaczenia. Różnią się też wejściami, ale zwykle musisz podać jakiś "adres" (2, 3 lub 4-bitowy) wskazujący konkretne wyjście i sygnał "włącz", który to wyjście odpala. Arduino musiałoby przed startem impulsu wskazać 2 pinami (4 kombinacje - więcej nie potrzebujesz) numer wyjścia a potem spokojnie poczekać aż timer sprzętowy wygeneruje odpowiedni sygnał, który dekoder wyśle na wskazane, zawsze tylko jedno wyjście. Sygnał na wyjściu dekodera będzie co do kilku ns powtórzeniem precyzyjnego sygnału z timera - żadnych drgawek, żadnych dziwnych opóźnień jak to w przypadku software'owej generacji impulsów. Jeżeli procesor m328 w UNO pracuje z zegarem 16MHz a timer będziesz napędzał przez podzielnik 1:8 to dostajesz rozdzielczość czasową 0.5us i zakres do ok. 32ms. Jeśli zażądasz czasu 1.500ms to dokładnie tyle dostaniesz 🙂

Link do komentarza
Share on other sites

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.