Acquisition de données : faisabilité du projet

Bonjour à vous,

Tout d'abord, pour éviter tout malentendu sur les possibles idioties que je vais dire, je suis totalement débutant en électronique...et le concept de l'Arduino semble intéressant pour débuter!

Voilà, j'ai deux petits projets, qui sont plus ou moins liés. Venant de découvrir un tutoriel en cours d'écriture sur le site du zéro, je me permet de venir ici pour poser quelques questions quand à la faisabilité de mes projets avec la technologie Arduino, avant de me lancer dans la lecture des cours.

Avant toute chose, je voudrais vous présenter mes projet :

Projet n°1

Ce premier projet est de faire un système simple d'acquisition de données.

Je souhaite principalement récupérer une vitesse de rotation, une température, mais aussi une accélération. La durée de l'acquisition serait de 10 minutes environ. Il faut donc un moyen de stockage des données.

Les capteurs que je souhaiterais utiliser serait donc un capteur de présence (qui envoi 1 par exemple quand la cible passe, pour calculer la vitesse il suffirait de calculer le delta de temps), un thermocouple ou un capteur IR (je crois qu'on peut avoir une température avec ce type de capteur), et un accéléromètre.

La cerise sur le gâteau serait d'avoir 5 capteurs de température et 4 capteurs de rotation. Mais si c'est 1 et 1 je serais déjà content.

Le hic, et c'est la où ça commence à devenir peut-être problématique, c'est que je voudrais enregistrer ces données à une fréquence de 10 à 20 Hz, voir plus si possible. Après peut-être que c'est totalement réalisable, je n'en sais rien.

L'idée serait ensuite de connecter mon PC pour récupérer les données et les exploiter ensuite sous Excel, mais ça si j'ai les données c'est bon je sais faire!

Ce système serait un système embarqué, donc pas possible de mettre un PC à proximité, il faudrait enregistrer les données sur une carte SD par exemple.

Projet n°2

Le but serait de piloter en fonction des données acquises précédemment un moteur pas à pas, en fonction d'une vitesse de rotation. Il y aurait donc une boucle d'asservissement, avec en entrée la vitesse de rotation, en sortie la position du moteur.

Pour expliquer un peu mieux, je voudrais en fait faire des simulations avec les données récupéré dans le projet 1, qui est le projet prioritaire d'ailleurs. Le top serait de visualiser ces données en direct sur un PC.

Voilà, je pense avoir été pour le moment assez clair pour expliquer le projet.

Donc, mes questions :

Pensez-vous que ce projet est réalisable?

Si oui, est-ce techniquement très compliqué?

Est-ce que l'utilisation d'une carte Arduino permettrai de faire ce que je projette de faire?

Si non, auriez-vous une idée/proposition pour rendre ce projet réalisable?

Si oui, est-il possible d'utiliser de tels capteurs avec une carte Arduino?

Merci à tous pour votre aide, et soyez indulgent si je raconte des idioties. Et si vous voulez apporter des éléments qui ne se rapportent pas à mes questions, n'hésitez pas!

Si tu nous expliquais directement ce que tu compte faire, ce serait probablement plus simple que de décrire toute la procédure que tu veux mettre en place.
Tu dis que ce n'est pas possible de mettre un pc à proximité, quelle est cette proximité, 50 cm, 3m, 500m, 6 km ?

Bonjour,
J'ai un projet qui met en oeuvre pas mal de choses du même genre.Pour l'instant, il est un peu en sommeil mais:

Pour autant, je pense qu'avec un peu plus de patience, Arduino convient parfaitement à ce genre de projet: aucun pb avec la prog!
Meilleure chance, donc, et surtout, tout retour d'expérience me sera bien utile.

Bonjour,

Merci pour vos réponses, je suis content de voir qu'à priori, ça semble réalisable.

Pour ce que je veux faire précisément, je souhaite faire un petit système d'acquisition de données pour un véhicule, donc exactement la même chose que toi Patsol si j'ai bien compris! Avoir 5Hz, c'est peu mais pour débuter, je pense que ce n'est pas si mal, surtout que je vais certainement à avoir à me creuser la tête sur d'autres choses!

Question (peut-être débile) : pourquoi as-tu utilisé une carte d'acquisition? Il n'est pas possible de brancher directement des capteurs (comme l'accéléromètre) sur la carte Arduino? Et aussi, quel type de carte Arduino as-tu utilisé?

Merci à vous pour votre aide!

pourquoi as-tu utilisé une carte d'acquisition?

par paresse, peut-être? 8) j'avais comme ça un kit complet avec mes 3 gyros et mes 3 acceleros sur une seule "trame" I2c. Je regrette seulement de ne pas avoir choisi la carte avec les magnetos en plus.

Il n'est pas possible de brancher directement des capteurs (comme l'accéléromètre) sur la carte Arduino?

si, sans doute, sauf que ça ferait déjà 3+3ports.

Et aussi, quel type de carte Arduino as-tu utilisé?

Uno

Merci à toi Pastol pour tes réponses.

