Skocz do zawartości

Sprawdzenie schematu Manipulator


dr_mateusz

Pomocna odpowiedź

Jeden z silników zasilany jest z +5V. Czy to specjalnie?

Zamieniłeś sygnały PWM ze sterowaniem jednego z przekaźników w każdym układzie silnikowym.

Tranzystory MOSFET do PWM podłączyłeś odwrotnie (zamienione źródło z drenem).

Na +5V kondensatory 22..100uF wystarczą. Co chcesz wygładzać tymi 1000uF?

Na +12V dławik, który wytrzyma prąd czterech silników od wycieraczek i będzie miał 1mH złamie Ci płytkę pod własnym ciężarem gdy umieścisz go gdzieś na rogu. Albo go wywal albo zmniejsz go ze 100 razy. Tam też 1000uF to gruba przesada. Lepiej umieść jeden lub kilka po 22uF ale sensownych miejscach niż takie bezsensowne kloce. Przecież nie masz tu 50Hz z gniazdka tylko kilkadziesiąt kHz z zailacza impulsowego. Ani silniki nie potrzebują takich pojemności ani też te przyciski do papieru nie działają powyżej 10kHz.

Generalnie zasilacze dużej mocy nie lubią pracy bez obciążenia więc nie są dobrymi źródłami przy zabawach z układami eksperymentalnymi. Sprawdź swój, jak się zachowuje przy zmianach obciążenia +12V od 0 do np. 5A. Obciążenia na +5V praktycznie nie liczę, bo to pewnie z 50mA będzie w sumie.

Link do komentarza
Share on other sites

Nawet jeśli to nie jest silnik od wycieraczek, nie możesz go zasilać z tej samej linii +5V co procesor - to proszenie się o kłopoty. Pociągnij jego zasilanie wprost z zasilacza lub wręcz daj mu osobny system filtrowania, z własnym dławikiem i kondensatorami.

Dławiki zmniejszyłeś 1000 razy. Jak rozumiem nie masz zupełnie wyczucia i wszystko Ci jedno. Proponuję jednak coś w okolicach kilkunastu-kilkudziesięciu uH. Wciąż będą małe a przy wsparciu kondensatorów 100nF będą już coś filtrować. Przy tej samej indukcyjności ten od silników będzie na pewno fizycznie dużo większy. Popatrz na jakieś gotowe dławiki a wcześniej oszacuj prąd przy jakim będą te Twoje pracować i znajdź coś odpowiedniego. Dławik mający np. 22uH na prądy rzędu 3A może mieć wymiary 20x20mm a silniki od wycieraczek - to pewnie jeden tyle weźmie jak zajdzie potrzeba.

Bazy tranzystorów załączającyh przekaźniki wyposażyłbym w rezystory tak jak zrobiłeś to w przypadku bramek MOSFETów. To Darlingtony, a takim wiele nie potrzeba do włączenia. Upływności portów gdy procesor jeszcze nad nimi nie panuje, delikatnie wilgotny laminat itd..

Jak będziesz to urządzenie uruchamiał? Myślałeś o tym? Napiszesz kawałek programu, wgrasz i... nic, albo co najwyżej coś dziwnego. Co wtedy? Czy przewidujesz jakąś możliwość podglądania pracy programu? Diodki LED? Zmarnowałeś UART na jakieś krańcówki (nie ma ich nawet na schemacie - jak możemy ocenić czy je dobrze podłączysz?). Jak się dowiesz co w trawie piszczy? Ile impulsów zliczył enkoder? Gdzie teraz jest i na co czeka program? Czy dobrze napisałeś warunki dla if-ów? Jakie są wartości zmiennych? To wszystko będziesz za chwilę chciał wiedzieć a tu.. kaszanka. Nie ma jak wyprowadzić tych informacji na zewnątrz. Przemyśl to raz jeszcze, bo istnieje duża szansa otrzymywania za dwa tygodnie długich listingów kodu ze standartowym komentarzem: "Dlaczego to nie działa? Pomóżcie!". Proponuję już teraz zrobić na płytce interfejs do portu szeregowego w PC albo nawet od razu do USB.

