Wątek przeniesiony 2022-07-27 20:11 z C/C++ przez cerrato.

Zaprogramowanie w arduino programatora pralki

0

Hej wszystkim.
Zacznę od tego że padł mi w pralce programator krzywkowy, a nowy jest nie do dostania. Szkoda mi pralki bo wszystko śmiga a przez taką głupotę nie chce wymieniać na nową. Wymyśliłem sobie że zamiast tego programatora użyje arduino uno z modułem 4 przekaźników i enkoderem. 4 przekaźniki będę symulowały 4 styki od programatora, a każdy obrót enkodera to inna kombinacja zaliczeń przekaźników gdyż jest 16 programów w pralce. Właśnie z tego powodu zwracam się z prośbą do was o pomoc w napisaniu programu do tego gdyż jestem zielony. Coś tam w teorii wiem, ale nie miałem dużej styczności z programowaniem. Dodam też że fajną funkcja by było zapamiętanie stanu przekaźników po wyłączeniu zasilania i ponownym włączeniu. Można do tego chyba wykorzystać EPROM. Dzięki wielkie za pomoc

3

W sensie nie chcesz wydać na nową pralkę więc liczysz, że ktoś odwali za ciebie robotę ? Kupno pralki będzie tańsze niż zlecenie.

0

Nie tylko przekaźniki są do oprogramowania , musisz przemyśleć jak będziesz wybierał program , START/STOP, może jakiś wyświetlacz itp.
Na pewno zabawa bedzie przednia i wiele się nauczysz ja bym jednak nie liczył że ktoś odwali robotę za Ciebie.

Ewentualnie poszukał bym czegoś gotowego , moze cos mozna zadoptowac np. jakis KIT AVT ?

0

Panowie spokojnie nie o to mi chodzi. Nie trzeba pisać programu całej pralki. Chodzi mi tylko o to żeby pokrętło z wyborem 16 programów zastąpić arduino z enkoderem. Programy są zapisane w sterowniki pralki a mi chodzi jedynie o ich wybór co jest realizowane za pomocą odpowiednio zawieranych blaszek. Mam jedynie problem z enkoderem gdyż nie wiem jak rozwiązać problem ograniczenia się z obrotami enkodera w zakresie od 1 do 16. Np 5 obrotów w prawo odpowiadają 6 programowi a 7 w tył odpowiada 16 programowi. .

2

Mam jedynie problem z enkoderem gdyż nie wiem jak rozwiązać problem ograniczenia się z obrotami enkodera w zakresie od 1 do 16. Np 5 obrotów w prawo odpowiadają 6 programowi a 7 w tył odpowiada 16 programow

Zakładam, żę oryginalne pokrętło (a także sterownik) nie dają żadnego feedbacku w zakresie tego, co wykręciłeś sobie fabrycznym pokrętłem - w sensie że po prostu masz pokrętło z jakąś strzałką oraz nadrukowane na obudowie opisy i to, na co wskazuje strzałka z pokrętła jest aktualnym programem. Jeśli tak, to moim zdaniem najbezpieczniej by było dołożyć jakiś malutki ekranik - coś w stylu https://botland.com.pl/wyswietlacze-segmentowe-i-matryce-led/6281-wyswietlacz-7-segmentowy-x2-10mm-czerwony-wsp-katoda-5904422309176.html

Tematy do przemyślenia:

  • odporność arduino na temperatury i wilgotność
  • zasilenie arduino
  • z racji drgań - nie stosuj "wciskanych" kabelków, tylko wszystko lutuj i zalej jeszcze ciepłym klejem
  • może pójdźmy na bogato - zamiast Arduino daj ESP32 i steruj pralką przez WiFi?

Możesz spróbować zrobić to enkoderem bez ekranu, ale jest ryzyko, że coś się rozkalibruje/rozjedzie. Moim zdaniem opcja z ekranem, który Ci pokaże aktualnie wybrany numer programu jest najbezpieczniejsza - wiesz, że chcesz właczyć program 12 i taka właśnie informacja poszła do sterownika pralki.

1

Spróbuj być samodzielny i użyj MOCY... znaczy się "gugla"... Podaj model pralki itp. itd.

W sieci różnych programatorów widziałem już przynajmniej kilka:

A tak poza wszystkim sprawdź tu (masz ponad 1700 różnych programatorów krzywkowych)

0

