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

[ATMEGA16] Programowanie sterowania wózka inwalidzkiego z potencjometrem 6k Ohm

henryxxl 13 Lip 2012 16:21 6812 35
  • #1 11101890
    henryxxl
    Poziom 26  
    Witam.
    Chcę pomóc charytatywnie dla pewnego starszego Pana naprawić wózek inwalidzki (z późnych lat 90) otóż toretycznie mam już zrobione same sterowanie wózka przód-tył i regulacja prędkości (dziękuję bardzo w tym użytkownikowi whyki) tylko że na razie steruję wciskając zwykłe przyciskii a chcę aby sterowanie pozostało tradycyjne dlatego że ten Pan jeździ nim od kilku lat i ciężko będzie mu się przyzwyczaić do czegoś nowego. Mam problem z sterowaniem przód-tył oryginalnie był tam mechanizm umieszczony na zdjęciach poniżej polegało to na tym ze wciskając ramie w lewa albo prawą cześć poruszał się potencjometr 6k Ohm. Proszę o pomoc w napisaniu programu na procesor np: atmega16 który będzie rozpoznawał w którą stronę zastał wciśnięty ten mechanizm i po czym ustawiał jeden z portów w stan wysoki jeżeli wózek ma jechać do przodu to np: na portd2 ma pojawić się 1 a jak do tyłu to na portd1 ma pojawić się 1.
    Proszę wybaczyć moją nie wiedzę w tym temacie, nie liczę na gotowca proszę o sugestie jak to zrobić.
    Pozdrawiam.
    [ATMEGA16] Programowanie sterowania wózka inwalidzkiego z potencjometrem 6k Ohm [ATMEGA16] Programowanie sterowania wózka inwalidzkiego z potencjometrem 6k Ohm
    [ATMEGA16] Programowanie sterowania wózka inwalidzkiego z potencjometrem 6k Ohm
  • #2 11101939
    xamrex
    Poziom 28  
    Trochę mało napisałeś o tym mechanizmie..
    Napisałeś że poruszał się potencjometr 6k.

    To może trzeba by było mierzyć napięcie na jego końcówkach np. za pomocą ADC w uC.
    I jeśli napięcie jest mniejsze od jakiegoś progu, to jedzie do przodu, w przeciwnym wypadku do tyłu..
  • #4 11101994
    xamrex
    Poziom 28  
    Niestety nie mam ale poszukaj na forum.
    Albo w helpie
    Upewnij się, że napięcie na tym potencjometrze nie jest za wysokie..

    Btw. ja nie jestem pewien czy to działa w taki sposób..
    To była tylko sugestia
  • #5 11102322
    excray
    Poziom 41  
    Skoro jest potek to na pewno była regulacja prędkości. Do samego sterowania przód tył nie trzeba używać żadnego mikroprocesora. Wystarczą 2 komparatory + potki o zadania wartości progowej. Jak już chcesz wstawić tam mikroprocesor to zrób układ nie tylko z kierunkiem ale również z regulacją prędkości - PWM. A do analizy położenia - jak napisano - można wykorzystać ADC.
  • #6 11102361
    Konto nie istnieje
    Poziom 1  
  • #8 11102568
    Konto nie istnieje
    Poziom 1  
  • #9 11102718
    arktik1
    Poziom 27  
    Szczerze mówiąc to na Atmega 16 można zrobić całe sterowanie bez żadnych dodatkowych elementów.
    Wystarczy ci Uc i sekcja mocy z kilku tranzystorów.
    Czy tam są zwykłe silniki DC?
  • #11 11102862
    arktik1
    Poziom 27  
    Wartość z potencjometru odczytujesz ADC Uc.
    Rozdzielczość ADC to 1024 punkty, rozdzielczość PWM to 256 punktów.
    Jeśli chcesz zrobić sterowanie całą długością potencjometru, to masz do wykorzystania właśnie te 1024.
    Wystarczy 1024 podzielić na 4, to się równa 256 i tą wartość przypisać do PWM.
    Jeśli będziesz zwiększał potencjometrem wartość ADC to wykonasz operację od 0 do 1023.
    Oznacza to że PWM będzie się zwiększało co 4 punkty, ponieważ przez tyle podzieliliśmy.
    ADC = 0-- PWM = 0
    ADC = 4-- PWM = 1
    ADC = 8-- PWM = 2 itd.
    ADC = 1023-- PWM = 255
    Dlaczego napisałem że rozdzielczość 1024 a tu podaję wartość 1023.
    Dlatego że 0 liczy się tez jako punkt.
  • Pomocny post
    #12 11103020
    piotrva
    VIP Zasłużony dla elektroda
    No raczej nie do końca. Jak potencjometr w położeniu neutralnym da na adc ok. 511/512 to wtedy jest stop.
    Nie można liczyć ze odczyt będzie 100% stabilny, dlatego stop musi mieć na skai jakąś rozpiętość, np. od 460 do 564.
    Dalej nie liczmy, że silnik przy np. PWM = 1% ruszy z prędkością 1% maksymalnej :D najpierw trzeba dobrać (eksperymentalnie) minimalną wartość STARTU silnika (czyli przy jakiej wartości PWM silnik ruszy z zatrzymania pod obciążeniem) i potem zakres od tej wartości aż do 100% (255) rozłożyć równomiernie na pozostały z każdej strony stopu z dodaną tolerancją zakres. Do tego warto jeszcze dodać ten soft-start.
  • #13 11103184
    arktik1
    Poziom 27  
    Oczywiście że tak.
    Moja wypowiedź miała na celu przybliżenie autorowi działania potencjometru i PWM.
    Trzeba podzielić ADC na 2 dodać do tego jakieś 10 punktów histerezy.
    Przy wypełnieniu PWM 1% silnik na pewno nie ruszy, tym bardziej że będzie obciążony.
    Ja bym zaczął od wypełnienia 50% i regulował eksperymentalnie.
    SoftStart to chyba nie koniecznie przy takiej regulacji, sprawę powinien załatwić potencjometr.
    Jeśli damy Soft start to musimy liczyć się z opóźnieniem hamowania wózkiem.
    Co jeśli klient będzie chciał gwałtownie zahamować przeciwprądem lub będzie zjeżdżał z góry?

    Dodano po 13 [minuty]:

    Z resztą SoftStart można załatwić jakimś filtrem RC na wejściu ADC :D
  • #14 11103656
    LordBlick
    VIP Zasłużony dla elektroda
    arktik1 napisał:
    Co jeśli klient będzie chciał gwałtownie zahamować przeciwprądem lub będzie zjeżdżał z góry?
    Hamowanie można zrobić przetwornicą ładującą przy okazji akumulator.
  • #16 11104228
    arktik1
    Poziom 27  
    Zrobił bym Mostek H, jako sekcja mocy .
    Sterowanie z M16.
    Dołożył bym jakiś LCD lub diody led, informujące o stanie naładowania akumulatora.
  • #22 11147103
    tronics
    Poziom 38  
    Silnik przy rozruchu pobiera kilkakrotnie większy prąd niż znamionowy przy znamionowym obciążeniu. Czy obciążony silnik z tym aku jaki masz teraz w ogóle startuje (mam tutaj na myśli włącznik mechaniczny zamiast sterowania)? Jeśli nie to już masz pierwszą barierę. Jak się z nią uporasz można myśleć o regulacji prędkości.
    BTW wcześniej poruszono kwestię wart. prądu przy miękkim rozruchu:
    Cytat:
    najpierw trzeba dobrać (eksperymentalnie) minimalną wartość STARTU silnika (czyli przy jakiej wartości PWM silnik ruszy z zatrzymania pod obciążeniem)

    Problem jest natury takiej, że tego NIE DA SIĘ określić jednoznacznie - ruch pod górkę czy z górki, start z mniejszym lub większym obciążeniem (np. zakupy) - dla jednej sytuacji dobrany na warsztacie próg będzie za niski, do innych za wysoki (więc wózek szarpnie zanim prędkość się ustabilizuje). Tutaj niestety trzeba dobrze pokombinować z regulacją - tj. odpowiednio szybki wzrost od 0 do 100% i przeliczenie parametrów do regulacji na podstawie "odpowiedzi układu". Innymi słowy regulator adaptacyjny.
  • #24 11147266
    Tomasz Gumny
    Poziom 28  
    Trochę niepokojące jest, że nie panujesz nad regulacją a zamierzasz to zamontować w pojeździe. Czy zdajesz sobie sprawę, że jeśli po próbie podjechania pod krawężnik spalą się MOSFETy i wózek uderzy w kogoś z pełną prędkością albo przy nadmiernie rozładowanych akumulatorach procesor zacznie szaleć i wózek ruszy niespodziewanie prosto pod koła innego pojazdu, to będziesz pierwszy w kolejce do przesłuchania?
    Czy jest gdzieś schemat i program do tego projektu?
  • #26 11147305
    tronics
    Poziom 38  
    Cytat:
    Regulowana prędkość jest potencjometrem

    Zadawana jest potencjometrem, regulowana wypełnieniem napięcia zasilającego silnik, tudzież wartością średnią tego napięcia - dobrze sobie to porządnie rozrysować przed implementacją algorytmu regulacji w programie.
    Cytat:
    Mam 5x irf640 do sterowania prędkością plus atmega16

    Jak wygląda schemat samego obwodu mocy Twojego regulatora? // już nieważne - czy zatem mosfetami odpowiednio sterujesz? Bo coś mi się zdaje, że albo są wyłączone, albo pracują w części liniowej, zamiast nasyceniu.
    Cytat:
    Przy rozruchu bez obciążenia sinik pobiera 8a

    A przy rozruchu pod obciążeniem więcej... tylko czy regulator jest w stanie mu tyle dostarczyć? :)
    Cytat:
    że jeśli po próbie podjechania pod krawężnik spalą się MOSFETy i wózek uderzy w kogoś z pełną prędkością

    Od tego są zabezpieczenia nadprądowe, zarówno w sprzęcie jak i programie.
    Cytat:
    albo przy nadmiernie rozładowanych akumulatorach procesor zacznie szaleć

    A od tego brown out detection, czy też watchdog.
    Cytat:
    i wózek ruszy niespodziewanie prosto pod koła innego pojazdu

    Mało prawdopodobne przy poprawnie wykonanym układzie.
  • #28 11147520
    LordBlick
    VIP Zasłużony dla elektroda
    No jakoś nie widzę tu watchdoga i BOD...
    To nie są żarty, na forum korespondencyjnie to można sobie dłubać przy LED-ce, ale przy wózku dla niepełnosprawnych lepiej nie. Krytyczne dla bezpieczeństwa urządzenia oprogamowuje się w systemach czasu rzeczywistego.
    To jest Bascom - język tylko do tworzenia zabawek bez konieczności zagłębiania się w rejestry procesora i nie można tu zagwarantować niezawodności, bo nawet programista nie wie, czy w danej wersji kompilatora nie ma jakiejś pluskiewki. Większość procedur wewnętrznych w tym języku zawiera kod blokujący procesor.
  • #30 11147693
    Tomasz Gumny
    Poziom 28  
    Sprzęt:
    :arrow: Bardzo brakuje dzielników ustalających napięcie na wejściach ADC przy utracie kontaktu na suwakach potencjometrów.
    :arrow: Nieco mniej brakuje pojemności (np. 100nF) tamże.
    :arrow: Czy jedno wyjście procesora przeładuje 5 bramek? Jaka tam jest częstotliwość?
    :arrow: Nie ma zabezpieczenia nadprądowego.
    :arrow: Brak pomiaru napięcia akumulatorów.
    Program:
    :arrow: Nie jest załączany watchdog.
    :arrow: BOD też wypadałoby włączyć, ale to już fusebitami.
    :arrow: Wyrzuć operacje zmiennoprzecinkowe, bo to proszenie się o kłopoty.
REKLAMA