Enkodery mają wygodny interfejs szeregowy i do tego wyjścia DO wyposażone w bufory trójstanowe. Po co każdemu dałeś osobny zegar i linię danych? Do każdego będziesz pisał inną funkcję odczytu? Zmarnowałeś tyle nóżek procesora a przecież wystarczyło połączyć wszystkie linie CLK enkoderów razem do SCK procesora a linie DO do MISO i tylko CSN zostawić osobne. Wybierałbyś tylko jeden z trzech układów a dalej byłyby wspólne funkcje komunikacji, korzystające dodatkowo ze sprzętowego wsparcia interfejsu SPI w procesorze.

Nie wiem, czy nazwiesz powyższe "błędami" i uwzględnisz te uwagi na schemacie ale konstrukcja wygląda na narysowaną za szybko i z pierwszego pomysłu, bez wnikania w szczegóły.

Czy mógłbyś pokrótce opisać jak sobie wyobrażasz działanie tego Manipulatora? Takie kilkanaście zdań jest dobrym testem na spójność marzeń z rzeczywistością.

  • Pomogłeś! 1
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

Pierwsze dziękuję za kolejną odpowiedź.

Przemyślałem trochę rady i uznałem je za słuszne. Dlatego wyprowadziłem port UART. Konwerter zrobię jako uniwersalny na bazie tego http://forum.atnel.pl/topic2392.html . Krańcówki to zabezpieczenie przed dalszym obrotem jednakże nie wiem czy będę je stosował podawały by one sygnał na procesor po zwarciu styków. Dławiki dodałem 15uH na 30A.

Co do planów jakie ma spełniać to chciałbym aby była możliwość przemieszczenia poprzez poruszanie się każdego silników z osobna za pomocą pilota RC 5, jak i również możliwość pracy automatycznej polegającej na zaprogramowaniu położenia początkowego i przemieszczania elementów z jednego miejsca na drugie. Na realizacje projektu mam stosunkowo mało czasu.

Przesyłam schemat po kolejnych zmianach. 4 silnik jednak będzie również 12V.

Jeszcze pytanie czy dławiki w tej konstrukcji są potrzebne czy tylko ewentualnie zastosować na zasilanie do mikroprocesora?

Link do komentarza
Share on other sites

Jeśli już znalazłeś dławik który pociągnie silniki, ja bym go zostawił. Za to dla procesora poszukałbym czegoś malutkiego. Tam cewka przepuszczająca 100-200mA zupełnie wystarczy. Pierwszy będzie raczej ochroną obwodów zasilacza przed tym co potrafią wyprodukować silniki a drugi będzie chronił procesor przed tym co z zasilacza przyjść może oraz będzie filtrem EMI niewypuszczającym zakłóceń od procesora na kable zasilania. Ten drugi jest mniej krytyczny ale ja zostawiłbym oba.

OK, jeśli już schemat jest "ideowo" w porządku to teraz kilka uwag praktycznych.

Przełączanie przekaźników przy niezerowych prądach silników może powodować duże przepięcia. Nie wiem co ma na wyjściu ten konkretny zasilacz ale raczej żaden nie lubi podawania jakichś szpilek z zewnątrz. Wyposażyłbym albo każdy silnik albo chociaż wspólną szynę +12V (tuż przy silnikach) w dużą diodę zabezpieczającą (transil) np. 1.5KE15A lub coś podobnego. Lepsza byłaby jeszcze niższa, ale wersja 12 woltowa może niebezpiecznie zbliżać się do napięcia zasilacza i ciągnąć niepotrzebnie prąd. Po sprawdzeniu danych katalogowych wybrałbym tę, która jeszcze nie przewodzi a będzie "ciąć" odpowiednio nisko. Jeśli diody miałyby być przy silnikach, to istnieją odpowiednie wersje dwukierunkowe - te mają na końcu "..CA".

Nie wiem, jak to będzie fizycznie zrobione i jak daleko od układu sterowania bądą silniki oraz enkodery. Jeśli więcej jak ok. 20cm to trzebaby zastanowić się nad dodatkowymi układami przeciwzakłóceniowymi. Zarówno do silników - tym razem małe dławiki szeregowe plus kondensatory ceramiczne montowane wprost na zaciskach silnika (diody transil także) jak i do enkoderów - dodatkowe filtrowanie ich zasilania tuż przy układzie oraz jakieś buforowanie sygnałów SPI. Sygnały cyfrowe nie lubią przesyłania po długich kablach a z uwagi na szybkie zbocza, "długie" zaczyna być już dobrze poniżej metra. Wtedy wypadałoby przynajmniej dopasować linię SCK do kabla tuż przy źródle (serial impedance matching) lub zakończyć każdą odnogę opornikiem dopasowującym. Linia danych nie jest już tak delikatna, bo ma być stabilna w trakcie zbocza zegara a na na uspokojenie ma dużo czasu ale biorąc pod uwagę, że jest też sterowana z programatora, długie odgałęzienia do enkoderów mogą tu dużo napsuć.

W każdym razie musisz koniecznie opisać strukturę mechaniczną tego urządzenia, bo od niej mogą zależeć pewne fragmenty schematu.

Nie dałeś żadnej diodki LED a nawet w docelowej wersji (nie tylko podczas uruchamiania kodu) bardzo przydaje się taka prosta sygnalizacja. Jedna mogłaby pokazywać czy manipulator pracuje w trybie autonomicznym czy zdalnym, inna świecić gdy realizuje jakąś komendę albo gdy właśnie na nią czeka itp.. Jeśli będzie przejście na USB to mógłbyś też zapalać LED gdy nastąpi enumeracja i zestawienie połączenia z Manipulatorem. Scalaki FTDI udostępniają taki sygnał i warto go wykorzystać ale wtedy oprócz TXD/RXD potrzebujesz jeszcze jedną linię interfejsu na złączu. Bez tego procesor nie wie, czy może już coś wysyłać a i dla użytkownika jest ważne by widział, że połączenie USB jest poprawnie zestawione. Poza tym przydałby się jakieś dwie diodki na zasilania - pewnego dnia jedno z napięć może po prostu paść (lub się odłączyć, oderwać itp) a wtedy od razu będzie widać, co jest nie tak. Jeśli tę od szyny +12V puścisz przez diodę Zenera np. 8V2 to będziesz miał przy okazji minimalną kontrolę stanu zasilania silników.

Właśnie dlatego, że masz mało czasu na realizację musisz mieć pewność, że już na etapie schematu projekt jest poprawny. Im dalej w las tym będzie gorzej a poprawianie ew. błędów będzie kosztowało coraz więcej. Pieniędzy, czasu i nerwów.

Link do komentarza
Share on other sites

Przewód od najdalej wysuniętego enkodera będzie miał długość około 60cm. Enkoder będzie zamontowany bezpośrednio przy przekładni silnika na osobnych płytkach. Płytki do sterowania silnikami również będą osobne a podłączenie od wyjścia PWM to ok 20 cm. Do silników zostaną tylko doprowadzone wyjścia z przekaźników. W układzie chciałbym też ograniczyć liczbę potrzebnych elementów do minimum. Ewentualnie przy takich odległościach co zrobić aby nie było wpływu szumów na styki enkodera CSN SCK i DO. Czy podłączyć równolegle do tych pinów kondensatory 100n ceramiczne?

Wprowadziłem kolejne zmiany. Do zasilania silników transile oraz dodane diody.

Link do komentarza
Share on other sites

Nie możesz mieć ciastka i zjeść ciastka. Albo wszystko jest blisko i wtedy jest małe, szybkie i tanie albo wprowadzasz kable połączeniowe i wtedy musisz zrobić do tych kabli odpowiednie interfejsy. Inaczej to po prostu nie będzie działać. Typowe źródła sygnałów cyfrowych absolutnie nie są przystosowane do sterowania liniami długimi. W Twoim układzie masz kilka problemów do rozwiązania:

1. Przesyłanie zasilania do enkoderów. To jest w miarę proste, bo 60cm to nie jest jeszcze jakaś odległość dla DC. Bierzesz kabel wielożyłowy (taśmę np. 10-przewodową) i co drugą linię przeznaczasz na masę a jeden z przewodów na zasilanie +5V. W ten sposób zużyłeś 6 linii. Tuż przy samym enkoderze blokujesz mu zasilanie kondensatorem 100nF plus ew. kilka uF. Jeżeli jest to skomplikowana maszyna i środowisko pracy jest ciężkie, możesz dać jeszcze szeregowo z linią zasilania malutki dławik EMI np. typu BLM21P300 lub coś podobnego.

2. Przesyłanie sygnałów wyboru układu CSN. To też nie jest jakiś wielki kłopot bo sygnały są typu punkt-punkt. Tuż przy nóżce procesora dajesz szeregowo opornik ok. 100omów a tuż przy nóżce enkodera opornik podciągający 22k do plusa zasilania. Ten pierwszy dopasowuje niskoimpedancyjne wyjście portu do linii długiej jaką jest kabel i powoduje, że odbicie sygnału z końca kabla (czyli od dżej impedancji wejścia enkodera) wróci tylko raz i wygasi się właśnie na tym oporniku zamiast podróżować kilkakrotnie po kablu i robić zamieszanie. Ten drugi będzie podciągał wejście enkodera w przypadku, gdyby przyszło Ci do głowy podłączać to przy włączonym zasilaniu. Z uwagi na względnie duża rezystancję jego wpływ na impedancję zakończenia kabla jest pomijalny.

3. Przesyłanie zegara SCK. Ten sygnał jest dość krytyczny z uwagi na jego znaczenie dla spójności transmisji danych. Ja bym zrobił tak: tuż przy procesorze postawiłbym scalak typu 74HC125 lub cokolwiek, co odseparuje mi lokalną linię zegara od kabli. Każdy z jego buforów załączyłbym na stałe, każdy sterował sygnałem SCK a na każdym wyjściu osobno dałbym szeregowy opornik dopasowujący i takie coś wypuścił w każdy kabel osobno. Dzięki temu ani procesor ani programator nie będą zmuszone do pracy z paskudnie wyglądającym obciążeniem kilkoma liniami o różnych długościach.

4. Odbiór danych DO. To jest największy kłopot, bo jest to linia w której kilka nadajników pracuje na jeden drut. Nie bazowałbym na możliwościach wyjść enkoderów, bo sterowanie linią długą wymaga jednak jakiegoś wysiłku od drivera a układy mixed-signal jakim niewątpliwie jest ten enkoder muszą być przed tym chronione. Dlatego przy każdym enkoderze postawiłbym bramkę która by buforowała sygnał DO i po dopasowaniu opornikiem szeregowym sterowała kablem. Po stronie procesora postawiłbym kilka bramek typu 74HC125 odbierających te sygnały a ich wyjścia połączył razem do linii MISO. Sygnały załączenia wyjść sterowałbym sygnałami wyboru CSN. Wtedy również lokalna linia MISO jest odseparowana od kabli i programator nie będzie marudził.

W sumie każdy enkder dostałby osobne złącze np. 10-pinowe na którym miałby 5 linii masy, 1 zasilanie, 1 zegar, 1 sygnał wyboru i 1 linię danych. Pozostały kabelek wykorzystałbym np. na sygnalizację procesorowi, że kabel enkodera jest w ogóle podłączony (np. zwieranie jakiegoś wejścia do masy).

Diody zabezpieczające są źle - mają być między linią zasilania a masą lub bezpośrednio (dwukierunkowe) na silnikach.

To tylko kilka pomysłów na szybko bo możliwości zrobienia tego jest wiele. Absolutnie nie wolno obciążać żadnych wyjść dużymi pojemnościami. Jeśli filtry EMI to jakieś dławiki lub pojedyńcze omy plus pF i to po zastanowieniu. Jeśli chcesz robić jakieś filtry sygnałowe, to tylko na wejściach i to policzone do odpowiednich szybkości. Generalnie: chuchaj na masę bo to względem niej wszystko inne jest widziane, dbaj o prawidłowe przesyłanie zasilania, dopasowuj impedancje driverów i odbiorników do linii transmisyjnych a nie zginiesz.

Mam delikatne wrażenie, że działasz po omacku a problemy jakie tu się pojawiają troszeczkę Cie przerastają. Kuriozalne 100nF na wyjściach procesora są tego dobrym przykładem. Czy to będzie jakieś ważne urządzenie od którego coś ma zależeć czy tylko taka hobbystyczna wprawka do nauki? Czytałeś coś przez te kilka ostanich dni o transmisji danych cyfrowych przez linie długie? To zacznij. Podpowiadam: impedance matching, data integrity, cable driver itd..

Jednostkowego urządzenia nie potanisz oszczędzając kilka oporników lub scalaków po dwa złote. Będzie tańsze, jeśli jego eksploatacja będzie prosta, pewna, bezawaryjna i nieprzysparzająca ciągłych kłopotów obsłudze a do tego jeszcze tutaj daleko.

  • Lubię! 1
Link do komentarza
Share on other sites

