Skocz do zawartości

Kurs Arduino - #8 - Sterowanie silnikami DC, pętla for


Komentator

Pomocna odpowiedź

Przesyłam zdjęcia mojego układu oraz schematu(który został przeze mnie poprawiony):

IMG_55fc0a417cafe3142.jpg

IMG_55fc0aab500784914.jpg

Ogólnie rzecz biorąc nastąpił postęp, ponieważ silnik zaczął reagować,ale nie w pełni.

Silnik wykonuje obrót na 3 sekundy prawo , następnie w lewo, prawo i robi sobie "odpoczynek" na trzy sekundy. Ilość cykli natomiast się zmienia. Czasami odpoczynek następuję już po dwóch cyklach, a czasami po czterech. Zauważyłem również,ze jak podłącze silnik, to diody gasną na płytce prototypowe,a także dioda na arduino zaczyna słabiej swiecić. Silnik podłączony jest niebieskim oraz pomarańczowym przewodem zaznaczonym na zdjęciu.

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

Podłącz silniczek bezpośrednio do baterii i gdy będzie się kręcił, zmierz na niej napięcie. Następnie zatrzymaj go palcami i ponownie zmierz napięcie. Zastanów się, jakie minimalne napięcie wejściowe potrzebuje arduino do poprawnego działania i co możesz zrobić z tym fantem.

Albo na skróty: zamień baterię na chociażby paluszki 😉

Link do komentarza
Share on other sites

szejkop, dziękuję za zwrócenie uwagi na ten błąd w połączeniu. Już poprawiłem w artykule.

Co do Twojego przypadku, to faktycznie problemem może być zbyt słabe zasilanie. Bateria 9V sprawdzi się tylko przy bardzo małych silnikach. Dodaj sobie w sekcji setup jakieś mignięcie diodą, wtedy będziesz mógł bardzo łatwo zobaczyć, czy procesor się resetuje podczas pracy silnika.

Link do komentarza
Share on other sites

Postanowiłem zrobić tak jak doradziliście, podłączyłem diodę i dopisałem w setup kod programu oznaczającą inicjalizację programu. Procesor nie restartuje się... dioda świeci tylko raz, a sam silnik wykonuje owe "odpoczynki"po określonej liczbie cykli. Zmodyfikowałem jednak kod programu i ustawiłem, aby silnik stale kręcił się w prawo - zero reakcji... Tak samo jest w przypadku z lewą stroną. Kilka razy wgrywałem program i zauważyłem, że czasami wał silnika wykona obrót o 10 stopni i na tym koniec, kiedy natomiast podłączam go bezpośrednio do baterii 1.5V, działa bez zarzutu.

Link do komentarza
Share on other sites

Po modyfikacji programu( wal silnika kreci tylko w jednym kierunku) silnik nie startuje. Przewody musialy stykac, poniewaz nie bylo zadnych wibracji pochodzacych z obrotu - silnik od poczatku juz nie reagowal. A uklad dzialal, poniewaz dioda swiecila sie na stale.

Link do komentarza
Share on other sites

graps, przecież są schematy montażowe oprócz zdjęć, łatwiej chyba się nie da 😉?

Nie wydaje mi się, aby użytkownicy Arduino chętnie korzystali ze zwykłych schematów, ale dzięki za sugestię.

Link do komentarza
Share on other sites

Treker, Elektronika otrzymała u mnie drugą młodość po kilkunastoletniej przerwie.

Jak widzę, dużo się zmieniło ( na lepsze ), ale schemat to coś co każdy elektronik powinien umieć czytać.

Schematy bardzo, bardzo ułatwia życie (analizę czy nawet w edukacji tłumaczenie różnych zjawisk ). Dlatego pierwsze czego szukałem to schematu tego układu. Ale poradzimy sobie korzystając z schematu montażowego.

Dzięki

Link do komentarza
Share on other sites

graps, jeśli miałeś już z tym do czynienia, to nie dziwię się, że szukałeś schematów. Jednak taka prawda, że na Arduino najczęściej pojawiają się jednak wyłącznie schematy montażowe.

Link do komentarza
Share on other sites

Zadanie 8.4 zrobione dla dwóch "silników" wraz ze zmianą kierunku "obrotu".

void setup() 
{
pinMode(6, OUTPUT); // sterowanie predkoscia silnika 1
digitalWrite(6, HIGH);
pinMode(5, OUTPUT);
digitalWrite(5, HIGH); // sterowanie predkoscia silnika 2
pinMode(7, OUTPUT);
pinMode(8, OUTPUT);
pinMode(12, OUTPUT);
pinMode(13, OUTPUT);

}

void loop() 
{
 digitalWrite(7, LOW); //Silnik nr 1 - obroty w lewo
 digitalWrite(8, HIGH);
 digitalWrite(12, LOW); //Silnik nr 2 - obroty w lewo
 digitalWrite(13, HIGH);
 for (int i = 0; i <= 255; i++) //rozpedzanie
   {
   analogWrite (6,i);
   analogWrite (5,i);
   delay(30);
   }
  for (int j = 255; j >= 0; j--) //zwalnianie
   {
   analogWrite (6,j);
   analogWrite (5,j);
   delay(30);
   }
  digitalWrite(7, HIGH); //Silnik nr 1 - obroty w prawo
  digitalWrite(8, LOW);
  digitalWrite(12, HIGH); //Silnik nr 2 - obroty w prawo
  digitalWrite(13, LOW);
  for (int i = 0; i <= 255; i++) //rozpedzanie
    {
    analogWrite (6,i);
    analogWrite (5,i);
    delay(30);
    }
  for (int j = 255; j >= 0; j--) //zwalnianie
    {
    analogWrite (6,j);
    analogWrite (5,j);
    delay(30);
    }
}

Przy wgrywaniu programu dioda udająca obroty w prawo drugiego silnika miga. Z czego to wynika?

Drobne uwagi techniczne:

1. W schemacie mostka jest Vs i Vss, w opisie w artykule Vc i Vcc.

2.

Zadanie domowe 8.2

Napisz program, który za pomocą pętli for będzie migał diodą tyle 5 razy.(...)

A nie tylko?

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.