logo elektroda
logo elektroda
X
logo elektroda
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Generator przestrajany ATMega16a Bascom

Kris_nx 20 Kwi 2010 13:45 5052 22
  • #1 7982886
    Kris_nx
    Poziom 10  
    Witam serdecznie
    Jak zabrać się do oprogramowania układu który ma spełniać następujące funkcje:

    Generalnie jest to prosty generator na bazie ATMega16a o zmiennej częstotliwości wyjściowej. zmienianej potencjometrem ale...

    Potencjometr to manipulator wychyłowy (jojstick analogowy). Układ w położeniu środkowym potencjometru ma nie generować żadnego sygnału natomiast po wychyleniu w jedną stronę ma generować sygnał o częstotliwości proporcjonalnej do wychylenia na wyjściu pierwszym układu a przy wychyleniu w przeciwną na wyjściu drugim układu (nieaktywne wyjście powinno być w tym czasie w stanie niskim)
    Dodatkowo układ powinien mieć możliwość zmiany maksymalnej częstotliwości wyjściowej w zakresie od 1kHz do 300kHz (przy pełnym wychyleniu potencjometru). Wydaje mi się że konieczna może być regulacja martwego pola w położeniu środkowym potencjometru (definicja przy jakim minimalnym odchyleniu manipulatora od położenia środkowego ma się rozpocząć generowanie. Do wizualizacji parametrów wyświetlacz LCD.

    Pot. może być zasilany napięciem symetrycznym. Tak że w pozycji środkowej na suwaku jest 0V, przy wychyleniu max w prawo np.+5 a przy max wychyleniu w lewo -5V

    Istotne jest również to żeby uzyskać max rozdzielczość przetwornika

    Z góry dziękuje za wszystkie sugestie, propozycje i pomysły:)

    Kris_nx
  • #2 7984719
    rpal
    Poziom 27  
    kolega obrał sobie zbyt ambitny projekt, sam pomysł sterowania dżojstikiem jest sporym kłopotem a to z tego powodu że były dwa rodzaje tych "urządzeń" jeden dedykowany do PC-tów miał ewidentnie zamontowane potencjometry na osiach x,Y i te od np. atari oparte na mikrostykach. Pierwszy zachowywał proporcie wychyłu drugi nie. Musisz zatem ten dylemat rozwiązać i ew. zastosować przetworniki ACD. Niestety tam była kalibracja (w tych od PC-ta) o ile na PC-cie można było to przeprowadzić niejako na ekranie to jakoś nie widzę tego na atmedze? Inną sprawą jest samo generowanie przebiegu. Nic nie piszesz o rozdzielczości a to podstawowa sprawa. Używając wprost timerów możesz zapomnieć o dokładności a samo określenie częstotliwości będzie raczej przybliżeniem a nie wynikiem założonych obliczeń i przestrajanie będzie przypominać poruszani się krokami niż płynną regulację. Proponowałbym raczej poszukać gotowych scalaków choćby PLL-i niż używac do tego atmegi. No chyba ze ew. do przestrajania. Takie oto moje opinie.
  • #3 7985199
    Kris_nx
    Poziom 10  
    Witam

    Jojstick juz mam i jest on wyposażony w dwa wysokiej klasy potencjometry.
    To poprostu profesjonalny przemysłowy manipulator. Tak że na wyjściu jojstika mam napiecie analogowe proporcjonalne do wychylenia.
    W zależności od sposobu zasilenia potencjometru mogę mieć 0V w pozycji środkowej i np +/- 5V w skrajnych położeniach lub przy zasilaniu pojedyńczym napięciem 2,5V w pozycji środkowej, 0 w lewej skrajnej pozycji i +5V w prawej.

    Myślałem o pomiarze tego napięcia za pomoca przetwornika A/C mikrokontrolera i przestrajanie generatora zależnie od pomiaru (coś w rodzaju VCA)

    Jeśli chodzi o rozdzielczość to myśle ze na początek 10bit ATMegi powinno wystarczyć. max częstotliwość wyjściowa 500kHz dzielona przez 1024 daje 488Hz
    Myśle że w praktyce f wy bedzie ustawione na ok 250kHz co da nam rozdielczość ok 244Hz. Jak się okaże że to za mało to w kolejnej wersji można zastosować zewnętrzy przetwornik np 16 bitowy
    Zastanawiam się czy dało by rade zrobić tak żeby jeden z przetworników procesora pracował dla napięcia dodatniego a drugi dla ujemnego wtedy mielibysmu defakto dwa razy większa rozdzielczość.
  • #4 7985394
    Konto nie istnieje
    Poziom 1  
  • #5 7985576
    Kabuto15
    Poziom 19  
    Kris_nx widzę, że zależy Ci na dokładności. Czy zamierzasz użyć tych manipulatorów do sterowania czegoś większego ?
  • #6 7985589
    rpal
    Poziom 27  
    moze pomogłoby połaczenie kilku programowanych równolegle liczników i na tej podstawie (przy odpowiedniej częstotliwości zegara) programować go wartością przy której liczniki zgłaszałyby przerwanie (przeniesienia albo pożyczki w zależności w którą stronę by liczył) wówczas może by można było mówić o nieco płynniejszej regulacji częstotliwości. Tylko nie wiem czy 32 bity by tu starczyło a może i jeszcze więcej, trzeba by było to policzyć. No i oczywiście rozwiązać problem odczytu potencjometrów i zamiany ich wartości na odpowiednią liczbę niezbędną do zaprogramowania kaskady liczników. Wtedy ten atmega miałby już co tutaj robić czyli odczytywać potencjometry i programować liczniki :) Nie wiem czy przypadkiem nie lepszy by się okazała jakiś Cortex bo jego timery są już 32 bitowe bo gdy się weźmie pod uwagę ilość dodatkowych timerów, koniecznośc ich zaprogramowania czyli z kolei brak odpowiedniej ilości pinów na portach gra jest warta świeczki przy atmedze. Tym bardziej że w ślad za zmianą wartości timera trzeba nadążyć ze zmianą na przeciwny stan, wyjścia odpowiedzialnego za końcowy przebieg generatora z czym taki cortex przy swoim np 72MHz zegarze zrobi to w mgnieniu oka a atmega juz zdecydowanie wolniej.
  • #7 7986120
    Kris_nx
    Poziom 10  
    Witam wszystkich

    Dziękuje za cenne uwagi.
    opisany generator ma być elementem sterującym dla silnika krokowego.
    Mam zamiar zastosować sterownik pracujący mikrokrokowo z podziałem 1:10000 (akceptuje on zegar do 5000kHz)
    Sterownik jest gotowy wymaga jedynie podania zegara w takt którego będzie się obracał silnik. Zmiana kierunku odbywa się przez podanie zegara na inne wejście lub wystawienie flagi na odpowiednim wejściu (wtedy zegar podawany jest stale na jedno wejście)

    A gdyby zastosować zewnętrzny zestaw liczników do których wartość do odliczenia ładowana by była z procesora. Liczniki taktowane własnym zegarem pracowałyby jako programowalny dzielnik a procesor jedynie by służył do ładowania współczynnika podziału. Wtedy rola procesora ogranicza się do nadzorowania całego procesu i obsługi potencjometru i wyświetlacza.
  • #8 7986160
    Konto nie istnieje
    Poziom 1  
  • #9 7987568
    Kris_nx
    Poziom 10  
    Przyznaje że nie bardzo rozumiej jak wykorzystać zewnętrzną pętle PLL do budowy generatora o zmiennej częstotliwości.
    Możesz napisać coś więcej?
  • #10 7987753
    Konto nie istnieje
    Poziom 1  
  • #11 7988183
    janbernat
    Poziom 38  
    Kris_nx- coś Ci się chyba pomyliło.
    5000kHz to jest 5Mhz.
    Nie znam takiego sterownika do silnika krokowego- i w zasadzie nie chcę znać.
    Taki sygnał jak doprowadzić do sterownika?
    Koncentrykiem?
    Wydaje mi się że może to być 50kHz.
    Jest to sygnał STEP określający o ile silnik się obróci.
    W tym wypadku pewnie o 1/10000 kroku na jeden STEP-chociaż raczej sprawdź.
    Silnik ma zwykle 180 kroków/obrót.
    Czyli jeden sygnał spowoduje obrót o 55 milionowych części okręgu.
    Zmiana częstotliwości sygnału STEP powoduje zmianę szybkości obrotowej silnika.
    Silniki tego typu osiągają niekiedy 5obr/s -czyli dla tej szybkości musiałbyś podać STEP z częstotliwością 275MHz.
    A przy dolnej granicy czekałbyś na pełen obrót silnika setki milionów sekund.
    Oczywiście zdajesz sobie sprawę że nie sterujesz położeniem ale prędkością?
    Taki "sterownik" do sprawdzania silników w maszynie zrobiłem na NE555 i zwykłym potencjometrze- niestety schemat mi wcięło- ale sterownik jest.
  • #12 7988193
    Konto nie istnieje
    Poziom 1  
  • #13 7988507
    janbernat
    Poziom 38  
    Fakt, w drugim poście jest 500kHz- ale w trzecim 5000kHz.
    Obie te prędkości niemożliwe- jak dają możność wysterowania sterownika 50kHz to bardzo się tym chwalą.
    Poza tym- komu jest potrzebna taka rozdzielczość przy prędkości?
    Bo przy położeniu- rozumiem- jakiś mikroskop z b. dużym powiększeniem i do tego pozycjoner.
  • #14 7990308
    Kris_nx
    Poziom 10  
    witam
    Faktycznie w jednym poście wkradł się błąd sterownik akceptuje max 500kHz a nie 5000kHz przepraszam za pomyłkę mój błąd.
    Dane na temat sterownika i jego parametrów podał mi przedstawiciel producenta na ostatnich targach automatikon. Też mi się to wydawało dużo ale sprawdziłem w dokumentacji i faktycznie 500kHz
    http://www.fastech.co.kr/English/Ezi-STEP-ST_DriverSpec.html

    Tak czy owak w dalszym ciągu zastanawiam się jak zrealizować układ generatora.
    Ostatnio wpadłem na pomysł zastosowania scalonego generatora VCO LM331 ale układ ten pracuje max do 100kHZ a dodatkowo całość byłaby realizowana analogowo.
  • #15 7992805
    janbernat
    Poziom 38  
    Sterownik jest uniwersalny- możesz wybrać dużą rozdzielczość kosztem prędkości maksymalnej.
    Przy rozdzielczości 10000 i częstotliwości sterującej 500kHz uzyskasz ok. 0,28obr/s dla przeciętnego silnika.
    Dla maksymalnej rozdzielczości 50000 uzyskasz ok. 0,056obr/s.
    Przeciętny silnik osiąga ok. 5obr/s zanim zacznie gubić kroki.
    Tak że coś za coś- albo duża rozdzielczość albo znośna prędkość.
    To dotyczy przeciętnego silnika mającego 180 kroków na obrót.
    Są układy w których prędkość ma małe znaczenie- a rozdzielczość duże.
    No ale wymagane dokładności mechaniczne do takich urządzeń są takie że wszystkie problemy sterowania to jest "mały pikuś"
  • #16 7992902
    Konto nie istnieje
    Poziom 1  
  • #17 7993108
    janbernat
    Poziom 38  
    Zwłaszcza że dokładność generowanych impulsów dotyczy tylko prędkości z jaką obraca się silnik ustawianych za pomocą potencjometru.
  • #18 7994250
    Kris_nx
    Poziom 10  
    witam wszystkich

    Silnik krokowy mam być sterowany w ten sposób że wraz z wychyleniem manipulatora obraca się coraz szybciej. Dodatkowo musi być nastawialna prędkość maksymalna.
    W odpowiedniku analogowym wyglądało by to tak że jednym potencjometrem ustawiam fmax generatora a manipulatorem przestrajam generator od zero do fmax. Rozwiązanie analogowe jest dość proste na jednym z dostępnych układów VCA.
    Ja chciałbym zrealizować te funkcje na mikro kontrolerze bo chciałbym mieć wizualizacje parametrów fmax i regulacje okna "martwego" w położeniu środkowym.
    Z dotychczasowej dyskusji widać że jedyny problem to zaimplementowanie generatora który będzie przestrajany liniowo tak żeby uzyskać stałą wartość f na stopień wychylenia manipulatora. Ktoś wspomniał wcześniej że można coś takiego zbudować w oparciu o zewnętrzne PLL. ale kompletnie nie rozumiej jakby to miało działać.
    Może dobrym rozwiązaniem byłoby zastosowanie ATMegi do czytania manipulatora za pomocą wew ADC i dwóch zewnętrznych przetworników DA do przestrajania zewnętrznego generatora VCA i ustawiania fmax. Co o tym sądzicie?
  • #19 7994370
    Konto nie istnieje
    Poziom 1  
  • #20 7994869
    ktrot
    Poziom 20  
    @Kris_nx, użyj generatory serii AD983x, szczególnie polecam AD9833 - jest 8 pinowy, daje na wyjściu prostokąt a dokładność ustawianej częstotliwośći przy fmax=500kHz to 0,002Hz. Inne jak np. AD9835 to typowe DDS dają sinus a więc dodatkowo jakiś komparator na wyjściu byłby potrzebny. Fmax możesz ustawiać w mikroprocesorze.
    Co do manipulatora to, jeżeli masz trochę zdolności mechanicznych, możesz wykorzystać czujnik z myszy optycznych. Nawet te najprostsze myszy dają dokładność 1200 punktów na cal, a więc ponad 10 bitów na cal. Niektóre, szczególnie starsze myszy mają w sobie czujniki z wyjściem SPI co szczególnie łatwo obsłużyć w uC. W nowszych spotkałem głównie enkodery prostokątne z przesuniętymi o 90° przebiegami. Też da się to oprogramować.
    Jeżeli zostaniesz przy potencjometrach to 10 bitów przy pewnej staranności da się uzyskać szczególnie, że nie potrzebujesz dużej częstotliwości samplowania - wchodzi więc w rachubę oversampling.
  • #21 7995105
    Kris_nx
    Poziom 10  
    Faktycznie ten analog wydaje się być idealnym rozwiązaniem.
    Wielkie dzięki.
    Jeśli chodzi o manipulator to mam już takowy bazujący na potencjometrach. Zobaczymy jak się będzie spisywał w prototypie jeśli wypadnie słabo to pomyśle o innym może właśnie na jakiś enkoderach. Chciałbym uniknąć własnoręcznego robienia manipulatora bo jest szansa na komercjalizacje projektu a wtedy manipulator musi być "sklepowy".

    Ok skoro hardware wybrany to można zamawiać układy i brać się za program.
    Dziękuje wszystkim za pomoc.

    Zapewne za jakiś czas poproszę o pomoc przy pisaniu programu. ale najpierw chce mieć wszystkie elementy na stole.

    Pozdrawiam
    Kris
  • #22 7996549
    janbernat
    Poziom 38  
    A zanim to zrobisz podaj na ten sterownik zwykły sygnał prostokątny 500kHz z jakiegoś generatora zrobionego na HC14.
    No i podłącz silnik.
    Zasilacz 24V pewnie już masz.
    Ciekawy jestem efektów.
  • #23 8241904
    Kris_nx
    Poziom 10  
    Witam ponownie

    Zgodnie z ostatnią sugestią przeprowadziłem testy sterownika silników krokowych podając mu zegar z generatora zbudowanego na ne555. Musze przyznać że całość pracowała nadspodziewanie dobrze. Silnik krokowy obracał się bardzo bardzo płynnie nawet przy obrotach rzędu 0,3obr/min żadnych wyczuwalnych skoków.
    Sterownik zapewnia bardzo dynamiczną prace całego napędu i zgodnie z tym co napisał producent max f sygnału sterującego to 500kHz. Dodatkowo silnik był wyposażony w enkoder 10000 imp/obr który powodował że silnik nie gubił kroków pomimo pracy mikrokrokowej 1/1000 kroku. Naprawdę nie spodziewałem się że krokowiec potrafi tak dużo.
    Inna sprawa że całość pomimo imponujących osiągów nie nadaje się do mojej aplikacji i w związku z tym planuje przeprowadzić kolejne testy tym razem z silnikiem momentowym BLDC. Problem jedynie ze znalezieniem tego typu silników. Myślę nawet o budowie takiego silnika. Puki co zbieram info i uczę się jak to wykonać. Profesjonalny serwowzmacniacz do niego już mam.

    Pozdrawiam
    CDN
    .
REKLAMA