Go Down

Topic: comandare relè (relay) per accendere un led (Read 1 time) previous topic - next topic

aureliusss

Oct 19, 2012, 03:30 pm Last Edit: Oct 20, 2012, 12:41 am by UweFederer Reason: 1
ciao a tutti, vorrei comandare con arduino un relè, che se collegato accende un led. so che è una cosa abbastanza stupida ma non capisco perchè il led non si accenda. ho seguito lo schema che si trova qui http://www.arduino.cc/playground/uploads/Main/relays.pdf
ma non avend le stesse parti indicate nello schema ho usato come diodo l'1N4007, bjt BC547, relay SANYOU DSY2Y-S-205L di cui vi allego il datasheet http://www.datasheetdir.com/DSY2Y-S-205L+Solid-State-Relays.
[alla base del bjt ho collegato una resistenza di 7.8KOhm ( (10k||4.7k)+4.7k)]

al pin 8 del relay ho collegato una resistenza da 330Ohm e led rosso

questo è lo schema del circuito

questo il codice che ho scritto
Code: [Select]
#define RELAY_PIN 3
#define led_pin 9
void setup()
{
  pinMode(led_pin, OUTPUT);
  pinMode(RELAY_PIN, OUTPUT);
  Serial.begin(9600); // open serial
  Serial.println("Press the spacebar to toggle relay on/off");
}

void loop()
{
  static int relayVal = 0;
  int cmd;
 
  while (Serial.available() > 0)
  {
    cmd = Serial.read();
     
    switch (cmd)
    {
    case ' ':
      {
        relayVal ^= 1; // xor current value with 1 (causes value to toggle)
        if (relayVal)
          Serial.println("Relay on");
        else
          Serial.println("Relay off");
        break;
      }
    default:
      {
        Serial.println("Press the spacebar to toggle relay on/off");
      }
    }
     
    if (relayVal){
      digitalWrite(RELAY_PIN, HIGH);
      digitalWrite(led_pin, HIGH);
    }
    else
      {
        digitalWrite(RELAY_PIN, LOW);
        digitalWrite(led_pin, LOW);
      }
    }
}

Michele Menniti

il codice racchiudilo tra i tag
Code: [Select]
altrimenti non si capisce niente.
A mio avviso il problema è che stai usando una R di base troppo elevata, portala ad 1k e vedrai che il TR condrrà regolarmente, il relé si eccita ed il LED si accende, sempre che il codice sia corretto; non capisco perché attivi anche il pin 9 assieme al relé, lo metto in OUTPUT/HIGH fisso, tanto al led arriva tensione solo se il relé si eccita.
Guida alla programmazione ISP e seriale dei micro ATMEL (Caricare bootloader e sketch):
http://www.michelemenniti.it/Arduino_burn_bootloader.php
Guida alla Programmazione ATmega328 noP:
http://www.michelemenniti.it/atmega328nop.html
Articoli su Elettronica In:
http://www.michelemenniti.it/elettronica_in.html

uwefed

Il relé non ha bisogno che lo colleghi al pin9. Collega il contatto del relé , in serie alla resistenza 300 Ohm e il LED tra +5V e Massa. Collega il pin 4 del relé non al pin 9 del Arduino ma a +5V

Ciao Uwe




Michele Menniti

Esatto, invece di lasciare il pin sempre attivo tanto vale collegare la R direttamente a 5V
Guida alla programmazione ISP e seriale dei micro ATMEL (Caricare bootloader e sketch):
http://www.michelemenniti.it/Arduino_burn_bootloader.php
Guida alla Programmazione ATmega328 noP:
http://www.michelemenniti.it/atmega328nop.html
Articoli su Elettronica In:
http://www.michelemenniti.it/elettronica_in.html

Go Up
 


Please enter a valid email to subscribe

Confirm your email address

We need to confirm your email address.
To complete the subscription, please click the link in the email we just sent you.

Thank you for subscribing!

Arduino
via Egeo 16
Torino, 10131
Italy