Skocz do zawartości
BaxterJR

Zasilanie Arduino jednocześnie z 12V i USB

Pomocna odpowiedź

Przepraszam . Chyba dopiero po feriach damy znać .

Udostępnij ten post


Link to post
Share on other sites

Odłączyliśmy 2 silniki, podłączyliśmy pod mostek i napisaliśmy program:

#define LEFT     0
#define RIGHT    1

void setup() {

  pinMode(5, OUTPUT);
  pinMode(6, OUTPUT);
  pinMode(7, OUTPUT);
  
  pinMode(10, OUTPUT);
  pinMode(11, OUTPUT);
  pinMode(12, OUTPUT);

}

void loop() {
  
  startMotor(LEFT, 255, 5, 6, 7);
  delay(2000);
  stopMotor(5, 6, 7);
  delay(500);
  startMotor(RIGHT, 255, 5, 6, 7);
  delay(2000);
  stopMotor(5, 6, 7);
  delay(500);
  startMotor(LEFT, 255, 10, 11, 12);
  delay(2000);
  stopMotor(10, 11, 12);
  delay(500);
  startMotor(RIGHT, 255, 10, 11, 12);
  delay(2000);
  stopMotor(10, 11, 12);
  
}


void startMotor (boolean dir, uint8_t _speed, int pin_pwm, int pin_silnikA, int pin_silnikB) {

    if(dir) {
      
      digitalWrite(pin_silnikA, LOW);
      digitalWrite(pin_silnikB, HIGH);
      analogWrite(pin_pwm, _speed);
      
      }
    else {

      digitalWrite(pin_silnikB, LOW);
      digitalWrite(pin_silnikA, HIGH);
      analogWrite(pin_pwm, _speed);
      
      }
  }

void stopMotor(int pin_pwm, int pin_silnikA, int pin_silnikB) {

      digitalWrite(pin_silnikA, LOW);
      digitalWrite(pin_silnikB, LOW);
      analogWrite(pin_pwm, 0);
      
  
  }

Ramię zachowuje się dość nieprzewidywalnie. Prąd jaki wychodzi z mostka to 5V oraz 0,5 A  +/-, zasilacz mamy 6V 1A. Ramię na początku działa normalnie, a po chwili jeden silnik przestaje w ogóle działać, a drugi obraca się w jedną stronę.

Udostępnij ten post


Link to post
Share on other sites

Jesteś w sytuacji typowej dla każdego konstruktora: coś zbudowałeś, oczekiwania były spore a urządzenie nie działa poprawnie. Coś jest więc nie tak i zachodzą zjawiska których nie przewidziałeś i których nie widzisz. Zwyczajnie musisz je odkryć - tak robi każdy kto idzie nową (dla siebie) ścieżką. Zacznij od początku planując kroki, które po kolei będą potwierdzać poprawność czegoś, na czego podstawie będziesz mógł wykonać następne. Prawdopodobnie na którymś etapie znajdziesz przyczynę problemów. Zatem:

Wbuduj w Arduino mechanizm upewniający Cię, że w trakcie pracy programu nie doszło do "zagłodzenia" procesora, spadku jego zasilania i restartu programu. Najprostsze to zapalenie diodki LED (ten wbudowanej w płytkę) np. na 0.5 sekundy zaraz po starcie programu (jeszcze w setup). Wtedy powinna zapalić się tylko raz po włączeniu a jej błyśnęcie w czasie pracy silników będzie oznaczało, że procek dostał po głowie i program - żeby nie wiem jak wyrafinowany - nie ma szans działać poprawnie.

Napisz prostszy program. Zacznij od jednego silnika, jednej prędkości i prostego ruchu: np. 1 sekunda w jedną stronę, sekunda przerwy, sekunda powrotu i znów sekunda przerwy. Pamiętaj, że w zasadzie nie wolno zmieniać kierunku "w locie", na pracującym silniku. Zawsze musisz poczekać na jego zatrzymanie. Puść to, niech chodzi a Ty przez kilka minut obserwuj zachowanie ramienia, mechaniki, obciążaj to czymś lekko, zmierz napięcia, prądy, kontroluj tempraturę zasilacza, stabilizatorów itp. To pierwszy test upewniający, że przynajmniej jeden silnik może chodzić dowolnie długo i nie zawala systemu zasilania ani sterowania. 

Potem wprowadzaj kolejne rozbudowy, za każdym razem upewniając się, że wszystko działa OK. To może być drugi silnik - taki sam ruch jak pierwszego i znów kilka minut pracy wahadłowej. Tym razem startują już dwa silniki więc i obciążenia systemu są dwa razy większe. Pamiętaj, że silnik pobierający normalnie 0.5A, podczas startu potrzebuje kilka razy więcej prądu (np. 3A). Jeżeli dostarczasz 6V to margines na "zapad" jest bardzo mały i start napędu może być tym kluczowym momentem gdy wysiada zasilanie. Jeśli tak się dzieje i widzisz RESETy komputerka, dziwną ospałość silników lub zwyczajnie zmierzysz spadki napięć na szynie 6V, to potwierdź to. Wystarczy zmienić program tak, by nie ruszał "z kopyta" od zera do 100% a powoli zmieniał PWM w czasie np. 1 sekundy. Jeśli to pomoże już wiesz, że to prąd rozruchowy i musisz wymienić zasilacz na mocniejszy. Swoją drogą od razu Ci powiem, że do takiego ramienia i tylu napędów to szacowałbym potrzebną wydajność na 8-10A właśnie z uwagi na prądy startowe. Musisz być pewien przyczyn i skutków, bo z powierzchownych obserwacji możesz wyciągać ruskie wnioski (mucha ogłuchła..). Rozpisz sobie plan badań i konsekwentnie go realizuj za każdym razem notując co zauważyłeś. Nie udawaj, że w danym kroku wszystko działa dopóki na 100% nie masz pewności, że tak jest. W końcu dojdziesz przyczyn problemów a przy okazji dobrze zrozumiesz działanie projektu i jego ograniczenia. Tak się robi niezalezanie od tego czy robisz zabawkę na Arduino czy profesjonalny sprzęt. Żaden nietrywialny projekt nie działa w 100% od razu. Do roboty.

  • Lubię! 1

Udostępnij ten post


Link to post
Share on other sites

Ślicznie dziękuję Tego nam potrzeba. Będziemy się dzielić  postępami.

Udostępnij ten post


Link to post
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!

Gość
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...