Vai al contenuto

Messaggi consigliati

Inserita:

I moduli sono arrivati. Avevo preso una decina di driver a mosfet ed una scheda di potenza a relè. 

Pensavo di usare la scheda a relè che se ho capito bene va pilotata in negativo. 

Allego le foto:

Screenshot_20251227-032848.thumb.jpg.5364879252c9e4a3c5c19b415ef13e1e.jpgScreenshot_20251227-032554.thumb.jpg.cf9bd387a774af72e61456483e4ac199.jpg

Nel caso usassi la scheda a relè va collegata come segue?

badcb5019144f9adfa1ae0f2cfc27b05ca8a5fe8.thumb.jpeg.6bc5dbe7ec79777012ee026403e9a257.jpeg

Inserita:

@Livio Orsini Con la scheda relè dovrei usare due alimentazioni: una per arduino e una per la scheda relè. Difatti per innescare tutti quei relè credo non andrebbe bene direttamente per le uscite di Arduino. 

Inoltre andrebbe cambiato il programma per avere le uscite su high all'inizio. 

Inserita:

Non conviene mai prelevare l'alimentazione dei relè direttamente da arduino, oltre a sovraccaricare il regolatore della scheda c'è il rischiuo che ad ogni commutazione il programma di arduino vada a farfalle.

Invertire lo stato iniziale delle uscite non è un problema, lo stabilisci nella funzione di inizializzazione.

Inserita:

Grazie Livio, quindi basta impostare le uscite come hight all'inizio e poi mandarle come low. 

Nel programma che mi funzionava quindi inverto hight con low. 

Come mai questa scelta dei costruttori di pilotare in negativo? Visto che gnd non andrebbe collegato perché lo mettono? 

Inserita:

Si basta fare così. Ti metto anche un esempio.

 

void setup() 
{
  pinMode(LED, OUTPUT);     
  pinMode(RFM95_RST, OUTPUT);
  digitalWrite(RFM95_RST, HIGH);
 
  while (!Serial);
  Serial.begin(9600);
  delay(100);
............
}

 

1 ora fa, Leone2285 ha scritto:

Come mai questa scelta dei costruttori di pilotare in negativo? Visto che gnd non andrebbe collegato perché lo mettono? 

 

Non saprei, bisognerebbe avere le specifiche della scheda e gli schemi elettrici. Prova a mettere il link di dove li hai comprati, che do un'occhiata ai dati e, magari, riesco a risalire al sito del produttore e trovare la documentazione.

Inserita:

Sono anche opto isolati, a maggior ragione è da usarsi l'alimentazione separata.

Nelle versioni con 1, 2 e 4 relè hanno spazio suffciente per scegliere il comando con livello basso o con livello alto, tramite jumper; qui probabilmente non son riusciti a farci stare la selezione (è solo una mia ipotesi). 

Inserita:

Hai idea del bordello di clickyticlick dai relè? Almeno prendili solid-state.

Inserita:
34 minuti fa, Livio Orsini ha scritto:

Nelle versioni con 1, 2 e 4 relè hanno spazio suffciente per scegliere il comando con livello basso o con livello alto, tramite jumper; qui probabilmente non son riusciti a farci stare la selezione (è solo una mia ipotesi). 

Avevo visto quello a 4 relè ed era sempre con logica negativa. 

 

27 minuti fa, Dumah Brazorf ha scritto:

Hai idea del bordello di clickyticlick dai relè? Almeno prendili solid-state.

Ciao Dumah, in realtà quel ciclo vorrei farlo solo all'inizio per poi rimanere sempre accesi. Il ciclo eventualmente lo farei partire come quello di un frigo. 

Questo per me è un prototipo anche perché non avevo mai usato Arduino. In futuro se farò dei giochi più ripetitivi e variegati terrò a mente questo consiglio. 

Inserita:

Grazie al vostro aiuto, Livio in particolare, sono riuscito a pilotare la scheda relè. Lo schema di collegamento è quello che avevo linkato. Alimentazioni separate tra Arduino e scheda relè. 

Poi aggiungo lo sketch del programma che ho usato.