Ce que je vais faire c'est faire une liste de la totalité du matériel à acheter et je reviendrais ici pour présenter ma liste, pour être sûr que je ne me trompe pas dans le choix des composants et qu'il ne manque rien.

D'ici là, si des personnes ont des remarques, je suis bien entendu preneur! Merci!

Bonjour
Pour information : jusqu'à 40 000 echantillons /seconde !
http://arduino.cc/forum/index.php/topic,64813.0.html

Voici donc la liste du matériel que je compte utiliser :

Mesure température
Je compte mesurer 4 températures à l’aide de capteurs infrarouges : voici le capteur que je compte utiliser : http://www.sparkfun.com/datasheets/Sensors/Temperature/SEN-09570-datasheet-3901090614M005.pdf
Par contre je n’ai pas bien compris le câblage de ce capteur, comme montré en page 1 :
• Faut-il ajouter un condensateur comme expliqué dans le schéma ? Ou est-il inclus dans le composant ?
• Faut-il absolument utiliser les quatre pattes, ou peut-on en utiliser que trois : en effet, je pense avoir compris qu’il en faut une pour l’alimentation, une pour la masse, et une connectée à une fiche analogique pour lire le résultat non ? A quoi sert donc la quatrième ?

Mesure température 2
Je compte mesurer une autre température, mais avec un thermocouple. Je n’ai pas encore trouvé le thermocouple en question, mais ça va venir. Est-il possible de brancher un thermocouple sur une entrée analogique de l’Arduino ?

Mesure vitesse de rotation
Ensuite, je compte mesurer deux vitesses de rotation, qui seront entre 10000 et 20000tr/minutes. Pour cela, je vais utiliser un capteur inductif. Je pense réaliser une cible avec une ou plusieurs dents, et coder un morceau de programme qui me calcule le temps écoulé entre deux passages. A partir de là, je saurais en déduire la vitesse de rotation. Voici le capteur que je compte utiliser :
http://www1.produktinfo.conrad.com/datenblaetter/150000-174999/155814-da-01-ml-IND_SENSOR_M8_SN_1_5MM_de_en_fr.pdf
Cependant, ce capteur me pose un problème car la tension d’utilisation est de 10 à 30 VDC, et si j’ai bien compris la carte Arduino ne délivre que du 5V c’est cela ? Existe-t-il une possibilité de passer en 10V, sans abimer la carte bien sûr ?

Mesure accélérations
Je vais également avoir besoin de mesurer des accélérations, pour cela, je vais utiliser un accéléromètre deux axes, que voici : http://www.sparkfun.com/datasheets/Accelerometers/ADXL320_0.pdf
Je n’ai pas de questions particulières pour le moment concernant l’utilisation de cet accéléromètre.

Mesure position angulaire
Je vais également avoir besoin de mesurer une position angulaire, pour cela je pense utiliser un potentiomètre monté en bout d’axe : cela est-il possible ? Je ferais un étalonnage afin de connaitre mes valeurs de résistances en fonction de mes angles. De toute manière, l’évolution d’un potentiomètre est linéaire ? De plus, est-il possible de connecter le potentiomètre sur une entrée analogique de l’Arduino ?

Enregistrement des données
Ensuite, afin d’enregistrer les données recueillies, je vais avoir besoin d’interfacer ma carte Arduino avec une SD Card. J’ai vu qu’il existait des cartes toutes faites pour interfacer la carte Arduino directement avec des supports de cartes SD, mais je ne suis pas sur mon PC et je ne retrouve plus le lien. Je vous le donnerai dans un Edit d’ici demain soir.
Comme je pense que c’est un peu compliqué de communiquer et d’écrire sur une SD Card, voici un tutoriel pour s’inspirer, pour ceux que ça intéresse : Arduino Playground - SDCARD

Choix de la carte
Résumons, en gros je vais avoir besoin de 4+1+2+2+1 = 10 entrées analogiques pour lire les données (enfin si j’ai bien compris le fonctionnement global de l’Arduino)…
De ce fait, il n’est pas possible d’utiliser la UNO, car le nombre d’entrée n’est pas suffisant. Je vais donc me diriger vers la MEGA2560, qui a 16 entrées analogique. Ça tombe bien, car j’ai d’autres idées pour les utiliser…mais pas maintenant….il y a d’autres choses à apprendre avant !!!

