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

Sterowanie silnikiem unipolarnym przez AT89C2051 i bufor ULN2803 - jak zacząć?

aster001 01 Maj 2004 15:02 3430 12
  • #1 621278
    aster001
    Poziom 11  
    Posty: 69
    Pomógł: 2
    Ocena: 3
    Witam wszystkich,
    niedawno była mowa o sterowaniu silnikiem krokowym bipolarnym przy pomocy Atmela, mnie interesuje sterowanie również przez Atmela - AT89c2051 ale silnika unipolarnego ( łatwo go zdobyc – siedzi w starych stacjach dyskietek ). Szukałem cos po interze i znalazłem bufor ULN2803 do silników unipolarnych - zamieszczam schemat nie wiem czy jest dobry,
    jeżeli ktos ma uwagi , podpowiedzi to proszę o takie.

    Ale o co mi chodzi, trzeba dołaczyc do układu przełacznik może dwa dwustanowe, cos w stylu pierwszy tryb, drugi tryb i cztery zwykłe mikrostyki ( zdjecie ) i oczywiście napisac program w asm.

    Jak się za to zabrac, czy ktos ma jakies pomysły? :(
    Załączniki:
    • Sterowanie silnikiem unipolarnym przez AT89C2051 i bufor ULN2803 - jak zacząć? projekt1.jpg (25.03 KB) Musisz być zalogowany, aby pobrać ten załącznik.
    • bez tytułu.jpg (18.77 KB) Musisz być zalogowany, aby pobrać ten załącznik.
  • #2 621577
    GienekS
    Poziom 32  
    Posty: 1971
    Pomógł: 139
    Ocena: 15
    Te przełączniki potpinasz do pozostałych portów jednym końcem a drugim do masy i masz gotowe. Potem tylko programik. Jeszcze nie wspomniałeś o prędkości z jaką ma się kręcić ten silniczek.
  • #3 621732
    lechoo
    Poziom 39  
    Posty: 5161
    Pomógł: 377
    Ocena: 546
    Na schemacie brakuje rezystorów 2,2k-4,7k podciągających linie portu P1 do Vcc. Bez nich procek nie będzie w stanie prawidłowo wysterować układu ULN2803.
  • #4 623077
    GienekS
    Poziom 32  
    Posty: 1971
    Pomógł: 139
    Ocena: 15
    Te oporniki są tylko potrzebne na dwuch liniach AIN0 i AIN1 Pozostałe linie portu P1 meją wewnętrzne oporniki podciągające.
  • #5 623263
    bolek
    Poziom 35  
    Posty: 4099
    Pomógł: 86
    Ocena: 299
    a po co komu dioda zenera 12V?
  • #6 623368
    olekewaagata
    Poziom 25  
    Posty: 638
    Pomógł: 64
    Ocena: 28
    Lechoo, ma absolutną rację, rezystory potrzebne są na wszystkich
    liniach portu sterującego poniewaz 2803 jest do sterowania układów
    kompatybilnych z TTL-ką. Natomiast ja zastosowałbym 2804 i w
    dalszym ciągu nie rezygnowałbym z rezystorów podciągających.
    Uwaga 1. w chwili resetu wszystkie uzwojenia silnika idą na mase
    i leci niezły prąd.
    Uwaga 2. brak zabezpieczenia przed zbyt długim wysterowaniem silnika
    tym samym stanem, (złe działanie programu, lub awaria proca)
    wtedy cos się pali. Wszystkie profesjonalne sterowniki
    mają takie zabezpieczenia.
  • #7 624666
    lukaszdruk
    Poziom 11  
    Posty: 45
    Ocena: 5
    Dzieki za uwagi, a jak podejsc do pisania programu w asm?
  • #8 624986
    bolek
    Poziom 35  
    Posty: 4099
    Pomógł: 86
    Ocena: 299
    chcesz sie doweidzieć w jakim "stylu" napisać program do takiego silnika, czy w ogóle asm od podstaw?... chłopie wchodzisz na miękii grunt :)
  • #9 624988
    GienekS
    Poziom 32  
    Posty: 1971
    Pomógł: 139
    Ocena: 15
    Najlepiej to od:
    org 0
    Dużo też będzie zależało od użytego kompilatora. Polecam Reisonance SA. łączy w sobie kompilator i debager jednocześnie.
  • #10 625057
    lukaszdruk
    Poziom 11  
    Posty: 45
    Ocena: 5
    Kiedys cos pisałem w asm, ale jak przez dłuzszy czas nic sie nie pisze to szybko wypada z pamieci.

    Prosze o link do Reisonance
  • #12 625123
    olekewaagata
    Poziom 25  
    Posty: 638
    Pomógł: 64
    Ocena: 28
    Ja na Twoim miejscu zacząłbym od tego: masz cztery wyjscia z silnika
    (nie liczę +12V) i teraz musisz zrobic wykres dla tych czterech lini
    w czasie, jakie stany (niskie) maja przyjmować dane linie i w jakiej
    kolejności. Jak bedziesz miał ten wykres to program już nie jest taki
    trudny. Pamietaj też że aby zmienic kierunek obrotów silnika to
    właśnie odpowiednia sekwencja i kolejność sterowania liniami za to
    odpowiada.
  • #13 629657
    lukaszdruk
    Poziom 11  
    Posty: 45
    Ocena: 5
    Witam,
    przebiegi sinika krokowego mam, chodzi mi o idee programu,
    ktos mi poradził, ze na poczatku musze sprawdzic w jakiej pozycji jest
    głowny przełacznik ( albo tryb1 albo tryb2), potem sprawdzac czy wcisniete sa pozostałe mikroprzełaczniki i w zaleznosci, ktory został
    wcisniety skakac do odpowiedniej procedury sterowania silnikiem.

    Inny sposok,ktory gdzies usłyszałem to:
    Timery zaprogramowac w taki spsob,aby na kazdy zewnetrzny impuls
    generowały przerwanie i przez to potem w obsłudze przerwania
    wysterowywac inne porty.


    Co o tym uwazacie?

Podsumowanie tematu

✨ Dyskusja dotyczy sterowania silnikiem krokowym unipolarnym za pomocą mikrokontrolera AT89C2051 i bufora ULN2803. Poruszono kwestie poprawności schematu, w tym konieczności zastosowania rezystorów podciągających (2,2k-4,7kΩ) na liniach portu P1, aby mikrokontroler mógł prawidłowo sterować ULN2803. Zwrócono uwagę na potencjalne problemy, takie jak duży prąd podczas resetu, gdy wszystkie uzwojenia silnika są zwarte do masy, oraz brak zabezpieczeń przed długotrwałym wysterowaniem silnika, co może prowadzić do uszkodzeń. Sugerowano rozważenie użycia bufora ULN2804 oraz implementację zabezpieczeń w programie. W kwestii programowania w asemblerze podano wskazówki dotyczące struktury kodu (np. org 0) oraz polecono środowisko Raisonance, które łączy kompilator i debugger. Omówiono także podejście do pisania programu sterującego: najpierw należy opracować sekwencję stanów wyjść dla czterech linii silnika, uwzględniając kierunek obrotów, a następnie implementować obsługę przełączników dwustanowych i mikrostyków, które decydują o trybie pracy. Zaproponowano wykorzystanie przerwań generowanych przez timery do sterowania portami w czasie rzeczywistym.
Wygenerowane przez model językowy.
REKLAMA