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



Teraz jest 4 mar 2026, o 02:03


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 23 ] 
Autor Wiadomość
PostNapisane: 17 paź 2016, o 19:02 
Offline
Nowy

Dołączył(a): 19 mar 2016
Posty: 16
Pomógł: 0

Witam. Jestem początkującym i kolega pożyczył mi dziś serwomechanizm. Korzystam z Atmegi8 8MHz.
Serwo podłączone pod pin PB1, lecz gdy uruchamiam program nic się nie dzieję. Proszę o pomoc

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



Ostatnio edytowano 17 paź 2016, o 19:31 przez Rigardo5033, łącznie edytowano 1 raz

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 17 paź 2016, o 19:27 
Offline
Użytkownik

Dołączył(a): 24 sty 2012
Posty: 1469
Pomógł: 56

Skoro jesteś nowy na forum to może poczytaj to:
http://forum.atnel.pl/topic7402.html
Tak wstawiamy kod na forum.
A co do pytania to co ma robić Twój program oprócz wpisywania
wartości do OCR1A i oczekiwania 200ms? I tak w kółko...

_________________
Jestem początkujący i moje porady mogą być błędne



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 17 paź 2016, o 19:29 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 01 lis 2015
Posty: 1448
Lokalizacja: okolice Warszawa
Pomógł: 149

witam,
musisz tak ustawić preskaler i ICR1, żeby wyszła częstotliwość 50Hz. (20ms).
i w takich odstępach podawać sygnał trwający od 1,5 ms poprzez 2ms do 2,5ms.
co jest równoznaczne z wychyleniem, proporcjonalnie do podanego czasu sygnału.
Brakuje jeszcze zezwolenia na przerwanie :TIMSK | = (1<<OCIE1A).
...............................................................
i wstaw kod w syntax C.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 17 paź 2016, o 19:41 
Offline
Nowy

Dołączył(a): 19 mar 2016
Posty: 16
Pomógł: 0

Przepraszam bardzo za to ze nie użyłem syntax. Wzór na częstotliwość jeżeli sie nie myle to jest ten:

50Hz = 8 000 000/ n*(1+ICR1);

Tylko nie jestem pewny czy dobrze ustawiłem ten preskaler i to ICR1.
I później w pętli głównej co mam wywołać?
Przepraszam za głupie pytania. Ale jak ktoś powiedział nie ma głupich pytań są głupie odpowiedzi.

Pozdrawiam



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 17 paź 2016, o 19:45 
Offline
Użytkownik

Dołączył(a): 24 sty 2012
Posty: 1469
Pomógł: 56

To zależy co chcesz żeby Twój program robił.
Są takie programy w których w pętli głównej nic się nie dzieje
a wszystko wykonywane jest w procedurach obsługi przerwań.
Ale w Twoim przypadku chyba tak nie będzie ;-)

_________________
Jestem początkujący i moje porady mogą być błędne



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 17 paź 2016, o 19:47 
Offline
Nowy

Dołączył(a): 19 mar 2016
Posty: 16
Pomógł: 0

Potrzebuję przesunąć go o 45 stopni w jedna stronę i później powrót do ustawienia początkowego. Takie cos prostego potrzebuje na początek napisać.

------------------------ [ Dodano po: 12 minutach ]

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Poprawiłem nieco kod. Ustawiłem preskaler na 64 i wartość ICR1=2500 dzieki temu mam 50Hz. Tylko jak teraz ruszyć tym serwo?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 17 paź 2016, o 20:04 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 01 lis 2015
Posty: 1448
Lokalizacja: okolice Warszawa
Pomógł: 149

proponował bym zacząć od ustawienia:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



Ostatnio edytowano 17 paź 2016, o 21:18 przez Daro69, łącznie edytowano 1 raz

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 17 paź 2016, o 21:13 
Offline
Nowy

Dołączył(a): 19 mar 2016
Posty: 16
Pomógł: 0

