Ciao a tutti ho collegato il modulo relè a un alimentatore esterno da computer questo mi dovrebbe erogare 10 A sulla 5 V.
Ho un problema però collegando l'amperometro vedo che eroga solo 200mA che non sono in grado di alimentare tutto il modulo.
Questo problema capita solo con il modulo relè come posso risolvere questo?
Intendevo dire che alimentando alla tensione di 5V (espressa nel datasheet) mi riesce ad eccitare solo 3 relè e gli altri no.
Inoltre se alzo leggermente la tensione riesco ad eccitare tutte le bobine ma dopo non si diseccitano più anche se richiamate dal codice
Ho un regolatore di tensione che mi permette di regolarla appunto.
Si a 5V riesco ad eccitare sempre quei tre relè
Allora il regolatore di tensione è questo (http://www.ebay.it/itm/like/201593910408)
Ti incollo delle foto dei circuito.
Descritto brevemente nella breadboard bianca c'è il driver A4988 dell'allegro che mi permette di controllare il motore passo passo.
Nella morsettiera in alto sono collegate le varie pompe alimentate a 12V che sono controllate dal modulo relè.
Arduino dispone di un ethernet shield.
CODICE ARDUINO (non si sa mai)
#include <SPI.h>
#include <Ethernet.h>
boolean reading = false;
int dirPin = 2;
int stepperPin = 3;
int pompa_1 = 5;
int pompa_2 = 6;
int pompa_3 = 7;
int tastiera = 0;
int tastiera_2 = 0;
int tastiera_3 = 0;
int i=0;
String HTTPget = "";
//configurazione in internet
byte ip[] = { 192, 168, 1, 177 }; // IP Address
byte subnet[] = { 255, 255, 255, 0 }; // Subnet Mask
byte gateway[] = { 192, 168, 1, 1 }; // Gateway
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; // MAC Address
EthernetServer server = EthernetServer(80); // Port 80
void setup()
{
Serial.begin(9600);
// pin 10, 11, 12 and 13 are used by the ethernet shield
Ethernet.begin(mac, ip, gateway, subnet); // setup ethernet with params from above
server.begin();
pinMode(dirPin, OUTPUT);
pinMode(stepperPin, OUTPUT);
pinMode(pompa_1, OUTPUT);
pinMode(pompa_2, OUTPUT);
pinMode(pompa_3, OUTPUT);
}
void step(boolean dir,int steps){
digitalWrite(dirPin,dir);
delay(50);
for(int i=0;i<steps;i++){
digitalWrite(stepperPin, HIGH);
delayMicroseconds(800);
digitalWrite(stepperPin, LOW);
delayMicroseconds(800);
}
}
void loop()
{
// listen for incoming clients
EthernetClient client = server.available();
Serial.println("Connesso");
if (client)
{
boolean lineIsBlank = true;
while (client.connected())
{
if (client.available())
{
char c = client.read();
if(reading && c == ' ') reading = false;
if(c == '?') reading = true; // ? in GET request was found, start reading the info
//check that we are reading, and ignore the '?' in the URL, then append the get parameter into a single string
if(reading && c != '?') HTTPget += c;
if (c == '\n' && lineIsBlank) {
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println("Connection: close");
client.println();
break;
}
if (c == '\n')
{
lineIsBlank = true;
}
else if (c != '\r')
{
lineIsBlank = false;
}
}
}
if(i==0){
//creo la variabile tempo dalla stringa url
String var_1 = HTTPget.substring(4,6);
int tastiera = var_1.toInt();
//creo la variabile tempo_2 dalla stringa url
String var_2 = HTTPget.substring(13,15);
int tastiera_2 = var_2.toInt();
//creo varialbile tempo_3 dalla stringa url
String var_3 = HTTPget.substring(22,24);
int tastiera_3 = var_3.toInt();
//
if(tastiera != 0){
Serial.println("Acceso");
step(true,200);
Serial.println("Blocco_1");
delay(500);
//andrà messo il relè 1 con la pompa 1
digitalWrite(pompa_1, HIGH);
//resta acceso fino a quando non raggiunge la capacità definita
delay(tastiera*100);
//spegne il relè
digitalWrite(pompa_1, LOW);
delay(100);
}else{
Serial.println("Spento");
step(true,200);
Serial.println("Blocco_1");
digitalWrite(pompa_1, LOW);
Serial.println("Tempo=0");
}
//blocco2
if(tastiera_2 != 0){
Serial.println("Acceso");
step(true,200*2);
Serial.println("Blocco_2");
delay(500);
//andrà messo il relè 1 con la pompa 1
digitalWrite(pompa_2, HIGH);
//resta acceso fino a quando non raggiunge la capacità definita
delay(tastiera_2*100);
//spegne il relè
digitalWrite(pompa_2, LOW);
delay(100);
}else{
Serial.println("Spento");
step(true,200*2);
Serial.println("Blocco_2");
digitalWrite(pompa_2, LOW);
Serial.println("Tempo=0");
}
//blocco1
if(tastiera_3 != 0){
Serial.println("Acceso");
step(true,200*3);
Serial.println("Blocco_3");
delay(500);
//andrà messo il relè 1 con la pompa 1
digitalWrite(pompa_3, HIGH);
//resta acceso fino a quando non raggiunge la capacità definita
delay(tastiera_3*100);
//spegne il relè
digitalWrite(pompa_3, LOW);
delay(100);
}else{
Serial.println("Spento");
step(true,200*3);
Serial.println("Blocco_3");
digitalWrite(pompa_3, LOW);
Serial.println("Tempo=0");
}
step(false,-200*6);
Serial.println("Ritorno");
delay(500);
/**/
Serial.println("Disconnesso");
i++;
}else{
HTTPget = "";
i=0;
tastiera = 0;
tastiera_2 =0;
tastiera_3 = 0;
}
}
delay(1); // give the web browser a moment to recieve
client.stop(); // close connection
}
Infatti non lo vedo neanche io.
Dalla morsettiera, dov'è collegato il cavetto bianco che và al GND della scheda relè, collegaci un'altro cavo che collegherai al GND di Arduino
Poi un'altra cosa che noto in un sacco di circuiti... i cavetti Dupont che hai usato per le alimentazioni, cosi' come quelli saldati all'uscita dello StepDown, sono troppo piccoli come sezione