Skocz do zawartości

Układ L293D i problem z zasilaniem(sterowanie silnikami)


Pomocna odpowiedź

Napisano

Witam

Mam problem z układem L293D ponieważ chciałem zrobić jeżdżącego robota i przy odległości od przeszkody poniżej 20cm powinien kierunek silnika się zmienić. program i połączenie działa ponieważ jako tako się porusza ale mam problem z zasilaniem.

Podłączyłem do urządzenia zasilanie 16v na wyjściu z L293D jest 9v i nie wiem czemu nie chcą się obracać te silniki.

Czy ktoś może mi pomóc?

Dołączam film w jaki sposób obracają się silniki.

Kod mojego programu :

#include <NewPing.h>

#define TRIGGER_PIN 2
#define ECHO_PIN 3
#define MAX_DISTANCE 400


#define E1 10  // prędkość silnika 1
#define E2 11  // prędkość silnika 2

#define I1 8  // Control pin 1 for motor 1
#define I2 9  // Control pin 2 for motor 1
#define I3 12  // Control pin 1 for motor 2
#define I4 13  // Control pin 2 for motor 2

NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE);



void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
pinMode(E1, OUTPUT);
pinMode(E2, OUTPUT);

pinMode(I1, OUTPUT);
pinMode(I2, OUTPUT);
pinMode(I3, OUTPUT);
pinMode(I4, OUTPUT);
}

void loop() {
// put your main code here, to run repeatedly:
unsigned int uS = sonar.ping();
unsigned int odleglosc = (uS / US_ROUNDTRIP_CM);
Serial.println(odleglosc);

if(odleglosc < 20 && odleglosc >1){
  analogWrite(E1, 150);
  digitalWrite(I1, HIGH);
  digitalWrite(I2, LOW);
  Serial.println("Lewo");
  delay(250);
}
else{
  //pierwszy silnik
  analogWrite(E1, 150);
  digitalWrite(I1, LOW);
  digitalWrite(I2, HIGH);
  //drugi silnik
  analogWrite(E2, 150);
  digitalWrite(I3, LOW);
  digitalWrite(I4, HIGH);

  Serial.println("Prawo");
  delay(250);
}



}

Oraz połącznie z L293D(tylko zasilanie silników jest z zewnątrz i jest zmostkowany - (uziemienie)).

1451298800_1488979178.jpg

Jeżeli do silnika rzeczywiście dochodzi 9V, zmierzyłeś napięcie multimetrem, połączenia są OK a silnik mimo to nie kręci, to go spaliłeś. Cóż, zdarza się. To bardzo delikatne silniczki. Działają już przy 3V. Za to 6V to dla nich max (wiedziałeś o tym? na pewno napisali to w instrukcji) i absolutnie nie wolno ich wtedy przeciążać, zatrzymywać, blokować itp. Zabronione są też gwałtowne zmiany kierunku tj. przełączanie lewo prawo w zerowym czasie - dokładnie tak jak robi Twój program. Ponieważ dawno przekroczyłeś te 6V a trywialny program w ogóle się nie przejmował jakimkolwiek sensownym sterowaniem, ja bym zaczął rozglądać się za nowymi, mocniejszymi i/lub poczytał coś o sterowaniu silnikami. Przy okazji możesz rozebrać te i zobaczyć jak wyglądają szczotki z cienkich blaszek i komutator - może coś zapamiętasz.

Na wszelki wypadek - jak zawsze w takich niepewnych sytuacjach podłącz silnik kabelkami bezpośrednio do jednego ogniwa LiPol. Jeśli masz tam min 3V (zmierz koniecznie z podłączonym silnikiem) a wał się nie obraca, kontynuuj destrukcję napędu w celach edukacyjnych.

Jeżeli do silnika rzeczywiście dochodzi 9V, zmierzyłeś napięcie multimetrem, połączenia są OK a silnik mimo to nie kręci, to go spaliłeś. Cóż, zdarza się. To bardzo delikatne silniczki. Działają już przy 3V. Za to 6V to dla nich max (wiedziałeś o tym? na pewno napisali to w instrukcji) i absolutnie nie wolno ich wtedy przeciążać, zatrzymywać, blokować itp. Zabronione są też gwałtowne zmiany kierunku tj. przełączanie lewo prawo w zerowym czasie - dokładnie tak jak robi Twój program. Ponieważ dawno przekroczyłeś te 6V a trywialny program w ogóle się nie przejmował jakimkolwiek sensownym sterowaniem, ja bym zaczął rozglądać się za nowymi, mocniejszymi i/lub poczytał coś o sterowaniu silnikami. Przy okazji możesz rozebrać te i zobaczyć jak wyglądają szczotki z cienkich blaszek i komutator - może coś zapamiętasz.