Wykonane urządzenie jest pracą do nauki nie będzie od niej nic zależeć dlatego zależy mi na zaprojektowaniu układu który będzie zawierał jak najmniej elementów i będzie w miarę tani. Schemat zmienię. Ewentualnie cała płytka zasilania plus mikrokontroler i sterowanie silnikami może być na jeden płytce a enkodery osobno przy silnikach jeśli wpłynie to pozytywnie na układ.

Link do komentarza
Share on other sites

Jeśli zrozumiałeś co napisałem, sam wiesz jak wpłynie.

Jeśli możesz uniknąć długich kabli prowadzących sygnały cyfrowe - zrób to.

Jeśli nie możesz - musisz nauczyć się z nimi żyć a to nie jest trywialne. Zapomnij też o oszczędzaniu kilku złotych - nie tędy droga.

Z resztą właśnie masz szansę nauczyć się czegoś - to chyba dobrze ? 🙂

Link do komentarza
Share on other sites

Tak, wtedy możesz pominąć odbiorniki 125 które tutaj robiły za trójstanowy multiplekser wejść na wspólną szynę. Niestety wtedy będziesz musiał zrezygnować ze sprzętowego SPI - naprawdę tak Ci przeszkadza jeden układ więcej?

Nie napisałem też o zabezpieczeniech ESD wejść - to taki deser 🙂 ale w obliczu Twojego szukania oszczędności na każdym kroku chcę Ci przypomnieć, że każde wejście procesora (i innego układu cyfrowego) dołączone do kabla wychodzącego poza obszar obudowy powinno być wyposażone w takie zabepieczenia. To znaczy, że i tak i tak musisz dołożyć kilka małych oporników plus kilka diod (najlepiej podwójnych Schottky'ego typu BAT54S lub cos podobnego) a wtedy wywalenie jednego układu za 1zł chyba nie ma sensu. Powiedz mi tak szczerze, z czego wynika taka chęć bezgranicznej taniochy? Nie chce Ci się tego narysować na schemacie? Nie umiesz zaprojektować płytki dla czegoś większego niż jeden procesor czy po prostu nie ogarniasz tematu i boisz się każdej komplikacji? Mam nadzieję, że masz jakieś logiczne, czwarte wytłumaczenie bo te są przerażające. Weź się w garść, usiądź do schematu i zrób to porządnie.

Link do komentarza
Share on other sites

Jeszcze raz dziękuje za porady. Buduje dopiero drugi układ samodzielnie(wcześniej linefollower) dlatego chciałbym uniknąć skomplikowania układu. Różnica paru zł nie ma znaczenia, ale chciałbym żeby układ był jak najbardziej uproszczony bo takie założenie postawiłem sobie przy budowie manipulatora. Do tego układy przy enkoderze nie mogą być na płytce większej jak 20 na 30 mm tak aby mógł je zabudować przy przekładni. Co do schematu to dzisiaj lub jutro narysuje cały z uwzględnieniem uwag zawartych w postach marek1707.

Link do komentarza
Share on other sites

Marek już kilkakrotnie napisał, że to co wydaje się dla ciebie nadmiernym i niepotrzebnym komplikowaniem układu to tak naprawdę ułatwienie. Bez tego możliwe, że będziesz sobie darł włosy z głowy i zastanawiał się czemu nie działa.

Link do komentarza
Share on other sites

Chyba nadrzędnym założeniem jest to, by układ miał robić to co sobie wymyśliłeś niezawodnie, prawda? Prostota jest ważna, ale nie może być ważniejsza - im szybciej to zrozumiesz tym lepiej. Jeśli założyłeś sobie jakieś miejsce na enkoder a teraz okazuje się, że masz go za mało to znaczy, że założenie jest nierealne i czas go zmienić. Być może w warunkach wielkoseryjnych, gdzie liczy się każdy grosz dałoby się wyprodukować scalaki mające inny interfejs lub posadzić je w mikroskopijnych obudowach i zmieścić całość w jakimś supermałej objętości ale jako amator często będziesz się zderzał z takimi ograniczeniami. Zauważ, że dostępne są pojedyńcze bramki w obudowach SOT25-6. Taki maluch może odciążyć enkoder od sterowania kablem (np. 1G125) a w drugą stronę (np. 1G14) może być bardzo fajnym buforem-odbiornikiem (z histerezą!) linii zegara. Fizyki nie przeskoczysz i pewne rzeczy muszą być zrobione tak a nie inaczej - przykro mi.

Bobby - pisaliśmy razem 🙂

Link do komentarza
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • 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.