Inserita:
1 ora fa, Leone2285 ha scritto:

Alimentazioni separate tra Arduino e scheda relè. 

 

Hai usato 2 alimentatori differenti?

 

14 ore fa, Leone2285 ha scritto:

Avevo visto quello a 4 relè ed era sempre con logica negativa. 

 

Credevo di averne un paio in casa, invece ho solo quelle a 1 e 2 relè; queste sicuramente hanno la scelta tra comando positivo e comando negativa. Comunque hai visto che invertire la logica di comando è semplicissimo quando si usa un sistema programmabile.

Inserita:
7 ore fa, Livio Orsini ha scritto:

Hai usato 2 alimentatori differenti?

Si, una per Arduino e una per la scheda relè. Al pilotaggio della scheda relè ho dato i 5V di Arduino su Vcc mentre i pin digitali da 2 a 9 li ho collegati da in1 a in8, GND di Arduino non è stato collegato.

Poi ho tolto il jumper che ponticellava Vcc a jdVcc e ho collegato la seconda alimentazione, negativo su GND e positivo su jdVcc. 

Inserita:

// Definisci i pin per i LED (8 LED)
const int ledPin1 = 2;
const int ledPin2 = 3;
const int ledPin3 = 4;
const int ledPin4 = 5;

const int ledPin5 = 6; 

const int ledPin6 = 7; 

const int ledPin7 = 8; 

const int ledPin8 = 9;

// Array per gestire i pin in modo più efficiente
const int ledPins[] = {ledPin1, ledPin2, ledPin3, ledPin4, ledPin5,  ledPin6, ledPin7,  ledPin8};
int numLeds = sizeof(ledPins) / sizeof(ledPins[0]);

void setup() {
  // Inizializza tutti i pin come OUTPUT
  for (int i = 0; i < numLeds; i++) {
    pinMode(ledPins[i], OUTPUT);
    digitalWrite(ledPins[i], HIGH); // Assicurati che siano spenti all'inizio
  }
}

void loop() {
  // Accendi i LED uno per uno in modo crescente
  for (int i = 0; i < numLeds; i++) {
    digitalWrite(ledPins[i], LOW); // Accendi il LED corrente
    delay(1000); // Attendi un secondo per vedere l'effetto
  }

 
  for (int i = 0; i < numLeds; i++) {
    digitalWrite(ledPins[i], HIGH);
  }
  delay(10000); // Pausa prima di ricominciare 

 

Questo è il programma usato. Adesso va adattato alle esigenze personali ma in linea di principio fa quello che mi ero prefissato.

Basta eliminare la parte finale per fare stare tutto acceso alla fine del ciclo. In realtà io vorrei mettere un delay ancora più lungo per fargli fare il ciclo dopo svariati minuti evitando il fastidioso ciclaggio dei relè che personalmente a me non dispiace quando fatto ogni tanto.

Livio Orsini
Inserita:

Usa la funzione millis(). Esempio

........
  unsigned long lotemp = 0;
  unsigned long ltemp = 0;

..........
   ltemp = millis();
   if ( ltemp > (lotemp + 30000))
     {
        lotemp = ltemp;
        ......
     }

 

In questo caso esegui qualcosa se sono trascorsi almeno 30"

 

La funzione millis() rende un intero lung0 che indica il tempo trascorso dall'accensione di arduino, espresso in millisecondi

Inserita:

Grazie Livio, avevo usato mills ma essendo molto scarso nel programmare qualche cosa non mi tornava come volevo. Sicuramente adesso farò qualche prova per vedere se riesco ad usare anche questa funzione. Come dicevo non ho mai usato Arduino se non adesso anche se ne avevo uno in casa da anni. Comunque col vostro aiuto ho capito che le potenzialità sono infinite quindi sta a chi lo usa fantasticare su cosa fare.

 

 

 

Crea un account o accedi per commentare

Devi essere un utente per poter lasciare un commento

Crea un account

Registrati per un nuovo account nella nostra comunità. è facile!

Registra un nuovo account

Accedi

Hai già un account? Accedi qui.

Accedi ora
×
×
  • Crea nuovo/a...