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

Jakiego uC AVR użyć do tego projektu?

nelik1987 06 Paź 2009 15:06 3718 28
  • #1 7096634
    nelik1987
    Poziom 31  
    Witam. Mam problem w wyborze mikrokontrolera do mojego projektu ramienia robota ->> https://www.elektroda.pl/rtvforum/topic1365567.html

    Największy problem jak narazie nie wydajnśc procesora ale ilość I/O, będe potrzebował:

    6x4=24 I/O do sterowania silników
    6x2=12 I/O do obierania sygnałów z przycisków
    12x1=12 I/O z czujników krańcowych

    co daje 48 I/O minimum, chciałem jeszcze użyć wyświetlacza to wyświetlania najważniejszych informacji co dało by kolejne 6 potrzebnych I/O no i zawsze trzeba mieć w zapasie jakieś I/O.

    Co byście polecali do takich zastosowań, oczywiście chodzi mi o osiągalne cenowo i dostępne w sklepach procki, w grę wchodzi tylko i wyłączeni AVR
  • #2 7096688
    Freddie Chopin
    Specjalista - Mikrokontrolery
    przyciski i krańcówki możesz sobie spokojnie multipleksować jako klawiaturę matrycową 5x5 (na przykład). Jak jeszcze mało, to ekspandery portów / rejestry przesuwne z zatrzaskiem

    4\/3!!
  • #4 7096739
    nelik1987
    Poziom 31  
    no właśnie tego porównania szukałem ale nie mogłem znaleźć dzięki

    Dodano po 12 [minuty]:

    zamawiać będę z TME bo mogę mieć tam spore zniżki i wybiorę atmega64 lub atmega128, te mi najbardziej pasują mają wszystko czego potrzebuję
  • #5 7099920
    marco47
    Poziom 41  
    Witam kolegów!
    Kolego nelik1987
    Co do przycisków , można je umieścić na jednej lini podpiętej do wejścia pomiarowego procka . Każdy przycisk szeregowo z rezystorem (różne wartości). Stosuję tylko jeżeli nie trzeba naciskać dwóch lub więcej przycisków.
    Podobnie postąp z czujnikami krańcowymi.
    Zamiast zajętych 24 końcówek procka zajęte tylko 2

    Pozdrawiam
  • #7 7101001
    fazeeR
    Poziom 12  
    teoretycznie można to zrobić na 2 przyciskach. Wystarczy tylko że poszczególne rezystancje będą miały kolejne wartości potęgi 2, tzn 2, 4, 8, 16, 32, 64, 128.
    Nawet przy wciśnięciu kilku klawiszy napięcie na ADC będzie niepowtarzalne dla kombinacji. Komplikuje to jednak trochę program.

    pozdrawiam
  • #8 7101452
    nelik1987
    Poziom 31  
    2,4,8,16,32,64,128,256,512, co daje 9 kombinacji, zresztą wpływ temperatury mógł by zaburzyć pomiar napięcia i dawać niepewne wyniki co dyskwalifikuje takie rozwiązanie, brałem je pod uwagę
  • #9 7102556
    sheeeep
    Poziom 25  
    To rozwiązanie proponowane przez Freddie Chopin też odpada (matryca 5x5), ale fakt faktem można różne rejestry multipleksować i kombinować choćby na latchach. Nie mówiąc o wykorzystaniu CPLD, wtedy pełne szaleństwo :D a do 10zł można coś fajnego z Xilinksa kupić.

    pozdrawiam
    Sheep
  • #10 7103440
    tmf
    VIP Zasłużony dla elektroda
    Praktycznie w kazdych warunkach ADC da ci co najmniej 6 pewnych bitow, wiec mozesz krancowki i klawiaturke podlaczyc przez drabinke R2R po 6 na kanal, co juz ci mocno ograniczy ilosc IO.
    Co do silnikow - w koncu sterujesz mostkami H z procka czy promotor dopuscil scalony steronik krokowcow? Jesli dopuscil to te chipy z Allegro-micro o ktorych ci pisalem maja wejscie szeregowe + sygnal CS. Tak siec mozesz podlaczyc je przez dekoder np. 1 z 8 albo wiekszy, wtedy z 24 linii IO robi ci sie tylko 5. Swoja droga to bedza w tym robocie az 24 silniki?
  • #11 7103463
    nelik1987
    Poziom 31  
    co do układów scalonych to jeszcze nie wiem, tak czy inaczej będzie trzeba wyprowadzać 4 sygnały sterujące do silników by mieć nad nimi pełną kontrolę, czy będą to mostki H na tranzystorach czy na przykład l293 to i tak trzeba doprowadzić 4 sygnały sterujące, dtosowanie multipleksowania utrudnia pisanie programu :) wolę zastosować ATmega64 lub 128 i mieć spokój, stosowanie dodatkowych latchy czy multipleksowanie zwiekszy także ilośc układów na płyce PCB, cena nie gra tak dużej roli bo ATmega 128 kosztuje 20 zł wiec to nic strasznego. Co do silników nie bedzie ich 24 tylko 6 pisałem że potrzebne bedą 6x4=24 I/O a nie 24 silniki :)
  • #12 7107206
    marco47
    Poziom 41  
    Po co tyle czujników krańcowych.
    Jeżeli stosujesz silniki krokowe to położenie elementu , ramienia , uchwytu obliczasz programowo. Na początku wyzeruj ramię ( ustaw ręcznie w zerowych krańcowych położeniach , zapisz do pamięci i cześć pieśni).
    Nie wiem po co tyle przycisków do sterowania . Podziel na osobne grupy funkcyjne a te podaj na osobne ADC.
    Zminimalizuj ilość zewnętrznych elementów regulacyjnych.
    Pozdrawiam
  • #13 7107248
    nelik1987
    Poziom 31  
    no widzisz jak byś wiedział to przy sterowaniu różnych urządzeń wychodzą czasami stany nieoczekiwane, przykładowo będzie to przeszkoda którą napotka ramie, silnik nie będzie mógł przesunąć ramienia więc zgubi kroki ale procesor o niczym nie będzie wiedział po czym cofniemy ramię aż do oporu i się okazuje że wychodzi ono poza zakres ruchu i na przykład uszkodzi ramię. Obliczenia pójdą w łeb jak silnik zgubi krok bo procesor nie będzie o niczym wiedział. Trzeba stosować czujniki krańcowe do jednoznacznego określenia zakresu ruchu i zaznaczenia że dalej ramie nie może się poruszyć. Co do sterowania wykorzystałem 2 joysticki potencjometryczny co zmniejszyło o 4 ilość wejść bo zamiast 8 stanów HI/LOW mam napięcie w zakresie 0-5V podawane na ADC i tam odczytuje w jaką stronę wychylono joystick poprzez pomiar napięcia.
  • #14 7107298
    marco47
    Poziom 41  
    Dlatego tak napisałem o krańcówkach bo nie zakładam że silnik będzie gubił kroki. Powinien pracować w zakresie zakładanego obciążenia.
  • #15 7107310
    nelik1987
    Poziom 31  
    no będzie pracował w granicach obciążenia ale co w przypadku przeszkody? Takie rzeczy trzeba uwzględniać, przykładowo plotery frezarki i inne tego typu urządzenia mogły by liczyć kroki ale stosuje sie krańcówki po to by zatrzymać maszynę przed końcem jej toru bo wykroczenie poza tą strefę mogło by uszkodzić maszynę
  • #16 7107325
    marco47
    Poziom 41  
    Oczywiście!
    Tylko Tobie chodzi o ramię robota. Zastosuj czujniki obciązenia ramienia.
    Na filmie widziałem sterowanie manipulatorem. Wynika z niego że już w założeniu pozwalasz na pracę poza dopuszczalnym obciązeniem chwytaka .Jak chwyci przedmiot to nastepuje przeskok kroku ?
  • #17 7107361
    nelik1987
    Poziom 31  
    oczywiście że można stosować najróżniejsze czujniki, można badać ugięcie wałów w skutek obciążenia, badać prąd silników, zastosować czujniki położenia kątowego (enkodery) itp ale to nie w moich zastosowaniach, zastosowanie skomplikowanych czujników i metod pomiaru bardzo podniosło by cenę i skomplikowało konstrukcję, krańcówki są tanie, proste i skuteczne. Więc nie ma co się dalej nad tym rozwodzić, zawsze można stosować skomplikowane i na pewno dokładne metody ale gdzieś trzeba znaleźć kompromis, nie robię tego ramienia robota do pracy w przemyśle tylko jako przykład ramienia sterowanego z uC i o to tu chodzi, to ramie nie będzie wykonywało żadnych ważnych zadań ono ma pokazać sposób działania i sterowania takim ramieniem to jest tylko MODEL ramienia
  • #18 7107362
    janbernat
    Poziom 38  
    Co do silników krokowych to nie zawsze jest tak różowo.
    Potrafią gubić kroki.
    Wzbudzają się przy pewnych częstotliwościach których wartość zależy od obciążenia silnika i od szybkości zwiększania częstotliwości impulsów sterujących (po ludzku mówiąc- od wartości pochodnej).
    Tak że krańcówki są potrzebne.
    W zasadzie dwa rodzaje krańcówek.
    Jedne- sprzętowe.
    Jak napęd wychodzi poza zakres to wyłącza się zasilanie silników.
    Mogą być połączone w szereg i powinny być poza sterowaniem programowym.
    Jak program się zawiesi np. od zakłóceń to nie zdemoluje maszyny lub otoczenia.
    Krańcówki podłączone do softwaru pozwalają ustalić punkt początkowy i końcowy ruchu.
    Dla takich części jak chwytak o obrocie 360stopni wystarczy jedna krańcówka ustalająca położenie 0 stopni.
    Do sterowania silników proponuję użyć dedykowanych układów (np. z Wobitu).
    Wtedy wystarczą trzy sygnały STEP, DIR i ENABLE.
    Przy czym ENABLE może być ten sam dla wszystkich silników.
    A do uwolnionych w ten sposób pinów podłączyć czujnik tensometryczny aby manipulator mógł podnieść szklankę i jej nie stłuc.:D
    PS.
    A w TME wpisz stepper motor driver
  • #19 7107392
    marco47
    Poziom 41  
    Jeżeli to jest model i nie będzie obciążany max to po co tyle krańcówek.
  • #20 7107504
    yego666
    Poziom 33  
    Nie bardzo rozumiem o co tyle slow.
    Czlowiek chce dac krancowki... Why not!
    To nie sa drogie elementy, wiec na pewno nie zaszkodza, a w razie czego ochronia tzw "investment".
    Po to sa zabezpieczenia. Nie zawsze redukcjonizm jest uzasadniony.
    A gdyby tak producent samochodu doszedl do wniosku, ze nikt przy zdrowych zmyslach nie zechce skrecic kol o wiecej niz 45 stopni i zlikwidowal mechaniczne ograniczenia to ale bylaby jazda :)

    Co zas sie tyczy liczby pinow, to na Opencores jest do przestudiowania procesor jednobitowy.
    Zrobi wszystko co sie zechce ... bit po bicie, ale zaloze sie, ze prawie kazdy system operacyjny ( no moze poza Windowsem ) lepiej chodzilby na tradycyjnej rownoleglej architekturze systemu.
    IMHO jesli sa potrzebne procki o duzej liczbie pinow, to trzeba je stosowac a nie kombinowac z dodatkowymi ukladami, ktore podnosza koszt opracowania, wykonania, PCB i zmniejszaja niezawodnosc ukladu.
    Jesli Was szokuje liczba pinow na poziomie 70, to co powiecie o FPGA, w ktorych zwykle jest pinow miedzy 100 a 1000 !?

    Mysle, ze za obnizanie kosztow i redukcjonizm mozna sie brac nie w fazie poczatkowej takiego projektu, a w fazie jego koncowej optymalizacji.
  • #21 7107921
    OldSkull
    Poziom 28  
    Potrzebujesz 24 Wy i 24 We (teraz 16 + 4ADC).

    Wyjścia (o ile nie potrzebujesz PWM) możesz zrobić za pomocą 74hc595 połączonych szeregowo i podłączonych do SPI. Do wejść z krańcówek istnieje analogiczny ukłąd, ale nie pamiętam symbolu. W takim wypadku potrzebujesz poza pinami od SPI jedynie 2 piny. Radę by dała zwykła ATmega8 (lub 8 jeśli potrzebujesz większej liczby PWMów). Poza tym polecam ATmegę16 (lub 32, zaleznie od pamięci): ma dostępne 4 pełne porty, z czego 1 odchodzi na wyświetlacz + UART (przydaje się czasem), JTAG i 4 PMWy.
    Jest to rozwiazanie tanie (rejestry przesuwne kosztują kilkadziesiat groszy) i raczej proste (obsługa SPI jest bardzo intuicyjna).
  • #22 7108240
    nelik1987
    Poziom 31  
    yego666 napisał:
    Nie bardzo rozumiem o co tyle slow.
    Czlowiek chce dac krancowki... Why not!
    To nie sa drogie elementy, wiec na pewno nie zaszkodza, a w razie czego ochronia tzw "investment".
    Po to sa zabezpieczenia. Nie zawsze redukcjonizm jest uzasadniony.
    A gdyby tak producent samochodu doszedl do wniosku, ze nikt przy zdrowych zmyslach nie zechce skrecic kol o wiecej niz 45 stopni i zlikwidowal mechaniczne ograniczenia to ale bylaby jazda :)

    Co zas sie tyczy liczby pinow, to na Opencores jest do przestudiowania procesor jednobitowy.
    Zrobi wszystko co sie zechce ... bit po bicie, ale zaloze sie, ze prawie kazdy system operacyjny ( no moze poza Windowsem ) lepiej chodzilby na tradycyjnej rownoleglej architekturze systemu.
    IMHO jesli sa potrzebne procki o duzej liczbie pinow, to trzeba je stosowac a nie kombinowac z dodatkowymi ukladami, ktore podnosza koszt opracowania, wykonania, PCB i zmniejszaja niezawodnosc ukladu.
    Jesli Was szokuje liczba pinow na poziomie 70, to co powiecie o FPGA, w ktorych zwykle jest pinow miedzy 100 a 1000 !?

    Mysle, ze za obnizanie kosztow i redukcjonizm mozna sie brac nie w fazie poczatkowej takiego projektu, a w fazie jego koncowej optymalizacji.


    chociaż ktoś mnie rozumie, koszty nie mają dla mnie takiego znaczenia, czy kupię atmega128 czy atmega8 to przy pojedynczym projekcie nie ma znazczenia co innego gdyby to miało iśc do masowej produkcji, uklad ma być jak najmniej skomplikowany bo nie mam czasu na składanie skomplikowane układu, co do ISP nie ma doświadczenia i nie mam czasu się tego nauczyc tak na zaraz a termin obrony pracy zbliża się wielkimi krokami
  • #23 7108270
    OldSkull
    Poziom 28  
    Jak tak to od razu ATmega 128 - masz dostępne 54 piny We/Wy, czyli zostają ci 4 wolne (na np. RSa albo jakieś diody kontrolne :) ). Tylko w taim wypadku niepotrzebnie się pytałeś: to jest najprostszy procesor AVR z odpowiednią ilością nóżek.
  • #25 7123490
    Myrek1
    Poziom 23  
    Ja zamiast używać nóżek ATmegi128 do sterowania wyjściami cyfrowymi na Twoim miejscu zastosował bym ekspandery z portem SPI. Przykład to MCP23017 (16 wejść / wyjść) po 5zł w TME. Bardzo prosto się je oprogramowuje.
  • #27 7127456
    rpal
    Poziom 27  
    Myrek wcale głupio nie gada, jak się weźmie pod uwagę że do sterowania takiego portu trzeba tylko zastosować trzy linie danych + zasilanie a wyjścia portów razem z samym układem scalonym mogą być w każdym miejscu PCB to sam projekt PCB i rozmieszczenie wyprowadzeń sterujących może zostać poprowadzone w prosty i przejzysty sposób. Chyba że kolega od robota nie ma żadnych ograniczeń wynikających z rozmiarów płytki i dysponuje np. wolnym miejscem w formacie kartki A4. Jeśli jest mało miejsca to będzie na tym jego PCB panować istny chaos albo platanina przewodów podbieta prosto pod nogi Atmega128.
  • #29 7127759
    nelik1987
    Poziom 31  
    wielkość płytki mam ograniczoną do do formatu A4 bo takie polec pracy ma frezarka do płytek, zasilanie i sterowanie będzie w oddzielnej skrzynce więc nie musze teho pakować do robota, myślę ze temat już rozwiązany, jestem już w trakcie projektowania płytki pod tą ATMege128, ale dziękuję za wasze rady na przyszłość będę już wiedział gdy będę miał więcej czasu na wykonanie ukłądu pewnie skorzystam z SPI
REKLAMA