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

Atmega16A/l293D - Kod PWM do sterowania silnikami DC w robocie

fadex 02 Sty 2013 23:09 2613 11
  • #1 11732395
    fadex
    Poziom 9  
    Witam, chciałbym zrobić robocika z silniczkami DC sterowane poprzez PWM. Niestety nie bardzo mam pojęcie jak to przerzucić na kod. Napisałem program, ale nie jestem pewny czy jest poprawny i czy moje myślenie w ogóle jest poprawne. Poniżej zamieszczam kod:

    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    Moje pytanie, czy ten kod będzie rozpędzał silniki od wartości 0% do maksymalnej i utrzyma je przez czas trwania delay, potem od nowa rozpędzi jazde w tył?? jakbym chciał wykonać ładodny start i hamowanie robocika to jak powinna wyglądać funkcja jazda1??
  • #2 11745841
    mieczotronix
    Poziom 16  
    do
    				{
    					OCR1A+=25;
    				} while (OCR1A != ICR1);
    

    ta pętla się przecież wykona w ciągu kilkudziesięciu nanosekund
    O ile cała reszta jest poprawna, to w tą pętlę wstaw jakiegoś delaya na kilkadziesiąt ms
    BTW. Silnik nie ruszy przy PWM ~4% tylko ~20% albo więcej, zależnie od oporów, prądów, napięć, przełożeń itd.
  • #3 11746662
    fadex
    Poziom 9  
    Ok wstawiłem delaya 10ms, przy diodach widać bardzo ładnie wynik PWM,
    co do silników proponujesz OCR1A/OCR1B startowe jako 20% ICR1??
  • #4 11746734
    mieczotronix
    Poziom 16  
    silnik, silnikowi nierówny

    wpisuj kolejne wartości i wysyłaj je sobie na seriala żeby mieć podgląd przy ilu rusza (co zresztą potem i tak się zmieni, jak się bateria trochę rozładuje itp.).
  • #5 11764908
    fadex
    Poziom 9  
    Hmm, mam problem z silnikami pod obciążeniem i musze zwiększyć napięcie.

    Moje pytanie, zasilając z zasilacza 12V silnik o napięciu znamionowym 6V lepiej jest:
    - utrzymać modulacje PWM na poziomie max 50% i zasilać 12V
    - czy dołożyć rezystor ograniczający napięcie do 6V

    Tylko w przypadku rezystora nie wiem co z natężeniem prądu, które przecież w przypadku silnika nie jest zawsze stałe.
  • #6 11764962
    BlueDraco
    Specjalista - Mikrokontrolery
    To zależy: jeśli chcesz upalić szczotki i komutator silnika - zasilanie 12 V i PWM. Jeśli masz zimno w pokoju i lubisz topić plastikowe obudowy - rezystor. Ja wybieram zwykle pierwsze rozwiązanie.
  • #7 11765624
    fadex
    Poziom 9  
    A jakby użyć stabilizatora napięcia coś około 6V?? Czy wtedy natężenie też byłoby stałe i silnik mógłby nie ruszyć przy dużym obciążeniu??

    Mniejwięcej ile mA może pobierać szczytowo silniczek DC na 6V??
  • #8 11765719
    BlueDraco
    Specjalista - Mikrokontrolery
    Pewnie od 10 mA do 1 A, w zależności od tego, jaki to silniczek i od obciążenia mechanicznego. Stabilizator liniowy wydzieli tyle samo ciepła, co rezystor, tylko napięcie będzie lepiej trzymał.
    Rozwiązanie średnio brzydkie i mające obie wyżej opisane wady, ale obie w ograniczonym zakresie, to PWM z filtrem RC - rezystor szeregowy i kondensator równoległy do silnika - mniej grzeje i mniej upala. Ja tak zasilam silniczek 12 V ze źródła 24 V - rezystor 150R 2W, kondensator 220 uF i PWM na 50%. Działa dobrze w paru setkach urządzeń.
  • #9 11765861
    fadex
    Poziom 9  
    Dzięki za pomoc :) W przypadku 12V dać rezystor 33R, kondensator 220u/470u oraz PWM 50%??

    Na jakiej podstawie można dobrać rezystor nie znając nateżenia przepływającego przez silnik?
  • #10 11765987
    BlueDraco
    Specjalista - Mikrokontrolery
    Zmierz ten prąd, to będziesz coś wiedział.
  • #11 11766437
    fadex
    Poziom 9  
    A da się go zmierzyć przy obciążeniu z jakim będzie pracował?
  • #12 11767895
    Dar.El
    Poziom 41  
    Jak chcesz utrzymać obroty silnika bez względu na obciążenie to w przerwach prądu PWM musisz mierzyć napięcie na silniku SEM. To napięcie wskazuje na prędkość obrotową silnika.
REKLAMA