Prise de mesure eBus Chaudière

Bonjour,
Je viens de trouver ces magnifiques Produits ARDUINO et j'aimerais me lancer sur un projet utilisant de l'Arduino Ethernet pour faire de la lecture des capteurs de ma chaudière qui transitent sur un bus eBus.
J'ai trouvé des exemples de montage dont 1 avec 1 arduino + convertisseur Serial-> USB (http://ebus.webhop.org/twiki/bin/view.pl/EBus/EBusKonverter)
Cependant j'aimerais savoir si je peux traiter Les infos Analogique reçu directement sans passer par le convertisseur (tout depuis l'arduino Ethernet).

d'avance Merci pour vos lumières.

J'aimerais vraiment me lancer sur ce projet.

elrick:
Bonjour,
Je viens de trouver ces magnifiques Produits ARDUINO et j'aimerais me lancer sur un projet utilisant de l'Arduino Ethernet pour faire de la lecture des capteurs de ma chaudière qui transitent sur un bus eBus.
J'ai trouvé des exemples de montage dont 1 avec 1 arduino + convertisseur Serial-> USB (http://ebus.webhop.org/twiki/bin/view.pl/EBus/EBusKonverter)
Cependant j'aimerais savoir si je peux traiter Les infos Analogique reçu directement sans passer par le convertisseur (tout depuis l'arduino Ethernet).

d'avance Merci pour vos lumières.

J'aimerais vraiment me lancer sur ce projet.

Bonjour
je ne comprend pas bien ta demande 8)
le "protocole" eBus utilise un liaison serie qui transmet "en numerique" un certains nombre d'informations.
Qu'entend tu exactement par traiter Les infos Analogique reçu directement sans passer par le convertisseur ?

Bonjour et merci pour la réponse,
Je me suis peut-être trompé a la lecture du code Arduino présent sur le lien fourni :
int in=A0
int out=13
int highvalue=((15.01023.0)/27.7); //....
int lowvalue=((12.0
1023.0)/27.7); //....
...
void loop()
{
inputvalue=analogRead(in);
if(inputvalue>highvalue) digitalWrite(out,1);
....
}

Je reformule ma question :wink:
peut-on lire les DATA (serial) directement sans les renvoyer vers le digitalWrite ?

Merci.
P.S.: si j'ai loupé une marche merci de me le dire :roll_eyes:

elrick:
Je reformule ma question :wink:
peut-on lire les DATA (serial) directement sans les renvoyer vers le digitalWrite ?

Merci.
P.S.: si j'ai loupé une marche merci de me le dire :roll_eyes:

bonjour

Je crois que tu melange "certains trucs" 8)
fais un petit croquis de ce que tu envisage de faire comme tu le comprend à cet instant , tu met l'arduino au centre et tu le relie aux equipements que tu souhaite raccorder.

Salut

Tout d'abord connaitre l'eBus !
Quelques explications ici : EBUS (serial buses) - Wikipedia

Donc il faut bien adapter les niveaux, non ?

A+
chabot380

Pour schématiser :


eBus ===/arduino Ethernet \ = RJ45 = Switch ....
--------------------/

dans mon idée je veux juste récupérer les DATAs Serial et les converir en Data UDP a destination de mon serveur.
Pourquoi En Ethernet ? car je n'ai pas de port serie ou Usb a porté de ma chaudière et en prenant la version PoE de l'arduino je me dégage de l'alimentation.

elrick:
Pour schématiser :


eBus ===/arduino Ethernet \ = RJ45 = Switch ....
--------------------/

dans mon idée je veux juste récupérer les DATAs Serial et les converir en Data UDP a destination de mon serveur.
Pourquoi En Ethernet ? car je n'ai pas de port serie ou Usb a porté de ma chaudière et en prenant la version PoE de l'arduino je me dégage de l'alimentation.

Bonjour,
Pas de nouvelle, bonne Nouvelle ou pas suffisamment intéressant ?

encore merci pour ces echanges

elrick:

elrick:
Pour schématiser :


eBus ===/arduino Ethernet \ = RJ45 = Switch ....
--------------------/

dans mon idée je veux juste récupérer les DATAs Serial et les converir en Data UDP a destination de mon serveur.
Pourquoi En Ethernet ? car je n'ai pas de port serie ou Usb a porté de ma chaudière et en prenant la version PoE de l'arduino je me dégage de l'alimentation.

Bonjour,
Pas de nouvelle, bonne Nouvelle ou pas suffisamment intéressant ?

encore merci pour ces echanges

bonjour
quelquefois les topics s'enfouissent :grin:

deux pistes (et demi) différentes (mais ça necessite toujours de faire l'adaptation ebus/serial (ttl ou rs232)
ttl http://ebus.webhop.org/twiki/pub/EBus/EBusKonverter/ArduinoEbus2USBreadonly.png
rs232 http://ebus.webhop.org/twiki/pub/EBus/EBusKonverter/eBusConverter.png

http://arduino.cc/en/Tutorial/UDPSendReceiveString
ou

avec le demi point , j'ajouterais si besoin un petit WR702N pour avoir la comm en wifi :grin:
http://www.ldlc.com/fiche/PB00125271.html

merci pour ces pistes (déjà exploré avant mon premier post :wink: )
mais je reviens sur ma question ci-après.
je poserais pas la question s'il y avait la possibilté de definir des seuil de valeur sur la class Serial
afin de me degager de l analogRead.

Jespere mettre bien fait comprendre =(

elrick:
Bonjour et merci pour la réponse,
Je me suis peut-être trompé a la lecture du code Arduino présent sur le lien fourni :
int in=A0
int out=13
int highvalue=((15.01023.0)/27.7); //....
int lowvalue=((12.0
1023.0)/27.7); //....
...
void loop()
{
inputvalue=analogRead(in);
if(inputvalue>highvalue) digitalWrite(out,1);
....
}

Je reformule ma question :wink:
peut-on lire les DATA (serial) directement sans les renvoyer vers le digitalWrite ?

Merci.
P.S.: si j'ai loupé une marche merci de me le dire :roll_eyes:

elrick:
merci pour ces pistes (déjà exploré avant mon premier post :wink: )
mais je reviens sur ma question ci-après.
je poserais pas la question s'il y avait la possibilté de definir des seuil de valeur sur la class Serial
afin de me degager de l analogRead.

Jespere mettre bien fait comprendre =(

bonjour
Pour être très franc, je ne comprend pas bien ton problème (ou ton soucis) 8)

ebus--->données serielles finies --->adaptation (niveaux et éventuellement débit) ---> équipement de transfert/reception----> mises à disposition (des données serielles finies) pour utilisation distante.

si le ebus (chaudière) envoie une trame "ABCD1234" ton problème est simplement de récupérer "ABCD1234" ailleurs ?
ton problème est de savoir comment au mieux faire transiter cette trame entre un point X et un point Y ?

Je n'ai pas réellement compris que les Datas sont réellement en serial (Binaire) sur ce Bus.
D'après (http://ebus.webhop.org/twiki/pub/EBus/EBusDoku/Spec_Prot_12_V1_3_1_E.pdf) eBUS Specifications :

Core Level Receiver
HIGH = 1 > 15V DC... maximal 24VDC
HIGH = 0 >= 8 VDC and <=12 V DC

moi je devais d'abord définir mes seuil avant de pouvoir lire mes Datas.

Donc je peux directement connecter mon eBus sur l'Arduino sans risque d’endommager quoi que ce soit ?
et les données reçu seront cohérente ?

Artouste:
bonjour
Pour être très franc, je ne comprend pas bien ton problème (ou ton soucis) 8)

ebus--->données serielles finies --->adaptation (niveaux et éventuellement débit) ---> équipement de transfert/reception----> mises à disposition (des données serielles finies) pour utilisation distante.

si le ebus (chaudière) envoie une trame "ABCD1234" ton problème est simplement de récupérer "ABCD1234" ailleurs ?
ton problème est de savoir comment au mieux faire transiter cette trame entre un point X et un point Y ?

elrick:
Je n'ai pas réellement compris que les Datas sont réellement en serial (Binaire) sur ce Bus.
D'après (http://ebus.webhop.org/twiki/pub/EBus/EBusDoku/Spec_Prot_12_V1_3_1_E.pdf) eBUS Specifications :

Core Level Receiver
HIGH = 1 > 15V DC... maximal 24VDC
HIGH = 0 >= 8 VDC and <=12 V DC

moi je devais d'abord définir mes seuil avant de pouvoir lire mes Datas.

Donc je peux directement connecter mon eBus sur l'Arduino sans risque d’endommager quoi que ce soit ?
et les données reçu seront cohérente ?

Artouste:
bonjour
Pour être très franc, je ne comprend pas bien ton problème (ou ton soucis) 8)

ebus--->données serielles finies --->adaptation (niveaux et éventuellement débit) ---> équipement de transfert/reception----> mises à disposition (des données serielles finies) pour utilisation distante.

si le ebus (chaudière) envoie une trame "ABCD1234" ton problème est simplement de récupérer "ABCD1234" ailleurs ?
ton problème est de savoir comment au mieux faire transiter cette trame entre un point X et un point Y ?

moi je lis ça :


c'est simplement du serial avec des niveaux "exotiques"

niveau bas entre 8 et 10 V
niveau haut > 15V

il faut donc "simplement" adapter ces niveaux pour qu'ils soient "compris" par l’équipement d’écoute
en TTL --> 0/5V
en RS232 vrai +12V -12V

