W dzisiejszym wpisie chciałbym pokazać całkiem łatwy sposób na uproszczenie sobie pewnej nudnej codziennej czynności – odsłaniania oraz zasłaniania rolet okiennych. Opisany sposób dotyczyć będzie rolet wewnętrznych montowanych na okno, jednak zadziała również z roletami montowanymi na same szyby. Wykorzystamy tutaj kilka prostych elementów – serwo modelarskie, Arduino oraz zestaw naprawczy do rolet. Zaczynajmy :)
Potrzebne elementy
- Zestaw naprawczy do rolet okiennych
- Mostek H podwójny – L298N
- Odbiornik IR TSOP2236
- Serwo modelarskie *
- ATmega 168P (i/lub Arduino)
- (opcjonalnie) dioda LED + rezystor
- (w przypadku ATmegi) zasilacz 5V
* moc serwa należy dobrać samodzielnie – odpowiednią do siły jaką trzeba przyłożyć aby przesunąć roletę ciągnąc za sznurek
UWAGA – istnieją różne rodzaje zestawów naprawczych, różnią się głównie tym czy kołowrotek jest przykręcany czy przyklejany (mniej ważne) oraz najważniejsze – grubością kulek na sznurku. Potrzebny jest zestaw z identycznym sznurkiem – tylko to gwarantuje, że kołowrotek będzie pasował. Kolejna ważna rzecz do odpowiednio długi sznurek tak aby przeszedł przez drugi kołowrotek (czyli bez niepotrzebnych odbojów).
W projekcie wykorzystałem Arduino dlatego, że łatwo się na nim prototypuje oraz odczytuje dane z Serial Monitora. Nie jest to jednak koniecznością, można stworzyć projekt bez jego wykorzystania, bezpośrednio na mikrokontrolerze.
W swoim pokoju posiadam dwie odrębne rolety okienne, dlatego musiałem zastosować dwa zestawy naprawcze do rolet oraz dwie diody LED (sygnalizują pracę serwa – przydatne do sprawdzenia poprawności działania krańcówek). Zastosowany mostek H posiada dwa niezależnie działające kanały, w projekcie zostaną one połączone tak, aby zawsze posiadały identyczny kierunek (zmostkowane piny input1 i input2 obu kanałów) – natomiast ich działanie (lub nie – czyli enable1 i enable2) będzie sterowane oddzielnie. Najważniejszym atutem tego akurat mostka H są piny “Current Sensing” – można na nich mierzyć aktualnie pobieraną moc, po odpowiednim dobraniu mocy krańcowej posłuży to do wyłączenia działania serwa po pełnym odsłonięciu/zasłonięciu rolety – alternatywnie można by realizować to za pomocą kontaktronów i magnesu jednak u mnie rodziło to problem przy uchylonym oknie (nie mam prowadnic).
Przygotowanie sprzętowe
W opisywanym projekcie najdłuższą część stanowi przygotowanie sprzętowe, trzeba przerobić serwo na zwykły silniczek, odpowiednio zamontować dodatkowy kołowrotek (serwo będzie ciągnąć za sznurek). Dość długo zeszło mi ze znalezieniem właściwego sposobu – próbowałem bezpośrednio w rolecie, były kombinacje z klejem, odkręcającym się serwem – dopiero na koniec zwyczajny dodatkowy kołowrotek na końcu sznurka.
Modyfikacja serwa
Tradycyjnie serwo posiada ograniczony kąt wychylenia, który sterowany jest z poziomu kodu i nie ma możliwości aby kręciło się dookoła – trzeba zatem wprowadzić kilka modyfikacji – rozkręcamy zatem serwo.
Głównym obiektem naszego zainteresowania jest skrajnie prawe koło zębate – posiada ono bowiem ogranicznik który blokuje pełny obrót. Uprzedzę od razu, że warto zrobić sobie zdjęcie lub zapamiętać położenie zębatek – nie jest łatwo dobrze to złożyć z pamięci.
Konieczne jest wypiłowanie wspomnianego odboju w całości – tak aby nic po nim nie pozostało, następnie możemy zabrać się za elektronikę od spodu.
Cała ta płytka nie będzie nam do niczego potrzebna – odlutowujemy ją (trzyma ją tylko lutowanie silnika – dwa górne duże piny) – ja ją sobie zachowałem, może się kiedyś przyda? :) Po odlutowaniu przylutowujemy do silnika dwa przewody:
Przerobiliśmy właśnie serwo na normalny silnik – jego kierunek ustalany jest poprzez zamianę + z – na przewodach zasilających. Modyfikacja serwa została zakończona.
Przygotowanie mechanizmu
Z zestawu naprawczego dla rolet potrzebne są następujące elementy (u mnie sznurek okazał się idealnym zastępcą posiadanego wcześniej – odpowiednia długość, brak odboju):
Na samym początku zajmiemy się kołowrotkiem – przerobimy go tak, aby nadawał się do przyczepienia do serwa, odcinamy nadmiarową część wchodzącą normalnie w roletę
Pozostanie kawałek tego samego materiału przyczepiony z pozostałą częścią – trzeba go na siłę oddzielić oraz usunąć sprężyny, aż zostanie “goły” mechanizm
Na tym etapie obie części powinny być już swobodne i łatwo się rozdzielać, pozostaje obcięcie wystającej części (nieco niżej niż widoczny półksiężyc) i montaż serwa. Wykorzystałem orczyk w kształcie X – małym wiertłem przewierciłem w odpowiednich miejscach dziury w kołowrotku (nie uszkadzając go) oraz wykorzystując śrubki dołączone do serwa (pasowały idealnie) przykręciłem całość.
Montaż mechanizmu
Jesteśmy na etapie gdzie mamy działające serwo (a właściwie teraz już zwykły silniczek) gotowe do kręcenia sznurkiem – pozostało całość zamontować do okna, z pewnymi oczywiście modyfikacjami części aby było to możliwe.
Składamy części do siebie i przymierzamy do sznurka – powinien być lekko naprężony jednak nie za mocno. Gdy znajdziemy właściwe miejsce, wówczas przyklejamy pierwszy komponent
Zamontowanie w podobny sposób z drugiej strony wymaga wykonania małej modyfikacji – odcięcia w drugim elemencie zaznaczonej części
Oraz na koniec przewiercenia dziur oraz przykręcenia dwóch śrubek (należy uważać aby nie przewiercić w środku kabla zasilającego, ja się o niego otarłem tak niefortunnie, że wywoływał później zwarcie po pewnym czasie działania)
Zamontowany mechanizm
Udało nam się otrzymać właśnie zamontowany system – tak jak wspominałem wcześniej, u mnie są dwie rolety więc konieczne było ponowienie analogicznych czynności również dla drugiego okna. Na tym etapie można wykonać test podłączając serwo do 5V, aby odwrócić kierunek należy zamienić + z -.
Przygotowanie elektroniczne
Nadeszła pora na podłączenie wszystkiego w jeden działający system – wydaje mi się, że najłatwiejszą część z całego projektu, choć oczywiście napisanie kodu oraz utworzenie odpowiednich połączeń wymagało wielu prób oraz cierpliwości. Eksperymentowałem z różnymi krańcówkami co skończyło się urwaniem sznurka – podczas kalibracji finalnie wybranego wyłączenia przeciążeniowego.
Ogólny zarys
Zarys działania części elektronicznej jest następujący: wprowadzimy dwa rodzaje sterowania, będzie to tradycyjny przycisk na płytce oraz druga metoda – sterowanie zdalne pilotem. Początkowo w projekcie znalazł się również adapter Internetowy jednak finalnie zrezygnowałem z tego pomysłu jako nieprzydatny. Zasada działania przycisku na płytce oraz na pilocie będzie identyczna: w dół -> stop -> w górę -> stop. Pierwsze naciśnięcie rozpocznie obniżanie, następne zatrzyma (jeśli ruch jest w trakcie, jeśli nie to od razu pkt. następny), kolejne podniesie w górę, następne zatrzyma. Aktualny stan będzie w pamięci, więc roleta opuszczona zawsze rozpocznie od ruchu w górę i odwrotnie. Jako wyłącznik krańcowy posłuży pomiar poboru mocy na mostku H – jest on wyposażony w piny “Current Sensing” pozwalające go odczytać. Konieczne będzie założenie na sznurku odboju na samym dole przy zębatce, na zasłoniętej rolecie. Istnieje oczywiście możliwość dodania dodatkowych przycisków sterujących, czy użycia do tego większej ilości przycisków z pilota, jednak zdecydowałem się na jeden przycisk sterujący tak samo obydwoma roletami – w praktyce sprawdza się to bardzo dobrze. Obie idą w górę/w dół lub się zatrzymują – za wyjątkiem krańcówek, które zatrzymują tylko konkretną roletę. Do zasymbolizowania stanu pracy posłużą dwie diody LED – ich świecenie się będzie oznaczać pracujące serwo (były problemy z rozpoznaniem ich bez tego).
Pobranie kodu pilota
Na samym początku musimy zaopatrzyć się w bibliotekę IRremote, która pozwoli w bardzo prosty sposób odczytywać sygnały odbierane przez odbiornik. Bibliotekę IRremote możecie pobrać stąd (bezpośredni link do pliku zip). Po pobraniu i rozpakowaniu paczki kopiujemy całą bibliotekę do folderu /librares/ znajdującego się w katalogu z Arduino IDE.
Aby możliwe było użycie pilota, konieczne jest pobranie jego kodu. Realizujemy to poprzez następujące podłączenie:
Oraz wrzucamy następujący kod:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
#include <IRremote.h> #define irPin 11 IRrecv irrecv(irPin); decode_results results; void setup() { Serial.begin(9600); irrecv.enableIRIn(); } void loop() { if (irrecv.decode(&results)) { Serial.print("0x"); Serial.println(results.value, HEX); delay(250); irrecv.resume(); } } |
Uruchamiamy Serial Monitor i naciskamy wybrany przycisk na pilocie – w Serial Monitorze wyświetli się nam jego kod. W moim przypadku był to 0x5006164.
Uruchomienie właściwe
Nadeszła nareszcie pora na uruchomienie właściwe całego systemu. Podłączamy wszystko według schematu:
Pewną trudność może stwarzać zastosowany mostek H który choć ma piny idące w dół oraz do przodu, to de fakto trafiłyby one w te same ścieżki, dlatego trzeba go zamontować tak jak ATmegę – na środku płytki.
Poniższy kod został stworzony dla wersji z dwiema roletami, aby wykorzystać go dla jednej rolety należy usunąć wzmianki dotyczące drugiego silnika.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 |
#include <IRremote.h> byte enablePin = 5; // musi byc PWM, sterowanie silnikiem lewym byte enablePin2 = 9; // musi byc PWM, sterowanie silnikiem prawym byte led1 = 10; // dioda LED okna lewego byte led2 = 11; // dioda LED okna prawego byte in1Pin = 4; // pin podlaczany do mostka H byte in2Pin = 3; // pin podlaczany do mostka H byte switchPin = 7; // pin przycisku byte irPin = 6; // pin sensora IR int sens1,sens2; // zmienne dla pomiaru obciazenia IRrecv irrecv(irPin); decode_results results; boolean run=false,up=false,action=false,r1=false,r2=false; void setup() { pinMode(in1Pin, OUTPUT); pinMode(in2Pin, OUTPUT); pinMode(enablePin, OUTPUT); pinMode(enablePin2, OUTPUT); pinMode(switchPin, INPUT_PULLUP); pinMode(led1, OUTPUT); pinMode(led2, OUTPUT); //Serial.begin(9600); irrecv.enableIRIn(); } void loop() { boolean button = digitalRead(switchPin); // czy przycisk zostal wcisniety ? sens1 = analogRead(A0); // odczyt obciazenia lewego silnika sens2 = analogRead(A1); // odczyt obciazenia prawego silnika if(!r1 && !r2) { run = false; // jezeli warunki nizej wylaczyly oba silniki, run=false } //Serial.println(sens1); if( (sens1 >= 50 && !r2 ) || (sens1 >= 60 && r2) ) // krancowka obciazeniowa - okno lewe { // wylacz ruch rolety lewej r1 = false; setMotor1(0); } if( (sens2 >= 50 && !r1 ) || (sens2 >= 65 && r1) ) // krancowka obciazeniowa - okno prawe { //wylacz ruch rolety prawej r2 = false; setMotor2(0); } if(!button) { action = true; } // przycisk wcisniety - wykonaj akcje if (irrecv.decode(&results)) { // odebrano kod IR switch (results.value) { case 0x5006164: // nalezy podmienic kod pilota action = true; // wcisnieto wlasciwy przycisk - wykonaj akcje delay(300); // zapobiega podwojnej reakcji (zbyt dlugo trzymany przycisk) break; } irrecv.resume(); } if(action) { // action to zmienna oznaczajaca wywolanie akcji - tj. przycisku na plytce lub pilocie // ujednolicilem aby nie pisac zagniezdzonego ifa // ponizszy kod wykona sie po wcisnieciu przycisku na plytce lub pilocie action = false; if(run) { // w przypadku gdy rolety poruszaja sie - nalezy je zatrzymac run = false; r1 = false; r2 = false; setMotor1(0); setMotor2(0); } else { // rolety nie poruszaja sie if(up) { // roleta jest u gory up = false; run = true; r1 = true; r2 = true; setDirection(true); // nalezy skierowac w dol setMotor1(255); setMotor2(255); } else if(!up) { // roleta jest na dole up = true; run = true; r1 = true; r2 = true; setDirection(false); // nalezy skierowac w gore setMotor1(240); setMotor2(255); } } delay(300); } } void setMotor1(int speed) { analogWrite(enablePin, speed); if(speed == 0) { digitalWrite(led1,LOW); } else { digitalWrite(led1, HIGH); } } void setDirection(boolean reverse) { digitalWrite(in1Pin, ! reverse); digitalWrite(in2Pin, reverse); } void setMotor2(int speed) { analogWrite(enablePin2,speed); if(speed == 0) { digitalWrite(led2,LOW); } else { digitalWrite(led2, HIGH); } } |
Wyjaśnienia wymaga działanie krańcówek, linie 49 i 56 – w moim przypadku powstawał taki efekt, że przy jednej działającej rolecie (co się zdarzało jeśli obracały się nierównomiernie) potrzebne były zupełnie inne wartości krańcowe, wyłączenie jednej rolety spowodowało chwilowy wzrost mocy drugiej – i ta też się wyłączała. Dlatego warunek ma inne wartości dla działającego jednego silnika oraz dla dwóch. Wartości te można dobierać metodą prób i błędów, lub odkomentować linijkę 31 i 47 oraz monitorować Serial Monitor w poszukiwaniu odpowiedniej wartości. Właściwie dobrana jest wówczas, gdy roleta nie wyłącza się bez powodu w trakcie operacji, natomiast wyłącza się tuż po osiągnięciu położenia krańcowego.
Zastosowany mechanizm ze zmienną action ma na celu ograniczenie zagnieżdżonych ifów. W przypadku spełnienia warunku – odpowiedniego przycisku na pilocie lub na płytce action ustawiany jest na true. Następnie w ifie sprawdzany jest action – jeśli jest true, to jest cofany na false i wykonuje się odpowiednia czynność.
Podsumowanie
Na sam koniec nie pozostało nic innego jak przenieść projekt na ATMegę (prawdopodobnie 168P – na 8P się nie zmieści) aby uwolnić Arduino i mieć je do następnych projektów. Wymaga to przeniesienia podłączeń na odpowiednie nóżki ATMegi oraz zaprogramowania mikroprocesora.
Filmik prezentujący działanie zmontowanego projektu:
Szkoda że nie przeniosłeś układu na oddzielną pcb, ale mimo to bardzo mi się podoba ten projekt.
W sumie w każdym projekcie finalnie to robiłem. Tutaj pewnie też zrobię później aby uwolnić Arduino ale nie opisywałem już tego, coby nie wywoływać tl;dr :D
Opisz ładnie na Majsterkowie jaką płytkę wykonać dla przykładowego projektu, po przeniesieniu na Atmegę. :)
Chodzi o schemat podłączeń?
Generalnie trzeba przypasować odpowiednie piny z Arduino do odpowiednich nóg ATmegi – są nawet takie fajne ściągawki naklejane na ATmegę które pokazują przypisania nóg do analogicznych pinów w Arduino,
Jako przykład możesz zerknąć moje poprzednie projekty gdzie były schematy z Arduino oraz ATmegą
Jakim programem robisz wizualizację połączeń?
Fritzing
Bardzo dziękuję :)
Idea spoko, ale żeby taki projekt był fajny to całość powinna być jakkolwiek estetyczna a użyte elementy to poniekąd wykluczają.
Zawsze można serwo przykryć w jakąś mini puszkę i nie będzie widoczne :)
Zmieści ci się to na Atmege8… musisz tylko zajrzeć w źródła biblioteki IRemote i wywalić wszystkie funkcje odpowiedzialne za dekodowanie/kodowanie innych systemów IR, pozostawiając tylko ten, w którym pracuje twój pilot, zostanie ci jeszcze miejsca w….bardzo dużo, a jak pominiesz bootloader to jeszcze więcej….
Pytanie, jak radzi sobie to serwo z podnoszeniem rolety? Już przy opuszczaniu silniczek dziwnie pracował.
Co to za model serwa?
Hitec HS-311
Daje sobie ogólnie radę ale jest generalnie źle dobrane – powinno być mocniejsze
Poszukaj w sklepach/portalach aukcyjnych jakiś silniczków DC z przekładnią, zaletą będą wymiary i możliwość wpakowania tego wszystkiego w jakąś rurkę, żeby wyglądało estetycznie.
Wydaje mi się, że udałoby się dobrać taki silniczek, który zmieściłby się w środku rolety (nie wiem jaka masz średnice wewnętrzna w zamontowanych roletach) i zamontować wszystko w sposób niewidoczny
Można prościej – zamiast mostka typu H wystarczy wylutować z serwa potencjometr, a w jego miejsce wstawić dzielnik rezystancyjny z dwóch rezystorów np po 10k. Polecam potestować :-)
Można też było usunąć ogranicznik a potencjometr zlepić na stałe w pozycji środkowej – później obroty i prędkość można by zmieniać zwykłym poleceniem z biblioteki Servo. Tylko gorzej wtedy chyba z pomiarem obciążenia
Co zrobić żeby działało to ciszej?
Wystarczy kupić ciche serwo. W sklepach modelarskich takie znajdziesz
To serwo które użył Jakub Furman i tak należy do cichy serw :)
Czy to tak naprawdę ma znaczenie ?
Ja się przyzwyczaiłem, cała operacja trwa dość krótko, da się to znieść :)
Ja poszedłem na łatwiznę, zrobiłem rolety zdalnie sterowane z tego co miałem pod ręką samochodzik (odbiornik) z pilotem (nadajnik) + silnik od jakiejś wkrętarki 12V + zasilacz 5v 2A.
Już chciałem pisać, że mostek H źle podłączony, ale zacząłem się wczytywać i widzę że tego tam wcale nie ma być. Koniecznie zamaż ten napis L293D na scalaku (chociażby w Paintcie), bo jeśli ktoś nie będzie się wczytywał w treść to podłączy tak jak jest schemacie i w najlepszym przypadku nie będzie mu działało…
Za sam projekt dziękuję, też od dawna myślę o zautomatyzowaniu rolety w pokoju, ale nie wpadłem na to żeby silnik dać na dole, na dodatkowej “zębatce”. Cały czas chciałem psuć główny mechanizm rolety i tam u góry przykręcić serwo. A to rozwiązanie jest o wiele lepsze i mniej inwazyjne.
Masz rację – mogłem to zamazać poza Fritzingiem i wstawić właściwy napis, nie wiem czemu na to nie wpadłem. Zamazałem właśnie i naniosłem poprawny napis.
Ja też próbowałem ingerować w główny mechanizm (chociaż nie inwazyjnie), np. sprawiłem aby dodatkowa część dotychczas nie obrotowa obracała się razem z roletą i inne tego rodzaju próby ale nie udało mi się,
Dodatkowa zębatka jest OK ale tylko jeśli sznurek jest odpowiednio długi i nie ma odboju po drodze, który przez nią nie przejdzie – tak też udało się u mnie,
Można by również tą zębatkę przykleić tuż pod głównym uchwytem rolety (trzeba by przypiłować półksiężyc) ale to trochę więcej kabla i sam nie wiem czy jakaś zaleta – pewnie swobodny sznurek ale on i tak nie jest zbyt użyteczny (serwo stawia duży opór)
marzę o czymś takim od dawna ale bardziej automat uwzględniający temperature w lecie (czyli zasłania rano jak są upały kiedy np. temp. na zewnątrz jest wyższa niż wewnątrz) + wieczorem jeżeli różnica w natężeniu światła wewnątrz / zewnątrz przekroczy jakiś próg.
Żaden problem rozbudować – zostały wolne piny.
Można podpiąć 2 sensory temperatury (jak we wpisie o Internetowym termometrze) i na ich bazie + np. fotorezystora wprowadzić trochę automatyki
Żaden problem rozbudować – zostały wolne piny.
Można podpiąć 2 sensory temperatury (jak we wpisie o Internetowym termometrze) i na ich bazie + np. fotorezystora wprowadzić trochę automatyki
Jak dopasowałeś serwa?
Trzeba sprawdzić jakie obciążenie jest potrzebne aby pociągnąć sznurek,
Można np. przywiesić ciężarek do sznurka i sprawdzić przy jakiej wadze zacznie się poruszać – a potem na tej bazie dobrać moc serwa
Dzięki wielkie !
Genialne :D Kawał dobrej roboty!
Dzięki :D
Wszytko fajnie ale ja bym zastosował silnik krokowy, wydaje mi się że było by lepiej.
Lepszy byłby porządny silnik z przekładnią. Kosztuje więcej niż serwo ale jest cichszy. Silnik krokowy jest powolny i wymaga sterownika.
wszystko super, tylko mam problem z doborem odpowiedniego silnika. Jak obliczyć moment obrotowy? Jest jakiś wzór na to? Na logikę mogę doczepiać do sznureczka odważniki, uzyskam wtedy mase jaką należy przyłożyć aby rolera zaczęła się zwijać, ale jak tą masę przełożyć na Nm? :>
Pozdrawiam
Fg=m*g gdzie m to masa, a g=10N/kg
Pomysł fajny ale zastanawia mnie żywotność całego mechanizmu.
Czyli na tym sterowniki silników l298n mogę tylko wykorzystać dwa serwa do tego projektu ? Co powinienem zrobić aby wykorzystać ten projekt ale na 3 pary rolet ?
Przerabiałem kiedyś podobne serwo i mogę mam jedną radę, jeśli to ma działać na takiej zasadzie jak tu to odradzam serwa z plastikową przekładnią ponieważ szybko się nagrzewają i przekładnia się zaciera. Serwa z metalowymi przekładniami są troszeczkę droższe np TowerPro MG995 za 30zł można kupić.
Jedno pytanie mam do autora, czy do sterownika silnika nie trzeba podłączyć jeszcze diodek prostowniczych ? Pozdr.
Witam, super pomysł! Czy mógłbyś przerobić ten projekt, by można było sterować zwyczajnie przyciskiem i np. wysłać mi zmiany jakie by zaszły? dziękuję z góry, pozdrawiam.
Mam pytanie, skąd wziąłeś L298N w obudowie z 16 pinami (rysunek z płytką stykową)? W dokumentacji L298N są tylko 15 i 20 pinowe
Witam, wlasnie podlaczylem uklad i mam maly problem. Silniki zasilane z arduino chodzą dość niemrawo, chciałem dać zewnętrzne zasilanie. Podłączyłem zewnętrzne zasilanie + do pinu 4 na L298N a minus połączyłem z GND arduino. Po takim podłączeniu układ nie działa.
Proszę o pomoc.
U mnie układ działa, ale ledwo daje radę z podnoszeniem, idzie bardzo wolno, dużo wolniej niż do dołu. Serwo dałem mocniejsze, HS485HB. Roleta ma wymiary około 80cmx100cm. Z opuszczaniem nie ma problemów. Czy modyfikowałeś wbudowany hamulec rolety, żeby stawiał mniejszy opór? Ja podejrzewam, że hamulec mi psuje zabawę.
hamulec calkiem usun wtedy nie bedzie miec oporow
U mnie wszystko dziala pod arduino leonardo ale gdy podlacze calosc pod arduino pro mini to jest problem z jednemy kanalem poniewaz serwo sie uruchamia i po 1s staje a drugie dziala bez problemu wszystko jest dobrze podlaczone tak jak w leonardo wie ktos moze co jest przyczyna tego?
A ja mam pytanie w jaki sposob dzialaja ograniczniki pradu w tym l298 czyli te piny ktore ida do A0 i A1. Czy one aby nie powinny isc do masy przez rezystor o bardzo malej rezystancji do 10 ohm i dopiero wtedy odczytywana wartosc analogowa ? Gdy one nie sa podlaczone do masy silniki nie powinny sie krecic.
Zaraz zaraz – coś tu jest nie tak. Nie wiem czy od 2014 roku nikt tego nie sprawdził czy może jednak użyty jest inny mostek niż l298n. Sprawdzając w dokumentacji jasno widać że ten mostek ma średni spadek około od 1,8 V do 4,9V! Czyli jeśli użyjemy wyjścia z Arduino 5V minus średnio 2V to na wyjściu mamy 3V a serwo pracuje najlepiej przy 5-6V. Z własnych testów widzę że podłączenie jednego serwa pod jeden kanał ledwo daje radę i łatwo jest zatrzymać silnik. Mostek po kilkunastu sekundach pracy ciągłej uzyskuje jeszcze około 0,6V czyli razem max daje 3,6V. To zdecydowanie za mało! Podłączenie drugiego serwa to już wogóle nic nie działa. Dlatego właśnie jest tu kilka komentarzy że komuś nie działa albo idzie bardzo wolno. Osobiście uważam że należy podłączyć zewnętrzne zasilanie tak aby zabezpieczyć się przed spadkiem czyli najlepiej jakieś 7,5V np przez przetwornicę step-up czy jakkolwiek. Ale może niech autor się wypowie.
A co nawet ważniejsze brakuje tutaj informacji o potrzebie dodania radiatorka do mostka l298n bo pierońsko się grzeje.
Podłączam tak jak na schemacie,wgrałem bibliotekę-wchodzę do serial monitor i gdy naciskam na pilocie jakikolwiek przycisk to nic się nie pojawia,żadnego kodu,zrobiłem wszystko po kolei według instrukcji a i tak mi nie działa help me:(
Pilot ma rację – mostek L298n słabo działa zasilany z arduino, serwo ledwo kręci. Układ zasiliłem stabilizatorem napięcia L7806 i z niego zasiliłem arduino oraz 6V dałem na pin 4 L298n, wtedy serwo bez problemu kręci roletą i nie trzeba dawać mocniejszego moim zdaniem (jednak mam usunięty hamulec z rolety)
Jak podałem zasilanie L298n z arduino układ ledwo ciągnie do góry:
https://www.youtube.com/watch?v=vCedhRmlpJo
Program przerobiłem tak że kontaktrony robią za krańcówki (poległem z tym nadprądowym wyłączaniem).
Opóźnienie 500 ms pozwala wyjść ze strefy krańcówki.
Ukłony dla autora programu. Podoba mi się opcja jednego guzika. Dorzuciłem kod każdego pilota jaki mam w domu :))
pozdrawiam
a i jeszcze trafiła mi się taka dziwna rzecz. Trzy razy lutowałem układ, bo za każdym razem jakieś problemy były, to się serwo zacinało, to przestawało reagować na pilota. (o dziwo na płytce stykowej chodziło). Na odłączonym serwo dioda reagowała poprawnie, a po podłączeniu serwo układ co kilka nawrotów głupiał, dosyć losowo. Wynalazłem że L298n potrzebuje diod zabezpieczających (myślałem że to nie tyczy się tak małego serwa), ale po zastąpieniu zwykłego l298n sterownikiem (z allegro) na l298n z diodami stabilizatorami i kondensatorami układ działa bez zarzutu
Gdzie znajdę bibliotekę do tego pilota pracującą z atmegą? Bo mam problem
Pingback: Automatyczne rolety część 1 - Napęd » Arduino, Elektronika, Szybkie projekty » poradnik zrób to sam na Majsterkowo.pl
Projekt sensowny, ale zamiast czasowego zatrzymywania rolet (co jest kłopotliwe jeżeli ktoś ręcznie ją przesunie), lepiej na krańcach w ramie okiennej zamontować kontaktrony (na górze i na dole) funkcjonujące jako czujniki bool’owskie oraz magnes z boku “obciążnika” rolety. Gdy magnes znajdzie się w zasięgu kontaktronu obwód zostanie zamknięty, a program zatrzyma silniki. Oczywiście można jeszcze skorygować to funkcją delay(), aby dokładnie dosunąć roletę. Do całości można zainstalować czujnik zmierzchowy na zewnątrz, aby rolety były zasuwane/otwierane automatycznie, w zależności od natężenia światła. Oczywiście z możliwością manualnego sterowania w dowolnym momencie, które przechodzi w tryb automatyczny przy zmianie stanu czujnika zmierzchowego.