• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Sterowanie silnikiem za pomocą L298N i RF433mhz
#1
Cześć. Jestem totalnie początkujący w temacie arduino i starałem się zrobić banalny z pozoru kod, za pomocą którego będę mógł sterować moim silnikiem poprzez zdalne sterowanie.
Posiadam taki moduł:
https://abc-rc.pl/product-pol-7344-Modul...v-ezg56Bvk

i sterownik L298N. 
Bez arduino udało mi się wszystko połączyć i pilot i odbiornik działa bez zarzutu, jednak jest to ograniczone, bo nie ma możliwości sterowania prędkością, a tylko kierunkiem.
Stąd też przyszedł moment na wykorzystanie Ardu, które za pomocą kilku poradników (jeden dla l298 i drugi dla radyjka) chciałem połączyć w jedną całość, ale gdzieś utknąłem.
W ogólnym zarysie chciałbym, aby całość działała tak:
- za pomocą czterech przycisków ustalam prędkość jak i kierunek obrotu silnika:
1. Jazda w prawo z ustaloną prędkością X (0-255)
2. Jazda w lewo tak jak wyżej
3. Prędkość do góry (jeden klik równa się podniesieniu prędkości np. o 25 punktów do góry)
4. Prędkość w dół (jeden klik równa się obniżeniu tak jak wyżej)

Ustalanie zmiany kierunku polega na zmienianiu stanu zmiennej in1 i in2 na:
(in1= low, in2=high ) - wtedy silnik kręci się w prawo
(in1=high, in2=low) - wtedy silnik kręci się w lewo


Natomiast prędkość odbywa się analogowo na podstawie zmiennej enA (działającej na PWM).

To co chciałbym osiągnąć wyżej jest na razie daleko przede mną, ale póki co chciałem w ogóle osiągnąć wynik polegający na wciśnięciu jednego przycisku, który zacznie po prostu obracać silnikiem w prawo z prędkością 150 (pwm).
Mój kod wygląda więc następująco:

Kod:
int ONPinled2 = 7;

int enA = 11;
int in1 = 9;
int in2 = 8;
 
void setup() {
 pinMode(ONPinled2, INPUT);
 pinMode(enA, OUTPUT);
 pinMode(in1, OUTPUT);
 pinMode(in2, OUTPUT);

}

void loop() {

 if (digitalRead(ONPinled2) == HIGH) {
  digitalWrite(in1, LOW);
 digitalWrite(in2, HIGH);
 analogWrite(enA, 150);
 }

}

Co się dzieje to po podpięciu zasilania i nawet nie kliknięciu przycisku na pilocie silnik sam startuje. Klikanie przycisków nic nie daje. Podejrzewam, że trzeba pewnie coś ustawić aby arduino wiedziało, że brak wciśnięcia przycisku ustawia jego stan na LOW i wtedy nie powinno być reakcji. Dopiero wciśnięcie przycisku i jego zmiana na HIGH powinna silnik wystartować. 
Pozdrawiam i proszę o pomoc.
 
Odpowiedź
#2
Jesteś pewien, że piny tego sterownika po uruchomieniu są w stanie niskim? Może się uruchamia z napięciem VCC, a dodatkowo wciskanie przycisków jedynie zmienia stan tych pinów na przeciwny. Ewentualnie dodaj na koniec setup jakiś delay(1); by piny po wybraniu ich trybu przed odczytem zdążyły się ustawić. To nie jest dobry pilot do autka, bardziej jako zdalny sterownik oświetlenia i tym podobnych urządzeń, w dodatku jeśli choć słyszysz/widzisz ich pracę, bo nigdy nie wiadomo czy dane wciśnięcie zadziałało czy drugie wyłącza. Na początek zrealizuj też parę gotowych projektów.
 
Odpowiedź
#3
Dzięki za odpowiedź. Ogólnie projekt jest mi potrzebny do stworzenia tzw. Cable Cama (google) i chciałem sterować nim z odległości, ale chyba poddam się z arduino i spróbuję czegoś innego.
W zasadzie to podłączając mój moduł do L298N mogę sterować kierunkiem lewo/prawo, jednak prędkość jest cały czas maksymalna, więc zastanowiłem się... czego potrzebuję, żeby nią sterować? Modulatora PWM, coś co nada mi sygnał analogowy np. za pomocą potencjometru, już pal licho, nie musi być bezprzewodowy.
Spróbowalem więc z moją aparaturą do drona, odbiornikiem modelarskim wysłać sygnał do pinu PWM (enA) i zadziałało! Mogę regulować prędkość i kierunek, jednak aparatury modelarskie nie dają pełnego zakresu PWM niestety, stąd też muszę kupić coś takiego:
http://bns.com.pl/os,35886,Sterownik-PWM...a-DC-NE555

Tylko teraz pytanie,
skoro sygnał PWM w L298N jest otrzymywany za pomocą jednego kabla, a w tym sterowniku wychodzą dwa... + i - to rozumiem, że + podłączyć pod pin enA a - pod masę całego L298n?
 
Odpowiedź
#4
Nie do końca wiem o co walczysz. Mając to co masz zrobisz więcej niż z tym sterownikiem. Arduino możesz podłączyć kablem, PWM zmieniać po prostu przyciskiem. Aparatury modelarskie nie mają pełnego zakresu PWM bo pewnie z silnikami to i tak nie zadziała. Bawiłem się silniczkiem z zabawki, bez obciążenia na biurku rusza od PWM około 40%, niższe wartości przydają się jedynie przy regulacji jasności led.
Silnik DC jest sterowany napięciem, jeśli zasilasz silnik z 5V przy PWM 50%, to to samo osiągasz gdy zasilisz silnik z 2.5V. Jeśli normalnie silnik nie ruszyłby przy 2.5V to nie ruszy na 5V z PWM 50%. Po prostu PWM jest bardziej efektywne niż inne rodzaje obniżania napięcia, łatwiej sterować wypełnieniem niż zmieniać nastawy przetwornic potencjometrem, ale jak masz zamiar robić to ręcznie potencjometrem to wystarczy jakaś przetwornica DC lub ten regulator PWM.
Jak nie regulujesz kierunku w L298N to ustalasz go na sztywno podłączając odpowiednio piny do GND i VCC, a z regulatora PWM sygnał PWM do PWM i GND do GND.
 
Odpowiedź
#5
Masz rację, tylko z racji tego, że Arduino przyda mi się do innego projektu to nie mam koniec końców potrzeby go "zużywać" na ten, o którym piszemy, a chyba programowanie nie jest aż tak bardzo dla mnie... Stąd też moja zmiana, że kupię ten sterownik.
Po podłączeniu aparatury modelarskiej owszem, sygnał PWM był ograniczony (jak to z aparatury...) i zmieniał napięcie na silniku tylko w granicy 3V-7V (jakoś tak) i już przy 3v silnik zaczynał się kręcić... Jednak jako że chcę wydłużyć zasięg PWM do 100% (bo tutaj te 3-7v to tak jakby 0-60%) to kupię ten sterownik. L298 jest podpięte na 12,6V i silnik dostawał z tego co pamiętam max 10,8V przy sygnale PWM z ardu na 255.
No nic, dzisiaj pojadę kupić ten sterownik i zobaczymy jak wyjdzie, dam znać.
 
Odpowiedź
#6
Spadek 2V na sterowniku to normalna rzecz, nic nowego nie zyskasz, prąd musi przejść przez złącza krzemowe z jakimś spadkiem napięcia i zamianą energii na ciepło, tak to działa.
 
Odpowiedź
#7
Tak tak, wiem o tym. I tak daje mi to prawie 400 obr/min. czyli idealnie tyle ile potrzebuję, także nawet się tym nie przejmuję
 
Odpowiedź
#8
Dobra, to tak. Kupiłem regulator PWM z potencjometrem, taki o:
https://abc-rc.pl/product-pol-9390-Modul...ow-DC.html
Podłączyłem kabel PWM pod port EnA w L298N. 
Napięcie na PWM wynosi cały czas 5V po wyjściu z regulatora (czyli tak jak powinno być) Problem jest taki, że nawet jak potencjometr jest w stanie wyłączonym (czyli daje ok. 0V (dokładnie 0,07V) silnik po wciśnięciu przycisku na nadajniku kręci się z pełną mocą w jedną stronę. Z drugim przyciskiem w drugą stronę...
Nie wiem co robię źle, skoro moduluję za pomocą PWM współczynnik wypełnienia (czyli chyba tak samo jak arduino?) a za pomocą pilota "odblokowuję" działanie silnika (zmieniam stan np.in1 na HIGH) to dlaczego silnik kręci się na maksa, a nie z określoną przez współczynnik wypełnienia z regulatora prędkością?

Wydaje się to trochę kuriozalne, ale gdy odepnę kompletnie regulator PWM, czyli do pinu EnA (PWM) na L298N dochodzi 0V (dokładnie 0V, bo z powietrza się nie bierze) to silnik nie reaguje na przycisk, a jak regulator jest podłączony i idzie do niego przy wyłączonym potencjometrze 0,07V to już reaguje na przycisk? 
Dorzucam mały rysunek pokazujący jak to jest mniej więcej połączone. Proszę nie zwracać uwagi na regulator bo nie było go w bibliotece, bateria ma 12V a nie 3,7V, a odbiornik jest jako notatka...

Naprawdę wiem, że pewnie lepiej byłoby to zrobić z arduino, ale zanim dostanę drugą sztukę lecącą z Chin to chciałbym załatwić sprawę w ten sposób.
   
 
Odpowiedź
#9
Kupiony moduł PWM służy do sterowania silnikiem, a nie sterowania sterownikiem silnika. Ten duży kondensator jest po to by uśrednić to co daje PWM, np. jak masz 5V z 50% wypełnieniem to z drugiej strony dostaniesz 2.5V z w miarę ------- płaskim przebiegiem napięcia. To znaczy, że cały czas wystawiasz 1 na PWM.
Myślałem, że chcesz sterować silnikiem w taki sposób, że pokrętłem ustawiasz sobie prędkość, a sterownikiem bezprzewodowym włączasz/wyłączasz napięcie po stronie zasilającej.
 
Odpowiedź
  


Skocz do:


Przeglądający: 1 gości