Go Down

Topic: projet inutile donc absolument necessaire (Read 2524 times) previous topic - next topic

Artouste

Bonsoir
La roue tourne  :smiley-mr-green:
petit test ce matin de tentative de recup de courbe (durée par secteur) à chaque changement pour analyser l'amortissement (deceleration) et l'effet feuillard cliquet.

ça marche plutôt pas mal pour recuperer en log pour analyse
avec ce code.
Si les petits genies du C   8) peuvent y jeter un oeil, et m'indiquer des pistes d'optimisations (pas dans la façon de rédiger avec concision  8) , mais dans celle de gagner du "temps"
je suis preneur  :smiley-mr-green:

Code: [Select]
enum PinAssignments {
  encoderPinA = 2,

};

unsigned long Tparc=0; //  temps de parcours du secteur
unsigned long Tact=0; // Test pour  micros() en entrée
unsigned long ParcMax=3000000; // delai max en µs pour parcourir un secteur, si > arret theorique de la roue sur le secteur arrivée
unsigned long Tparct[256] ; // tableau de long stockant les valeurs micros() à chaque interruption
// A 12 secteurs/tour ça permet de tester + de 20 rotations = large pour l'appli en amortissement naturel

byte Iparc=0; // indice pour parcourir Tparct
byte Iinit=1; // numero du 1er secteur concerné par Tparc[0] V= 1--->12 , pas encore utlisé ici

boolean Sint=false; // passé par l'interruption oui/non
void setup() {

  pinMode(encoderPinA, INPUT);


  // encoder pin on interrupt 0 (pin 2)
  attachInterrupt(0, doEncoderA, CHANGE);

  Serial.begin(115200);
}


void loop(){


  if (Sint==true)
  {

    Serial.print(">"); // pour test d'entre/sortie de secteur (rotation) ,indique passage par int0

    Sint=false;
  }

  if (micros()-Tact > ParcMax) { // tempo en µsecondes pour test si pas eu d'interruption = roue à l'arret sur 1 secteur (theorie)


    Tact=micros();
    Serial.println();
    Serial.print("-- passe tempo --> SECTEURS PARCOURUS = "); 
    Serial.println(Iparc-1);
    for (byte i=1; i < Iparc; i++){
      Tparc=Tparct[i]-Tparct[i-1];
      Serial.print(Tparc);
      Serial.print(";"); // delimiteur pour log tableur

    }

    Serial.println();

    Iparc=0;
  }




}

// Interrupt on A changing state
void doEncoderA(){


  //Tparc=micros()-Tact;
  // Tparct[Iparc]=Tparc;
  // mettre le calcul du delta T pour alimenter les postes du tableau ici est trop consommateur en temps d'int
  // cette fonction est derivée ensuite

  Tparct[Iparc]=micros(); // plus rapide
  Iparc ++;

  Sint=true;

}







Artouste

bonjour
vu hier la realisation en nature de mon neveu (assisté à distance par tonton  :smiley-mr-green:  )
comme finalement c'est plutôt assez "rigolo" je ferais un rapport détaillé de la construction après son mariage en octobre.

mais pour ceux que ça intrigue :
le principe est basé sur la gestion de décélération apres apprentissage In situ (et pas entretien de vitesse comme initialement imaginé)
la capteur de position  est un encodeur absolu de chez AMS AS5043
le freinage/ralentissement est aussi basé sur du magnétisme  :smiley-mr-green:

reste maintenant à gérer le "vecteur transmission du choix" pour la soirée
pour l'instant c'est simplement géré par une simple entrée sur serial (01 - 12 )

-se degage les options :
-IR (telco TV)
- Bluetooth
- Wifi

je pense que l'option bluetooth sera privilegiée pour sa discretion (smartphone comme "maitre du jeux" ) et moins lourde à mettre en place que du wifi...

aussi étonnant qu'il semble , je n'ai jamais pratiqué/développé du bluetooth sur arduino (ni ailleurs d'ailleurs  8)  ), si vous avez des bons liens et/ou retour d'expe arduino sur l'interfaçage arduino/BT/smartphone , je suis preneur
Merci

infobarquee

salut Artouste,
en démontant une imprimante, j'ai pensé à toi ce WE.
j'ai récupéré des moteurs avec disque encodeur et le lecteur qui va avec, si ca te dis, je te les envoie.

sinon pour le BT, quel type de smartphone?

Artouste


salut Artouste,
en démontant une imprimante, j'ai pensé à toi ce WE.
j'ai récupéré des moteurs avec disque encodeur et le lecteur qui va avec, si ca te dis, je te les envoie.

sinon pour le BT, quel type de smartphone?

bonjour infobarquee
merci pour ta proposition, mais j'en ai des "caisses pleines"  :smiley-mr-green:

sous android , samsung ace en ce qui me concerne

infobarquee

tiens un truc sous processing via android
http://arduinobasics.blogspot.fr/2013/03/arduino-basics-bluetooth-android.html

Artouste


tiens un truc sous processing via android
http://arduinobasics.blogspot.fr/2013/03/arduino-basics-bluetooth-android.html

ça semble une bonne base de depart
merci infobarquee

infobarquee

de rien ;)
si je trouve quelque chose plus approchant je manquerai pas de le mettre

UniseV

Ça fait une très bonne idée de caméra cachée :


  • Un forain qui tient un stand de loterie confie celui-ci à un jeune employé et s'absente

  • Quelque clients viennent et gagnent systématiquement, le stand est dévalisé



Je vous laisse imaginer la tête du jeunot quand le patron revient...
EN: Libraries are my Gurus, they make me believe anything they want !
FR: Les librairies sont mes gourous, elles me font croire ce qu'elles veulent !

bricofoy

ou la tête du patron si c'est lui qui ne sait pas que la roue est pipée :P
-tu savais que si tu passe le CD de windows à l'envers, tu entends une chanson satanique ?
-non, mais il y a pire : à l'endroit, ça l'installe !

Go Up