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

Atmega8a + L293D - Układ działa niepoprawnie

Dolby1337 26 Lis 2015 11:07 3912 35
  • #1 26 Lis 2015 11:07
    Dolby1337
    Poziom 4  

    Witam!
    Chciałem zrobić układ, w którym steruję kierunkiem obrotów silnika za pomocą atmega8a oraz l293d. Gdy podaję stan wysoki na pinie PC0 (lub innym z portu C) i stan niski na PB0 (lub inny z portu b) silnik nie obraca się. Układy połączone według schematów:
    Atmega8a + L293D - Układ działa niepoprawnie
    Atmega8a + L293D - Układ działa niepoprawnie

    Kod programu:

    Kod: c
    Zaloguj się, aby zobaczyć kod


    Mikrokontroler jest zasilany z USBasp oddzielnie. Co robię nie tak?

    0 29
  • Arrow Multisolution Day
  • #2 26 Lis 2015 11:23
    BlueDraco
    Specjalista - Mikrokontrolery

    Zasil układ L293 (Vcc2). Bez zasilania raczej nie zadziała.

    0
  • #3 26 Lis 2015 11:30
    paavo91
    Poziom 19  

    Vcc2 masz zwarte z GND? To nie może działać.

    0
  • Arrow Multisolution Day
  • #4 26 Lis 2015 11:42
    Dolby1337
    Poziom 4  

    BlueDraco napisał:
    Zasil układ L293 (Vcc2). Bez zasilania raczej nie zadziała.

    VCC2 jest połączone z plusem baterii.

    paavo91 napisał:
    Vcc2 masz zwarte z GND? To nie może działać.

    Schemat poprawiony, bo źle rozrysowałem.

    0
  • #5 26 Lis 2015 11:54
    Andrzej__S
    Poziom 28  

    Nie wiem, jak to masz zbudowane (dlaczego przedstawiłeś dwa osobne schematy), dlatego dla pewności zapytam: Czy GND mikrokontrolera jest połączone z GND układu L293D?

    0
  • #6 26 Lis 2015 12:01
    Dolby1337
    Poziom 4  

    Andrzej__S napisał:
    Nie wiem, jak to masz zbudowane (dlaczego przedstawiłeś dwa osobne schematy), dlatego dla pewności zapytam: Czy GND mikrokontrolera jest połączone z GND układu L293D?

    Nie jest.

    0
  • #7 26 Lis 2015 12:05
    Andrzej__S
    Poziom 28  

    Musi być połączone.

    0
  • Pomocny post
    #8 26 Lis 2015 14:15
    sorex86
    Poziom 15  

    Zrób to krokowo:
    0) Podlacz silnik pod baterie i sprawdz czy dziala.
    1) Nastepnie podlacz diodę LED pod PC0 PB0. Sprawdz czy procesor dziala poprawnie. Najlepiej zrob migajace diody, wtedy masz pewnosc, ze wyjscia sa dobrze ustawione:)

    http://mikrokontrolery.blogspot.com/2011/04/minimalne-podlaczanie-pinow.html

    2) Nastepnie na plytce prototypowej podlacz l293D (bez procesora) i sproboj obrocic silnikiem.

    http://www.forbot.pl/forum/topics20/h-bridge-vt111.htm

    Jak dziala 0,1 i 2, to wtedy polacz te "schematy".

    Pamietaj :) Kazdy prosty uklad jest na utubie:

    http://forbot.pl/blog/artykuly/programowanie/...no-8-sterowanie-silnikami-dc-petla-for-id8311
    https://www.youtube.com/watch?v=CDo1Yp9oHwA
    https://www.youtube.com/watch?v=5nDaHJqruq0
    http://www.robotplatform.com/howto/L293/motor_driver_1.html

    Jak odpalisz ten uklad to mozesz sie sprobowac "pobawic" np. TB6612 i PWMem :)

    0
  • #9 26 Lis 2015 21:39
    Dolby1337
    Poziom 4  

    Atmega8a + L293D - Układ działa niepoprawnie

    Mam podłączony tak układ. Teraz, żeby sprawdzić czy mostek dobrze obraca silnikiem mam podpiąć 1A pod VCC i 2A pod GND a później na odwrót?

    Dodano po 1 [godziny] 37 [minuty]:

    Podłączyłem układ jak na rysunku powyżej. 1,2E podłączyłem do pinu PB1, 1A do PC0, a 2A do PC1.

    Kod: c
    Zaloguj się, aby zobaczyć kod


    Gdy wgrywam ten program to układ działa poprawnie. Tylko dlaczego nie mogę sterować L293D poprzez piny atmegi, które są zdefiniowane jako wyjścia a nie wejścia? Chodzi mi głównie o 1,2E. Wydaje mi się, że wtedy nie mogę używam PWM'a, bo pin jest jako wejście a nie wyjście.

    0
  • #10 27 Lis 2015 13:41
    sorex86
    Poziom 15  

    Dobrze rozumiem, ze uklad Ci dziala jak piny masz ustawione jako "wejscia", a nie dziala gdy jako "wyjscia"?

    0
  • #11 29 Lis 2015 23:36
    2675900
    Użytkownik usunął konto  
  • #12 03 Gru 2015 21:30
    Dolby1337
    Poziom 4  

    Ok, poradziłem sobie z większością problemów, które wcześniej opisywałem. Złożyłem cały układ według schematu, który przedstawiam poniżej:
    Atmega8a + L293D - Układ działa niepoprawnie

    Program wgrany na procesor:

    Kod: c
    Zaloguj się, aby zobaczyć kod


    Teraz układ działa poprawnie tylko przez chwilę. Momentami działa tylko jeden silnik lub opóźnienia wynoszą 5 sekund. Układ zasilałem z powerbanka (5V/1A, 2000mAh), jak i prosto z USB. I tu jest moje pytanie, czy układ działa źle gdyż są zbyt małe opóźnienia? Czy może jest zła filtracja zasilania, bo czytałem na internecie, że to jest często przyczyną złego działa układu? Jeżeli jest zła filtracja to jak to naprawić?

    0
  • #13 03 Gru 2015 22:45
    2675900
    Użytkownik usunął konto  
  • #14 03 Gru 2015 23:04
    Dolby1337
    Poziom 4  

    Piotrus_999 napisał:
    Dolby1337 napisał:
    Jeżeli jest zła filtracja to jak to naprawić


    Dodaj drugi większy kondensator i regulator napięcia o małym spadku napięcia.

    jak bys jeszcze komentowal kod to by łatwiej sie czytalo. bo nie chce mi sie wertowac datasheeta zebe zobaczyc co dane bity ustawiaja.


    Kod napisany w oparciu o pierwszy kod ze strony:
    Code:
    http://mikrokontrolery.blogspot.com/2011/03/avr-fast-pwm-sposob-na-dac.html


    Gdzie dodać ten kondensator? Chodzi o elektrolityczny pomiędzy VCC i GND?
    I o co chodzi z tym regulatorem? Czy aby na pewno jest mi potrzebny?

    0
  • #15 04 Gru 2015 00:09
    2675900
    Użytkownik usunął konto  
  • #16 04 Gru 2015 07:20
    Dolby1337
    Poziom 4  

    Piotrus_999 napisał:
    2. pewnie by sie przydal np 3.3V - wysteruje bez problemu driver.


    Chodzi o stabilizator napięcia? Jeżeli tak to nie mogę dać 3,3V, bo zasilanie logiki mostka i mikrokontrolera potrzebuje 5V. Z kolei jeżeli zasilam układ 5V i dam stabilizator 5V to czy to cokolwiek zmieni?

    0
  • #17 04 Gru 2015 11:51
    dondu
    Moderator Mikrokontrolery Projektowanie

    1. Co to za silniki? Podaj parametry, wielkość, itp. ... może zdjęcia.

    2. Nie podłączaj zasilania Vcc2 z tego samego miejsca z którego podłączasz mikrokontroler. Skoki napięcia przy zmianach prędkości obrotowej silnika (szczególnie podczas włączania) mogą powodować resetowanie mikrokontrolera. Czy tak się dzieje można sprawdzić za pomocą diody LED i opóźnienia na początku programu.

    Sugerowane przez Piotrus_999 rozwiązanie z regulatorem 3,3V do zasilania mikrokontrolera w wersji ATmega8A jest dobrym rozwiązaniem problemu, ponieważ L293D prawidłowo rozpozna stan wysoki już od 2,3V - patrz parametr VIH w dokumentacji L293D.

    3. Program masz napisany prawidłowo aczkolwiek ciągłe ustawianie w pętli głównej pinów PC0 i PC3 nie ma sensu.

    4. Nie definiuj F_CPU w kodzie programu z tych powodów: http://mikrokontrolery.blogspot.com/2011/03/fcpu-gcc-gdzie-definiowac.html

    5. Filtracja zasilania to podstawa - czytaj cykl w dziale "Zasilanie i zakłócenia": http://mikrokontrolery.blogspot.com/p/spis-tresci.html#dzial_zasilanie_zaklocenia


    Piotrus_999 napisał:
    jak bys jeszcze komentowal kod to by łatwiej sie czytalo. bo nie chce mi sie wertowac datasheeta zebe zobaczyc co dane bity ustawiaja.

    Uwaga bardzo istotna niemniej jednak mimo komentarzy i tak musimy sprawdzać w dokumentacji, bo bardzo często początkujący mylą bity, rejestry lub nie zmieniają komentarza po zmianach w kodzie. :)

    0
  • #18 04 Gru 2015 15:12
    Dolby1337
    Poziom 4  

    @dondu

    dondu napisał:
    1. Co to za silniki? Podaj parametry, wielkość, itp. ... może zdjęcia.

    Silniki były wymontowane ze starych zabawek.

    dondu napisał:
    2. Nie podłączaj zasilania Vcc2 z tego samego miejsca z którego podłączasz mikrokontroler. Skoki napięcia przy zmianach prędkości obrotowej silnika (szczególnie podczas włączania) mogą powodować resetowanie mikrokontrolera. Czy tak się dzieje można sprawdzić za pomocą diody LED i opóźnienia na początku programu.

    Podłączyłem diodę LED i co prawda dioda nieco przygasa (co jest zapewne spowodowane tym, że PWM silników jest przestawiany z 0% do 100%), ale nie gaśnie całkowicie. Widziałem zresztą masę projektów, w których było jedno źródło zasilania.

    dondu napisał:
    Sugerowane przez Piotrus_999 rozwiązanie z regulatorem 3,3V do zasilania mikrokontrolera w wersji ATmega8A jest dobrym rozwiązaniem problemu, ponieważ L293D prawidłowo rozpozna stan wysoki już od 2,3V - patrz parametr VIH w dokumentacji L293D.

    Sprawdzałem pod USB i układ pod 3,3V w ogóle nie rusza, więc jaki będzie sens zastosowania regulatora 3,3V?

    0
  • #19 04 Gru 2015 15:34
    2675900
    Użytkownik usunął konto  
  • #21 04 Gru 2015 20:44
    Dolby1337
    Poziom 4  

    Piotrus_999 napisał:
    No skoro wiesz lepiej, to po co pytasz?

    Nie tyle, że wiem lepiej, po prostu pytam i wydaje mi się rzeczą naturalną, że człowiek pyta, jeżeli chce coś zrozumieć. Jakbym wiedział lepiej to bym nie pytał. Logiczne myślenie mówi mi, że regulator 3,3V nic mi nie da, ale jeżeli się mylę, to bardziej doświadczeni koledzy mogą mi wyjaśnić dlaczego się mylę.

    Wojciech. napisał:
    Zasil silniki z zewnętrznego źródła.

    Chodzi o to, że chcę, aby układ był zasilany z jednego źródła.

    0
  • #22 04 Gru 2015 21:10
    Wojciech.
    Poziom 31  

    Dolby1337 napisał:
    Piotrus_999 napisał:
    No skoro wiesz lepiej, to po co pytasz?

    Nie tyle, że wiem lepiej, po prostu pytam i wydaje mi się rzeczą naturalną, że człowiek pyta, jeżeli chce coś zrozumieć. Jakbym wiedział lepiej to bym nie pytał. Logiczne myślenie mówi mi, że regulator 3,3V nic mi nie da, ale jeżeli się mylę, to bardziej doświadczeni koledzy mogą mi wyjaśnić dlaczego się mylę.

    Wojciech. napisał:
    Zasil silniki z zewnętrznego źródła.

    Chodzi o to, że chcę, aby układ był zasilany z jednego źródła.

    Wziąłeś pod uwagę wydajność źródła, i pobór prądu przez silniki?
    Jakie masz te silniki, wrzuć fotke.

    0
  • #23 04 Gru 2015 21:30
    dondu
    Moderator Mikrokontrolery Projektowanie

    Dolby1337 napisał:
    @dondu

    dondu napisał:
    1. Co to za silniki? Podaj parametry, wielkość, itp. ... może zdjęcia.

    Silniki były wymontowane ze starych zabawek.

    Problemem początkujących często jest nieodpowiadanie na zadane pytania.
    Wprawdzie starasz się, ale odpowiadasz lakonicznie, że to silnik z zabawek.
    A ja przecież w tym pytaniu podpowiedziałem Ci co nas interesuje i co powinieneś podać, a teraz już nawet kol. o to pyta:

    Wojciech. napisał:
    Jakie masz te silniki, wrzuć fotke.


    Dlatego proszę Cię, byś dokładnie odpowiadał na nasze pytania, bo nie zadajemy je tylko by je zadać, lecz by Ci pomóc


    Dolby1337 napisał:
    Podłączyłem diodę LED i co prawda dioda nieco przygasa (co jest zapewne spowodowane tym, że PWM silników jest przestawiany z 0% do 100%), ale nie gaśnie całkowicie. Widziałem zresztą masę projektów, w których było jedno źródło zasilania.

    ... a to już może oznaczać reset mikrokontrolera.

    Dolby1337 napisał:
    Sprawdzałem pod USB i układ pod 3,3V w ogóle nie rusza, więc jaki będzie sens zastosowania regulatora 3,3V?

    Taki, że z jednego źródła zasilania 5V, zasilisz:
    - bezpośrednio silniki oraz L293D ,
    - regulator napięcia 3,3V który będzie zasilał mikrokontroler przez co rozdzieli Ci zasilanie mikrokontrolera od silników. Po stronie wyjściowej dasz spory kondensator, który będzie skutecznie zapewniał zasilanie mikrokontrolera, przy spadku napięcia.

    Inną opcją jest zastosowanie diody, która rozdzieli zasilanie dla mikrokontrolera.

    0
  • #24 05 Gru 2015 14:55
    Dolby1337
    Poziom 4  

    Problem powrócił. Główne założenie pozostaje, aby układ był zasilany z jednego źródła napięcia. Silniki posiadam takie:
    http://letsmakerobots.com/content/gear-motor-dg01d

    Problemem nadal jest to, że przy uruchomieniu układu silniki "piszczą", bądź kręci się tylko jeden z nich a drugi "piszczy". Gdy układ po uruchomieniu zadziała, ale go zresetuję, to dzieje się to samo. Proszę o porady, wskazówki.

    Złożyłem nawet układ, który znalazłem na stronie:
    http://feriar-lab.pl/v-behaviorurldefaultvmlo/

    Atmega8a + L293D - Układ działa niepoprawnie
    Układ ten nie działał poprawnie.

    0
  • #26 20 Gru 2015 22:18
    Dolby1337
    Poziom 4  

    Schemat:
    Atmega8a + L293D - Układ działa niepoprawnie

    Program:

    Kod: c
    Zaloguj się, aby zobaczyć kod

    0
  • #28 21 Gru 2015 13:54
    Dolby1337
    Poziom 4  

    @dondu
    Zdjęcia płytki stykowej:
    Atmega8a + L293D - Układ działa niepoprawnie
    Atmega8a + L293D - Układ działa niepoprawnie

    Silniki:
    Atmega8a + L293D - Układ działa niepoprawnie

    Zasilanie (power bank):
    Atmega8a + L293D - Układ działa niepoprawnie

    Cały układ:
    Atmega8a + L293D - Układ działa niepoprawnie



    dondu napisał:
    Dodaj jeszcze zdjęcia tego układu, tylko dobrze oświetlone i ostre.
    Podaj także, jaką częstotliwością taktujesz mikrokontroler oraz jak ustawione masz fusebity (Low i High).

    Wszystkie ustawienia fabryczne, nic nie zmieniane.

    0
  • #29 21 Gru 2015 14:09
    2675900
    Użytkownik usunął konto  
  • #30 21 Gru 2015 15:26
    dondu
    Moderator Mikrokontrolery Projektowanie

    Bez przesady piotrze. Silniki te to zaledwie:

    Cytat:
    No load current (6 v) : 70 mA


    Wytrzymałość styków płytki i przewodów z powerbanku są liczone w amperach. Bez problemu to musi działać.

    Wieczorem sprawdzę zdjęcia, ale już teraz uwaga - brak kondensatorów elektrolitycznych filtrujących zasilanie.

    0