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

sterowanie silnika dc przez uC

19 Maj 2008 10:36 2923 8
  • Poziom 18  
    Witam Mam ogromną prośbę do ludzi dobrej woli którzy wspomogliby mnie jakimś schematem. Chodzi mi o sterowanie silniczkiem DC RF-300F-9Z560 prawo lewo przez jakiś µC. Układ ma być wyposażony w czujnik odległości ultradzwiękowy(może być gotowy moduł czujnika np SFR04 lub jakis zmontowany). Ma to się zachowywać tak, że silnik obraca się np w prawo i przy dojeździe do przeszkody ma powoli zwalniać aż do zatrzymania a przy oddalaniu się do tyłu zwiększać prędkość pbrotową. Układ możliwie najprostszy (banalny). Pozdrawiam i prosiłbym o pomoc jeśli to możliwe

    Dodano po 58 [minuty]:

    Witam ponownie Poszukałem trochę i znalazłem coś. Nie wiem czy da się to jakoś razem sklecić więc pytam o opinie. Silnik sterowany PWM L298N uC atmega8 czujnik ultradzwiękowy SRF04 komunikacja przez i2c. Moje pytanie jak zasilić te układy bo czujnik jest na 5v silniczek też mostekH jak wyczytałem 12V ale może też pracować przy 6V i atmega 5V. Czyli jakbym zasilił wszystko 6 V to poszłoby czy sie skopci?
  • Poziom 39  
    zacznijmy od mostka H , każdy mostek posiada 2 zasilania jedno części logicznej drugie stopnia mocy , logika pracuje najczęściej na poziomie 5V natomiast stopień mocy zasilasz napięciem odpowiednim dla zastosowanego silnika , oczywiście nie przekraczając wartości max dla danego układu
    silniki serii RF-300 kojarzą mi się z napędami tacek w CD-ROM-ach , do sterownia nimi wystarczy zupełnie L293D
    chyba logiczne że jeżeli mikrokontroler , logika mostka i czujnik jest na 5V to takie musi być napięcie zasilania , jeżeli chcesz wyższe to musisz zastosować stabilizator , zasadnicze pytanie czy dasz radę napisać odpowiedni program obsługujący to wszystko według Twoich wymagań , proponuje zacznij od dokładnego poznania zasad pracy i obsługi podzespołów które chcesz zastosować
  • Poziom 18  
    Może uproszczę trochę układzik zamiast tegu czujnika odległości będzie potencjometr. Czy np jak zasilę układ z bateri 4x1,5 V to muszę bawić się w różnego rodzaju układy zabezpieczające przed przepięciami itd? Wyjdzie z tego można powiedzieć prosty regulator obrotów z potencjometrem i 2 przyciskami zmiany kierunków obrotów silniczka. Czy ktoś byłby tak dobry i pokusił się o wykonanie schematu nie znam się na tym, a lutowac umię. Ten rezystor to chyba trzeba podłączyć pod wej a/c i podać na niego napięci by wraz ze zmianą rezystancji zmieniała się wartość nap i wtedy obroty. Nie wiem gdzie dać te przełączniki by sterowały prawo lewo. Wiem, że ten regulator to głupia rzecz, ale muszę to wykonać na zajęcia i ich celem nie jest jako tako część elektroniczna tylko programowanie .
  • Poziom 39  
    czytając powyższy post nasuwa się zasadnicze pytanie co poza lutowaniem umiesz zrobić , o elektronice za bardzo nie masz pojęcia a chcesz zbudować regulator PWM z zmianą obrotów , a co z napisaniem programu , czym zaprogramujesz mikrokontroler ?
    załóżmy , że masz schemat co dalej .....
  • Poziom 18  
    A więc interesuje mnie tylko układ na uC bo jak napisałem interesuje mnie zasada programowania nie elektronika. Z programowaniem dam radę .Poza tym kolega trochę się na tym zna więc pomoże. Silniczek nic nie musi robić tylko się krecić prawo/lewo w zależności od 2 przycisków a jego obroty bedą zależne od wartości tego potencjometru. Silnik nie pracuje pod żadnym obciążeniem. Chodzi mi tylko o schemat a dalej jak już polutuje dam radę.
  • Poziom 18  
    Dziękuję bardzo za schemat. Będę realizował schemacik na dniach.
  • Poziom 18  
    Witam ponownie Jednak nie dam rady z programowaniem z braku wolnego czasu. Zlecę to komuś za 20 zł jeśli się ktoś pokusi? Najlepiej by program był w c . Pozdrawiam
  • Poziom 18  
    Jak narazie mam tyle
    [/code]#include <avr/io.h>
    //definiowanie podłączen hardware'owych
    #define Motor_ON1 DDRD |=0x80; PORTD &= 0x00 //
    #define Motor_OFF1 DDRD |=0x02; PORTD |= 0x80 //
    #define Motor_ON2 DDRD |=0x0A; PORTD &= 0x80 //
    #define Motor_OFF2 DDRD |=0x00; PORTD |= 0x00 //tu nie wiem jakie wartosci powstawiac
    #define Czytaj_M1 DDRD &=0xC0; //
    #define Czytaj_M2 DDRD &=0x00; //

    int main (void)
    {
    DDRD=0; //ust. wszystkich portu D na jako wejscie

    while(1)
    {
    if (bit_is_clear(PIND,PD6)) //gdy nacisne prawy przycisk to:
    {
    Czytaj_M2 //blokuje drugi przycisk
    Motor_ON1; //uruchamia sie silnik w prawo i zapala diode
    }
    if (bit_is_clear(PIND,PD7))
    {
    Czytaj_M1 //blokuje pierwszy przycisk
    Motor_ON2; //uruchamia silnik w lewo i zapala diode
    }

    if (bit_is_clear(PIND,PD6))
    if (bit_is_clear(PIND,PD7)) //gdy nacisne 2 przyciski {
    Czytaj_M1;
    if (bit_is_clear(PORTD,PD0) //hamowanie
    {
    Motor_ON2;
    }
    Czytaj_M2;
    if (bit_is_clear(PORTD,PD0) //hamowanie
    {
    Motor_ON1;
    }
    Motor_OFF1;
    Motor_OFF2;
    }
    }
    }
    Code: