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

[Atmega 8a] Atmega 8a, Arduino, l293dne - PWM nie działa w projekcie z modułem XM-15

kamdz 01 Sty 2017 12:02 1449 18
  • #1 16164957
    kamdz
    Poziom 12  
    Witam, ostatnio robiłem projekt, który w oparciu o dane przesyłane przez moduł bluetooth (XM-15) Podejmował rozmaite działania. Program napisany w języku arduino (dla większej prostoty) wydląda tak:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod

    Komunikacja przebiega poprawnie, ponieważ działają wszystkie punkty programu oprócz pierwszego, czyli w moim przypadku sterowania silnikiem. Nie da się regulować prędkością jego obrotów, silnik albo się kręci, albo stoi w miejscu. Dodam, że używam napisanej przez brata aplikacji komputerowej, która przesyła dane przez bluetooth do mojego mikrokontrolera. Dlatego właśnie taki sposób napisania programu(
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod
    ) najbardziej mi odpowiadał.
    Proszę o pomoc w rozwiązaniu mojego problemu.
    Pozdrawiam

    Po paru testach postanowiłem podłączyć sterownik silników do zwykłego potencjometru i dzieje się to samo.
    Posiadam taki sterownik. Czy dobrze go podłączam? Najpierw zasilanie, a potem B-1B do 5v a B-1A do potencjomertu...
  • #2 16165540
    el2010tmp
    Poziom 25  
    kamdz napisał:
    a = 0;
    b = 0;
    if (Serial.available())
    {
    a = Serial.parseInt() ;
    //Serial.println(a);
    b = a%1000;
    a = a-b;
    a = a/1000;

    Na jakiej podstawie sądzisz że po takich obliczeniach zmienna a typu long będzie miała ładne okrągłe wartości: 1,2,3...
    Do instrukcji switch() lepiej stosować zmienne typu całkowitego.
  • #3 16165592
    kamdz
    Poziom 12  
    Nie bardzo rozumiem, zdaje mi się, że long to zmienna całkowita. Poza tym tak jak napisałem, mam dedykowaną aplikację, która zawsze wysyła mi dane w takim formacie: pierwsza cyfra - numer instrukcji; A dalsze trzy (jeżeli używane, jak nie, to po prostu zera) dane przesyłane. Przykładowo po odebraniu 2000 program rozpisze to na 2 i 000, co spowoduje przejście do punktu 2 w instrukcji switch i przesunięcie serwa do pozycji 000;
    Jak potem napisałem, nie wiem dokładnie w czym leży problem, ponieważ silnik (oraz diody LED) reagują tak samo gdy steruję je za pomocą potencjometru. Testowałem też na układzie l293dne i nadal to samo... Co tu jest nie tak?
  • #5 16167769
    kamdz
    Poziom 12  
    Dziękuję, ale chodziło mi bardziej o rozwiązanie, które zrozumiem, no i jak zrobić żeby ten mój program działał. Sprawdziłem mostek h zmieniając mu stan co 1ms i działa, a gdy używam normalnego pwm to działa tylko przy 255, natomiast przy 254 mostek h daje mi 0V. Co może być tego przyczyną, jak to naprawić?
  • #6 16169849
    el2010tmp
    Poziom 25  
    Może dla pewności sprawdź za pomocą prostego przykładu:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod
  • #8 16169971
    el2010tmp
    Poziom 25  
    Nie znam się na arduino ale możesz spróbować na innym pinie.
    Pokaż schemat.
  • #9 16169977
    kamdz
    Poziom 12  
    W tym momencie nie mogę; ale podłączyłem poprawnie zasilanie bo świeci się dioda na sterowniku, i jedną nózkę sterownika do masy, a drugą do pinu 11 w Atmedze...
  • #11 16170022
    kamdz
    Poziom 12  
    Dziękuję:) spróbuję to zrobić w taki sposób jak będę tylko mógł; Jednak wydaje mi się, że to nic nie zmieni: Tam są podpięte oba piny do Arduino, ponieważ jest używane sterowanie kierunkiem obrotów. Ja chciałem sterować tylko prędkością i dlatego drugi pin zwarłem z GND.
    Ale dziękuję i przetestuję jak tylko będę miał okazję.
  • Pomocny post
    #12 16171566
    Konto nie istnieje
    Poziom 1  
  • #13 16171831
    kamdz
    Poziom 12  
    Dzięki e marcus. O tym wszystkim wiem, sterowniki podłączałem pod pin pb3 czyli 17 w atmedze; w arduino ide mam doinstalowane atmega 8a@ 8mhz i parę innych. Dioda led podłączona pod to wyjście zmienia swoją jasność, natomiast podłączona przez mostek h już nie. Tak jak napisałem wcześniej nie używam drugiego pinu sterownika bo nie mam potrzeby zmiany kierunku programowo - zrobiłem to raz, fizycznie. Jak napisałem wcześniej kupiłem sobie klon Arduino Mega od robotdyn, powinien do mnie dojść jeszcze w tym tygodniu - dam znać czy coś się zmieniło.
    Najbardziej zastanawia mnie to, że dioda podpięta bezpośredni zmienia jasność, przez sterownik już nie ...:/
  • #14 16172637
    Konto nie istnieje
    Poziom 1  
  • #15 16172646
    kamdz
    Poziom 12  
    Tak właśnie wybrałem:) a może łatwiej byłoby to zrobić na układzie l293dne który także posiadam? Czemu ten scalak reaguje tak samo jak l9110... czy może to być problem z Uc?
    P.S. Myślę, że wiem co robię;) na atmegach siedzę już trzeci rok a na arduino drugi, mimo, że mam 14 lat :)
  • #16 16173990
    Konto nie istnieje
    Poziom 1  
  • #17 16174264
    kamdz
    Poziom 12  
    Rozumiem, w sumie mógłbym tak rozwiązać ten problem, ale mimo wszystko ciekawi mnie, czemu te sterowniki nie działają tak jak powinny... w końcu to ponad 30 zł... No i gdyby udało się uruchomić ten układ to nie musiałbym inwestować jeszcze w mosfet :D
  • #18 16175606
    kamdz
    Poziom 12  
    Witam, problem, który wcześniej opisałem nie występuje już, gdy całość podłączyłem pod klona arduino mega:) Mimo to jeżeli ktoś byłby w stanie powiedzieć mi, czemu nie działało na atmedze 8, nadal chętnie się tego dowiem.
  • #19 16177325
    kamdz
    Poziom 12  
    Mam jeszcze jedno pytanie: Jak wyglądałby układ, gdybym chciał podłączyć ten silnik przez tranzystor? I jaki tranzystor mógłbym użyć?
REKLAMA