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

Jak sterować silnikami air core za pomocą mikroprocesorów ATmega?

lewy14.1999 26 Kwi 2015 22:33 2349 6
  • #1 14648692
    lewy14.1999
    Poziom 9  
    Witam
    Jako że chciałbym zacząć przygodę z mikroprocesorami typu at-mega mógłby ktoś mi objaśnić w jaki sposób sterować silnikami typu air core.
  • #3 14649025
    lewy14.1999
    Poziom 9  
    I tu jest problem z racji tego że lm1819 jest słabo dostępny dlatego chciałbym spróbować zrobić driver na procesorze atmega8.
    Mógłby ktoś mi objaśnić w jaki sposób to zrobić ?
  • Pomocny post
    #4 14987077
    jaclew
    Poziom 18  
    Też chciałbym się zabrać za budowę wskaźnika air-core sterowanego mikrokontrolerm.
    Konkretnie celem będzie budowa obrotomierza, a platformą ma być Arduino, a więc Atmega na pokładzie + programowanie w IDE.
    Rozpoznałem temat teoretycznie, ogólnie mam zarys jak to ma wyglądać; może moje przmyślenia coś wniosą do tego tematu.

    Na marginesie dyskusji - wykonałem kilka obrotomierzy analogowych z air-core i użyłem do nich sterownika CS8190. To układ łatwo dostępny w Polsce i dosyć prosto dający się obliczyć pod konkretne założenia (wyjątek - dobór kondensatora dla funkcji "return to zero", o czym napiszę dalej). Cena układu to około 15 zł, a więc stosunkowo przystępna.
    Wada - gdy mamy wskaźnik air-core bez sprężyny powrotnej to aby wskazówka wracała do zera potrzebny będzie kondensator o dużej pojemności, który dobiera się doświadczalnie.
    Inną niespodzianką może być osiągnięcie właściwego kompromisu pomiędzy falowaniem (drganiami) wskazówki, a jej dobrą odpowiedzią impulsową.

    Tak wygląda jeden z takich moich projektów opartych na CS8190:

    Jak sterować silnikami air core za pomocą mikroprocesorów ATmega? Jak sterować silnikami air core za pomocą mikroprocesorów ATmega?

    Dlatego też zabieram się za programowe sterowanie wskaźnikiem air-core, które przy poprawnym kodzie pozbawione będzie tych niedogodności i da nowe możliwości, np. po włączeniu zasilania wskazówka wychyli się szybko do maksymalnego wskazania i opadnie z powrotem do zera.

    A oto moje dotychczasowe ustalenia: w air-core wychylenie wskazówki określa wzór:

    Kąt = arctg (Usin/Ucos)

    zatem potrzeba wysterować dwie cewki: jedną prądem, który jest funcją sinusa napięcia wejściowego (mierzonego), analogicznie cewkę drugą - funkcją cosinusa tegoż napięcia.
    Trzeba mieć przy tym na uwadze aby w odpowiednich momentach odwracać polaryzację napięcia na cewkach sinusowej i cosinusowej.
    Inaczej wskazówka będzie poruszać się tylko w zakresie 90 stopni, a chodzi o to by pokrywała zakres 360 stopni - czyli w czterech ćwiartkach układu współrzędnych.

    Jak sterować silnikami air core za pomocą mikroprocesorów ATmega?

    Do tego celu można użyć mostka "H" sterowanego odpowiednim algorytmem
    z mikrokontolera. Układ L293D wydaje się dobry do tego celu.
    Gdy znajdę więcej czasu, napiszę pierwszy szkic pod Arduino i pokażę co udało się uzyskać.
  • #5 15495227
    jaclew
    Poziom 18  
    Uruchomiłem air-core sterowany z Arduino UNO, na razie wersja minimalna na płycie prototypowej. Ważne, że działa choć z są mankamenty:
    1. nie obraca się w pełnym kącie 0..360 stopni. Blokuje się na pierwszej ćwiartce 0...90 potem już idzie
    2. gdy wskazówka przekracza kolejne ćwiartki to na krótko sie zatrzymuje, dosłownie ułamki sekund, ale jest to zauważalne.
    To już chyba wina samego L293D, który ma taką zwłokę w przełączaniu polaryzacji. A może problem leży w czyms innym...?

    Szkic:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    uproszczony schemat:
    Jak sterować silnikami air core za pomocą mikroprocesorów ATmega?

    filmik:


  • #6 15495486
    BlueDraco
    Specjalista - Mikrokontrolery
    Wyrzuć ten float, licz pozycję wyłącznie na liczbach całkowitych. To włąśnie tu możest tracić te ułamki sekund.
  • #7 15668177
    lewy14.1999
    Poziom 9  



    co może być przyczyną takiego zwalniania ?
    zamieszczam kod
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod
REKLAMA