ArduinoBoss Napisano Sierpień 26, 2021 Udostępnij Napisano Sierpień 26, 2021 Witam, Ma ktoś pomysł jak na podstawie odczytu temperatury z czujnika ds18b20 sterować kątem wychylenia silnika z enkoderem i przekładnią? Chodzi mi o coś takiego, że jeżeli czujnik odczyta temperarutę np. 30 stopni, to pozycja enkodera +300, przy wyższej temperaturze pozycja +500 itd. Jak to zrobić, żeby silnik zatrzymywał się w danej pozycji i przy spadku temperatury wracał do poprzedniej pozycji? Kombinuje od dłuższego czasu i wykombinować nie mogę. Dodam tylko, że serwo nie wchodzi w grę. Z góry dziękuję za pomoc. Pozdrawiam. Link do komentarza Share on other sites More sharing options...
farmaceuta Sierpień 26, 2021 Udostępnij Sierpień 26, 2021 Dobrym rozwiazaniem bylby silnik krokowy z jakism mini stetstikiem...koszt kolo 20-30zl? (jesli to nie problem) wtedy sterowanie masz i dokladne i proste...a co do sposobu..to ja bym sobie zalozyl jakas skale, w sensie w jakim zakresie silnik moze sie obracac...np. 0-500 impulsow enkodera...odczytujesz temperature i mapujesz sobie...w jakiejs zmiennej zapamietujesz akyualne polozenie (impulsy)...i porownujesz, jesli mapowana wartosc spadla to w petli obracasz silnik o ilosc impulsow w odpowiednim kierunku...jesli temp. wzrosla to w druga strone... Link do komentarza Share on other sites More sharing options...
_LM_ Sierpień 26, 2021 Udostępnij Sierpień 26, 2021 Te +300°C to przykład czy faktyczna temperatura? Bo jeśli faktyczna to ds się do tego nie nadaje Link do komentarza Share on other sites More sharing options...
ArduinoBoss Sierpień 26, 2021 Autor tematu Udostępnij Sierpień 26, 2021 Na razie zrobiłem coś takiego że na funkcji millis, zaraz po włączeniu pozycja silnika się "zeruje" tzn. wał przekładni dojeżdża do krańcówki i się zatrzymuje. W UARTcie widzę temperaturę i położenie enkodera (nazwijmy to pozycja zerowa) . I od tego momentu silnik zaczyna reagować na temperaturę, tylko mam problem z napisaniem programu w taki sposób, żeby silnik zatrzymywał się gdy enkoder zliczy zadaną ilość impulsów tzn. pozycja zerowa + 500 dajmy na to, a gdy temperatura spadnie, żeby wracał na poprzednią pozycję. Funkcji map wolałbym uniknąć, nie chodzi mi płynny ruch wału przekładni, tylko w wychylenie o daną ilość impulsów enkodera, jeśli temperatura osiągnęła daną wartość. Silnik krokowy się nie sprawdzi, ponieważ jego wał łatwo mechanicznie przestawić. Dlatego zdecydowałem się na silnik z enkoderem i przekładnią ślimakową. Link do komentarza Share on other sites More sharing options...
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
ArduinoBoss Sierpień 26, 2021 Autor tematu Udostępnij Sierpień 26, 2021 Przed chwilą, _LM_ napisał: Te +300°C to przykład czy faktyczna temperatura? Bo jeśli faktyczna to ds się do tego nie nadaje Nie temperatura będzie w granicach 15 do 100 stopni max. Link do komentarza Share on other sites More sharing options...
_LM_ Sierpień 26, 2021 Udostępnij Sierpień 26, 2021 A nie łatwiej było by zrobić sprzężenie za pomocą potencjometru? Wtedy porównujesz pozycje zadaną z odczytem z adc i pozycjonujesz impulsami bądź pwm Link do komentarza Share on other sites More sharing options...
farmaceuta Sierpień 26, 2021 Udostępnij Sierpień 26, 2021 9 minut temu, ArduinoBoss napisał: tylko mam problem z napisaniem programu w taki sposób, żeby silnik zatrzymywał się gdy enkoder zliczy zadaną ilość impulsów Wiekszosc sterownikow nawet tanioch ma opcje "hamowania" czyli gwaltownego zatrzymania...poczytaj czy twoj ster tez tak potrafi... 9 minut temu, ArduinoBoss napisał: Funkcji map wolałbym uniknąć, nie chodzi mi płynny ruch wału przekładni, tylko w wychylenie o daną ilość impulsów enkodera, jeśli temperatura osiągnęła daną wartość. No i do tego wlasnie swietnie nadajw sie funkcja map...no chyba ze zle sie rozumiemy.. 9 minut temu, ArduinoBoss napisał: Silnik krokowy się nie sprawdzi, ponieważ jego wał łatwo mechanicznie przestawić. A to ciekawe...🤔 jak by polaczyc twoj palec z walem silnika takiego powiedzmy 1.5-2Nm to moglbys ten palec stracic...😉 Co to za termometr ze przekladni uzywasz?? Poka zdjecie..😉 Link do komentarza Share on other sites More sharing options...
ArduinoBoss Sierpień 26, 2021 Autor tematu Udostępnij Sierpień 26, 2021 2 minuty temu, farmaceuta napisał: Wiekszosc sterownikow nawet tanioch ma opcje "hamowania" czyli gwaltownego zatrzymania...poczytaj czy twoj ster tez tak potrafi... No i do tego wlasnie swietnie nadajw sie funkcja map...no chyba ze zle sie rozumiemy.. A to ciekawe...🤔 jak by polaczyc twoj palec z walem silnika takiego powiedzmy 1.5-2Nm to moglbys ten palec stracic...😉 Co to za termometr ze przekladni uzywasz?? Poka zdjecie..😉 Sterownik to L298N rzeczywiście ma funkcję hamowania, pomyślę jak to wykorzystać. Funkcja map dzieli "równo" daną wartość na kilka zadanych pozycji, a mi chodzi to nierównomierne ruchy wału silnika tj. np. gdy temperatura 30°C to pozycja + 500 ale gdy np 35°C to pozycja + 1500. Dlatego map raczej się tu nie sprawdzi. I nie chodzi o to żeby wskazówka termometru mogła palce urywać 😉, tylko na tej wskazówce czy ramieniu, jak zwał tak zwał, będzie zawieszony łańcuszek, który będzie połączony z dość ciężką metalową klapką, która to właśnie będzie się otwierać albo zamykać w zależności od temperatury. Dlatego silnik z przekładnią ślimakową a nie krokowy albo serwo. Bo robiłem to już na serwie, nawet takim do 35kg, niestety wytrzymało niedługo i się spaliło, gdyż ciągle musiało korygować pozycję, bo klapka cały czas ciągła go w dół 😐 Link do komentarza Share on other sites More sharing options...
ArduinoBoss Sierpień 26, 2021 Autor tematu Udostępnij Sierpień 26, 2021 26 minut temu, _LM_ napisał: A nie łatwiej było by zrobić sprzężenie za pomocą potencjometru? Wtedy porównujesz pozycje zadaną z odczytem z adc i pozycjonujesz impulsami bądź pwm Pewnie łatwiej, ale za długo czekałem na silnik z enkoderem z aliekspres, żeby go teraz nie wykorzystać 😁 Link do komentarza Share on other sites More sharing options...
_LM_ Sierpień 26, 2021 Udostępnij Sierpień 26, 2021 Pokaż to cudo w sensie silnik Link do komentarza Share on other sites More sharing options...
ArduinoBoss Sierpień 26, 2021 Autor tematu Udostępnij Sierpień 26, 2021 Proszę bardzo 😆 Link do komentarza Share on other sites More sharing options...
farmaceuta Sierpień 26, 2021 Udostępnij Sierpień 26, 2021 25 minut temu, ArduinoBoss napisał: Funkcja map dzieli "równo" daną wartość na kilka zadanych pozycji, a mi chodzi to nierównomierne ruchy wału silnika tj. np. gdy temperatura 30°C to pozycja + 500 ale gdy np 35°C to pozycja + 1500. Dlatego map raczej się tu nie sprawdzi Nie moge gdzies zalapac...😕 27 minut temu, ArduinoBoss napisał: nie chodzi o to żeby wskazówka termometru mogła palce urywać 😉 Hehe...a no pewnie ze nie😉 28 minut temu, ArduinoBoss napisał: Bo robiłem to już na serwie, nawet takim do 35kg, niestety wytrzymało niedługo i się spaliło, gdyż ciągle musiało korygować pozycję, bo klapka cały czas ciągła go w dół 😐 Zgadza sie, ale jesli byla mozliwosc zeby zrobic przeciwwage do tego ramienia to servo bylo by duzo mniej obciazone..choc do pracy ciaglej to jednak innych napedow bym szukal... Link do komentarza Share on other sites More sharing options...
ArduinoBoss Sierpień 26, 2021 Autor tematu Udostępnij Sierpień 26, 2021 2 minuty temu, farmaceuta napisał: Nie moge gdzies zalapac...😕 w każdym razie z serwem próbowałem z map i nie wyszło, zrobiłem na warunkach. 3 minuty temu, farmaceuta napisał: Zgadza sie, ale jesli byla mozliwosc zeby zrobic przeciwwage do tego ramienia to servo bylo by duzo mniej obciazone..choc do pracy ciaglej to jednak innych napedow bym szukal... Dlatego wg mnie przekładnia ślimakowa się sprawdzi, bo silnik ma lekko, a wału nie da się przestawić bo trzyma go ślimak. Link do komentarza Share on other sites More sharing options...
farmaceuta Sierpień 26, 2021 Udostępnij Sierpień 26, 2021 (edytowany) To jaki zakres ma wykonac to ramie?? I jaki zakres temperatury? Edytowano Sierpień 26, 2021 przez farmaceuta Link do komentarza Share on other sites More sharing options...
ArduinoBoss Sierpień 26, 2021 Autor tematu Udostępnij Sierpień 26, 2021 2 minuty temu, farmaceuta napisał: To jaki zakres ma wykonac to ramie?? Około 180° na enkoderze to jest jakieś 5000 impulsów Link do komentarza Share on other sites More sharing options...
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ę »