IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Arduino Discussion :

Programme H-brige en servo


Sujet :

Arduino

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Collégien
    Inscrit en
    Mai 2016
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Collégien

    Informations forums :
    Inscription : Mai 2016
    Messages : 5
    Par défaut Programme H-brige en servo
    h-bridge besoin d'aide pour un programme

    alors j'ai acheter une carte pour vraiment pas cher,sur un site bien connu ebay.
    don perso je pense que l'on peut lui faire de multiple application...
    elle comporte un atmega48 qui est de la mémé famille que le atmega328 pin a pin moins de mémoire pour le atmega48.
    est un driver mosfet de puissance HIP4081A.
    mon but est de détourner de sa première utilisation
    variateur de vitesse pour un moteur a courant continu 50v 2000w...Pas mal, hein ?

    j'ais décortiquer la carte



    pour l'application dont j'aurai besoin je voudrai le transformer en un gros servo h-bridge.

    mai je ne suis pas sur de mon code,je n'ai pas mi de pwm (analogWrite) car je ne savais pas trop quoi faire.


    si l'on peut m'aider merci



    cordialement

    albert


    Code c++ : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    /*
        
        H-bridge_servo_ATmega48
        
        driver mosfet HIP4081A
        OUTPUT PIN24/PC1 (ADC1/PCINT9)=enable disable circuits HIP4081A .............a mettre a l'état haut (HIGH) ARDUINO= A1
        ....................................................
        sens de rotation moteur
        OUTPUT pin9/(PCINT21/OC0B/T1)    PD5 =(ALI -> circuits HIP4081A)...utiliser pour ce programme ARDUINO= D5
        
        OUTPUT PIN10/(PCINT22/OC0A/AIN0) PD6 = (bli -> circuits HIP4081A)...utiliser pour ce programme ARDUINO= D6
        ....................................................
        pin25/PC2 (ADC2/PCINT10)...input/OUTPUT =A2
        pin26/PC3 (ADC3/PCINT11)...input/OUTPUT =a3
        
        pin27/PC4 (ADC4/SDA/PCINT12)...input ...utiliser pour ce programme (position_moteur) ARDUINO=A4
        PIN23/PC0 (ADC0/PCINT8)...INPUT ...utiliser pour ce programme pulsein   ARDUINO=A0
    */
     
      unsigned long  ch1; // canal valeur
      unsigned long temps;
      int position_moteur; 
      int SENSOR_PIN = 27; //  potentiometre ARDUINO=A4
      int RPWM_Output = 9; // Arduino PWM broche de sortie 5
      int LPWM_Output = 10; // Arduino PWM broche de sortie 6
      int val;
      int enable_circuit = 24;
      void setup()
     {
      pinMode(SENSOR_PIN, INPUT);// PIN 27 =  ARDUINO = A4
      pinMode(enable_circuit, INPUT);// PIN 24 =  ARDUINO = A1
      pinMode(23, INPUT);// PIN 23 =  ARDUINO = A0
      pinMode(RPWM_Output, OUTPUT);
      pinMode(LPWM_Output, OUTPUT);
     
      }
     
      void loop()
      {
       digitalWrite(enable_circuit, HIGH);//enable & disable circuits HIP4081A
     
       ch1 = pulseIn(23, HIGH, 25000); // Lire PWM.. largeur d'impulsion du rc pwm
       temps = map(ch1,1000, 25000,-500,500);
     
       val = analogRead(SENSOR_PIN); //lecture de la position du moteur
       position_moteur = map(val, 0, 1023,-500,500);
     
     //*************************************************************************
       switch(temps)
       {
        case if (temps < 512):
        {
     
           // Rotation inverse
     
        digitalWrite(LPWM_Output, LOW); //analogWrite
        digitalWrite(RPWM_Output, HIGH);//analogWrite
        break;
        }
        case if (temps < -512):
        {
         // Rotation vers l'avant
     
        digitalWrite(LPWM_Output, HIGH);//analogWrite
        digitalWrite(RPWM_Output, LOW);//analogWrite
        break;
        }
        case if (temps == position_moteur):
        {
     
         // stop moteur
            digitalWrite(LPWM_Output, LOW);++
        digitalWrite(RPWM_Output, LOW);
     
        break;
        }





    Nom : H-bridge_ATmega48.JPG
Affichages : 221
Taille : 138,0 Ko

  2. #2
    Modérateur

    Avatar de Vincent PETIT
    Homme Profil pro
    Consultant en Systèmes Embarqués
    Inscrit en
    Avril 2002
    Messages
    3 252
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Consultant en Systèmes Embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 252
    Par défaut
    Salut,
    Ta condition switch me semble bizarre ! Normalement au niveau des case tu as les valeurs que peut prendre la variable temps alors que toi tu as mis des conditions if

    à mon avis ça ne compile pas ce genre de chose.

    Ps: je ne comprends pas bien ce que tu souhaites faire au final.

  3. #3
    Expert confirmé
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 660
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 660
    Par défaut
    bonsoir,

    quel ce modèle de carte ? Est-elle compatible Arduino ? Car si elle n'est pas "compatible Arduino" il est peu probable que tu puisses utiliser l'IDE Arduino pour programmer cette carte.

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Collégien
    Inscrit en
    Mai 2016
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Collégien

    Informations forums :
    Inscription : Mai 2016
    Messages : 5
    Par défaut
    arduino

Discussions similaires

  1. Programme de boot qui passe la main à Windows
    Par Bob dans le forum Assembleur
    Réponses: 7
    Dernier message: 25/11/2002, 03h08
  2. [Kylix] Probleme d'execution de programmes...
    Par yopziggy dans le forum EDI
    Réponses: 19
    Dernier message: 03/05/2002, 14h50
  3. communication entre programmes
    Par jérôme dans le forum C
    Réponses: 12
    Dernier message: 16/04/2002, 08h05
  4. Comment débuter en programmation ?
    Par Marc Lussac dans le forum Débuter
    Réponses: 0
    Dernier message: 08/04/2002, 11h29
  5. [Kylix] icone associée à un programme
    Par Anonymous dans le forum EDI
    Réponses: 1
    Dernier message: 22/03/2002, 09h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo