Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki



Teraz jest 26 wrz 2018, o 09:27


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 9 ] 
Autor Wiadomość
PostNapisane: 12 wrz 2018, o 12:47 
Offline
Nowy

Dołączył(a): 02 maja 2015
Posty: 17
Pomógł: 0

Witam! Postanowiłem unowocześnić mój sterownik do drzwi garażowych, zrobiony jeszcze na kościach TTL.
Chcę, aby silnik siłownika łagodnie ruszał w ciągu ok. 1,5 sekundy. Na początek stworzyłem taki kod:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Soft_start zawarłem w funkcji, jednak nie mogę jej przerwać przyciskiem STOP. Silnik można wyłączyć dopiero gdy funkcja zakończy działanie.
Niby te 1,5 sek. to niedużo, ale w sytuacji awaryjnej szybka reakcja może być ważna.
Proszę o sugestie, co w tym kodzie jest nie tak jak trzeba.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 wrz 2018, o 13:04 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 lut 2014
Posty: 86
Pomógł: 2

w obsłudze przycisku stop ustaw sobie flage typu np bool, a w części soft_start zrób na początku IF'a który sprawdzi czy może wykonać instrukcje w funkcji. Czyli:

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

_________________
::::::: C ::::::::::
:::::: C++ :::::::::



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 wrz 2018, o 18:15 
Offline
Użytkownik

Dołączył(a): 05 wrz 2017
Posty: 83
Pomógł: 15

Hej
Bardzo dobrze, że zabrałeś się za stworzenie maszyny stanów ale jak byś sobie narysował graf stanów Twojego projektu to pewnie rzuciło by Ci się w oczy że funkcja ss blokuje całość aż do wykonania. Moim zdaniem dobrze było by soft start oprzeć o przerwania, tzn w opisie słowno muzycznym. Zwłoka 3ms odliczana przez timer i w czasie tych 3 ms program dalej wykonuje pętle maszyny stanów.
W pseudo kodzie było by to coś w ten deseń:
Flaga inicjowana globalnie:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Funkcja SoftStart:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


w ISR timera
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 wrz 2018, o 19:41 
Offline
Nowy

Dołączył(a): 02 maja 2015
Posty: 17
Pomógł: 0

Dziękuję Wam za porady, muszę to przetrwała i wypróbować (dopiero raczkuję w programowaniu). Odezwę się.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 13 wrz 2018, o 13:43 
Offline
Użytkownik

Dołączył(a): 18 kwi 2013
Posty: 154
Lokalizacja: Kraków
Pomógł: 28

Stop awaryjny, to raczej powinno się robić fizycznie za pomocą odpowiedniego przycisku przerywającego bezpośrednio obwód zasilania silnika. Jakieś zakłócenie, awaria sterownika i program może przestać działać, a wtedy już nic nie wyłączy silnika, jeśli stop awaryjny jest zrealizowany programowo.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 14 wrz 2018, o 09:02 
Offline
Nowy

Dołączył(a): 02 maja 2015
Posty: 17
Pomógł: 0

janusz17 napisał(a):
Stop awaryjny, to raczej powinno się robić fizycznie za pomocą odpowiedniego przycisku przerywającego bezpośrednio obwód zasilania silnika. Jakieś zakłócenie, awaria sterownika i program może przestać działać, a wtedy już nic nie wyłączy silnika, jeśli stop awaryjny jest zrealizowany programowo.

Masz oczywiście rację. Obecnie mam włączony bezpiecznik topikowy szybki 8.6A włączony w obwód silnika (silnik z wycieraczek od FSO Polonez). Prąd przy otwieraniu ok. 6A, przy zamykaniu 3,5A
Do tego jest komparator kontrolujący prąd silnika za pomocą bocznika ustawiony metodą prób na granicy wyłączenia przy otwieraniu.
Mam zamiar jeszcze dobudować fotokomórkę wyłączającą silnik, ale tylko podczas zamykania drzwi (choćby tylko po to, żeby kota na przytrzasnęło ;). I to uważam za wyłączenia awaryjne.
Opisany wyżej STOP ma umożliwiać ręczne natychmiastowe zatrzymanie drzwi z pilota lub przyciskiem.
Dodam jeszcze, że mam możliwość rozsprzęglenia napędu i otwarcia drzwi ręcznie w razie braku zasilania.
Mechanizm napędu i sterownik kilka razy udoskonalałem, wprowadzałem poprawki i przez to sterownik teraz bardziej wygląda na prototyp niż na początku :mrgreen:



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 15 wrz 2018, o 07:22 
Offline
Nowy

Dołączył(a): 02 maja 2015
Posty: 17
Pomógł: 0

abel11 napisał(a):
Hej
Bardzo dobrze, że zabrałeś się za stworzenie maszyny stanów ale jak byś sobie narysował graf stanów Twojego projektu to pewnie rzuciło by Ci się w oczy że funkcja ss blokuje całość aż do wykonania. Moim zdaniem dobrze było by soft start oprzeć o przerwania, tzn w opisie słowno muzycznym. Zwłoka 3ms odliczana przez timer i w czasie tych 3 ms program dalej wykonuje pętle maszyny stanów.
W pseudo kodzie było by to coś w ten deseń:
Flaga inicjowana globalnie:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Czy FlagaTimera w tym kodzie, to odpowiednik zmiennej pausa_3ms z mojej funkcji ss?

Nie bardzo rozumiem działania kodu, który napisałeś.
abel11 napisał(a):
Funkcja SoftStart:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Czy funkcja SoftStart musi mieć argument?. Zmienna i jest przepisywana do rejestr OCR0B. To rejestr timera CTC, pracującego w trybie PWM. Zmienna powinna inktementować od 0 - 255, ale ja ustawiłem wstępnie wartość minimalną na 15, aby pokonać bezwładność silnika przy rozruchu.

Nie wiem co ma robić funkcja StartTMR1ms, nie widzę jej ciała.

I jeszcze w ISR timera
abel11 napisał(a):
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Eclipse wyrzuca błąd składni. Jeśli to ma zmieniać wartość (stan) flagi na przeciwną, to nie powinno być tak:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

lub tak?
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 15 wrz 2018, o 09:26 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 23513
Lokalizacja: Szczecin
Pomógł: 885

daj sobie spokój z bool

toż wystarczy byle zmienną uint8_t traktować jako flagę i ustawiać ją na jeden albo zero

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


albo zmieniać jej stan na przeciwny:

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 15 wrz 2018, o 10:37 
Offline
Nowy

Dołączył(a): 02 maja 2015
Posty: 17
Pomógł: 0

Kierując się sugestiami abel11, napisałem funkcję ss w ten sposób.
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Usunąłem deklarację zmiennej globalnej i oraz przeniosłem do funkcji linię
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

z sekcji
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Na razie teoretyzuję, bo teraz nie mogę tego sprawdzić na żywym organizmie, czyli attiny2313 ;)
Czy to ma szasę zadziałać?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 9 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 2 gości


Nie możesz rozpoczynać nowych wątków
Nie możesz odpowiadać w wątkach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Skocz do:  
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO