sterownik serva elm-chan

Dyskusje dotyczące serwonapędów i napędów serwokrokowych.

bogus105
Specjalista poziom 2 (min. 300)
Specjalista poziom 2 (min. 300)
Posty w temacie: 4
Posty: 418
Rejestracja: 24 gru 2005, 12:59
Lokalizacja: Bielsko-Biała

#141

Post napisał: bogus105 » 10 mar 2012, 10:47

teraz już się pogubiłem, bo kilka wersji próbowałem. Może tak, która działa? Jeszcze sprawa fuse bitów... Gdzie jest informacja na temat jak mają być ustawione? gdzieś tam widziałem, że hfuse ma być 0xC9, a lfuse=0x2E.
Jak popatrzę do datasheeta atmega88PA i odszyfruję te fusy to dla lfuse=0x2E=0010 1110 daje:
CKDIV8=0 to podział clocka przez 8,
CKOUT=0 to wystawienie clocka na zewnątrz na PB0 (po co?),
CKSEL3..1=111 to zewnętrzny rezonator w trybie low-power (mniej odporny na zakłócenia - jaki więc sens?),
SUT1&0=10 w połączeniu z CKSEL0=0 daje 'ceramic resonator+BOD' włączony+start-up time 1k CK.

Jaki sens używać trybu low power rezonatora zamiast full-swing? Jaki sens dawać możliwość wystawienia (bo chyba to czy zostanie wystawiony, czy nie ustawia się gdzieś w rejestrach - nie grzebałem tak głęboko w datasheet) sygnału clk na PB0, mimo, że na płytce ta nóżka jest nigdzie nie podłączona?

co do hfuse=0xC9=1100 1001 daje to:
RSTDISBL=1 - nóżka reset działa jako reset,
DWEN=1 - debudWIRE wyłączony,
SPIEN=0 - włączona możliwość programowania przez SPI,
WDTON=0 - zawsze włączony watchdog,
EESAVE=1 - EEPROM not reserved - ?,
BODLEVEL2..0=001 - BOD level ustawiony na 'reserved' czyli nijak. W ogóle po co BOD w tej aplikacji?

może w fusebitach jest probem?
napisałem w winavr prosty program co by dioda SERVO ERROR się po prostu zaświeciła, czyli program ma wystawić wysoki stan na nóżkę 25 (PC2):

Kod: Zaznacz cały

/* układ ATmega88PA 16MHz */
/* dioda LED na PC2*/

#define F_CPU 16000000L
#include <avr/io.h> 
#include <util/delay.h>                

int main(void) 
{ 
    DDRC=0x0F; /*C0-c3 to wyjścia*/
	PORTC=0xff; 
	_delay_ms(1); 

    while (1) 
    { 
        PORTC=0x0f; 
        _delay_ms(660); 
		PORTC=0x00; 
		_delay_ms(330); 
    }	
} 
makefile zrobiony, device mega88pa, crystal 16MHz, kompilacja przebiega pomyślnie - zero błędów.
wrzucam led.hex do avrdude. W avrdude nie mam w liście m88PA tylko m88, więc w avrdude.conf dodałem blok dla mega88PA poprzez skopiowanie bloku m88 i zmienienie nazwy na m88PA i zmienienie sygnatury procka na 0x1E930F.
teraz w avrdude ręcznie wpisuję w command line m88PA zamiast m88 (wiem, że mogłem użyć -F aby ominąć sprawdzanie sygnatury, ale już próbuję wszystkiego).

Command line wtedy wygląda tak:

Kod: Zaznacz cały

"D:\avrdudeok\avrdude.exe" -p m88pa -c usbasp -C "D:\avrdudeok\avrdude.conf" -P  -U flash:w:"D:\winavr\8061\led.hex":a
i po wykonaniu programowania podsumowanie w avrdude wygląda tak:

Kod: Zaznacz cały

avrdude.exe: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.02s

avrdude.exe: Device signature = 0x1e930f

avrdude.exe done.  Thank you.
ale dioda nie mruga... co robię źle?
o co kaman?



Tagi:

Awatar użytkownika

AOLEK
Specjalista poziom 2 (min. 300)
Specjalista poziom 2 (min. 300)
Posty w temacie: 6
Posty: 376
Rejestracja: 17 lip 2011, 20:27
Lokalizacja: Świdnica

#142

Post napisał: AOLEK » 10 mar 2012, 10:54

SPRZEDAM dwie nakrętki kulowe 20x5 więcej w dziale GIEŁDA !

Awatar użytkownika