Autre matériel :
Je vais suivre les conseils ce tutoriel(http://sciences.siteduzero.com/tutoriel-3-515615-presentation.html#ss_part_2) pour l’achat du matériel de base, dont je me servirai pour m’exercer.

Voilà, je sais que ce message est très long, mais je serai très reconnaissant auprès de ceux qui accepteront de répondre aux questions semées au cours de ce long message…
Je le dis et je le répète, je débute vraiment et c’est pourquoi je viens demander votre aide… n’hésitez pas à me faire des remarques !

Bonjour,

Désolé je prend le train en route.

catsur:
Mesure température
Je compte mesurer 4 températures à l’aide de capteurs infrarouges : voici le capteur que je compte utiliser : http://www.sparkfun.com/datasheets/Sensors/Temperature/SEN-09570-datasheet-3901090614M005.pdf
Par contre je n’ai pas bien compris le câblage de ce capteur, comme montré en page 1 :
• Faut-il ajouter un condensateur comme expliqué dans le schéma ? Ou est-il inclus dans le composant ?
• Faut-il absolument utiliser les quatre pattes, ou peut-on en utiliser que trois : en effet, je pense avoir compris qu’il en faut une pour l’alimentation, une pour la masse, et une connectée à une fiche analogique pour lire le résultat non ? A quoi sert donc la quatrième ?

Il n'y a pas de condensateur (n'y rien d'autre d'ailleurs) à mettre, se module ce controle via le protocole SMBus (~I2C ou TWI).
Les quatre pattes sont obligatoire, deux pour l'alimentation et deux pour le SMBus.
Exemple d'application : http://wiki.bildr.org/index.php/Infrared_Thermometer_-_MLX90614

catsur:
Mesure température 2
Je compte mesurer une autre température, mais avec un thermocouple. Je n’ai pas encore trouvé le thermocouple en question, mais ça va venir. Est-il possible de brancher un thermocouple sur une entrée analogique de l’Arduino ?

C'est possible uniquement via un adaptateur.
Exemple : Thermocouple sensor tutorial

catsur:
Mesure vitesse de rotation
Ensuite, je compte mesurer deux vitesses de rotation, qui seront entre 10000 et 20000tr/minutes. Pour cela, je vais utiliser un capteur inductif. Je pense réaliser une cible avec une ou plusieurs dents, et coder un morceau de programme qui me calcule le temps écoulé entre deux passages. A partir de là, je saurais en déduire la vitesse de rotation. Voici le capteur que je compte utiliser :
http://www1.produktinfo.conrad.com/datenblaetter/150000-174999/155814-da-01-ml-IND_SENSOR_M8_SN_1_5MM_de_en_fr.pdf
Cependant, ce capteur me pose un problème car la tension d’utilisation est de 10 à 30 VDC, et si j’ai bien compris la carte Arduino ne délivre que du 5V c’est cela ? Existe-t-il une possibilité de passer en 10V, sans abimer la carte bien sûr ?

Regarde du coté des "tachymètres" fait avec des arduino c'est exactement le même principe/hardware.
http://www.arduino.cc/playground/Learning/Tachometer

catsur:
Mesure accélérations
Je vais également avoir besoin de mesurer des accélérations, pour cela, je vais utiliser un accéléromètre deux axes, que voici : http://www.sparkfun.com/datasheets/Accelerometers/ADXL320_0.pdf
Je n’ai pas de questions particulières pour le moment concernant l'utilisation de cet accéléromètre.

hum ? L'accéléromètre est sur une breakout prête à l'emploi ou ces le circuit seul ?
Un truc dans ce genre : http://www.watterott.com/en/Breakout-Board-ADXL322 ?
Quoi qu'il en soit tout les ADX... s'utilisent de la même façon : http://www.arduino.cc/en/Tutorial/ADXL3xx

catsur:
Mesure position angulaire
Je vais également avoir besoin de mesurer une position angulaire, pour cela je pense utiliser un potentiomètre monté en bout d’axe : cela est-il possible ? Je ferais un étalonnage afin de connaitre mes valeurs de résistances en fonction de mes angles. De toute manière, l’évolution d’un potentiomètre est linéaire ? De plus, est-il possible de connecter le potentiomètre sur une entrée analogique de l’Arduino ?

Et un gyroscope 1axe ? Un truc dans ce genre : http://www.watterott.com/en/Gyro-Breakout-Board-ADXRS613-150/s
ça donne l'angle en valeur absolu par rapport à l'angle lors de l'allumage du module.

catsur:
Enregistrement des données
Ensuite, afin d’enregistrer les données recueillies, je vais avoir besoin d’interfacer ma carte Arduino avec une SD Card. J’ai vu qu’il existait des cartes toutes faites pour interfacer la carte Arduino directement avec des supports de cartes SD, mais je ne suis pas sur mon PC et je ne retrouve plus le lien. Je vous le donnerai dans un Edit d’ici demain soir.
Comme je pense que c’est un peu compliqué de communiquer et d’écrire sur une SD Card, voici un tutoriel pour s’inspirer, pour ceux que ça intéresse : http://www.arduino.cc/playground/Code/SDCARD

Pour tous ce qui est carte SD est arduino il y a deux possibilité :
attendre la librairie officiel "SD" amélioré avec la sortie de l'IDE arduino v1,
ou utilisez SDfat directement qui est la librairie pour carte SD la plus poussé (et une technique appelé "bulk transfert" pour écrire gros morceau par gros morceau et pas lettre par lettre).
Niveau hardware il existe un nombre incalculable de shield/ breakout SD pour arduino mais dans tout les cas le fonctionnement est le même.

