Elektroda.pl
Elektroda.pl
X
Relpol przekaźniki nadzorczeRelpol przekaźniki nadzorcze
Proszę, dodaj wyjątek dla 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.

07 Wrz 2017 17:14 3162 45
  • 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ś?
  • Relpol przekaźniki nadzorczeRelpol przekaźniki nadzorcze
  • 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
  • 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?
  • 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.
  • Poziom 37  
    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.
  • Relpol przekaźniki nadzorczeRelpol przekaźniki nadzorcze
  • 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.
  • Poziom 37  
    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).
  • 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.
  • Poziom 37  
    Jest błąd, zamiast if(licznik=0) ma być if(licznik==0)
  • 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?
  • Poziom 33  
    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.
  • Poziom 37  
    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
  • 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?
  • Poziom 37  
    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.
  • 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?
  • Poziom 18  
    Zupełnie w taki sam sposób programowalne to Micro Pro 16MHz 5 V (złącze USB Micro) wymiary ok 35x18x5 mm.
  • Poziom 37  
    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.
  • Poziom 37  
    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.
  • 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
  • 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.
  • 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
  • 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?
  • Poziom 32  
    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