Generador de Funciones con XR2206 mejorado

Generador de Funciones con XR2206 v1.0

N|Solid

Generador de Funciones con XR2206 v2.0

N|Solid
Este es un Generador de Señales discreto en base a componentes de fácil adquisición para facilitar la producción para ser ensamblado por los estudiantes.

Controles - v1.0

  • Generador - XR2206
  • Preajuste de Simetría
  • Preajuste de Distorsión
  • Ajuste de Amplitud
  • Ajuste de Ganancia
  • Ajuste de Frecuencia
  • Selección de Rango de Frecuencia mediante Jumper o switch (4 rangos)
  • Selección de salida Triangular o Senoidal mediante Jumper o switch
  • Buffer de Salida
  • Salida BNC de 50R
  • Salida Cuadrada para Frecuencímetro y Sincronismo

Controles - v2.0

  • Generador - XR2206
  • Preajuste de Simetría
  • Preajuste de Distorsión
  • Ajuste de Amplitud
  • Ajuste de Ganancia
  • Ajuste de Frecuencia
  • Selección de Rango de Frecuencia mediante Jumper o switch (4 rangos) (3 rangos)
  • Selección de salida Triangular o Senoidal mediante Jumper o switch
  • Buffer de Salida
  • Salida BNC de 50R
  • Salida Cuadrada para Frecuencímetro y Sincronismo

Circuito Generador de Funciones con XR2206 v1.0



Circuito Generador de Funciones con XR2206 v2.0


Alimentación

Diseñado para ser alimentado con una única batería de 9V en su interior cuenta con una fuente con masa flotante para lograr la simetría en el amplificador operacional (solo para v1.0). El amplificador operacional puede ser reemplazado por cualquiera con entrada FET (Se requiere alta impedancia) (solo para v1.0).

Diseño

Diseñado con EAGLE, en solo una capa con componentes THT para facilitar la integración al alumno, el desarrollo del PCB en el hogar y mantener el menor costo posible.

Pruebas de Señal Seno y Cuadrada

N|Solid

Pruebas de FFT sobre Seno

N|Solid



¿Dónde fabricamos nuestros PCBs?
Nuestros PCBs los fabricamos con la empresa PCBWay, esta empresa nos permite realizar pequeñas cantidades como prototipos rápidos para nuestros desarrollos a medida.
También nos permite realizar grandes producciones para realizar proyectos comerciales.
Servicio de prototipo de PCB por tan solo $5 las 10 unidades.
Cada nuevo miembro recibirá un bono de $5, más servicio express de 24Hs o 48Hs.
Servicio de ensamblado de PCB por $88 más envió gratis en todo el mundo, más esténcil, más componentes.
Un servicio de calidad!

Estación Meteorológica con ESP8266 y Thingspeak

Estación meteorológica inalámbrica que proporciona valores de Temperatura, Humedad, Presión y Luminosidad.
Es una estación de bajo costo pero puede ser de utilidad como proyecto o para pequeñas instalaciones (Ej. en el hogar).
Se puede alimentar desde una fuente de 5V o bien con panel solar y baterías recargables.
Dentro de la buena conducta en los servidores IoT, debemos realizar el ingreso de datos con intervalos lentos, ya que podríamos saturar el servidor.
Por ello se realiza un update cada 5 minutos, también se elige esta demora porque no es necesario refrescar tan rápido los valores climáticos.
 

Circuito 
Circuito 


