Arduino Forum

International => Español => Hardware => Topic started by: sondauta2 on Jan 16, 2019, 01:59 am

Title: Control de 8 reles ssd mediante PCF8574 y nodemcu [SOLUCIONADO]
Post by: sondauta2 on Jan 16, 2019, 01:59 am
Hola, quisiera un poco de su sabiduria, ya que llevo 10 dias quebrandome la cabezo y no logro ver la luz.

Necesito lo siguiente (en mis palabras, puede que le falta tecnica)
"Mi idea es usar un NodeMCU esp 8266 Lolin v3 para controlar 8 reles de estado solido.
Como no me alcanzan los pines, estoy tratando de hacerlo mediante el compronente PCF8574, ya que permite mediante I2C conectarlo y ganar 8 pines extras.
El problema esta en que debo control indivialmente cada pin extra, para prender o apagar el rele asociado."

He revisado un monton de videos, blogs y referencias, pero por mi tontera no logro dar con la respuesta a como conectarlo correctamente y como poder leer y escribir en esos pines, a fin de prender o apagar los reles.

Dejo imagenes de los componentes con los que cuento.
Si me pueden ayudar, seria genial.   Gracias de antemano.

(https://afel.cl/content/uploads/stock-pictures2f12492frele20820solido-1.jpg)
(https://afel.cl/content/uploads/stock-pictures2f12002fnodemcu20v3-2.jpg)
(https://i.ebayimg.com/images/g/4r4AAOSwmOJaOf8x/s-l300.jpg)


 
Title: Re: Control de 8 reles ssd mediante PCF8574 y nodemcu
Post by: tauro0221 on Jan 16, 2019, 02:19 am
Hi,
Adjunto un link que esplica como alambrarlo y un sketch de como hacerlo. Pruebalo a ver si te sirve. Espero que te sirva.

http://arduinolearning.com/code/arduino-and-a-pcf8574.php (http://arduinolearning.com/code/arduino-and-a-pcf8574.php)
Title: Re: Control de 8 reles ssd mediante PCF8574 y nodemcu
Post by: sondauta2 on Jan 17, 2019, 01:12 am
Hi,
Adjunto un link que esplica como alambrarlo y un sketch de como hacerlo. Pruebalo a ver si te sirve. Espero que te sirva.

http://arduinolearning.com/code/arduino-and-a-pcf8574.php (http://arduinolearning.com/code/arduino-and-a-pcf8574.php)
Muchas gracias Tauro0221.   Es muy parecido a otro que habia visto, probado y descartado.

Sin embargo, despues de tanto, vino la solucion, un poco mas facil de lo que yo creia. Y se puede controlar cada uno de los 8 pines extras que se ganan.

Les dejo el codigo que use para las pruebas, con un modulo rele de 4 unidades, fuente externa de 5v y los gnd unidos al gnd de la placa

Code: [Select]

#include "Arduino.h"
#include "PCF8574.h"

 

// Setear la direccion Hexadecimal del extensor
PCF8574 pcf8574(0x20);  // A0,A1,A2 todos en GND en los junpers

int pausa = 2000;

void setup(){

  Serial.begin(9600);
  // Todos los pines en OUTPUT
  pcf8574.pinMode(P0, OUTPUT);
  pcf8574.pinMode(P1, OUTPUT);
  pcf8574.pinMode(P2, OUTPUT);
  pcf8574.pinMode(P3, OUTPUT);
  //pcf8574.pinMode(P4, OUTPUT);
  //pcf8574.pinMode(P5, OUTPUT);
  //pcf8574.pinMode(P6, OUTPUT);
  //pcf8574.pinMode(P7, OUTPUT);
  pcf8574.begin();

}

 

void loop(){

  pcf8574.digitalWrite(P0, LOW);  // P0 en ON
  delay(pausa);
  pcf8574.digitalWrite(P0, HIGH); // P0 en OFF
  delay(pausa);
 
  pcf8574.digitalWrite(P1, LOW);  // P1 en ON
  delay(pausa);
  pcf8574.digitalWrite(P1, HIGH); // P1 en OFF
  delay(pausa);
 
  pcf8574.digitalWrite(P2, LOW);  // P2 en ON
  delay(pausa);
  pcf8574.digitalWrite(P2, HIGH); // P2 en OFF
  delay(pausa);
 
  pcf8574.digitalWrite(P3, LOW);  // P3 en ON
  delay(pausa);
  pcf8574.digitalWrite(P3, HIGH); // P3 en OFF
  delay(pausa);
 
  //pcf8574.digitalWrite(P4, HIGH); // NC High on P4
  //pcf8574.digitalWrite(P5, LOW);  // NO High on P5
  //pcf8574.digitalWrite(P6, HIGH); // NC High on P6
  //pcf8574.digitalWrite(P7, LOW);  // NO High on P7

  delay(pausa);

}


Mañana tratare de subir un Fritzing de las conexiones, estoy aprendiendo recien a usarlo, asi que solo lo dibujo en mi cuaderno, a la antigua....

Saludos.  Espero que a otros les sirva.
Title: Re: Control de 8 reles ssd mediante PCF8574 y nodemcu
Post by: surbyte on Jan 17, 2019, 01:25 am
Por favor, las conexiones en electronica sea con el programa que sea deben ser ortogonales. O sea.. cuando cambias de direccion en ángulo recto.
Eso de tirar diagonales desde el sensor al pin del arduino es algo que se ha generalizado y resulta solo entendible por el autor.


Aprende en los programas a no usar delay() en cada paso que das en tu código

Code: [Select]
pcf8574.digitalWrite(P0, LOW);  // P0 en ON
  delay(pausa);
  pcf8574.digitalWrite(P0, HIGH); // P0 en OFF
  delay(pausa);
 
  pcf8574.digitalWrite(P1, LOW);  // P1 en ON
  delay(pausa);
  pcf8574.digitalWrite(P1, HIGH); // P1 en OFF
  delay(pausa);
 
  pcf8574.digitalWrite(P2, LOW);  // P2 en ON
  delay(pausa);
  pcf8574.digitalWrite(P2, HIGH); // P2 en OFF
  delay(pausa);
 
  pcf8574.digitalWrite(P3, LOW);  // P3 en ON
  delay(pausa);
  pcf8574.digitalWrite(P3, HIGH); // P3 en OFF
  delay(pausa);


tienes un STOP y el resto?

Si aprendes a usar millis() puedes comandar todo sin que se detenga el programa.
Que pasa si luego tienes muchos sensores? pulsadores, sensores pantalla que actualizar
Cada pausa es de 2000 mseg o sea 2seg
Cada vez que cambias una de las 8 salidas demoras 2 seg o sea 16 segundos en recorrer todo.
Para la prueba esta bien pero para mas adelante no.

Desterra el uso de delay() antes que te vuelvas adicto y sea tarde.

Ve a Documentación => Indice de temas tutoriales => millis()
Title: Re: Control de 8 reles ssd mediante PCF8574 y nodemcu
Post by: sondauta2 on Jan 17, 2019, 01:34 am
Actualizo el codigo con los 8 reles, en 2 placas de 4 cada una.

Code: [Select]


#include "Arduino.h"
#include "PCF8574.h"

 

// Setear la direccion Hexadecimal del extensor
PCF8574 pcf8574(0x20);  // A0,A1,A2 todos en GND en los junpers

int pausa = 2000;

void setup(){

  Serial.begin(9600);
  // Todos los pines en OUTPUT
  pcf8574.pinMode(P0, OUTPUT);
  pcf8574.pinMode(P1, OUTPUT);
  pcf8574.pinMode(P2, OUTPUT);
  pcf8574.pinMode(P3, OUTPUT);
  pcf8574.pinMode(P4, OUTPUT);
  pcf8574.pinMode(P5, OUTPUT);
  pcf8574.pinMode(P6, OUTPUT);
  pcf8574.pinMode(P7, OUTPUT);
  pcf8574.begin();
  apagarReles();
}

 

void loop(){

  pcf8574.digitalWrite(P0, LOW);  // P0 en ON
  delay(pausa);
  pcf8574.digitalWrite(P0, HIGH); // P0 en OFF
  delay(pausa);
 
  pcf8574.digitalWrite(P1, LOW);  // P1 en ON
  delay(pausa);
  pcf8574.digitalWrite(P1, HIGH); // P1 en OFF
  delay(pausa);
 
  pcf8574.digitalWrite(P2, LOW);  // P2 en ON
  delay(pausa);
  pcf8574.digitalWrite(P2, HIGH); // P2 en OFF
  delay(pausa);
 
  pcf8574.digitalWrite(P3, LOW);  // P3 en ON
  delay(pausa);
  pcf8574.digitalWrite(P3, HIGH); // P3 en OFF
  delay(pausa);
 
  pcf8574.digitalWrite(P4, LOW);  // P4 en ON
  delay(pausa);
  pcf8574.digitalWrite(P4, HIGH); // P4 en OFF
  delay(pausa);
 
  pcf8574.digitalWrite(P5, LOW);  // P5 en ON
  delay(pausa);
  pcf8574.digitalWrite(P5, HIGH); // P5 en OFF
  delay(pausa);
 
  pcf8574.digitalWrite(P6, LOW);  // P6 en ON
  delay(pausa);
  pcf8574.digitalWrite(P6, HIGH); // P6 en OFF
  delay(pausa);
 
  pcf8574.digitalWrite(P7, LOW);  // P7 en ON
  delay(pausa);
  pcf8574.digitalWrite(P7, HIGH); // P7 en OFF
  delay(pausa);

}

// Funciones
void apagarReles(){
  pcf8574.digitalWrite(P0, HIGH); // P0 en OFF
  pcf8574.digitalWrite(P1, HIGH); // P1 en OFF
  pcf8574.digitalWrite(P2, HIGH); // P2 en OFF
  pcf8574.digitalWrite(P3, HIGH); // P3 en OFF
  pcf8574.digitalWrite(P4, HIGH); // P4 en OFF
  pcf8574.digitalWrite(P5, HIGH); // P5 en OFF
  pcf8574.digitalWrite(P6, HIGH); // P6 en OFF
  pcf8574.digitalWrite(P7, HIGH); // P7 en OFF
}




Ahora a comenzar la pelea para agregar una mini pantalla oled 0,96 y las sondas de medicion de temperatura.
Saludos a todos.



Title: Re: Control de 8 reles ssd mediante PCF8574 y nodemcu
Post by: tauro0221 on Jan 17, 2019, 03:20 am
Hi,
No dices que fue lo que encontraste para resolver el problema para que sirva de experiencia para otros mienbros del forum.
Title: Re: Control de 8 reles ssd mediante PCF8574 y nodemcu
Post by: sondauta2 on Jan 18, 2019, 04:26 am
Hi,
No dices que fue lo que encontraste para resolver el problema para que sirva de experiencia para otros mienbros del forum.
Estimado, lo que encontre fue la libreria que me permite controlarlos individualmente.  Si eso no te sirve a ti o nadie mas, sorry.   A mi me sirvio.

Paz!!!!
Title: Re: Control de 8 reles ssd mediante PCF8574 y nodemcu
Post by: tauro0221 on Jan 18, 2019, 04:30 am
Hi,
Muchas gracias por tu respuesta.
Title: Re: Control de 8 reles ssd mediante PCF8574 y nodemcu
Post by: sondauta2 on Jan 18, 2019, 04:33 am
Surbyte, no entendi el primer parrafo..... no se a que te refieres.

Lo segundo, respecto a los millis(), si toda la razon.  Ahora estoy estudiandolo y claro, con el delay() todo se detiene y se pierde el control.  El codigo que subi, si eran solo pruebas para ver el funcionamiento, para ver que pudiera controlar los reles en forma individual.

Estoy tratando de seguir algunos de tus comentarios que he visto por ahi y voy separando en tareas.  No importa que demora mas, pero al menos asi voy teniendo claro lo que puedo o no puedo lograr.

Saludos y peace!!!
Title: Re: Control de 8 reles ssd mediante PCF8574 y nodemcu
Post by: surbyte on Jan 18, 2019, 05:13 am
No sabes que son conexiones ortogonales? Es que forman ángulo recto.

Este dibujo tiene conexiones ortogonales, es decir cada conexión sigue linea recta y si cambia de dirección lo hace a 90 grados.

(https://cdn-learn.adafruit.com/assets/assets/000/001/901/medium640/adafruit_products_logger.png?1396777295)

Y esto es el mamarracho que no debes dibujar.

(http://img.wonderhowto.com/img/56/84/63472110602575/0/create-practically-anything-part-1-fritzing-circuit-boards.w654.jpg)

Y para colmo, es un tutorial del mismo Fritzing (http://tutorialfritzing.blogspot.com/)

Otro ejemplo bien hecho

(https://naylampmechatronics.com/modules//smartblog/images/10-single-default.jpg)

mal hecho

(https://cdn.instructables.com/F1T/3TQ2/H994BXMB/F1T3TQ2H994BXMB.LARGE.jpg)
Title: Re: Control de 8 reles ssd mediante PCF8574 y nodemcu
Post by: sondauta2 on Jan 20, 2019, 03:38 am
Surbyte, si lo de las conexiones ortogonales lo tenía claro, mi duda es que yo no he subido ningún esquema en fritzing, entonces no sé a qué viene dentro del post.

Gracias de todos modos por el apunte respecto de la forma de dibujar circuitos.

Peace!!!
Title: Re: Control de 8 reles ssd mediante PCF8574 y nodemcu
Post by: surbyte on Jan 20, 2019, 04:45 am
Aprovecho para hacer pedagogía, tu no eres el único que lee.
Title: Re: Control de 8 reles ssd mediante PCF8574 y nodemcu
Post by: sondauta2 on Jan 21, 2019, 04:55 am
Eso se agradece mucho.

Paz.