Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki



Teraz jest 22 lis 2024, o 04:55


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 7 ] 
Autor Wiadomość
PostNapisane: 26 lis 2014, o 19:01 
Offline
Nowy

Dołączył(a): 16 lis 2014
Posty: 6
Pomógł: 0

Witam!
Od kilku dni tworzymy ze znajomymi linefolower'a i mam problem...
Otóż nie mogę za diabła znaleźć jak sterować silnikiem. Używam C++ w AtmelStudio, tworze amatorskie gry w 2D, ale z robotyką stykam się pierwszy raz. Mógłby ktoś podrzucić jakiś poradnik jak ustawić silnik, albo to wytłumaczyć? Potrafię zrobić już migającą diodę i odczytać czy czujnik łapie linię... Znaczy chyba umie, bo mam tak bystrych znajomych że przez nich programuję na ślepo, bez możliwości sprawdzenia czy działa... Tak czy inaczej chodzi mi głównie o sterowanie PWM i jak skonfigurować wejście + i -. Tylko proszę, bez technicznych zwrotów, bo jestem niezłym programistą, ale na elektronice nie znam się ani trochę.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 26 lis 2014, o 19:52 
Offline
Nowy
Avatar użytkownika

Dołączył(a): 09 kwi 2013
Posty: 22
Pomógł: 1

Do wysterowania silnika DC potrzebujesz mostka H.
W skrócie jest to układ 4 tranzystorów.

Aby silnik zaczął się obracać, musisz "włączyć" tranzystory w odpowiedniej sekwencji:

S1 i S2 - silnik obraca się w jedną stronę.
S3 i S4 - silnik obraca się w drugą stronę.

Tak naprawdę możesz połączyć bazy tranzystorów w tych parach powyżej i do sterowania silnika używać tylko dwóch pinów uC.
Dwa silniki? Dwa mostki H :)

Migasz diodą, więc prędkość obracania wirnika możesz regulować poprzez... odpowiednie zmienianie stanów na pinach mikrokontrolera.
Takie pseudo programowe PWM. Najprostsze rozwiązanie .

Oczywiście możesz od razu użyć sprzętowego PWM, ale powoli. Popróbuj na pinach, łopatologicznie.
Poćwiczcie płynną zmianę prędkości obrotów silnika, kierunków obrotu.

A sam algorytm sterowania linefollowerem wyjdzie w praniu :)

Obrazek

Edit:
Poprawione zdjęcie.



Ostatnio edytowano 26 lis 2014, o 20:01 przez majjki, łącznie edytowano 1 raz

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 26 lis 2014, o 19:59 
Offline
Nowy

Dołączył(a): 16 lis 2014
Posty: 6
Pomógł: 0

Mostki i wszystko chyba jest, ja się nie znam. Chodzi mi o czyste programowanie. bo włączenie diody to zmiana z 0 na 1, a jeśli chodzi o PWM to dochodzi jeszcze skala i tu zaczynają się problemy



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 26 lis 2014, o 20:05 
Offline
Nowy
Avatar użytkownika

Dołączył(a): 09 kwi 2013
Posty: 22
Pomógł: 1

Napisałem jak to wygląda ogólnie. Jak ma działać program w Waszym przypadku - pokażcie schemat.
To, czy jest chyba, czy na pewno, to ma znaczenie :)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 26 lis 2014, o 22:05 
Offline
Nowy

Dołączył(a): 16 lis 2014
Posty: 6
Pomógł: 0

Obrazek

Chyba to to, ja nie rozumie schematów, ja jestem tu od programowania



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 27 lis 2014, o 16:09 
Offline
Nowy
Avatar użytkownika

Dołączył(a): 09 kwi 2013
Posty: 22
Pomógł: 1

Aktywujesz wyjścia (atmega) na silniki pinami PD7 i PB0. Obydwa na stan wysoki.
Teraz interesują Cię piny sterujące kierunkiem obrotu silników, w parach (atmega):

silnik lewy: PC3 i PC4
silnik prawy: PC1 i PC2

Obrazek

Obrazek

Jak płynnie zmieniać prędkość obrotową silników (miękki start/stop)?
Przy tym podłączeniu musisz zastosować programowy PWM:
Zakładamy, że kręcisz jednym silnikiem, w jedną stronę.
Stan wysoki na jednym z pinów (np. PC2) jest wysoki, więc silnik kręci się z max prędkością.
Teraz spójrz:

Obrazek

W krótkim okresie czasu ustawiasz stan wysoki, po chwili niski, i tak w kółko...
W sensie - migasz jak diodą, tylko zamiast diody masz cewkę silnika a po drodze jeszcze l298, ale to nie ma znaczenia :)
Logika jest taka sama.

Powiel to teraz 4x i będziesz sterował 4 kierunkami dwóch silników.

Może być tak, że przy małej wartości wypełnienia silnik w ogóle nie ruszy, bo wartość średnia prądu dla danego okresu będzie za niska, dlatego dla testów stosujcie wypełnienie >50/60%.


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 27 lis 2014, o 19:15 
Offline
Nowy

Dołączył(a): 16 lis 2014
Posty: 6
Pomógł: 0

Aha, już rozumiem, wielkie dzięki!



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 7 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 3 gości


Nie możesz rozpoczynać nowych wątków
Nie możesz odpowiadać w wątkach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Skocz do:  
cron
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO