Programme sécurité

Bonjour , je viens une seconde fois (oui car le premier topic que j'ai lancé ne m'a pas été personnellement destiné car plusieurs personnes inconnus venaient partager leurs problèmes dans mon topic alors que mon problème n'était toujours pas résolu) donc je revient ici pour vous réexpliquer mon problème et essayer de le résoudre au plus vite , bien , voici : Je suis en projet de science de l'ingénieur en terminal pour le bac , mon projet est de créer un tiroir automatique contrôlable à distance par une télécommande ou un joystick , ma partie du travail est de sécuriser ce tiroir , c'est à dire que je dois faire en sorte qu'il se stoppe lorsque j'empêcherais sa fermeture ou son ouverture avec mon doigt (un peu comme un lecteur CD sur un ordinateur) , et je dois faire cela en fonction du moteur (pas de capteur de force ou autres), seulement , bah on a pas eu de cours sur cette façon de programmer et je ne sais ABSOLUMENT PAS comment m'y prendre , si quelqu'un à une idée sur la façon de créer mon programme de sécurité je serais ravit. Voici le code pour contrôler le tiroir , mon programme de sécurité doit y être rajouté à celui-ci.  

#include <boarddefs.h> // Utilisation des bibliothèques
#include <IRremote.h>
#include <IRremoteInt.h>
#include <ir_Lego_PF_BitStreamEncoder.h>

//A utiliser pour récuperer le code envoyé par la telecomande

//Création des variables
int RECV_PIN = 3; // Connectée sur l'entrée digitale 3
int DIR1_PIN = 7; // Connectée sur l'entrée digitale 7
int VIT1_PIN = 6; // Connectée sur l'entrée digitale 6
int DIR2_PIN = 4; // Connectée sur l'entrée digitale 4
int VIT2_PIN = 5; // Connectée sur l'entrée digitale 5
int BOUT1_PIN = 10; // Connectée sur l'entrée digitale 10
int BOUT2_PIN = 11; // Connectée sur l'entrée digitale 11

IRrecv irrecv(RECV_PIN); // Récéption des ondes Infrarouges

decode_results results; // Décoder ce que la télécommande envoie

void setup() // Action effectuée une seule fois 
{
  Serial.begin(9600); // Démarrer une liaison série avec l'ordinateur 
  irrecv.enableIRIn(); // Démarrer le receveur 
  pinMode(DIR1_PIN, OUTPUT);  // Définit la broche numérique DIR1 comme sortie
  pinMode(VIT1_PIN, OUTPUT);  // Définit la broche numérique VIT1 comme sortie
  pinMode(DIR2_PIN, OUTPUT);  // Définit la broche numérique DIR2 comme sortie
  pinMode(VIT2_PIN, OUTPUT);  // Définit la broche numérique VIT2 comme sortie
  pinMode(BOUT1_PIN, INPUT);  // Définit la broche numérique BOUT1 comme entrée
  pinMode(BOUT2_PIN, INPUT);  // Définit la broche numérique BOUT2 comme entrée
}

void loop() // Action répétée à l'infini
{ results.value=0; // Resultat = 0
  Serial.println (digitalRead (BOUT1_PIN)); // Afficher sur le moniteur série si il y a du courant sur le PIN 10
  irrecv.decode(&results); // Stocker le message envoyé par la télécommande
  irrecv.resume(); // Relancement de la lecture 
  
if(results.value == 0XCC36FF5F){ // Avancer; Si le resultat de la touche de la télécommande correspond à celui indiquer
  avance(1,255); // Marche avant 
  Serial.println("Avancer"); // Afficher dans le moniteur série "Avancer"
}
if(results.value == 0XCC1C9F5B){// Eteindre; Si le resultat de la touche de la télécommande correspond à celui indiquer
  avance(0,0); // Eteint
  Serial.println("Eteindre"); // Afficher dans le moniteur série "Eteindre"
}
if(results.value == 0X989D243A ){ // Reculer; Si le resultat de la touche de la télécommande correspond à celui indiquer
  avance(0,255); // Reculer
 
  Serial.println("Reculer"); // Afficher dans le moniteur série "Reculer"
}
  delay(100); // Délai de 100ms 
if(digitalRead(BOUT1_PIN) == 1){ // Si le bouton 1 est actionné
  avance(0,0); // Eteint
}
if(digitalRead(BOUT2_PIN) == 1){ // Si le bouton 2 est actionné
  avance(0,0); // Eteint
}
}

void avance(int sens, int vitesse) // Partie moteur
{
  digitalWrite(DIR1_PIN, sens);
  analogWrite(VIT1_PIN, vitesse);
  digitalWrite(DIR2_PIN, sens);
  analogWrite(VIT2_PIN, vitesse);
}

Tu ne fournis que du code.
Aucune indication sur le matériel utilisé :

  • moteur
  • contrôleur moteur
  • etc.

Pire, tu ne fournis aucune réflexion personnelle. Ton discours, en résumé, c'est : j'ai un sujet de bac urgent, je ne sais pas faire, faites le pour moi.

Réfléchis et propose des pistes, ou cherche des choses similaires sur internet pour voir la ou les solutions proposées. Choisis en une ou deux et reviens pour en discuter.

On veut bien t'aider mais ce travail amont doit venir de toi

La fonction de sécurité, ce n'est pas que du logiciel. C'est aussi et avant tout du matériel.
Avec quoi comptes-tu réaliser la fonction de sécurité?

Avec aucun matériel justement , juste en contrôlant le vérin...

Bonjour

sans réponse positive et constructive aux messages #1 et #2 il ya peu de chances que des suggestions soient faites

As-tu au moins une mesure du courant consommé par le moteur?

je vous donne tout : I=3.2
U=12V
V=23mm/s
F=100N

Ca c’est le vérin

il n'y a pas de moteur , tout fonctionne avec le vérin

Kevin2001:
je vous donne tout : I=3.2
U=12V
V=23mm/s
F=100N

Ca c'est le vérin

C'est pas ce que je voulais dire.
As-tu une mesure en temps réel de la consommation du vérin.
Sinon comment vas-tu savoir que ton tiroir bloque, sur un doigt par exemple.

Kevin2001:
il n'y a pas de moteur , tout fonctionne avec le vérin

C'est toi qui a parlé de moteur dans ta demande!
Et je suppose que le vérin ne fonctionne pas par l'opération du saint-esprit il doit sûrement y avoir un moteur dedans

Oui il est vrai , comment je peux vous transmettre la valeur de cette conso ?

fdufnews:
As-tu une mesure en temps réel de la consommation du vérin.
Sinon comment vas-tu savoir que ton tiroir bloque, sur un doigt par exemple.

Je pense que ce qui t’est demandé ici c’est : ton code fait-il une mesure du courant consommé par le vérin ? As-tu écrit les lignes de code (et éventuellement mis les composants électroniques qui permettent de la faire) qui te permettent de connaitre cette consommation ?

Au besoin cherche des exemples sur Internet.

non je ne vois pas de quoi vous parlez … je ne crois pas que j’ai tout ca … je recherche des exemples

Kevin2001:
non je ne vois pas de quoi vous parlez ...

Sur quelle grandeur physique mesurable penses-tu t'appuyer pour évaluer le fait que quelque chose bloque le mouvement du tiroir?

Ne crois-tu pas que c'est une réflexion que tu aurais dû avoir AVANT de venir nous questionner?

Oui sûrement mais quand je dis que je n’y comprends rien c’est vraiment le cas , je compte m'appuyer sur le couple moteur

Bonjour,

C'est un bon début.

Il faut maintenant trouver une relation en le couple du moteur et une autre variable que tu pourras exploiter.

Prend du temps pour comprendre comment fonctionne un moteur électrique.

Je ne vois pas comment on peut mesurer le couple d'un moteur commandé en PWM sans organe de mesure, de courant pas exemple.

Justement, on attend tous un sursaut de Kevin2001. Parce que pour l'instant l'encéphalogramme est plat.

aucune réponse , cela veut-dire quoi ?

On attend de toi une réflection sur les pistes données plus haut, sur ce que tu as compris de tes recherches.