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

Mikrokontroler i włączenie silniczka, język C.

kankuro666 05 Lut 2013 18:44 2214 26
  • #1 05 Lut 2013 18:44
    kankuro666
    Poziom 9  

    Witam trochę się nauczyłem języka C i próbowałem różne konstrukcje z moim mikrokontrolerem ATmega16 z różnymi programami np. kalkulator, rozne polaczenia diod zeby swiecily w zaleznosci od wcisniecia guzikow czy sygnalow z transoptorow, ale to wszystko to pojedyncze wejscia/wyjscia, nie wiem jak zrobic aby (w moim przypadku) PIN4 portuD (+ silnika by napedzal kółka do jazdy na wprost) i PIN3 portuD (- silnika) dostarczyć akurat do PD4 + i PD3 -. ustawić wyjścia portu D aby na PD4 była 1 a PD3 0 jako GND? nie wiem zbytnio jak sie robi to zwarcie do masy, czy dobrze kombinuje? pomocy ! :D

    0 26
  • #2 05 Lut 2013 19:06
    Rokita1993
    Poziom 19  

    Myślę że konieczne było by zastosowanie tranzystorów bo wydajność pądowa wyjść z mikrokontrolera jest zdecydowanie za mała.

    Pozdrawiam

    0
  • #3 05 Lut 2013 19:20
    kankuro666
    Poziom 9  

    Nie no silniki mają jeszcze własny sterownik L293D, ale wiadomo, że OUT z niego idzie do silnika, a IN do mikrokontrolera. Pomijając to, nie wiem zbytnio, jak sprawić, aby właśnie do PD4, który idzie do IN1 sterownika silników i z OUT1 do jednej nóżki silnika, a PD3 to samo tylko do drugiej, czytałem coś, że normalnie jedynka logiczna tam, gdzie plus, a na minus jakieś zwarcie z masą, tylko jak?

    0
  • #5 05 Lut 2013 20:40
    kankuro666
    Poziom 9  

    No próbowałem np. z:

    Kod: c
    Zaloguj się, aby zobaczyć kod


    I to nie działa, bo myślałem, że ma być 0 na minusie i 1 na plusie, ale zamiast mi powiedzieć jedną linijkę kodu, to wywody mi robisz, nic się nie dzieje bez i z przyciskiem.

    0
  • #7 05 Lut 2013 21:38
    kankuro666
    Poziom 9  

    Mikrokontroler i włączenie silniczka, język C. Mikrokontroler i włączenie silniczka, język C.

    reszta złącz idzie do rzeczy akurat nie uzywanych w tym programie bo ja tylko chce ruszyc te silniki...

    0
  • #8 05 Lut 2013 21:57
    piotrva
    Moderator na urlopie...

    No mnie wygląda to tak czy siak na niepoprawnie podłączone zasilanie układu L293D. pin Vs(8) masz podłączony do masy, a powinien podawać napięcie zasilania dla silnika.
    Zaś co do wypowiedzi:

    kankuro666 napisał:
    ale zamiast mi powiedziec jedną linijke kodu to wywody mi robisz

    to nie robię żadnych wywodów, ale nie przestawiając schematu, ani kodu jakichkolwiek prób pisania to skąd ja mam wiedzieć jaki jest poziom Twojej wiedzy? Bo z pytania w temacie wywnioskowałem, że masz problem z wystawieniem silnie stanu niskiego na pinie procesora...

    0
  • #9 05 Lut 2013 22:19
    kankuro666
    Poziom 9  

    Pin 8 się rozgałęzia i idzie do 11-tki złącza, który idzie do VCC, ja tych schematów nie robiłem. One są ogólnodostępne i płytki są sprzedawane w ten sposób AVT2935 B.

    0
  • #12 05 Lut 2013 22:49
    kankuro666
    Poziom 9  

    Mikrokontroler i włączenie silniczka, język C. tak idzie chyba tez nie? a pętla główna przecież jest zamieszczona "while"

    0
  • #13 05 Lut 2013 22:52
    Rokita1993
    Poziom 19  

    Kolego a pod kondensatorem co robi ten węzeł? Zwiera Vs do Gnd.

    Pozdrawiam :)

    0
  • #14 05 Lut 2013 22:54
    piotrva
    Moderator na urlopie...

    1. Co do pętli, to ona się będzie wykonywać tylko do czasu, przez który na PB3 będzie masa. Jak tylko puścisz przycisk to program wyjdzie z pętli i wróci do niej dopiero po resecie procesora.
    2. Co do rzekomego połączenia - polecam poczytać, bez wymądrzania się - o kondensatorach. Jak się Kolega dowie, przez nie prąd nie przepływa (a przynajmniej na pewno nie stały i nie w ten sposób). Dla ustalenia uwagi przyjmijmy, że w tej konfiguracji kondensator jest przerwą w obwodzie (gdyby nią nie był to cały układ poszedłby z dymem).

    0
  • #16 05 Lut 2013 23:03
    kankuro666
    Poziom 9  

    http://mikrokontrolery.blogspot.com/2011/02/petla-while.html ani nigdzie gdzie czytalem nie jest napisane o nie-spelnieniu warunku, tylko while sprawdza dopóki się nie spełni, ale to nie jest cel mojego tematu, jedyne co ja chce to jedną jedyną linijkę uniwersalną dla jakiejkolwiek rzeczy do której się przyłącza + i -, jak ustawić piny by tak się stało.

    Edit: ale to nie jest za duzy projekt, ja juz zrobilem nawet kalkulator w C, z diodami guzikami buzzerem z sukcesem sie bawilem, ale to wszystko wymagalo tylko ustawienia 1 lub 0 aby dzialalo a nie 2 na raz dróg do jednej rzeczy...

    0
  • #17 05 Lut 2013 23:11
    dondu
    Moderator Mikrokontrolery Projektowanie

    Każdy program na mikrokontroler powinien (wręcz musi) mieć pętlę nieskończoną.

    Twoja pętla jest skończona, ponieważ ma warunek który może przestać być spełniony. Na taki wypadek kompilator przygotował pętlę nieskończona przy jednoczesnym wyłączeniu przerwań. Pętla ta dodana jest poza Twoim programem (nawet o tym nie wiesz). Jedyna możliwością wyjścia z tej sytuacji jest reset, o którym pisał piotrva.

    Teraz zastanów się co się dzieje, gdy włączasz zasilanie - co jest na pinie PB3 i jak na to zareaguje Twój program.


    EDIT.
    Absolutnie nie Twierdzę, że jesteś początkujący i że projekt Ciebie przerasta. Napisałem jedynie, że odnoszę takie wrażenie.

    0
  • #18 05 Lut 2013 23:16
    kankuro666
    Poziom 9  

    No tak po puszczeniu guzika wyjdę z pętli, ale podczas gdy guzik jest w dole jednak powinno się coś dziać, ale nic się nie dzieje. Napisałem program byle jak, tylko żeby zobaczyć jakiś ruch u silnika, jak ogarnę to, to naturalnie użyję zmiennych i w while(1) jakieś switche / fory, żeby było bardziej rozbudowane.

    0
  • #19 05 Lut 2013 23:19
    dondu
    Moderator Mikrokontrolery Projektowanie

    Czy ten przycisk jest normalnie zamknięty?
    Bo wygląda na normalnie otwarty. Jeżeli tak, to zobacz w kompilatorze CManiak, jak zadziała ten program:

    Kod: c
    Zaloguj się, aby zobaczyć kod


    Zauważysz, że pętla nie wykona się ani razu :)

    EDIT:
    Innymi słowy, jeśli w czasie włączania zasilania przycisk S1 nie jest nacisnięty, od razu lądujesz poza pętlą i mikrokontroler kręci się w pętli o której pisałem powyżej. A stamtąd można wyjść tylko przez reset.

    0
  • #20 05 Lut 2013 23:25
    kankuro666
    Poziom 9  

    Może dać.

    Kod: c
    Zaloguj się, aby zobaczyć kod

    0
  • #22 05 Lut 2013 23:31
    kankuro666
    Poziom 9  

    Fajnie, ale to i tak nie działa, ten mój program daje jedynkę na jedną nóżkę silnika i zero na drugą nóżkę silnika, tak ma być? Czy dać jeszcze jedynkę na enable?

    0
  • #24 05 Lut 2013 23:44
    kankuro666
    Poziom 9  

    Input Enable Output
    H               H             H
    L               H              L
    H               L              Z
    L                L              Z

    Z = High output impedance

    wygląda ze jak enable dam 1, IN1 na 1 i IN2 na 0 to na OUT1 będzie 1 a OUT2 będzie 0, czyli praktycznie powinno się kręcić, czemu tylko tego nie robi..

    0
  • #25 06 Lut 2013 18:02
    kankuro666
    Poziom 9  

    wie ktoś może jaka jest przyczyna? nawet stosując się do tego http://www.extremeelectronics.co.in/avrtutorials/pdf/avr_tutorial7---motor-control.pdf gdzie pisze że enable ma być HIGH, oraz stosując program tamten pod moje piny również nic się nie dzieje...

    EDIT: i napięcie Vs dobrze idzie do + AKU bo mam płytkę i zworką jest połączone do 11 pinu złącza 2, które idzie do tegoż AKU+, schemat chyba ma to troche dziwnie

    0
  • #26 06 Lut 2013 20:07
    BlueDraco
    Specjalista - Mikrokontrolery

    Do czego masz podłączone Vs i Vss układu L293?

    0
  • #27 06 Lut 2013 20:17
    kankuro666
    Poziom 9  

    Mikrokontroler i włączenie silniczka, język C. Mikrokontroler i włączenie silniczka, język C.

    Vs do AKU+ a Vss chyba do stabilizatora

    0