Elektroda.pl
Elektroda.pl
X
Tektronix
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

[Atmega16][C] Sterowanie napędem rotora, PWM

09 Sie 2011 00:12 8185 55
  • Poziom 9  
    WSTĘP:

    Muszę wykonać projekt bazujący na Atmega16, który opiszę (jak najdokładniej i zwięźle) poniżej. Na wstępie chciałbym zaznaczyć- co najważniejsze- że nie oczekuję żadnych gotowych rozwiązań, odwalenia roboty itp. przede wszystkim zależy mi na dwóch rzeczach- abym projekt ten wykonał w pełni i abym zrozumiał i nauczył się wszystkiego co z tym związane. Jestem człowiekiem w stosownym wieku, i bardzo potrzebuję konkretów i poszerzenia wiedzy, jednocześnie jest to dla mnie sprawa poniekąd zawodowa, dlatego goni mnie termin. Zwracam się zatem do osób cierpliwych, chcących podzielić się wiedzą, i poniekąd wyrozumiałych dla AVR'owego laika.

    Na wykonanie tego projektu miałem dwa tygodnie- przez ostatni tydzień pracowałem całkowicie sam (z wszelkimi pomocami jak artykuły, książki itp.) lecz pozostał tydzień i widzę, że nie potrafię zrozumieć/ nauczyć się tylu rzeczy, aby w tym czasie wszystko zrobić.

    Na elektronice znam się ogólnikowo- świat AVR dopiero poznaję, więc zadanie jest dla mnie naprawdę ciężkie. Udało mi się skonfigurować i podłączyć programator USBasp, pracuję w środowisku WinAVR. Nauczyłem się zapalać diody, obsługiwać przyciski i wyświetlacz, lecz pojęcia przerwań, rejestrów, timerów to dla mnie jeszcze magia- a wiem, że muszę to wszystko przyswoić w krótkim czasie.

    Wiem, że to co opiszę poniżej to dla wielu osób chleb powszedni i są w tym obeznane, więc mam nadzieję, że uzyskam pomoc w ogarnięciu tematu. Przez najbliższy tydzień będę spędzał nad tym dzień i noc- również tu na forum w tym wątku, abym mógł posuwać się z pracą do przodu i zakończyć w terminie.

    PROJEKT:

    W załączniku zamieszczam rysunek poglądowy, jak i schemat, który opracowałem sam.

    Patrząc na rysunek sch_ideowy.jpg :

    Na ramieniu zamontowany będzie silnik wraz z rotorem (śmigłem). Poprzez sterowanie silnikiem metodą PWM ramię będzie się podnosić, dzięki czemu będzie możliwy pomiar kąta odchylenia przy pomocy enkodera magnetycznego z magnesem zamontowanym na osi. Sterowanie odbywa się poprzez przyciski, zwracanie danych przez wyświetlacz LCD (zgodny z HD44780).

    Podstawowe informacje i założenia:

    - bazą układu jest zestaw ARE 0061 (link: http://are.net.pl), zatem podłączenie zasilania 5V, przycisków, wyświetlacza nie jest problemem.

    - układ musi być sterowany metodą PWM

    - odczyt pomiaru kąta oparty o układ AS 5040 firmy Austriamicrosystems

    - dwa tryby pracy:

    1. manualny: poprzez wciskanie 1 z 4 klawiszy zmiana położenia ramienia odpowiednio o +/- 1% oraz +/- 5%, dynamicznie- w trakcie pracy układu

    2. auto: polegający na tym, że użytkownik wpisze wartość kąta (np. 45 stopni) i po wciśniećiu przycisku uruchamiającego procedurę, procesor na podstawie danych z enkodera wysteruje silnik do odpowiedniej wartości.


    Ciężko od razu opisać wszystkie nurtujące mnie pytania, lecz zacznę od tego, że najgorszym dla mnie etapem będzie programowanie- gdyż mało się na tym znam, dlatego też wybrałem język C, gdyż w nim już troszkę pracowałem.

    Plik schemat1.sch przedstawia wykonany przeze mnie w programie Eagle schemat układu.

    Myślę, że pierwszym etapem będzie konstruowanie- a programowaniem zająłbym się później, gdy już wszystko będzie gotowe. Dlatego na początek proszę o przejrzenie schematu i naprowadzenie mnie (jeżeli nie wszystko jest dobrze, a to razej pewne) w jaki sposób połączyć ze sobą wszystkie elementy aby układ po zaprogramowaniu działał tak jak opisałem.

    Zasilanie +5V jest zapewnione na płytce.

    Od lewej jest układ AS 5040- wyczytałem w dokumentacji, że do pinów VDD5V i VDD 3V3 trzeba podłączyć odpowiednie kondensatory. Wiem, że niektóre piny Atmega16 odpowiadają za PWM i za przerwania ale podłączałem trochę na "czuja", bo jeszcze nie wiem jak to działa.

    Wyświetlacz podłączyłem do portu PA gdyż jego alternatywne funkcje nie będą (chyba) wykorzystane.

    Znalazłem układ L293D, który nadaje się do sterowania silnikami i uznałem po przeczytaniu dokumentacji, że będzie idealny do tego projektu. Pin 1-2EN poprzez dostanie stanu wysokiego odblokuje wejścia/wyjścia 1 i 2. Na wejście 1A i 2A podałem piny PD4 i PD5, gdyż chyba tam jest alternatywna funkcja generowania PWM z Atmega 16. VCC2 będzie napięciem zasilania silnika, póki co jest to 12V.

    Co do silnika- jaki wybrać? wiem, że musi to być zestaw modelarski (RC) razem ze śmigłem. Płytka jest zasilana napięciem 12V i chciałbym zasilić silnik właśnie z płytki, czyli o maksymalnym napięciu 12V.


    Czy taki układ ma wogóle sens? Czy może potrzebuję jeszcze innych podzespołów a nawet o tym nie wiem.

    O ile zrozumiałem zasadę działania PWM, tak przetworzenie tego na język programistyczny jest dla mnie w tym momencie magią. Czytałem inne tematy na tym forum, lecz nie rozumiem wielu elementarnych rzeczy. JAk sprawić, żeby procesor poprawnie odczytywał dane z enkodera magnetycznego i przekazywał je dalej na silnik. Czy potrzebny jest jeszcze przetwornik C/A?

    Czy dobrze będzie najpierw zabrać się za konstruowanie a potem uczyć to oprogramować?

    Jeżeli coś wytłumaczyłęm niejasno oczywiście się poprawię.

    Z góry chciałbym podziękować osobom chętnym pomóc, wytłumaczyć i naprowadzić na rozwiązanie tego problemu. Pozdrawiam.


    EDIT: dodałem schemat w pliku graficznym.
  • Tektronix
  • Moderator Mikrokontrolery Projektowanie
    Załącz schemat w postaci pliku graficznego.
    Jako że masz zaledwie 0,89pkt to na początek 50pkt ode mnie bo mogą Ci się przydać - to tak z racji pokrewnego wieku :)

    Skoro bazą jest gotowy zestaw ARE0061: http://are.net.pl/file.php?id=75
    to rozumie, że ten schemat jest tylko ideą i nie musimy dodawać uwag, dot, filtrowania zasilania itp?
  • Poziom 9  
    dodałem schemat graficzny w pierwszej wiadomości.

    nie doczytałem od czego są te punkty (przeczytałem tylko o czym wolno i jak poprawnie pisać w dziale ) niemniej jednak dzięki ;)

    co do uwag- przydadzą się wszystkie.

    czytałem w innym temacie, że przy PWM najlepiej oddzielnie zasilać silnik, lecz mam gotowe wyprowadzenie z płytki na +12V, można wstawić jakiś stabilizator, ewentualnie właśnie filtracja a wtedy to oszczędzi mi cennego czasu- o ile takie rozwiązanie jest możliwe oczywiście.

    Ogólnie na płytce są już procesor, wyświetlacz, przyciski- lecz każdy kolejny element- jak enkoder magnetyczny i układ sterowania silnikiem chcę wlutować na drugą płytkę i połączyć w całość. Enkoder będzie na małej płytce uniwersalnej TSSOP32, gdyż musi znajdować się vis a vis magnesu. Z tego co wyczytałem można zastosować złącze typu KANDA i tak podłączyć enkoder do głównej płytki.


    EDIT: źle zrozumiałem sprawę z punktami, myślałem, że każdy kto ściągnie plik dostanie punkt, a nie odda swój. kolega mnie naprowadził, błąd poprawiłem.
  • Moderator Mikrokontrolery Projektowanie
    Ziomal04 napisał:
    EDIT: źle zrozumiałem sprawę z punktami, myślałem, że każdy kto ściągnie plik dostanie punkt, a nie odda swój. kolega mnie naprowadził, błąd poprawiłem.

    Ale nie to miałem na myśli. Swoich punktów miałeś zaledwie 0,89. Aby zadawać pytania na forum trzeba mieć określoną (zależnie od działu) ilość punktów którymi płacisz za zadane pytanie (rozpoczęty temat). Dlatego ofiarowałem Ci 50pkt i teraz masz 50,89pkt :)
  • Poziom 9  
    tak tak wiem, aczkolwiek ustawiłem limit punktów przy pobieraniu rysunków i inny kolega zwrócił mi na to uwagę. niemniej jednak już wszystko w normie.


    Czy zatem mogę liczyć na pomoc? Zastanawiam się trochę czy napisałem wątek w złym dziale lub w niewłaściwy sposób, gdyż jesteś jedyną osobą, która wogóle się udzieliła- a myślałem, że wywinie się mała "burza mózgów", która mnie czegoś nauczy.

    Nadal oczywiście brnę w przód sam, lecz wiem, że bez pomocy pewnych rzeczy nie przeskoczę.
  • Tektronix
  • Moderator Mikrokontrolery Projektowanie
    Zamieszczę rysunki tak, aby były widoczne:

    [Atmega16][C] Sterowanie napędem rotora, PWM [Atmega16][C] Sterowanie napędem rotora, PWM


    No to po kolei, najpierw ogólnie:

    1.
    Ziomal04 napisał:
    ... lecz pojęcia przerwań, rejestrów, timerów to dla mnie jeszcze magia

    To nie jest trudne, zadaj konkretne pytania a podpowiemy.


    2.
    Ziomal04 napisał:
    ... więc mam nadzieję, że uzyskam pomoc w ogarnięciu tematu. Przez najbliższy tydzień będę spędzał nad tym dzień i noc- również tu na forum w tym wątku, abym mógł posuwać się z pracą do przodu i zakończyć w terminie.

    Dasz radę, a chętnych do pomocy będzie zapewne co najmniej kilku :)


    3.
    Ziomal04 napisał:
    Czy taki układ ma wogóle sens?

    Jak najbardziej, ciekawy projekt edukacyjny.


    4.
    Ziomal04 napisał:
    O ile zrozumiałem zasadę działania PWM, tak przetworzenie tego na język programistyczny jest dla mnie w tym momencie magią.

    To jest proste i się tym nie martw. Uzyskasz płynną regulację silnika, a to Ci jest potrzebne.


    5.
    Ziomal04 napisał:
    JAk sprawić, żeby procesor poprawnie odczytywał dane z enkodera magnetycznego ...

    W tym temacie nie mam doświadczenia, więc może ktoś z kolegów odpowie?

    6. Na schemat, zerknę za parę minut.

    Hmm, ale będziesz musiał się bardzo sprężyć, by z czarnej magii w ciągu tygodnia ten projekt zrobić.
  • Poziom 9  
    co do konkretów:

    1. Najpierw chciałbym mieć pewność co do schematu i podłączenia wszystkiego. Z racji braku czasu nie mogę sobie pozwolić na błędy.

    Proszę zatem o uwagi do schematu- czy brakuje jakichś elementów do działania takiego układu? Czy potrzebuję w którymś miejcu przetwornik C/A ? Jeśli tak to gdzie, za enkoderem, czy między procesorem a L293D? Czy może zostać bez niego?

    2. Z tego co wyczytałem w dokumentacji ATmega16 piny PD4 i PD5 jako alternatywną funkcję mają właśnie generowanie PWM. Czy podłączenie do nich wejść L293D jest właściwe? Enkoder AS5040 ma dwa piny do generowania przebiegu kwadraturowego A i B, jeden Index- pozycja mechanicznego zera i jeden właśnie do PWM- czy to obojętne gdzie je podłączę do Atmegi?

    3. Zasilanie silnika- czy faktycznie może być z jednej płytki? Całą reszta jest stabilizowana na 5V, lecz mog zaraz za zasilaniem +12V zrobić stabilizację pod napięcie silnika i poprowadzić je jakby osobno.

    4. Czy pin 1-2EN w L293D ma być podłączony do procesora czy może do zasilania +5V (aby uzyskać na nim stan wysoki).

    5. Czy podłączając silnik DC na wyjściu L293D potrzebuję go jeszcze jakoś zabezpieczyć, czy wystarczy wpięcie bezpośrednio za układ (w JP1 na schemacie)


    Myślę, że jeśli zostaną rozwiązane kwestie projektowo- montażowe zacznę zadawać pytania typowo związane z programowaniem i architekturą mikroukładów.

    Z drugiej strony wiem, że można zaprogramować PWM i testować go rozjaśniając diody (odpowiednik trybu manual w moim projekcie) więc równolegle przymierzę się do tego, żeby nie tracić czasu.


    EDIT: czy wogóle Atmega16 wystarczy do tego zadania czy lepiej zamienić ją na Atmega32, która posiada o dwa wyjścia PWM więcej.
  • Pomocny post
    Moderator Mikrokontrolery Projektowanie
    Do schematu:

    L293D - czy jest potrzebny?
    Jeżeli dobrze rozumie działanie tego projektu, silnik wraz ze śmigłem kręcić się będzie zawsze tylko w jedną stronę. Jeżeli tak to do sterowania nim wystarczy tranzystor sterowany PWM:
    https://www.elektroda.pl/rtvforum/topic913763.html
    http://rab.ict.pwr.wroc.pl/~arent/rr/mpr/elektronika2.html

    Skoro chcesz wszystkich uwag, to zobacz minimalne podłączenia AVR-ów:
    http://mikrokontrolery.blogspot.com/2011/04/minimalne-podlaczanie-pinow.html

    AS5040 nie sprawdzam, bo jak już pisałem nie mam z nim doświadczenia. Prośba to kogoś kto miał, by sprawdził.



    Ziomal04 napisał:
    Czy potrzebuję w którymś miejcu przetwornik C/A ? Jeśli tak to gdzie, za enkoderem, czy między procesorem a L293D? Czy może zostać bez niego?

    Przetwornik C/A - a do czego chciałbyś go stosować? Coś mi się zdaje, że nie wiesz, co to PWM:
    http://mikrokontrolery.blogspot.com/2011/04/pwm-co-to-takiego.html




    Ziomal04 napisał:
    EDIT: czy wogóle Atmega16 wystarczy do tego zadania czy lepiej zamienić ją na Atmega32, która posiada o dwa wyjścia PWM więcej.

    Atmega16 będzie się nudzić w 95%, a może nawet bardziej :-)


    Ziomal04 napisał:
    Zasilanie silnika- czy faktycznie może być z jednej płytki? Całą reszta jest stabilizowana na 5V, lecz mog zaraz za zasilaniem +12V zrobić stabilizację pod napięcie silnika i poprowadzić je jakby osobno.

    Ponieważ nie masz czasu na błędy to osobne zasilanie silników pozwoli Ci na zmniejszenie ewentualnych problemów z uruchamianiem układu (zakłóceń).
  • Poziom 9  
    CO do L293D- akurat mam dostęp do paru sztuk tego układu, więc wolałbym robić wszystko właśnie na nim.

    Tematy z bloga, które zasugerowałeś (zarówno dotyczące minimalnych podłączeń jak i PWM a także inne czytałem po parę razy już wcześniej).

    Ja rozumiem zasadę działania PWM ale tak jak pisałem wcześniej nie odnajduję się z tym w świecie mikrokontrolerów.

    Rozumiem, że w Atmedze generacja PWM następuje poprzez timery i rejestry- jeżeli podłączę wyprowadzenia bezpośrednio na L293D to w jaki sposób jest to przetwarzane na sygnał analogowy i podawane do silnika?


    Prosiłbym o dokładniejsze odpowiedzi na punkty 2,4 oraz 5 z mojego poprzedniego postu.

    Staram się zadawać jak najdokładniejsze pytania.


    EDIT: czy w takim razie mogę brać się za lutowanie według mojego schematu, bez obaw, że coś będzie nie tak? czy ktoś mógłby potwierdzić, że nie ma tam jakiegoś głupiego błędu?

    Czy przyciski są prawidłowo podłączone- a może powinny być podłączone nie do masy a do zasilania, żeby przy zwarciu wywoływać na portach stan wysoki?

    Czy ktoś mógłby się wypowiedzieć co do sposobu podłączenia AS 5040 ? Z chęcia wysłucham dodatkowych rad i opinii.
  • Moderator na urlopie...
    przyciski powinny być podłączane do masy, więc jest z nimi ok, PWM nie jest w żądne sposób przetwarzany na sygnał analogowy... PWM to regulacja współczynnika wypełnienia i na wyjściu (za L293D) też będziesz miał taki przebieg na silniku, stąd regulacja jego obrotów nie będzie na pewno płynna w zakresie 0-100% ;-)
    A czy w ogóle programowałeś kiedyś mikrokontrolery?
    Poza tym, czemu LCD w trybie 8-bit?
    Co do modułu to wszystko powinno być w jego dokumentacji...
  • Poziom 9  
    jak pisałem w pierwszym poście zabawę z AVR zacząłem trochę ponad tydzień temu- zdaję sobie, że trochę porywam się z motyką na słońce.

    rozumiem, że LCD powinien być w trybie 4bit?

    czy poza tym zaprezentowany na schemacie układ potrzebuje jeszcze czegoś czy ma szansę działać?
  • Pomocny post
    Moderator na urlopie...
    Powinien działać, ale:
    1. brak kondensatorów przy zasilaniu - dodaj kondensatory 100nF przy procesorze i innych scalakach między VCC a GND
    2. końcówka E potencjometru R1 powinna być podłączona do VCC
    3. LCD może być w trybie 8bit - w necie też są biblioteki
  • Moderator Mikrokontrolery Projektowanie
    Ziomal04 napisał:
    CO do L293D- akurat mam dostęp do paru sztuk tego układu, więc wolałbym robić wszystko właśnie na nim.

    OK.


    Ziomal04 napisał:
    Tematy z bloga, które zasugerowałeś (zarówno dotyczące minimalnych podłączeń jak i PWM a także inne czytałem po parę razy już wcześniej).

    Czytałeś, ale do schematu nie zastosowałeś. Dodam więc jeszcze jeden link:
    http://mikrokontrolery.blogspot.com/2011/04/zasilanie-mikrokontrolera.html



    Ziomal04 napisał:
    Rozumiem, że w Atmedze generacja PWM następuje poprzez timery i rejestry- jeżeli podłączę wyprowadzenia bezpośrednio na L293D to w jaki sposób jest to przetwarzane na sygnał analogowy i podawane do silnika?

    Dość obrazowo wytłumaczył to kol. piotrva, a ja dodam że na filmiku z linku dot PWM (który podałem wyżej) możesz zobaczyć, jak wypełnienie sygnału przekłada się na średnie napięcie. Autor pokazuje tam ten efekt na oscyloskopie.

    Skoro zasilasz silnik napięciem 12V, a dostarczasz sygnał PWM z wypełnieniem 75% to otrzymujesz średnie napięcie 9V, co przekłada się na mniejsze obroty silnika niż maksymalne przy 12V. Nie trzeba więc żadnego przetwornika C/A bo zastępuje to PWM.



    Ziomal04 napisał:
    Czy w takim razie mogę brać się za lutowanie według mojego schematu...?

    Robisz to na płytce uniwersalnej czy lutujesz na AER061?
    http://are.net.pl/?id=products&cmd=9&pid=61
  • Moderator na urlopie...
    No z tym napięciem średnim to nie tak do końca różowo jak mówi kolega dondu - mimo wszystko częstotliwość daje o sobie znać przy pracy z silnikami i nie jest to takie dokładne... Żeby nie zamęczyć się obliczeniami najlepiej wartości pwm dobrać doświadczalnie do danego silnika. Czasem pomaga kondansator elektrolityczny równolegle przy silniku - wtedy napięcie jest bardziej "średnie". Mimo wszystko trzeba te wartości dobierać eksperymentalnie.
    Poza tym przed lutowaniem ZAWSZE wykonuj prototyp na płytce stykowej.
  • Pomocny post
    Moderator Mikrokontrolery Projektowanie
    piotrva napisał:
    No z tym napięciem średnim to nie tak do końca różowo jak mówi kolega dondu - mimo wszystko częstotliwość daje o sobie znać przy pracy z silnikami i nie jest to takie dokładne...

    Napisałem teorię, która odpowiada filmikowi.
    Ale oczywiście na to wszystko nakładają się tak jak podaje piotrva, jeszcze inne zjawiska fizyczne, tym bardziej, że tutaj śmigło na silniku będzie, więc opory będą rosły nieproporcjonalnie do obrotów, tylko szybciej.

    Co do podłączenia L293D to fajnie opisane jest tutaj (zobacz rys 10):
    http://www.forbot.pl/forum/topics20/mostek-h-h-bridge-vt111.htm
  • Moderator na urlopie...
    dondu napisał:
    piotrva napisał:
    No z tym napięciem średnim to nie tak do końca różowo jak mówi kolega dondu - mimo wszystko częstotliwość daje o sobie znać przy pracy z silnikami i nie jest to takie dokładne...

    Napisałem teorię, która odpowiada filmikowi.
    Ale oczywiście na to wszystko nakładają się tak jak podaje piotrva, jeszcze inne zjawiska fizyczne, tym bardziej, że tutaj śmigło na silniku będzie, więc opory będą rosły nieproporcjonalnie do obrotów, tylko szybciej.

    No jak mówię - to wszystko do dobrania raczej eksperymentalnie, chyba, że kolega jest orłem z fizyki i elektroniki i wszystko policzy uwzględniając wszystkie czynniki, dobór częstotliwości PWM itp. itd. ;-)
  • Poziom 9  
    dondu napisał:


    Robisz to na płytce uniwersalnej czy lutujesz na AER061?
    http://are.net.pl/?id=products&cmd=9&pid=61


    Enkoder magnetyczny znajdzie się na płytce uniwersalnej TSSOP32 gdyż musi być naprzeciwko magnesu zamieszczonego na osi obrotu.


    Układ L293D chciałbym wmontować w płytkę uniwersalną i podłączyć przy pomocy kabli do procesora na płytce ARE 0061


    piotrva napisał:
    Powinien działać, ale:
    1. brak kondensatorów przy zasilaniu - dodaj kondensatory 100nF przy procesorze i innych scalakach między VCC a GND
    2. końcówka E potencjometru R1 powinna być podłączona do VCC
    3. LCD może być w trybie 8bit - w necie też są biblioteki


    Dzięki za uwagi, naniosłem poprawki, myślę, że teraz wszystko będzie dobrze.



    Muszę powiedzieć, że wiem już znacznie więcej niż jeszcze parę dni temu. Link z opisem L293D też bardzo pomógł.


    piotrva napisał:
    dondu napisał:
    piotrva napisał:
    No z tym napięciem średnim to nie tak do końca różowo jak mówi kolega dondu - mimo wszystko częstotliwość daje o sobie znać przy pracy z silnikami i nie jest to takie dokładne...

    Napisałem teorię, która odpowiada filmikowi.
    Ale oczywiście na to wszystko nakładają się tak jak podaje piotrva, jeszcze inne zjawiska fizyczne, tym bardziej, że tutaj śmigło na silniku będzie, więc opory będą rosły nieproporcjonalnie do obrotów, tylko szybciej.

    No jak mówię - to wszystko do dobrania raczej eksperymentalnie, chyba, że kolega jest orłem z fizyki i elektroniki i wszystko policzy uwzględniając wszystkie czynniki, dobór częstotliwości PWM itp. itd. ;-)



    A czy istnieje jakiś uproszczony wzór na przybliżenie sobie tego oszacowania? Czy faktycznie wszystko najlepiej robić metodą prób i błędów?


    Jeżeli chodzi o enkoder AS5040, o którym na razie wiem najmniej- wyczytałem w dokumentacji, że poprzez jeden pin generuje on sygnał PWM, którego czas trwania okresu jest proporcjonalny do mierzonego kąta.

    Czy można to wykorzystać np. podłączając ten pin bezpośrednio na pin 1-2EN układu L293D? Czy w takim wypadku ukłąd będzie działał prawidłowo, jeżeli obejdzie się "sprzętowo" Atmegę? Czy podłączyć ten sygnał do Atmegi i dopiero poprzez odpowiedni program wysterować do na L293D?
  • Moderator Mikrokontrolery Projektowanie
    Ziomal04 napisał:
    A czy istnieje jakiś uproszczony wzór na przybliżenie sobie tego oszacowania? Czy faktycznie wszystko najlepiej robić metodą prób i błędów?

    Zapewne model matematyczny istnieje lub można go wyprowadzić. Jednak nie sądzę, aby na forum ktoś od razu podał Ci gotowy wzór. Najlepszą alternatywą jak sądzę jest stosowanie metody sterowania PID powszechnie wykorzystywanej w robotyce: http://pl.wikipedia.org/wiki/Regulator_PID



    Ziomal04 napisał:
    Jeżeli chodzi o enkoder AS5040, o którym na razie wiem najmniej- wyczytałem w dokumentacji, że poprzez jeden pin generuje on sygnał PWM, którego czas trwania okresu jest proporcjonalny do mierzonego kąta.

    Czy można to wykorzystać np. podłączając ten pin bezpośrednio na pin 1-2EN układu L293D? Czy w takim wypadku ukłąd będzie działał prawidłowo, jeżeli obejdzie się "sprzętowo" Atmegę? Czy podłączyć ten sygnał do Atmegi i dopiero poprzez odpowiedni program wysterować do na L293D?


    Uważam, że bezpośrednie połączenie nic nie da, ponieważ będzie to przełożenie liniowe konta wychylenia na prędkości silnika. A ponieważ są inne zjawiska stąd niezbędna będzie kalibracja lub PID. Innymi słowy mikrokontroler powinien odczytywać PWM z enkodera, ale sterować silnikiem własnym PWM po korektach według kalibracji lub PID.

    To tak jak z rezystorowymi potencjometrami głośności w sprzęcie audio. O ile dobrze pamiętam stosowane były o charakterystyce logarytmicznej, by zwiększenie głośności o kolejny stopień na skali, miało faktyczne odzwierciedlenie w głośności generowanego dźwięku.

    Ale mogę się mylić.
  • Poziom 9  
    właśnie przed przeczytaniem tego posta zacząłem pogłębiać wiedzę na temat tego regulatora, gdyż też zauważyłem, że liniowe oddawanie mocy na silnik i tak skończy się przesterowaniem ponad żądaną wartość kąta.

    jutro będę już zaopatrzony we wszystkie niezbędne podzespoły, więc pojutrze rozpocznę konstruowanie.

    jeśli wszystko pójdzie dobrze, to w weekend zajmę się największą bolączką czyli opraogramowaniem.
  • Moderator Mikrokontrolery Projektowanie
    Tabelka na stronie 2/7:
    http://www.st.com/stonline/books/pdf/docs/1330.pdf
    mówi max 1,2A przez 100µs

    Na pierwszej stronie dużymi literami na początku:
    600mA OUTPUT CURRENT CAPABILITY PER CHANNEL
    1.2A PEAK OUTPUT CURRENT (non repetitive) PER CHANNEL


    A silnik:

    Cytat:
    Pobór prądu bez obciążenia: 0,4 A
    Pobór prądu przy max. wydajności: 2 A

    No więc musisz się zastanowić i/lub zmierzyć ile będziesz z niego wyciskał wraz z podłączonym śmigłem :)

    ale możesz pomyśleć o L298: http://www.st.com/stonline/books/pdf/docs/1773.pdf

    tylko diody musisz dodać: http://mikrokontrolery.blogspot.com/2011/04/silnik-dc_14.html

    lub zamiast mostka H zastosować odpowiedni tranzystor, o czym pisałem wcześniej.
  • Poziom 9  
    udało mi się znaleść silniczek o mniejszym prądzie, lecz nie mam pewności co do tego czy będzie on w stanie wygenerować ciąg potrzebny do udźwignięcia ramienia.

    http://www.emodel.pl/graupner-speed-265-6v-p-2003.html

    Polutowałem juz układ pod L293D więc nie chciałbym teraz robić wsyzstkiego od nowa..
  • Poziom 36  
    dondu napisał:
    To także zależy od śmigła i ciężaru ramienia - zawsze możesz wybalansować przeciwciężarem. Ale to zwiększy bezwładność całego układu.


    Nie sądzę że może go wybalansować, skoro na rysunku pokazane jest obciążenie.
    W przypadku wybalansowania układu, cały projekt (chyba jakieś ćwiczenie lub praca kontrolna) traci sens. -(byle jaki wiatrak to wprawi w ruch).
    Wydaje mi się że autor używa zbyt dużych skrótów w doborze elementów oraz robi to w nie właściwej kolejności.
    W pierszym rzędzie: na podstawie obciążenia, winien dobrac wielkość i paramerty rotora i napędu ( średnica i kąt pochylenia skrzydeł, zakres obrotów).
    Wtedy może określić/dobrać paramerty silnika (nominalne obroty i prąd). Dobrze byłoby znać jak szybko ten 'helicopter' ma sie wznosić.
    Temat nadaje sie raczej na grupę o zainteresowaniach aerodynamikią.
    Sterowanie PWM silnikiem w tym projekcie jest tylko marginesowa częścią tematu.
    Juz z góry założenie użycia mostków "H" do jednokierunkolwej kontroli silnika o nie znanych parametrach jest zupełnym nieporozumieniem.

    Ja rozumiem że jest to tylko model, ale w symulacji procesów lub modelarstwie także obowiązują zasady prawidłowości doboru elementów tak aby ten model wizualnie imitował rzeczywiste urządzenie.

    e marcus
  • Poziom 9  
    emarcus napisał:

    cały projekt (chyba jakieś ćwiczenie lub praca kontrolna)


    nie jest to żadna praca kontrolna- aczkolwiek ma to być model dydaktyczny.

    emarcus napisał:
    Wydaje mi się że autor używa zbyt dużych skrótów w doborze elementów oraz robi to w nie właściwej kolejności.


    Zgodzę się. Przyznaję, że podszedłem do tematu na szybko i nie do końca właściwie. Aktualnie zajmuję się doborem śmigła, piasty i silnika- i w dalszej części skupię się na sterowaniu silnikiem.

    emarcus napisał:

    W pierszym rzędzie: na podstawie obciążenia, winien dobrac wielkość i paramerty rotora i napędu ( średnica i kąt pochylenia skrzydeł, zakres obrotów).
    Wtedy może określić/dobrać paramerty silnika (nominalne obroty i prąd). Dobrze byłoby znać jak szybko ten 'helicopter' ma sie wznosić.


    jak wyżej

    emarcus napisał:

    Temat nadaje sie raczej na grupę o zainteresowaniach aerodynamikią.
    Sterowanie PWM silnikiem w tym projekcie jest tylko marginesowa częścią tematu.


    Sterowanie PWM jest rzeczą jedną z ważniejszych-dlatego wybrałem ten dział. Jako, że nie doszedłem jeszcze do etapu pisania programów, większa część dyskusji póki co dotyczy innych zagadnień. Część też rozgryzam sam, nie zadając dodatkowych pytań tutaj. W związku z tym, że jest to projekt którego częścią jest programowanie mikrokontrolera cała dyskusja rozwija się w tym kierunku- gdyż jak zauważyłem wcześniej to jest kluczowy problem

    emarcus napisał:

    Juz z góry założenie użycia mostków "H" do jednokierunkolwej kontroli silnika o nie znanych parametrach jest zupełnym nieporozumieniem.


    Możliwe. W końcu od tego jest forum, aby przeprowadzić dyskusję- i jak zaznaczyłęm w pierwszym poście- nauczyć się czegoś. Ja się właśnie uczę i przyjmuję tą wypowiedź jako zachęcającą krytykę.

    Jak zaznaczyłem wcześniej podszedłem do tematu na nowo- i najpierw rozgryzam rotor wraz z silnikiem- dlatego też wcale nie zakładam, że użyję układu L293D, jak twierdziłem początkowo, a na co zwrócił mi już uwagę kolega Dondu.

    emarcus napisał:
    Ja rozumiem że jest to tylko model, ale w symulacji procesów lub modelarstwie także obowiązują zasady prawidłowości doboru elementów tak aby ten model wizualnie imitował rzeczywiste urządzenie.


    Również się zgodzę. I jak zaznaczyłem wielu rzeczy się uczę- tak naprawdę pierwszy raz podchodząc do takiego zagadnienia- stąd tak wiele moich niedopatrzeń.

    Może w takim razie kolega zasugeruje mi, lub podpowie układ, pośredni między Atmegą a silnikiem, który nie będzie "zupełnym nieporozumieniem" ?
  • Moderator Mikrokontrolery Projektowanie
    Ja twierdzę, że zawsze to jest kompromis, a kategoryczne stwierdzenia, że coś jest "zupełnym nieporozumieniem", można wyrzucić do kosza. Co więcej sami producenci mikrokontrolerów w swoich notach pokazują wiele rozwiązań różnego rodzaju układów w sposób kompromisowy.

    Moim zdaniem, najpierw dobierz porządnie część mechaniczną i odpowiednio ją wyważ (to miałem na myśli pisząc o balansowaniu) by osiągnąć oczekiwany efekt. Czyli silnik + śmigło + max napięcie zasilania i dobrana do tego długość ramienia. Dopiero w drugiej kolejności element wykonawczy sterujący silnikiem.

    Śledząc Twój temat moim zdaniem dobrze do niego podchodzisz, i fajnie by było gdyby inni także tak robili :)

    Dział moim zdaniem także wybrałeś prawidłowy, choć zawsze można podzielić na 2 części - mechanikę i elektronikę.
  • Poziom 9  
    W takim razie nie zbaczając już od głównego wątku:

    czy wypowie się ktoś na temat podłączenia enkodera magnetycznego AS 5040? póki co jest to jedyna "czarna dziura" w moim projekcie- nie wiem czy podłączenie jak w moim schemacie ma sens i jest prawidłowe.
  • Poziom 9  
    zastosuję następujący silnik:

    http://modele.sklep.pl/product_info.php?products_id=331

    znalazłem stary zasilacz komputerowy, który może mi dostarczyć następujące zasilanie: 5V/ 30 A oraz 12V/10 A.

    pytanie1: lepiej zasilić z linii 12V i dać stabilizator na wymagane 6V, czy zasilać bezpośrednio linią 5V (zakres pracy silnika 2,4- 7,2V)?

    pytanie2: jaki układ zamiast L293D nada się do tego aby nadal sterować PWM a jednocześnie obsłużyć tak wysoki prąd zarówno wejściowy jak i wyjściowy- silnik na wyjściu pobiera 4A?

    Czy może to być układ L298?
  • Moderator Mikrokontrolery Projektowanie
    L298 (link podałem wcześniej) ma max 4A. Ale ponieważ posiada w sobie 2 mostki H, stąd możesz połączyć je tak, by pracowały razem, co da Ci spokój i pewność, że nie przekroczysz prądu max. Widziałem gdzieś takie rozwiązanie w jednym z robotów. Ale może jednak wystarczy tak jak proponowałem czyli odpowiednio dobrany tranzystor?

    Moim zdaniem możesz dać go na 5V, dodając mu kondensator filtrujący, oraz zabezpieczyć układ uC przez zakłóceniami dodatkowo przez jakiś stabilizator lub LDO wraz z kondensatorami filtrującymi. Jeżeli dobrze się to wykona to nie będzie problemów.

    Alternatywą jak piszesz jest stabilizator na 6V, ale pamiętaj, że musi dawać co najmniej 4A.
  • Specjalista - Mikrokontrolery
    dondu napisał:
    Alternatywą jak piszesz jest stabilizator na 6V, ale pamiętaj, że musi dawać co najmniej 4A.

    Jeżeli to miałby być zwykły stabilizator analogowy, to przy tym prądzie będzie musiał oddać "w powietrze" 24W - niezła grzałka, nie polecam. Lepiej zostać przy 5V albo poszukać innego zasilacza.