adamsm 0 Napisano Październik 21, 2019 Udostępnij Napisano Październik 21, 2019 Witam, Piszę program, który ma na celu płynną regulację prędkości silnika dc(wentylatora 5V) za pomocą potencjometru oraz wyświetlanie napięcia regulowanego przez potencjometr na lcd, jednak napotkałem na problem, który nie wiem jak rozwiązać - przy regulacji potencjometrem silnik nie przyspiesza i hamuje płynnie, tylko skokowo(0,1)załącza się przy ok. 2,5V i do 5V prędkość jest bez zmian, przy zejściu poniżej 2,5V silnik po prostu się wyłącza. Prośba o pomoc, wielkie dzięki z góry. Kod : #include <LiquidCrystal.h> //Dołączenie bilbioteki LiquidCrystal lcd(2, 3, 4, 5, 11, 12); void setup() { lcd.begin(16, 2); //Deklaracja typu lcd.clear(); lcd.setCursor(0, 0); //Ustawienie kursora lcd.print("VOLTAGE"); //ustawienie lcd lcd.setCursor(0,1); lcd.print("0.00V"); pinMode(6, OUTPUT); //Sygnal PWM silnika nr1 digitalWrite(6, HIGH); //ustawiamy na stale stan wysoki na 6 pinie pinMode(A0, INPUT);//potencjometr pinMode(7, OUTPUT); //Sygnaly sterujace kierunkiem obrotow silnika pinMode(8, OUTPUT); } double odczyt; void loop() { odczyt = analogRead(A0)*5.0/1024.0; //Wartość napięcia lcd.setCursor(0, 1); //Ustawienie kursora w odpowiednim momencie lcd.print(odczyt); //Wyświetlenie tekstu delay(250); //Opóźnienie int pwm = analogRead(A0); //regulacja pr. obr. za pomocą potencjometru pwm = map(pwm,1023,0,0,255); analogWrite(7, pwm); digitalWrite(8, HIGH); delay(25); } Cytuj Link to post Share on other sites
Treker 2530 Październik 22, 2019 Udostępnij Październik 22, 2019 @adamsm witam na forum Dla większego porządku pytanie wydzieliłem z kursu, ponieważ nie dotyczy ono bezpośrednio omawianych tam ćwiczeń. Tutaj będzie łatwiej utrzymać porządek w dyskusji i nie będziemy mylić osób szukających informacji o programach z kursu. Źródło pytania: https://forbot.pl/forum/topic/8385-kurs-arduino-8-sterowanie-silnikami-dc-petla-for/ 8 godzin temu, adamsm napisał: Piszę program, który ma na celu płynną regulację prędkości silnika dc(wentylatora 5V) za pomocą potencjometru oraz wyświetlanie napięcia regulowanego przez potencjometr na lcd, jednak napotkałem na problem, który nie wiem jak rozwiązać - przy regulacji potencjometrem silnik nie przyspiesza i hamuje płynnie, tylko skokowo(0,1)załącza się przy ok. 2,5V i do 5V prędkość jest bez zmian, przy zejściu poniżej 2,5V silnik po prostu się wyłącza. Czy testowałeś działanie innego programu? Czy mogłeś innym kodem wpłynąć na prędkość silnika? Pytam, aby wykluczyć ewentualne problemy wynikające z błędnego podłączenia układu. Jeśli wszystko działało dobrze to w takim razie warto sprawdzić czy wszelkie obliczenia robione w programie są poprawne. Czy próbowałeś wypisać sobie wartość zmiennej pwm (przed i po użyciu funkcji map)? Możesz do tego wykorzystać podłączony LCD lub np. UART. Daj znać jakie wyniki PS kody programów należy umieszczać za pomocą odpowiedniego narzędzia dostępnego w edytorze ("Wstaw kod"). Programy są wtedy prezentowane w czytelny sposób, a ich składania jest kolorowana. Tym razem poprawiłem to za Ciebie, ale pamiętaj o tej opcji w przyszłości. Z góry dziękuję za zrozumienie i pomoc w utrzymaniu porządku 1 Cytuj Link to post Share on other sites
adamsm 0 Październik 22, 2019 Założyciel tematu Udostępnij Październik 22, 2019 (edytowany) Dzięki za odpowiedź ! W przypadku programu z pętlą for z kursu z płynnym przyspieszaniem i hamowaniem silnika gdzie prędkość obrotowa była regulowana przez PWM - pin 6 w programie wszystko było OK, jednak przy pomocy potencjometru już nie mogę uzyskać tego efektu. "Czy próbowałeś wypisać sobie wartość zmiennej pwm (przed i po użyciu funkcji map)? Możesz do tego wykorzystać podłączony LCD lub np. UART. Daj znać jakie wyniki " Możesz wytłumaczyć co dokładnie masz na myśli na przykładzie kodu? Dzięki z góry ! Edytowano Październik 22, 2019 przez adamsm Cytuj Link to post Share on other sites
ethanak 1852 Październik 22, 2019 Udostępnij Październik 22, 2019 Pomyliłeś piny - PWM możesz mieć na pinie 6 a nie 7. 2 Cytuj Link to post Share on other sites
Polecacz 101 Zarejestruj się lub zaloguj, aby ukryć tę reklamę. Zarejestruj się lub zaloguj, aby ukryć tę reklamę. Szukasz producenta PCB? Sprawdź firmę JLCPCB. Dlaczego warto? • Prototypy PCB 2-warstwowe za 2$ (gotowe w 24 godziny) • Prototypy PCB 4-warstwowe za 5$ • Montaż SMT od 7$ • Produkcja w profesjonalnej fabryce (zobacz film) Sprawdź też » Jak powstaje PCB? Wycieczka po fabryce
adamsm 0 Październik 22, 2019 Założyciel tematu Udostępnij Październik 22, 2019 Czyli ten fragment kodu ma wyglądać w ten sposób? : int pwm = analogRead(A0); //regulacja pr. obr. za pomocą potencjometru pwm = map(pwm,1023,0,0,255); analogWrite(6, pwm); digitalWrite(7, LOW); digitalWrite(8, HIGH); delay(25); } O to chodzi? Cytuj Link to post Share on other sites
ethanak 1852 Październik 22, 2019 Udostępnij Październik 22, 2019 Coś w tym stylu. Tutaj masz pokazane, na których pinach możesz mieć PWM (a i to nie zawsze). 1 1 Cytuj Link to post Share on other sites
Treker 2530 Październik 22, 2019 Udostępnij Październik 22, 2019 Sam program to trochę mało, bo nie wiemy jak masz fizycznie podłączony ten sterownik (tak na 101%) Ale ogólnie to tak, pin 6 powinien być tutaj używany jako ten od regulacji prędkości. 1 Cytuj Link to post Share on other sites
adamsm 0 Październik 22, 2019 Założyciel tematu Udostępnij Październik 22, 2019 Dzięki, sprawdzę to dziś w praktyce na układzie i dam znać. Cytuj Link to post Share on other sites
Anonim Październik 22, 2019 Udostępnij Październik 22, 2019 Może to być też wina samego silnika np. od wentylatora. Niektóre silniki mają wbudowane diody i poniżej napięcia progowego siłą rzeczy nie działają lub prąd przy zbyt niskim napięciu jest niewystarczający do uruchomienia silnika. Należy wtedy ustalić próg zadziałania i w programie ustawić odpowiedni offset. Poza tym wszystko normalnie. Nie wiem też po co Ci ten drugi delay skoro wszystko masz w jednej pętli. Cytuj Link to post Share on other sites
adamsm 0 Październik 22, 2019 Założyciel tematu Udostępnij Październik 22, 2019 Ok, właśnie przetestowałem zmianę pinu PWM na 6 w programie tak jak pisaliśmy wyżej i regulacja prędkości działa, tylko nie idealnie tak jak sobie to wyobrażałem. Mianowicie dopiero gdy ustawie potencjometr na max wskazanie 5V to po chwili startuje, natomiast przy zmniejszaniu napięcia jest OK - powoli płynie zmniejszają się obroty i poniżej 2V wentylator się zatrzymuje, jeśli jest w tym zakresie 2-5V to regulacja działa super w obie strony, problem jest jednak taki, że jak już się zatrzyma przy wartości poniżej 2V to nie startuje z powrotem powyżej tej granicy, lecz dopiero jak dam potencjometr na max w prawo do 5V i po chwili rusza. Myślicie, że jest to kwestia napięcia progowego tego wentylatora? Jego parametry to DC 5V, 0.7W Cytuj Link to post Share on other sites
marek1707 2654 Październik 22, 2019 Udostępnij Październik 22, 2019 Nawet zwykły silnik DC szczotkowy nie ruszy od tego samego napięcia w jakim się zatrzymał tylko sporo wyżej a jeśli myślisz, że "Wentylator DC 5V" (np. taki z komputera) ma coś wspólnego z "Silnikiem DC" w popularnym rozumieniu tego słowa to się grubo mylisz. On nawet nie leżał koło szczotkowego silnika DC: ma prawdopodobnie 2 lub 3 fazy, elektroniczny komutator i scalak który steruje jego pracą. 1 Cytuj Link to post Share on other sites
Jamik 56 Październik 23, 2019 Udostępnij Październik 23, 2019 Witam. Możesz pokazać schemat podłączenia wentylatora do Arduino? Może tu jest problem? Jak go zasilasz? Czy wydajność prądowa jest wystarczająca? Silnik elektryczny potrzebuje więcej prądu, żeby ruszyć niż do utrzymania potem ruchu obrotowego. Oczywiście o ile nie zmieni się obciążenie. Cytuj Link to post Share on other sites
adamsm 0 Październik 23, 2019 Założyciel tematu Udostępnij Październik 23, 2019 Podłączenie wentylatora jest tak jak w kursie : https://forbot.pl/blog/kurs-arduino-sterowanie-silnikami-dc-petla-for-id8311 Do pomarańczowych przewodów jest podłączony wentylator, do tego jest jeszcze potencjometr podłączony w roli dzielnika napięcia do wejścia analogowego A0. Cytuj Link to post Share on other sites
Jamik 56 Październik 23, 2019 Udostępnij Październik 23, 2019 Masz tam L293D? Będziesz miał na tym spadek napięcia z 1,5V. Sprawdź to sobie multimetrem. Dodatkowo bateria 9V ma bardzo małą wydajność prądową. Nie dziw się, że silnik ruszyć nie może. Daj przynajmniej zewnętrzne zasilanie mostka z jakąś rozsądną wydajnością prądową. 1 Cytuj Link to post Share on other sites
adamsm 0 Październik 23, 2019 Założyciel tematu Udostępnij Październik 23, 2019 Wielkie dzięki za tą sugestię Jamik ! Miałem akurat pod ręką zasilacz 12V co prawda mały prąd 0,25A, ale wentylator śmiga aż miło i płynnie się reguluje prawie w całym zakresie potencjometru. Kupię jakiś porządny zasilacz 12V i wtedy już w ogóle myślę, że będzie idealnie. Pozdrawiam Cytuj Link to post Share on other sites
Polecacz 101 Zarejestruj się lub zaloguj, aby ukryć tę reklamę. Zarejestruj się lub zaloguj, aby ukryć tę reklamę. 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
Pomocna odpowiedź
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!