Skocz do zawartości

Sterowanie przekaźnikiem za pomocą radia


Huhet

Pomocna odpowiedź

Witam, 

Mam pytanko. Buduję autko i potrzebuję sterować 4 kanałowym przekaźnikiem. piny na nim to GND-IN1-IN2-IN3-IN4-VCC. Piny GND i VCC podłączam pod GND i 5V na płytce UNO. IN1 do D0, IN2 do D1 itd. Autko jest sterowane przez moduł odbiornika radiowego. Pilot działa, bo po wgraniu Receiver'a z biblioteki VirtualWire coś tam odbiera. Niestety nie są to dokładnie te rzeczy, które wysyłam, a jakieś liczby.

 

Problem jest teraz taki, że Arduino nie chce sterować przekaźnikiem. Z podglądu widać, że antena działa, nawet rozpoznaje to, co jest przez pilot wysyłane, ale przekaźnik milczy. Sprawdzałem go na krótko podłączając przewód IN1 do GND na płytce i bez problemu zatrybiło. 

 

#include <VirtualWire.h>
#include <VirtualWire_Config.h>
#define receive_pin 8

void setup()

{
//pinMode(LED_BUILTIN, OUTPUT);
pinMode(0, OUTPUT);
pinMode(1, OUTPUT);
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
  digitalWrite(0, HIGH);
  digitalWrite(1, HIGH);
  digitalWrite(2, HIGH);
  digitalWrite(3, HIGH);


Serial.begin(9600);
Serial.println("setup");
vw_set_rx_pin(receive_pin); // sustawienie pinu odbiuoru danych
vw_setup(2000); // Bits per sec
vw_rx_start(); // zacznij nasłuchiwać
}
void loop()
{
 int i;

    uint8_t buf[VW_MAX_MESSAGE_LEN];
    uint8_t buflen = VW_MAX_MESSAGE_LEN;

    if (vw_get_message(buf, &buflen)) // Non-blocking
    {
  

        digitalWrite(13, true); // Flash a light to show received good message
  // Message with a good checksum received, dump it.
  
  for (i = 0; i < buflen; i++)
  {
      Serial.print(buf[i]);
     
  }
  Serial.println("");
        digitalWrite(13, false);
    }
  Serial.print("buf[0] = ");    
  Serial.println(buf[0]);
 
  if (buf[0] == 70){
         Serial.println("Warunek spelniony");
         digitalWrite(0, LOW);
         delay(500);
         digitalWrite(0, HIGH);
         delay(500);
         }
 delay(1000);

}

To mam z podglądu:

 

setup
buf[0] = 0
buf[0] = 0
buf[0] = 0
buf[0] = 0
buf[0] = 0
70                  <- Tu został Wciśnięty guzik na pilocie
buf[0] = 70
Warunek spelniony
70
buf[0] = 70
Warunek spelniony
70
buf[0] = 70
Warunek spelniony
70
buf[0] = 70
Warunek spelniony

 

 

Ktoś ma jakiś pomysł, jak to rozegrać?

Link do komentarza
Share on other sites

Jeśli podłączyłeś przekaźnik indukcyjny bezpośrednio pod pin arduino to nie ma co się dziwić, że nie działa. Przekaźniki zazwyczaj potrzebują więcej prądu/napięcia do przełączania styków. Bezpośrednie podłączenie może spowodować nawet uszkodzenie pinów arduino. Potrzebujesz tranzystorów do wysterowania przekaźnika, które będą w stanie dostarczyć potrzebną ilość prądu do prawidłowego przełączania. Warto również zastosować diodę przylutowaną pomiędzy stykami przekaźnika w kierunku zaporowym co zapobiegnie zakłóceniom zasilania powodowanym przez cewkę przekaźnika.

Jeśli jest to przekaźnik półprzewodnikowy, który nie wymaga dużego prądu do przełączania zapewne napięcie jest zbyt niskie. W tym przypadku należy zastosować odpowiednio wyższe napięcie zasilanie i tak jak w przypadku z przekaźnikiem indukcyjnym zastosować tranzystor do sterowania.

Wszystkiego co niezbędne do poprawnego zastosowania elementów i urządzeń elektronicznych należy szukać w ich notach katalogowych i ściśle stosować się do zaleceń producentów.

Możesz też sprawdzić czy arduino na pewno przełącza podłączając diodę led z rezystorem w miejsce przekaźnika bo może się okazać, że po pierwszych próbach piny zostały uszkodzone.

Link do komentarza
Share on other sites

3 minuty temu, atMegaTona napisał:

Jeśli podłączyłeś przekaźnik indukcyjny bezpośrednio pod pin arduino

Z opisu można wywnioskować że to moduł a nie goły przekaźnik... tak że cały Twój wywód o diodach, tranzystorach i tym podobnych firdymałkach można OKDR. A na kod to nawet nie spojrzałeś, bo po co?

A powód jest prawdopodobnie prosty: nie można używać jednocześnie Serial i pinów 0 i 1. Po prostu - te piny to nic innego jak wejście/wyjście Serial i nic dziwnego, że nie ma zamiaru jednocześnie na tych samych pinach gadać z Tobą po serialu i machać przekaźnikami.

@Huhet zmień D0 i D1 na jakiekolwiek inne piny (np. D4 i D5).

  • Lubię! 1
  • Pomogłeś! 1
Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

(edytowany)
6 minut temu, ethanak napisał:

Z opisu można wywnioskować że to moduł a nie goły przekaźnik... tak że cały Twój wywód o diodach, tranzystorach i tym podobnych firdymałkach można OKDR. A na kod to nawet nie spojrzałeś, bo po co?

A powód jest prawdopodobnie prosty: nie można używać jednocześnie Serial i pinów 0 i 1. Po prostu - te piny to nic innego jak wejście/wyjście Serial i nic dziwnego, że nie ma zamiaru jednocześnie na tych samych pinach gadać z Tobą po serialu i machać przekaźnikami.

@Huhet zmień D0 i D1 na jakiekolwiek inne piny (np. D4 i D5).

Właśnie tak zrobiłem - z pinów D0:D3 zmieniłem na D9:D12 i problem jakby został rozwiązany. 

Masz też rację, co do przekaźnika. Źle sformułowałem to i wprowadziłem atMegaTona w błąd. Faktycznie nie jest to goły przekaźnik a "Moduł przekaźnika", który jest dostosowany by móc nim sterować bezpośrednio z poziomu mikrokontrolera. Przepraszam za zamieszanie 🙂

 

atMegaTona - O kant D rozbić 😛

Edytowano przez Huhet
Link do komentarza
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.