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

Napisanie programu do Arduino aby sterował przekaźnikiem.

Davvvi 07 Wrz 2017 17:14 2457 45
  • #1 07 Wrz 2017 17:14
    Davvvi
    Poziom 27  

    Witam. Posiadam Arduino nano(klon). Niestety programowanie to nie moja bajka. Chciałbym prosić o pomoc bądź napisanie programu do Arduino. Chodzi o to aby Arduino po podaniu zasilania poczekało 3-4sec.,potem załączyło przekaźnik 5V na 1-2 sec i po upłewie tego czasu wyłączyło przekaźnik i tyle. Pomoże ktoś?

    0 29
  • #4 07 Wrz 2017 18:03
    Davvvi
    Poziom 27  

    Kolego Wojciech.dokładnie jak piszesz. Ponowne uruchomienie Arduino to reset zasilaniem. Chciałbym aby po każdym podłączeniu zasilania Arduino czekało 3 sec ,załączało przekaźnik na 1 sec.i go rozłączałao aż do ponownego rozłączenia i podłączenia zasilania

    0
  • #6 07 Wrz 2017 19:00
    Davvvi
    Poziom 27  

    @Wojciech. Dzięki kolego za kod. Wiem że zadam głupie pytanie ale Arduino nie jest mocną stroną. Możesz napisać dokładnie pod które piny podłączyć przekaźnik?

    0
  • #8 07 Wrz 2017 19:15
    Davvvi
    Poziom 27  

    Przekaźnik mam 5V., 0.01A.Przekaźnik został wy lutowany z tej przystosowanej płytki od Arduino. niestety płytką zajął się pies i tylko przekaźniki odzyskałem.

    0
  • #9 07 Wrz 2017 19:38
    krzysiek_krm
    Poziom 34  

    Wojciech. napisał:
    @Davvvi

    Wystarczy w głównej pętli dać warunek

    int licznik=0;
    void setup(){
    pinMode(pin, OUTPUT);
    }
    void loop(){

    if(licznik=0){

    delay(3000);
    digitalWrite(pin, HIGH);
    delay(1000);
    digitalWrite(pin, LOW);
    licznik++;
    }
    }

    Nie chcę się czepiać, ale ta kombinacja jest chyba niepotrzebna.
    Ponieważ akcja ma się wykonać jeden raz, chyba wystarczy kod umieścić w "setup" a "loop" zostawić puste, niech się kręci w kółko nic nie robiąc.
    Brakuje mi niestety wiedzy, w jaki sposób ten procesor ustawia zatrzaski wyjściowe po resecie: LOW, HIGH, a może w ogóle ten stan jest niezdefiniowany.

    Nie zapomnij zablokować diodą przepięć na cewce przekaźnika.

    0
  • #10 07 Wrz 2017 19:49
    Davvvi
    Poziom 27  

    Narazie testuje to na diodzie która jest na Arduino i nic.Wklejam kod,zmieniam napis pin na LED_BUILTIN. Potem sprawdzam kompilacje i jest w porządku. Wgrywam,po czym wgrywanie mam zakończone. Pod piny GND i VIN mam dolutowany osobny kabel USB aby nie było danych. Same zasilanie. Po wgraniu kompilacji i podłączeniu zasilania zapal się dioda czerwona odrazu na chwilkę i gaśnie. To wszystko. Nie czeka 3 sekund.

    0
  • #11 07 Wrz 2017 19:58
    krzysiek_krm
    Poziom 34  

    Davvvi napisał:
    Narazie testuje to na diodzie która jest na Arduino i nic.Wklejam kod,zmieniam napis pin na LED_BUILTIN. Potem sprawdzam kompilacje i jest w porządku. Wgrywam,po czym wgrywanie mam zakończone. Pod piny GND i VIN mam dolutowany osobny kabel USB aby nie było danych. Same zasilanie. Po wgraniu kompilacji i podłączeniu zasilania zapal się dioda czerwona odrazu na chwilkę i gaśnie. To wszystko. Nie czeka 3 sekund.

    Do VIN trzeba chyba dołączać nieco wyższe napięcie ponieważ po drodze jest regulator 5 V, na wszelki wypadek sprawdź w dokumentacji.
    Możesz chwilę poczekać po wgraniu i uruchomieniu programu, również powinien działać (przy zasilaniu z USB).

    0
  • #12 07 Wrz 2017 20:18
    Davvvi
    Poziom 27  

    Przy zasilaniu przez miniUSB jest to samo. Dioda tylko chwile mignie na samym początku i nie działa. Gdy wgrywam przykład z Arduino ide "Blin" to dioda sobie mruga ,i nie ma znaczenia czy jest zasilanie jest przez miniUSB czy VIN. Chyba,że źle jakoś wklejam. Arduino to dla mnie czarna magia trochę. A ja chciałem zrobić na nim aktywne tylne podświetlenie monitora, jak taka błachostka to dla mnie spory problem.

    0
  • #13 07 Wrz 2017 20:24
    krzysiek_krm
    Poziom 34  

    Jest błąd, zamiast if(licznik=0) ma być if(licznik==0)

    0
  • #15 07 Wrz 2017 20:31
    Davvvi
    Poziom 27  

    No i teraz działa. Na samym początku ,jak podłącze zasilanie jest mimo wszystko bardzo szybkie mignięcie tej czerwonej diody. Czy da się to jakoś zlikwidować? Albo może zmiana używanego pina spowoduje że tego efektu nie będzie?

    0
  • #16 07 Wrz 2017 20:47
    Wojciech.
    Poziom 31  

    krzysiek_krm napisał:
    Jest błąd, zamiast if(licznik=0) ma być if(licznik==0)


    Oczywiście, racja.
    krzysiek_krm napisał:
    Nie chcę się czepiać, ale ta kombinacja jest chyba niepotrzebna.


    Oczywiście że tak, ale według mnie jest to bardziej zrozumiałe dla ludzi którzy pierwszy raz sięgają po arduino/.

    Dodano po 1 [minuty]:

    Davvvi napisał:
    Czy da się to jakoś zlikwidować? Albo może zmiana używanego pina spowoduje że tego efektu nie będzie?


    To jest bodajże efekt bootloadera.

    0
  • #17 07 Wrz 2017 21:02
    krzysiek_krm
    Poziom 34  

    Davvvi napisał:
    No i teraz działa. Na samym początku ,jak podłącze zasilanie jest mimo wszystko bardzo szybkie mignięcie tej czerwonej diody. Czy da się to jakoś zlikwidować? Albo może zmiana używanego pina spowoduje że tego efektu nie będzie?

    Spróbuj podłączyć się pod inny pin, rzeczywiście ta wbudowana dioda chyba miga "sama z siebie" podczas rozruchu.
    Jeżeli będziesz podłączał diodę nie zapomnij o szeregowym oporniku
    http://mikrokontrolery.blogspot.com/2011/03/Dioda-LED-obliczanie-rezystora-kalkulator.html

    0
  • #18 07 Wrz 2017 22:40
    Davvvi
    Poziom 27  

    Dobra zmieniłem pin i efekt mrugnięcia diody nie występuje. Diody nie będę podłączał. Przekaźnik ma zasymulować wciśnięcie na sekundę przycisku power aby sprzęt się uruchomił i tyle. Taki efekt mnie zadowala jaki jest. Dzięki Panowie. Pozdrawiam.

    Dodano po 1 [godziny] 24 [minuty]:

    Panowie Arduino oczywiście spełniło swoje zadanie ale mam kilka pytań . Czy jest możliwość zamiast przekaźnika puszczenie na którymś z pinów około 1.7Volta? Jest może coś mniejszego od Arduino nano ale w podobny sposób programowalne?

    0
  • #19 08 Wrz 2017 01:35
    krzysiek_krm
    Poziom 34  

    Davvvi napisał:
    Czy jest możliwość zamiast przekaźnika puszczenie na którymś z pinów około 1.7Volta?

    Nie wiem co masz dokładnie na myśli, w tym drugim z Twoich tematów napisałem, że przekaźnik jest dość "nieporęczny", można zamiast niego użyć transoptora. Jego obwód wejściowy podłącza się jak zwyczajną diodę świecącą - przez szeregowy opornik. Do obliczenia wartości rezystancji będzie Ci potrzebne Vf diody wejściowej transoptora oraz jej prąd (If), dalej jak dla diody świecącej:
    http://mikrokontrolery.blogspot.com/2011/03/Dioda-LED-obliczanie-rezystora-kalkulator.html
    Jeżeli użyjesz transoptora z wyjściem tranzystorowym, kolektor obwodu wyjściowego musi być na wyższym potencjale niż emiter, chodzi o podłączenie go równolegle do przycisku załączającego Twoje urządzenie.

    0
  • #20 08 Wrz 2017 10:23
    Davvvi
    Poziom 27  

    Kolego jeśli można to z tym transoptorem wróćmy do tego drugiego tematu aby nie było,że wyszlißmy poza temat.

    Co do tematu. Arduino ma lekki czas zwłoki po podaniu zasilania więc czas oczekiwania na włączenie przekaźnika także zmieniłem na 1sec. Teraz działa wyśmienicie.
    Ponawiam pytanie czy są jakieś mniejsze wersje Arduino,ale tak samo programowalne?

    0
  • #21 08 Wrz 2017 13:39
    EuroGenio
    Poziom 18  

    Zupełnie w taki sam sposób programowalne to Micro Pro 16MHz 5 V (złącze USB Micro) wymiary ok 35x18x5 mm.

    0
  • #22 08 Wrz 2017 14:34
    krzysiek_krm
    Poziom 34  

    EuroGenio napisał:
    Zupełnie w taki sam sposób programowalne to Micro Pro 16MHz 5 V (złącze USB Micro) wymiary ok 35x18x5 mm.

    W sensie rozmiaru zysk nie jest zbyt wielki.
    Program sterujący tym włącznikiem jest na tyle banalny, że możesz (moim zdaniem) poprosić któregoś z kolegów z elektrody żeby napisał i zaprogramował jakiś "goły" procesor typu AtTiny, skonfigurowany do pracy z wewnętrznym oscylatorem. W efekcie będziesz miał maleńki układ, do którego dołożysz kondensator do filtrowania zasilania, i tyle.

    0
  • #25 08 Wrz 2017 15:50
    krzysiek_krm
    Poziom 34  

    Wojciech. napisał:
    W sumie nie ma co się bawić z ATtiny jak za 9 zł można mieć już całą płytke pro mini z ATmega328p ze wszystkimi peryferiami, stabilizatorami itd.

    Zapewne, jednak autorowi chodzi o układ jak najmniejszy.
    Po co mu te peryferia, itd, jeżeli potrzebny jest (słownie) jeden pin.

    0
  • #26 08 Wrz 2017 16:34
    PiotrPitucha
    Poziom 33  

    Witam
    Oczywiście Digispark dużo mniejszy i też zadziała :)
    Jeszcze mniejszy Attiny10 ale to już trzeba programować w C lub assemblerze.
    Jak ma być małe i prosto to z Digispark można wydłubać procesor po zaprogramowaniu i gotowe :).
    Pozdrawiam

    0
  • #27 08 Wrz 2017 17:28
    Davvvi
    Poziom 27  

    ten Digispark mi wystarczy. Zależy mi tylko na jednym pinie. Chcę mały aby zmieścił się w obudowę tego czym ma sterować. Ten Digispark zaprogramuję tak samo? Zasilany byłby zasilaczem stabilizowanym 5V,3A. Tym samym co urządzenie którym Arduino teraz steruje i to działa.

    0
  • #28 08 Wrz 2017 21:37
    PiotrPitucha
    Poziom 33  

    Witam
    Digispark fizycznie lekko inaczej się programuje, startujesz programowanie i dopiero potem wtykasz go w USB.
    Oczywiście musisz mieć zainstalowane drivery ale pewnie do tego dojdziesz :)
    Pozdrawiam

    0
  • #29 09 Wrz 2017 14:22
    Davvvi
    Poziom 27  

    Poczytałem trochę o tym Digisparku i nie jestem pewien czy się nada. Problem jest taki,że Digispark po podaniu zasilania czeka na program ,jeśli go nie wykryje dopiero wtedy uruchamia wgrany program. Ciekawe tylko ile czeka? I jak to działa jeśli zostanie podłączone tylko zasilanie ? Czy wtedy też czeka?

    0
  • #30 09 Wrz 2017 15:38
    drobok
    Poziom 28  

    attiny13 zajmował by połowe z tego co ten digispark. Abstrachując od ewektualnych pętli, funkcji, złego nawyku używania funkcji delay, oraz nie definiowania zegara w programie ten bardzo trudny kod w c (uproszczony do granic możliwości) wyglądałby tak:

    Kod: c
    Zaloguj się, aby zobaczyć kod

    A cały schemat składałby się z attiny, kondensatora między vcc/gnd, rezystora podciągającego reset do vcc, i ewentualnego tranzystora (+2rezystorów do ustalenia punktu pracy) - gdzie w w/w układach też ich nie ma. Wtyk usb można zrobić za pomocą laminatu, do tego dioda zabezpieczająca. Całość kosztowała by 3zł - niestety wymaga choćby usbasp by wgrać program. Za to nie łazi w kółko jak arduino.

    PS. kod od wojciecha ma złe założenie, zmienna licznik się przekręci co spowoduje że program będzie się wykonywać cyklicznie :P

    0