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

ESP8266 - podłączenie serwa

gnato 22 Lip 2016 14:43 2886 12
  • #1 22 Lip 2016 14:43
    gnato
    Poziom 9  

    Witam,

    projektuję miarkownik ciągu do pieca CO, który umożliwia zdalne sterowanie pokrywą popielnika poprzez wifi, jako jednostkę sterującą wykorzystuję ESP8266 12e.

    Projekt zakłada tryb AUTO, który dostosowywać będzie ciąg pieca na podstawie temperatury (czujnik ds18b20). Dodatkowo do całości jest podpięty wyświetlacz LCD 16x2 z konwerterem HD44780.

    Wszystko pracuje poprawnie, natomiast mam problem z wysłaniem odpowiedniego sygnału sterującego serwem (TOWER PRO MG90S) - na chwilę obecną po podłączeniu serwo "szaleje na prawo i lewo". Najprawdopodobniej problem leży po sprzętowej, niż programowej, gdyż serwo pracuje na 4.8-6v (electronicoscaldas.com/datasheet/MG90S_Tower-Pro.pdf) natomiast ESP na 3.3V. Z racji tego, że nie jestem elektronikiem i nie posiadam sprzętu pomiarowego nie bardzo potrafię poradzić sobie z tym problemem.

    Na poniższych schematach zaprezentowałem fragment układu, który odpowiada za część związaną z serwem. Jednocześnie chciałem zaznaczyć iż całość jest podpięta pod moduł zasilania MB102 - arduino na schemacie pełni rolę placeholdera ;)

    ESP8266 - podłączenie serwa ESP8266 - podłączenie serwa

    Na ESP posadziłem NodeMCU i próbowałem wysyłać sygnał do serwa na 2 sposoby:
    - poprzez ustawienie alarmu co 20ms (uzyskując częstotliwość 50Hz) ze zmianą stanów jednego z wyjść gpio (na podstawie: roboremo.com/esp8266-servo.html)
    - poprzez wykorzystanie pwm - pwm.setup(5, 50, 76) pwm.start(5) ... (bazując na: electronics.stackexchange.com/questions/233214/controlling-servo-motor-sg90-from-nodemcu-1-0-development-kit)

    Niezależnie od metody serwo i tak goni jak oszalałe w prawo i w lewo.
    Poza podłączeniem serwa w postaci jak na schemacie powyżej próbowałem także dodatkowo połączyć GPIO_14 z zasilaniem 3v3 poprzez opornik 2K.

    Czytałem, szukałem i trafiłem jeszcze na propozycje zastosowania tranzystora npn (celem odwrócenia sygnału?), natomiast nigdzie nie mogłem znaleźć informacji, która byłaby do przetrawienia dla mnie jak taki tranzystor mógłby zostać wkomponowany w mój układ.

    Jeżeli ktoś zechce przyjrzeć się mojemu przypadkowi i udzielić kilku merytorycznych wskazówek będę wielce zobowiązany.

    0 12
  • Szkolenia elektronika Udemy
  • Pomocny post
    #2 22 Lip 2016 23:18
    atom1477
    Poziom 43  

    A ja myślę że problem jest programowy, gdyż serwa zwykle akceptują poziomy napięć 3.3V albo nawet 2.5V.
    Niestety bez oscyloskopu będzie bardzo ciężko określić co tutaj jest nie tak.
    Choć można próbować wykorzystać wejście audio w komputerze. Możesz na nie podać przebieg za pomocą szeregowego układu rezystor i kondensator (10k + 100nF) a dźwięk nagrać jakimkolwiek programem (choćby rejestratorem dźwięku z windowsa). To przynajmniej czas trwania impulsu można by tym sposobem zweryfikować.

    0
  • Szkolenia elektronika Udemy
  • #3 25 Lip 2016 08:46
    gnato
    Poziom 9  

    Dzięki za odpowiedź.

    Odnośnie Twojego sposobu zmierzenia długości fali za pomocą rezystora i kondensatora to mam 2 pytania:
    - czy wystarczy wejście na mikrofon? Mam lapka bez wejścia liniowego.
    - rozrysowałem układ, żeby mieć pewność, że jest to prawidłowo rozplanowane, możesz potwierdzić, że jest ok? (nie było dostępnego komponentu wtyczki jack, więc zamiast tego dodałem gniazdo)

    ESP8266 - podłączenie serwa ESP8266 - podłączenie serwa

    0
  • #4 25 Lip 2016 08:49
    atom1477
    Poziom 43  

    Mniej więcej coś takiego.

    0
  • #5 25 Lip 2016 09:16
    gnato
    Poziom 9  

    Mniej więcej, czyli jak podłączę taki układzik to nic nie spalę? :)

    0
  • #6 25 Lip 2016 09:25
    atom1477
    Poziom 43  

    Pewności nigdy nie ma. Ale ryzyko spalenia jest bardzo małe.
    Na schemacie masz mały błąd bo użyłeś kondensatora elektrolitycznego.
    A trzeba zwykłego (ceramicznego albo foliowego).

    0
  • #7 28 Lip 2016 13:09
    gnato
    Poziom 9  

    Kupiłem taki kondensator, nada się? ESP8266 - podłączenie serwa

    0
  • #8 04 Sie 2016 19:16
    gnato
    Poziom 9  

    Odczyt wyszedł następujący:

    ESP8266 - podłączenie serwa

    0
  • #9 04 Sie 2016 19:36
    atom1477
    Poziom 43  

    No to coś jest nie tak. I w odczycie napięcia, i w częstotliwości.
    Czyli jakby nie działał zarówno ten "oscyloskop" jak i wyjście na serwo z układu ESP8266.
    Może coś po prostu nie łączy?
    Spróbuj zrobić pomiary jeszcze raz i rzuć je tutaj jako plik WAV.

    0
  • #10 09 Sie 2016 22:46
    gnato
    Poziom 9  

    Nagrałem 2 pliki:
    1. alarm.wav - który jest rezultatem wywołania kawałka kodu:

    Kod: lua
    Zaloguj się, aby zobaczyć kod


    2. pwm.wav - który jest rezultatem kodu:
    Kod: lua
    Zaloguj się, aby zobaczyć kod


    Wydaje mi się, że udało mi się uchwycić w pewnym momencie właściwy sygnał (wyciąłem odpowiednie fragmenty). Zastanawia mnie tylko fakt, dlaczego sygnał nie nagrywał się przez cały czas. Czy jest to kwestia połączenia, czy może kwestia tego, że esp w jakiś sposób gubi ustawiony sygnał (co wydaje mi się raczej nie możliwe, ale z racji tego, że jestem początkujący to pewnie mogę się mylić).

    Na koniec chciałem tylko przeprosić za to, że moje odpowiedzi są dość mocno rozwleczone w czasie, niestety jest to podyktowane dość małą ilością wolnego czasu (praca, praca, praca...).

    Dziękuję Ci także, że zainteresowałeś się tematem i chcesz mi pomóc :)
    Pozdrawiam[/code]

    0
  • Pomocny post
    #11 09 Sie 2016 22:57
    atom1477
    Poziom 43  

    Myślę że to ESP przestawał generowac sygnał.
    Sygnały wyglądają w porządku.
    Odstęp pomiędzy impulsami wynosi 20ms. Impulsy mają po 2ms albo trochę mniej (impulsem jest jedna połowa tego wyskoku, druga połowa wyskoku to powrót napięcia do składowej stałej).
    Natomiast problemem może być polaryzacja sygnału, Bo widać że jest ujemna (inna sprawa że to karta dźwiękowa może odwracać bo dla dźwięku nie ma to żadnego znaczenia).
    Być może ten kod do generacji sygnału z ESP zakłada że za wyjściem ESP będzie tranzystor wzmacniający sygnał do wartości 5V (który przy okazji z powrotem odwróci polaryzację sygnału).
    Zmień w swoim kodzie gpio.HIGH na gpio.LOW a gpio.LOW na gpio.HIGH i zobacz co się zmieni.

    0
  • #12 15 Sie 2016 22:17
    gnato
    Poziom 9  

    Zamieniłem tak jak proponowałeś, jednakże serwo tylko "buczało" bez żadnej reakcji. Nie mniej jednak udało się chyba problem rozwiązać. Mianowicie do tej pory miałem serwo podłączone do modułu zasilającego, natomiast samo ESP podłączone było do arduino, które służy mi za programator.

    Po podłączeniu serwa do zasilania z arduino całość zaczęła ze sobą gadać poprawnie poprzez wykorzystanie metody z pwm. Idąc dalej przełączyłem się na moment w całości na moduł zasilający i również komunikacja przebiegała prawidłowo.

    Nie wiedziałem, że podłaczenie różnych komponentów do różnych źródeł zasilania może powodować takie zachowanie. Myślę, że temat do zamknięcia, atom1477 dzięki wielkie za zainteresowanie tematem i dzięki za pomoc :)

    0
  • #13 15 Sie 2016 22:23
    atom1477
    Poziom 43  

    To nie różne zasilania były tutaj problemem. Tylko pewnie niepołączenie mas tych 2 źródeł.

    1