catsur:
Choix de la carte
Résumons, en gros je vais avoir besoin de 4+1+2+2+1 = 10 entrées analogiques pour lire les données (enfin si j’ai bien compris le fonctionnement global de l’Arduino)…
De ce fait, il n’est pas possible d’utiliser la UNO, car le nombre d’entrée n’est pas suffisant. Je vais donc me diriger vers la MEGA2560, qui a 16 entrées analogique. Ça tombe bien, car j’ai d’autres idées pour les utiliser…mais pas maintenant….il y a d’autres choses à apprendre avant !!!

Même un mega2560 risque d'être un peu juste pour géré tout ce petit monde, c'est un gros projet (même un énorme projet) qui va demande énormément de code ! De faite tu n'a besoin "que de" 4x2 I/O pour les capteurs IR, le port SPI, 4 I/O (1 pour le thermocouple, 1 pour la carte SD et 2 pour le tachymètre) et deux entrées analogique (pour chaque ADX...).
Don théoriquement en utilisant le matos de mes liens une carte arduino UNO pourrait suffire (tout juste) mais une mega2560 serait effectivement un bien meilleur choix.

catsur:
Autre matériel
Je vais suivre les conseils ce tutoriel(http://sciences.siteduzero.com/tutoriel-3-515615-presentation.html#ss_part_2) pour l’achat du matériel de base, dont je me servirai pour m’exercer.

Jette une petit coup d'oeil sur "le guide arduino" et plus particulièrement sur la partie tutoriels, tu verra les tutoriels du site du zero sont pas les plus simple pour débuter :wink:

catsur:
Voilà, je sais que ce message est très long, mais je serai très reconnaissant auprès de ceux qui accepteront de répondre aux questions semées au cours de ce long message…

Le message est long est alors :stuck_out_tongue: la quote l'est encore plus :wink:

catsur:
Je le dis et je le répète, je débute vraiment et c’est pourquoi je viens demander votre aide… n’hésitez pas à me faire des remarques !

Le forum est fait pour çà ^^

skywodd a bien balayé le sujet !! Il n'a pas laissé grand chose de côté !

-Capteur inductif :
La tension Vcc ne doit pas quitter sa valeur 5V mais le capteur inductif peut être alimenté en 10V (environ) sur le fil brun avec l'alimentation que tu enverras à l'Arduino (tension notée Vin sur les cartes).
Le signal sortant (fil noir) peut etre envoyé à une entrée numérique après avoir été ramené impérativement à la plage 0/5V (pont diviseur par exemple, diode zener ecréteuse.....).
L'infra-rouge (en interruption de faisceau ou en réflexion) proposé par skywodd peut poser probleme si le milieu est susceptible de laisser un dépot de poussière, huile .... etc
Il existe également la solution du capteur à effet hall.

-Potentiometre : le curseur peut etre relié une entrée analogique pourvu que la valeur maximale ne dépasse pas 5V.

Globalement : pour moi la difficulté relative du projet réside dans la cohabitation 'temporelle' entre les 2 mesures de vitesses de rotation et l'écriture dans la carte SD , du moins s'il faut surveiller en permanence les rotations. Telles que je comprend les intentions (peut être à tort) les mesures de vitesse se feraient par deux interruptions :disappointed_relieved: à 333Hz (@20000t/mn et une interruption du µC par tour, pire encore si le rotor a plusieurs dents ...) ce qui ne laisserait pas beaucoup de place à l'écriture en SD.
Il me parait inévitable :
-soit de ne mesurer les vitesses de rotation que par intermittance pendant des 'fenetres' calibrées de comptage d'impulsions ou bien, avec pulsin(), de mesurer une période de rotation.
-soit de travailler en interruptions mais d'insérer des diviseurs de fréquence entre sondes et entrées numériques pour laisser au microcontroleur le temps de mener à bien d'autres tâches qui ne sont pas forcément toutes interruptibles. La mise au point d'un systeme avec deux interruptions aussi 'envahissantes' n'est pas simple d'autant plus qu'avec l'Arduino il n'y a pas de grandes facilités de débuggage.
-soit d'utiliser des convertisseurs fréquence/tension comme les classiques LM2907/LM2917 pour ramener les mesures de vitesses de rotation à de simples mesures de tensions faisables comme les autres par 'polling' et non par interruption.

LM2917.jpg

al1fch:
-Capteur inductif :
La tension Vcc ne doit pas quitter sa valeur 5V mais le capteur inductif peut être alimenté en 10V (environ) sur le fil brun avec l'alimentation que tu enverras à l'Arduino (tension notée Vin sur les cartes).
Le signal sortant (fil noir) peut etre envoyé à une entrée numérique après avoir été ramené impérativement à la plage 0/5V (pont diviseur par exemple, diode zener ecréteuse.....).

Je plussoie un point diviseur par 2 (10k / 10k par exemple) et une zener 5.1V devrait marcher.

al1fch:
L'infra-rouge (en interruption de faisceau ou en réflexion) proposé par skywodd peut poser probleme si le milieu est susceptible de laisser un dépot de poussière, huile .... etc
Il existe également la solution du capteur à effet hall.

Effectivement c'est une solution bien plus pratique ! (Pourquoi j'y ai est pas pensé ><)

