Récifaliste, Forum aquariophilie récifaliste, SPS, LPS, FishOnly,recifal,marin
 
AccueilConnexionDernières imagesPortailS'enregistrerRechercher
Le deal à ne pas rater :
Pokémon EV06 : où acheter le Bundle Lot 6 Boosters Mascarade ...
Voir le deal

 

 Technologie One Wire sur arduino

Aller en bas 
3 participants
AuteurMessage
Gnome
Modérateur
Gnome


Messages : 7602
Age : 43
Localisation : Moselle (57)

Technologie One Wire sur arduino Empty
MessageSujet: Technologie One Wire sur arduino   Technologie One Wire sur arduino EmptyJeu 21 Juin 2012, 21:48

Je suis entrain de me replonger dans la programmation arduino et je me demandais si quelqu'un pouvait m'expliquer la Technologie One-Wire

dans mon montage, je compte utiliser plusieurs capteurs de température (genre 6 ou 8) placés à différents endroit afin d'obtenir des informations de températures plus détaillés et prévenir de chauffes anormales de certains éléments...

Or, 6 ou 8 capteurs de température DS18B20 cela ferait quand même 6 ou 8 entrées bloquées à cela...
et je suis tombé sur le One-wire qui semble pouvoir faire coexister sur une même entrée plusieurs capteurs similaires :

[Vous devez être inscrit et connecté pour voir cette image]

Donc, je me disais que dans mon cas cela me libèrerait plusieurs entrées.... et que même dans le cas du Sebduino, cela lui libèrerait une entrée (puisque deux entrées du sebduino sont là pour mesurer la température bac et température maison)...

Quelqu'un peut m'en dire plus


Source : [Vous devez être inscrit et connecté pour voir ce lien]
Revenir en haut Aller en bas
Sébastien
Modérateur
Sébastien


Messages : 1410

Photos
photos:

Technologie One Wire sur arduino Empty
MessageSujet: Re: Technologie One Wire sur arduino   Technologie One Wire sur arduino EmptyJeu 21 Juin 2012, 23:48

Salut Gnome , j'ai pas trop le temps , mais je regarde ça rapidement pour t'expliquer .
Revenir en haut Aller en bas
Gnome
Modérateur
Gnome


Messages : 7602
Age : 43
Localisation : Moselle (57)

Technologie One Wire sur arduino Empty
MessageSujet: Re: Technologie One Wire sur arduino   Technologie One Wire sur arduino EmptyVen 22 Juin 2012, 00:35

Merci

quand tu auras le temps, c'est pas pressé, mais je trouve cela intéressant
Et, si j'ai bien compris le principe, cela te libérerait une entrée (et moi bien plus)
Revenir en haut Aller en bas
OverCool
Admin
Admin
OverCool


Messages : 1360
Localisation : Dagneux 01

Technologie One Wire sur arduino Empty
MessageSujet: Re: Technologie One Wire sur arduino   Technologie One Wire sur arduino EmptyVen 22 Juin 2012, 00:48

Chaque capteur a un adressage unique, c'est ce qui permet a la librairie de différencier les capteurs en serie.

Mais en faite ça à l'air plutôt bien expliqué sur ta page. C'est quoi qui te gène ?
Revenir en haut Aller en bas
Gnome
Modérateur
Gnome


Messages : 7602
Age : 43
Localisation : Moselle (57)

Technologie One Wire sur arduino Empty
MessageSujet: Re: Technologie One Wire sur arduino   Technologie One Wire sur arduino EmptyVen 22 Juin 2012, 01:03

oups rien, juste que j'avais pas vu la vidéo et l'image au dessus qui explique bien ce que j'étais pas sur de comprendre...
donc les capteurs ont une sorte d'adresse MAC. ok

je trouvais que l'article se finissait en queue de poisson, mais non, la fin est tout en haut..

Merci
Revenir en haut Aller en bas
Gnome
Modérateur
Gnome


Messages : 7602
Age : 43
Localisation : Moselle (57)

