• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
SMARS- zasilanie arduino Vin Gnd
#1
Cześć, chciałem sobie zrobić takiego oto robota. Podłączyłem wszystko według tego schematu:

[/url]
[Obrazek: 35646189_1978617645543864_54361436971398...e=5BBA00CF]

Jednak nie działa. Dioda na płytce L293D świeci, na arduino również ale bardzo słabo i nic się dzieje dopóki nie podłącze zasilacza lub usb do arduino, wtedy wszystko działa. Próbowałem z dwiema różnymi płytkami adfruit oraz na 2 różnych klonach arduino Uno, jedna na ch340 druga to Funduino Uno. Używałem też [url=https://fr.aliexpress.com/item/L298P-Motor-Driver-Module-H-bridge-Drive-Shield-Expansion-Board-High-Power-DC-Stepper-Motor-Controller/32829624110.html?spm=a2g0w.search0204.3.20.0c9wS7&ws_ab_test=searchweb0_0,searchweb201602_1_10152_10151_10065_10344_10068_10342_10343_10340_10341_10084_10083_10613_10305_10304_10615_10307_10614_10306_10302_10059_10314_10184_10534_100031_10604_10103_10142,searchweb201603_40,ppcSwitch_5_ppcChannel&algo_expid=fff51d57-4619-410a-a347-78211a32184d-2&algo_pvid=fff51d57-4619-410a-a347-78211a32184d&priceBeautifyAB=0]takiej
płytki ale efekt był ten sam, działa tylko gdy podłączę arduino osobno do zasilania. Bateria jest ok, próbowałem też zasilać to zasilaczem 9V 1A.

Kody, których używam:
Kod:
#include <AFMotor.h"> //import your motor shield library
AF_DCMotor motor1(1); // set up motor1. motor1 is the name, and (1) is the port
AF_DCMotor motor2(2); // set up motor2. motor2 is the name, and (2) is the port
#define trigPin 7 // define the pins of your sensor
#define echoPin 6

void setup() {
motor1.setSpeed(255); //set the speed of the motors, between 0-255
motor2.setSpeed (250);

Serial.begin(9600); // begin serial communitication
pinMode(trigPin, OUTPUT);// set the trig pin to output (Send sound waves)
pinMode(echoPin, INPUT);// set the echo pin to input (recieve sound waves)
}

void loop() {
long duration, distance; // start the scan
digitalWrite(trigPin, LOW);
delayMicroseconds(2); // delays are required for a succesful sensor operation.

digitalWrite(trigPin, HIGH);
delayMicroseconds(10); //this delay is required as well!

digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);

distance = (duration/2) / 58.2;// convert the distance to centimeters. 29.1
delay (50);

motor1.run(BACKWARD);
motor2.run(FORWARD);
Serial.print ("distance");

if (distance < 10)/*if there's an obstacle 10 centimers, ahead, do the following: */ {

Serial.print ("distance");

motor1.run(FORWARD);
motor2.run(FORWARD);
}
}

i ten z bluetooth

Kod:
#include <SoftwareSerial.h>

SoftwareSerial HC06(0, 1); // RX, TX
const char DOUT_LED = 2;
String messageRecu;

//MOTEUR//
int E1 = 10;
int M1 = 12;                                                                    // moteur de gauche
int E2 = 11;
int M2 = 13;                                                                    // moteur de droite
int value = 255 ;
int none = 0;

//IR SENSOR//
const char DOUT_TRIGGER = 7;                                                    //Vert
const char DIN_ECHO = 6 ;                                                       //Bleu
int distance;

void setup() {
 Serial.begin(9600);
 HC06.begin(9600);
 pinMode(DOUT_LED, OUTPUT);
 digitalWrite(DOUT_LED, LOW);
 pinMode(M1, OUTPUT);                                                            // Moteur de gauche
 pinMode(M2, OUTPUT);                                                            // Moteur de droite
 pinMode(DOUT_TRIGGER, OUTPUT);                                                  // Sonde sorti
 pinMode(DIN_ECHO, INPUT);                                                       // Sonde entré

}

void loop()
{
     while(HC06.available())
   {
     delay(3);
     char c = HC06.read();
     messageRecu += c;
   }

   if (messageRecu.length() >0)
   {
     Serial.println(messageRecu);

     {  Serial.println("Stop");
       digitalWrite(M1,HIGH);
       digitalWrite(M2,HIGH);
       analogWrite(E1, none);
       analogWrite(E2, none);
     }

     if (messageRecu == "Avance")
       {
         Serial.println("Avance");
         digitalWrite(M1,LOW);
         digitalWrite(M2,LOW);
         analogWrite(E1, value);
         analogWrite(E2, value);
       }

     if (messageRecu == "Recule")
       {
         Serial.println("Recule");
         digitalWrite(M1,HIGH);
         digitalWrite(M2,HIGH);
         analogWrite(E1, value);
         analogWrite(E2, value);
       }

     if (messageRecu == "Droite")
         {
           Serial.println("Droite");
           digitalWrite(M1,HIGH);
           digitalWrite(M2,LOW);
           analogWrite(E1, value);
           analogWrite(E2, value);
         }

     if (messageRecu == "Gauche")
         {
           Serial.println("Gauche");
           digitalWrite(M1,LOW);
           digitalWrite(M2,HIGH);
           analogWrite(E1, value);
           analogWrite(E2, value);
         }

     if (messageRecu == "Stop")
         {
           Serial.println("Stop");
           digitalWrite(M1,HIGH);
           digitalWrite(M2,HIGH);
           analogWrite(E1, none);
           analogWrite(E2, none);
         }

     messageRecu="";
   }
}
 
Odpowiedź
#2
Bateria 9V i silniki? Raczej niedobry pomysł.
Nawet bez obciążenia silnikami bateria nie bardzo się nadaje. Sprawdź jakie masz napięcie na baterii gdy podłączysz Arduino. Sprawdź w nocie jakie minimalne napięcie jest wymagane przez stabilizator. Porównaj wydajność pradową baterii i USB. Po tym wszystkim dowiesz sie dlaczego to nie chce działać.
 
Odpowiedź
#3
Do uruchomienia dla testu 9V jest OK, natomiast rozwiązanie znalazłeś sam, skąd pomysł że zasilać UNO będziesz z jego shield? Pokazane na rysunku zasilanie do pinów pewnie jest tylko dla silników, normalnie podłącz drugie zasilanie do UNO.
 
Odpowiedź
#4
Załóż Vin Jumper.
Jeśli masz problem z kodem lub sprzętem, zadaj pytanie na forum. Nie odpowiadam na PW, jeśli nie dotyczą one spraw forum lub innych tematów prywatnych.

[Obrazek: SsIndaG.jpg]
 
Odpowiedź
#5
Innym ten robocik działa na tej baterii, jakiego zasilania więc potrzebuję? Druga sprawa czy da się zasilić arduino podpinając się pod jakieś piny np. VIN i GND, czy tylko pod gniazdo DC lub USB? I gdzie jest ten Vin Jumper? Na shieldzie mam zworkę założoną. Po podpięciu na baterii mam 8,8V
 
Odpowiedź
#6
(24-06-2018, 07:41)Rafix095 napisał(a): Innym ten robocik działa na tej baterii, jakiego zasilania więc potrzebuję?
Jak długo działa?
Bateria 9V ma przeważnie wydajność 100..200mA. Baterie te charakteryzują sie dużą rezystancją wewnętrzną. Pod większym obciążeniem nacięcie gwałtownie maleje. Samo Arduino pobiera prąd ok 150mA. Oznacza to, że na takiej baterii samo Arduino będzie działać ok godziny.
Napięcie 8,8V ale gdy silniki nie pracują. Gdy zaczną pracować i beda obciążone napięcie spadnie.
Na jakie napięcie sa silniki?
Jaki pobierają prąd?
Jak długo robot ma działać?

Przypuśćmy, że silniki pobierają po 100mA. Arduino też 100mA. Wydajność baterii 100mA. Czas działania ok 20 minut. Niestety, w tej matematyce jest błędne założenie, że bateria ma zerową rezystancję wewnętrzną a tak nie jest. Może się okazać, że po obciążeniu pradem 300mA napięcie na baterii spadnie do 7 czy 6 woltów. Pojawią się następne pytania.
Jakiego typu jest stabilizator 5V?
Jaki jest wymagany spadek napięcia pomiędzy Vin a Vout?

Nie da sie odpowiedzieć na typanie "jakie powinno byc zasilanie" bez znajomości poboru prądu przez silniki i wymaganego czasu pracy robota. Odpowiadając "w ciemno" widzę dwa rozwiązania:
- Zasilanie z akumulatora 3,7 czy ogniw 4,5V bezpośrednio na uC w Arduino. Wywalić stabilizator 3,3V, który tylko niepotrzebnie pobiera prąd. Usypać uC kiedy tylko się da. Silniki naturalnie na napięcie dostosowane do zasilania. Wywalić płytkę z L298 i dać coś nowszego z MOS. L298 ma spory spadek napięcia i sporą część mocy zamienia w ciepło.
- Zasilić z akumulatora 12V. Stabilizator 5V na Arduino zastąpić stabilizatorem impulsowym. W tym przypadku także wskazana wymiana L298.
 
Odpowiedź
#7
Na tej płytce masz stabilizator. Zmierz na nim napięcie. Sprawdź czy jest połączenie od stabilizatora do jumpera i od jumpera do Vin.
Jeśli masz problem z kodem lub sprzętem, zadaj pytanie na forum. Nie odpowiadam na PW, jeśli nie dotyczą one spraw forum lub innych tematów prywatnych.

[Obrazek: SsIndaG.jpg]
 
Odpowiedź
  


Skocz do:


Przeglądający: 1 gości