Skocz do zawartości

Arduino i spadek napiecia podczas używania 2 wyjsc cyfrowych


Gość McMarycha

Pomocna odpowiedź

Mam mały problem z Arduino (mmduino)

Robie samochodzik sterowany przez bluetooth, sterowanie silnikami poprzez mostek H.

Jednak gdy samochodzik jedzie prosto to wszystko jest ok, ale gdy zaczyna jednoczesnie skrecac to drastycznie zwalnia w zasadzie to gdy stoi na kolach, to kola nawet nie skrecaja bo jest tak niskie napiecie.

Po sprawdzeniu mostka H i podstawieniu drugiego do sterowania 2 para silnikow dalej to samo. Nawet gdy odlaczylem od arduino os skretna to podczas wykorzystania 2 wyjsc cyfrowych na raz jest spadek napiecia.

Idzie cos z tym zrobic ? Aby na sygnal input 1 dalej szlo te 5v przy wykorzystaniu 2 wyjsc na raz.

Link do komentarza
Share on other sites

Coś jest nie tak z Twoim układem. Załączenie dwóch wyjść cyfrowych do niczego nie podłączonych nie ma prawa tak obniżać napięcia.

Pokaż dokładny schemat i kod programu...

Link do komentarza
Share on other sites

Gość
#include "Arduino.h"

char val;                                                 
int mpin1 = 8;                              
int mpin2 = 9;                              
int mpin3 = 12;                              
int mpin4 = 13;                              

void setup() {

 pinMode(mpin1, OUTPUT);                     
 pinMode(mpin2, OUTPUT);                     
 pinMode(mpin3, OUTPUT);                     
 pinMode(mpin4, OUTPUT);                     
 Serial.begin(9600);                                               

}

void loop() {

 if( Serial.available() )                                      
 {
   val = Serial.read();                                         
 }

 if( val == 'G' )
 {
   digitalWrite(mpin1, HIGH);
   digitalWrite(mpin3, HIGH);
 } 
 if( val == 'L' )
  {
   digitalWrite(mpin3, HIGH); 
 }  else
 {
   digitalWrite(mpin3, LOW);
 }

  if( val == 'F')
 {
   digitalWrite(mpin1, HIGH);
 } else
 {
   digitalWrite(mpin1, LOW);
 } 
    if( val == 'I' )
 {
   digitalWrite(mpin1, HIGH);
   digitalWrite(mpin4, HIGH);
 } 
 if( val == 'R' )
  {
   digitalWrite(mpin4, HIGH); 
 }  else
 {
   digitalWrite(mpin4, LOW);
 }

  if( val == 'F')
 {
   digitalWrite(mpin1, HIGH);
 } else
 {
   digitalWrite(mpin1, LOW);
 } 
   if( val == 'B' )                                     
 {
   digitalWrite(mpin2, HIGH);             
 } else { 
   digitalWrite(mpin2, LOW);                           
 }
 if( val == 'L' )                                     
 {
   digitalWrite(mpin3, HIGH);             
 } else { 
   digitalWrite(mpin3, LOW);                           
 }
 if( val == 'R' )                                     
 {
   digitalWrite(mpin4, HIGH);             
 } else { 
   digitalWrite(mpin4, LOW);                           
 }

} 

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

Gość

Podłączenie Enable pod zasilanie arduino nic nie dało, wciąż tak samo.

Link do komentarza
Share on other sites

Gość

Sprawdzone na drugim arduino (mmduino) i tak samo, Podłączajac diodę led pod wyjscie 8 swieci, ale przygasa gdy tylko uaktywnia się inny pin.

Link do komentarza
Share on other sites

Spróbuj do każdego if'a dopisać co ma się dziać z pozostałymi diodami. Jeśli tylko jedna ma się świecić, dopisz jeszcze, że pozostałe diody mają być w stanie niskim.

Link do komentarza
Share on other sites

Zastanow sie dokladnie jak dziala Twoj program, a jak chcialbys zeby dzialal.

W kazdym wyrazeniu, sprawdzasz odebrana literke. Jesli jest powiedzmy 'G' to ustawiasz pin, ale jesli to cokolwiek innego, zerujesz. Poniewaz val nie moze na raz spelniac wielu warunkow, wiec pozostale wykonuja swoja czesc else. Czyli wiekszosc pinow i tak bedzie miala ciagle zera.

Kolejny blad to ciagle sterowanie pinami - nawet jesli nic nie przyszlo. Zmienna val bedzie miala poprzednia wartosc, wiec if-y beda wykonywane az do odenbrania nowej wartosci.

[ Dodano: 14-05-2015, 10:57 ]

Ostatnie 4 wyrazenia - dla F, B, L, R sprawiaja, ze wszystko co program wczesniej zrobil i tak nie ma znaczenia.

Ich czesci else zeruja wszystkie piny, wiec jesli nawet otrzymano inna komende, piny zostana w koncu wyzerowane.

Link do komentarza
Share on other sites

Gość
Halo wejście enable nie jest podłączone.

Napisałem wyżej ze podłączyłem Enable pod 5V arduino.

Może zacznij od poprawy tego.

A co dokładnie jest z tym nie tak ?

Zastanow sie dokladnie jak dziala Twoj program, a jak chcialbys zeby dzialal.

W kazdym wyrazeniu, sprawdzasz odebrana literke. Jesli jest powiedzmy 'G' to ustawiasz pin, ale jesli to cokolwiek innego, zerujesz. Poniewaz val nie moze na raz spelniac wielu warunkow, wiec pozostale wykonuja swoja czesc else. Czyli wiekszosc pinow i tak bedzie miala ciagle zera.

Kolejny blad to ciagle sterowanie pinami - nawet jesli nic nie przyszlo. Zmienna val bedzie miala poprzednia wartosc, wiec if-y beda wykonywane az do odenbrania nowej wartosci.

Spróbuj do każdego if'a dopisać co ma się dziać z pozostałymi diodami. Jeśli tylko jedna ma się świecić, dopisz jeszcze, że pozostałe diody mają być w stanie niskim.

Napisałem coś takiego, skręca trochę słabiej w prawo, ale to chyba wina samochodu. Sam kod mam nadzieję ze jest w miarę poprawny.

#line 1 "rc_model_v1.ino"
#include "Arduino.h"
void setup();
void loop();
#line 1
char val;                                                 
int mpinf = 10;                              
int mpinb = 11;                              
int mpinr = 12;                              
int mpinl = 13;                              

void setup() {

 pinMode(mpinf, OUTPUT);                     
 pinMode(mpinb, OUTPUT);                     
 pinMode(mpinr, OUTPUT);                     
 pinMode(mpinl, OUTPUT);                     
 Serial.begin(9600);                                               

}

void loop() {

 if( Serial.available() )                                      
 {
   val = Serial.read();                                         
 }
 if( val == 'S' )
 {
   digitalWrite(mpinf, LOW);
   digitalWrite(mpinb, LOW);
   digitalWrite(mpinr, LOW);
   digitalWrite(mpinl, LOW);
 }
 if( val == 'F' )
 {
   digitalWrite(mpinf, HIGH);
   digitalWrite(mpinb, LOW);
   digitalWrite(mpinr, LOW);
   digitalWrite(mpinl, LOW);
 }
   if( val == 'B' )
 {
   digitalWrite(mpinf, LOW);
   digitalWrite(mpinb, HIGH);
   digitalWrite(mpinr, LOW);
   digitalWrite(mpinl, LOW);
 }
   if( val == 'R' )
 {
   digitalWrite(mpinf, LOW);
   digitalWrite(mpinb, LOW);
   digitalWrite(mpinr, HIGH);
   digitalWrite(mpinl, LOW);
 }
   if( val == 'L' )
 {
   digitalWrite(mpinf, LOW);
   digitalWrite(mpinb, LOW);
   digitalWrite(mpinr, LOW);
   digitalWrite(mpinl, HIGH);
 }

   if( val == 'G' )
 {
   digitalWrite(mpinf, HIGH);
   digitalWrite(mpinl, HIGH);
   digitalWrite(mpinb, LOW);
   digitalWrite(mpinr, LOW);
 } 
   if( val == 'I' )
 {
   digitalWrite(mpinf, HIGH);
   digitalWrite(mpinr, HIGH);
   digitalWrite(mpinb, LOW);
   digitalWrite(mpinl, LOW);
 }
     if( val == 'H' )
 {
   digitalWrite(mpinf, LOW);
   digitalWrite(mpinb, HIGH);
   digitalWrite(mpinr, LOW);
   digitalWrite(mpinl, HIGH);
 }
     if( val == 'J' )
 {
   digitalWrite(mpinf, LOW);
   digitalWrite(mpinb, HIGH);
   digitalWrite(mpinr, HIGH);
   digitalWrite(mpinl, LOW);
 }
} 
Link do komentarza
Share on other sites

Czy aby przypadkiem GND z baterii nie powinno być podłączone z GND Arduino?

Jeśli chcesz uzyskać szybko pomoc to proponuję narysować schemat twoich połączeń. Wtedy będzie wszystko wiadomo.

Pozdrawiam!

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.