Elektroda.pl
Elektroda.pl
X
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Napisanie programu do Arduino aby sterował przekaźnikiem.

Davvvi 07 Sep 2017 17:14 5139 45
Relpol
  • #1
    Davvvi
    Level 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ś?
    Do you have a problem with Arduino? Ask question. Visit our forum Arduino.
  • Relpol
  • Relpol
  • #4
    Davvvi
    Level 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
  • #6
    Davvvi
    Level 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?
  • #8
    Davvvi
    Level 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.
  • #9
    krzysiek_krm
    Level 40  
    Wojciech. wrote:
    @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.
  • #10
    Davvvi
    Level 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.
  • #11
    krzysiek_krm
    Level 40  
    Davvvi wrote:
    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).
  • #12
    Davvvi
    Level 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.
  • #13
    krzysiek_krm
    Level 40  
    Jest błąd, zamiast if(licznik=0) ma być if(licznik==0)
  • #15
    Davvvi
    Level 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?
  • #16
    Wojciech.
    Level 35  
    krzysiek_krm wrote:
    Jest błąd, zamiast if(licznik=0) ma być if(licznik==0)


    Oczywiście, racja.
    krzysiek_krm wrote:
    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 wrote:
    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.
  • #17
    krzysiek_krm
    Level 40  
    Davvvi wrote:
    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
  • #18
    Davvvi
    Level 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?
  • #19
    krzysiek_krm
    Level 40  
    Davvvi wrote:
    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.
  • #20
    Davvvi
    Level 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?
  • #21
    EuroGenio
    Level 18  
    Zupełnie w taki sam sposób programowalne to Micro Pro 16MHz 5 V (złącze USB Micro) wymiary ok 35x18x5 mm.
  • #22
    krzysiek_krm
    Level 40  
    EuroGenio wrote:
    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.
  • #25
    krzysiek_krm
    Level 40  
    Wojciech. wrote:
    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.
  • #26
    PiotrPitucha
    Level 34  
    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
  • #27
    Davvvi
    Level 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.
  • #28
    PiotrPitucha
    Level 34  
    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
  • #29
    Davvvi
    Level 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?
  • #30
    User removed account
    Level 1