J'ai réussi a me faire comprendre :wink:
(enfin, je suis une BI.... en électronique, enfin pour le moment, j'espère) :wink:

Donc Que puis-je faire pour avoir le moins de montage a faire tout en récupérant de bonne Data :wink:

Le code me dérange moins que le reste c'est pour cela que dans l'exemple que j'avais trouvé cette histoire de :
int highvalue=((15.0*1023.0)/27.7); //....
int lowvalue=((12.0*1023.0)/27.7); //....
me plaisait bien :disappointed_relieved:

en tout cas merci pour votre patience

Artouste:
moi je lis ça :
http://cjoint.com/13mi/CEhpfmUO8tv_extebu.jpg
c'est simplement du serial avec des niveaux "exotiques"

niveau bas entre 8 et 10 V
niveau haut > 15V

il faut donc "simplement" adapter ces niveaux pour qu'ils soient "compris" par l’équipement d’écoute
en TTL --> 0/5V
en RS232 vrai +12V -12V

elrick:
J'ai réussi a me faire comprendre :wink:
(enfin, je suis une BI.... en électronique, enfin pour le moment, j'espère) :wink:

Donc Que puis-je faire pour avoir le moins de montage a faire tout en récupérant de bonne Data :wink:

Dans la mesure ou la discussion ne sera qu’unidirectionnelle , et pour test sur base arduino j'utiliserais le schema basique en entrée sur serial arduino

mais perso je mettrais par securité ça en plus juste avant l'entrée arduino

Donc si j'ai bien compris
Si j'utilise un Arduino Ethernet w/PoE (je sais ça ne changement pas grand chose de savoir si c'est avec ou sans PoE :wink: ) à la place de ce celui sur le schema (tout en gardant tes préconisation) :wink:

En utilisant la lib SoftwareSerial et les pin 3, 4 (Digital) je pourrais avoir :
#################################
#define rxPin 3
#define txPin 4
SoftwareSerial mySerial = SoftwareSerial(rxPin, txPin);
void setup() {
// define pin modes for tx, rx:
pinMode(rxPin, INPUT);
pinMode(txPin, OUTPUT);
// set the data rate for the SoftwareSerial port
mySerial.begin(2400);
}
void loop() // run over and over
{
if (mySerial.available())
char c = mySerial.read();
....
}
################################
et je peux traiter mes caractère comme je veux ?

ok ça y est
Il y avait un truc qui me turlupinais :grin: avec tes analog read
en fait c'est "simplement" pour recuperer/definir les niveaux hauts et bas après le pont diviseur.
à suivre un peu plus tard pour une "interface plusse mieux et pas plusse compliquée :grin: "

Chuis un peu vieille école mais je ne brancherai pas un arduino sur la chaudière sans intercaler un optocoupleur .
La protection par une zener est assez illusoire.
Elle aura du mal à résister à une injection de 250volt.
On ne sait pas de quoi les constructeurs de chaudières sont capables pour économiser qq cents d'€ .

alienboats:
Chuis un peu vieille école mais je ne brancherai pas un arduino sur la chaudière sans intercaler un optocoupleur .
La protection par une zener est assez illusoire.
Elle aura du mal à résister à une injection de 250volt.
On ne sait pas de quoi les constructeurs de chaudières sont capables pour économiser qq cents d'€ .

bonsoir alienboats
je chuis bien d'accord aussi pour mettre de l'opto :grin:
d'autant que pour du 2400, pas besoin d'un foudre de guerre

la "prot zener" comme pour tout c'est évidemment contraint, mais c'est quand même pas mal souvent efficace 8)

bonsoir et merci pour ces echanges constructif :wink:
Effectivement dans un premier temps je veux juste recuperer les datas
pour moi c est le plus compliqué enfin pour le moment :wink:
donc si je reprend mon dernier post n'est pas si faux ? sauf qu'il me faut un opto...
Comme je disais je suis loin d etre un pro de l elect mais pour la programmation ça le fait plus :wink:

pensez-vous que jabuse si je demandais ou je le mets =(

en tous cas là je vais faire le pas JE VAIS COMMENCER MERCI

Reprenons depuis le début : Il y a deux problèmes à traiter .

  1. l'interface électrique
  2. l'aspect logiciel.

L'Ebus utilisant un mode de communication proche de la norme RS232, l'Arduino peut lire les trames via son entrée Rx.

Sur l'entrée Rx : un zéro= 0-0,5 volt, un un= 3,5-5 volt.

Sur l'Ebus : un zéro = 15-24 volt, un un = 9-12 volt .
à moins que ne soit l'inverse 8)

Les spécifications Ebus :
pages 24-25 des schémas d'interface sans et avec optocoupleur.
http://ebus.webhop.org/twiki/pub/EBus/EBusDoku/Spec_Prot_12_V1_3_1_E.pdf

C'est de l'électronique allemande donc ... pas simple .

Pour simplifier, au détriment de la fiabilité, on pourrait considérer que tout ce qui est supérieur à 15 volt est un zéro et que tout ce qui est inférieur est un un .
On perd la marge d'immunité au bruit entre 12 et 15 volt.
Que se passe t-il entre 0 et 9volt ?

Ceci peut se faire avec un comparateur ou un ampli op commandant un optocoupleur.

Un peu de boulot de conception, de calcul et de mise au point :grin: