Elektroda.pl
Elektroda.pl
X
Deimic Smart Home
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Ardunio blokada podwójnego kliknięcia

Sobol95 30 Paź 2016 20:26 756 10
  • #1 30 Paź 2016 20:26
    Sobol95
    Poziom 19  

    Witam, dopiero zaczynam swoją przygodę z Arduino. Jako pierwszy projekt postanowiłem stworzyć automatyczne rolety. Napisałem program, który steruje serwo modelarskie przez mostek H. Serwo jest sterowane poprzez mikro przełączniki (prawo-lewo) oraz pilot od TV przez podczerwień. Pojawił sie mały problem. Jeśli klikne włącznik serwo kręci się daną ilość sekund w któraś stronę po czym sie zatrzymuje. Istnieje ryzyko podwójnego kliknięcia zwijania rolety. Jak temu zapobiec?

    0 10
  • Deimic Smart Home
  • #2 30 Paź 2016 22:02
    atom1477
    Poziom 43  

    A w czym przeszkadza podwójne kliknięcie?

    0
  • Deimic Smart Home
  • #3 30 Paź 2016 22:10
    Ture11
    Poziom 34  

    Trzeba zrobić na czujnikach krańcowych, a nie na czasówce...

    Raz zabraknie prądu podczas zwijania (lub ktoś wciśnie właśnie klawisz) i już nie zwiniesz na czasówce rolety bez uszkodzenia serwa, prawda?

    0
  • #4 31 Paź 2016 06:57
    emarcus
    Poziom 35  

    Sobol95 napisał:
    .......... postanowiłem stworzyć automatyczne rolety. Napisałem program, który steruje serwo modelarskie przez mostek H. Serwo jest sterowane poprzez mikro przełączniki (prawo-lewo)...........


    Servo modelarskie nie potrzebuje mostka H; - jest on już tam wbudowany.
    Kierunek obrotów silnika oraz kąt obrotu wałka wyjściowego kontrolowany jest czasem trwania ciągu impulsów podawanych cyklicznie na linii kontrolnej.
    Jeżeli masz servo poprawnie zmodyfikowane - 360 st. (przystosowane do pracy ciągłej), to też czas trwania (szerokośc) impulsów decyduje o kierunku obrotów. Stany spoczynkowe możesz osiągac jak sugerowano wyżej wyłącznikami krańcowymi w połączeniu z programem sterowania.
    Jeżeli modyfikacja twojego serva polegała na usunięciu całej pytki z elektroniką (takie pseudo-modyfikacje też są spotykane), to naturalnie zachodzi koniecznośc stosowania mostka H, lecz wtedy twoje 'servo' staje się zwykłym silnikiem z reduktorem obrotów. Kontrolę takiego układu możesz wzorowac na systemach napędu bram garażowych, gdzie wymagane są wyłączniki krańcowe (z reguły wbudowane w napęd). Owszem istnieje możliwośc zatrzymania cyklu w dowolnym miejscu, niezależnie od kierunku 'jazdy' (podnoszenia lub opuszczania). Wznowienie pracy możesz programowo ustalic na defaultowy kierunek lub kontynuację kierunku przed interruptem. Wszystko oczywiście może byc sterowane jednym przyciskiem lub jednym sygnałem IR, albo własnej inwencji dowolna interpretacja więcej sygnałów IR.
    Nie sądzę abyś uzyskał konkretną pomoc, dopuki nie pokażesz programu.

    e marcus

    0
  • #5 31 Paź 2016 19:20
    Sobol95
    Poziom 19  

    Dokładnie jak mówi emarcus, serwo zostało przerobione na zwykły silnik. Chodzi mi czy istnieje jakiś kod blokujący powtórzenie akcji, żeby właśnie nie zrobić podwójnego zwijania rolety. Co do krańcówek też mają swoje minusy bo gdy coś się zerwie będzie pracować i pracować bez przerwy. Wszystko ma swoje plusy i minusy.

    0
  • #6 31 Paź 2016 19:47
    2675900
    Użytkownik usunął konto  
  • #7 31 Paź 2016 20:25
    emarcus
    Poziom 35  

    Sobol95 napisał:

    Co do krańcówek też mają swoje minusy bo gdy coś się zerwie będzie pracować i pracować bez przerwy. Wszystko ma swoje plusy i minusy.


    Jest to absolutnie błędne rozumowanie. MUSISZ (!) miec zabudowane wyłączniki krańcowe do ustalenia home position dla rolet podniesionych, oraz opuszczonych. Na okolicznośc że coś się zerwie...(?), bądź nie pracuje jak przewidziano, możesz umieścic w programie dodatkowa funkcję/warunek, że przy załączaniu napędu, załączasz/zerujesz także timer odmierzajacy czas i po upływie powiedzmy podwójnego okresu w odniesieniu do normalnego cyklu, napęd zostanie wyłączony nawet jeżeli nie najechał na wyłącznik. Możesz także na taką okolicznośc załączyc przewidzianą sygnalizację błędu/alarmu.

    Cytat:

    Chodzi mi czy istnieje jakiś kod blokujący powtórzenie akcji, żeby właśnie nie zrobić podwójnego zwijania rolety.


    Oczywiście, taka procedura jest podstawową częścią programu. Jeżeli zatrzymałeś silnik na którymś z wyłączników krańcowych, to stan logiczny tego wyłącznika określa kierunek ponownego włączenia silnika.
    Jeżeli dla przykładu; silnik został zatrzymany przez wyłącznik w pozycji podniesionych rolet, to przed kolejnym uruchomieniem silnika sprawdzasz stan wyłączników krańcowych i ten załaczony wskazuje jedyny możliwy kierunek kolejnej pracy silnika.
    Start po zatrzymaniu w punktach pośrednich omówiłem w poprzednim poście. Jezeli nie masz konkretnego punktu (logicznego stanu odniesienia), stosuj w programie dodatkowe flagi/znaczniki itp.

    Nie wydaje ci się to byc proste?

    e marcus

    0
  • #8 31 Paź 2016 20:54
    michalko12
    Specjalista - Mikrokontrolery

    Ewentualnie można jakąś detekcje wykonać w oparciu o pomiar poboru prądu/spadku napięć.
    Enkoder to juz szczyt szczytów, ale...

    0
  • #9 01 Lis 2016 06:03
    rs6000
    Poziom 27  
  • #10 01 Lis 2016 10:50
    atom1477
    Poziom 43  

    Sobol95 napisał:
    Co do krańcówek też mają swoje minusy bo gdy coś się zerwie będzie pracować i pracować bez przerwy.

    Wcale nie. Krańcówki się robi jako NC i wtedy zerwanie przewodów niczym nie grozi.

    0
  • #11 01 Lis 2016 13:55
    michalko12
    Specjalista - Mikrokontrolery

    atom1477 napisał:
    Wcale nie. Krańcówki się robi jako NC i wtedy zerwanie przewodów niczym nie grozi.

    A zwarcie?

    0