Aller au contenu


Photo
- - - - -

Les entrées analogiques


30 réponses à ce sujet

#1 Mr Max

Mr Max

    Membre

  • Membres
  • 28 messages
  • Gender:Male
  • Location:Bordeaux

Posté 14 août 2016 - 05:37

Salut a tous,

 

Comme indiqué dans le titre j'ai quelques questions ...

 

Pour vous mettre dans le contexte, je compte faire un gant où l'on pourrait "voir" où sont chaque doigts.

Je veux donc utiliser des accéléromètres pour se repérer en x, y, et z, mais le problème c'est que une arduino uno n'a que 6 entrées analogiques or un accéléromètre en utilise 2 !

 

Je veux donc savoir si il y aurait un moyen d'avoir plus d'entrées analogiques avec mon arduino uno (comme par exemple ça :http://www.ebay.fr/itm/5pcs-Original-M74HC595B1R-8-Bit-Shift-Register-IC-3-State-DIP-16-/400985358254?hash=item5d5c96ffae:g:JAgAAOxyZwpSXoZv mais qui rajouterai des entrées analogiques)

 

Ma deuxième idée c'est d'utiliser 2 atmegat328p-pu et de les "raccorder" mais il faudrait aussi les raccorder au raspberry (afin d'avoir une "antenne wifioubluetooth"), mais le truc c'est que je ne pense pas que ce sois possible (à la limite raccorder une atmega avec le raspberry ça c'est possible mais le 2e je sais pas ...).

 

Voila

 

J'espère que j'ai été assé clair ^^.

 

Mr Max


"L’ignorant affirme, le savant doute, le sage réfléchit."

                                        

                                                                                  Aristote


#2 maximusk

maximusk

    Membre passionné

  • Membres
  • PipPipPip
  • 304 messages
  • Gender:Male
  • Location:Le Mans

Posté 14 août 2016 - 08:09

Salut. Alors pour le registre à décalage, tu peux oublier. Ce n'est pas fait pour l'analogique. Par contre, tu peut utiliser 2 atmega et les connecter via SPI ou I2C. Il y a aussi une autre solution qui est d'utiliser un ADC (convertisseur analogique numérique) externe, connecté par exemple en SPI.

#3 Mr Max

Mr Max

    Membre

  • Membres
  • 28 messages
  • Gender:Male
  • Location:Bordeaux

Posté 15 août 2016 - 08:11

Quand tu parle de "registre à décalage" tu parle du fait d'utiliser les accéléromètres en tant que "calculateur de position" ?

J'ai pas trop compris ...

Si je vais utiliser un adc (je prendrai celui-ci : http://www.ebay.fr/itm/like/171736935659?lpid=97&chn=ps).

Mais si j'ai bien compris en regardant la datasheet : ça m'utilise 2 sorties analogiques pour m'en donner ... 4 (en connectant en I2C)?

Du coup j'aurais 8 sorties analogiques disponibles (mais il m'en faudrait 10 pour mes 5 accéléromètres) ?

 

Donc je pense que je vais utiliser 2 atmega328p, connecté en SPI (http://maxembedded.com/2013/11/the-spi-of-the-avr/), car du coup j'aurais 12 sorties, vu que si je les connectes en SPI, ça m'utilise juste les pins SCK, MISO, MOSI, et SS !

 

Voila,

 

Juste dis moi si je me trompe stp pour savoir si ce sera bon,

 

Mr max


"L’ignorant affirme, le savant doute, le sage réfléchit."

                                        

                                                                                  Aristote


#4 maximusk

maximusk

    Membre passionné

  • Membres
  • PipPipPip
  • 304 messages
  • Gender:Male
  • Location:Le Mans

Posté 15 août 2016 - 11:44

Ah oui en effet, j'avais oublié que l'I2C est sur des entrées analogiques sur arduino. Dans ce cas, tu devrais plutôt t'orienter sur du SPI.



#5 Mr Max

Mr Max

    Membre

  • Membres
  • 28 messages
  • Gender:Male
  • Location:Bordeaux

Posté 15 août 2016 - 12:16

Oui comme je l'ai dit : " je pense que je vais utiliser 2 atmega328p, connecté en SPI car du coup j'aurais 12 sorties."

 

Mais pourrais tu m'expliquer ce que tu voulais dire en écrivant :

 

Alors pour le registre à décalage, tu peux oublier. Ce n'est pas fait pour l'analogique


"L’ignorant affirme, le savant doute, le sage réfléchit."

                                        

                                                                                  Aristote


#6 Jekert

Jekert

    Auteur

  • Modérateur
  • PipPip
  • 223 messages
  • Gender:Male

Posté 15 août 2016 - 12:44

Et utiliser des capteurs en i2c ? Tu peux les mettre en parallèle si les adresses sont différentes (je crois qu'il existe des composants pour le faire si ce n'est pas possible sur le capteur, faudrait vérifier)

Mon blog  ------  101robotics.com

Ouvrage    -----  Guide pour débuter avec Arduino

Ancien Blog  --  Journal d'un Arduinaute


#7 Mr Max

Mr Max

    Membre

  • Membres
  • 28 messages
  • Gender:Male
  • Location:Bordeaux

Posté 15 août 2016 - 01:02

Les accéléromètre oui je compte les utiliser en I2C, mais je ne pas pourrait les utiliser seuls ?

 

Pour info je prendrais ces accéléromètres : http://electroniqueamateur.blogspot.fr/2013/03/accelerometre-mma7455-et-arduino.html


"L’ignorant affirme, le savant doute, le sage réfléchit."

                                        

                                                                                  Aristote


#8 maximusk

maximusk

    Membre passionné

  • Membres
  • PipPipPip
  • 304 messages
  • Gender:Male
  • Location:Le Mans

Posté 15 août 2016 - 03:12

Ce que je voulais dire, c'est qu'un registre à décalage va transmettre des signaux logiques, donc ton information analogique tu la perdras. Un multiplexeur analogique par contre, ça pourrait fonctionner.

Et je pense que ce que voulais dire Jekert, c'est que certains accéléro ont une partie communication qui les fait communiquer directement en I2C et pas en analogique.



#9 Mr Max

Mr Max

    Membre

  • Membres
  • 28 messages
  • Gender:Male
  • Location:Bordeaux

Posté 15 août 2016 - 06:05

Je viens de refaire ma liste grâce tout vos conseils.

J'utiliserai donc: 1 raspberry accompagné d'un dongle wifioubluetooth

                          1 atmega 328p-pu (http://www.ebay.fr/itm/NEW-1PC-8-Bit-Micro-Controller-Microcontroller-ATmega328P-PU-FD-/111778581946?hash=item1a0685cdba:g:~kgAAOSwiLdWAR40)

                          2 multiplexeurs (http://www.ebay.fr/itm/5-x-CD4051-4051-Analog-Multiplexer-DeMultiplexers-TEXAS/140813286482?_trksid=p2045573.c100033.m2042&_trkparms=aid%3D111001%26algo%3DREC.SEED%26ao%3D1%26asc%3D20140423084956%26meid%3D5e62782f0623425fb84d507a51c891b8%26pid%3D100033%26rk%3D1%26rkt%3D8%26sd%3D140813286482)

                          5 accéléromètre (http://www.ebay.fr/itm/Accelerometre-3-axes-I2C-MMA7455-angle-sensor-Arduino-/121798943919?hash=item1c5bc864af:g:in0AAOSw8d9UwGfc)

                          1 régulateur de tension de 3,3 V (http://www.ebay.fr/itm/AMS1117-LM1117-3-3V-800mA-Regulateur-de-Tension-Module-Plaque-Board-PCB-Arduino-/252103437115?hash=item3ab2892b3b:g:SrsAAOSwFnFWBSzl)

                          Et l'alim + des fils

 

Par contre côté branchement j'ai quelques question ^^ ...

 

Pour le multiplexeur j'ai trouvé ce tuto (https://www.carnetdu...onventionnelles) or un accéléromètre a deux pins qui doivent etre raccordés à 2 sorties analogiques :

  • Vcc du breakout au 5 V de l'Arduino (car le breakout que j'utilise comporte un régulateur de tension:  si le vôtre n'en comporte pas, ou si vous n'êtes pas certain qu'il en comporte un, commencez par le brancher à 3,3V).
  • GND du breakout au GND de l'Arduino
  • SCL du breakout à l'entrée analogique A5 de l'Arduino
  • SDA du breakout à l'entrée analogique A4 de l'Arduino

 

Du coup d'après vous je branche sois tout les pins SCL sur un multiplexeur et tout les SDA sur un autre, ou peu importe ?


"L’ignorant affirme, le savant doute, le sage réfléchit."

                                        

                                                                                  Aristote


#10 maximusk

maximusk

    Membre passionné

  • Membres
  • PipPipPip
  • 304 messages
  • Gender:Male
  • Location:Le Mans

Posté 15 août 2016 - 09:16

On s'est mal compris.

Tes accéléromètres sont en I2C, tu branches tous les SDA ensembles, et tous les SDL ensembles, en leur mettant chacun une adresse différente. Tu n'es même pas obligé d'utiliser un Atmega, et tu peux les brancher directement sur le raspberry. Tu peux aussi te passer de multiplexeur et de régulateur 3.3V.



#11 Mr Max

Mr Max

    Membre

  • Membres
  • 28 messages
  • Gender:Male
  • Location:Bordeaux

Posté 15 août 2016 - 09:50

... Ahhhh ok, en fait je me suis compliqué la vie ... xD

 

Pour changer l'adresse des accéléromètres je le fait quand je les déclares, du genre : MMA_7455 Capteur1= MMA_7455(); ?

                                                                                                                                        MMA_7455 Capteur2= MMA_7455();

                                                                                                                                        MMA_7455 Capteur3= MMA_7455();

                                                                                                                                        MMA_7455 Capteur4= MMA_7455();

Parce que je vois pas comment faire vu que les 5 accéléromètres sont les mêmes ...

A moins que ça ne gêne pas ...


"L’ignorant affirme, le savant doute, le sage réfléchit."

                                        

                                                                                  Aristote


#12 maximusk

maximusk

    Membre passionné

  • Membres
  • PipPipPip
  • 304 messages
  • Gender:Male
  • Location:Le Mans

Posté 15 août 2016 - 09:59

D'ailleurs, pourquoi 3 accéléros ? Ce sont des accéléros 3 axes, un seul suffit, parce que sur ces modules, je ne sais pas comment changer les adresses, mais généralement, c'est soit une trame I2C à envoyer, soit des entrées à mettre à l'état haut ou bas pour choisir l'adresse.



#13 Mr Max

Mr Max

    Membre

  • Membres
  • 28 messages
  • Gender:Male
  • Location:Bordeaux

Posté 15 août 2016 - 10:42

En fait j'en veux 5 car je compte utiliser un accéléromètre pour chaque doigt.

Pour changer d'adresse je vais chercher demain, je répondrai si j'ai trouvé quelque chose.


"L’ignorant affirme, le savant doute, le sage réfléchit."

                                        

                                                                                  Aristote


#14 Mr Max

Mr Max

    Membre

  • Membres
  • 28 messages
  • Gender:Male
  • Location:Bordeaux

Posté 15 août 2016 - 11:03

Je crois que j'ai trouvé, c'est tout simple :const int Mode_address = 0x16;

Je l'ai trouvé là : http://www.elechouse.com/elechouse/images/product/MMA7455%20Module/MMA7455%20Module.pdf

 

Par contre  je voudrai savoir : si on change d'adresse dans un programme, cette adresse sera gardé par le capteur jusqu'à ce que je le renomme à nouveau ?

 

Car sinon j'ai toujours un problème : si je veux changer l'adresse je fais donc (const int Mode_address = 0x16; en supposant que c'est ça) mais je dois d'abord sélectionner lequel je veux "renommer" ...


"L’ignorant affirme, le savant doute, le sage réfléchit."

                                        

                                                                                  Aristote


#15 maximusk

maximusk

    Membre passionné

  • Membres
  • PipPipPip
  • 304 messages
  • Gender:Male
  • Location:Le Mans

Posté 15 août 2016 - 11:12

Je ne sais pas, ça dépend de comment est fait le capteur. Il y à des chances qu'il l'enregistre, sinon c'est un peu inutile de pouvoir changer les adresses.

Par contre, je viens de me rendre compte que j'avais pas tout lu sur ce que tu voulais faire. Je ne suis pas sur, d'autres corrigeront mes dires, mais je pense que des gyroscopes seraient plus adaptés que des accéléros pour capter le mouvement des doigts.



#16 Mike118

Mike118

    Staff Robot Maker

  • Administrateur
  • PipPipPipPipPip
  • 9 963 messages
  • Gender:Male
  • Location:Anglet

Posté 16 août 2016 - 01:17

Pour traquer les mouvement d'un objet, la combinaison d'un IMU 6 axes,  acceleromètre 3 axes et gyromètre 3 axes et pas mal. 

Un composant dans ce style : MPU-6050 convient bien. 
à voir si la taille te convient pour ton application...

 

Mais il en existe beaucoup d'autre. 

 

PS :

Pour avoir tester les IMU 9 axes ( incluant boussole magnétique 3 axes ), je ne recommande pas car je peux dire que se fier à une boussole magnétique, c'est plus traître que pratique surtout dans un robot...





 


Si mon commentaire vous a plus laissez nous un avis  !  :thank_you:

Nouveau sur Robot Maker ? 

Jetez un oeil aux blogs, aux tutoriels, aux ouvrages, au robotscope  aux articles,  à la boutique  et aux différents services disponible !
En attendant qu'une bibliothèque de fichiers 3D soit mise en place n'hésitez pas à demander si vous avez besoin du fichier 3D d'un des produits de la boutique... On l'a peut être ! 
Si vous souhaitez un robot pilotable par internet n'hésitez pas à visiter www.vigibot.com et à lire le sous forum dédié à vigibot!

 

Les réalisations de Mike118  

 

 

 


#17 Mr Max

Mr Max

    Membre

  • Membres
  • 28 messages
  • Gender:Male
  • Location:Bordeaux

Posté 16 août 2016 - 12:17

Du coup je vais prendre celui que tu m'a conseillé, et en plus j'ai trouvé un très bon article (http://playground.arduino.cc/Main/MPU-6050) et j'utiliserai aussi un 74HC595N c'est ce que l'article conseil si on veut utiliser plus de deux MPU-6050.

 

Et du coup dites moi si je me trompe : je n'aurais pas besoin de changer l'adresse des MPU-6050 car le programme lira un MPU-6050, puis passera au suivant et ainsi de suite?

 

"Suppose all AD0 lines are default high (3.3V), so every MPU-6050 is I2C address 0x69. That I2C address is however never used ! The Arduino makes one of the AD0 lines low, and uses that sensor at I2C address 0x68. After that is finished, the Arduino selects another AD0 line, and can use that sensor.
So every sensor is used at I2C address 0x68 (one by one) and 0x69 is never used."

 

Et pour l'achat des MPU-6050 j'en ai trouvé a Ebay mais ça me parai bas le prix ... http://www.ebay.fr/itm/GY-521-6-DOF-MPU-6050-Module-3-Axis-Accelerometer-Gyroscope-Module-Arduino-BF/131683139391?_trksid=p2047675.c100005.m1851&_trkparms=aid%3D222007%26algo%3DSIC.MBE%26ao%3D1%26asc%3D20140620091323%26meid%3D418f7643b39f428d87eb148ffac0d8d6%26pid%3D100005%26rk%3D1%26rkt%3D6%26sd%3D141860049751

 

Donc au final j'utiliserai (pour 2 mains) : - 2 atmega328p-pu (je sais je peux directement brancher au raspberry mais je prend des atemega car je compte faire les utiliser pour d'autres projets                                                                                               et en plus c'est plus léger pour le mettre au niveau des mains).

                                                               - 1 raspberry

                                                               - 2 74HC595N

                                                               - 2 HC-05 pour transmettre en bluetooth

                                                               - 2/3 breadboard a 400 trous

                                                               - 10 MPU-6050

                                                               - 1/2 régulateur de tension

                                                               - et des fils + des alims


"L’ignorant affirme, le savant doute, le sage réfléchit."

                                        

                                                                                  Aristote


#18 maximusk

maximusk

    Membre passionné

  • Membres
  • PipPipPip
  • 304 messages
  • Gender:Male
  • Location:Le Mans

Posté 16 août 2016 - 12:48

Alors pour l'histoire d'adresse, le MPU-6050 est par défaut à 0x69, et en mettant une entrée à l'etat bas, il passe à 0x68, donc en le faisant un pas u' pour chaque module, tu peux tous les lire. Inconvénient, il faut une sortie en plus sur l'atmega par MPU.
Pour le prix c'est normal c'est pas cher comme composant.
Par contre, à ta place (mais c'est un peu personnel, je ne suis pas fan du bluetooth), j'utiliserais du Wi-Fi.

#19 Mr Max

Mr Max

    Membre

  • Membres
  • 28 messages
  • Gender:Male
  • Location:Bordeaux

Posté 16 août 2016 - 01:00

Un " pas u' " ? J'ai pas compris ... c'est un branchement spécial, comme une porte logique ?

 

Concernant le bluetooth je vais t'expliquer pourquoi je l'ai pris ...

Alors en fait, il y aura les capteurs qui seront reliés à l'atmega, elle même reliée au HC-05 qui transmettra les données en bluetooth au raspberry qui a son tour les transmettra en wifi là où j'en aurait besoin.

Du coup ça m'évite d'avoir des fils partout et en plus, le wifi du dongle du raspberry a une portée de 100 m tandis que pour une arduino, un capteur à 100 m de portées c'est plus cher.


"L’ignorant affirme, le savant doute, le sage réfléchit."

                                        

                                                                                  Aristote


#20 maximusk

maximusk

    Membre passionné

  • Membres
  • PipPipPip
  • 304 messages
  • Gender:Male
  • Location:Le Mans

Posté 16 août 2016 - 01:55

Pour le wifi, tu as l'ESP 8266 qui ne coûte pas bien cher.
Le "pas u'" c'etait "par un", juste que j'écris de mon téléphone et que j'ai des gros doigts.



Répondre à ce sujet



  


0 utilisateur(s) li(sen)t ce sujet

0 members, 0 guests, 0 anonymous users