Skocz do zawartości

Tolo

Użytkownicy
  • Zawartość

    799
  • Rejestracja

  • Ostatnio

  • Wygrane dni

    17

Posty napisane przez Tolo


  1. oscylatorem krzemowych
    Nie chcę nic mówi ale na schemacie nie widzę żadnego oscylatora tym bardziej krzemowego. Jest to oczywiście rezonator kwarcowy, najczęściej stosowany jako źródło taktowania.

    Porprawiłem i przepraszam za błąd. Aczkolwiek jeśli chodzi o wypowiedź kolegi to nie jestem pewien poprawności przecież rezonator w sam w sobie niczego nie generuje jest wykorzystywany do stabilizowania generatora Pierce'a który w z tego co pamiętam jest źródłem taktowania w uC Atmela.


  2. Proponuje coś klasycznego to znaczy ATmega 8 przewlekana w jak najprostszej konfiguracji. Oczywiście pewnie część z was będzie narzekać że nie podłączyłem dławika do zasilania części analogowej albo ,że jest tam za mało kondensatorów. Jednak ten schemat był wielokrotnie sprawdzony w "boju" i nie miałem z nim żadnych problemów. Inną sprawą jest fakt, że płytka przygotowana według tego schematu mieści się na bardzo małej przestrzeni co w robotyce jest niewątpliwą zaletą.

    Opis układu:

    Oprócz samej ATmegi 8 na schemacie widnieje kilka elementów. Kondensatory C1 , C2 , C3 mają za zadanie odfiltrowanie napięcia zasilającego układ. C1 powinnien mieć wartość od 4,7 do 47uF (choć można zatosować znacznie większe pojemności to jednak gabaryty takie kondensatora bedą znaczne a dla obwodu który pobiera maksymalnie kilkanaście miliamperów jest to zupełnie zbędne.) Kondensator ten powinien być przystosowany do napięcia nieco wyższego niż napięcie zasilania (w praktyce i tak nie uda się zakupić kondensatora elektrolitycznego na mniej niż 16V) ten parametr również nie jest krytyczny i równie dobrze możemy zastosować kondensatory nawet na 35V czy nawet 50V ale wiązać się to będzie ze wzrostem rozmiarów kondesatora. Kondensatory C2 oraz C3 to zwykłe kondensatory ceramiczne o pojemności 100nF. Kolejnym elementem jest rezystor R1 który podciąga nóżkę resetu do + zasilania zapobiegając tym samym samoczynnemu resetowaniu się mikrokontrolera. Wartość tego rezystora również możemy zmienić możemy zastosować rezystory o większym oporze nawet 10k należy jednak pamiętać że większa wartość tego rezystora może powodować samoczynny reset pod wpływem silnych zakłóceń.

    Kondensatory C4 i C5 wraz z rezonatorem kwarcowym Q1 stabilizują zegar układu. Wartość tego rezonatora również możemy zmienić i nie ma to wpływu na wartości kondensatorów C4, C5. Kondensator C6 stabilizuje napięcie odniesienia układu co przydaje się przy pomiarach ADC.

    ATmega8.sch


  3. W sumie pewnie nie pownienem zakładać tego tematu ponieważ problem wydaje się być oklepany i teoretycznie powinienem znaleźć gdzieś odpowiedzi na moje pytania w rzeczywistości nie udało mi się tego dokonać tak więc piszę.

    W czym rzecz ? Chodzi o to że napisałem regulator PD w BASCOM-AVR rzecz jednak w tym ,że nie jest on chyba napisany prawidłowo. Problem polega na tym że bez względu jakie wartości współczynników dobieram robot nie potrafi pokonać kątów prostych. W zasadzie to wogóle mam wrażenie że mój człon D nieczego nie daj 😋

    Kod wygląda tak:

    $regfile = "m8def.dat"
    '**********Konfiguacja ADC**********
    Config Adc = Single , Prescaler = Auto , Reference = Avcc
    '**********Konfiguacja PWM**********
    Config Timer1 = Pwm , Pwm = 8 , Prescale = 1 , Compare A Pwm = Clear Up , Compare B Pwm = Clear Up
    Pwm1a = 0
    Pwm1b = 0
    '**********Konfiguacja Przełącznika**************
    Config Pinc.5 = Input
    Set Pinc.5
    Sw Alias Pinc.5
    '**********Konfiguacja diód sygnalowych**********
    Config Portd.2 = Output
    Config Portd.3 = Output
    Led1 Alias Portd.2
    Led2 Alias Portd.3
    Led1 = 0
    Led2 = 0
    '**********Konfiguacja silników**********
    Config Portd.5 = Output
    Config Portd.6 = Output
    Config Portd.7 = Output
    Config Portb.0 = Output
    'Silnik prawy
    M1a Alias Portd.7
    M1b Alias Portb.0
    'Silnik lewy
    M2a Alias Portd.5
    M2b Alias Portd.6
    '**********Konfiguacja kierunku silnikow**********
    'Silnik prawy
    M1a = 1
    M1b = 0
    'Silnik lewy
    M2a = 1
    M2b = 0
    '**********Konfiguacja stalych i zmiennych**********
    Const Granica = 900
    Dim Czujnik1 As Single
    Dim Czujnik2 As Single
    Dim Czujnik3 As Single
    Dim Czujnik4 As Single
    Dim Czujnik5 As Single
    Dim W As Word
    
    Dim X As Integer                                            'Zmienna opisujaca ilosc czujnikow na linii
    Dim A As Integer                                            'Wga czujnika
    Dim Er As Integer                                           'Srednia waga czujnikow
    Dim K As Integer                                            'Współczynnik członu P
    Dim Tp As Integer                                           'Docelowa prędkość
    Dim Zmiana As Integer
    Dim Kd As Integer                                           'Współczynnik członu D
    Dim Zmiana2 As Integer                                      'Zmienne pomocnicze
    Dim Zmiana3 As Integer
    
    Tp = 90
    Kp = 4
    Kd = 4
    
    
    
    '**********Oczekiwanie na naciśnięcie przełącznika*******
    While Sw = 1
    Led1 = 1
    Wend
    Waitms 500
    Toggle Led1
    Waitms 500
    Toggle Led1
    Waitms 500
    Toggle Led1
    Waitms 500
    Toggle Led1
    Waitms 500
    Toggle Led1
    Waitms 500
    Led1 = 0
    
    
    Pwm1a = 0
    Pwm1b = 0
    
    Do
    
    
    Led2 = 1
    '**********Zerowanie wartosci zmiennych po kazdymsprawdzeniu czujnikow**********
    X = 0
    A = 0
    '**********Sprawdzanie czujnikow**********
    Gosub Wczytaj_stany_przetwornikow
    
    '**********Liczymy blad oraz wartosci PWM**********
    Er = A / X
    D = Er - Erp
    Erp = Er
    Zmiana = Er * Kp
    Zmiana2 = Erp * Kd
    Zmiana3 = Zmiana + Zmiana2
    
    
    Pwm1a = Tp - Zmiana3
    Pwm1b = Tp + Zmiana3
    
    
    
      Loop
    End
    
    
    Wczytaj_stany_przetwornikow:
    Start Adc
    W = Getadc(4)
    Stop Adc
    Czujnik5 = W
    If Czujnik5 > Granica Then
    A = A - 8
    X = X + 1
    End If
    Start Adc
    W = Getadc(3)
    Stop Adc
    Czujnik4 = W
    If Czujnik4 > Granica Then
    A = A - 4
    X = X + 1
    End If
    Start Adc
    W = Getadc(2)
    Stop Adc
    Czujnik3 = W
    If Czujnik3 > Granica Then
    A = A - 0
    X = X + 1
    End If
    Start Adc
    W = Getadc(1)
    Stop Adc
    Czujnik2 = W
    If Czujnik2 > Granica Then
    A = A + 4
    X = X + 1
    End If
    Start Adc
    W = Getadc(0)
    Stop Adc
    Czujnik1 = W
    If Czujnik1 > Granica Then
    A = A + 8
    X = X + 1
    End If
    Return

    Bardzo proszę o pomoc i wyrozumiałość 😅


  4. Dobra to już sobie zamówie i tak miałem jeszcze jakieś popierdółki kupić to już nie będę głowy zawracał nawiasem mówiąc to te przelotki to faktycznie był zły pomysł 🙁 Ale przekonałem się to SMD jednak fajnie się to montuje i nie jest aż tak trudno jak myślałem

    [ Dodano: 28-01-2015, 17:47 ]

    To szukam tego licznika i projektuje płytkę główną ale w między czasie zrobiłem jeszcze jedną

    Chodzi o to że zbuduje robota przy użyciu HL149 coś takiego jak mój poprzedni robot https://www.forbot.pl/forum/topics7/line-follower-snab-i-vt9719.htm przetestuje sobie ten sposób działąnia tak żebym miał już zalążek porgramu kiedy dojdzie ten licznik 😉 Więc jutro postaram się to odpalić zobaczymy co wyjdzie...


  5. mogę Ci wziąć ten licznik. Możemy zrobić "odbiór osobisty"

    Problem leży w tym że tam też jest tylko w DIP więc chyba wersja w SMD jest niedostępna najgorsze jest to że ten układ ma nietypowyrozkład nóżek zasilający (gdzieś w środku układu są a nie po przekątnej) więc nawet nie idzie zamiennika znaleźć 🙁

    Ale to może dobrze spróbuje zrobić te ścieżki tak jak radzisz


  6. Wydziergałem coś takiego. Muszę tylko plecionkę kupić i "gluty" pozbierać. A no i oczywiście w całej warszawie nie mają 7493 SMD 😋 Więc trochę lipa trzeba będzie zamawiać. Narazie waga czujnika to 5g w porównaniu do 15g starego to całkiem niezła redukcja 🙂

    To teraz trzeba płytę główną zrobić. Tu chyba nie będzie żadnych niespodzianek. Co do wypowiedzi Mirka to wydaje mi się że lepiej jednak będzie jak multiplkser będzie załączał czujniki po kolei 😉 Wydaje mi się to prostsze do ogarnięcia programowo.

    PS

    Ale kaszana nawet w TME tego układu nie ma i co teraz ?


  7. Dzięki bardzo za wytłumaczenie ! Po trzy to kiespko się dzieli może dać 4x2 ? Wtedy opornik będzie miał 120Ω czyli akurat wartość z szeregu.

    Najlepiej postaraj się kupić multiplekser niskonapięciowy 74HC4051

    Jeśli ma taki sam rozkład nóżek to poszukam na razie mam na stanie 4051 więc do testów pójdzie ten.


  8. Postanowiłem wykorzystać pomysł z multiplekser i licznikiem na razie w małej skali (8 czujników) wygląda to tak:

    A mam jeszcze takie pytanie wyczytałem że CNY70 ma spadek na diodzie 1,25 jak podłączyłem 4 szeregowo 4x1,25=5 to jaki rezystor zastosować ? Czy wogóle jest on tutaj konieczny ?


  9. Trochę dużo. Zmniejsz koła

    Ta jakbym miał tokarkę to pewnie byłoby to takie proste 😋

    Dobra to zabieram się do odchudzenia konstrukcji.

    1. Zamienie dystanse na polamidowe (aktualnie same dystanse waża 20g) a plastiki ważą mniej niż 2g

    2. Podłącze diody czujników do +7,4V dzięki temu ograniczę prąd pobierany z stabilizatora bedę mógł go dać w mniejszej obudowie i wyrzuce radiator.

    3. Zamienie elementy na SMD ale na zastosuje chyba duże obudowy 1206 i procek zostawie przewlekany bo jak zablokuje to kaplica 😋

    4. Dam 7 czujników łatwiej się to opisuje bo wiadomo gdzie jest środek po za tym podłącze je w sposób mieszany. (jaki proponujecie ?)

    Mam nadzieje że 70g zgubie albo i więcej


  10. Mam problem wydaje mi się konstrukcja jest za ciężka na niskich prędkościach 15% PWM ledwie się toczy. Z drugiej strony na wyższych robot jest nie do opanowania nie wiem czy nie stane przed konicznością zrobienia nowej mniejszej płytki i zmiany akumulatora na 150mAh Aktualnie robot waży 170g to dużo ? Jak na silniki 10:1 HP pololu i standardowe koła ?


  11. Chyba nie będę miał wyjścia chociaż strasznie nie lubię projektować obwodów dwuwarstwowych i jeszcze SMD no ale perpektywa braku koniezności wiercenia tych wszystkich dziurek jest bardzo zachęcająca. Ale zabiorę się za to jak dokończe tego robota.

    Akumulator będzie położony na płycie i przyciśnięty gumką recepturką już sprawdzałem trzyma się nieźle. Mam zamiar wymienić jeszcze te listwy trzymające moduł czujników na płaskowniki węglowe.

    Dzisiaj jeszcze zrobie moduł do wyświetlacza na I2C bo ciężko się bez tego pisze.

    [ Dodano: 22-01-2015, 16:39 ]

    Dobra zrobiłem prosty interfejs LCD na I2C nic odkrywczego ale może komuś się przyda wygląda to tak.

    Płyteczka nie duża zawiera w sobie w zasadzie tylko układ PCF8574 i złącze wyświetlacza.

    Program do obsługi napisany w bascom:

     $regfile = "m8def.dat"
    $lib "Lcd_i2c.lib"
    
    Const Pcf8574_lcd = 112                                    'Ustawienia expandera I2C czyli co do czeog podłączone
    Const Pcf_d4 = 0
    Const Pcf_d5 = 1
    Const Pcf_d6 = 2
    Const Pcf_d7 = 3
    Const Pcf_rs = 6
    Const Pcf_rw = 5
    Const Pcf_e2 = 7
    Const Pcf_e1 = 4
    
    'Konfiguracja portów
    
    
    
    Config I2cdelay = 5                                        'ustawienie prędkości magistrali
    Config Scl = Portc.5                                       'ustawienie pinów magistrali I2C
    Config Sda = Portc.4
    Config Lcd = 16 * 2                                        'ustawienie typu wyowietlacza
    Dim _lcd_e As Byte
    _lcd_e = 192                                               'Adress LCD
    
    
    Do
              Cls                                              'czyocimy ekaran z krzaków
    
                                                 'współrzędne wyświetlanego tekstu 1 kolumna 1 wiersz
           Lcd "www.forbot.pl"                                 'jakis tekst
             Waitms 500
     Loop

    Jedyne co to musimy sobie wrzucić odpowiednią bibliotekę (w załączniku) komentarze chyba rozwiewają wszystkie wątpiwości.

    I2C.pdf

    I2C lcd.sch

    I2C lcd.brd


  12. Dobra czyli tak będzie jeden 4067 do odczytu czujników. Dwa 74ls138 połączone kaskadowo do sterowania diodami plus 74ls197 do liczenia z podłączonym zerowaniem do uC. I jakiś komparator do zamiany sygnału na cyfre. Jedyny problem to taki że wszystkie te układy trochę ważą a jak wiadomo moduł z czujnikami powinnien być jak najlżejszy 🙁


  13. O faktycznie ciekawe czemu jest taka duża różnica między. W takim razie dam 2x74LS138plus 2x74LS151 do wyboru czujnika jako licznika chyba użyje 74LS197 jako ,że ma standardowy rozstaw wyprowadzeń zasilania więc łatwiej będzie płytkę zrobić tylko jakoś nie widzę trybu zaliczania 3 bitowego wiem że 7493 na pewno taki miał a tu są tylko dwie tablice prawdy i w obu przypadkach są wykorzystywane wszystkie wyjścia ? W sumie takie rozkład jest też chyba bardziej korzystny dla płytki po elementy można rozstawić bardziej horyzontalnie co w przypadku długich płytek z czujnikami powinno być lepszym rozwiązaniem.


  14. Zasadniczo to wogóle o nie myślałem o tym zerowaniu (dzięki za tą uwagę) w takim razie faktycznie można by było dać tak jak mówisz jedną nóżkę zerowania podłączyć do proca (z tego co mi się wydaje to wszystko jedno którą) a drugą dać do + wtedy jak dam na tą złączoną z procem - to zacznie liczyć. Innym pomysł to taki żeby może zrobić układ zerowania sprzętowo. Jakiś układ po podłączeniu zasilania dał by krótki impuls zerujący (np. NE555 astabilny) A kolejna rzecz jest taka że 16 czujników to stasznie dużo ciągnie prądu (16x20mA=320mA w przypadku KTIR i 800mA w przypadku CNY70) dla porównania nieobciążony pololek 10:1 ciągnie około 100-150mA. Myślałem więc nad tym aby dać drugi multiplekset i załączać tylko ten czunjnik który aktualnie sprawdzamy (nóżki aderesowe obu układów były by podłączone ze sobą)


  15. Nie wiem nie mogę dodać zdjęcia więc daje plik w załączniku. No więc tamtą płytkę zasadniczo zrobiłem ale wymyśliłem jeszcze jedno rozwiązanie. Nie wiem czy pomysł jest dobry ale wydaje mi się że tak. Otóż chciałem wykorzystać multiplexer 16 kanałowy oraz licznik dwójkowy. Dzięki temu obsługuje 16 czujników przy pomocy jedynie 2 linii czyli łącze się za pomocą płytki złączem 4pin (masa i +) Jedyne co to muszą zapamiętywać liczbę impulsów które wysłałem do licznika ale to akurat jest proste.

    Co myślicie ?

    Miałem jeszcze taki pomysł aby w ramach oszczędzania energii zrobić tak aby w czasie sprawdzania linijki święcił się tylko czujnik aktualnie sprawdzany. Myślałem żeby wykorzystać dekoder BDC lub coś podobnego bo drugi multiplexer zajmie za dużo miejsca.

    o6aglw.png


  16. Nie zrozumiałem tego motywu z odwracaniem sygnału. Wzmacniacze są użyte poprawnie, mają histerezę i są nieodwracające. Możesz je połączyć inaczej i będą odwracały - to samo z komparatorami, ale przecież masz procesor - polaryzacja sygnałów doprowadzonych do niego z czujników jest bez znaczenia.

    Chodziło mi o to zdanie z twojej poprzedniej wypowiedzi:

    Wtedy w ciemności będzie 0V które urośnie gdy coś się odbije od białego podłoża.

    Myślałem, że sugerujesz zanegowanie sygnału.

    Jak rozumiem rezygnujesz z przetwornicy w ogóle a o zasilania procesora użyjesz LDO, czy tak?

    Nie bardzo. Wolałbym dać jednak przetwornicę impulsową myślę, że LM2596 byłby niezły (niska cena, montaż przewlekany, istnieje wersja z ustawionym napięciem, tylko 4 elementy zewnętrzne)


  17. LM358 to wzmacniacze nie komparatory, ale jeśli nie będziesz przekraczał ich napięć wejściowych, będą tu działać. Z uwagi na to graniczenie napięcia proponuję czujniki zrobić w konfiguracji "opornik do masy, tranzystor do plusa". Wtedy w ciemności będzie 0V które urośnie gdy coś się odbije od białego podłoża.

    Odwracanie każdego sygnału byłoby trochę kłopotliwe z uwagi na brak miejsca. Czy jeśli zamienią te układy na LM393 (identyczny pin-out ) to wszystko będzie ok ?

    EDIT: Tak, ten enkoder ma czujniki dające sygnał cyfrowy, dwustanowy. Sam hallotron ma co prawda wyjście typu otwarty-kolektor:

    To super będę miał więcej miejsca na płytce

    Jak rozumiem z wielkości prądu (choć VMOT mostka nie jest do niczego podłączone - poważny błąd) przetwornicę chcesz użyć do zasilania wszystkiego łącznie z silnikami. Dlaczego?

    Z racji zastosowania enkoderów nie potrzebuje chyba dodatkowej stabilizacji obrotów. Więc silniki będą zasilane prosto z akumulatora.

    I jeszcze:

    - brakuje GND a złączach UARTa i I2C.

    - Procesor nie dostał zasilania.

    Przecież pisałem ,że jeszcze nie dokończyłem jak widzisz gdybym dalej szedł tą drogą to dokończył bym płytkę napracowałbym się a potem by wyszła z tego kicha. Więc wolałem wstawić to co mam i mieć pole do zmian.

    Skoro ta przetwornica jest taka dziadowa (przynajmniej z punktu widzenia wad które wymieniłeś) to czy lepszy będzie układ LM2576 lub LM2596 ? Patrzyłem do noty katalogowej ale z tego co widzę to pracują one na 50khz czyli o połowę mniej niż ten 35063 więc ten dławik będzie miał kolosalne rozmiary. Ale w takim razie pytanie jakim cudem ludzie używaj do stabilizowania silników tych przetwornic i dają dławiki SMD ?

×
×
  • Utwórz nowe...