Pages: [1] 2   Go Down
Author Topic: 50 NTC o DS18B20 con un arduino UNO [SOLUCIONADO casi]  (Read 5227 times)
0 Members and 1 Guest are viewing this topic.
Euskadi
Offline Offline
God Member
*****
Karma: 16
Posts: 721
Arduinotarrak
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hola,
quisiera conectar unos 50 NTC a un arduino UNO para medir la temperatura interior de una colmena, y  guardar los datos cada x minutos en una SD.
Para leer temperaturas tendría ir seleccionado cada NTC, y para ello necesitaría 6 pines digitales (2^6 = 64). No conozco mucho el tema, creo que necesitaría algún chip 7400 de tipo multiplexor... ¿Alguna idea?

« Last Edit: February 28, 2013, 10:10:21 am by curro92 » Logged

Spain
Offline Offline
God Member
*****
Karma: 25
Posts: 956
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Curro92

¿Y si en vez de NTC usas DS18B20?



Ventajas, el protocolo es el 1 wire, solo empleas un pin, puedes poner en cascada hasta 100 dispositivos y hasta una distancia de 200 metros. (estos datos los lei pero no he localizado la hoja oficial que lo corrobora)

Tambien ganas en precision, una sonda digital te da una medida de temperatura independiente de la resistencia del cable o interferencias, una analogica no.

Cadda DS18B20 tiene una MAC unica con lo que identificarlas es por software y encima las puedes conseguir estancas:

« Last Edit: February 06, 2013, 05:28:12 am by Heke » Logged

CUIDADO !! MIS POST NO SON APTOS PARA MENORES. SI ERES MENOR DE 14 AÑOS DEBES DE LEERLOS ACOMPAÑADO DE UN ADULTO

0
Offline Offline
Edison Member
*
Karma: 8
Posts: 1040
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Puedes usar multiplexores de 8 canales como el 4051, asi por cada entrada analogica tienes 8 termistores conectados.






* 74HC_HCT4051.pdf (216.67 KB - downloaded 31 times.)
Logged

Trabajando en ...

    * Control Domotico (En montaje ...)
    http://casitadomotica.blogspot.com/
 