Niestety nie działa. Chciałem sprawdzić w którym momencie jest coś nie tak i wychodzi na to ze nawet nie wchodzi do pętli while(1). Próbowałem zapalać diode i dopiero jak dałem przed while(1) to się zapaliła



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 17 paź 2016, o 21:16 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 01 lis 2015
Posty: 1448
Lokalizacja: okolice Warszawa
Pomógł: 149

while(1); <-- tu źle wpisałem, ale pewnie zauważyłeś. bez średnika.

------------------------ [ Dodano po: 6 minutach ]

a i jeszcze brak jednego z tych wpisów. sorka pośpiech. :?
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Obrazek



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 17 paź 2016, o 21:32 
Offline
Nowy

Dołączył(a): 19 mar 2016
Posty: 16
Pomógł: 0

Przepraszam nie zauważyłem. Przez chwile chodziło. Gdy zacząłem zmieniać wartości OCR1A przestało chodzić. I teraz znowu stoi serwo.

------------------------ [ Dodano po: 12 minutach ]

I nie moge za boga zrozumieć jak to sterować lewo prawo. To serwo jest 360. I caly czas mi sie kreci w prawo.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 17 paź 2016, o 21:49 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 01 lis 2015
Posty: 1448
Lokalizacja: okolice Warszawa
Pomógł: 149

tak myślę sobie. Skoro ruszyło i się zatrzymało, to może zmień zakres OCR1A ?
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

i przed pętlą OCR1A = 1500; /*zatrzymanie.*/

------------------------ [ Dodano po: kilkunastu sekundach ]

podaj nazwę tego serwo.
.....................................................
Dla obrotowego inne czasy sygnałów.
Zmieniłem OCR1A powyżej.



Ostatnio edytowano 17 paź 2016, o 22:01 przez Daro69, łącznie edytowano 2 razy

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 17 paź 2016, o 21:57 
Offline
Nowy

Dołączył(a): 19 mar 2016
Posty: 16
Pomógł: 0

Serwo PowerHD AR-1201MG.

Bardzo dziwnie działa na tych pętlach. Ja bym chciał go przesunąć o 45stopni a on sie kreci cały czas



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 17 paź 2016, o 22:03 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 01 lis 2015
Posty: 1448
Lokalizacja: okolice Warszawa
Pomógł: 149

"Sterowanie
Częstotliwość sygnału sterującego to standardowe dla serwomechanizmów modelarskich 50 Hz z wypełnieniem z zakresu 1 - 2 ms. Podanie wartości wyższej niż próg ok. 1,5 ms powoduje ruch serwomechanizmu w jedną stronę, z prędkością proporcjonalną do podanego wypełnienia. Analogicznie podanie wartości niższej spowoduje ruch w drugą stronę."

------------------------ [ Dodano po: 4 minutach ]

A nasze pętle podają od 1,3 - 1,7 . możesz zmienić na wartości zamiast 1300 i 1700 na 1000 i 2000.
przy 1500 powinno teoretycznie się zatrzymać. ale to trzeba doświadczalnie bo nie ucelujemy w 1500ms. sprzętem dokładnie z wyliczeń.

------------------------ [ Dodano po: 39 minutach ]

.............................................................................
masz serwo obrotowe_ przepraszam nie dopytałem na początku mój błąd. :roll:
.............................................................................
Twoje reaguje na podawany sygnał co 20ms.
jeżeli sygnał jest krótszy niż 1,5ms - to kręci w jedną stronę , a jeżeli dłuższy to w drugą.
Żeby zatrzymać sygnał musi mieć około 1,5ms.
Każdy odchył długości sygnału - im większy tym szybciej kręci serwo.

Pisałeś o przekręceniu o 45°,
dokładnie to w innym serwie, które ma wychylenia +90° do -90°.
Takie będzie sterowane sygnałem też co 20ms. , ale trochę inaczej reaguje.
Długość sygnału 2ms. to położenie środkowe,
im bliżej 1,5ms to bliżej -90°, a im dłuższy sygnał do 2,5ms do +90°.
Takie serwo brałem pod uwagę na wstępie,
którym znacznie łatwiej ustawić +45° i - 45°. odpowiednio około 1,75ms i 2,25ms. co 20ms.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 17 paź 2016, o 22:56 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 23 lip 2014
Posty: 30
Pomógł: 2

Wydaje mi się, że ICR1 powinno wynosić 19 999 (taki szczegół), a fragment o przerwaniach można pominąć (na razie):

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Wartością OCR1A sterujesz wychyleniem (w Twoim przypadku kierunkiem oraz prędkością). Wartość ta powinna być z zakresu od mniej więcej 1000 do 2000, tak jak kolega Daro69 wyżej wspomina (około 1500 będzie środkiem/zatrzymaniem). Podawanie wartości spoza tego zakresu, może skutkować brakiem reakcji serwa.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 18 paź 2016, o 05:28 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 01 lis 2015
Posty: 1448
Lokalizacja: okolice Warszawa
Pomógł: 149

No tak, dzięki.
OCR też odpowiednio pomniejszone o 1.
Efekt sklerozy i spisywania z kalkulatora.
Gdyby to była rakieta to wylądowali byśmy na zupełnie innej planecie. :)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 18 paź 2016, o 18:12 
Offline
Nowy

Dołączył(a): 19 mar 2016
Posty: 16
Pomógł: 0

Nadal nie działa. W petli daje:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


I nic sie nie dzieje. Różne wartosci daje i nic.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 18 paź 2016, o 18:29 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 01 lis 2015
Posty: 1448
Lokalizacja: okolice Warszawa
Pomógł: 149

sprawdź czy na bank ATmega8-- 8MHz masz ustawione.
czy preskaler na 8, z CSów tylko CS11;
czy WGM- 11,12,13, /*tryb 14*/
czy COM1A1 lub COM1B1. załączony ? /*Clear OC1A/OC1B on Compare Match when up-counting. Set
OC1A/OC1B on Compare Match when downcounting.*/
czy ustawione wyjścia DDRB dla PB1(OC1A) lub PB2(OC1B) ?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 18 paź 2016, o 18:38 
Offline
Nowy

Dołączył(a): 19 mar 2016
Posty: 16
Pomógł: 0

Tak 8 MHz, Tylko CS11 WHM 11 12 i 13 i COM1A1 I PB1 nie wiem co jest grane juz;/

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 18 paź 2016, o 18:50 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 01 lis 2015
Posty: 1448
Lokalizacja: okolice Warszawa
Pomógł: 149

chodzi mi jeszcze o te ustawienia:
ObrazekObrazek



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 18 paź 2016, o 18:52 
Offline
Nowy

Dołączył(a): 19 mar 2016
Posty: 16
Pomógł: 0

Tak jest napewno



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 18 paź 2016, o 19:00 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 01 lis 2015
Posty: 1448
Lokalizacja: okolice Warszawa
Pomógł: 149

..usunąłem.



Ostatnio edytowano 18 paź 2016, o 19:34 przez Daro69, łącznie edytowano 1 raz

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 18 paź 2016, o 19:11 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 09 gru 2014
Posty: 1540
Pomógł: 269

Serwa są dość prądożerne. Ten PowerHD AR-1201MG w/g noty potrzebuje do pracy 250 - 300mA w zależności od napięcia zasilania od 4.8 do 6V (bez obciążenia).
Sądzę, że warto na to zwrócić uwagę i zapewnić mu odpowiednie zasilanie.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 18 paź 2016, o 19:28 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 01 lis 2015
Posty: 1448
Lokalizacja: okolice Warszawa
Pomógł: 149

nie uruchamiałem osobiście serw obrotowych, ani pracujących w zakresie.
Ale bez problemów korespondencyjnie uruchomiliśmy kolegi serwo z reakcja "podążanie za słońcem".
Dlatego myślę że problem jest gdzieś w przeoczeniach w kodzie albo w fizycznym połączeniu.
..............................................................................
albo tak jak kolega "anshar" sugeruje w zasilaniu.



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: 23 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

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


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