Skocz do zawartości

Termometr mechaniczny na silniku z enkoderem


ArduinoBoss

Pomocna odpowiedź

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

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

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

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

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

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

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

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

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

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

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.