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

Sterownik silnika DC "Klocki rs-485" z PWM - jaki atmel

HattoriHanso 28 Gru 2011 05:56 3486 9
  • #1 10312172
    HattoriHanso
    Poziom 9  
    Witam

    Na wstępie - przeszukuję internet i elektrodę od kilku dni próbując znaleźć konkretne rozwiązanie układu jaki potrzebuję zbudować i poddaję się. Po prostu nie mam już czasu przekopywać się przez archiwalne tematy by z kilkuset postów zebrać kilka potrzebnych informacji.
    Zatem chcę tu najpierw przeprowadzić "wywiad" - jakiego mikrokontrolera użyć, jakie elementy dodatkowe wykorzystać.

    Układ docelowo ma sterować różnymi silnikami DC poprzez np mostek H lub inny układ wykonawczy wysterowany sygnałem PWM i sygnałem kierunku (logiczne 0 lub 1) - zatem na wyjściu naszego układu potrzebujemy te dwa sygnały. Polecenia będzie otrzymywał poprzez magistralę RS-485 - część układów wykonawczych maszyny, którą buduję będzie oparta na "Klockach RS-485" AVT - do moich potrzeb wystarczą, a że są dość tanie w ich sklepie...

    Założenia układu:
    - współpraca z RS-485 - masterem będzie komputer PC z aplikacją napisaną w DELPHI i konwerterem USB <=> RS485 (AVT-1600 z "Klocków RS-485"). Obsługa komunikacji DELPHI z konwerterem nie stanowi dla mnie problemu
    - układ ma generować sygnał PWM o wypełnieniu zależnym od otrzymanej z mastera komendy - np gradacja co 5% od 40% do 100%. W komendzie będzie też zawarta informacja o kierunku.
    - uC ma generować dany sygnał do momentu otrzymania innej komendy - czyli np "kręci" silnikiem, ale w międzyczasie nasłuchuje czy nie otrzyma komendy od mastera
    - możliwość awaryjnego zatrzymania i przejścia w nasłuch - przerwania w reakcji na sygnał z osobnej linii dołączonej niejako do magistrali RS-485 (czyli skrętka przesyłowa 3 przewody dwa od rs-485, trzeci to sygnał stop dla wszystkich urządzeń)
    - jeśli się da by jeden uC sterował dwoma silnikami niezależnie tzn otrzymywał np komendę w stylu "1 silnik 80% prawo, drugi silnik 70% lewo" i generował odpowiednie sygnały do momentu otrzymania innej komendy - super. Jeśli się nie da każdy silnik otrzyma swój własny kontroler.
    - częstotliwość PWM ustalana jednorazowo - programując układ pod konkretny moduł wykonawczy (np mostek plus silnik)
    - układ musi potwierdzać wykonanie komendy
    - dobrze by było gdyby mikrokontroler można było programować bez wyjmowania z płytki - ISP
    - programowanie - miło by było gdyby było w pascalu, ale nie przeraża mnie potrzeba opanowania C.
    - prostota - niech nie ponosi nikogo megalomania. Układ musi być jak najprostszy i jak najmniejszy
    - magistrala rs-485 do 32 urządzeń - więcej mi nie potrzeba, planuję pod jeden USB podłączyć około 20-25 układów wykonawczych
    - dostępność części np w tme.eu - tam się zaopatruję, więc dla uproszczenia logistyki przy tym chcę pozostać
    - mikrokontroler Atmela - z tego co widzę są najpopularniejsze, a to gwarantuje dostęp do wiedzy. I są tanie :)
    -szybkość działania - układ musi reagować na komendy relatywnie szybko - w profesjonalnych sterownikach, z którymi się spotkałem, sterowanie "real time" pozwalało na przyjęcie 4 komend na sekundę. Ja muszę mieć układ szybciej reagujący na zmiany podawane z PC -ale znów- bez megalomani

    Z informacji, które już zebrałem:
    obsługa RS-485 - w klockach AVT pośrednikiem między magistralą, a uC jest MAX485. Dla zachowania hmmm... standardu chcę wykorzystać ten układ.
    Z mojego rozeznania układy ATTINY24-20PU chyba dałyby radę (2 sprzętowe PWM, 2kb pamięci), ale czy ATTINY13A-PU też sobie poradzi? A może macie lepsze propozycje?
    Jaki kwarc do tych uC - tak by pracowały stabilnie, ale z możliwie najwyższą wydajnością - chodzi o szybkość wykonania komend podawanych z master.

    Rozpisałem się, ale na razie tyle, czekam na pomysły i propozycje.
  • #3 10312333
    MirekCz
    Poziom 35  
    1.Podstawowym "hamulcem" będzie szybkość podawania komend, a nie ich wykonywanie. Zmiana wypełnienia PWM dla mikrokontrolera to kilka cyklów zegara. Sprawdzenie danych w paczce to też kilkaset cyklów. Przy zegarze typu 16MHz zajmie to grubo poniżej 1ms. Jak w delphi piszesz zwykły program pod Windowsa a nie sterownik to przygotuj się na problemy z wysyłaniem danych jak komputer będzie obciążony innymi zadaniami (komenda sleep(0) w windowsie może się wykonywać kilkaset ms jak np. czytasz dużo danych z dysku).

    2.Praktycznie dowolna atmega/attiny wystarczy. Ze względu na łatwość programowania i dostępność pomocy polecam atmega8, chyba, że zależy Tobie na optymalizacji wymiarów/cenie to attiny będą trochę tańsze/mniejsze.

    3.Jako zegar użyj dowolnego kwarca. Standardowo atmegi mają max 16MHz (lub nowsze 20MHz) dla zasilania 5V (USB). Połączenie banalnie proste (kwarc i 2 kondensatory ~22pF do odpowiednich nóżek procesora) + zaprogramowanie fusebitów na zewnętrzny kwarc.
  • #4 10312809
    tmf
    VIP Zasłużony dla elektroda
    Nowsze ATTiny będą ok, tylko wziąłbym taki co ma z 8Kb pamięci, może się to okazać nadmiarowe, ale to praktycznie nic nie kosztuje, a będziesz miał większą swobodę.
    Nowsze ATTiny mają tą zaletę, że posiadają wspomaganie dla sterowania mostkami H , np. dead time i awaryjne wyłączanie. To się przyda jeśli mostek będziesz realizował na elementach dyskretnych. Podaj parametry sterowanych silników. Ja bym się też zastanowił nad wykorzystaniem scalonych mostków H lub mostków H zintegrowanych z kontrolerem - przejrzyj ofertę firmy allegro-micro - w TME też mają sporo ich układów, a to załatwia praktycznie całe sterowanie.
  • #5 10313582
    HattoriHanso
    Poziom 9  
    O takie informacje mi chodziło :)

    Aplikacja w Delphi będzie chodziła pod Linuksem - tu jeszcze temat otwarty, ale poradzę sobie z tym :) Wycisnę z PC maksimum możliwości :)

    O szybkość działania mikrokontrolera martwiłem się bo moja ostatnia przygoda z uC była przy bascomie i zabawach z 8051, a jak przeczytałem specyfikacje paru sterowników profesjonalnych to zacząłem mieć wątpliwości ;] Sterowniki te mają mnóstwo funkcji, które mi nie będą potrzebne i w zasadzie nie ma na rynku (a przynajmniej w ciągu ostatniego tygodnia nie dokopałem się) gotowych modułów dedykowanych magistrali RS-485 i wykonujących w sumie proste czynności.

    tmf - masz rację co do 8Kb pamięci. Zastanawiam się czy wszystkich modułów wykonawczych nie oprzeć na jednym mikroprocesorze - co ułatwi programowanie ich i zunifikuje samą produkcję płytek etc. Być może będę potrzebował zbudować więcej egzemplarzy maszyny. Przy czym dalej zależy mi na prostocie - wystarczy mi 8 wejść/wyjść w tym 2 ze sprzętowym PWM.

    Allegromicrosystems - faktycznie ciekawe propozycje mają, ale są to układy mało popularne (czyli mało informacji w necie) a mi zależy nie tylko na zbudowaniu tego konkretnego układu, ale też zdobyciu doświadczenia w dziedzinie układów uC pozwalającego potem budować samodzielnie również inne układy sterownia. Atmel daje różnorodne możliwości, a programowanie tych uC jest dość uniwersalne.

    Parametry silników nie są jeszcze ustalone - ale chcę by układ był na tyle uniwersalny na ile się da :) Na pewno będą dwa silniki o sporej mocy, prawdopodobnie 24-36V z średnim poborem 10-15A i chwilowym max 30A, ale też kilka mniejszych silników. Dlatego na razie chcę skupić się na zbudowaniu uniwersalnego modemu sterującego sygnałem pwm i sygnałami kierunku.

    Jakieś konkretne modele Attiny?

    Edit:
    do zabawy i celem nauczenia się tematu sterowania silnikami DC zamawiam właśnie:
    Link
    Link
    Link
    Jak coś z tym zdziałam nieomieszkam podzielić się rezultatami :)
  • #6 10313854
    tmf
    VIP Zasłużony dla elektroda
    No jeśli do 30A to istotnie tylko na elementach dyskretnych się da. Jeśli tak do 60V i 3A (co i tak daje 180W) to polecałbym jednak allegro-micro. Wbrew pozorom wcale nie są takie niepopularne, np. A3972 zdobył niemałą rzeszę miłośników wśród konstruktorów CNC. Sam ta tych scalakach też parę rzeczy zbudowałem.
    Co do procesora to ATTiny861 bym polecał, ma wszystko co potrzeba. Jeśli z kolei budujesz coś bardziej wypaśnego to XMega jest ok - ma bardziej rozbudowane wspomoaganie sterowania silnikami i węcej timerów - ale to do naprawdę wypasionych sterowników. Normalnie ATTiny będzie ok.
    Robiłeś już coś na styku mikrokontroler-silniki? Jeśli nie to najpierw sporo poczytaj, bo temat może nie jest skomplikowany, ale problem jest z zakłóceniami. Przy łączeniu iluśtam modułów na RS485 warto pomyśleć o optoizolacji, albo całego modułu, albo chociaż części sterującej mostkiem - oczywiście myślę tu o sterowaniu większymi silnikami.
  • #7 10314050
    HattoriHanso
    Poziom 9  
    Możliwości zakłóceń jestem świadomy. Będę starał się maksymalnie wytłumić zakłócenia z silników. Poza kondensatorami, na pewno pierścienie ferrytowe na przewody.

    Optoizolacja rs-485 - też o tym myślę.

    Co do CNC - mam za ścianą ploter plazmowy 1000x1000mm zbudowany samodzielnie z moim ojcem na silnikach krokowych i obsługiwany machem :)

    W tme jest dostępny ATTINY861V-10PU w obudowie dip20. 12 zł za sztukę to dobra cena. Do prototypu nie będę się ładował w smd, a 20Mhz raczej tu nie będzie potrzebne.
    Myślę, że to będzie dobre rozwiązanie.

    Ok to prosiłbym na tym etapie jeszcze o poradę w sprawie programatora do tego AVR-a. Założeniem projektu jest by programować uC wmontowane w układ tak by w prosty sposób móc przystosować gotowy moduł do pracy z danym elementem wykonawczym, np scalonym mostkiem h.
    Szukam więc programatorów ISP na USB (mam lpt w swoim komp, ale chcę by również narzędzia były uniwersalne - w razie jakiejś padaki żebym mógł z laptopa zaprogramować uC i wymienić.
    Żeby uprościć logistykę i obniżyć koszty szukam w dwóch źródłach - Avt i tme Tme 1 lub
    Tme 2
    Różnice w cenie spore, avt ma dobry opis urządzenia, co do tych z tme nie mogę znaleźć żadnego dokładnego opisu. Jesteście w stanie coś doradzić?
  • #8 10314315
    tmf
    VIP Zasłużony dla elektroda
    AVRISP MkII jest super, jeśli chcesz się trochę poważniej zająć mikrokontrolerami. Jeśli do tego projektu tylko to pomyśałbym o garści rezystorów do LPT :) Albo najtańszy na USB na allegro kupić za 30zł. Chociaż z przesyłką to wyjdzie tylko jakieś 30-40żł taniej niż porządny ISP MkII, więc może nie warto tak oszczędzać .
  • Pomocny post
    #10 10315353
    tmf
    VIP Zasłużony dla elektroda
    To jest klon AVRISPMkII - programator ISP/PDI, który programuje wszystkie rodziny AVR. Czyli wypas.
REKLAMA