Skocz do zawartości

[BASCOM] Seterowanie serwem


Dżony

Pomocna odpowiedź

Witam właśnie zabrałem się za naukę sterowania serwem i jakoś ciężko mi to idzie program napisany a serwo obraca się tylko w jedną stronę 😥 Attiny2313 działa na wewnętrznym 8Mhz. Tak wygląda kod może ktoś znajdzie błąd i pomoże:

$regfile = "2313def.dat"
$crystal = 8000000
Config Servos = 1 , Servo1 = Portb.0 , Reload = 10



Config Pinb.0 = Output
Config Pinb.6 = Input
Config Pinb.5 = Input

Dim I As Byte

S1 Alias Pinb.6
S2 Alias Pinb.5



Enable Interrupts

I = 100
Servo(1) = I

Do
  Debounce S1 , 0 , Prawo , Sub
  Debounce S2 , 0 , Lewo , Sub
Loop

End

Prawo:

  I = I + 20
  If I = 220 Then
     I = 200
  End If
  Servo(1) = I

Return

Lewo:

  I = I - 20
  If I = 80 Then
     I = 100

End If

  Servo(1) = I
Return

Wydaje mi się że problem może być z reload

__________

Komentarz dodany przez: Nawyk

Używaj znaczników "code" do zamieszczania kodu źródłowego

Link do komentarza
Share on other sites

Po 1:

$regfile = "2313def.dat"

zmień na:

$regfile = "attiny2313.dat"

Po 2:

Podłączyłeś kondensator przy serwie?

Po 3:

Domyślam się, że program jest pisany na podstawie tego z książki M.Wiązani, tam jest wykorzystany rezonator 10mHz, ma to wpływ na długość impulsu dla tych ustawień Config Servos.

Po 4:

O ile S1 i S2 to przyciski, to nie podciągnąłeś ich wewnętrzymi pull-up'ami. Dodaj:

Set Portb.5
Set Portb.6

Po 5:

Na początku dajesz parametr:

I = 100
Servo(1) = I 

A potem pętle programu. To znaczy że serwo na poczatku programu ustawia się na wartość I = 100. A potem napisałeś:

Lewo:

I = I - 20
If I = 80 Then
I = 100

End If

Servo(1) = I
Return 

Z czego wynika że jak wciśniesz przycisk to będziesz miał cały czas 100, więc serwo się nie ruszy. Domyślam się że na początku programu miało być:

I = 150
Servo(1) = I 
Link do komentarza
Share on other sites

A jaki powinien być ten kondensator (100nF) i w który miejscu go podpiąć?? 😉 I czy jest możliwość ustawienia parametru reload tak żeby działał na 8Mhz??

Link do komentarza
Share on other sites

Ja używam elektrolita 100uF przy zasilaniu serwa. Parametr Reload określa czas opóźnienia w us pomiędzy kolejnymi przerwaniami licznika, możesz go chyba trochę pozmieniać i spróbować dobrać doświadczalnie. Ale ja bym się nie do końca sugerował tymi parametrami, bo jak ja testowałem moje serwo to położenie środkowe miało wartość I=100, krańcowe miały I=50 i I=150, wszystko zależy od typu serwa i instrukcji Config Servos należy dobrać parametry według własnych serw.

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

Wiesz co chyba nie do końca zrozumiałem co mam poprawić w programie jak byś mi podał dokładniej wiem tylko że set mam dopisać i kondensator dodać i że w którymś miejscu ma być I=150 😉 jak coś pozmieniałem to mniej więcej reaguje ale nie za dobrze, mam serwo graupnera c512 z góry dzięki

Link do komentarza
Share on other sites

Enable Interrupts

I = 100
Servo(1) = I 

W tym fragmencie programu zamień I=100 na I=150. Znajomość typu twojego serwa niewiele mi daje, bo ja testowałem tylko Conrad ES-030 i Hextronic 5010.

Link do komentarza
Share on other sites

hmm zmieniłem i tak coś się dzieje w lewą stronę obraca się do pewnego kąta ale w prawo obraca się do samego końca i chce dalej a nie może ale nie zawsze reaguje na przyciski. Co zrobić żeby za po naciśnięciu obracało się o 45 stopni w lewo i a po naciśnięciu drugiego o 45 stopni obracało się prawo??

Link do komentarza
Share on other sites

O to właśnie mi chodziło jak pisałem że do każdego serwa trzeba parametry dobrać oddzielnie. Pewnie da się jakość te kąty wyliczyć, ja narazie nie wiem jak. Znajdź sobie parametr I=?, dla którego orczyk serwa będzie w środkowym położeniu, potem sprawdź do jakiego parametru I=? serwo da radę się obracać (serwo nie powinno "tykać"), odejmij sobie to i wyjdzie ci zakres działania serwa. Jeżeli twoje serwo ma zakres obrotu 180st, (90st w jedną stronę) to dzielisz sobie ten swój zakres działania przez 2 i wychodzi ci wartość I dla której orczyk obróci się o 45st.

Dla przykładu:

I=100 sero na środku

I= 160 graniczne wychylenie

160-100 = 60 zakres wychylenia dla 90st

60/2 = 30 zakres wychylenia o 45st

I=130

lub

I=70 wartość wychylenia o 45st

Link do komentarza
Share on other sites

Nie umiem znaleźć tego I 🙁 Serwo zaraz po załączeniu obraca się w prawo i dalej pulsuje. Fusbity są ustawione na internala 8MHz, Ck 64ms. Gdzie może być jeszcze problem?? 🙁

Link do komentarza
Share on other sites

Mnie osobiście nie przekonuje wewnętrzny ("internal") rezonator RC, ponadto nie wiem czy Attiny 2313 ma dostępne 8MHz?! Wrzuć mu kwarc, powinno być lepiej...

Link do komentarza
Share on other sites

Hmm ciężka sprawa... dałem mu ten kwarc 10MHz. Ale nadal jak załączę program to serwo od razu idzie w prawo i se tyka w miejscu potem po pewnym czasie "zaczęło" reagować na przyciski ale że się obróciło maksymalnie w lewo i tez tykało ale w sumie. Na środku ani razu nie stanęło... szukałem w internecie nawet coś o tym serwie ale ciężko coś znaleźć wiem tylko tyle że za sterowanie nim w środku odpowiada taki scalak(pisze na nim): 2607D acoms 702B i nie umiem wyczytać jak długości powinny być impulsy. 🙁

[ Dodano: 25 Lut 10 07:15 ]

heh udało się😉 musiałem wziąć ATmega8 i wszystko zaczęło działać🙂 ale dziękuje za pomoc;-) nie wiem dlaczego na attiny2313 nie działało

Link do komentarza
Share on other sites

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!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

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