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

Jak skonfigurować PWM i ADC w Bascom dla robota Line Follower?

Patryk6144 27 Kwi 2011 17:59 4026 18
REKLAMA
  • #1 9445139
    Patryk6144
    Poziom 10  
    Posty: 49
    Pomógł: 1
    Witam, mam taki problem zacząłem pisał program do Line Follower i zatrzymałem się na konfiguracji PWM i ADC. I dalej czarna dziura, przeglądałem już dużo programów z tymi o to algorytmami i nie rozumiem tego zbytnio. Czy moglibyście mi to wytłumaczyć na przykładzie schematu poniżej, bym był wdzięczny. Goni mnie czas, bo szykuje prezent dziecku na urodziny i chciał robota więc nie chcę go zawieść. Z góry dzięki za pomoc.:D

    Jak skonfigurować PWM i ADC w Bascom dla robota Line Follower?
  • REKLAMA
  • Pomocny post
    #2 9445315
    dondu
    VIP Zasłużony dla elektroda
    Posty: 13906
    Pomógł: 1292
    Ocena: 809
    Może ten filmik pomoże: PWM - Co to takiego ?

    Ponieważ używasz L298 do silniczków tu znajdziesz podstawowe informacje: Sterowanie silnikiem DC

    Na początek niepotrzebny ale wraz z rozwojem regulacja PID się przyda:
    https://www.elektroda.pl/rtvforum/topic1977989.html

    No i załącz swój program to będzie co analizować.

    Dodano po 4 [godziny] 5 [minuty]:

    Nie przekazuj mi punktów - oddaję i dodaję Ci 20 bo masz mało :)
    Wysłałem Ci Prywatną wiadomość (PW).
  • REKLAMA
  • #3 9447843
    Patryk6144
    Poziom 10  
    Posty: 49
    Pomógł: 1
    Witam, to co mi przesłałeś zbytnio nie pomogło. Ale to nic jakoś muszę sobie poradzić.:D
    Co do programu mam tylko tyle. Mógłbyś sprawdzić i powiedzieć czego w tym kawałku jeszcze brakuje. Z góry dzięki.:D

    Jak skonfigurować PWM i ADC w Bascom dla robota Line Follower?

    Pozdrawiam,
    Patryk
  • REKLAMA
  • Pomocny post
    #5 9447900
    avatar
    Poziom 36  
    Posty: 4150
    Pomógł: 159
    Ocena: 415
    Najprosciej mowiac PWM to wyjscie na pinach PB1 i PB2
    Do tych wyjsc mozemy zapisywac wartosc PWM ktora bedzie sie zawierac miedzy 0 a 254 , Dzieki temu mozna regolowac predkosc silnika DC w prosty sposob, np za pomoca tranystora NPN bez wiekszej komplikacji ukladu moze to byc np TIP122
    co do progamowania

    ten kawelk kodu pokazuje jak zaprgoramowac PWM dla tych dwoch wyjsc
    predkosc bedzie rosla do pewnego momentu

    
    $regfile = "m88def.dat"
    $crystal = 8000000
    Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down , Prescale = 1  
    Dim I as byte
    I = 0
    do
      Pwm1a = I ' jak tu napiszesz Pwm1a= 127 to bedziesz mial 50% "predkosci silnika" jak dasz Pwm1a= 254 to predkosc bedzie max itd
      Pwm1b = I
     waitms 90 
     incr I
    
    loop
    end
    
  • REKLAMA
  • #6 9447903
    piotrva
    VIP Zasłużony dla elektroda
    Posty: 6409
    Pomógł: 625
    Ocena: 735
    to nie będzie prędkość wprost proporcjonalna do wypełnienia, bo niestety przy niskich wypełnieniach silnik w ogóle nie ruszy
  • #8 9447946
    Patryk6144
    Poziom 10  
    Posty: 49
    Pomógł: 1
    Witam, czyli o to chodzi:
    :D

    Jak skonfigurować PWM i ADC w Bascom dla robota Line Follower?

    Dodano po 28 [minuty]:

    Czyli ten kawałek kodu to jest całe pwm. Tak dobrze rozumiem?
    A co do konfiguracji adc to musi być przed algorytmem czy może być na początku programu? I jakby to wyglądało? Z góry dzięki za odpowiedz.:D

    Dodano po 5 [minuty]:

    Czy po funkcji do nie trzeba dać Start Timer1?
  • Pomocny post
    #9 9448049
    piotrva
    VIP Zasłużony dla elektroda
    Posty: 6409
    Pomógł: 625
    Ocena: 735
    nie trzeba dać żadnego startu, pwm rusza od razu
    konfiguracji adc najlepiej dokonać na początku programu, tak jak to widać na screenie
    PS. zwróć uwagę na 5 linijkę kodu - czy tam aby zamiast 0 nie masz literki O ?
  • #10 9448135
    Patryk6144
    Poziom 10  
    Posty: 49
    Pomógł: 1
    Witam, dzięki za uwagę faktycznie ''O''.:D
    A ten screen z fragmentem programu jest dobry?
    I jak byście mogli zobrazować ADC tak samo jak PWM. Bym był wdzięczny.:D
  • #11 9448170
    piotrva
    VIP Zasłużony dla elektroda
    Posty: 6409
    Pomógł: 625
    Ocena: 735
    ADC - przetwornik analogowo cyfrowy
    urządzenie to w wielkim uproszczeniu mówiąc mierzy napięcie na konkretnym wejściu (podobnie jak woltomierz), z tym, że wynik jest podawany względem napięcia odniesienia - oznaczmy je jako Vref lub Uref (do wyboru mamy napięcie zasilania procesora - czyli najczęściej 5V /lub/ napięcie podane na nóżkę Vref pochodzące np. ze specjalnych układów referencyjnych jak lm385 /lub/ tu w zależności od modelu napięcie z wewnętrznego układu odniesienia, zwykle 1,1V lub 2,56V - trzeba sprawdzić w karcie katalogowej)
    pomiar polega na tym, że jeśli podamy na wejściu układu niepięcie równe napięciu odniesienia (np. standardowo 5V) to to otrzymamy maksymalny wynik, czyli 1023. Jeśli zaś pin ten zewrzemy do masy to otrzymujemy najmniejszy wynik, czyli 0. Wszystkie pośrednie napięcia są zgodne z tą proporcjonalnością, czyli np. dla napięcia 2,5V otrzymamy wynik ok. 511-512.

    wszystko można obliczyć z takiej proporcji:
    1023 - Vref
    x - U szukane
    czyli
    u szukane = (x/1023)*Vref
    gdzie x to otrzymany wynik pomiaru z ADC
  • #12 9448204
    Patryk6144
    Poziom 10  
    Posty: 49
    Pomógł: 1
    Witam, dzięki. Tylko chodzi mi o zobrazowanie to w postaci kodu dla czujników. Ale to też jest dobre.:D
  • Pomocny post
    #13 9448348
    piotrva
    VIP Zasłużony dla elektroda
    Posty: 6409
    Pomógł: 625
    Ocena: 735
    wystarczy nieco przejrzeć helpa bascoma:
    Kod: text
    Zaloguj się, aby zobaczyć kod
  • #14 9448771
    Patryk6144
    Poziom 10  
    Posty: 49
    Pomógł: 1
    Dzięki. Jak skończę program to wrzucę do sprawdzenia.:D
  • #15 9451798
    Patryk6144
    Poziom 10  
    Posty: 49
    Pomógł: 1
    Witam, zamieszczam program do sprawdzenia. Mam nadzieje, że dobry. Czy czegoś mu brakuje i co byście jeszcze dodali? I tak na przyszłość jak dodać kod w poście.
    :D


    Kod: text
    Zaloguj się, aby zobaczyć kod
    :D
  • #16 9451808
    piotrva
    VIP Zasłużony dla elektroda
    Posty: 6409
    Pomógł: 625
    Ocena: 735
    umieść kod w znacznikach [code ] [/code ]
  • #17 9452057
    Patryk6144
    Poziom 10  
    Posty: 49
    Pomógł: 1
    $regfile = "m88def.dat"
    $crystal = 16000000
    
    Config Portb = Output
    Config Portd = &B01111111
    Config Portc = Input
    
    Portd.7 = 1
    
    Przycisk Alias Pind.7
         Led Alias Portd.6
    Enable_a Alias Portb.1
    Enable_b Alias Portb.2
    In1 Alias Portd.3
    In2 Alias Portd.2
    In3 Alias Portd.1
    In4 Alias Portd.0
    
    Config Adc = Single , Prescaler = Auto
    
    Config Timer1 = Pwm , Pwm = 8 , Prescale = 1 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down
    
    Dim I As Byte
    
    I = 0
    
    Do
    
      Pwm1a = 127
      Pwm1b = 127
    
      Waitms 90
      Incr I
    
    Loop
    
    Start Adc
    
    Dim W As Word , Channel As Byte
    
    Channe0 = 0
    
    Do
    
    W = Getadc(channe0)
    
    Print 0 ; Channel ; " value " ; W
    
    Incr Channe0
    
    If Channel > 7 Then Channel = 0
    
    Loop
    
    Channe1 = 0
    
    Do
    
    W = Getadc(channe1)
    
    Print 1 ; Channel ; " value " ; W
    
    Incr Channel
    
    If Channel > 7 Then Channel = 0
    
    Loop
    
    Channe2 = 0
    
    W = Getadc(channe2)
    
    Print 2 ; Channel ; ; W
    
    If Channel > 7 Then Channel = 0
    
    Loop
    
    Channe3 = 0
    
    W = Getadc(channe3)
    
    Print 3 ; Chanel ; " value " ; W
    
    If Channel > 7 Then Channel = 0
    
    Loop
    
    Channe4 = 0
    
    W = Getadc(channe4)
    
    Print 4 ; Chanel ; " value " ; W
    
    If Channel > 7 Then Channel = 0
    
    Loop
    
    Channe5 = 0
    
    W = Getadc(channe3)
    
    Print 5 ; Chanel ; " value " ; W
    
    If Channel > 7 Then Channel = 0
    
    Loop
    
    Channe6 = 0
    
    W = Getadc(channe6)
    
    Print 6 ; Chanel ; " value " ; W
    
    If Channel > 7 Then Channel = 0
    
    Loop
    
    End


    Dodano po 6 [minuty]:

    I jak z programem, dobry. Czegoś brakuje?
    :D
  • #18 9452094
    piotrva
    VIP Zasłużony dla elektroda
    Posty: 6409
    Pomógł: 625
    Ocena: 735
    Totalna klapa? Tak to dobre określenie...
    To nawet chyba się nie skompiluje...
    Polecam zacząć od absolutnych podstaw bascom'a....
  • #19 9452895
    Patryk6144
    Poziom 10  
    Posty: 49
    Pomógł: 1
    Witam, mógłbyś powiedzieć co jest żle i jak to zniwelować. Bym był wdzięczny.:D

Podsumowanie tematu

✨ Użytkownik poszukiwał pomocy w konfiguracji PWM i ADC w Bascom dla robota Line Follower, z uwagi na zbliżające się urodziny dziecka. Otrzymał wskazówki dotyczące podstaw PWM, w tym kod do regulacji prędkości silnika DC za pomocą L298 oraz przykłady konfiguracji ADC. Użytkownicy podkreślili, że PWM działa automatycznie po konfiguracji, a ADC powinno być ustawione na początku programu. Wskazano również na konieczność poprawienia błędów w kodzie oraz na znaczenie proporcjonalności pomiarów ADC. Użytkownik zamieścił fragmenty swojego kodu do analizy, jednak spotkał się z krytyką dotyczącą jego poprawności.
Podsumowanie AI na podstawie dyskusji. Może zawierać błędy.
REKLAMA