Skocz do zawartości

Arduino piszczy przy wgraniu kodu


Pomocna odpowiedź

Cześć.

Płytka którą pokazałeś to shield do prototypowania. Tyle, że po stronie dolnej źle wlutowane są piny. Przyłóż ją do Arduino z zobaczysz, że zewnętrzne otwory dokładnie pasują do złączy w płytce bazowej. Trzeba dolutować piny w tych miejscach, a to co aktualnie wystaje usunąć.

Ja stosuję w moich robocikach cztery akumulatory AA NiMH. Dają one w sumie 4,8V więc do Arduino podciągam napięcie przetwornicą a do silników podaję bezpośrednio. Jeździ mi na tym bez problemu robot na takich samych napędach jak Twoje, a nawet, od biedy, kroczy czworonóg z 12-toma serwami.

Mostek zmienić trzeba, bo ten który stosujesz na starcie zabiera Ci z 1,5V.

Zainwestuj w lutownicę i multimetr. To nie są wielkie wydatki, a łatwiej zdiagnozujesz problem i uzyskasz lepsze połączenia elektryczne. Bo takie podłączenie silników jak na zdjęciu nie ma prawa nie sprawiać problemów.

  • Pomogłeś! 1

Uwaga zabawy ciąg dalszy. Kiedy chce sprawdzic ten program, Arduino skreca w miejscu. Natomiast kiedy sprawdzam go ponownie lecz, podłaczonego do komputera - skreca dopiero jak podstawie ręke.

Jakieś pomysły?

//pin 7,8 - 1 silnik
//pin 6 PWM dla 1 silnika
//silnik 1 - prawy silnik
//pin 2,3 -2 silnik
//pin 5 to PWM dla silnika 2
//silnik 2 - lewy silnik

#define trig 12
#define echo 11

void setup() { 
 //Serial.begin(9600);
 pinMode(trig, OUTPUT);
 pinMode(echo, INPUT);
 pinMode(2,OUTPUT);
 pinMode(3,OUTPUT);
 pinMode(5,OUTPUT);
 pinMode(6,OUTPUT);
 pinMode(7,OUTPUT);
 pinMode(8,OUTPUT);

}
int y = 0;
void loop()  {   
 pomiar();
 //Serial.println(pomiar());
 delay(300);
 if(pomiar() > 15)
 {do_przodu(255);};
 if(pomiar() < 15)
 {y = random(1,3);
 if(y == 2)
 {W_PRAWO();}
 else
 {W_LEWO();}
 }

}





void do_przodu(int x)
{
 analogWrite(5, x);
 analogWrite(6, x);
 digitalWrite(8, LOW); 
 digitalWrite(7, HIGH);
 digitalWrite(3,LOW);
 digitalWrite(2,HIGH);
 delay(300);         
}

void w_prawo()
{
 analogWrite(5, 255);
 analogWrite(6, 180);
 digitalWrite(8, LOW); 
 digitalWrite(7, HIGH);
 digitalWrite(3,LOW);
 digitalWrite(2,HIGH);
 delay(700);
}

void W_PRAWO()
{  analogWrite(5,255);
 analogWrite(6,255);
 digitalWrite(8, HIGH); 
 digitalWrite(7, LOW);
 digitalWrite(3,LOW);
 digitalWrite(2,HIGH);
 delay(500);
}  

void w_lewo()
{
 analogWrite(6, 255);
 analogWrite(5, 180);
 digitalWrite(8, LOW); 
 digitalWrite(7, HIGH);
 digitalWrite(3,LOW);
 digitalWrite(2,HIGH); 
 delay(700); 
}

void W_LEWO()
{
 analogWrite(6, 255);
 analogWrite(5, 255);
 digitalWrite(8, LOW); 
 digitalWrite(7, HIGH);
 digitalWrite(3,HIGH);
 digitalWrite(2,LOW); 
 delay(500);
}

int pomiar()
{long czas, dystans;
 digitalWrite(trig,LOW);
 delayMicroseconds(2);
 digitalWrite(trig,HIGH);
 delayMicroseconds(10);
 digitalWrite(trig,LOW);
 czas = pulseIn(echo,HIGH);
 dystans = czas/58;
 return dystans;
}

[ Dodano: 27-01-2018, 22:39 ]

W skrócie podlaczony do kompa daje efekt, ale gdy go odlacze nie jest juz tak pieknie...

Arduino podłączone do PC zasilane jest z portu USB - zmieniłeś te baterie? Czujnik ultradźwiękowy jest mało precyzyjny, źle reaguje na np. krawędzie, rodzaj powierzchni, kąt pod którym znajduje się przeszkoda, rodzaj powierzchni .... No ale skoro mówisz, że ten sam program działa dobrze przy połączeniu z PC, a z baterii już nie to różnica jest tylko jedna - zasilanie.

natomiast 8 PIN zasilam Vinem a 16 - 5V

Nie rozumiem Vin połączyłeś z 8 pinem Arduino? Jeśli tak to raczej moim zdaniem źle. Pin 8 Arduino nie jest przeznaczony do "podłączania" napięcia większego niż 5V. Aż się prosi o schemat Twojego pojazdu.

"4, 5, 12, 13 – łączymy razem do masy (GND)

16 – zasilanie Vcc części logicznej (5V)

8 – zasilanie Vc silników (do 36V)"

[ Dodano: 27-01-2018, 23:34 ]

Podlaczylem dziala pieknie tylko musze funkcje skrocic czasowo

Przeczytaj to: https://forbot.pl/blog/kurs-arduino-sterowanie-silnikami-dc-petla-for-id8311

Staraj się o precyzyjne wypowiedzi - łatwiej będzie zrozumieć o co Ci chodzi. Jak widzisz pisząc pin 8 można odnieść wrażenie, że piszesz o porcie Arduino, a nie Vs (8) mostka H.

7-01-2018, 23:34 ]

Podlaczylem dziala pieknie tylko musze funkcje skrocic czasowo

Czyli problem był w bateriach? Bateria 9V nie ma dużej pojemności więc na długo nie starczy. Jak piszesz o czasie to by uniknąć rozczarowań poczytaj także koniecznie to:

https://forbot.pl/blog/kurs-arduino-ii-wielozadaniowosc-opoznienia-z-millis-id18418

Zasilanie do silników nie idzie, mam nadzieję, przez Arduino? Bo jeśli tak, to jesteś na dobrej drodze do zabicia tej płytki. Rozdziel zasilania. Osobno logika 5V a osobno silniki. Zostaw silniki na 4xAA i podłącz jednocześnie 6F22. Jeśli masz w domu Powerbanka, to możesz spróbować zasilić z niego Arduino. Pamiętaj tylko o wspólnych masach. Ja miałem ten sam problem z połączeniem dalmierza ultradźwiękowego i silników i to mimo zasilania z LiPola. Bez porządnego filtrowania, silniki wprowadzają bardzo duże zakłócenia.

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