Elektroda.pl
Elektroda.pl
X
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Atmega8, BASCOM, sterowanie kilkoma silnikami DC

stanley019 13 Oct 2010 19:20 5784 23
  • #1
    stanley019
    Level 15  
    Witam.
    Mam takie pytanie do mądrzejszych od siebie, czy jest możliwe żeby wysterować tym mikrokontrolerem 5 do 6 silników prądu stałego? kłopot jest taki że wszystkie muszą mieć możliwość zmiany kierunku, trzy z programu, a dwa przez mikro-wyłączniki, co do sterowania PWN to w fajnie by było gdyby dwa miały taką możliwość, co do sterowania samych silników to wiem że można wykorzystać mostek albo tranzystory, ale czy wystarczy jeżeli na którymś pinie w mikrokontrolerze pojawi się sygnał1, no i jak z tym PWN bo ten mikrokontroler ma tylko 3 wyjścia PWN da się na inny pin wyprowadzić taki sygnał? Na koniec powiem tylko że jestem początkującym w tym temacie(co pewnie widać po pytaniach) mikrokontroler będzie programowany w Bascomie.
    Pozdrawiam stanley019
  • Helpful post
    #2
    y0yster
    Level 19  
    stanley019 wrote:

    Mam takie pytanie do mądrzejszych od siebie, czy jest możliwe żeby wysterować tym mikrokontrolerem 5 do 6 silników prądu stałego?


    Oczywiście, że możesz obsłużyć 5, a nawet 6 silników. Tylko jest jeden problem. Będziesz musiał je sterować programowym PWM'em, a nie sprzętowym. Do tego celu wystarczy np. przerwanie, z któregoś licznika.

    Oczywiście możesz rozdzielić sobie sterowanie na sprzętowe i programowe wykorzystując owe 3 kanały modulacji długości impulsu.

    stanley019 wrote:

    kłopot jest taki że wszystkie muszą mieć możliwość zmiany kierunku


    Jeśli chcesz sterować kierunkiem obrotu potrzebny Ci będzie mostek H. Możesz kupić dowolny, albo samemu wykonać. Wtedy ten sam sygnał, siłą rzeczy musi być obecny na dwóch pinach, które będą podłączone do dwóch right/left wejść mostka H.

    stanley019 wrote:

    kłopot jest taki że wszystkie muszą mieć możliwość zmiany kierunku, trzy z programu, a dwa przez mikro-wyłączniki


    Rozumie, że trzem silnikom kierunek będzie się zmieniał automatycznie po jakimś zadanym czasie :?:. Kolejnym będzie potrzebne wymuszanie w postaci przyciśnięcia przycisku. Oczywiście jest to jak najbardziej wykonalne.

    stanley019 wrote:

    ale czy wystarczy jeżeli na którymś pinie w mikrokontrolerze pojawi się sygnał1, no i jak z tym PWN bo ten mikrokontroler ma tylko 3 wyjścia PWN da się na inny pin wyprowadzić taki sygnał?


    Co do wyprowadzenia wyjść na inny pin. Pewnie miałeś na myśli, że można niejako je rozmnożyć. Niestety nie ;P. Ale jeśli chodziło Ci o zmianę domyślnego pinu, na którym będzie generowany sygnał- jest to możliwe do wykonania. Możesz zrealizować to w ten sposób. W przerwaniu (wykorzystujesz 2) od PWM'a ustawiasz odpowiednio który pin ma być zerowany/ustawiany. A owy domyślny pin po prostu wyłączasz ustawiając odpowiedni "tryb" pracy generatora (tzn. "tryb" - reakcja DOMYŚLNEGO pinu na przerwania, ma być on odłączony).
  • #3
    stanley019
    Level 15  
    y0yster, bardzo dziękuję za zainteresowanie i chęć pomocy:)

    widzę że w pierwszym poście troszkę się sam zakręciłem, to może po kolei, generalnie na pracę zaliczeniową muszę zrobić jakieś urządzenie które będzie sterowanie mikrokontrolerem, i tak wpadłem na pomysł wykonania koparki, i teraz dwa silniki będą sterować gąsienicami, chciałbym żeby one miały regulowaną prędkość przy użyciu PWM'a trzeci silniczek też sterowany przez PWM będzie obracać obrotnicą koparki(to coś między podwoziem a całą resztą) a dwa silniki mają za zadanie pracować jako siłowniki, i one nie muszą być sterowane PWN mogą mieć jedną konkretną prędkość ale ich zatrzymanie i obroty w drugim kierunku chciałbym żeby były po naciśnięciu wyłącznika krańcowego, co do zmiany obrotów i mostków to myślałem właśnie o użyciu mostka H np LM293, ale skoro typ nie jest istotny no to git. a co do tego sygnału 1 to chodziło mi o to czy można silnikiem sterować na zasadzie włączony(1), wyłączony(0) czy zawsze musi być sterowane przez modulacje szerokości impulsu.
    a co do PWM programowego to polega na tym że mam np. sygnał z timera1 i przerwanie ustawione na jakąś konkretną wartość i ma ono spowodować zmianę stanu na wyjściu? czy ma uruchomić jakiś pod program?
  • #4
    mirekk36
    Level 42  
    Odpowiedź jest prosta ;) zamiast budować własne mostki H wykorzystaj jeden prosty jak drut i miły scalaczek jakim jest L293D. Możesz nim sterować nawet 4 silniki DC jeśli nie potrzebujesz miany kierunków, a jeśli potrzebujesz to wtedy 2 silniki do jednego układu. Aplikacja nie nie wymaga żadnych elementów dodatkowych poza kondkami filtrującymi zasilanie. Można spokojnie każdy z nich sterować za pomocą PWM z procka. Maxium prostoty za śmiesznie niską cenę i zero straconego czasu na zabawy z własnymi mostkami H.

    Nie do wszystkich celów nadają sie silniki DC ( z tego co opisałeś ), rozważ wykorzystanie także 1-2 serw modelarskich, które także bez problemu można wysterować z procka.

    poniżej masz przykładowy projekt z zastosowaniem tego typu rozwiązań:

    https://www.elektroda.pl/rtvforum/topic1584103.html
  • #5
    stanley019
    Level 15  
    długo się zastanawiałem nad serwami modelarskimi, w sumie nadal się zastanawiam, ale nie wiem czy ich zastosowanie uprości sprawę, bo w tym projekcie poza elektroniką muszę też zrobić mechaniczną część, no i wpadłem na pomysł żeby silnik dc napędzał śrubę(dokładniej to nagwintowany pręt) a ta z kolei wkręcała się lub wykręcała w nagwintowaną rurkę, gdy się tą rurkę zablokuje żeby nie mogła się obracać to wtedy wsuwa się albo wysuwa na śrubę, i takim sposobem jest siłownik, ale serwa dalej nie dają mi spać po nocach, co do LM 293 to właśnie o nich pomyślałem na początku:) nie byłem pewny za bardzo czy to może tak wyglądać jak sobie wyobraziłem. Niestety chyba lepszy ze mnie mechanik niż elektronik, no ale wielu rzeczy można się nauczyć:)
  • Helpful post
    #6
    mirekk36
    Level 42  
    No to po pierwsze pamiętaj żeby zastosować i kupić L293D jak pisałem a nie tak jak ty napisałeś LM293 - już nie chodzi o tę literkę M, ale o to że nie ma literki D na końcu ;) bo to już duża różnica. I jak kupisz układ bez tej literki D na końcu to potem będziesz musiał dodawać jeszcze "milion"diod do aplikacji układu ;)

    A serwa? nie mówię że muszą być - ale rozważ to dobrze bo często mogą one zastąpić sporą część takiej mechaniki o jakiej piszesz - no ale wszystko zależy tak na prawdę od projektu i założeń - a ty o tym najlepiej wiesz.
  • #7
    Freddy
    Level 43  
    stanley019 wrote:
    Witam.
    Mam takie pytanie do mądrzejszych od siebie, czy jest możliwe żeby wysterować tym mikrokontrolerem 5 do 6 silników prądu stałego? ...

    Są do tego specjalizowane układy scalone np. MC33932. Sterownik dwóch silników DC z PWM max 5A, max 28V.
  • #8
    stanley019
    Level 15  
    Freddy wrote:
    stanley019 wrote:
    Witam.
    Mam takie pytanie do mądrzejszych od siebie, czy jest możliwe żeby wysterować tym mikrokontrolerem 5 do 6 silników prądu stałego? ...

    Są do tego specjalizowane układy scalone np. MC33932. Sterownik dwóch silników DC z PWM max 5A, max 28V.



    a mógłbyś coś napisaćwięcej na temat tego układu? Generalnie założenie jest takie że musi być mikrokontroler AVR bo tak zażyczył sobie prowadzący ćwiczenia. A co do LM 293D to nie wiedziałem nawet że to taka różnica, ale dziękuję za zauważenie :)
  • Helpful post
    #9
    Freddy
    Level 43  
  • #10
    janbernat
    Level 38  
    A ja bym radził zainteresować się silnikami krokowymi.
    Oczywiście oprócz zwykłych.
    Zalety- mogą obracać się bardzo wolno- bez żadnej przekładni.
    Mogą stanąć w miejscu i trzymają moment bez przekładni śrubowej samohamownej.
    Czego nie można uzyskać w zwykłym silniku- a i serwo żeby stało w miejscu wymaga regulatora PID.
    Co prawda w Twoim projekcie śruby pociągowe pewnie będą samohamowne- raczej nie zamówisz rexrotha.
    Chociaż w jakiejś starej drukarce widziałem śrubę(śrubkę-fi6) z takim skokiem że nie była samohamowna.
    Szukaj starych drukarek- najlepiej tam gdzie oddają złom komputerowy do utylizacji.
    Paski zębate, przekładnie, silniki krokowe- same skarby.
    Ten pomysł żebyś w projekcie zrobił regulator PID w procesorze jest diabelski- trudno to zaprogramować.
    Tak że to taki luźny pomysł.
    Ale wartość projektu poszybowała by w górę.
  • #11
    mirekk36
    Level 42  
    paaanie kolego janbernat ;) ależ lubicie przesadzać i utrudniać sobie życie, ba wręcz je komplikować do kwadratu i to niepotrzebnie - bo żeby do sterowania serwem stosować PID ??? hyyyyy - ale o co chodzi ? (no ale może to ja czegoś nie wiem) - tym bardziej do takiego projektu ? - oj to wg mnie ogromny przerost formy nad treścią. I ja osobiście nie spotkałem się, żeby serwo nie stało w miejscu ;) chyba że masz na myśli jakieś mikro drgania na poziomie tysięcznych części kąta. Owszem jak kiedyś onegdaj sterowałem pierwszy raz w życiu serwem z Bascoma to problem był nawet spory. Wystarczy jednak własna dobrze napisana procedura i to w oparciu o zwykły programowy PWM żeby je utrzymać w miejscu a jak zaprzęgniesz do tego jakiś Timer1 o większej rozdzielczości to zapomnij o drganiach i takich problemach jakie opisałeś z serwami.

    Druga sprawa - pomysł na zastosowanie silników krokowych całkiem dobry no ale trzeba też dodać, że zawsze będą one miały mniejszy hmmm dużo mniejszy moment obrotowy przez co nie przydadzą się do wszystkich celów tak jak serwo czy silnik DC
  • #12
    janbernat
    Level 38  
    Ale to jest projekt na zaliczenie- model- a nie prawdziwe urządzenie.
    I tu filozofia jest nieco inna- utrudnienie sobie życia służy zdobyciu wiedzy.
    No i dobrej oceny- jeśli promotor zna się na rzeczy.
    Sama taka analiza o ile tysięcznych części kąta zmienia się położenie serwa sterowanego przez program z zaimplementowanym PID w porównaniu z silnikiem krokowym może dać całkiem spory rozdział w pracy zaliczeniowej.
    No bo przecież każde serwo wymaga wzmacniacza błedu- więc jakiś błąd musi być.
    A silnik krokowy- nie.
    A to że utrudniam sobie życie- no pewnie.
    Nie muszę się uczyć C- a to robię.
    Nie muszę się bawić w elektronikę- a też to robię.
    Pracuję w czymś innym- ale przecież nie można dać się zaszufladkować.
    Po za tym- porównaj moment obrotowy silnika krokowego i DC przy obrotach powiedzmy- 1 na minutę.
  • Helpful post
    #13
    mirekk36
    Level 42  
    janbernat wrote:
    Ale to jest projekt na zaliczenie- model- a nie prawdziwe urządzenie.
    I tu filozofia jest nieco inna- utrudnienie sobie życia służy zdobyciu wiedzy.
    No i dobrej oceny- jeśli promotor zna się na rzeczy..


    No, poniekąd przyznaję rację ;)

    Ale już nie mów, że nauka C czy elektronika to takie samoumartwianie się - to w końcu cała przyjemność - inaczej chyba już dawno być to rzucił ;)
  • #14
    stanley019
    Level 15  
    No to po kolei, silniki krokowe, to bardzo wdzięczne urządzenia, przydatne i w ogóle, ale osobiście uważam że to troszkę za duża komplikacja z układem mechanicznym, nie wiem czy dobrze mi się wydaje ale przy sterowaniu silnikiem krokowym to zdaje mi się wystarczy jak poszczególne cewki są zasilane jedna po drugiej, to w książce Wiązani opisane jest jako cykliczne zaświecanie diodek led, ale do rzeczy kolega Mirekk36 mnie przekonał, na wysięgniku koparki będą właśnie serwa, po przemyśleniu konstrukcji to tak będzie prościej, a to czy się utrzymają w bezruchu, hmm tego jeszcze nie wiem, wydaje mi się że niezależnie od wyboru napędu i tak będę miał kłopoty z napisaniem programu do mikrokontrolera. Ale to już troszkę inna historia, generalnie podsumowując temat uzyskałem odpowiedź na nurtujące mnie problemy, i temat uważam za zamknięty bardzo dziękuję wszystkim za pomoc i za poświęcony czas.
    pozdrawiam stanley019
  • #15
    mirekk36
    Level 42  
    stanley019 wrote:
    .. na wysięgniku koparki będą właśnie serwa, po przemyśleniu konstrukcji to tak będzie prościej, a to czy się utrzymają w bezruchu, hmm tego jeszcze nie wiem,


    Ale ja wiem ;) NA PEWNO utrzymają się w bezruchu ;)

    stanley019 wrote:
    wydaje mi się że niezależnie od wyboru napędu i tak będę miał kłopoty z napisaniem programu do mikrokontrolera. ..


    No a któż nie ma kłopotów, z napisaniem programu ? ;) .... ale za to jakie to przyjemne kłopoty hmmmm ;) .... Wszystko to tylko kwestia czasu i jakiejś tam praktyki. A jak się ma konkretny cel to dodatkowo zawsze łatwiej idzie - więc powodzenia.
  • #16
    stanley019
    Level 15  
    troszkę czasu upłynęło zanim zrobiłem mechanikę do tej koparki, niestety ostatnio zaczytałem gdzieś na forum że z silnikami DC jest kłopot taki że mogą się nie obracać z taką samą prędkością i chciałem zapytać jak to z tym jest? czy da się to wyeliminować bez używania sprzężenia zwrotnego? i pytanie nr dwa w pojazdach gąsienicowych jakie ostatnio widywałem podczas skrętu jedna gąsienica była przyhamowana, czy w przypadku mojej konstrukcji też tak można zrobić?
  • #17
    janbernat
    Level 38  
    A pisałem- zainteresuj się silnikami krokowymi.
    Serwa modelarskie mają wbudowany enkoder- zresztą najczęściej w postaci potencjometru.
    I dopóki wykonują niepełny obrót- to się sprawdza.
    Dlatego do napędu łyżki czy ramion koparki się dobrze sprawdzą.
    Do napędu obrotnicy i kół jezdnych potrzebny jest silnik DC z enkoderem i sprzężeniem zwrotnym.
    Czyli normalny serwonapęd.
    W dodatku z regulatorem P lub PI- że o PID tylko przypomnę.
    Wtedy możesz kręcić kołami równomiernie albo zatrzymać jedno a kręcić drugim- żeby skręcać w miejscu.
    A stosując silnik krokowy nie potrzeba żadnego enkodera.
    Po prostu zmieniasz szybkość wysyłanych impulsów.
    Jak jest jednakowa to silniki kręcą się z jednakową prędkością.
    Jak chcesz jeden z nich zatrzymać- to nie wysyłasz do niego impulsów.
    W dodatku nie potrzebujesz żadnej przekładni- silnik krokowy ma max moment orzy niskich obrotach i podczas postoju.
  • #18
    stanley019
    Level 15  
    no właśnie chodzi o napęd gąsienic i obrotnice, co prawda z obrotnicą to w sumie nie jest jakiś duży problem bo nie musi się obracać o ściśle określony kąt, o tyle martwię się właśnie czy zamiast jeździć prosto nie będzie bestia skręcać, co do sliników krokowych to pomysł z ich użyciem był w sumie od początku, w sumie mam nawet dwa takie wynalazki ze skanerów komputerowych są identyczne, nasuwa się pytanie czemu o nich nie pomyślałem od razu? pomyślałem ale są zasilane napięciem 12V a to generuje dodatkową masę w postaci akumulatorów poza tym krokowe silniki tak na mój rozum pobierają sporo prądu jeśli cewki są 4 o rezystancji 22ohm a napięciu 12V to szybko skasuje zasilanie chyba że się mylę?
  • #19
    janbernat
    Level 38  
    A sprawdziłeś już ile prądu pobierają serwa?
    Silnik krokowy do oszczędnych nie należy- ale żaden silnik nie jest oszczędny.
    No i zrób bilans zapotrzebowania na prąd i wybierz jakieś napięcie zasilania.
  • #20
    stanley019
    Level 15  
    napięcie zasilania raczej na 99% będzie 12V i LM 7805 do atmegi, co do serwa i krokowych to nie dam rady ich odpalić puki nie powstanie płytka bo nie mam generatora prostokąta. Aha jeszcze jedno czy prędkość obrotu serwa jest w jakiś sposób regulowana? Bo kąt obrotu to zależy chyba od częstotliwości, a prędkość obrotu? od wypełnienia?
  • #21
    janbernat
    Level 38  
    Położenie serwa zależy od długości impulsu sterującego.
    Podawanego co ok. 20ms.
    Długość impulsu 0.9ms i 2.1ms określa max. wychylenie.
    1.5ms- pozycję neutralną.
    Zmieniając to wypełnienie stopniowo określasz prędkość wychylania się serwa.
    Maksymalne przyspieszenie podawane jest w danych serwa.
    Prędkość silnika krokowego zależy od częstotliwości podawania sekwencji impulsów.
    Pobór prądu zależy od wielkości serwa/silnika krokowego.
  • #22
    stanley019
    Level 15  
    co do serw to napięcie zasilania 4,8-6,0V wg sprzedawców model to SG-5010 TowerPro, krokowe jak już pisałem wcześniej wyciągnięte ze skanerów Scan Magic 4800P jest na nich napisane mitsumi M42SP-5P no i teraz zgryz mam bo w tym skanerze były dwa stabilizatory napięcia 12 i 5V teoretycznie silnik powinien być zasilany z 12V tyle że przy 22 ohmach rezystancji to prąd jeśli dobrze pamiętam prawo Ohma jest ok 0,5A a to z kolei troszkę chyba za dużo na taki rozmiar silnika bo średnica tego silnika jest 40mm w porównaniu do silników 2,5A jakie mi gdzieś w pracowni leżą to one są naprawde niewielkie. W sieci znalazłem coś takiego http://www.mitsumi.co.jp/latest/Catalog/pdf/motor_m42sp_5_e.pdf i teraz to już zupełnie nie wiem jakie to napięcie zasilania ma być.
  • Helpful post
    #23
    janbernat
    Level 38  
    Te 0.5A to może się zgadzać.
    Daje to ok. 5W na uzwojenie.
    A ponieważ prąd płynie na raz przez jedno albo przy prostym sterowaniu półkrokowym czasem przez dwa to byłaby moc dostarczana do silnika ok.7-8W.
    Pod warunkiem że dobrze zmierzyłeś oporność.
    Przy tak małych łatwo o błąd.
    Te duże silniki o których piszesz to zupełnie inna bajka.
    Taki silnik trudno spalić.
    Ważne ile ma wyprowadzeń.
    Jak 5 albo 6 to można nim sterować unipolarnie.
    Co do serw to nigdzie nie mogłem znaleźć ile pobierają prądu.
    Takie normalne a nie mikro to od 1A.
    Po prostu trzeba je wysterować sygnałem 0.9-2.1ms i zmierzyć pobór prądu.
    A silnik krokowy podłączasz w szereg z amperomierzem do zasilacza- jedno uzwojenie silnika- i mierzysz prąd.
    Silnik może być dość ciepły i sprawdzasz czy da się obrócić.
    Jak stawia silny opór to jest dobrze.
    Zacznij pisać program.
    Do sterowania serw w Bascomie jest gotowiec a do sterowania silników krokowych jest sporo programów na elektrodzie i niektóre z nich działają.
  • #24
    stanley019
    Level 15  
    Tak zrobię zacznę pisać program, generalnie sporo programów już znalazłem mniej więcej chyba wiem jak ma on wyglądać ale zanim powstanie to jeszcze chyba długa droga. co do tych silników i serw to muszę jakiś tester albo prosty sterownik do nich wymodzić i wtedy już zmierzę wszystko, puki co dzięki za pomoc i wyrozumiałość:). Silniczki krokowe mają wyprowadzonych 5 przewodów ale jeden dochodzi do dwóch wyprowadzeń z silnika teoretycznie ma być 4 fazowy, a z tego co mi wiadomo łatwiej napisać program bo impulsy wystarczy podawać na kolejne cewki i już powinien się kręcić.
    Aha wpadł mi dziś do głowy pomysł żeby sterować całym tym bałaganem przy użyciu magistrali I2C, zapytacie dlaczego taki pomysł? Bo chciałbym żeby ta maszynka była rozwojowa, co prawda teraz nie wykorzystam wszystkich dostępnych portów, ale w przyszłości chciałbym doposażyć koparkę w małą klawiaturę, może wyświetlacz itp. co myślicie? Głównie chodzi mi o układy opisane w elektronice praktycznej jeden z kwietnia 2000 roku (sterowanie 2 silnikami krokowymi) a drugi z sierpnia 2000 do pozycjonowania serw. Tam co prawda jest to przystosowane do Bascoma dla rodziny '51 ale wydaje mi się że da się to łatwo oprogramować dla AVR
    Jeśli to możliwe to nie zamykałbym jeszcze tematu bo może się okazać że będę jeszcze prosił o pomoc.

    Pozdrawiam
    stanley 019