Skocz do zawartości

Kurs budowy robotów - #4 - pierwsze programowanie


Komentator

Pomocna odpowiedź

#define L_PWM 5
#define L_DIR 4
#define R_PWM 6
#define R_DIR 9
#define LED 13

void setup() {
 //Konfiguracja pinow od mostka H
 pinMode(L_DIR, OUTPUT);
 pinMode(R_DIR, OUTPUT);
 pinMode(L_PWM, OUTPUT);
 pinMode(R_PWM, OUTPUT);

 pinMode(LED, OUTPUT);
}

void loop() {
 //Obroty silnika przez sekundę do przodu z prędkością 100
 digitalWrite(L_DIR, 0); //Ustawienie kierunku
 analogWrite(L_PWM, 100); //Ustawienie predkosci
 digitalWrite(LED, 0); //Zmiana stanu diody
 delay(1000); //Opoznienie 1 sekunda
 //Zatrzymanie silnika na sekundę
 digitalWrite(L_DIR, 0); //Ustawienie kierunku
 analogWrite(L_PWM, 0); //Wylaczenie silnika
 digitalWrite(LED, 1); //Zmiana stanu diody
 delay(1000); //Opoznienie 1 sekunda
}

Witam,

wgrałem do robota powyższy kod,  silniki jednak nie działają a dioda świeci, baterie mam wymienione na nowe, sprawdzając woltomierzem przy wyjściu pojawia się napięcie ok. 2V ale tylko gdy silnik jest odłączony, wtyczki są podłączone na pewno dobrze. 

Poprzednie ćwiczenie z buzzerem działało poprawnie.

image.thumb.png.d5636944b930cdeffe858de7e33960f1.pngimage.thumb.png.d4a78c2527b3ba1d1336ff4ef3d8d15f.png

Link do komentarza
Share on other sites

@mariobrothers witam na forum 🙂

Czy silniki wydają jakiś dźwięk? Spróbuj dla testu zdjąć koła (aby mieć pewność, że nic nie blokuje osi silników). Rozumiem, że jesteś przekonany co do poprawności podłączenia wtyczek, ale sprawdź proszę raz jeszcze czy nie popełniłeś tego lub tego błędu. Do tej pory za każdym razem, gdy pojawiał się tego typu problem, rozwiązaniem było właśnie poprawne przykręcenie przewodów. Nigdy nie wystąpił problem innego typu 😉

Link do komentarza
Share on other sites

@mariobrothers pozostaje chyba sprawdzić czy silniki działają. Widzę, że masz zestaw do kursu Arduino (poziom 1). Dasz radę podłączyć układ z koszyka baterii i stabilizatora 5V? Spróbuj wpiąć silnik bezpośrednio pod tak uzyskane 5V i zobacz czy będzie się kręcił 🙂 Alternatywnie możesz na upartego spróbować wziąć 2 baterie AA, połączyć je szeregowo i podłączyć silnik do tak uzyskanych 3V (też powinien ruszyć). Dowiemy się przynajmniej gdzie leży problem (silniki czy sterownik napędów).

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

oba silniki działają, sprawdziłem za pomocą woltomierza też jakie jest napięcie na wyjściu w sterowniku, i tak dla wypełnienia 100 (tak jak w kodzie) bez podłączenia silników  na wyjściu jest to jakieś 0,75 V, dla wypełnienia 100% to prawie 2 V, jednak przy podłączeniu silników drastycznie spada

Link do komentarza
Share on other sites

Jeśli silniki są poprawnie podłączone, zasilasz układ z 6xAA i same silniki działają to chyba trafił się niestety pierwszy w historii uszkodzony sterownik silników 😞 Napisz proszę na adres reklamacje@botland.com.pl na pewno szybko uda się wymienić shielda na nowego. Daj później znać czy faktycznie to było problemem 🙂

Link do komentarza
Share on other sites

Cześć,

U mnie chyba ten sam problem co u mariobrothers.

Wgrałem jeden z testowych programów i silniki się nie kręcą. Sprawdziłem napięcie na wejściu shielda i jest około 9.6V sprawdzam miernikiem wyjścia na silniki i na każdym jest równe zero. Podłączyłem silniki na krótko do baterii i oba się świetnie kręcą. Oczywiście zworka ustawiona na ON i świeci się dioda zasilająca silniki

aktualnie wgrany kod do arduino

 
#define L_PWM 5
#define L_DIR 4
#define R_PWM 6
#define R_DIR 9
 
void setup() {
  //Konfiguracja pinow od mostka H
  pinMode(L_DIR, OUTPUT);
  pinMode(R_DIR, OUTPUT);
  pinMode(L_PWM, OUTPUT);
  pinMode(R_PWM, OUTPUT);
}
 
void loop() {
  digitalWrite(R_DIR, 0); //Ustawienie kierunku
  analogWrite(R_PWM, 100); //Ustawienie predkosci
  delay(1000); //Opoznienie 1 sekunda
  digitalWrite(R_DIR, 0); //Ustawienie kierunku
  analogWrite(R_PWM, 0); //Wylaczenie silnika
  delay(1000); //Opoznienie 1 sekunda
}

 

  • Lubię! 1
Link do komentarza
Share on other sites

@dawidp witam na forum 🙂 Jeśli masz pewność, że podłączenie jest poprawne i nie zacisnąłeś przypadkiem złącz na izolacji to chyba faktycznie masz ten sam problem... 

W takim razie pozostaje reklamacja, bo chyba niestety trafiłeś na uszkodzony element 😞 Napisz proszę na adres reklamacje@botland.com.pl, na pewno szybko uda się wymienić element na nowy. Przepraszam za problem, mam nadzieję, że dalej obejdzie się już bez takich niespodzianek!

  • Lubię! 2
Link do komentarza
Share on other sites

Witam,

Chciałem podłączyć arduino, robota z tego kursu do Raspberry Pi 4 za pomocą kabla USB, gdyż potrzebuję aby dane z Raspberry Pi były przesyłane do arduino. Czy gdy mam włąćzone zasilanie bateryjne w robocie i stworzone połączenia USB Raspberry Pi - Arduino to czy mogę bezpiecznie używać robota?

Link do komentarza
Share on other sites

@StarZgred witam na forum 🙂 Nie testowaliśmy takiego połączenia, ale nie powinno być z tym żadnego problemu. Pamiętaj tylko o odpowiednim zasilaniu dla malinki, bo baterie z robota mogą okazać się zbyt słabe, aby zasilić RPi, Arduino oraz silniki.

Link do komentarza
Share on other sites

@Treker Bardzo dziękuję za odpowiedź. Mam jeszcze jedno pytanie, czy do zasilenia Raspberry Pi 4 mógłbym wybrać np. taki PowerBank ?

https://botland.com.pl/pl/mobilne-baterie-powerbank/10071-mobilna-bateria-powerbank-esperanza-emp111wr-boson-6000mah-bialo-czerwony.html

lub może coś takiego byłoby bardziej odpowiednie?

https://botland.com.pl/pl/raspberry-pi-hat-nakladki-zasilajace/13459-waveshare-li-ion-battery-hat-nakladka-dla-raspberry-pi.html

Jeżeli nie, to czy mógłby Pan coś polecić?

Z góry dziękuję za odpowiedź.

Edytowano przez StarZgred
Link do komentarza
Share on other sites

@StarZgred pierwsze rozwiązanie będzie na pewno bardziej eleganckie. Ciężko jednak o konkretne porady, bo nie wiem co dokładnie będzie robiło to RPi i jakiego poboru prądu się spodziewasz. Możesz też na początku wykorzystać zwykły powerbank, a później pomyśleć o jakiś "bardziej profesjonalnych" rozwiązaniach 😉

Link do komentarza
Share on other sites

#define PWM_MAX 165
#define L_PWM 5
#define L_DIR 4
#define R_PWM 6
#define R_DIR 9

void setup(){
pinMode(L_PWM,OUTPUT);
pinMode(L_DIR,OUTPUT);
pinMode(R_PWM,OUTPUT);
pinMode(R_DIR,OUTPUT);
}
void loop(){
 leftMotor(40);

 rightMotor(-40);
 delay(2000);
stopMotors; 
delay(2000);
}
void leftMotor(int V){
  if(V > 0){
    V = map(V,0,100,0,PWM_MAX);
    digitalWrite(L_DIR,0);
    analogWrite(L_PWM,V);
  }else{
    V = abs(V);
  V = map(V,0,100,0,PWM_MAX);
   digitalWrite(L_DIR,1);
    analogWrite(L_PWM,V);
    }
}
void rightMotor(int V) {
  if (V > 0) { //Jesli predkosc jest wieksza od 0 (dodatnia)
    V = map(V, 0, 100, 0, PWM_MAX);
    digitalWrite(R_DIR, 0); //Kierunek: do przodu
    analogWrite(R_PWM, V); //Ustawienie predkosci 
  } else {
    V = abs(V); //Funkcja abs() zwroci wartosc V  bez znaku
    V = map(V, 0, 100, 0, PWM_MAX);
    digitalWrite(R_DIR, 1); //Kierunek: do tyłu
    analogWrite(R_PWM, V); //Ustawienie predkosci    
  }
}
void stopMotors() {
  analogWrite(L_PWM, 0); 
  analogWrite(R_PWM, 0); 
}

Czemu po zrobieniu obrotu silniki się w ogóle nie zatrzymują.

Link do komentarza
Share on other sites

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!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • 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.