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

Anonim
#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

Anonim

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

Anonim
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

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.