Technologie One Wire sur arduino Empty
MessageSujet: Re: Technologie One Wire sur arduino   Technologie One Wire sur arduino EmptyVen 22 Juin 2012, 01:09

Je comprends bien comment il détecte les capteurs, mais comment peut il lire les valeurs de ces capteurs (ce sont des capteurs de température) ? et savoir de quel capteur cette info vient ?
Revenir en haut Aller en bas
Gnome
Modérateur
Gnome


Messages : 7602
Age : 43
Localisation : Moselle (57)

Technologie One Wire sur arduino Empty
MessageSujet: Re: Technologie One Wire sur arduino   Technologie One Wire sur arduino EmptyVen 22 Juin 2012, 03:24

lekastor38 a écrit:
Bonjour Gnome,

bon comme j'ai toujours pas le droit de poster des messages dans la rubrique arduino, je te donne ici ma façon de faire, et qui marche tres bien, avec le one wire, j'ai du me faire mon propre soft pour l'aquarium.

comme les autres te l'on expliqué, tu peux mettre sur une meme patte arduino (la 49 dans mon cas), plusieurs capteur de temperature dessus. en fait chaque capteur a sa propre adresse.

voici la façon de coder l'initialisation et la récupération:

#include
#include

// Declaration of the DS18B20 Temperature sensors plugged into pin 52 (Water, Air, ...)
// Resolution : 9 bits (94ms/0,5°c) 10 bits (188ms/0,25°c) 11 bits (375ms/0,125°c) 12 bits(750ms/0,0625°c)
#define TEMPERATURE_ONE_WIRE_BUS 49
#define TEMPERATURE_PRECISION 9
OneWire oneWireBus(TEMPERATURE_ONE_WIRE_BUS);
DallasTemperature temperatureSensors(&oneWireBus);
DeviceAddress waterThermometer = { 0x28, 0xA8, 0x3D, 0x9A, 0x03, 0x00, 0x00, 0x95 };
DeviceAddress airThermometer = { 0x28, 0x05, 0x29, 0x9A, 0x03, 0x00, 0x00, 0xE0 };
float waterTemperatureC = 0.0;
float waterTemperatureF = 0.0;
float airTemperatureC = 0.0;
float airTemperatureF = 0.0;

void checkTemperatures()
{
// call sensors.requestTemperatures() to issue a global
// temperature request to all devices on the bus
temperatureSensors.requestTemperatures();

// read water temperature
waterTemperatureC = (temperatureSensors.getTempC(waterThermometer));
waterTemperatureF = DallasTemperature::toFahrenheit(waterTemperatureC);

// read air temperature
airTemperatureC = (temperatureSensors.getTempC(airThermometer));
airTemperatureF = DallasTemperature::toFahrenheit(airTemperatureC);
}


dans setup() {
...

// Activating Temperature Sensors
temperatureSensors.begin();
temperatureSensors.setResolution(waterThermometer, TEMPERATURE_PRECISION);
temperatureSensors.setResolution(airThermometer, TEMPERATURE_PRECISION);
checkTemperatures();

...
}


dans loop() {
...

// Get Current Temperatures
checkTemperatures();

...
}


et après tu gère l'affichage comme tu veux.


pour trouver les adresses des capteurs, tu peux utiliser le programme suivant:

///////////////


#include
#include

// Data wire is plugged into port 2 on the Arduino
#define ONE_WIRE_BUS 52
#define TEMPERATURE_PRECISION 9

// Setup a oneWire instance to communicate with any OneWire devices (not just Maxim/Dallas temperature ICs)
OneWire oneWire(ONE_WIRE_BUS);

// Pass our oneWire reference to Dallas Temperature.
DallasTemperature sensors(&oneWire);

int numberOfDevices; // Number of temperature devices found

DeviceAddress tempDeviceAddress; // We'll use this variable to store a found device address

