woodoopl Styczeń 30, 2018 Udostępnij Styczeń 30, 2018 Mam takie pytanko jako początkujący w tej dziedzinie: Posiadam zasilacz podłączany do arduino 12V 1A i teraz czy mógłbym do opisanego w kursie mostku podłączyć np. silniczek posiadający parametry 6V 350mA? czy muszę koniecznie szukać jakiegoś na 12V?
Treker (Damian Szymański) Luty 1, 2018 Udostępnij Luty 1, 2018 woodoopl, jeśli nie zależy Ci na tym silniku i chcesz go podłączyć tylko dla testu to możesz go podłączyć. Nie jest to zbyt poprawne, ale jest spora szansa, że nic się nie stanie. Na tym mostku jest dość duży spadek napięcia, więc silnik dostanie pewnie mniej niż 10V. Dodatkowo możesz ustawić niskie wypełnienie sygnału PWM, aby nie przekraczać 6V. Ogólnie zachęcam do eksperymentów - weź tylko pod uwagę, że istnieje szansa na uszkodzenie tego silnika
woodoopl Luty 2, 2018 Udostępnij Luty 2, 2018 Treker, Dziękuję bardzo za informacje. Tak przy okazji dodam że jest to niesamowity kurs i już wciągam w niego kolegów Bardzo fajnie że są gotowe zestawy przygotowane od razu pod niego. Pozdrawiam i zachęcam do zabrania się za III część bo naprawdę poznawanie Arduino z tym kursem to czysta przyjemność.
Treker (Damian Szymański) Luty 3, 2018 Udostępnij Luty 3, 2018 woodoopl, dziękuję, miło słyszeć, że kursy są pomocne! Powodzenia w dalszej nauce
mistus Luty 15, 2018 Udostępnij Luty 15, 2018 zadanie 8.1 void setup() { pinMode(6, OUTPUT); digitalWrite(6, HIGH); // Prędkość silnika 1 pinMode(7, OUTPUT); // Lewo pinMode(8,OUTPUT); // Prawo pinMode(10 ,OUTPUT); digitalWrite(10, HIGH); // Prędkość silnika 2 pinMode(11, OUTPUT); // Lewo pinMode(12, OUTPUT); // Prawo } void loop() { digitalWrite(7, LOW); // oba silniki do przodu digitalWrite(8, HIGH); digitalWrite(11, LOW); digitalWrite(12, HIGH); delay(3000); digitalWrite(11,HIGH);// skręcenie silnika w prawo digitalWrite(12, LOW); delay(3000); digitalWrite(7, HIGH);// oba silniki wstecz digitalWrite(8, LOW); digitalWrite(11, HIGH); digitalWrite(12, LOW); delay(3000); digitalWrite(7, LOW); //oba silniki do przodu digitalWrite(8, HIGH); digitalWrite(11, LOW); digitalWrite(12, HIGH); delay(3000); digitalWrite(7, HIGH);// skrecenie silnika w lewo digitalWrite(8, LOW); delay(3000); digitalWrite(11, HIGH);// oba siliki wstecz digitalWrite(12, LOW); delay(3000); } zadanie 8.2.1 void setup() { pinMode(6, OUTPUT);// prędkość silnika digitalWrite(6, HIGH); pinMode(7, OUTPUT); pinMode(8,OUTPUT); for (int zliczanie = 0; zliczanie < 5; zliczanie ++){// zlicza i sprawdza czy nie jest większe od 5 digitalWrite(7, LOW);// świecenie na zmianę digitalWrite(8, HIGH); delay(1000); digitalWrite(7, HIGH); digitalWrite(8, LOW); delay(1000); } } void loop() { } 8.2.2 void setup() { int zmiana = 0; pinMode(6, OUTPUT);// prędkość silnika digitalWrite(6, HIGH); pinMode(7, OUTPUT); // dioda 1 pinMode(8,OUTPUT);// dioda 2 while (zmiana < 5){// sprawdź czy zmienna nie jest większa od 5 zmiana = zmiana + 1;//jeśli nie dodaj 1 do zmiennej digitalWrite(7, LOW);// świecenie na zmianę diod digitalWrite(8, HIGH); delay(1000); digitalWrite(7, HIGH); digitalWrite(8, LOW); delay(1000); } } void loop() { } zadanie 8.3 void setup() { Serial.begin(9600);// połączenie z komputerem for(int a = 0; a <= 9; a++){// zliczanie a do 9 Serial.print(a);// wypisanie a Serial.println("*");// wyswietlenie gwiazdki } } void loop() { } zadanie 8.4 void setup() { pinMode(6, OUTPUT);// predkosc silika pinMode(7, OUTPUT);// krecenie w lewo (hamowanie) pinMode(8, OUTPUT);// krecenie w prawo przyspieszanie } void loop() { for(int a = 0; a <= 255; a++){// przyspieszamy silnik analogWrite(6, a); digitalWrite(7, LOW); digitalWrite(8, HIGH); delay(25); } for(int a = 255; a >= 0; a--){// hamujemy silnik analogWrite(6, a); digitalWrite(7, HIGH); digitalWrite(8, LOW); delay(25); } }
gawroon7 Kwiecień 2, 2018 Udostępnij Kwiecień 2, 2018 Hej, czy ktoś jest mi w stanie powiedzieć dlaczego zasilanie logiki pobiera prąd aż 40mA? Natomiast same diody ~9mA? Poza tym, dlaczego po odłączeniu zasilnia od logiki...układ dalej działa? Dzięki wielkie z góry
Treker (Damian Szymański) Kwiecień 3, 2018 Udostępnij Kwiecień 3, 2018 gawroon7, co dokładnie masz na myśli pod "zasilanie logiki"? Gdzie dokładnie dokonujesz pomiary?
mati3594 Lipiec 5, 2018 Udostępnij Lipiec 5, 2018 Cześć! Chciałbym zapytać o kwestię hamowania silnika przy użyciu mostka L293D. Otóż z opisu wynika, że podanie dwóch stanów wysokich na wejścia ustawiające kierunek, powinno doprowadzić do zahamowania silnika. No i faktycznie, silnik się zatrzymuje, ale płynnie wytracając swoją bezwładność. Rozumiem, że z tego wynika, że mostek ten nie pozwala na pracę silnika "na zwarciu"? Niestety, ja potrzebuję nagłego zatrzymywania silnika, w związku z czym na razie radzę sobie poprzez uruchamianie na ułamek sekundy przeciwnych obrotów, niemniej przypuszczam że ta metoda doprowadzi do szybkiego spalenia mostka.
marek1707 Lipiec 5, 2018 Udostępnij Lipiec 5, 2018 Wszystko zależy od tego jak podłączyłeś mostek do procesora tzn. które wejścia mostka używasz. Jeżeli EN jest zawsze włączone (stan L) a PWM podajesz raz na jeden a raz na drugi driver w zależności od kierunku obrotów, to silnik z definicji hamuje gdy oba PWM są ustawione na 0%. Natomiast jeśli pojedynczy PWM podłączyłeś do EN a dwa pozostałe wejścia służą tylko do ustawiania kierunku, to hamowanie uzyskasz przy obu wejściach w tym samym stanie tj. oba na H lub - lepiej - oba na L, ale przy niezerowym PWM. W tym stanie wypełnienie PWM jakie ustawisz na EN będzie określało "siłę" hamowania i 100% da czyste zwarcie a 0% swobodny dobieg.
mati3594 Lipiec 5, 2018 Udostępnij Lipiec 5, 2018 Ja podałem sygnał PWM na EN, a inputami steruję kierunkiem. Próbowałem różnych konfiguracji z tym samym stanem na inputach i różnym wypełnieniem EN, natomiast za każdym razem nie dało to efektu nagłego zatrzymania. Może powinienem jakoś rozładować energię, którą silnik oddaje przy wyhamowywaniu?
marek1707 Lipiec 5, 2018 Udostępnij Lipiec 5, 2018 Zobacz, jeżeli dałeś PWM na EN a kierunek ustawiasz wejściami powiedzmy A i B to masz dwa stany mostka: • EN=0 w którym obydwa drivery A i B obu końców silnika są zupełnie wyłączone - nic nie możesz zrobić, silnik biegnie luzem cokolwiek podasz na wejścia,• EN=1 gdy każdy driver ciągnie "swój" koniec silnika w swoją stronę. W tej drugiej sytuacji, zapodanie stanów przeciwnych na A i B powoduje podanie napięcia do silnika i jego pracę. Podanie stanów takich samych - nieważne czy 0 czy 1 powoduje zwarcie silnika, bo oba jego końce są wtedy podłączane jednocześnie odpowiednio - do masy lub do plusa zasilania. Ponieważ drivery są mocniejsze w stanie niskim, dla lepszego hamowania powinieneś zapodać stany 00. No i teraz, gdy jedziesz w którąś stronę masz jakiś PWM na EN i jakieś przeciwne stany na A i B. Żeby natychmiast zahamować, musisz podać A=0 i B=0 oraz EN=1. To ostatnie sprowadza się do ustawienia PWM na maxa. Zwarcie silnika jest właśnie wytracaniem mechanicznej energii kinetycznej w ciepło. Silnik pracuje jako prądnica, w jego uzwojeniach płynie prąd który produkuje ciepło we wszystkim przez co przepływa proporcjonalnie do rezystancji danego elementu. W obwodzie hamowania masz uzwojenie silnika, dwa tranzystory dwóch driverów i jakieś kable ew. złącza. Największym "hamulcowym" jest w tym układzie sam silnik, bo rezystancja jego uzwojeń to kilka-kilkanaście omów więc to w nim wydzieli się najwięcej ciepła. Na szczęście nie jest tego dużo - dokładnie tyle poczujesz gdybyś po odłączeniu prądu próbował zatrzymać wał palcami. Możesz się sparzyć, ale tutaj ciepło jest wytwarzane punktowo w miejscu styku skóry z osią więc temperatura w tym obszarze rośnie szybko. Wirnik i uzwojenia są duże i masywne, ta sama energia tam wydzielona spowoduje wzrost temperatury może o 2 stopnie. Trochę energii wydziela się też w tranzystorach mostka a ponieważ są one o wiele mniejsze niż silnik tam temperatura może rosnąć szybciej. Ważne jest też co masz na wirniku. Jeżeli kręcisz samym silnikiem albo jakimś kółkiem z małą oponką, zgromadzona energia mechaniczna jest nikła, ale gdybyś założył duże koło zamachowe albo tym silnikiem rozpędził ciężki pojazd, to wtedy wytracenie tej długo zbieranej energii dynamicznym hamowaniem silnikiem/mostkiem mogłoby się skończyć tragicznie. W poważniejszych konstrukcjach mostki są tak projektowane, by podczas hamowania odzyskiwana energia kinetyczna pojazdu była kierowana z powrotem do akumulatorów. Daj znać co wyszło z tych prób hamowania. Powinna być bardzo wyraźna różnica między dobieganiem luzem z wysokich obrotów (>2s) a hamowaniem zwarciowym (<0.5s). Wydaje się proste, więc musisz coś źle sterować mostkiem, skoro to nie działa. Albo opory ruchu są tak duże (jakaś przekładnia itp?), że silnik i tak jest mocno hamowany samą mechaniką. 1
mati3594 Lipiec 6, 2018 Udostępnij Lipiec 6, 2018 Fakt, na silniku mam założoną przekładnię redukcyjną. Spróbowałem różnych konfiguracji, faktycznie "na zwarciu" wał wyhamowuje szybciej, ale jego bezwładność wciąż jest dla mnie zbyt duża. Rozumiem, że - w związku z poprzednią odpowiedzą - od hamowania metodą uruchomienia przeciwnego kierunku obrotów nie powinienem zrobić krzywdy układowi? Będzie to trochę trudniejsze do dostrojenia, ale powinno ostatecznie dać zamierzony efekt: docelowo na wale ma być założona rolka, która będzie odwijać przewód na określoną długość. Stąd, po zliczeniu odpowiedniej liczby impulsów z enkodera, potrzebuję nagłego zatrzymania wału.
marek1707 Lipiec 6, 2018 Udostępnij Lipiec 6, 2018 Nie potrzebujesz. Odwracanie kierunku to jeszcze większy stres dla mostka i silnika. Ja bym w to nie wchodził. Takie rzeczy robisz raczej w sytuacjach awaryjnych, gdy już naprawdę nic innego nie uratuje mechaniki. Hamowanie zwarciem startuje od jakiegoś prądu, ale maleje on bardzo szybko. Tutaj prąd szczytowy może być dwukrotnie większy bo na tę samą rezystancję uzwojeń/obwodu pracują dwa źródła połączone szeregowo: zasilanie + backEMF silnika. Jak na pewno pamiętasz ciepło powstaje z mocy I²R, więc o ile mostek przeżywał moc P przy zwarciu to wcale nie jest powiedziane, że przeżyje 4P przy przeciwnapięciu. To nie jest przypadek stania pod ścianą i ratowania układu tylko - nie obraź się - roboty po najmniejszej linii oporu. Przecież w odczytach enkodera nie ma nic zaskakującego. A skoro masz tutaj zupełnie przewidywalne zdarzenie - przecież wskazania enkodera/licznika rosną monotonicznie - zrób to z głową a nie na siłę. Możesz np. liczyć różnicę wskazań między wartością aktualną a zadaną i wtedy: a. traktować to jak wielkość błędu doprowadzoną do regulatora PD,b. zwyczajnie przewidywać programowo kiedy należy zmniejszyć obroty by zatrzymać się w punkcie wyłącznie dzięki hamowaniu zwarciem a może nawet i bez tego. Obie metody korzystają z inteligencji procesora i pośrednio Twojej. Nie robisz tego na bramkach i cyfrowych licznikach TTL gdzie każda kolejna funkcjonalność kosztuje nowe kostki, druty i płytkę, tylko na układzie który może odwalić naprawdę kawał roboty analitycznej i wciąż jest sprzętowo taki sam. Jako driver silnika nie masz głupiego przekaźnika, tylko mostek sterowany w zasadzie "analogowo". Zapłaciłeś za to wszystko więc korzystaj. Zacznij od wykonania kilku eksperymentów i dobrania momentu w którym będziesz prewencyjnie zmniejszał PWM np. skokowo ze 100% do jakiegoś przyjętego poziomu (znajdź go doświadczalnie) albo wręcz po jakiejś łagodnej rampie tak by stanąć w celu. Zaimplementuj to i sprawdź jak dobrze trafiasz. Być może za chwilę z nudów napiszesz kod, który po kilku próbach sam dobierze optymalne wyprzedzenie czasowe i/lub poziom PWM do poprawnego zatrzymania i zapamięta to sobie (np. w EEPROMie) dla danej rolki, przekładni itp. Gdyby wszyscy szli na taką łatwiznę, to winda przy starcie z parteru zgniatałaby ludziom jajka (w siatach z zakupami oczywiście) a po dojechaniu na 10 piętro miałbyś chwilową nieważkość lub guza na głowie. Napisz co postanowiłeś zrobić i dlaczego nie jest to hamowanie przeciwnapięciem
mati3594 Lipiec 6, 2018 Udostępnij Lipiec 6, 2018 Serdeczne dzięki za odpowiedź W takim razie - póki co zawieszam strojenie układu do momentu, kiedy całą część mechaniczną będę miał już poskładaną. Tak naprawdę dopiero wtedy będę mógł zbadać inercję całego układu i dobrać odpowiednie parametry. Zapewne będzie tak jak mówisz, czyli stanie na zrobieniu regulatora, który wraz ze spadkiem różnicy między wartością zadaną, a aktualną, będzie stopniowo zmniejszał prędkość obrotową. Niemniej przypuszczam, że jeszcze wiele niespodzianek mnie czeka Podjąłem się dość rozległego projektu, a ponieważ w programowaniu tak naprawdę dopiero raczkuję, chwila minie zanim dam znać, jak rozwiązałem problem
SOYER Grudzień 11, 2018 Udostępnij Grudzień 11, 2018 Dlaczego kiedy mam podpiętą do zasilania L293D tylko nóżkę od logiki i GND, a zasilanie silnika do nóżki 8 nie podpiete, to diody i tak migają?
Pomocna odpowiedź
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ę »