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.

Kilka problemów przy budowie platformy jeżdżącej

gorsomir 08 Paź 2009 20:32 1483 6
  • #1 08 Paź 2009 20:32
    gorsomir
    Poziom 13  

    Witam
    Buduję Robota lub jak kto woli platformę jeżdżącą
    Niestety napotkałem kilka problemów z którymi nie umiem sobie poradzić ale mam nadzieje że z waszą pomocą uda mi się

    Chodzi konkretnie o
    1. Chcę sterować silnikiem DC(takim jak w motorkach dziecięcych) przez mostek L293D
    Wszystko niby pięknie ładnie ale...
    gdy wysteruje mostek tak aby koło kręciło się do p przodu to Silnik rusza i Koło też i wszystko jest ok przez jakieś 10s po tym czasie silnik tylko brzęczy a mostek się straszliwie grzeje. Silnik jest na 6V i gdy jako takiego podłączyłem bez mostka bezpośrednio do akumulatora to wszystko jest ok
    Na początku myślałem ze to kwestia zbyt dużego spadku napięcia na mostku więc podłączyłem zasilanie silników do 12V i efekt jest ten sam. Drugie podejrzenie padło na wydajność prądową mostka ale niestety nie mam teraz jak zmierzyć dokładnie ile pobiera silnik
    Co o tym myślicie ? ma to wogule prawo działać??
    Oczywiście gdy podepnę mniejszy silnik to wszystko jest ok ale musi być tamten bo cała mechanika jest z tego motorka i pod ten silnik
    może poprostu wyrzucić mostek i zrobić to na przekaźnikach ??
    Co prawda chciałem sterować prędkością przez PWM ale ważne zeby to wogle działało i regulacja prędkości nie jest tak istotna.

    2. chciałem wyposażyć go w amperomierz co bym wiedział ile pobieram prądu i zrobiłem to na rezystorze 1ohm niby wszystko fajnie ale atmega 32 na której ma być ten miernik głupieje tzn
    gdy między masą układu a napięciem na pinie ADC0 panuje napięcie około 0,7V
    według atmegi jest tam 267 w skali 1024
    co jest dziwne dla napięcia odniesienia jakim jest Avcc
    natomiast gdy zwiększę pobór tak ze mam na ADC0 napięcie 1,60V atmega twierdzi ze jest tam 0 w skali 1024 dziwne ?? Ja tego kompletnie nie rozumiem co ciekawe wszystkie kanały dają dokładnie ten sam rezultat

    3. Tutaj tego już kompletnie nie rozumiem w kodzie który jest w załączniku (to też ten od ADC)
    Skrl i skrp co ciekawe zawsze po rozpoczęciu pętli głównej od nowa program twierdzi że powinno tam być wartość 0 mimo że deklaruje ze ma tam by na samym początku 1
    co ciekawe to tak jak by wszystkie zmienne sie resetowały ale gdy napisałem licznik
    który na końcu pętli dodawał do siebie 1 to ta zmienna się nie zerowała i działał tak jak powinna

    4 czwarta sprawa to trochę z innej beczki
    Buduję jeszcze inny projekt w którym mam problem z liczbą losową
    Niby jest w bascomie polecenie RND() ale wszyscy wiedzą co to jest i nie ma nic wspólnego z losowaniem no chyba że tylko u mnie wyniki powtarzają się zawsze
    Chodzi o to że musze po włączeniu procka wylosować liczbę od 1 do 40 i ważne jest to aby nie komplikować układu najlepiej gdyby wszystko było programowe
    słyszałem o tym ze można kombinować z ADC ale wolał bym tego uniknąć
    Ma może ktoś jakiś pomysł ??


    Oto kod programu w bascomie na mege 32 którego dotyczą ptk 2 i 3





    Code:

    $regfile = "m32def.dat"
    $crystal = 8000000
    Config Com1 = Dummy = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 0       'konfiguracja portu COM
    $baud = 1200
    Config Adc = Single , Prescaler = Auto , Reference = Avcc
    Config 1wire = Portb.4                                      'konfiguracja 1wire
    Config Portb.3 = Output
    Config Portb.2 = Output
    Config Portb.1 = Output
    Config Portb.0 = Output
    Config Porta.0 = Input
    Dim Xer As Integer
    Dim Tmp As String * 8
    Dim T1 As Single
    Dim T2 As Single
    Dim B1 As Byte , B2 As Byte , R As Byte
    Dim Znak As String * 1                                      'znak temperatury z DSa +/-                                       'konfiguracja I2c
    Dim B As Byte
    Dim S As String * 15
    Dim Wart_ac As Word
    Dim Amp As Word
    Dim Skrl As Bit
    Dim Skrp As Bit
    Dim X As Word
    Lpp Alias Portb.0                                           'Pampa Przednia Prawa
    Lpl Alias Portb.1                                           'Lampa Przednia Lewa
    Skretl Alias Portb.3
    Skretp Alias Portb.2
    Declare Sub Ampery
    Declare Sub 1wr
    Declare Sub Temp
    Enable Serial
    Echo On
    Print "@Witaj#"
    Lpp = 1
    Lpl = 1
    Skretl = 1
    Skretp = 1
    Start Adc
    Skrl = 1
    Skrp = 1
    Do
    Disable Interrupts                                          '
    Temp
    Print "@TMP" ; Znak ; Tmp ; "#"
    Print "@PRZ" ; Lpp ; Lpl ; "#"
    Print "@SKR" ; Skrl ; " " ; Skrp ; "#"
    Print "@przeb" ; X ; "#"
    Ampery
    Print "@AMP" ; Amp ; "#"
    Enable Interrupts
    B = Inkey()
    Print "RX" ; B
    If B = "a" Then
     Skrl = 0
    End If
    If B = "b" Then
     Skrp = 0                                                   '0 ""
    End If
    If B = "A" Then
     Skrl = 1
    End If
    If B = "B" Then
     Skrp = 1
    End If
    If B = "l" Then                                             'zaswiec lewą lampe
     Lpl = 0
    End If
    If B = "p" Then                                             'zaswiec prawą lampe
     Lpp = 0
    End If
    If B = "L" Then                                             'zgas lewą lampe
     Lpl = 1
    End If
    If B = "P" Then                                             'zgas prawą lampe
     Lpp = 1
    End If
    Print "@------------------#"
    If Skrl = 0 Then
    Skretl = 0
    Waitms 250
    Skretl = 1
    End If
    If Skrp = 0 Then
    Skretp = 0
    Waitms 250
    Skretp = 1
    End If
    X = X + 1
    Loop
    End
    Sub Ampery
    Wart_ac = Getadc(0)
    Waitms 50
    Wart_ac = Getadc(0)
    Amp = Wart_ac
    Waitms 150
    End Sub
    Sub 1wr
    1wreset
    End Sub
    Sub Temp
    1wr                                                         'podprogram 1wr
    1wwrite &HCC                                                'komenda skip ROM
    1wwrite &H44                                                'komenda convert T
    Waitms 250                                                  '750
    1wr                                                         'podprogram 1wr
    1wwrite &HCC                                                'komenda skip ROM
    1wwrite &HBE                                                'komenda read
    B1 = 1wread()
    Waitms 250                                                  '250                                                'odczyt z termometru
    B2 = 1wread()
    Waitms 250                                                  '250
    1wr                                                         'podprogram 1wr
    If B2 >= 248 Then                                           'w przypadku temperatur ujemnych
    B1 = R - B1                                                 'Od 255 Odejmujemy B1
    B2 = R - B2                                                 'od 255 odejmujemy B2
    Znak = "-"
    Else
    Znak = "+"
    End If
    T1 = B1 / 16                                                'Przesuniecie w pawo o 4 bajty
    T2 = B2 * 16                                                'przesuniecie w lewo o 4 bajty
    T1 = T1 + T2
    Tmp = Fusing(t1 , "###.&&")
    End Sub


    Proszę o pomoc i pozdrawiam

    0 6
  • #2 08 Paź 2009 21:48
    szyszekpg
    Poziom 12  

    Nie wiem dokładnie jakie masz silniki ale jeśli są od pojazdu zdolnego przewieść dziecko (czyli około 15kg) to na pewno przy 6V maja większy pobór prądu niż 1,2A podanego w specyfikacji L293D. Moim skromnym zdaniem nie obędzie się od budowy mostka H na mosfetach.

    0
  • #3 08 Paź 2009 22:29
    bogdan_p
    Poziom 39  

    zgadzam się z przedmówcą za małe mostki proponuje zmierzyć prąd zwarcia silników może wystarczą L298 pojedynczo lub w układzie równoległym , pokaż schemat pomiaru prądu a przy okazji zobacz ten temat , schemat jest dla ATMegi 8 ale zasada identyczna

    0
  • #4 08 Paź 2009 23:18
    gorsomir
    Poziom 13  

    ten temat ?? możesz zapodać linka bo chyba go nie dostałem :D
    Ale dzieki za odzew

    0
  • #6 09 Paź 2009 19:15
    misiek1994
    Poziom 17  

    Cytat:
    2. chciałem wyposażyć go w amperomierz co bym wiedział ile pobieram prądu i zrobiłem to na rezystorze 1ohm niby wszystko fajnie ale atmega 32 na której ma być ten miernik głupieje tzn
    gdy między masą układu a napięciem na pinie ADC0 panuje napięcie około 0,7V
    według atmegi jest tam 267 w skali 1024
    co jest dziwne dla napięcia odniesienia jakim jest Avcc
    natomiast gdy zwiększę pobór tak ze mam na ADC0 napięcie 1,60V atmega twierdzi ze jest tam 0 w skali 1024 dziwne ?? Ja tego kompletnie nie rozumiem co ciekawe wszystkie kanały dają dokładnie ten sam rezultat


    Wgraj coś w C i sprawdź, czy działa, bascomowi nie ufam od pewnego czasu. Poza tym podłącz lcd i monitoruj cały czas co robi procek.

    Cytat:
    4 czwarta sprawa to trochę z innej beczki
    Buduję jeszcze inny projekt w którym mam problem z liczbą losową
    Niby jest w bascomie polecenie RND() ale wszyscy wiedzą co to jest i nie ma nic wspólnego z losowaniem no chyba że tylko u mnie wyniki powtarzają się zawsze
    Chodzi o to że musze po włączeniu procka wylosować liczbę od 1 do 40 i ważne jest to aby nie komplikować układu najlepiej gdyby wszystko było programowe
    słyszałem o tym ze można kombinować z ADC ale wolał bym tego uniknąć
    Ma może ktoś jakiś pomysł ??


    Jak chcesz w 100% losową to podłączasz np. napiecie sieciowe odpowiednio podzielone i liczysz częstotliwość i sobie mnożysz prockiem (przynajmniej ja bym tak zrobił). Wiadomo, że nie będzie to dokładnie 50Hz, ale +- 10%. Poza tym poszukaj o stanach nieustalonych.
    Cytat:

    1. Chcę sterować silnikiem DC(takim jak w motorkach dziecięcych) przez mostek L293D
    Wszystko niby pięknie ładnie ale...
    gdy wysteruje mostek tak aby koło kręciło się do p przodu to Silnik rusza i Koło też i wszystko jest ok przez jakieś 10s po tym czasie silnik tylko brzęczy a mostek się straszliwie grzeje. Silnik jest na 6V i gdy jako takiego podłączyłem bez mostka bezpośrednio do akumulatora to wszystko jest ok
    Na początku myślałem ze to kwestia zbyt dużego spadku napięcia na mostku więc podłączyłem zasilanie silników do 12V i efekt jest ten sam. Drugie podejrzenie padło na wydajność prądową mostka ale niestety nie mam teraz jak zmierzyć dokładnie ile pobiera silnik
    Co o tym myślicie ? ma to wogule prawo działać??
    Oczywiście gdy podepnę mniejszy silnik to wszystko jest ok ale musi być tamten bo cała mechanika jest z tego motorka i pod ten silnik
    może poprostu wyrzucić mostek i zrobić to na przekaźnikach ??
    Co prawda chciałem sterować prędkością przez PWM ale ważne zeby to wogle działało i regulacja prędkości nie jest tak istotna.


    Możesz bez problemu zrobić mostek H na mosfetach. Nie jest to jakoś strasznie skomplikowane, a i regulacje prędkości można bardzo szybko zrobić. Przekaźników nie polecam, bo często zawodzą i są WIELKIE.
    Pzdr misiek

    0
  • #7 12 Paź 2009 23:52
    gorsomir
    Poziom 13  

    Hehe schemat to znam bo ja zakładałem tamten temat :D
    Obecnie stwierdziłem że zbuduje mostek na l298 powsinno starczyć a jak nie to mosfety aczkolwiek wole tego uniknąć
    jeżeli chodzi o losową liczbe to sprawa już nie aktualna...]]Napisze coś więcej jak uruchonmie mostek :D
    Pozdrawiam

    0