al1fch:
Globalement : pour moi la difficulté relative du projet réside dans la cohabitation 'temporelle' entre les 2 mesures de vitesses de rotation et l'écriture dans la carte SD , du moins s'il faut surveiller en permanence les rotations. Telles que je comprend les intentions (peut être à tort) les mesures de vitesse se feraient par deux interruptions :disappointed_relieved: à 333Hz (@20000t/mn et une interruption du µC par tour, pire encore si le rotor a plusieurs dents ...) ce qui ne laisserait pas beaucoup de place à l'écriture en SD.
Il me parait inévitable :
-soit de ne mesurer les vitesses de rotation que par intermittance pendant des 'fenetres' calibrées de comptage d'impulsions ou bien, avec pulsin(), de mesurer une période de rotation.
-soit de travailler en interruptions mais d'insérer des diviseurs de fréquence entre sondes et entrées numériques pour laisser au microcontroleur le temps de mener à bien d'autres tâches qui ne sont pas forcément toutes interruptibles. La mise au point d'un systeme avec deux interruptions aussi 'envahissantes' n'est pas simple d'autant plus qu'avec l'Arduino il n'y a pas de grandes facilités de débuggage.
-soit d'utiliser des convertisseurs fréquence/tension comme les classiques LM2907/LM2917 pour ramener les mesures de vitesses de rotation à de simples mesures de tensions faisables comme les autres par 'polling' et non par interruption.

Autre méthode possible, sous-trainé le travail, un ATtiny85 coute quoi, 2-3€, avec un ATtiny pour chaque fonction (un pour le tachymétre, etc, etc) le tout relier par I2C l'arduino aurait beaucoup de travail et pourrai tout géré sans probléme (voir même une UNO) en plus le cablage serait modulaire donc plus propre !
Et cerise sur le gâteau on peu programmer les ATtiny avec l'IDE arduino via le projet arduino-tiny (-> google code).

skywodd:
Il n'y a pas de condensateur (n'y rien d'autre d'ailleurs) à mettre, se module ce controle via le protocole SMBus (~I2C ou TWI).
Les quatre pattes sont obligatoire, deux pour l'alimentation et deux pour le SMBus.
Exemple d'application : http://wiki.bildr.org/index.php/Infrared_Thermometer_-_MLX90614

Super, merci pour ce lien, car du coup au fil des pages indiquées j'ai trouvé un schéma de cablage (http://wiki.bildr.org/images/f/f1/MLX90614_hookup.png) pour ce capteur infrarouge, ainsi qu'un morceau de code pour aller y lire les données. Par contre, ils utilisent un condensateur et deux résistances, est-ce normal par rapport à ce que tu me dis? Est-ce parce que c'est via une autre méthode de faire?

skywodd:
C'est possible uniquement via un adaptateur.
Exemple : Thermocouple sensor tutorial

Ok je me renseigne de ce côté. Peut-être vais-je essayer d'utiliser un infrarouge si ça passe, mais bon pas sûr! J'explore donc cette piste.

skywodd:
Regarde du coté des "tachymètres" fait avec des arduino c'est exactement le même principe/hardware.
http://www.arduino.cc/playground/Learning/Tachometer

Ok, je regarde de ce côté là, mais à vue de nez ça me semble réalisable sans trop de soucis.

skywodd:
hum ? L'accéléromètre est sur une breakout prête à l'emploi ou ces le circuit seul ?
Un truc dans ce genre : http://www.watterott.com/en/Breakout-Board-ADXL322 ?
Quoi qu'il en soit tout les ADX... s'utilisent de la même façon : http://www.arduino.cc/en/Tutorial/ADXL3xx

Ok, merci pour ce lien, c'est vraiment super sympa. J'ai donc là aussi un schéma de câblage, ce qui est une aide considérable quand on débute en électronique. Par contre, sur ce schéma, j'aurai tendance à faire autrement pour le branchement de VCC et de GRD. Pourquoi GRD est-il branché sur A4 de l'Arduino et non sur le GRD de l'Arduino, et pourquoi VCC est-il branché sur A5 de l'Arduino et non sur le 5V de l'Arduino?

Pour ce qui est breakout prête à l'emploi ou circuit seul, je n'en sait malheureusement rien!

skywodd:
Et un gyroscope 1axe ? Un truc dans ce genre : http://www.watterott.com/en/Gyro-Breakout-Board-ADXRS613-150/s
ça donne l'angle en valeur absolu par rapport à l'angle lors de l'allumage du module.

Non, je ne suis pas tellement pour utiliser un gyroscope, car le système sera un système embarqué sur un véhicule en mouvement. Je risque donc d'avoir des interférences, je préfère donc utiliser un potentiomètre.

skywodd:
Pour tous ce qui est carte SD est arduino il y a deux possibilité :
attendre la librairie officiel "SD" amélioré avec la sortie de l'IDE arduino v1,
ou utilisez SDfat directement qui est la librairie pour carte SD la plus poussé (et une technique appelé "bulk transfert" pour écrire gros morceau par gros morceau et pas lettre par lettre).
Niveau hardware il existe un nombre incalculable de shield/ breakout SD pour arduino mais dans tout les cas le fonctionnement est le même.

