Go Down

Topic: RS232 à 230400 bauds ? Pour communication DMX (Read 2857 times) previous topic - next topic

GillesT

Bonjour,

J'ai le projet de piloter une série de projecteurs avec un bus DMX.
Ce que désire c'est créer une interface Web, communiquant les valeurs de chaque canaux via le shield Ethernet à l'ARDUINO (ça c'est pas trop le problème). Mais par la suite l'ARDUINO reconstitue la trame DMX et l'envoie sur un adaptateur ARDUINO-->DMX, pour rendre la trame compatible avec la norme.L'adaptateur je l'ai fabriqué.

Voici le problème :
Les projecteurs que je possède sont des projecteurs "didactisés". Ce sont d'anciens projets STI GE (section aujourd'hui disparue). La fréquence de réception était figé à 230400 bits/s. Les processeur utilisé était des PIC.
Chaque canal DMX est l'équivalent d'un protocole RS232 (bit de start, 8 bits de données, 2 bits de stop). J'aimerai donc utiliser la librairie ARDUINO de la RS232. Mais je n'arrive pas à trouver les fréquences maxi que l'on peut utiliser (en gros savoir si on peut utiliser un débits de 230400 bits/s).
Les fréquences données sont des fréquences pour une communication à un PC. Ce n'est pas mon cas.

Est ce que quelqu'un saurait si c'est possible ou non?
Et si c'est possible, est ce qu'il suffit de noter le débit comme suit :

Serial.Begin(230400);

Merci de votre réponse.


Artouste



Les fréquences données sont des fréquences pour une communication à un PC. Ce n'est pas mon cas.

Est ce que quelqu'un saurait si c'est possible ou non?
Et si c'est possible, est ce qu'il suffit de noter le débit comme suit :

Serial.Begin(230400);

Merci de votre réponse.




bonjour
testé avec l'exemple comm---> asciitable.ino et terminal en 230400 (custom)
ça passe

GillesT

Merci Artouste, avec ça, je vais pouvoir faire mes communications.

Problème résolu.

Bonne continuation

GillesT

Bonjour,

Je remet ce topic en avant pour poser un autre problème pour le DMX.
L'envois de canaux (boucler sur un envois en RS232 à une vitesse de 250k bit/s de 193 canaux).
Mais, maintenant je me heurte à un autre problème.
Pour finaliser la trame, il faut que je rajoute deux bits de début de trame (un appelez "BREAK" (niveaux bas (NL0), de 88µs et un un "MAB" (niveau haut NL1)de 8µs), avant de commencer l'envois des canaux.
Voici à quoi ressemble le programme :

Code: [Select]
//Programme d'envois d'une trame complete DMX, conforme à la norme
//Utilisation d'une carte ARDUINO MEGA (d'où l'utilisation du Serial1)
//La borne 22, permet une synchronisation de début de trame pour une lecture
//à l'oscilloscope

void setup()
{
  pinMode(22,OUTPUT);//signal de synchronisation pour une visualisation à l'oscilloscope
    Serial1.begin(250000,SERIAL_8N2); //configuration de la liaison série 1
  //à 250kbit/s, 8 bits, Sans bit de parité et 2 bits de stop
  digitalWrite(16,HIGH);//TX1 au NL1, état d'attente (MBB)
}

void loop()
{
  digitalWrite(22,HIGH);//début de l'impultion de synchronisation
  digitalWrite(16,LOW);//Installation du BREAK(début de trame)
  delayMicroseconds(88);//Attente de 88µs (là, débute les problème)
  digitalWrite(16,HIGH);//Envois du MAB, pour permettre le start (NL0) des canaux
  digitalWrite(22,LOW);//synchronisation de début d'envois des canaux
  delayMicroseconds(8);//Attente de 8µs (là le temps est alléatoire)
  for(n=0;n<=193;n++)//Boucle pour l'envois de 193canaux
  {
    Serial.write(00);//Envois d'une valeur, ici zéro, mais c'est juste pour les éssais
  }
  delay(1); //temps d'attente entre deux trame
}

Le problème est le suivant, à l'oscilloscope la trame donnée rend des valeur de BREAK et de MAB, aléatoire.
LEs 88µs et 8µs ne sont pas respectées.
Je penche pour un problème d'interruption utilisé par le delayMicroseconds et le Serial1, mais pas sur.

Du coup j'aimerais savoir si quelqu'un serais si on peut désactiver le Serial ou non? Enfin avoir une solution.
(Seul, l'instruction delayMicroseconds à 8µs fonctionne bien)

Artouste


Bonjour,

Je remet ce topic en avant pour poser un autre problème pour le DMX.
L'envois de canaux (boucler sur un envois en RS232 à une vitesse de 250k bit/s de 193 canaux).
Mais, maintenant je me heurte à un autre problème.
Pour finaliser la trame, il faut que je rajoute deux bits de début de trame (un appelez "BREAK" (niveaux bas (NL0), de 88µs et un un "MAB" (niveau haut NL1)de 8µs), avant de commencer l'envois des canaux.

Le problème est le suivant, à l'oscilloscope la trame donnée rend des valeur de BREAK et de MAB, aléatoire.
LEs 88µs et 8µs ne sont pas respectées.
Je penche pour un problème d'interruption utilisé par le delayMicroseconds et le Serial1, mais pas sur.

Du coup j'aimerais savoir si quelqu'un serais si on peut désactiver le Serial ou non? Enfin avoir une solution.
(Seul, l'instruction delayMicroseconds à 8µs fonctionne bien)

bonjour
en fait tu veux te creer ta propre librairie DMX ?
parce que sinon , il semble exister des lib déjà eprouvées
entre autres voir
http://code.google.com/p/tinkerit/wiki/DmxSimple

Il y a sur le forum un specialiste du DMX en la personne de Karistouf et son projet pshuuu
voir son site
http://www.le-chat-noir-numerique.fr/index.html

GillesT

Bonjour,

Merci pour la réponse.
En fait, je suis professeur et je voudrais faire un projet avec mes élèves sur le DMX.
Le dernier lien donne une très bonne interface, mais toutes faites.
Il ne me manque juste ce problème de délais en micro seconde.

Je sais qu'il existe une librairie pour le DMX. Mais je voulais essayer d'en refaire une pas trop compliqué pour que mes élèves comprenne comment fonctionne ce protocole en leur fesant recréer ces trames.

J'ai des élèves entre 16 et 18 ans. La pluspart avec des idées recu sur l'informatique industriel, adepte du "plug & play". Je veux leur montrer que c'est  pas si simple. Que tout ne se résume pas à un clavier et un écran.

C'est peut être un peu vieux jeu, mais c'est une méthode qui marche.

J'ai déjà une table de mixage DMx et des projecteur, je sais comment ça fonctionne. Mais c'est l'adaptation qui m'interresse.


Go Up