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

Atmega8A - PWM via timer, czy to w ogóle działa o.0

mondo90 20 Kwi 2015 20:08 1860 31
  • #1 20 Kwi 2015 20:08
    mondo90
    Poziom 13  

    Witam,

    jestem załamany współpracą z atmegą8A i próbą uzyskania oczekiwanego sygnału PWM. Po kilku godzinach siedzenia nad tym mam już dość i liczę już chyba tylko na waszą pomoc :cry:

    Po pierwsze zacznę od tego że zagadnienie wydaje się bardzo proste, zatrudniamy jeden z timerów aby odliczał od zadanej wartość A (najprościej chyba od zera) do B (np. 255) i regulujemy w ten sposób wypełnienie sygnału. Chciałbym aby wyglądało to tak, że jeżeli ustawię programowo 128 to otrzymam wypełnienie 50 % i tym samym 0.5 wartości Vcc, niezależnie na dwóch pinach PWM OC1A/OC1B. Tylko tyle, czy ja za dużo wymagam ? Chyba nie powinno to zając więcej niż 30 min, tymczasem .. :cry:

    No więc po zapoznaniu się z teorią z książki Pana Francuza, oraz datasheet, z którego wybrałem sobie tryb 14 "Fast PWM" z top zapisanym w zmiennej "ICR1", próbuję napisać sensowny kod:

    Kod: c
    Zaloguj się, aby zobaczyć kod


    Efekt - napięcie 0.4 V zamiast 2.5 i 5 V ;/

    No nic, może zrobiem coś źle weźmy zatem przykład z wspomniej już książki Język C dla mikrokontrolerów AVR, przepisuje niemal żywcem kod z strony 319:

    Kod: c
    Zaloguj się, aby zobaczyć kod


    Co jest równoznaczne z wyborem trybu FastPWM 8 Bit. Oczekiwania takie jak w powyższym kodzie tyle tylko, że tutaj mam wysoką powoność ponieważ sam autor zarzeka się że taki kod wygeneruje 0.5 oraz 1 x napiecie Vcc na pinach odpowiednio
    OCR1B i OCR1A. Niestety efekt taki sam :cry:

    Sam uC działa bo wszytko inne ADC działają ok, do tego różne "losowe zmiany" w kodzie generują jakiś tan inny efekt. Natomiast dlaczego nie działa to jak powinno ? :|

    Czy ktoś jest to w stanei wytłumaczyć ? :cry:

    Z góry dziekuję.

    0 29
  • Katalog Megger
  • #2 20 Kwi 2015 20:59
    zumek
    Poziom 39  

    mondo90 napisał:
    ...
    Czy ktoś jest to w stanei wytłumaczyć ? :cry:

    Z góry dziekuję.

    A co z wyjściami OC1A(PB1) i OC1B(PB2), skonfigurowałeś je właściwie :?:

    0
  • #3 20 Kwi 2015 22:23
    mondo90
    Poziom 13  

    zumek napisał:
    A co z wyjściami OC1A(PB1) i OC1B(PB2), skonfigurowałeś je właściwie


    Oczywiście, że tak:
    Kod: c
    Zaloguj się, aby zobaczyć kod

    0
  • #4 21 Kwi 2015 16:15
    dondu
    Moderator Mikrokontrolery Projektowanie

    Problemy należy rozkładać na czynniki pierwsze. Moja propozycja jest więc następująca - w osobnym projekcie zrób tylko ustawianie PWM wraz z main() itp., i załącz cały kod, a nie tylko fragmenty. W ten sposób będziemy pewni, że pozostała część Twojego programu nie wpływa na zachowanie się PWM.

    Możesz także wzorować się na tym: http://mikrokontrolery.blogspot.com/2011/03/avr-fast-pwm-sposob-na-dac.html

    0
  • #5 22 Kwi 2015 18:11
    mondo90
    Poziom 13  

    dondu, dziękuję za radę, bardzo pomocny okazał się również odnośnik do bloga który podałeś.

    Poniekąd udało mi się rozwiązać problem ale nie do końca. Otóż te napięcia o których pisałem w poście pierwszym, a które nie zgadzały się z tym co ustawiałem w programie wynikały z mojego głupiego błędy - masę podłączyłem do masy innego układu zasilania która widocznie miała inny potencjał. Po zmontowaniu dwóch diod na zasilaniu tylko z uC działa to dość dobrze.

    Problem pojawia się jednak, gdy próbuje sterować silnikiem DC (DG02S-A130GEARMOTOR) z wykorzystaniem mostka H (L293D).

    Mostek mam podłączony jak na rys. poniżej:
    Atmega8A - PWM via timer, czy to w ogóle działa o.0

    Dane:
    - Zasilanie Vss oraz Vs mostka => 5 V
    - Wedle dokumentacji silnika powinien on być zasilany 3V i pobiera prąd w zakresie 120-170 mA
    - wydajność prądowa mostka to 0.6 A do max 1.2 A (chwilowo)

    A więc wszytko wydaje się być dobrze dobrane, założenie było takie (ponieważ mam 4 silniki które powinny pracować w grupach po dwa) aby jeden kanał mostka sterował dwoma silnikami.

    Program do sterowania póki co jednym silnikiem:

    Kod: c
    Zaloguj się, aby zobaczyć kod


    Z strony uC wszytko jest chyba ok, natomiast cuda po stronie mostka H. Dokładniej mówiąc już bez podłączenia PWM na tym pinie posiada on ok. 2V które stanowią stan wysoki i silnik się obraca co ciekawe podłączenie sygnału PWM z uC powoduje zwolnienie obrotów silnika. Jak to jest możliwe, że PIN PWM jest docelowo w stanie wysokim o.0 ? Kolejna rzecz to potencjał pomiędzy OUTA_1 i OUTA_2 przy wypełnieniu PWM 100 % wynosi ok 2.7 V, a powinien ok. 5 prawda ? Do tego jest on niższy niż potencjał pomiędzy OUTA_1 a masą mostka, tam przy wypełnieniu 100% otrzymuje napięcie ok. 3.4 V ?

    Co jest nie tak ? :|
    Z góry dziękuję za pomoc.

    0
  • #6 22 Kwi 2015 19:00
    szelus
    Specjalista - Mikrokontrolery

    Zasada numer 1: wejścia cyfrowe nie mogą po prostu "wisieć sobie". Wyjątkiem mogą być wejścia przystosowane do współpracy z elementami stykowymi (przełączniki).
    L293D to układ bipolarny, jako taki jego wejścia są wykonane zapewne w technice TTL lub kompatybilnej, a w tych domyślny stan wiszącego wejścia jest wysoki.
    Bipolarny stopień wyjściowy (+ pomiary wykonane zapewne zwykłym miernikiem prądu stałego) wyjaśnia też dlaczego napięcia na wyjściu są niższe od zasilania.
    Tranzystor bipolarny ma parametr zwany napięciem nasycenia (napięcie na złączu CE w stanie nasycenia jest zawsze większe od zera) a tu stopień wyjściowy jest pewnie jeszcze w układzie Darlingtona. Masz to podane w parametrach elektrycznych układu:
    VOH = min: VCC2 - 1,8; typ: VCC2 - 1,4

    edit: W sumie poprawka, wejścia TTL mogą "wisieć sobie", chociaż jest to niezalecane. Wejścia MOS/CMOS absolutnie nie.

    0
  • Katalog Megger
  • #7 22 Kwi 2015 19:18
    Wirnick
    Poziom 26  

    Proszę jednak zapoznać się z zasadą działania mostkaH.
    W tym projekcie układ będzie użyty nietypowo - jako dwa układy przeciwsobne.
    Znaczy to tyle, że na wyjściu OUT1(OUT2) istnieje połowa napięcia VCC2 bez wysterowania mostka (PWM i DIR wpływa na obydwie części - docelowo mostka H ). Aby uzyskać możliwość regulacji kierunku Tego silnika musisz go podłączyć do połowy napięcia VCC2, zamiast GND1(2).

    0
  • #8 22 Kwi 2015 19:48
    szelus
    Specjalista - Mikrokontrolery

    No tak. Brak kompletnego schematu i trzeba się domyślać, co i jak autor chce osiągnąć.
    @Wirnick, ja zrozumiałem, że autor chce połączyć po dwa silniki równolegle i te zestawy podłączyć do wyjść MOTOR1/2 ze schematu. Tak mogło by być.

    Druga poprawka, to wcześniej nie zauważyłem, że dokumentacja podaje jak jest rozwiązane wejście w L293D i nie jest to wejście TTL. To jest po prostu baza tranzystora i ona w żadnym wypadku nie powinna "wisieć". Ale owszem, wisząca odpowiada stanowi wysokiemu.

    0
  • #9 22 Kwi 2015 22:54
    mondo90
    Poziom 13  

    szelus napisał:
    Zasada numer 1: wejścia cyfrowe nie mogą po prostu "wisieć sobie".

    Dokumentacja podaje "LOGICAL "0" INPUT VOLTAGE UP TO 1.5 V (HIGH NOISE IMMUNITY)", poza tym to jest coś dziwnego bo gdyby to była kwestia tego, że wejścia PWM "wiszą" to napięcie na nich by się zmieniało losowo, a tutaj cały czas ok. 2V o.0. Sugerujecie rezystor podciągający do masy np. 10k ?

    szelus napisał:
    No tak. Brak kompletnego schematu i trzeba się domyślać, co i jak autor chce osiągnąć.


    Jak to przecież wrzuciłem schemat podłączenia mostka + wyjścia do silnika. I tak u mnie MOTOR_1 o MOTOR_2 będą docelowo zawierały swa silniki każdy czyli 4 w sumie. Na razie testuje na jednym i już są problemy...

    0
  • #10 23 Kwi 2015 12:49
    dondu
    Moderator Mikrokontrolery Projektowanie

    1.

    mondo90 napisał:
    - Wedle dokumentacji silnika powinien on być zasilany 3V i pobiera prąd w zakresie 120-170 mA
    - wydajność prądowa mostka to 0.6 A do max 1.2 A (chwilowo)

    A więc wszytko wydaje się być dobrze dobrane, założenie było takie (ponieważ mam 4 silniki które powinny pracować w grupach po dwa) aby jeden kanał mostka sterował dwoma silnikami.

    Nie jest to takie oczywiste, ponieważ w dokumentacji silnika nie znalazłem parametru dot. prądu w momencie rozruchu a w szczególności w momencie gdy oś nie może się z jakichś powodów kręcić. Mając dwa silniki na kanale i cztery na całym L293D możesz w takich sytuacjach znacząco przekraczać prądy maksymalne L293D, tym bardziej, że zasilasz je 5V (minus spadek napięcia na L239D), a silnik jest na 3V?

    Dlatego najpierw należy dokonać pomiarów i dopiero na tej podstawie można stwierdzić, że jest dobrany prawidłowo lub nie. Ponieważ stosujesz PWM, to oczywiście można o to zadbać od strony programowej, ale o tym chyba nie napisałeś, dlatego zwracam na to uwagę.


    2. Na schemacie podajesz osobne napięcia 5V i Vcc. W poście piszesz, żę są takie same i mają 5V. Chcę się upewnić, że to osobne źródła napięcia, a nie jedno i to samo - więc jak?

    3. Diody zabezpieczające:

    Cytat:
    On the L293, external high-speed output clamp diodes should be used for inductive transient suppression

    Dodaj je bo bez nich będą kłopoty. Szczegóły na rysunkach w dokumentacji L293D.
    a wynika to z faktu iż silniki są elementami indukcyjnymi i grozi to: http://mikrokontrolery.blogspot.com/2011/03/przekaznik-i-zaklocenia.html


    4. Masy muszą być połączone.
    Pokaż co zrobiłeś na schemacie:

    mondo90 napisał:
    Otóż te napięcia o których pisałem w poście pierwszym, a które nie zgadzały się z tym co ustawiałem w programie wynikały z mojego głupiego błędy - masę podłączyłem do masy innego układu zasilania która widocznie miała inny potencjał. Po zmontowaniu dwóch diod na zasilaniu tylko z uC działa to dość dobrze.

    0
  • #11 23 Kwi 2015 14:19
    mondo90
    Poziom 13  

    dondu napisał:
    a silnik jest na 3V?

    Dokładnie tak, 3V wedle dokumentacji silnika.

    dondu napisał:
    Nie jest to takie oczywiste, ponieważ w dokumentacji silnika nie znalazłem parametru dot. prądu w momencie rozruchu a w szczególności w momencie gdy oś nie może się z jakichś powodów kręcić. Mając dwa silniki na kanale i cztery na całym L293D możesz w takich sytuacjach znacząco przekraczać prądy maksymalne L293D(...)

    No ok zastanówmy się przez chwilę, jak już wspomniałem dokumentacja podaje zakres poboru prądu dla jednego silnika 120-170 mA, czyli zakładam w tym momencie że górna granica (170 mA) to właśnie prąd rozruchowy lub prąd silnika podczas pracy z zwiększonym obciążeniem, czy mogę tak założyć ? Jeśli tak to wtedy mając dwa silniki na jednym kanale mam 2x175 mA a więc sporo poniżej 0.6 A które jest na jeden kanał PWM. Nawet jeśli założymy, że przy rozruchu pobierany jest prąd rzędu 0.6 A to wtedy mamy 1.2 A dla dwóch i wtedy dalej mieścimy się w granicach chwilowego poboru prądu dla danego kanały mostka.

    dondu napisał:
    2. Na schemacie podajesz osobne napięcia 5V i Vcc. W poście piszesz, żę są takie same i mają 5V. Chcę się upewnić, że to osobne źródła napięcia, a nie jedno i to samo - więc jak?

    Vcc = 5V, oba są takie same ;)

    dondu napisał:
    Diody zabezpieczające:

    Cytat:
    On the L293, external high-speed output clamp diodes should be used for inductive transient suppression


    Widzę że odnosisz się do dokumentacji z texas instruments jedna z pierwszych w google, ja korzystam z tej załączonej przez sprzedawcę http://botland.com.pl/index.php?controller=attachment&id_attachment=32 i tam co prawda nic o o dodatkowych diodach nie ma (wręcz pisza że układ zawiera takie wewnątrz) natomiast na pewno nie jest to zły pomysł. Pytanie tylko jaka dioda, Schottky (1N5819 | 1A / 40V ) połączona równolegle z zasilaniem silika czyli na kanałach OUTA_1 OUTA_2 będzie ok ?

    0
  • Pomocny post
    #12 23 Kwi 2015 15:01
    dondu
    Moderator Mikrokontrolery Projektowanie

    W jednostronicowej dokumentacji (którą znalazłem) jedyne dane to:

    Cytat:
    Suggested Voltage: 3V DC
    1 No Load Spedd: 65±10rpm
    2 No Load Current: 125mA (170mA MAX)
    3 Allowable max. Torque: 800gf.cm min

    No Load Current to prąd bez obciążenia podany zapewne dla 3V. Wartość Max 170mA odczytuję jako odchyłkę od wartości typowej (rozbieżności pomiędzy poszczególnymi egzemplarzami), gdzie producent informuje, że bez obciążenia żaden z tego typu silników nie przekroczy 170mA.

    Jeśli producent podawałby prąd przy zatrzymaniu osi silnika podawałby parametr: Stall Current

    Być może warto poszukać na stronie producenta innej dokumentacji lub po prostu zmierzyć jak sugerowałem i dopiero na tej podstawie dalsze wnioski wywodzić, tym bardziej, że zasilasz je z 5V (w najgorszym wypadku - wypełnienie PWM 100%).

    mondo90 napisał:
    Vcc = 5V, oba są takie same ;)

    Warto byłoby zadbać, by jakoś odseparować mikrokontroler od L293D i silnika - filtr, diody, itp.

    Diody zabezpieczające - jeśli masz inną wersję układu i diody są wbudowane, to oczywiście możesz je pominąć.

    0
  • #13 23 Kwi 2015 15:38
    mondo90
    Poziom 13  

    dondu napisał:
    Być może warto poszukać na stronie producenta innej dokumentacji lub po prostu zmierzyć jak sugerowałem i dopiero na tej podstawie dalsze wnioski wywodzić, tym bardziej, że zasilasz je z 5V (w najgorszym wypadku).


    Poniżej moje testy multimetrem:
    - Napięcie na pinach OUTA_1/2 (bez podłączonego silnika i przy wypełnieniu 100%): 4.5 V
    - Napięcie na pinach OUTA_1/2 (z podłączonym jednym silnikiem i przy wypełnieniu 100%): i tutaj dwie wersje: 1.4 V i silnik nie moze ruszyc lekko warcząc lub 2.8 V silnik rusza. Jest to losowe raz rusza raz nie ;/
    - Pobór prądu na pinach OUTA_1/2 (z podłączonym jednym silnikiem i przy wypełnieniu 100%):
    260 mA (silnik nie moze ruszyć) lub 90 mA silnik w ruchu.

    Dlaczego napięcie z podłączonym silnikiem spada z 4.5 do 1.4 V ? No i przede wszystkim dlaczego nawet 100 % wypenienie nie może ruszyć silnika, a co tu dopiero mówić o sterowaniu prędkością ;(

    dondu napisał:
    Diody zabezpieczające - jeśli masz inną wersję układu i diody są wbudowane, to oczywiście możesz je pominąć.


    No ok ale czy mógłbyś się odnieść do dobranej przeze mnie diody oraz sposobu jej podłączenia, czy jest ok ? Dzięki.

    0
  • #14 23 Kwi 2015 15:50
    dondu
    Moderator Mikrokontrolery Projektowanie

    Pomiarów prądu dokonuj podłączając silnik bezpośrednio do źródła zasilania.
    Ale pomiary niech trwają krótko, byś nie uszkodził silników zasilając je 5V.

    Diodę dobiera się do silnika, a układ połączenia diod jest pokazany w dokumentacji.
    Moim zdaniem zaproponowane diody są OK, ale kol albertb może coś więcej w tej sprawie doda :)

    0
  • #15 23 Kwi 2015 17:02
    mondo90
    Poziom 13  

    dondu napisał:
    Pomiarów prądu dokonuj podłączając silnik bezpośrednio do źródła zasilania.


    Po bezpośrednim podłączeniu do 3.3 V:
    - Pobór prądu dla jednego silnika bez obciążenia: 105 mA
    - Pobór prądu dla jednego silnika z obciążeniem: 170 mA lekko obciążony, 580 mA z zablokowaniem osi.

    Nie wygląda to źle, dodam że na tych 3.3 V silnik ma sporo mocy. Powielam moje pytania związane z problemami sterowania za pośrednictwem mostak H. Dlaczego napięcie z podłączonym silnikiem na wyjściach mostka spada z 4.5 do 1.4 V ? No i przede wszystkim dlaczego nawet 100 % wypełnienie nie może ruszyć silnika, a co tu dopiero mówić o sterowaniu prędkością ;( ?

    0
  • #16 23 Kwi 2015 17:19
    dondu
    Moderator Mikrokontrolery Projektowanie

    No to teraz już będziesz wiedział jak sprawdzić podstawowy parametr silnika, bo jak widać jest on znacząco większy niż się spodziewałeś, a w trakcie ruszania silników w szczególności z obciążeniem może to być bardzo istotne.

    mondo90 napisał:
    Nie wygląda to źle, dodam że na tych 3.3 V silnik ma sporo mocy. Powielam moje pytania związane z problemami sterowania za pośrednictwem mostak H. Dlaczego napięcie z podłączonym silnikiem na wyjściach mostka spada z 4.5 do 1.4 V ? No i przede wszystkim dlaczego nawet 100 % wypełnienie nie może ruszyć silnika, a co tu dopiero mówić o sterowaniu prędkością ;( ?

    Rozumiem, że te pomiary prądów maksymalnych robiłeś za pomocą tego samego źródła zasilania i jest ono w stanie spokojnie uciągnąć start silników przy jednoczesnym utrzymaniu napięcia?

    Bo jeśli nie, to mikrokonroler także jest narażony na ten problem - rozpocząłbym więc od sprawdzenia, czy w trakcie próby z PWM 100% napięcie zasilania mikrokontrolera (na jego nóżkach) jest prawidłowe.

    Jeżeli tak będzie, to musielibyśmy zerknąć na schemat całości + aktualny program, a co najmniej zobaczyć zdjęcia, byśmy chociaż mogli zobaczyć jak działasz.

    0
  • Pomocny post
    #17 23 Kwi 2015 17:21
    Wirnick
    Poziom 26  

    Pytanie uzupełniające. Czy połączenia są jak na rysunku?
    Atmega8A - PWM via timer, czy to w ogóle działa o.0
    IN1 i IN2 możesz sterować z procesora. Warunek - IN1 = !IN2

    0
  • #18 23 Kwi 2015 17:59
    mondo90
    Poziom 13  

    dondu napisał:
    Rozumiem, że te pomiary prądów maksymalnych robiłeś za pomocą tego samego źródła zasilania i jest ono w stanie spokojnie uciągnąć start silników przy jednoczesnym utrzymaniu napięcia?

    Tak, obecnie jest to zasilane z modułu zasilającegi płytkę stykową "YwRobot", posiada ona dwa napięcia zasilania 3.3 i 5 V przełączane zworką.
    dondu napisał:
    rozpocząłbym więc od sprawdzenia, czy w trakcie próby z PWM 100% napięcie zasilania mikrokontrolera (na jego nóżkach) jest prawidłowe.

    Podczas pracy uC z pwm napiecie zasilania uC jest stałe i wynosi 3.2 V
    Wirnick napisał:
    Pytanie uzupełniające. Czy połączenia są jak na rysunku?

    IN1 i IN2 możesz sterować z procesora. Warunek - IN1 = !IN2


    Tzn tak jak już mówiłem na pinie PWM (Enable ) cały czas (nie wiem dlaczego) panuje zasilanie 2 V co oczywiście powoduje że silnik pracuje. Po dołożeniu rezystora podciągającego do masy jest tam 0 V ale nawet wtedy gdy pojawia się sygnał PWM. IN1 jest podłączony na stałe do +3 V a IN2 do masy. Zagadką jest stałe +2V na ENABLE1 czyli PWM ?

    0
  • #19 23 Kwi 2015 18:17
    dondu
    Moderator Mikrokontrolery Projektowanie

    Pomimo, że się starasz odpowiadać szczegółowo, to znacznie lepiej byłoby, gdybyś dał nam to o co prosimy:
    - schemat
    - zdjęcia.

    Objawy które opisujesz:

    mondo90 napisał:
    Tzn tak jak już mówiłem na pinie PWM (Enable ) cały czas (nie wiem dlaczego) panuje zasilanie 2 V co oczywiście powoduje że silnik pracuje. Po dołożeniu rezystora podciągającego do masy jest tam 0 V ale nawet wtedy gdy pojawia się sygnał PWM. IN1 jest podłączony na stałe do +3 V a IN2 do masy.

    są na równie dziwne jak niemożliwe :)
    Jak bowiem może być:
    - na niepodłączonym pinie wejściowym 2V,
    - ale gdy podłączasz rezystor pull-down (o nieznanej nam wartości) to jest 0V,
    - a gdy dodatkowo podłączysz do pinu sygnał PWM to nadal jest 0V.
    To się wzajemnie wyklucza. Wydajność prądowa wyjścia mikrokontrolera jest na tyle duża, że w tej sytuacji musiałbyś zaobserwować jakieś napięcie, a nie 0V - no chyba, że rezystor ma 0Ω :)

    Daj więc nam materiały do analizy, a dodatkowo opisuj je tak jak robisz to dotychczas, bo nawet nie wiemy, co z tymi diodami na zasilaniu o których pisałeś w poście #5 i czy masy w końcu połączyłeś poprawnie, czy też nie.

    0
  • #20 23 Kwi 2015 18:28
    szelus
    Specjalista - Mikrokontrolery

    mondo90 napisał:
    Dokumentacja podaje "LOGICAL "0" INPUT VOLTAGE UP TO 1.5 V (HIGH NOISE IMMUNITY)", poza tym to jest coś dziwnego bo gdyby to była kwestia tego, że wejścia PWM "wiszą" to napięcie na nich by się zmieniało losowo, a tutaj cały czas ok. 2V o.0. Sugerujecie rezystor podciągający do masy np. 10k ?

    "HIGH NOISE IMMUNITY" nie oznacza, że wejście może sobie wisieć robiąc za antenę, a tylko odporność na szum nałożony na sygnał sterujący.
    Jeżeli chcesz mieć stan ustalony bez podłączonego procesora to musisz dać rezystor podciągający, tak jak na schemacie kolegi Wirnicka.
    Cytat:
    Podczas pracy uC z pwm napiecie zasilania uC jest stałe i wynosi 3.2 V
    A skąd się wzięło 3.2V? To zasilasz z 5V czy z 3V?
    Cytat:
    Tzn tak jak już mówiłem na pinie PWM (Enable ) cały czas (nie wiem dlaczego) panuje zasilanie 2 V co oczywiście powoduje że silnik pracuje.
    Przecież napisałem dlaczego. W dokumentacji jest schemat wejścia.
    Cytat:
    Po dołożeniu rezystora podciągającego do masy jest tam 0 V ale nawet wtedy gdy pojawia się sygnał PWM.
    Jaki ten rezystor? Sprawdzałeś jak wygląda wyjściowy PWM bez podłączania?

    0
  • #21 23 Kwi 2015 18:35
    dondu
    Moderator Mikrokontrolery Projektowanie

    szelus napisał:
    Cytat:
    Podczas pracy uC z pwm napiecie zasilania uC jest stałe i wynosi 3.2 V
    A skąd się wzięło 3.2V? To zasilasz z 5V czy z 3V?

    Dobrze, że to podniosłeś, bo przegapiłem, a z tym być może wiąże się jeszcze problem dot. L293D:

    Cytat:
    pin VSS - Logic Supply Voltage (pin 20) -> min 4.5 V
    pin VS - Supply Voltage (pin 10) -> min VSS

    ... i to jest problem, że nie mamy do analizy schematu całości.

    0
  • #22 23 Kwi 2015 20:53
    mondo90
    Poziom 13  

    dondu napisał:
    Objawy które opisujesz:

    mondo90 napisał:
    Tzn tak jak już mówiłem na pinie PWM (Enable ) cały czas (nie wiem dlaczego) panuje zasilanie 2 V co oczywiście powoduje że silnik pracuje. Po dołożeniu rezystora podciągającego do masy jest tam 0 V ale nawet wtedy gdy pojawia się sygnał PWM. IN1 jest podłączony na stałe do +3 V a IN2 do masy.

    są na równie dziwne jak niemożliwe
    Jak bowiem może być:
    - na niepodłączonym pinie wejściowym 2V,

    szelus napisał:

    Cytat:
    Tzn tak jak już mówiłem na pinie PWM (Enable ) cały czas (nie wiem dlaczego) panuje zasilanie 2 V co oczywiście powoduje że silnik pracuje.
    Przecież napisałem dlaczego. W dokumentacji jest schemat wejścia.


    No więc jak, te 2V pomiędzy pinem PWM_1 a GND są uzasadnione czy nie ? Dondu pisze ze to nie mozliwe, szelus zaś, że to jest oczywiste. Jak więc jest, i dlaczego tak jest bo tego naprawdę nie rozumiem ?
    dondu napisał:
    Daj więc nam materiały do analizy,

    Schemat podłączonego mostka:
    Atmega8A - PWM via timer, czy to w ogóle działa o.0

    Schematu uC nie wrzucam bo tam jest wszytko ok, sygnał PWM sprawdzony na diodach i jest wszytko ok. Problem ewidentnie leży gdzieś po stronie mostka.

    dondu napisał:


    szelus napisał:

    Podczas pracy uC z pwm napiecie zasilania uC jest stałe i wynosi 3.2 V
    A skąd się wzięło 3.2V? To zasilasz z 5V czy z 3V?


    Dobrze, że to podniosłeś, bo przegapiłem, a z tym być może wiąże się jeszcze problem dot. L293D:

    W tym momencie uC jest zasilany z programatora, jego zasilanie jest zupełnie niezależne od silników, mostka etc. Te 3.2 V to wskazanie Votomierza pomiędzy pinami Vcc i GND mikrokontrolera.

    W tym momencie, z takim stanem jak na schemacie który wrzuciłem pomiędzy pinem PWM_1 i masą mostka panuje cały czas napięcie 0V o czym już pisałem. Odłączenie tego rezystora 1KOhm powoduje stałe 2V lub 2.3 po dołączeniu PWM. Co ciekawe zauważyłem, że bez dołączonego sygnału PWM silnik obraza się nieco szybciej, tzn mam tutaj na mysli odpięty kabelek od kanału PWM z uC.

    0
  • Pomocny post
    #23 24 Kwi 2015 07:56
    94075
    Użytkownik usunął konto  
  • Pomocny post
    #24 24 Kwi 2015 10:02
    szelus
    Specjalista - Mikrokontrolery

    Odnośnie napięcia na niepodłączonym pinie.

    Cytat:
    - Ależ, Panie, obaj nie mogą mieć racji!
    - I Ty masz rację, mój drogi.

    @dondu podnosił, że te wszystkie stany łącznie są sprzeczne, a nie każdy z nich oddzielnie.
    Ze schematu zastępczego wynika, że potencjał wejścia niepodłączonego będzie zależał od budowy wewnętrznego źródła prądowego. Przy braku prądu bazy, to źródło będzie otwarte maksymalnie (bo nie da rady wymusić przepływu prądu CE przez tranzystor). Teoretycznie potencjał niepodłączonego pinu względem masy powinien wynosić Vcc1 - 0,65V, ale praktycznie zrealizowane źródło będzie miało jakiś potencjał nasycenia, więc potencjał pinu będzie niższy. Poza tym, podłączenie miernika pomiędzy wejście a masę spowoduje przepływ prądy bazy ograniczony impedancją miernika, częściowe otwarcie się tranzystora i dalszy spadek napięcia.

    mondo90 napisał:
    W tym momencie, z takim stanem jak na schemacie który wrzuciłem pomiędzy pinem PWM_1 i masą mostka panuje cały czas napięcie 0V o czym już pisałem. Odłączenie tego rezystora 1KOhm powoduje stałe 2V lub 2.3 po dołączeniu PWM.

    Czy aby na pewno masz połączone masy mikrokontrolera i mostka?

    0
  • Pomocny post
    #25 24 Kwi 2015 10:13
    dondu
    Moderator Mikrokontrolery Projektowanie

    mondo90 napisał:
    No więc jak, te 2V pomiędzy pinem PWM_1 a GND są uzasadnione czy nie ? Dondu pisze ze to nie mozliwe, szelus zaś, że to jest oczywiste. Jak więc jest, i dlaczego tak jest bo tego naprawdę nie rozumiem ?

    Z której wypowiedzi kol. szelus tak wnioskujesz?

    Jak już napisałem wydajność prądowa pinu mikrokontrolera jest wystarczająca by przy podłączonym rezystorze (którego wartość teraz znamy) nie pozwalał na objaw, który opisałeś tymi słowami:

    mondo90 napisał:
    Po dołożeniu rezystora podciągającego do masy jest tam 0 V ale nawet wtedy gdy pojawia się sygnał PWM.

    Na pinie PWM_1 z podłączonym rezystorem 1kΩ ściągającym do masy musi pojawić się jakieś napięcie, gdy do pini PWM_1 podłączysz pin wyjściowy mikrokontrolera z ustawioną jedynką.

    Jeśli więc jest to sygnał o poziomie 5V to przy rezystorze 1kΩ prąd jaki popłynie z pinu mikrokontrolera wynosić będzie 5mA. Pin mikrokontrolera może wygenerować spokojnie nawet 20mA, więc napięcie na pinie PWM_1 powinno być bliskie 5V. Podobnie w przypadku 3V.

    Nie ma więc możliwości, by było tak jak piszesz w wyżej zacytowanym zdaniu. Jedyną możliwością, jest fakt, że sygnał podawany na PWM_1 nie ma wypełnienia 100%, ale jeśli tak jest, to napięcie mierzone jest adekwatne do wypełnienia i może wynosić np. 2V. Ale to nie jest poroblem schematu, tylko ustawienia PWM, które zależy od Ciebie.


    Uporządkujmy więc dyskusję:

    1. Nie rozmawiajmy o napięciu na wejściu PWM_1 jeśli nie jest do niego podłączony sygnał z mikrokontrolera (czyli wisi w powietrzu), ponieważ przy wejściach typu High-Noise-Immunity Inputs w zależności od ich wewnętrznej budowy na pinie tym mogą być przeróżne napięcia. W dokumentacji jest pokazany jedynie układ zastępczy wejścia, a nie faktyczny.

    2. Rozmawiamy tylko i wyłącznie o sytuacji w której pin mikrokontrolera podłączony jest do pinu PWM_1 bez rezystora wymuszającego stan niski. Pin mikrokontrolera ma być ustawiony jako wyjście więc zawsze będzie podawał jakieś napięcie na pin PWM_1 i rezystor jest niepotrzebny - usuń go.

    Teraz sprawdź swój projekt pod kątem objawów i opisując rezultaty podawaj dodatkowo:
    - jakim napięciem zasilany jest uC,
    - jakie napięcia podajesz na piny Vs i Vss L293D,
    byśmy zawsze wiedzieli jaka jest aktualna sytuacja i nie mieli wątpliwości.

    Sprawdzając swój układ sprawdź 3 przypadki, gdy pin mikrokontrolera na wyjściu sterującym pinem PWM_1 ustawia:
    - jedynkę logiczną
    - zero logiczne,
    - PWM 50%,
    i zmierz napięcia na pinie PWM_1.

    0
  • #26 24 Kwi 2015 15:34
    mondo90
    Poziom 13  

    szelus napisał:
    Ze schematu zastępczego wynika, że potencjał wejścia niepodłączonego będzie zależał od budowy wewnętrznego źródła prądowego

    Jeśli dobrze czytam ten schemat zastępczy, to jest to dokładnie baza tranzystora pnp, czyli mówiąc dokładnie jeżeli robię pomiar napięcia pomiędzy pinem PWM_1, a masą mostka to tak jak gdybym mierzył napięcie pomiędzy baza tranzystora i jego kolektorem. Czy dobrze rozumiem ?
    Swoją drogę jest tutaj pewna niejasność, bo skoro wszystkie wejścia są tak rozwiązane, a tak podaje dokumentacja "EQUIVALENT OF EACH INPUT" to dlaczego odczyty napięcia na innych pinach wejściowych niż PWM są już inne ?
    szelus napisał:
    Teoretycznie potencjał niepodłączonego pinu względem masy powinien wynosić Vcc1 - 0,65V

    Ten rachunek Vcc1 - 0,65V z spadku napięcia pomiędzy bazą a emiterem o 0.6 V tak ?
    szelus napisał:
    Czy aby na pewno masz połączone masy mikrokontrolera i mostka?

    Brawo, rzeczywiście połączenie tych mas "częściowo" rozwiązało problem, ale jest to trochę nielogiczne. Napięcie sygnału PWM przy wypełniniu 100% z masą uC wynosi 3.2 V, a z masą mostka ok 2 V co jest uzasadnione. Idąc dalej dokumentacja podaje "High level input voltage" czyli stan wysoki wejścia -> min. 2.3V. Tak więc zrozumiałe jest że PWM uC nie uruchomi mostka, bo najzwyczajniej jego potencjał jest nieco za niski. Dalej jednak pozostaje pytanie dlaczego mostek uruchamia się na tych 2V, bez podłączonego pwm.
    I druga kwestia co tak naprawdę stało się gdy połączyłem jedno z wejść GDN mostka z GND uC, czy gdzieś na tej linii nie dochodzi teraz do przepływu prądu, bo jednak mają one inne potencjały? Prosiłbym tutaj o małe wyjaśnienie tej sytuacji ;)

    dondu napisał:
    Rozmawiamy tylko i wyłącznie o sytuacji w której pin mikrokontrolera podłączony jest do pinu PWM_1 bez rezystora wymuszającego stan niski. Pin mikrokontrolera ma być ustawiony jako wyjście więc zawsze będzie podawał jakieś napięcie na pin PWM_1 i rezystor jest niepotrzebny - usuń go.


    No ok, pod połączeniu mas mostak i uC bez rezystora podciągającego również da się sterować prędkością. Problem jest jednak taki, że z rezystorem podciągającym sytuacja wydaje się być bardziej logiczna - usunięcie sygnału PWM skutkuje zatrzymaniem pracy silnika.

    Podsumowując
    Sterownie jednym silnikiem na jednym kanale i prawdopodobnie dwoma na dwóch jest OK. Natomiast problem pojawia się gdy na jeden kanał mostka podłącze dwa silniki. Wtedy podczas startu nie mogę ruszyć co jakiś czas (ok sekundy) wydając dźwięk. Lekkie popchnięcie ręką pomaga im ruszyć i startują jednak gołym okiem widać iż nie mają już takiej mocy jak osobno. Jak wyliczyć max prąd jaki mogę dostarczyć na jednym kanale przy zasilaniu 5V ?. Sprawdziłem amperomierzem i pobór prądu w takim wypadku (z zablokowanymi silnikami) wynosi 400 mA. Dobra wiadomośc jedst taka, że mieści się to w limicie, jak jednak rozwiązać ten problem ?

    PS: Zauważyłem także że pojedyńczy silnik lepiej pracuje na niższej częstliwości PWM niż na wyższej. Jak to tłumaczyć ? W tej chwili mam Freq = 500Hz.

    0
  • #27 24 Kwi 2015 16:21
    dondu
    Moderator Mikrokontrolery Projektowanie

    mondo90 napisał:
    Brawo, rzeczywiście połączenie tych mas "częściowo" rozwiązało problem,
    ...
    ... pod połączeniu mas mostak i uC bez rezystora podciągającego również da się sterować prędkością.

    już w poście nr #10 napisałem i nawet wytłuściłem:

    dondu napisał:
    4. Masy muszą być połączone.

    i dopiero teraz (post #26) to zrobiłeś? Jeśli mierzyłeś napięcia względem niepołączonych mas, to takie pomiary możesz wyrzucić do kosza.

    mondo90 napisał:
    PS: Zauważyłem także że pojedyńczy silnik lepiej pracuje na niższej częstliwości PWM niż na wyższej. Jak to tłumaczyć ? W tej chwili mam Freq = 500Hz.

    Impedancją silnika.

    0
  • #28 24 Kwi 2015 19:33
    Wirnick
    Poziom 26  

    mondo90 napisał:

    PS: Zauważyłem także że pojedyńczy silnik lepiej pracuje na niższej częstliwości PWM niż na wyższej. Jak to tłumaczyć ? W tej chwili mam Freq = 500Hz.

    Masz piękny avatar - gość bezmyślnie patrzy, gdzie wzrok nie sięga - jego problem!
    No, nic. Do pracy za otrzymane punkty :D
    Mode 8, OCn Clear, ... Pokaż kod - jak regulujesz częstotliwość?
    Dla bezpieczeństwa mP musi istnieć warunek VCC = VCC1=5V, a 3V<VCC2>36V.
    Obecnie jest zwarcie OCn = 1 - zabezpieczenie wejścia PWM - VCC1=3V.

    0
  • #29 24 Kwi 2015 23:02
    mondo90
    Poziom 13  

    dondu napisał:
    już w poście nr #10 napisałem i nawet wytłuściłem:

    dondu napisał:

    4. Masy muszą być połączone.


    i dopiero teraz (post #26) to zrobiłeś?

    Czytając wtedy twojego posta miałem na uwadze raczej jedynie masy mostka i zaślepiony byłem tymi niezrozumiałymi wtedy dla mnie 2V. Przepraszam, że tak wolno mi idzie ;(

    Wirnick napisał:
    Masz piękny avatar - gość bezmyślnie patrzy, gdzie wzrok nie sięga - jego problem!

    Hehe, rozumiem że ta bezmyślność to uwaga do mnie - no ok niech będzie, ale do Pana z avatara naprawdę nie wypada ;)
    Wirnick napisał:
    Mode 8, OCn Clear, ... Pokaż kod - jak regulujesz częstotliwość?

    Kod jest cały czas taki sam, dla ułatwienie wstawiam jeszcze raz:
    Kod: c
    Zaloguj się, aby zobaczyć kod


    Co do pytania jak reguję częstotliwość - nie reguluję jest ona stała, wylicozna na podstawie wzoru z datasheet i wynosi 1 [kHz].
    Wirnick napisał:
    Dla bezpieczeństwa mP musi istnieć warunek VCC = VCC1=5V, a 3V<VCC2>36V.

    Hmm, dla bezpieczeństwa uC czy mostka ? Jeśli dla mostka to tak jest wedle oznaczeń na moim schemacie -> Vs = Vss = 5V. Poza tym skąd wziąłeś taką zalezność, nie widzę tego w dokumntacji ?
    Wirnick napisał:
    Obecnie jest zwarcie OCn = 1 - zabezpieczenie wejścia PWM - VCC1=3V.


    Zwarcie na pinie uC "OC1A" ? Skąd taki wniosek, mógłbyś rozwinąć ?

    dondu napisał:

    mondo90 napisał:

    PS: Zauważyłem także że pojedyńczy silnik lepiej pracuje na niższej częstliwości PWM niż na wyższej. Jak to tłumaczyć ? W tej chwili mam Freq = 500Hz.

    Impedancją silnika.

    No tak ale, co konkretnie, stała czasowa ? Mógłbyś coś więcej napisać ? Generalna zasada mówi że częstotliwości dla silników powinny być w kHz i generalnie im wyższa tym lepsza, a tutaj jest odwrotnie. Why ?

    Panowie miałbym prośbę aby w miarę możliwość odpowiedzieć na pytania z mojego postu wyżej. Szczególnie o to co się stało po podłączeniu mas (pyt. jest tam nieco bardziej rozbudowane) oraz Dlaczego jak mierzę miernikiem napięcie na wyjściu mostka bez podłączonego silnika przy wypełnieniu 100 % pokazuje ona 4.6 V (wow, powinienem się bać uszkodzenia silnika, jego napięcie znaminowe to 3V) a tym czasem podłączenie silnika powoduje tam spadek napięcia do 2.7V ale co ważniejsze silnik ma znacznie wolniejsze obroty i jest ewidentinie "słabszy" niż podłączony bezpośrednio do 3.3V. Tak więc jak to jest że w tym przypadku 3.3 > 4.6 ?

    PS: Jak wyliczyć ile prądu zapewni te 5V zasilania na jednym kanale ?

    Dzieki.

    0
  • #30 25 Kwi 2015 08:27
    Wirnick
    Poziom 26  

    mondo90 napisał:

    Hehe, rozumiem że ta bezmyślność to uwaga do mnie - no ok niech będzie, ale do Pana z avatara naprawdę nie wypada ;)

    PS: Jak wyliczyć ile prądu zapewni te 5V zasilania na jednym kanale ?

    Dzieki.

    Ja sam się śmieję z mojego przypadkowego zestawienia nicka i awatara.
    Bawiłem się silnikiem Adamsa i tylko wir i nic (k) co widać na awatarze.

    By Tobie się nie rozsypało, to ∑prąd silników nie może być większy od 0,6A - mierz na zahamowanych silnikach i kontroluj temperaturę układu.

    -1