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