Datos de la estación extraídos de Thingspeak (http://thingspeak.com/channels/128756).


Programa para el ESP8266 sobre ArduinoIDE:

  1. #include <ESP8266WiFi.h>          //https://github.com/esp8266/Arduino
  2. #include <DNSServer.h>
  3. #include <ESP8266WebServer.h>
  4. #include <WiFiManager.h>         //https://github.com/tzapu/WiFiManager
  5. #include <SimpleDHT.h>
  6. #include <Wire.h>
  7. #include <Adafruit_BMP085.h>
  8. String apiKey = "APIKEY DE SU CUENTA THINGSPEAK";
  9. const char* server = "api.thingspeak.com";
  10. int pinDHT11 = D0;
  11. int timeOut = 0;
  12. SimpleDHT11 dht11;
  13. WiFiClient client;
  14. Adafruit_BMP085 bmp;
  15. void setup(){
  16.    WiFiManager wifiManager;
  17.    Serial.begin(115200);
  18.    delay(10);
  19.    wifiManager.resetSettings();
  20.    wifiManager.autoConnect("WS-Electgpl");
  21.    Serial.println("Estacion Conectada a Internet");
  22.    if(!bmp.begin()){
  23.       Serial.println("Error en BMP085");
  24.       while(1){}
  25.    }
  26. }
  27. void loop(){
  28.    byte temperatura = 0;
  29.    byte humedad = 0;
  30.    float luminosidad = analogRead(A0);
  31.    if(dht11.read(pinDHT11, &temperatura, &humedad, NULL)){
  32.       Serial.print("Error en DHT11");
  33.       return;
  34.    }
  35.    if(timeOut==300){
  36.       if(client.connect(server,80)){
  37.          String postStr = apiKey;
  38.          postStr +="&field1=";
  39.          postStr += String(luminosidad);
  40.          postStr +="&field2=";
  41.          postStr += String((float)bmp.readTemperature());
  42.          postStr +="&field3=";
  43.          postStr += String((int)humedad);
  44.          postStr +="&field4=";
  45.          postStr += String((float)bmp.readPressure()/100);
  46.          postStr += "\r\n\r\n";
  47.          client.print("POST /update HTTP/1.1\n");
  48.          client.print("Host: api.thingspeak.com\n");
  49.          client.print("Connection: close\n");
  50.          client.print("X-THINGSPEAKAPIKEY: "+apiKey+"\n");
  51.          client.print("Content-Type: application/x-www-form-urlencoded\n");
  52.          client.print("Content-Length: ");
  53.          client.print(postStr.length());
  54.          client.print("\n\n");
  55.          client.print(postStr);
  56.          Serial.println("% send to Thingspeak");
  57.       }
  58.       client.stop();
  59.       Serial.print("luminosidad: ");
  60.       Serial.print(luminosidad);
  61.       Serial.print(" | temperatura: ");
  62.       Serial.print((float)bmp.readTemperature());
  63.       Serial.print(" | humedad: ");
  64.       Serial.print(humedad);
  65.       Serial.print(" | presion: ");
  66.       Serial.println((float)bmp.readPressure()/100);
  67.       timeOut=0;
  68.    }
  69.    delay(1000);
  70.    timeOut++;
  71.    Serial.print("timeOut");
  72.    Serial.println(timeOut);
  73. }

Nueva versión de código basada en nueva biblioteca de ThingSpeak:


  1. #include <ESP8266WiFi.h>          //https://github.com/esp8266/Arduino
  2. #include <DNSServer.h>
  3. #include <ESP8266WebServer.h>
  4. #include <WiFiManager.h>         //https://github.com/tzapu/WiFiManager
  5. #include <SimpleDHT.h>
  6. #include <Wire.h>
  7. #include <Adafruit_BMP085.h>
  8. #include "ThingSpeak.h"          //https://github.com/mathworks/thingspeak-arduino
  9. unsigned long myChannelNumber = NUMERO DE CANAL DE SU CUENTA THINGSPEAK;
  10. const char * myWriteAPIKey = "APIKEY DE SU CUENTA THINGSPEAK";
  11. int pinDHT11 = D0;
  12. int pinFACTORY = D6;
  13. int timeOut = 0;
  14. SimpleDHT11 dht11;
  15. WiFiClient client;
  16. Adafruit_BMP085 bmp;
  17. void handleButton(){
  18.    int debounce = 1000;
  19.    if(digitalRead(pinFACTORY)==LOW){
  20.       delay(debounce);
  21.       if(digitalRead(pinFACTORY)==LOW){
  22.          WiFiManager wifiManager;      
  23.          wifiManager.resetSettings();
  24.          delay(1000);
  25.          ESP.reset();
  26.       }
  27.    }
  28. }
  29. void setup(){
  30.    WiFiManager wifiManager;
  31.    ThingSpeak.begin(client);  // Initialize ThingSpeak
  32.    Serial.begin(115200);
  33.    pinMode(pinFACTORY, INPUT);
  34.    delay(10);
  35.    // wifiManager.resetSettings();
  36.    wifiManager.autoConnect("WS-Electgpl");
  37.    Serial.println("Estacion Conectada a Internet");
  38.    if(!bmp.begin()){
  39.       Serial.println("Error en BMP085");
  40.    }
  41. }
  42. void loop(){
  43.    byte temperatura = 0;
  44.    byte humedad = 0;
  45.    float luminosidad = analogRead(A0);
  46.    handleButton();
  47.    dht11.read(pinDHT11, &temperatura, &humedad, NULL);
  48.    /*
  49.    if(dht11.read(pinDHT11, &temperatura, &humedad, NULL)){
  50.       Serial.println("Error en DHT11");
  51.       return;
  52.    }
  53.    */
  54.    if(timeOut==300){
  55.       ThingSpeak.setField(1, luminosidad);
  56.       ThingSpeak.setField(2, (float)bmp.readTemperature());
  57.       ThingSpeak.setField(3, (int)humedad);
  58.       ThingSpeak.setField(4, (float)bmp.readPressure()/100);
  59.       ThingSpeak.writeFields(myChannelNumber, myWriteAPIKey);
  60.       Serial.print("luminosidad: ");
  61.       Serial.print(luminosidad);
  62.       Serial.print(" | temperatura BMP: ");
  63.       Serial.print((float)bmp.readTemperature());
  64.       Serial.print(" | temperatura DHT: ");
  65.       Serial.print(temperatura);
  66.       Serial.print(" | humedad: ");
  67.       Serial.print(humedad);
  68.       Serial.print(" | presion: ");
  69.       Serial.println((float)bmp.readPressure()/100);
  70.       timeOut=0;
  71.    }
  72.    delay(1000);
  73.    timeOut++;
  74.    Serial.print("timeOut");
  75.    Serial.println(timeOut);
  76. }