Go Down

Topic: Communication SPI Matlab (Read 1 time) previous topic - next topic

Bonjour à tous les Arduinistes,

J'ai developper une interface graphique sur MATLAB pour piloter agreablement 16 DC DC Converter a l'aide de ma carte Arduino Uno.

Maintenant que l'interface est terminee a l'aide d'un GUI, j'y inclus petit a petit les commandes de l'arduino.

Sur mes channels (un channel contient un DC DC Converter) je dois piloter un potentiometre digital. Je me suis donc bien documenter sur la communication SPI disponible sur l'arduino mais je me heurte a un probleme.

Comment l'tiliser dans mon GUIDE Matlab ? En effet, le programme ne reconnait pas les instructions 'SPI.transfer" et autres joyeusetees.

J'ai fouiner toute la matinee sur le net en bombardant le moteur de recherche avec des "MATLAB SPI Library" et autres "MATLAB ARDUINO SPI" mais je n'ai rien trouve.

L'un d'entre vous s'est-il deja risquer a cela ?

D'avance merci.

Petit UP, puisqu'apparement personne n'as deja utiliser la librairie SPI du Arduino avec MATLAB, est il possible d'ecrire soit meme ses fonctions pour dialoguer depuis l'interface graphique MATLAB avec le potentiometre digital au moyen du protocole de communication SPI ?

En gros la question : Puis-je creer moi meme les fonctions SPI.begin, SPI.tramsfer, ect sur MATLAB pour les utiliser sans avoir besoin de librairie specifique qui de toute facon ne semble pas exister ?

D'avance, merci

Un nouveau UP, je suis entrain de reecrire moi meme les fonctions SPI.transfer et autres pour communiquer en SPI avec MATLAB.

Seulement comment avoir acces aux registres du microcontrolleur ATMEL present sur le carte arduino ?

Je sais exactement avec quelles valeurs renseigner les registre SPSR et SPCR mais evidemment lorsque j'ecris 'SPCR' sur MATLAB, le corniaud ne comprend point !  :smiley-eek-blue:

Toujours personne ?  8)

B@tto

Pour ma part je peux pas t'aider je connais pas du tout :s
Blog électronique : http://battomicro.wordpress.com/
Photographie : www.interactive-celebration.fr

fdufnews

On ne comprend pas très bien le besoin.
La librairie SPI dont tu parles est une librairie Arduino à ce qu'il me semble. Quel rapport avec Matlab?
Le SPI est utilisé entre le PC et l'Arduino ou entre l'Arduino et tes convertisseurs?

Un petit dessin pour éclaircir ton propos ne serait pas de trop.

J'ai une interface graphique sous MATLAB creer avec le GUIDE. Lorsque je clique sur un "pushbutton" LOAD, j'envoie la valeur ecrite dans une Editbox (de l'interface graphique) sur le potentiometre digital (d'un circuit relie a la carte arduino tout bien comme il faut).

Donc pour cela il faut que la valeur contenue dans l'editbox soit "transferer" dans le registre Data du microcontrolleur Atmel present sur la carte Arduino, c'est la qu'est mon souci.
Car lorsque j'ecris moi meme la fonction SPI.transfer pour ecrire la valeur dans le registre data, MATLAB ne connait pas le registre data...

Peut-etre une solution serait de lancer MATLAB qui stockerait la valeur dans une variable et de transferer cette variable dans le logiciel "Arduino" qui lui ecrit tres facilement dans le registre du microcontrolleur. Mais je ne sais pas si c'est possible :roll:

fdufnews

Désolé mais j'ai toujours pas compris quel est le lien physique entre Le PC sur lequel tourne Matlab et la carte Arduino.
On comprend bien que le potentiomètre numérique est relié par SPI avec la carte Arduino. Mais quel est le lien entre le PC et l'Arduino.

Le plus simple serait d'exploiter la liaison série de la carte arduino pour dialoguer avec le PC. Matlab permet d'exploiter les liaisons série sans problème. L'arduino récupèrerait la valeur reçue par la liaison série et la transmettrait par SPI aux potentiomètres numériques.

Ou alors j'ai vraiment rien compris à ton histoire.

Oui desole, c'est un peu complexe.

Et bien l'utilisateur pilote tout a partir du PC et donc de l'interface MATLAB.

Ma carte Arduino est reliee par USB au PC (avec une initialisation com port dans MATLAB). Et cette carte arduino pilote tout un tas de multiplexeur et autres demultiplexeur (qui gere 16 circuits imprimes) suivant les ordres percu a travers l'interface graphique MATLAB.

Par exemple si je veux eteindre un circuit, je clique dans mon interface graphique ce qui a pour consequence de mettre un niveau HAUT sur une patte de l'arduino et cette patte etant reliee a un interrupteur sur l'alimentation, le circuit s'eteind (rajoutons que 4 pattes de l'arduino changent aussi d'etat pour selectionner le dit circuit sur un demultiplexeur).

Mais je pense que tu avais compris car ta solution :
Quote
Le plus simple serait d'exploiter la liaison série de la carte arduino pour dialoguer avec le PC. Matlab permet d'exploiter les liaisons série sans problème. L'arduino récupèrerait la valeur reçue par la liaison série et la transmettrait par SPI aux potentiomètres numériques.
me semble correspondre. Meme si pour le moment c'est du chinois pour moi car je n'ai jamais farfouiller dans les liaisons series ou autre.
Je n'avais meme jamais utiliser ni MATLAB ni Arduino avant ce stage en entreprise.  :smiley-mr-green:

B@tto

Bin MATLAB passe par le port série, je vois pas comment autrement. Donc en fait, côté PC, MATLAB génère des trames codifiées qui sont reconnu par le programme que tu as dû charger sur l'arduino. Le programme interprète et réagit en conséquence. Par exemple j'imagine un protocole : tu veux mettre le pin 11 à l'état haut, et bien le PC envoir "PIN11-1", le programme déchiffre et comprend qu'il doit faire passer le PIN11 à l'état haut. C'est comme ça que fonctionne toutes les interfaces PC-Arduino. Donc il faut que côté PC, tu trouves comment généré un envoi par le port série via MATLAB, et que côté arduino, tu analyses le code et que tu insères tes propres interpretations pour qu'il les reconnaisse et modifie ton potar.
Blog électronique : http://battomicro.wordpress.com/
Photographie : www.interactive-celebration.fr

Go Up