void setup(void)
{
// start serial port
Serial.begin(9600);
Serial.println("Dallas Temperature IC Control Library Demo");

// Start up the library
sensors.begin();

// Grab a count of devices on the wire
numberOfDevices = sensors.getDeviceCount();

// locate devices on the bus
Serial.print("Locating devices...");

Serial.print("Found ");
Serial.print(numberOfDevices, DEC);
Serial.println(" devices.");

// report parasite power requirements
Serial.print("Parasite power is: ");
if (sensors.isParasitePowerMode()) Serial.println("ON");
else Serial.println("OFF");

// Loop through each device, print out address
for(int i=0;i {
// Search the wire for address
if(sensors.getAddress(tempDeviceAddress, i))
{
Serial.print("Found device ");
Serial.print(i, DEC);
Serial.print(" with address: ");
printAddress(tempDeviceAddress);
Serial.println();

Serial.print("Setting resolution to ");
Serial.println(TEMPERATURE_PRECISION, DEC);

// set the resolution to TEMPERATURE_PRECISION bit (Each Dallas/Maxim device is capable of several different resolutions)
sensors.setResolution(tempDeviceAddress, TEMPERATURE_PRECISION);

Serial.print("Resolution actually set to: ");
Serial.print(sensors.getResolution(tempDeviceAddress), DEC);
Serial.println();
}else{
Serial.print("Found ghost device at ");
Serial.print(i, DEC);
Serial.print(" but could not detect address. Check power and cabling");
}
}

}

// function to print the temperature for a device
void printTemperature(DeviceAddress deviceAddress)
{
// method 1 - slower
[Vous devez être inscrit et connecté pour voir ce lien] C: ");
[Vous devez être inscrit et connecté pour voir ce lien] Temp F: ");
[Vous devez être inscrit et connecté pour voir ce lien] // Makes a second call to getTempC and then converts to Fahrenheit

// method 2 - faster
float tempC = sensors.getTempC(deviceAddress);
Serial.print("Temp C: ");
Serial.print(tempC);
Serial.print(" Temp F: ");
Serial.println(DallasTemperature::toFahrenheit(tempC)); // Converts tempC to Fahrenheit
}

void loop(void)
{
// call sensors.requestTemperatures() to issue a global temperature
// request to all devices on the bus
Serial.print("Requesting temperatures...");
sensors.requestTemperatures(); // Send the command to get temperatures
Serial.println("DONE");


// Loop through each device, print out temperature data
for(int i=0;i {
// Search the wire for address
if(sensors.getAddress(tempDeviceAddress, i))
{
// Output the device ID
Serial.print("Temperature for device: ");
Serial.println(i,DEC);

// It responds almost immediately. Let's print out the data
printTemperature(tempDeviceAddress); // Use a simple function to print out the data
}
//else ghost device! Check your power requirements and cabling

}
delay(1000);
}

// function to print a device address
void printAddress(DeviceAddress deviceAddress)
{
for (uint8_t i = 0; i < 8; i++)
{
if (deviceAddress[i] < 16) Serial.print("0");
Serial.print(deviceAddress[i], HEX);
}
}


///////////////


voili voilou, si ca peut t'aider...

Denis.
Revenir en haut Aller en bas
Gnome
Modérateur
Gnome


Messages : 7602
Age : 43
Localisation : Moselle (57)

Technologie One Wire sur arduino Empty
MessageSujet: Re: Technologie One Wire sur arduino   Technologie One Wire sur arduino EmptyVen 22 Juin 2012, 03:24

Merci
Revenir en haut Aller en bas
Contenu sponsorisé





Technologie One Wire sur arduino Empty
MessageSujet: Re: Technologie One Wire sur arduino   Technologie One Wire sur arduino Empty

Revenir en haut Aller en bas
 
Technologie One Wire sur arduino
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» choix d'une technologie led et calculs pour une rampe
» driver et arduino
» Automate récifal Sebduino du forum recifal ilot recif( à base de carte Arduino )
» Débuter avec l'Arduino
» arduino pour projet terrariophile

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
L'ilot récif: forum recifal, aquariophilie d'eau de mer ou marin , écumeur , pompe de brassage , :: La gestion du recif :: le projet arduino: l'automate de l'ilot récif-
Sauter vers: