Quelles sont les capacitées USB ?

Bonjour, j'ai entendu parler de Arduino en faisant des recherche pour un projet de type TIPE,

j'aimerais vous poser quelques questions au sujet de cette carte:

-Peut-il recevoir des informations sur le port USB, en temps réel?
(le but serrait de relier la carte au port USB d'un joystick, celui-ci envois 9 paquets de 2bits en hexa comme ci-dessous
06 C4 07 E8 07 FF 00 F0 D9, seulement j'aimerais ne récupérer que les paquet soulignés)

-Si cela n'est pas possible, je vous demande si il est possible de recevoir des instructions d'un ordinateur en temps réel?

-J'ai remarqué que la carte était dotée de fonction trigonométriques et d'un timer, peut-elle générer un signale de 41 Mhz proprement? (en d'autre terme, est-ce que le 41Mhz fait partis de sa bande passante?)

Salut

Bonjour, j'ai entendu parler de Arduino en faisant des recherche pour un projet de type TIPE,

j'aimerais vous poser quelques questions au sujet de cette carte:

-Peut-il recevoir des informations sur le port USB, en temps réel?
(le but serrait de relier la carte au port USB d'un joystick, celui-ci envois 9 paquets de 2bits en hexa comme ci-dessous
06 C4 07 E8 07 FF 00 F0 D9, seulement j'aimerais ne récupérer que les paquet soulignés)

Oui je pense

-Si cela n'est pas possible, je vous demande si il est possible de recevoir des instructions d'un ordinateur en temps réel?

Oui, il y a des commandes pour cela dans Arduino

-J'ai remarqué que la carte était dotée de fonction trigonométriques et d'un timer, peut-elle générer un signale de 41 Mhz proprement? (en d'autre terme, est-ce que le 41Mhz fait partis de sa bande passante?)

41MHz ça me parait beaucoup surtout que l'horloge du uC est de 20MHz je crois...

Après peut être que le mieux pour toi serait d'utiliser seulement la carte Arduino, mais programmer directement le uC en assembleur ou C...

Concernant la liaison avec un joystick en utilisant le port USB de celui ci, ça risque d'être compliqué, car il va falloir implementer tout les fonctionnalité d'un USB host dans l'arduino (enumeration des peripheriques, etc...). Je ne suis pas certain que l'arduino en soit capable, et quand bien même, c'est un enorme travail.

Concernant la liaison avec un ordinateur, c'est l'un des buts premiers de l'arduino. La connexion USB se comporte comme un port serie standard, et il est possible de communiquer avec l'arduino via enormement des languages (Flash, C++, Processing, java, Visual Basic, etc...) Tout les languages ayant accés au port serie peuvent communiquer avec l'arduino, et ceux qui n'ont pas l'acces peuvent utiliser des sockets ou englober des DLL.

L'arduino est cadencé à 16MHz en hardware, et une grande partie des fonctions utilisées dans l'IDE sont donc restreintes à cette vitesse. Une solution serait eventuellement d'utiliser l'arduino comme programmeur ISP, et de programmer les applications en C ou autre dans un logiciel comme AVR Studio ... afin de pouvoir utiliser d'autre crystal. Quel type de signal doit etre generé ? A mon avis la meilleure solution pour generer une frequence de 41MHz serait d'utiliser des composants externes a l'arduino.

merci de votre réponse, je vais y réfléchir

Une solution serait eventuellement d'utiliser l'arduino comme programmeur ISP, et de programmer les applications en C ou autre dans un logiciel comme AVR Studio ... afin de pouvoir utiliser d'autre crystal. Quel type de signal doit etre generé ? A mon avis la meilleure solution pour generer une frequence de 41MHz serait d'utiliser des composants externes a l'arduino.

Je vois pas trop comment faire pour utiliser l'Arduino en programmateur ISP :-?
Et pour les quartz, il y a une limite, sur un ATmega8 c'est 16MHz. Pour ton signal à 41MHz essaye plutôt avec des composants externes comme l'a dit melka.

C'est reçut, je ne peut donc pas me passer de l'ordinateur
on fera avec alors :wink:

C'est très facile de convertir l'arduino en programmateur ISP.
http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1217113409/

Concernant le crystal, l'atmega168 monte a 20MHz, mais le language Arduino ayant été developpé sur l'ATmega8 qui n'allait qu'a 16MHz, les nouvelles boards arduino ont gardé cette fréquence malgré le nouveau processeur. Je pense qu'en allant bricoler fort dans le librairies du noyau, ont peut monter a 20MHz (ca a peut etre même deja été fait sur la Sanguino ou l'Arduino utilisant l'Atmega664)

Je crois que je vais prendre ce micro contrôleur
encore quelques questions:

en existe-t-il plusieurs version?

Quel type de pré actionneur peut-on y relier?
(j'en cherche, des particulièrement rapide, qui peuvent switcher plusieurs fois en une mili-seconde enfait ce serrait bien qu'ils change d'état en une à dix micro seconde (en parallèle je cherche sur google ))

Il ya plusieurs version de l'Arduino. La plupart des solutions commercialisés fonctionne sur un ATmega168 cadencé à 16MHz. La différence majeure est surtout due au format du circuit imprimé : certains sont adaptées pour l'utilisation sur "breadboard", d'autres sont optimisés pour les dimensions minimales (pas de controleur USB, il faut un cable separé), etc... La seule "vraie" variante d'arduino est la Lilypad Arduino, qui si je ne me trompe pas, fonctionne à 1MHz et sur 3.3V.

Ensuite, dans les autres versions plus puissantes, il ya la Sanguino, mais je ne sais pas si elle est produite.

Pour débuter, je te conseille de commencer avec la version la plus répandue, à savoir l'Arduino Diecimilia. Tu n'as qu'a installer les drivers (pour Mac, Windows ou Linux), la brancher en USB et c'est parti.

Qu'entends tu par pré-actionneur ? Tu comptes utiliser une sorte de relai pour controler des éléments necessitant plus de puissance que ce que la carte peut fournir ? Je suis pas le plus fort en éléctronique analo, mais a mon avis, pour aller jusque 24V, n'importe quel transistor NPN ou PNP devrait suffire. Par exemple, un bete BC107 à un voltage maximale de 45V et une fréquence de transition de 100MHz...

Merci pour le conseil sur le modèle à choisir.

pour les contacteur, c'est pas tellement la puissance qui me gène, c'est plus la rapidité
,
je doit faire passer une série d'impulsion de période 20 milli secondes or jusqu'à maintenant

lorsque le temps était indiqué sur la brochure des contacteurs que j'ai trouvé, il parlais en 1000switch / heure

je pensais trouver quelque chose en cherchant du côté des thyristor mais je n'ai rien trouvé.

Ah mais si tu as cherché avec "contacteur" comme mot, c'est normal.

Définition de wikipedia :

Un contacteur est un appareil électrotechnique destiné à établir ou interrompre le passage du courant, à partir d'une commande électrique ou pneumatique. Il a la même fonction qu'un relais électromécanique, avec la différence que ses contacts sont prévus pour supporter un courant beaucoup plus important. Ainsi, ils sont utilisés afin d'alimenter des moteurs industriels de grande puissance (plus de 0,5 kW) et en général des consommateurs de fortes puissances. Ils possèdent un pouvoir de coupure important.

Ils sont aussi utilisés en milieu domestique pour alimenter des appareils électriques comme le chauffage ou le chauffe-eau, car les organes de commande (thermostat, interrupteur horaire et autres contacts de commande) risqueraient d'être rapidement détériorés par le courant trop important.

Comme tu peux le voir, un contacteur est destiné à de fortes puissances. Que souhaites tu commander ? La solution se trouvera certainement dans un transistor assez puissant. 20ms > 50Hz (courant alternatif EDF).

Citation de http://pagesperso-orange.fr/michel.hubin/physique/comp_puis/chap_cp3.htm

Les transistors de puissance sont utilisés dans des applications nécessitant jusqu'à des centaines de kilowatts et des fréquences de commutation inférieures à 10kHz.

Avec 50Hz, tu as de la marge ^^

Hmmm. Je vous pense le besoin un USB ce memory.right très grand ?. La capacité de l'USB est autour maintenant de 2 gigaoctets qu'il est trop grand pour moi cet espoir de mémoire de sorte que la mémoire qui te fera l'utilisation qui pour faire toute information.


Code de bons

J'ai une autre question:

comment faire passer plusieurs variables sur le port USB?

(faut-t-il des bit de séparation, ou peut-on lire des paquets qui arrive successivement?)

int PPM = 2;
int incomingByte = 0;
int y1 = 0;
int y2 = 0;
int y3 = 0;
int y4 = 0;

void setup()
{
Serial.begin(28800); /fixe la cadence de la liaison usb avec l'ordinateur en bps (Bit per second)/
pinMode(PPM, OUTPUT); /*active la sortie PPM (ici 2) */
}
void lecture()
{
incomingByte = Serial.read(); /*on lit ce qui arrive de l'odinateur via l'USB toutes les 10 millisecondes */
delay (10);

}
void main( incomingByte)
{
while M = 1

fonction de lecture /* dépent du format des données reçus par le port USB*/

digitalWrite(PPM, HIGH); /* on impose 1 à la sortie PPM*/

delay(12); /* le delay du processeur est déjà en miliseconde*/

digitalWrite(PPM, LOW); /* le signal est à 0 pour le temps correspondant à la voie 1 (peut-être la profondeur) */

delayMicroseconds(y1);

digitalWrite(PPM, HIGH);

delayMicroseconds(300);

digitalWrite(PPM, LOW);

delayMicroseconds(y2);

digitalWrite(PPM, HIGH);

delayMicroseconds(300);

digitalWrite(PPM, LOW);

delayMicroseconds(y3);

digitalWrite(PPM, HIGH);

delayMicroseconds(300);

digitalWrite(PPM, LOW);

delayMicroseconds(y4);

read M ;
}

Quelle fonction utilise-t-on sur l'ordinateur pour envoyer vers ardunio?
est-ce que les fonctions contenues dans la SDL peuvent faire cette tâche?

Le port USB de l'arduino ne peut pas être maitre donc il ne peut pas récupérer les infos d'un joystick.
Ce port USB ne véhicule qu'un lien série virtuel (celui du processeur de la carte). Ce lien virtuel permet justement de dialoguer avec un PC.
Tu parles de commuter des impulsions 20ms. Est-ce le secteur? si oui tu peut utiliser des opto triac par exemple. Il faudrait être plus clair sur ton besoin.

merci d'avoir répondu aussi vite.

C'est vrai que j'ai du mal à être clair puisqu'il me manque beaucoup de vocabulaire (c'est quoi un opto triac ?^ ^'?)

Ce lien virtuel permet justement de dialoguer avec un PC.

Ça me rassure, comme ça j'enverrais pas de conneries au PC. Le but est seulement de recevoir les données sur la carte. (c'est un essai de codeur PPM)

bon pour l'instant je ne cherche qu'à faire transiter les données par le câble USB

Je vais continuer à me renseigner.