KPRR Napisano Grudzień 10, 2011 Udostępnij Napisano Grudzień 10, 2011 Witam mam drobny problem bo jestem początkujący w dziedzinie programowania mikro kontrolerów i mam do was prośbę podaje program jaki napisałem i czy koledzy bardziej doświadczeni mogli by mi sprawdzić czy gdzieś nie mam błędu i czy dobrze jest napisany pod względem co ma robić. Opis działania miał by być taki że gdy potencjometr osiowy pociągniemy w górę to serwo miało by się zacząć przemieszczać. Na razie tylko tyle bym chciał by robiło. Z góry dziękuje pozdrawiam. $regfile = "attiny13.dat" $crystal = 1000000 Config Pinb.1 = Input 'wyprowadzenie PD5 jako wyjscie' Config Pinb.2 = Input 'wyprowadzenie PB3 jako wejscie' Config Pinb.3 = Input 'wyprowadzenie PB4 jako wejscie' Config Pinb.5 = Output 'wyprowadzenie PB0 jako wyjscie' Config Pinb.6 = Output 'wyprowadzenie PB1 jako wyjscie' Config Pinb.7 = Output 'wyprowadzenie PB2 jako wyjscie' Portb.1 = 0 'stan poczatkowy = 0' Portb.2 = 0 'stan poczatkowy = 0' Portb.3 = 0 'stan poczatkowy = 0' Portb.5 = 0 'stan poczatkowy = 0' Portb.6 = 0 'stan poczatkowy = 0' Portb.7 = 0 'stan poczatkowy = 0' Do If Pinb.1 = 1 Then 'gdy potencjometr 1 w góre to' Portb.5 = 1 'serwo1 zaczyna sie przenieszczac' Waitms 200 'czekaj 0.2s i ponow sygnal' Elseif Pinb.2 = 1 Then 'gdy potencjometr 2w góre to' Portb.6 = 1 'serwo2 zaczyna sie przemieszczac' Waitms 200 'czekaj 0.2s i ponow sygnal' End If Loop End __________ Komentarz dodany przez: Nawyk Używaj, proszę, znacznika [ code][ /code] - zaznaczasz w polu edycji posta treść kodu i wciskasz przycisk "Code" Cytuj Link do komentarza Share on other sites More sharing options...
Decado Grudzień 11, 2011 Udostępnij Grudzień 11, 2011 Po pierwsze przy konfigurowaniu portów używamy polecenia: Config PORTB.1 = input Portb.1 = 0 Po drugie sterowanie serwem polega troszkę na czymś innym, Serwomechanizmy steruje się poprzez impulsy podawane z określana częstotliwością (50Hz). Czas tych impulsów powinien się mieścić w zakresie od 1,5ms do 2,5 mili sekundy, a zależnie od tego czasu serwo ustawia się pod odpowiednim kątem i utrzymuje tą pozycje aż do zmiany sygnału. Także popraw sobie procedurę sterowania serwem do tych wymogów i wgraj na procka i sprawdź czy ci będzie działało. Jak nie to podeślij do sprawdzenia 🙂. W ten sposób najlepiej się nauczysz a nie jeśli ktoś będzie ci dawał gotowce. Cytuj Link do komentarza Share on other sites More sharing options...
KD93 Grudzień 11, 2011 Udostępnij Grudzień 11, 2011 Co do serw to poczytaj o Config Servos. Cytuj Link do komentarza Share on other sites More sharing options...
KPRR Grudzień 11, 2011 Autor tematu Udostępnij Grudzień 11, 2011 Staram się zrozumieć tą komendę Config servos lecz nie potrafię jej podpiąć do mojego programu błędy które kolega mi pokazał zostały zlikwidowane. Czytając pomoc BASCOMA nie mogę zrozumieć jak to mogę dopisać i w którym miejscu to wpisać u mnie w programie. Mógłby ktoś mi dopisać linie kodu i wytłumaczyć czemu akurat tu i dlaczego tak ?? z góry dziękuje za wyrozumiałość i pomoc. Cytuj Link do komentarza Share on other sites More sharing options...
Polecacz 101 Zarejestruj się lub zaloguj, aby ukryć tę reklamę. Zarejestruj się lub zaloguj, aby ukryć tę reklamę. 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
Phil Grudzień 11, 2011 Udostępnij Grudzień 11, 2011 Konfigurację serwa wstawiamy nad konfiguracją portów: Config Servos = 1 , Servo1 = Portd.1 , Reload = 10 A potem wstawiamy to polecenie do programu tam gdzie chcemy ustawić serwo. Servo(1) = 150 'tutaj wstawiamy w jakiej pozycji ma być serwo np. tutaj jest w pozycji środkowej' Tam gdzie w programie podałem 150 to podajemy liczbę w zakresie 100 - 200. 100 to najbardziej w lewo, a 200 to najbardziej w prawo. Tutaj masz to fajnie opisane. Cytuj Link do komentarza Share on other sites More sharing options...
KPRR Grudzień 11, 2011 Autor tematu Udostępnij Grudzień 11, 2011 Czyli jak dobrze zrozumiałem to program powinien być w takiej formie $regfile = "attiny13.dat" $crystal = 1000000 Config Servos = 2 , Servo1 = Portb.5 , Servos2 = Portb.6 , Reload = 10 Config Portb.1 = Input 'wyprowadzenie PD5 jako wejscie' ' Config Portb.2 = Input 'wyprowadzenie PB3 jako wejscie' Config Portb.3 = Input 'wyprowadzenie PB4 jako wejscie' Config Portb.5 = Output 'wyprowadzenie PB0 jako wyjscie' Config Portb.6 = Output 'wyprowadzenie PB1 jako wyjscie' Config Portb.7 = Output 'wyprowadzenie PB2 jako wyjscie' Portb.1 = 0 'stan poczatkowy = 0' Portb.2 = 0 'stan poczatkowy = 0' Portb.3 = 0 'stan poczatkowy = 0' Portb.5 = 0 'stan poczatkowy = 0' Portb.6 = 0 'stan poczatkowy = 0' Portb.7 = 0 'stan poczatkowy = 0' Do If Pinb.1 = 1 Then 'gdy przycisk 1 wcisniety to' Servo(1) = 150 'serwo1 zaczyna sie przenieszczac' Waitms 200 'czekaj 0.2s i ponow sygnal' Elseif Pinb.2 = 1 Then 'gdy przycisk 2 wcisniety to' 'serwo2 zaczyna sie przemieszczac' Serwo(2) = 150 'serwo2 zaczyna sie przemieszczac' Waitms 200 'czekaj 0.2s i ponow sygnal' End If Loop End Cytuj Link do komentarza Share on other sites More sharing options...
Phil Grudzień 11, 2011 Udostępnij Grudzień 11, 2011 Tak, ale: Servo(1) = 150 'serwo1 zaczyna sie przenieszczac' Serwo się nie przemieszcza cały czas, ale do czasu, aż osiągnie połowę. I zapomniałem napisać, że przed pętlą głównego programu wstawiamy: Enable Interrupts Cytuj Link do komentarza Share on other sites More sharing options...
KPRR Grudzień 11, 2011 Autor tematu Udostępnij Grudzień 11, 2011 mimo dopisania komend to program gdy sprawdza poprawność cały czas pokazuje mi błędy w linii kodu config servos = 2 , Servo1 = Portb.5 , Servos2 = Portb.6 , Reload = 10 Error : 22 line : 4 Out of SRAM space, in file D:\mikrokontrolery\prog2\poprawka.bas Error : 31 line : 4 Invalid datatype [[0011] 0[___SERWOTICK]] , in file D:\mikrokontrolery\prog2\poprawka.bas Error : 64 line : 4 , expected , in file : D:\mikrokontrolery\prog2\poprawka.bas nie wiem co mam źle coś mi świta że może procek być nieodpowiedni do tych działań może męczę was koledzy ale moja wrodzona ciekawość nie pozwala się poddać Cytuj Link do komentarza Share on other sites More sharing options...
Phil Grudzień 12, 2011 Udostępnij Grudzień 12, 2011 Error 22 procek ma za mało pamięci SRAM. Następne to coś nie tak. Tak jeszcze wracając do moich poprzednich postów, jakby to nie działało to spróbuj pokombinować trochę sam. Poszukaj w internecie lub coś. Cytuj Link do komentarza Share on other sites More sharing options...
KPRR Grudzień 12, 2011 Autor tematu Udostępnij Grudzień 12, 2011 Nie wiem czy to dobre rozwiązanie ale myślałem na tym by procek generował sygnał 1 stały bez czasówki i ten sygnał podpiąć do układu L293D by ten układ sterował serwem czy to jest dobre rozwiązanie ?? Cytuj Link do komentarza Share on other sites More sharing options...
Phil Grudzień 12, 2011 Udostępnij Grudzień 12, 2011 Zależy co chcesz zrobić. Chodzi o sposób działania serwa. Jeśli ma działać tak jak zwykłe serwo czyli nie przerobione to jest to złe rozwiązanie, gdyż układ L293D to mostek H, który ma za za zadanie sterować silnikami, Jeśli natomiast chcesz wykorzystać serwo jako silnik to jest to dobre rozwiązanie,ale serwo trzeba przerobić. Tu masz to opisane. Cytuj Link do komentarza Share on other sites More sharing options...
KPRR Grudzień 12, 2011 Autor tematu Udostępnij Grudzień 12, 2011 znaczy jeden z projektów to ma być platforma zwykła która działa na zasadzie czołgu serwa mikro posiadam i chce je przerobić. Następny projekt to ma być ramie robota zamontowane na platformie więc jak tak to muszę przerobić serwo i będzie ok tak ?? a jak chce by serwo działało normalnie to muszę kupić większy procek np. Atmege8 ?? Cytuj Link do komentarza Share on other sites More sharing options...
Phil Grudzień 12, 2011 Udostępnij Grudzień 12, 2011 Teoretycznie serwo możesz sterować każdym prockiem, ale nie każdy procek ma odpowiednie parametry. Chodzi o pamięć flash, RAM, SRAM. musisz wiedzieć jak długi będzie program i jak dużo będzie on zajmował/wykorzystywał te pamięci. Poczytaj dokumentacje procków. Tam dowiesz się wszystkiego na temat danego uC. Ale trzeba trochę znać j. Angielski. Cytuj Link do komentarza Share on other sites More sharing options...
KPRR Grudzień 12, 2011 Autor tematu Udostępnij Grudzień 12, 2011 Z tym językiem nie ma problemu 12 lat nauki nie idzie na marne 🙂 wielkie dzięki za pomoc w rozwiązaniu problemu 🙂 Cytuj Link do komentarza Share on other sites More sharing options...
KD93 Grudzień 12, 2011 Udostępnij Grudzień 12, 2011 imo dopisania komend to program gdy sprawdza poprawność cały czas pokazuje mi błędy w linii kodu Kod programu: Zaznacz cały config servos = 2 , Servo1 = Portb.5 , Servos2 = Portb.6 , Reload = 10 Masz literówkę. Servo2 a nie Servos2, Cytuj Link do komentarza Share on other sites More sharing options...
Pomocna odpowiedź
Dołącz do dyskusji, napisz odpowiedź!
Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!