Na wszelki wypadek - jak zawsze w takich niepewnych sytuacjach podłącz silnik kabelkami bezpośrednio do jednego ogniwa LiPol. Jeśli masz tam min 3V (zmierz koniecznie z podłączonym silnikiem) a wał się nie obraca, kontynuuj destrukcję napędu w celach edukacyjnych.

Jeżeli chodzi o zmiany kierunku to może też racja to zmienię ale jeżeli chodzi o silniki to cały czas działają(podłączyłem je do baterii i wszystko się dobrze kręci). A producent napisał że silnik może być zasilany od 3V do 12V z czego zalecane jest 6-8 V

W takim razie podstawowy test masz za sobą a ja nie zgadłem - to też się zdarza 🙂 Teraz idziesz dalej typową ścieżką sprawdzania hardware'u podobnych układów:

- zasilanie,
- silniki,
- driver,
- logika sterująca (procesor),
- czujniki,
czyli od wyjść do wejść. A skoro silniki są sprawne, to podłączasz je do mostka, mostek prawidłowo zasilasz dwoma napięciami ale jego wejścia przypinasz drutami bezpośrednio do GND lub +5V tak, żeby uzyskać wymagane efekty stopu, pracy w lewo i prawo. Gdy to zadziała to znaczy, że i mostek jest OK. Gdy nie, zaczynasz wokół tego krążyć: mierzysz zasilania, sprawdzasz połączenia mas itp. Tu nie ma wielkiej filozofii, jeśli zbudowałeś układ którego działanie rozumiesz, nie powinieneś mieć problemu z jego uruchomieniem lub znalezieniem ew. usterki w już działającym. Pamiętaj, że w kolejnym kroku zawsze opierasz się na poprawności działania poprzednio sprawdzonych elementów. Tak więc w przypadku testu zestawu silniki+mostek+procesor piszesz ekstremalnie prosty program testowy. Żadnych czujników itp niepewnych rzeczy. Tylko zaprogramowanie kierunków linii I/O i wystawienie odpowiednich stanów na piny. To musi być coś, czego działanie daje się przewidzieć i zweryfikować multimetrem lub diodką LED z opornikiem, podłączoną do pinu procka. W ten sposób upewniasz się, że sygnały generowane w ATmega są OK i dostają się do mostka - musisz to mierzyć/potwierdzać bezpośrednio na jego pinach. Zauważ, że w skład zestawu wchodzi także płytka stykowa - kilkaset beznadziejnych blaszek, których nawet delikatne rozgięcie lub zabrudzenie końcówką opornika powoduje nieodwracalne problemy z kontaktowaniem. W ramach samoedukacji rozmontuj ją kiedyś i popatrz jak wygląda w środku.

W ten sposób, drobiazgowo i planowo sprawdzając każdy element po kolei, bez problemu dojdziesz co jest nie tak. W końcu nie jest to, bądźmy szczerzy, jakaś kosmiczna technologia, prawda? Napisz nam o wynikach, też jesteśmy ciekawi co zawiodło 🙂

Acha, i podając jakieś szczegóły swoich elementów (np. silników) wskazuj dokładnie typ a najlepiej link do dokumentacji lub strony sklepu/producenta. Wtedy można zweryfikować liczby i odnieść się do konkretów. Ja mam raczej złe doświadczenia z tego typu silnikami, ale może miałem pecha. W każdym razie na pewno puszczanie napędów przy zatrzymanym podwoziu nikomu dobrze nie robi. Czy to mniej więcej ten typ?

https://botland.com.pl/kola-dagu/3696-kolo-silnik-65x26mm-5v-z-przekladnia-481.html

Ciągną mało prądu (i dlatego pasują do tego żałosnego L293) - to jedyna ich zaleta. Wszystko inne wygląda i działa tak jak kosztuje: plastikowa przekładnia, słabe szczotki, szybkie zużycie itd. Cieszę się, że Twoje przeżyły 🙂

I jeszcze: jeśli podłączasz główne zasilanie do Arduino, to prąd silników (wielokrotnie większy niż pobiera cała niebieska płytka) płynie przez kabelek od Arduino (to od Vin) do mostka, przez silnik i wraca przez połączenie masy. Jeśli którykolwiek z tych elementów będzie niepewny (w szczególności kabelek masy bo względem niej mostek "widzi" sygnały logiczne) nic nie zadziała. Radziłbym podpiąć akumulatory tuż przy mostku, przy jego Vcc2 i GND. Wtedy kabelki i połączenia do Arduino są dużo słabiej obciążane.

-----------------------------

EDIT: Nie cytuj całych postów. Rozumiemy komu odpowiadasz.

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