Ok, voici donc le matériel hardware que je compte utiliser : http://www.cooking-hacks.com/index.php/shop/arduino/microsd-2gb-module-for-arduino.html. Je regarderai le moment venu les librairies le moment venu, mais pour le moment je pense que je vais avoir de quoi m'occuper à apprendre le fonctionnement de l'Arduino, et à brancher mes capteurs!

skywodd:
Même un mega2560 risque d'être un peu juste pour géré tout ce petit monde, c'est un gros projet (même un énorme projet) qui va demande énormément de code ! De faite tu n'a besoin "que de" 4x2 I/O pour les capteurs IR, le port SPI, 4 I/O (1 pour le thermocouple, 1 pour la carte SD et 2 pour le tachymètre) et deux entrées analogique (pour chaque ADX...).
Don théoriquement en utilisant le matos de mes liens une carte arduino UNO pourrait suffire (tout juste) mais une mega2560 serait effectivement un bien meilleur choix.

Il y a quelque chose que je ne comprend pas, car pour moi, d'après ce que j'ai compris avec mes bases de débutant, je vais avoir besoin :

Pour les capteurs IR : 4x2 entrées analogiques, soit déjà 8 prises analogiques. Peut-être ai-je pas compris quelques chose avec le port SPI dont tu me parles car je ne vois pas où l'utiliser.
Pour l'accéléromètre : 2 analogiques, on est d'accord. J'ai bien compris avec ton schéma, à condition qu'on ne connecte pas le GRD et le VCC sur des prises analogiques.
Pour le tachymètre : 2 entrée numérique pour un tachymètre, soit 4 entrées numériques. A la base je pensais qu'il fallait se brancher obligatoirement sur une prise analogique, mais en fait je suppose qu'on va regarder si on a une valeur "High" ou "Low" sur une entrée numérique, est-ce cela?

Au final, je ne comprend pas comment tu ferais pour utiliser une UNO, car il faut déjà huit prises analogiques rien que pour les capteurs I/R. Pour moi, je n'ai pas le choix, il faut une MEGA c'est clair, même si malheureusement c'est un peu plus cher.

skywodd:
Jette une petit coup d'oeil sur "le guide arduino" et plus particulièrement sur la partie tutoriels, tu verra les tutoriels du site du zero sont pas les plus simple pour débuter :wink:

Super, merci, je vais suivre ces tutoriels.

En tout cas un très grand merci à toi pour cette réponse détaillée, c'est très sympathique de ta part. Vraiment! :slight_smile:

Toutes mes excuses, j'avais commencé à rédiger ma réponse il y a un petit moment et je n'avais pas vu que deux nouvelles réponses avaient été postées.

J'ai bien pris en considération vos remarques, et pour le moment je dois avouer que je ne comprend pas tout... Je vais donc encore me documenter à droite et à gauche, et je vais faire un schéma de mon circuit en utilisant le logiciel Fritzing, histoire de voir si il n'y a pas de grosse bourdes.

L’électronique c'est intéressant, mais je pense que le plus dur c'est d'avoir les bases! Et moi, je ne les ai pas encore!

Je reviens vers vous dès que j'ai du nouveau, d'ici là si vous avez d'autres remarques n'hésitez pas!

Et un grand merci à vous deux!!!!

catsur:
Super, merci pour ce lien, car du coup au fil des pages indiquées j'ai trouvé un schéma de cablage (http://wiki.bildr.org/images/f/f1/MLX90614_hookup.png) pour ce capteur infrarouge, ainsi qu'un morceau de code pour aller y lire les données. Par contre, ils utilisent un condensateur et deux résistances, est-ce normal par rapport à ce que tu me dis? Est-ce parce que c'est via une autre méthode de faire?

Les deux résistances sont des résistances de pull-up pour le bus I2C, effectivement il faut les mettres (-> sortie à collecteur ouvert) normalement j'utilise les pull-up interne de l'arduino mais ici je sais pas si cela fonctionnerai.
Pour le condensateur de découplage, il est conseillé mais bon sauf cas spécial ça devrait pas poser de probléme sans.

catsur:
Ok, merci pour ce lien, c'est vraiment super sympa. J'ai donc là aussi un schéma de câblage, ce qui est une aide considérable quand on débute en électronique. Par contre, sur ce schéma, j'aurai tendance à faire autrement pour le branchement de VCC et de GRD. Pourquoi GRD est-il branché sur A4 de l'Arduino et non sur le GRD de l'Arduino, et pourquoi VCC est-il branché sur A5 de l'Arduino et non sur le 5V de l'Arduino?

C'est une question de féniasse en faite :wink: tout pattes d"un µc peut servir d'alimentation dans la mesure où le module de pompe pas trop de courant, mais oui pour bien faire il faudrait connecter les alimentations du ADX au alimentations de l'arduino.

catsur:
Pour ce qui est breakout prête à l'emploi ou circuit seul, je n'en sait malheureusement rien!

Si c'est un CI seul, vu les standards dans le domaine, et pour un débutant en électronique, le souder sera tout simplement impossible !
J'espère donc pour toi que c'est une breakout :wink:

catsur:
Ok, voici donc le matériel hardware que je compte utiliser : http://www.cooking-hacks.com/index.php/shop/arduino/microsd-2gb-module-for-arduino.html. Je regarderai le moment venu les librairies le moment venu, mais pour le moment je pense que je vais avoir de quoi m'occuper à apprendre le fonctionnement de l'Arduino, et à brancher mes capteurs!

Je connait cette breakout, elle marche trés bien avec la librairie SD officiel, de plus elle utilise le port SPI hardware de l'arduino (avec patte SS hardware) donc niveau temps d'écriture si la carte sd monté dessus est de pas trop mauvaise qualité il devrait être très court.

catsur:
Il y a quelque chose que je ne comprend pas, car pour moi, d'après ce que j'ai compris avec mes bases de débutant, je vais avoir besoin :

Pour les capteurs IR : 4x2 entrées analogiques, soit déjà 8 prises analogiques. Peut-être ai-je pas compris quelques chose avec le port SPI dont tu me parles car je ne vois pas où l'utiliser.
Pour l'accéléromètre : 2 analogiques, on est d'accord. J'ai bien compris avec ton schéma, à condition qu'on ne connecte pas le GRD et le VCC sur des prises analogiques.
Pour le tachymètre : 2 entrée numérique pour un tachymètre, soit 4 entrées numériques. A la base je pensais qu'il fallait se brancher obligatoirement sur une prise analogique, mais en fait je suppose qu'on va regarder si on a une valeur "High" ou "Low" sur une entrée numérique, est-ce cela?

Au final, je ne comprend pas comment tu ferais pour utiliser une UNO, car il faut déjà huit prises analogiques rien que pour les capteurs I/R. Pour moi, je n'ai pas le choix, il faut une MEGA c'est clair, même si malheureusement c'est un peu plus cher.

