Contrôle d'un servo avec Ir

Bonjour,

Je me suis lancée il y a peu dans un projet perso qui consiste à incrémenter des angles de rotation à mon servo moteur en utilisant une télécommande. Les tests avec servo seuls sont concluant, je peux modifier l'angle sans problème, tout fonctionne. Le problème arrive avec l'IR. je ne parviens pas à récupérer le code exact des touches de la télécommande. Avec simulation sur tinkercad ok mais avec arduino non.
Voici déjà les données matériel :

  • Arduino uno R3
  • Servo DS2312MG
  • Récepteur IR Iduino
  • Télécommande Keyes (set IR)

Concernant le setup:

  • Branchement servo vérifié
  • Branchement récepteur vérifié (GND sur broche signe -, signal sur broche signe S, alim au centre)
  • Branchement PIN arduino vérifiés
  • Télécommande envoie bien des infos
  • Récepteur reçois bien des infos
  • Alimentation USB de l'ordinateur
    Photo du setup :

IDE : bibliothèque irRemote 4.5.0 à jour

Voici le code de ma recherche touche télécommande. Il fonctionne mais si j'active plusieurs fois le touche 1 par exemple, avec une pause, le code est à chaque fois différent.

#include <IRremote.hpp>

const int recv_pin = 2; // Pin de réception IR

void setup() {
    Serial.begin(115200); // Démarrer la communication série à 115200 bauds
    IrReceiver.begin(recv_pin, DISABLE_LED_FEEDBACK); // Démarrer la réception IR
}

void loop() {
    if (IrReceiver.decode()) {
        Serial.print("Code reçu : ");
        Serial.print(IrReceiver.decodedIRData.decodedRawData, HEX); // Afficher le code reçu en hexadécimal
        Serial.print(" (Protocole : ");
        Serial.print(IrReceiver.decodedIRData.protocol, DEC); // Afficher le protocole
        Serial.println(")");

        IrReceiver.resume(); // Recevoir le prochain code
    }
}

A noter que j'ai pu trouvé le code hex touche 1 en utilisant la version 2.6 de IrRemote.h mais ce code ne fonctionne pas avec la version 4.5.0.

Avez-vous une idée ? :thinking:

Bonjour aurbe

J'ai testé ton code, sans le servo, et il fonctionne très bien, le décodage est régulier.
Essaies de déconnecter l'alimentation de ton servo.
Si ça améliore le décodage du récepteur, il faudra envisager d'alimenter ton servo séparément.

A+
Cordialement
jpbbricole

Merci jpbbricole, j'ai essayé tellement de choses différentes avant de poster ma question que j'ai zappé cette possibilité et effectivement, sans le servo, cela fonctionne parfaitement je reçois un code stable ! je vais donc alimenter séparément mon servo puisqu'au final ce sera de toute façon le cas et voir si le code qui combine le servo et son contrôle par iR fonctionne bien.

Top un grand merci pour ton aide !

Bonsoir aurbe

Certains servo génèrent beaucoup de "bruits électriques" et aussi consomment pas mal de courant, alors de l'alimenter "à travers" l'Arduino peut générer ce genre de problèmes.

Tu peux prendre un chargeur USB ainsi q'un câble USB que tu "éclates", le fil noir au GND du Servo et de l'Arduino et le rouge au + du servo et sur la pin 5V de l'Arduino. Ainsi ton montage est alimenté, sans utiliser le port USB de l'Arduino.

Autre solution sans "éclater" le câble USB, avec un module de ce tape:
image

Cordialement
jpbbricole

Bonjour,

@jpbbricole, je ne comprend pas cette philosophie

Qui selon moi est en contradiction avec

Tu n'alimente pas séparément Arduino et Servo, tu les alimente avec la même source à la place du câble USB du PC (sauf que le 5V pour Servo ne passe plus par l'Arduino).

Donc si le Servo pollue l'alimentation 5V extérieur qui alimente aussi l'Arduino, il pollue aussi Arduino.

Selon moi
. Le GND de l'alimentation 5V extérieur relié aux GND Arduino et Servo
. Le +5V extérieur au +5V Servo
. L'Arduino alimenté comme avant (comme sur la photo) par le câble USB du PC

= Alimentation séparées de l'Arduino et du Servi, avec GND en commun.

Oui si tu utilises une carte UNO où le micro fonctionne sous 5V.

Les cartes avec des micro plus modernes qui fonctionnent sous 3,3 V ont, pour rester compatible avec une alimentation USB, un régulateur 3,3V.
Ce régulateur est un filtre.

On est bien d'accord, mais je faisais ma remarque suite à

C.a.d, dans ce sujet, +5V bruité