blue_17
ELITA FORUM (min. 1000)
ELITA FORUM (min. 1000)
Posty w temacie: 14
Posty: 1715
Rejestracja: 16 kwie 2009, 07:55
Lokalizacja: Kraków/Kornatka

#143

Post napisał: blue_17 » 10 mar 2012, 11:16

Niestety nie znam rosyjskiego ale znam rozwianie na ten problem

Zainstaluj ten program MkAvrKalulator i zainstaluj AVRDUDE jak opisałem

opisałem skąd go ściągnąć również

http://www.blue17.elektroda.eu/usbasp/1045

i odpal AVRDUDE z katalogu programu a później wpisz

Kod: Zaznacz cały

avrdude -p m88p -c usbasp -P usb -U flash:w:program.hex
dlaczego tak ?

Bo ten program to tylko nakładka graficzna a tam znajduje się nieco ulepszone AVRDUDE

Nakładka graficzna nie obsługuje m88p ale widzę że kolega nie boi się konsoli :)

a dlaczego m88p

Bo wypróbowałem to empirycznie i wynika z not katalogowych że różnice miedzy nimi to chyba napięcie zasilania albo maksymalna szybkość zegara nie pamiętam już :D

W każdym razie działa oczywiście program.hex w takim przypadku musi być w tym samym folderze co AVRDUDE

Żeby dodać nowy kontroler do listy to chyba trzeba skompilować avrdude na elektrodzie jest o tym temat ale dałem Ci gotowe rozwiązanie :)

Pozdrawiam
"I siedzieli oni razem pod nagim DOS-em i nie wstydzili sie tego." :D


bogus105
Specjalista poziom 2 (min. 300)
Specjalista poziom 2 (min. 300)
Posty w temacie: 4
Posty: 418
Rejestracja: 24 gru 2005, 12:59
Lokalizacja: Bielsko-Biała

#144

Post napisał: bogus105 » 11 mar 2012, 08:09

Dzięki Koledzy, w szczególności Blue_17! Gdzie jest przycisk 'POMÓGŁ'?:)

Widocznie mój avrdude był coś nie halo. Co do fuse bitów to ustawiłem hfuse=0xDF (bez BOD i watchdog nie always on), a lfuse=0xF7 - zewnętrzny kwarc, slow power up, bez CKOUT i bez dzielenie clk przez 8.
Działa. Do enkodera zrobiłem wzmacniacz na 4093 i śmiga również. Terminal działa.

Pytanie do samego terminala i strojenia: jak Wam działa wykres? Jest chyba trochę niedopracowany... Jak włączę analizę to wykres z czasem się zagęszcza i zaczyna być nieczytelny. Ci, którzy bawili się terminalem do strojenia UHU to wiedzą, że tam to ładnie działało. Tu jest niepotrzebnie zmieniana 'podstawa czasu' na wykresie. Poza tym trendy wychodzą łatwo poza zakres (w pionie)... utrudnia to tuning. Posiadacie opis do terminala? Na oryginalnej stronie Chana parametry mają inne numery i nie ma opisu jakie są zakresy poszczególnych parametrów.
Jak działa Torque Limit parametr #5? Chan napisał, że jest to zmienna 16bit bez znaku, czyli maks ponad 65000. Po co taka rozdzielczość? zresztą jak wpisałem większą wartość to wrażenie miałem, że silnik stracił moment... tak jakby się przepełnił licznik i wpisana została akurat mniejsza wartość niż przed tym.
jak działa EG compensation #6?


romek-rutkowski
Sympatyk forum poziom 2 (min. 50)
Sympatyk forum poziom 2 (min. 50)
Posty w temacie: 5
Posty: 53
Rejestracja: 14 sie 2013, 15:30
Lokalizacja: Lublin

#145

Post napisał: romek-rutkowski » 07 lip 2015, 12:57

Witam,

Zrobiłem sterownik według projektu ze strony elm-chan.org.
Mam problem z poprawnym uruchomieniem.

Czy ktoś jeszcze odwiedza ten temat ?

Pozdrawiam.


steff.k
Specjalista poziom 2 (min. 300)
Specjalista poziom 2 (min. 300)
Posty w temacie: 5
Posty: 529
Rejestracja: 07 paź 2013, 20:12
Lokalizacja: Kraków/Kraśnik

#146

Post napisał: steff.k » 07 lip 2015, 13:06

Mam frezareczkę na tych sterownikach. Z czym masz problemy?


romek-rutkowski
Sympatyk forum poziom 2 (min. 50)
Sympatyk forum poziom 2 (min. 50)
Posty w temacie: 5
Posty: 53
Rejestracja: 14 sie 2013, 15:30
Lokalizacja: Lublin

#147

Post napisał: romek-rutkowski » 07 lip 2015, 13:35

Dzięki za odpowiedź.
Na razie zrobiłem w wersji testowej, dokładniej:
- enkoder,tarcza z drukarki,
- najmniejszy silnik z drukarki z przekładnią zębatą na tarczę enkodera,
- mostek na L293DNE-tylko do testów na stykówce.

Sterowanie silnika z mostka sprawdzone przez podawanie 5V na nóżki które podawane są sygnały z Attiny2313.
Sygnał z enkodera sprawdzany na diodach LED.
PID jeszcze nieustawiany.

Problemy:
1. Podanie komendy przez RS232 "+700" powoduje kręcenie się silnika o kilkanaście obrotów i zapalenie się LED error.
Podanie komendy "+3000" powoduje kręcenie się silnika o podobną ilość razy co powyżej (sprawdzane na ucho) i error.

2. Gdy pokręcę ręcznie silnikiem ten zaczyna szybko kręcić się w tym samym kierunku i po kilkunastu obrotach LED error.
Gdy zamienię końcówki wyjść enkodera, to silnik zaczyna powoli się rozkręcać i po krótkim czasie obraca się z pełną prędkością i na koniec LED error.

Po czym poznać, że wyjścia AB enkodera nie są zamienione z wejściami uC ?
Ostatnio zmieniony 07 lip 2015, 16:18 przez romek-rutkowski, łącznie zmieniany 1 raz.


steff.k
Specjalista poziom 2 (min. 300)
Specjalista poziom 2 (min. 300)
Posty w temacie: 5
Posty: 529
Rejestracja: 07 paź 2013, 20:12
Lokalizacja: Kraków/Kraśnik

#148

Post napisał: steff.k » 07 lip 2015, 14:31

Może na wstępie poustawiaj jakiej normalniejsze wartości. Ja mam takie :
%p0 400:
%p1 1000:
%p2 400:
%p3 25:
%p4 2000:
%p5 328:
%p6 256:
%p7 300:

Ja prawidłowe podłączanie enkodera rozpoznaję metodą albo jest dobrze, albo jest żle i trzeba A z B zamienić :wink: .
A jak dasz np - 700 to co się dzieje? Twój objaw wygląda na złe podłączenia enkodera lub zły sygnał z enkodera. Jakie masz napięcie na wyjściu z enk? Jaki masz schemat podłączenia?

Nie wiem czy dobrze zrozumiałem początek. Masz silnik - przekładnie - enkoder? Jeżeli tak to silnik będzie wpadał w wibracje ze względu na luzy w przekładni - nie będzie się dało ustawić PIDA.

Ten 293d ma bardzo malutki prąd. Ja przy próbach właśnie na silniczku z drukarki momentalnie wydymiłem L298 :grin:


romek-rutkowski
Sympatyk forum poziom 2 (min. 50)
Sympatyk forum poziom 2 (min. 50)
Posty w temacie: 5
Posty: 53
Rejestracja: 14 sie 2013, 15:30
Lokalizacja: Lublin

#149

Post napisał: romek-rutkowski » 07 lip 2015, 14:55

Przy tych ustawieniach które podałeś zaczęło działać :)
Ciekawe, że błędne dane tak radykalnie zmieniają działanie sterownika.

Mimo tej przekładni PID na Twoich ustawieniach sprawnie działa.

Przy okazji pracy na stykówce zauważyłem ciekawe zależności:
Jeśli przy włączonym układzie odłączymy enkoder silnik zacznie się rozkręcać powoli do swojej max prędkości i nastąpi error.
Przy innych ustawieniach wstępnych enkodera i jego odłączenie, wystąpią ciągłe obroty.


steff.k
Specjalista poziom 2 (min. 300)
Specjalista poziom 2 (min. 300)
Posty w temacie: 5
Posty: 529
Rejestracja: 07 paź 2013, 20:12
Lokalizacja: Kraków/Kraśnik

#150

Post napisał: steff.k » 07 lip 2015, 15:07

No to elegancko :mrgreen: . Dałeś nieco kosmiczne ustawienia to i kosmos się dział :razz:

Tak odłączenie enkodera powoduje niekontrolowane obroty silnika, na szczęście nigdy podczas pracy nic takiego mi się nie przydarzyło. Dla bezpieczeństwa w swojej frezarce w razie wystąpienia takiej sytuacji odłączam krańcówką silnik od sterownika i dodatkowo zwieram wyprowadzenia silnika. Gdzieś nawet na forum to wrzucałem :wink:

ODPOWIEDZ Poprzedni tematNastępny temat

Wróć do „Serwomotory / Serwonapędy / Napędy Serwokrokowe”