tututu :wink: Qui à dis que les capteurs IR fonctionnaient en analogique.
Ils utilisent le protocole nommé SMBus qui est compatible I2C, pour utiliser plusieurs capteurs de ce type (et vu que l'ont ne peut pas changer leur adressage) il faut 2 I/O numérique (ou analogique car les broches Ax peuvent aussi faire du numérique) par capteur.
Edit: Ces capteurs IR ont une petit mémoire EEPROM dans laquelle ont peu choisir l'adressage du capteurs donc plus besoin de faire de l'I2C "software" utilisant 8 broches, les broches I2C hardware A4 et A5 suffisent pour connecter les 4 capteurs IR.
http://www.arduino.cc/en/Reference/Wire

Pour l'accéléromètre ont est d'accord :wink:
Pour le tachymètre pas besoin de 4 pattes, les led peuvent rester alimentée tout le temps (connectée direct au vcc) et pour la réception un HIGH/LOW suffit si on utilise un photo-transistor (j'avais oublié de le préciser).
Total théorique :
capteur IR : 2 Analog (bus I2C pas le choix),
tachymètre : 2 Digital (si on utilise des photo-transistor ou des capteurs à effet hall),
accéléromètre : 2 Analog
ça passe sans probléme sur une UNO :wink: aprés c'est niveau puissance de calcul qu'il faut regarder :wink:
Mais si tu part sur un système avec deux Attiny85 pour le tachymètre à ce moment là tu pourrait prendre un UNO.

Génial pour les capteurs I/R! Bien pratique cet adressage, en effet ça permet d'économiser pas mal de broches!

Qu'appelle-tu µc? C'est pour Microcontrolleur?

Ok pour le phototransistor je vais aller me documenter pour voir ce que c'est et essayer de faire un cablage.

D'ici là, avant de vous proposer un schéma complet de mon système, face toute la théorie assimilée ces derniers temps, je vais acheter un peu de matériel et quelques capteurs pour commencer à pratiquer un peu, car je commence à être un petit peu dépassé!

Je reviens vers vous dès que j'ai avancé un peu plus!

En tout cas, merci pour tout les commentaires, c'est très sympa, ça m'a beaucoup aidé pour commencer!

A bientôt!

catsur:
Génial pour les capteurs I/R! Bien pratique cet adressage, en effet ça permet d'économiser pas mal de broches!

C'est le but de l'I2C :wink:

catsur:
Qu'appelle-tu µc? C'est pour Microcontrolleur?

Oui j'ai pris l'habitude de noté µc à la place de microcontrolleur parce que je suis une féniasse ^^.

catsur:
Ok pour le phototransistor je vais aller me documenter pour voir ce que c'est et essayer de faire un câblage.

Regarde plutot du coté de capteur à effet hall numérique (avec sortie logique ou à collecteur ouvert) il serait surement bien plus adapté dans ton cas comme là trés justement fait remarquer al1fch
Pour t'éviter les recherches :
Imgur
http://www.hobbytronics.co.uk/arduino-tutorial11-hall-effect

catsur:
D'ici là, avant de vous proposer un schéma complet de mon système, face toute la théorie assimilée ces derniers temps, je vais acheter un peu de matériel et quelques capteurs pour commencer à pratiquer un peu, car je commence à être un petit peu dépassé!

Je reviens vers vous dès que j'ai avancé un peu plus!
En tout cas, merci pour tout les commentaires, c'est très sympa, ça m'a beaucoup aidé pour commencer!

Ya pas de quoi on attend avec impatience de voir comment ça avance :wink: et si tu à d'autres question n'hésite pas !

Bonsoir à tous,

Ça y est, j'ai reçu mon matériel pour commencer à me familiariser avec Arduino. Je suis franchement impressionné par la facilité de prise en main de ce système. Avec un peu de recul, je me rend compte qu'il est possible de faire une infinité de choses avec ce matériel!!!

J'ai déjà réalisé quelques circuits/programmes, sans trop de difficulté, sans doute parce que j'ai de bonnes base en langage C, car c'est très similaire.

Je tenais donc à vous remercier pour vos conseils.

Après quelques heures, j'ai décidé de brancher le capteur de température Mlx90614 en suivant ce tutoriel. Aucune grande difficulté, si ce n'est qu'une erreur de débutant, car je n'avais pas mis la librairie au bon endroit je pense. Pour info, j'ai suivi ce tutoriel : http://bildr.org/2011/02/mlx90614-arduino/

Donc je suis content, car ça marche sans problème, c'est déjà bien.

Le point négatif, c'est que sur ce code, je dois dire que je suis très loin de tout comprendre.

En particulier, dès que c'est écrit un truc du genre 0x5A<<1, dev+I2C_WRITE ou tout truc en rapport avec l'I2C, je ne pige pas.

Si quelqu'un acceptait de me faire un petit résumé du fonctionnement de ce code, je suis preneur, c'est important pour moi car je voudrais brancher 4 de ces capteurs, et je vais donc être obligé de comprendre comment fonctionne l'adressage sur ce type de capteurs.

Mieux, si quelqu'un connait un bon tutoriel partant de "presque" zéro, si possible en Français, sur l'I2C, je suis preneur. Pour le moment j'ai cherché mais pas trouvé.

Je vous remercie par avance, et merci encore à ceux qui m'ont aidé, je ne regrette pas mes achats, et merci d'avance à ceux qui m'aideront!

Il faut dire que dans ton tuto, le bonhomme a tout réécrit, il n'utilise pas la librairie wire. Alors j'imagine que ça doit être plus rapide, mais c'est sûr que pour la comprehension du neophyte c'est moyen ... mon avis completement personnel sur la question : la librairie wire est bien plus facile à comprendre et à utiliser, surtout quand on n'a pas l'habitude de l'i2c. Donc soit essaye de comprendre le fonctionnement de ta sonde, et réécrit le code (je trouve ça bien plus formateur en plus !), soit trouve un autre tuto :slight_smile:

Ok, merci pour ta réponse.

Comme je débute, je n'ai pas encore bien saisi la différence entre l'I2C et le WIRE. J'essaie de trouver un tutoriel, mais je dois dire que pour les débutants ce n'est pas chose facile!

Si d'autres ont des liens à ce sujet, je suis preneur, car je souhaiterai câbler 4 de ces capteurs, et si je ne comprend pas la partie soft, je n'y arriverai jamais!

Bonjour,

l'I²C est un protocole de communication série défini par philips.
quelques infos sur wikipedia : I²C

La librairie wire est une librairie pour l'arduino qui permet de parler en I²C aux composants qui le comprennent.
quelques infos sur arduino.cc : la librairie wire
Par contre, sur le lien bildr que tu fournis, il est écrit que le le MLX90614 ne peux pas utiliser la librairie wire

(...)but unlike all the I2C sensors we have written about before this, the MLX90614 can’t use the wire library to communicate with it, so we will be using another library(...)

Sur le lien que tu as fourni, c'est une autre librairie qui est utilisée, elle s'appelle I2Cmaster et elle est développée par Peter Fleury,
Il y a un peu de documentation sur le site : librairie I2Cmaster doc HTML
Sur le site de bildr, la partie MLX90614 explique succinctement la méthode de lecture de donnée issue de l'addresse Ram 0x07 (température de l'objet, cf. datasheet MLX90614, qques infos pages 26 et suivantes par ex.) :
Pour la température du composant, c'est 0x06 (Ta : température ambiante)

Pseudo code example: Reading RAM address 0x07 (Tobj1)

  1. Send START bit
  2. Send Slave Address (0x00* for example) + Rd-Wr bit**
  3. Send Command (0b000x_xxxx + 0b0000_0111 -> 0b0000_0111)
  4. Send Repeated START_bit
  5. Send Slave Address + Rd-Wr bit**
  6. Read Data Byte Low (master must send ACK bit)
  7. Read Data Byte High (master must send ACK bit)
  8. Read PEC (master can send ACK or NACK)
  9. Send STOP bit
    Note* : Any MLX90614 will respond to address 0x00

Note**: Bit Rd-Wr has no meaning for MLX90614

Si tu utilises ce code il faut juste comprendre la partie adressage dans un premier temps...

Lionel