[url=https://bitbucket.org/fmalpartida

0
Offline Offline
Edison Member
*
Karma: 17
Posts: 1413
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

sin duda DS18B20, yo tambien los uso y son una maravilla.
Logged

* Si preguntas, pon el código de tu programa, hace mucho mas fácil ayudarte. Y me ahorro un mensaje pidiendo que lo hagas.
* Si consigues solucionar tu problema, dedica unos minutos a explicar en tu post como lo conseguiste para beneficio de todos.
* Cambia el 'Subject' de tu hilo y añade 'SOLUCIONADO' cuando hayas llegado a una solución al problema que planteaste.
* Utiliza un 'Subject' para tu hilo que explique de que va el hilo.
Si estas empezando:
* Comienza a usar Arduino
* Guías de iniciación a Arduino
* Ejemplos
* Referencia del Lenguaje
* Conceptos básicos
Guia de usuario de arduino
Tutoriales en Ingles
Si necesitas que alguien te escriba el código: http://www.freelancer.com/  o esta  http://www.guru.com/

0
Offline Offline
Edison Member
*
Karma: 8
Posts: 1040
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Usar sensores onewire como el DS18B20 es una opcion muy buena, lo unico que para tener 50 dispositivos conectados un pushpull pasivo con una resistencia no es nada recomendable. En estos casos hay que usar un pushpull activo.
Logged

Trabajando en ...

    * Control Domotico (En montaje ...)
    http://casitadomotica.blogspot.com/
 

[url=https://bitbucket.org/fmalpartida

Euskadi
Offline Offline
God Member
*****
Karma: 16
Posts: 721
Arduinotarrak
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Gracias a todos.

El DS18B20 me gusta, pero 50pcs me salen por treinta y tantos euros.

Esta tarde he encontrado otra posibilidad mucho más viable económicamente. Un montaje de 8 x 4051 que consume 6 pines digitales y uno analógico
http://modelrail.otenko.com/arduino/multiplexing-photodetectors-to-detect-train-occupancy

También existe una librería para ese montaje:
https://github.com/ajfisher/arduino-analog-multiplexer

El presupuesto (vía extremo oriente):
- 50 pcs NTC: 3.7€
-10 pcs 4051: 2€
- 1 Pro Mini con atmega320 16MHz: 4.71€
- SD Card module: 1.06€  (falta la tarjeta)
- DS1307 RTC (Battery include): 1.72€
-----------------------------------------------
Total: 13,19€

Un datalogger que va a medir la temperatura interior de la colmena simultáneamente en 50 puntos distintos cada 10 minutos, anotando además año, mes, día, hora, minuto. Los NTC los voy a incluir en los bastidores de cuadros de cera antes de que formen los panales.








« Last Edit: February 06, 2013, 10:37:29 am by curro92 » Logged

0
Offline Offline
Edison Member
*
Karma: 8
Posts: 1040
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Te dejo este enlace por si te vale de ayuda.

http://www.youritronics.com/74hc4051-analog-multiplexer/
Logged

Trabajando en ...

    * Control Domotico (En montaje ...)
    http://casitadomotica.blogspot.com/
 

[url=https://bitbucket.org/fmalpartida

0
Offline Offline
Edison Member
*
Karma: 17
Posts: 1413
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

te vale la pena por 20 euros la cantidad de cable que tienes que tirar adicional? yo sigo viendo mejor opción el DS18B20, ademas que la señal es digital y no analogica, que tambien lo veo una ventaja
Logged

* Si preguntas, pon el código de tu programa, hace mucho mas fácil ayudarte. Y me ahorro un mensaje pidiendo que lo hagas.
* Si consigues solucionar tu problema, dedica unos minutos a explicar en tu post como lo conseguiste para beneficio de todos.
* Cambia el 'Subject' de tu hilo y añade 'SOLUCIONADO' cuando hayas llegado a una solución al problema que planteaste.
* Utiliza un 'Subject' para tu hilo que explique de que va el hilo.
Si estas empezando:
* Comienza a usar Arduino
* Guías de iniciación a Arduino
* Ejemplos
* Referencia del Lenguaje
* Conceptos básicos
Guia de usuario de arduino
Tutoriales en Ingles
Si necesitas que alguien te escriba el código: http://www.freelancer.com/  o esta  http://www.guru.com/

Euskadi
Offline Offline
God Member
*****
Karma: 16
Posts: 721
Arduinotarrak
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Vaya, Sergegsx me ha dejado otra vez con dudas, en lo de la maraña de cables tiene razón.

flico: podrías  explicar muy brevemenete qué es eso de "pushpull activo"?

En el datasheet aparecen dos formas de conectar:
  1. Supplying the Parasite-Powered DS18B20 During Temperature Conversions
  2. Powering the DS18B20 with an External Supply

Cuando mencionas "pushpull activo" te refieres a la segunda?
« Last Edit: February 06, 2013, 11:43:37 pm by curro92 » Logged

Spain
Offline Offline
God Member
*****
Karma: 25
Posts: 956
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Supongo que lo que quiere decir es esto:
Quote
Parasite power mode
When operating in parasite power mode, only two wires are required: one data wire, and ground. At the master, a 4.7k pull-up resistor must be connected to the 1-wire bus. When the line is in a "high" state, the device pulls current to charge an internal capacitor.

This current is usually very small, but may go as high as 1.5 mA when doing a temperature conversion or writing EEPROM. When a slave device is performing one these operations, the bus master must keep the bus pulled high to provide power until the operation completes; a delay of 750ms is required for a DS18S20 temperature conversion. The master can't do anything during this time, like issuing commands to other devices, or polling for the slave's operation to be completed. To support this, the OneWire library makes it possible to have the bus held high after the data is written.

Cuando hay mucho conectado al 1 wire, se puede emplear en paralelo un mosfet para mandarle la tension directa, sin limite de corriente por los "altos consumos" en los momentos de la lectura como esta nota de aplicacion:


Añado que con el modo tradicional (vcc-gnd-data) no hace falta, solo calcular la resistencia un poco mas baja:
http://datasheets.maximintegrated.com/en/ds/DS18B20.pdf
Quote
Normal (external supply) mode
With an external supply, three wires are required: the bus wire, ground, and power. The 4.7k pull-up resistor is still required on the bus wire. As the bus is free for data transfer, the microcontroller can continually poll the state of a device doing a conversion. This way, a conversion request can finish as soon as the device reports being done, as opposed to having to wait 750ms in "parasite" power mode.

Note on resistors:
For larger networks, you can try smaller resistors.
The ATmega328/168 datasheet indicates starting at 1k6 and a number of users have found smaller to work better on larger networks.
« Last Edit: February 07, 2013, 02:24:45 am by Heke » Logged

CUIDADO !! MIS POST NO SON APTOS PARA MENORES. SI ERES MENOR DE 14 AÑOS DEBES DE LEERLOS ACOMPAÑADO DE UN ADULTO

0
Offline Offline
Edison Member
*
Karma: 8
Posts: 1040
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Solo es que durante el tiempo de conversión activas el Pin del mosfet. Suele ser como maximo 750ms el tiempo que dura la conversión pero se acorta si bajas la resolución.

Unas pruebas que hice llegue a los 200m leyendo dispositivos onewire de dos hilos y 750ms de pushpull que en modo pasivo no leía nada mas que un dispositivo. Pero claro era en dos hilos.
« Last Edit: February 07, 2013, 06:41:12 am by flico » Logged

Trabajando en ...

    * Control Domotico (En montaje ...)
    http://casitadomotica.blogspot.com/
 

[url=https://bitbucket.org/fmalpartida

Euskadi
Offline Offline
God Member
*****
Karma: 16
Posts: 721
Arduinotarrak
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Gracias de nuevo
resumiendo: si pongo tres cables (vcc-gnd-data)  me olvido del mosfet.
Sobre poner resistencia menor, según el datasheet
Quote
Note on resistors:
For larger networks, you can try smaller resistors.
The ATmega328/168 datasheet indicates starting at 1k6 and a number of users have found smaller to work better on larger networks.

¿Se supone que debo poner algo entre 1k6 y 4k7? Probaré.

Y ya que sois tan amables, otra pregunta: Cómo calcularía el consumo en mA de una red de 50 DS18B20? Si el consumo fuera continuo usaría un téster, pero cambia según esté midiendo o no cada sensor. Según el datasheet:
- active current (cuando está leyendo): 1mA
- standby current:  750nA
- sink current: 1mA
- DQ Input Current : 5uA (cuando la línea DQ está alta)

No controlo los dos últimos...

 
« Last Edit: February 07, 2013, 11:24:21 pm by curro92 » Logged

Spain
Offline Offline
God Member
*****
Karma: 25
Posts: 956
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hola Curro92

Empleando la configuracion de 3 cables, ya lleva alimentacion separada, la resistencia es un simple pullup, casi pogo la mano en el fuego por el valor de 1k5 para las 50.

Si la distancia es grande, 100m p.ej. usa cable cat6.

Por lo demas debe de funcionar sin problemas...

Suerte electro-Apicultor.  smiley-lol
Logged

CUIDADO !! MIS POST NO SON APTOS PARA MENORES. SI ERES MENOR DE 14 AÑOS DEBES DE LEERLOS ACOMPAÑADO DE UN ADULTO

Euskadi
Offline Offline
God Member
*****
Karma: 16
Posts: 721
Arduinotarrak
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Gracias, Heke

Estoy probando varios DS18B20 conectados a un Arduino. Uso la librería  DallasTemperature

Para saber el número de sensores, utilizo la función correspondiente
Code:
devicecount = sensors.getDeviceCount();
 


Y luego busco el ID de cada sensor para identificarlo
Code:
for(n=0;n< devicecount; n++)
      sensors.getAddress(addresses[n], n);

Por otro lado, externamente a los sensores les identifico con unas marcas (con un pintauñas reciclado). Apretando con los dedos los sensores uno a uno, veo en cuál sube la temperatura y puedo asociar el ID y las marcas de pintura.

Mi pregunta es: al usar sensors.getDeviceCount() ¿siempre saldrán en el mismo orden los sensores? O pueden salir en un orden aleatorio?






Logged

Spain
Offline Offline
God Member
*****
Karma: 25
Posts: 956
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hola Curro

Cuando haces un devicecount lo que hace es enumerar los sensores que tiene conectados, el orden no depende de eso.

Cada sensor tiene lo que se llama una mac o para mas sencillo digamos que un DNI, y ese numero es fijo de cada sensor, lo pongas al principio o al final de una hilera.

Es  un numero estampado internamente (electronicamente) como si fuera la IP de un ordenador, da igual donde vaya cuando tu accedes al dispositivo X siempre sera a él.
Logged

CUIDADO !! MIS POST NO SON APTOS PARA MENORES. SI ERES MENOR DE 14 AÑOS DEBES DE LEERLOS ACOMPAÑADO DE UN ADULTO

Pages: [1] 2   Go Up
Jump to: