Strona Główna
FAQFAQ  SzukajSzukaj  UżytkownicyUżytkownicy RegulaminRegulamin  GrupyGrupy
RejestracjaRejestracja  ZalogujZaloguj




mikrosterowniki.pl

Przyszłość jest w naszych rękach...
...bo przyszłość to robotyka.





Poprzedni temat «» Następny temat
Przesunięty przez: daniel93
25 Cze 08 01:25
Funkcja "CONFIG SERVOS" w Bascomie
Autor Wiadomość
ziober 


Posty: 45
Skąd: Tarnów
Wysłany: 16 Gru 06 08:02   Funkcja "CONFIG SERVOS" w Bascomie

Witam!
Ostatnio w pomocy do Bascoma (AVR) znalazłem taką opcje jak "CONFIG SERVOS".
W przeznaczeniu pisze:
Określa ile serwomechanizmów będzie kontrolowanych przez uC i z jaką rodzielczością.
W składni:
CONFIG SERVOS=liczba SERVO1= końcówka [SERVOn=końcówka] RELOAD= czas
gdzie:
liczba ilość serwomechanizmów
końcówka nazwa portu sterującego odpowiednim serwomechanizmem
czas czas opóźnienia pomiędzy kolejnymi przerwaniami licznika TIMER0,
roździelość

Reszty nie przepisuje bo mi sie nie chce :) (polski help do bascom AVR jest na elektrodzie)

A teraz mam pytanie: :)
Czy da się za pomocą tego polecenia sterować przerobionymi serwami, tak aby regulować ich prędkość (bez mostków h) i jaką wartość mam wpisać w REOLAD (kwarc 4MHz)?
Postaw piwo autorowi tego posta
 
 
daniel93 



Pomógł: 11 razy
Posty: 390
Otrzymał 19 piw(a)
Skąd: Wujskie
Wysłany: 17 Gru 06 02:12   

Da się, ale nie możesz pominąć elektroniki, co chyba zrobiłeś, o ile się nie mylę.
Postaw piwo autorowi tego posta
 
 
ziober 


Posty: 45
Skąd: Tarnów
Wysłany: 17 Gru 06 07:43   

Nie przerobiłem serw bo jeszcze ich nie kupiłem :D :D
Postaw piwo autorowi tego posta
 
 
daniel93 



Pomógł: 11 razy
Posty: 390
Otrzymał 19 piw(a)
Skąd: Wujskie
Wysłany: 22 Gru 06 06:27   

Dać się da.
Złam blokadę na trybku, wyciąg potencjometr i ustaw go ma w lewo.
W RELOAD wpisz 20ms (nie wiem jak, nie czytałem o tym poleceniu).
Niestety regulować prędkości to się nie da :(

Można spróbować dodać tranzystor na zasilanie serwa i sterować tranzystorem przez PWM. ALE nie jestem pewny czy to zadziała...
Postaw piwo autorowi tego posta
 
 
ziober 


Posty: 45
Skąd: Tarnów
Wysłany: 26 Gru 06 12:45   

Cytat:
Złam blokadę na trybku, wyciąg potencjometr i ustaw go ma w lewo.


Daniel93, jak wyciągne ten potemcjometr to po jakiego grzyba mam wtedy ustawić go na lewo... ;P
Postaw piwo autorowi tego posta
 
 
daniel93 



Pomógł: 11 razy
Posty: 390
Otrzymał 19 piw(a)
Skąd: Wujskie
Wysłany: 27 Gru 06 01:02   

Prosta sprawa *:-)*
Chodzi o "oszukanie" układu sterowania w serwie.
Tylko muszę się poprawić bo powinno być na środku :oops:
Jeśli ustawisz potencjometr na środku, to potem każąc procesorowi skręcić serwem np. w prawo, procesor będzie dążył do pozycji wyznaczonej w programie, aż wartość ta zrówna się z wartością wyznaczoną przez potencjometr. A jeśli potencjometr będzie na środku, to wartość z programu nigdy nie zrówna się z wartością na potencjometrze, więc serwo b0ędzie obracać się cały czas w kółko :)
To samo tyczy się obracania w lewo ;)
Postaw piwo autorowi tego posta
 
 
jogurt_wisniowy 


Posty: 10
Skąd: Mysłowice
Wysłany: 16 Mar 07 04:22   

Małe pytanie co do tej instrukcji, jaki minimalny kąt obrotu można uzyskać za jej pomocą?
Postaw piwo autorowi tego posta
 
 
bogdan_p 


Pomógł: 1 raz
Posty: 20
Otrzymał 1 piw(a)
Skąd: Pszczyna
Wysłany: 20 Mar 07 09:32   

proponuje najpierw poczytać o budowie , zasadzie działania i sposobie sterownia serwami
http://www.edw.com.pl/pdf/k13/32_05.pdf
http://www.edw.com.pl/pdf/k10/56_07.pdf
daniel93 jak wyłamiesz ogranicznik to następnym krokiem jest pozbycie się elektroniki i potencjometru z serwa , zupełnie bez sensu jest wyłamanie ogranicznika mechanicznego pozostawiając całą resztę i tak przy sterowaniu impulsowym bez ograniczenia mechanicznego wyłamiesz potencjometr , przy takiej przeróbce zupełnie bez sensu jest stosowanie instrukcji z Bscoma do ich obsługi , po prostu z serwa robisz silnik DC z dość dobrą przekładnią
Postaw piwo autorowi tego posta
 
 
jogurt_wisniowy 


Posty: 10
Skąd: Mysłowice
Wysłany: 24 Mar 07 06:52   

ok już sobie z grubsza poradziłem, kod wygląda tak:

Kod:

$regfile = "m8def.dat"
$crystal = 10000000
$baud = 9600

Config Servos = 4 , Servo1 = Portc.0 , Servo2 = Portc.1 , Servo3 = Portc.2 , Servo4 = Portc.3 , Reload = 2


Config Portc = Output
Config Portd.0 = Input

Enable Interrupts


'Dla reload 2 i 10 Mhz od 126-250 kąt 1.45 stopnia
Servo(1) = 126
Servo(2) = 150
Servo(3) = 150
Servo(4) = 250


Dim Servo_pos(4) As Byte

Do

   Servo_pos(1) = Servo(1)
   Servo_pos(2) = Servo(2)
   Servo_pos(3) = Servo(3)
   Servo_pos(4) = Servo(4)


Dim A$ As String * 1
   A$ = Waitkey()


If A$ = "z" And Servo_pos(1) > 126 Then
   Servo(1) = Servo_pos(1) - 1
End If

If A$ = "x" And Servo_pos(1) < 250 Then
   Servo(1) = Servo_pos(1) + 1
End If

If A$ = "c" And Servo_pos(2) > 126 Then
   Servo(2) = Servo_pos(2) - 1
End If

If A$ = "v" And Servo_pos(2) < 250 Then
   Servo(2) = Servo_pos(2) + 1
End If

If A$ = "b" And Servo_pos(3) > 126 Then
   Servo(3) = Servo_pos(3) - 1
End If

If A$ = "n" And Servo_pos(3) < 250 Then
   Servo(3) = Servo_pos(3) + 1
End If

If A$ = "m" And Servo_pos(4) > 126 Then
   Servo(4) = Servo_pos(4) - 1
End If

If A$ = "," And Servo_pos(4) < 250 Then
   Servo(4) = Servo_pos(4) + 1
End If


Loop
End


Precyzja sterowania serwem zależy od częstotliwości kwarcu i parametru reload, udało mi się dojść do wielkości rzędu 0.8 stopnia (16MHz, reload = 1) ale brakuje mi zakresu w przypadku instrukcji servo() (jest ona typu BYTE i obsługuje wartości do 255) i serwo nie wykonuje obrotu w pełnym zakresie swoich możliwości. Czy można to ominąć pisząc swoją procedure obsługi serwa, i do jakich wielkości można dojść. Jak bardzo to jest skomplikowane do napisania? I pytanie z innej beczki, próbuje dogadać się z mikroprocesorem przez rs232 ale nie bardzo mi wychodzi, na dole widać kawałek kodu który wymyśliłem posiłkując się googlem i helpem, ale to bydle nie chce działać, można prosić o jakieś wskazówki?


//zmieniłem kod na taki jaki mam obecnie, żeby nie wklejać kolejnego prawie że identycznego kawałka kodu w kolejnym poście. Transmisja rs232 działa już jak należy
Ostatnio zmieniony przez jogurt_wisniowy 31 Mar 07 07:59, w całości zmieniany 1 raz  
Postaw piwo autorowi tego posta
 
 
bogdan_p 


Pomógł: 1 raz
Posty: 20
Otrzymał 1 piw(a)
Skąd: Pszczyna
Wysłany: 24 Mar 07 08:06   

sprawdź sobie komunikację jakim prostym programem bez procedur obsługi serw
w PC użyj systemowego Hyper Terminal , zobacz czy komunikacja działa w obie strony
powodem braku komunikacji może być MAX 232 lub zamienione końcówki 2-3 wtyku DB9
Postaw piwo autorowi tego posta
 
 
jogurt_wisniowy 


Posty: 10
Skąd: Mysłowice
Wysłany: 31 Mar 07 08:08   

Teraz kolejne pytanie jak widać w mojej poprzedniej wiadomości zmiana kątu serwa jest dokonywana co jeden krok po wykryciu naciśnięcia odpowiedniego znaku. Chciałbym jednak żeby obrót był dokonywany przy pomocy jakiejś dłuższej sekwencji znaków (np: A10 wtedy mógłbym to przerobić takżeby serwo A obróciło się za jednym zamachem o 10 kroków) Jaką instrukcję do tego użyć? bo kombinowałem z inkey, input i jakoś niespecjalnie mi to wychodzi. Nie wiem czy to ma jakieś znaczenie ale układ na razie testuje nie na rzeczywistym modelu lecz w Proteusie.
Postaw piwo autorowi tego posta
 
 
Wyświetl posty z ostatnich:   
Odpowiedz do tematu
Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Nie możesz załączać plików na tym forum
Możesz ściągać załączniki na tym forum
Dodaj temat do Ulubionych
Wersja do druku

Skocz do:  


website uptime

Powered by phpBB modified by Przemo © 2003 phpBB Group
REKLAMAPorównywarka cen elektronikiLove and Lighttaniec z gwiazdamitaniec nowoczesny Warszawakredyt przez internetneroBearShare