@katakrowa: Szukałem oryginalny albo zamiennik niedostępny. Mastercook spfd 1064.
@cerrato: Na pralce jest wyświetlacz i pokazuje na aktualnie wybrany program więc wyświetlacza dodatkowego nie trzeba. Jeśli chodzi o hermetyczność i zasilanie to już mam ogarnięte.
Po prostu nie mogę znaleźć info na temat tego enkodera żeby ograniczyć jego liczenie do 16 i napisanie linijki aby do każdej liczby od 1 do 16 przypisać daną kombinacje załączenia przekaźników.

1
trimsus napisał(a):

Po prostu nie mogę znaleźć info na temat tego enkodera żeby ograniczyć jego liczenie do 16 i napisanie linijki aby do każdej liczby od 1 do 16 przypisać daną kombinacje załączenia przekaźników.

Enkoder sam z siebie nic nie zlicza. To w swoim programie musisz zliczać impulsy z enkodera i ograniczać wartość jakiejś zmiennej do wartości MIN/MAX.
Detekcja obrotów w lewo np. zmniejsza wartość zmiennej a w prawo zwiększa... Jak dojdziesz do max to już nie zwiększasz....
Zobacz sobie jakikolwiek poradnik jak obsłużyć enkoder na AVR np.: https://www.leniwiec.org/2014/04/28/enkoder-obrotowy-w-praktyce-prawidlowe-podlaczenie-do-mikrokontrolera-avr/

0

R-C-1-1A-2-2A16-6-A-250VAC-R-C-1-1A-2-2A16-DIP.jpg_Q90.jpg_.webpTakie coś się rozpadło w środku jest krzywka i 4 styki. Właśnie to chce zastąpić. Niestety to co na zdjęciu nie odpowiada oryginałowi

0

@katakrowa: no właśnie o to mi chodzi aby to programowo ogarnąć.

1
trimsus napisał(a):

@katakrowa: no właśnie o to mi chodzi aby to programowo ogarnąć.

No inaczej nawet się nie da...

Możesz to zrobić np. tak:

(...)

volatile int wartoscPozycji = 0 ;

void limituj(){
  if ( wartoscPozycji < 0  ) wartoscPozycji = 15 ;
  if ( wartoscPozycji > 15  ) wartoscPozycji = 0 ;
}


ISR(INT0_vect ) 
{ 
	if(!bit_is_clear(PIND, PD3)) 
	{ 
		wartoscPozycji++;
	} 
	else 
	{ 
		wartoscPozycji--;
	} 
    limituj();
} 

//INT1 interrupt 
ISR(INT1_vect ) 
{ 
	if(!bit_is_clear(PIND, PD2)) 
	{ 
		wartoscPozycji++;
	} 
	else 
	{ 
		wartoscPozycji--;
	} 
    limituj();
}

(...)

0

@katakrowa: Dzięki wielkie za pomoc. Przy kompilacji wyrzuca mi błąd przy ISR INT0 i 1

2
trimsus napisał(a):

@katakrowa: Dzięki wielkie za pomoc. Przy kompilacji wyrzuca mi błąd przy ISR INT0 i 1

Ja Ci podałem jedynie przykład / ideę rozwiązania problemu. Raczej nie ma szans żeby bezmyślne copy/paste zadziałało tym bardziej, że nawet nie mam pojęcia na jakim ukłądzie to robisz, do jakich pinów się wpiąłeś itd... Przeanalizuj co się dzieje w kodzie i w artykule, który Ci podesłałem a następnie odpowiednio dostosuj to do swojego układu.
Ewentualnie wrzuć tu schemat ideowy swojego układu.

0

kanały A i B enkodera ma wpięte w piny 2 i 3 arduino uno a przekaźniki w piny od 10 do 13.

3
trimsus napisał(a):

kanały A i B enkodera ma wpięte w piny 2 i 3 arduino uno a przekaźniki w piny od 10 do 13.

OK... ale z czym masz problem?
Na jakie ze swoich pytań nie znalazłeś odpowiedzi pod linkiem, który już Ci wysłałem: https://www.leniwiec.org/2014/04/28/enkoder-obrotowy-w-praktyce-prawidlowe-podlaczenie-do-mikrokontrolera-avr/

To naprawdę fajne opracowanie i nawet zrobili przykład na tych samych pinach co u Ciebie.
Nie zgaduj tylko zapoznaj się z tym materiałem, zrozum zasadę działania i oprogramuj jak trzeba.

1 użytkowników online, w tym zalogowanych: 0, gości: 1