Rechercher dans les propriétés de la page

Rechercher dans les propriétés de la page

Entrer soit une page et une propriété, ou seulement une propriété, pour récupérer toutes les valeurs affectées.

Affichage de 4 résultats à partir du n°1.

Voir (20 précédentes | 20 suivantes) (20 | 50 | 100 | 250 | 500).


    

Liste de résultats

  • <nowiki>'''2. Bibliographie :'''<'''2. Bibliographie :'''

    Lien download :

    '''sketch_escooter_feed_back_reel_V1.ino''' 

    https://drive.google.com/file/d/0B_fB3GAsM02FSlRTWHdyRkhuUW8/view?usp=sharing

    '''escooter_ampli_SIMULINK.mdl'''

    https://drive.google.com/file/d/0B_fB3GAsM02FOW9OdmlhdDhJZGc/view?usp=sharing

    '''escooter feed back ISIS.DSN'''

    https://drive.google.com/file/d/0B_fB3GAsM02FOXdRWFN5OWRMQkE/view?usp=sharing

    En anglais

    https://forum.arduino.cc/index.php?topic=477397.0

    article : « Etude de trottinettes électriques 100W et 500W (Arduino), Revue 3EI 2017 »

    En attente

    '''3. Programme en boucle ouverte''' 

    Pour tester la programmation, nous simulons le programme dans ISIS, comme on peut le voir sur la figure suivante. De plus, nous avons un afficheur LCD pour afficher des données (rapport cyclique correspondant à la PWM à 32Khz, le courant moteur, la tension moteur, l'action sur les boutons poussoirs. En effet, 4 boutons poussoirs sont utilisés.

    BP1 pour incrémenter manuellement le rapport cyclique, BP2 le  décrémenter. BP3 mettre le rapport cyclique à 0, correspondant au contact frein. 

    La vitesse du moteur est pratiquement proportionnelle au rapport cyclique

    https://i58.servimg.com/u/f58/17/56/35/17/a211.jpg

    Nous avons réalisé notre propre amplificateur de courant qui s'appelle un hacheur abaisseur mais il est possible d'acheter un shield

    Il existe de nombreuses cartes pour Arduino pour commander des moteurs DC surtout de faibles puissances et aussi de grandes puissances comme on peut l'observer sur les liens suivants. 

    http://www.robotpower.com/products/MegaMotoPlus_info.html

    http://www.robotshop.com/en/dc-motor-driver-2-15a.html

    https://www.pololu.com/file/0J51/vnh3sp30.pdf

    https://i58.servimg.com/u/f58/17/56/35/17/a310.jpg

    mais, tous ces hacheurs shields mesurent le courant en interne mais il n'y a pas de limitation de courant. 

    Pour avoir une limitation de courant il faut une boucle de courant analogique en utilisant des AOP ou CI spécialisée ou une boucle de courant numérique rapide.

    Mais quel doit être la valeur du courant de limitation ?

    Le choix de la valeur du courant est normalement pour le Service de fonctionnement 1 heure pour pouvoir effectuée des montées relativement longue sans atteindre la température critique du moteur.

    Dans notre cas, le courant de limitation devra etre de 

    Imoteur limitation=Puissance/Ubatterie=500W/24 V=20A

    De plus, le transistor de puissance du hacheur ne peut supporter que 50A dans notre cas.

    Mais en boucle ouverte, il n'a pas de régulation de courant, pour ne pas avoir de dépassement du courant maximum, une rampe du rapport cyclique sera utilisé.

    Une routine d'interruption de 0.1 seconde sera utilisé pour faire la mesure de la tension est du courant (échantillon de mesure, sample ). Ce temps de sampler est arbitraire, mais ne permet pas d'être plus rapide que le temps de montée du courant car la constante de temps électrique du moteur étant de  L/R= 1.5ms.

    Le fonctionnement en boucle ouverte avec une rampe de 25.5s (8bit et routine d'interruption de 0.1s) permet de bien comprendre la problématique du fonctionnement d'une commande à moteur DC.

    l'affichage se fera seulement tous les 0.2s pour avoir une stabilité des chiffres à l’écran. De plus, un filtrage numérique, se fera sur le courant et la tension sur 4 valeurs donc sur 0.4s.

    '''Algo boucle ouverte'''

    Routine d'interruption toutes les 0.1S

    Lire tension et courant

    Boucle loop (scrutation des boutons poussoirs) 

    Si BP1=1 alors incrementer PWM

    Si BP2=1 alors décrementer PWM

    Si BP3=1 alors PWM=0

    Affichage des variables tous les 0.2s

    '''code'''

    {{

    // include the library code:

    #include

    #include

    #include

    #define SERIAL_PORT_LOG_ENABLE 1

    #define Led     13       // 13 pour la led jaune sur la carte

    #define BP1     30       // 30 BP1

    #define BP2     31       // 31 BP2           

    #define BP3     32       // 32 BP3

    #define LEDV    33       // 33 led

    #define LEDJ    34       // 34 led

    #define LEDR    35       // 35 led

    #define relay   36       // 36 relay

    #define PWM10    10      //11   timer2    

    LiquidCrystal lcd(27, 28, 25, 24, 23, 22); // RS=12, Enable=11, D4=5, D5=4, D6= 3, D7=2, BPpoussoir=26

    // Configuration des variables

    unsigned   int UmoteurF = 0;  // variable to store the value coming from the sensor

    unsigned   int Umoteur = 0;

    unsigned   int Umoteur2 = 0;

    unsigned   int Umoteur3 = 0;

    unsigned   int Umoteur4 = 0;

    unsigned   int ImoteurF = 0;  

    unsigned   int Imoteur = 0;

    unsigned   int Imoteur2 = 0;

    unsigned   int Imoteur3 = 0;

    unsigned   int Imoteur4 = 0;

    byte Rcy=0 ;    //rapport cyclique  8bit

    unsigned    int temps;

    // the setup function runs once when you press reset or power the board

    void setup() {

    pinMode(Led, OUTPUT);   //led carte arduino

    pinMode(LEDV, OUTPUT);

    pinMode(LEDR, OUTPUT);

    pinMode(LEDJ, OUTPUT);

    pinMode (PWM10,OUTPUT);     // broche (10) en sortie  timer2

    //  digitalWrite(LEDV,LOW);

    Timer1.initialize(100000);         // initialize timer1, and set a 0,1 second period =>  100 000

    Timer1.attachInterrupt(callback);  // attaches callback() as a timer overflow interrupt

    lcd.begin(20, 4);  

    Serial1.begin(9600); 

    TCCR2B = (TCCR2B & 0b11111000)
    r power the board<br /><br />void setup() {<br /><br />pinMode(Led, OUTPUT);   //led carte arduino<br /><br />pinMode(LEDV, OUTPUT);<br /><br />pinMode(LEDR, OUTPUT);<br /><br />pinMode(LEDJ, OUTPUT);<br /><br />pinMode (PWM10,OUTPUT);     // broche (10) en sortie  timer2<br /><br />//  digitalWrite(LEDV,LOW);<br /><br />Timer1.initialize(100000);         // initialize timer1, and set a 0,1 second period =>  100 000<br /><br />Timer1.attachInterrupt(callback);  // attaches callback() as a timer overflow interrupt<br /><br />lcd.begin(20, 4);  <br /><br />Serial1.begin(9600); <br /><br />TCCR2B = (TCCR2B & 0b11111000)</nowiki>  
  • <nowiki>La mesure de la vitesse est La mesure de la vitesse est effectuée avec un capteur effet hall SS495 ou A1324 qui permet de compter chaque tour de roue. Il suffit de rentrer la périmètre de la roue de la trottinette (130mm de rayon donc 0.816m  dans le cas 

    Pour avoir la vitesse, il suffit juste de diviser le nombre de tour de roue sur un temps arbitraire de 1s pour avoir une vitesse minimum de de 0.81m/s donc de 2.93 km/h. De plus, un filtrage moyen avec 3 valeurs sera utilisé pour afficher la vitesse. A 25km/h, il y aura 8.5 tours.

    Pour compter les tours, une routine d'interruptions extérieure sera utilisée sur l'entrée INT0 21 de la carte mega.

    http://www.locoduino.org/spip.php?article64

    Pour simuler la vitesse, un pulse sur l'entrée 21 sera utilisé avec un rapport cyclique de 10%.

    https://i58.servimg.com/u/f58/17/56/35/17/a018.jpg

    '''code'''

    void INT0b21() {

    Tspeed++;   //interruption exterieure pour compter le nombre de tour

    }

    //dans le set up declarer la routine d'interruption lorsque le front 5V de la detection de l'aimant se fait

    attachInterrupt(digitalPinToInterrupt(21), INT0b21, RISING );  //interruption exterieur

    //dans loop

    if (temps09>=5)  {        //boucle de 1 seconde

    lcd.setCursor(13,2);      // effacement de la vitesse

    lcd.print("kph     ");

    lcd.setCursor(16,2); 

    speed1=Tspeed*2937;      //1tour*816*3.6/1s=2.937km/h

    speed2=speed1;           //Tspeed (rate/seconde)

    speed3=speed2;

    speedF=(speed1+speed2+speed3)/3000;   //pour mettre en kph

    lcd.print(speedF,1);    //affichage au dixieme pres

    Tspeed=0;   //reset compteur

    temps09=0;  //reset time

    }

    Pour améliorer la précision de la mesure de la vitesse, il est possible que le temps échantillonnage de la mesure de la vitesse soit en fonction de la vitesse.

    exemple : 

    pour les vitesses inferieures à 10km/h echantillon à 1seconde, mais au dessus de 10km/h echantillon à 2 secondes.

    11. Mesure distance pour connaitre l'autonomie 

    La distance correspond au nombre de tour total de la roue multipliée par le périmètre de la roue.

    Donc il ne faut pas remettre à 0, le nombre de tour à chaque échantillon.

    Par contre, la remise à zéro de la distance sera  effectuée lors l'appuie sur le reset de l'Arduino Mega.

    L'affichage de la distance s'effectuera au deuxième près.

    A 32km/h, il faudra 2 minutes pour faire 1km comme on peut l'observer sur la figure suivante :

    https://i58.servimg.com/u/f58/17/56/35/17/a019.jpg

    '''code'''

    void INT0b21() {

    Tspeed++;   //interruption exterieure pour compter la vitesse

    nbrRate++;

    }

    lcd.setCursor(13,4);      

    lcd.print("km      ");  //

    distance=(nbrRate*816)/1000;  //distance m

    distance=distance/1000;  //distance km

    lcd.setCursor(15,4);      

    lcd.print(distance,1);  

    on peut observer l'installation Electrique avec le hacheur, l'arduino, et l'afficheur lors de la mise au point du programme

    https://i58.servimg.com/u/f58/17/56/35/17/dsc_0613.jpg

    '''12. Synthèse''' 

    L'espace RAM est utilisé que à 4% et l'espace ROM à 3%, pour un Arduino mega. Donc, on pourrait prendre un arduino un peu plus petit.

    Mais, il y a 8 cellules Lipo pour faire l'alimentation 24V pour alimenter le moteur via le hacheur. Par conséquent, la mesure de la tension de chaque élément sera sur l'Arduino avec un connecteur JST. Cette mesure permet de savoir si une cellule à une résistance interne qui commence à poser problème et pour savoir si l'équilibrage de chaque cellule a bien été effectué.

    Il est possible de passer à 36V avec 12 cellules aussi avec l'ardui mega sans utiliser de shield exterieur qui multiplexe 24 entrées analogiques sur l'entrée A0

    Il est possible d'envoyer toutes les données à un smarthphone via le bluetooth HC06 par les broches 20, 21, RX1 et TX1. Mais  L'application sous android realisée sous JAVA Studio ne peut pas etre partagé sur ce forum. Cette partie ne sera pas explicitée.

    Apres avoir fait l'instrumentation de cette trotinnette, une etude devrait etre effectué sur la precision des mesures, il est possible de [http://www.fichier-pdf.fr/2015/09/07/instrumentation-vehicule-faible-consommation-eco-marathon/ lire]

    « Instrumentation d'un véhicule motorisé électrique faible consommation de type « éco marathon » Revue 3EI  N°81, Juillet 2015

    http://www.fichier-pdf.fr/2015/09/07/instrumentation-vehicule-faible-consommation-eco-marathon/
    m. Cette partie ne sera pas explicitée.<br /><br />Apres avoir fait l'instrumentation de cette trotinnette, une etude devrait etre effectué sur la precision des mesures, il est possible de [http://www.fichier-pdf.fr/2015/09/07/instrumentation-vehicule-faible-consommation-eco-marathon/ lire]<br /><br />« Instrumentation d'un véhicule motorisé électrique faible consommation de type « éco marathon » Revue 3EI  N°81, Juillet 2015<br /><br />http://www.fichier-pdf.fr/2015/09/07/instrumentation-vehicule-faible-consommation-eco-marathon/</nowiki>  
  • <nowiki>Voici les schémas électriqueVoici les schémas électriques, 3 cartes sont utilisées

    une carte qui va s'afficher dans l'arduino, mesure température, courant, et qui fait le lien vers la carte afficheur  

    https://i58.servimg.com/u/f58/17/56/35/17/pont_d11.jpg

    voici le typon

    https://i58.servimg.com/u/f58/17/56/35/17/pont_d10.jpg

    une carte 4 boutons poussoirs et un  afficheur LCD recouper d'ancien système microcontrôleur qui utilisait des connecteurs HE10

    https://i58.servimg.com/u/f58/17/56/35/17/bouton10.jpg

    voici le typon double face

    https://i58.servimg.com/u/f58/17/56/35/17/bouton11.jpg

    une carte hacheur qui va s'enficher dans la première carte.

    le schema electrique de la commande du  hacheur n'a rien à voir avec la carte réelle car l'optocoupleur n'est pas simulable, et il n'y a pas de modele spice de nos composants

    a la place d'utiliser, un optocoupleur un driver IRF2110 est preferable d'utilisation.

    le condensateur entre le Drain et la source permet de minimiser les oscillations lors des commutations.

    de plus, il permet de minimiser les pertes à la commutations dans le transistor.

    https://i58.servimg.com/u/f58/17/56/35/17/hacheu10.jpg
    video
    youtube  :  "study trotinette electric e-scooter 100W et 350W, wiring"  
    https://www.youtube.com/watch?v=QqJ2-YiE8Tg&list=PLfZunVn_gcq7EOurXuWU2sRFmh6CbiUiL&index=75https://www.google.fr/search?q=sepduino&oq=sepduino&aqs=chrome..69i57j0l5.15544j0j7&sourceid=chrome&ie=UTF-8#q=sebduino

    un livre
    « je réalise mon véhicule électrique » chez DUNOD
    rome&ie=UTF-8#q=sebduino<br /><br />un livre<br />« je réalise mon véhicule électrique » chez DUNOD<br /></div><div></div></div></nowiki>  +
  • La routine d'interruption  dure que 250 miLa routine d'interruption  dure que 250 micro seconde, la boucle du programme principal qui scrute l'action de boutons poussoirs est de 13micros et le temps d'affichage de toutes les données est de 11ms. Donc, on peut améliorer la période d'échantillonnage donc la rapidité de la régulation du courant. L'Arduino permet de faire l'instrumentation de la trottinette donc de connaitre la puissance, la consommation en A.h et W.h, de mesurer la vitesse, de connaitre la consommation en fonction des W.h/km, de mesurer la température du moteur et d'avoir une sécurité de fonctionnement. Mais pour l'instant nous allons voir comment limiter le courant '''4. Programme en boucle fermé,  commande à courant limité''' la période d’échantillonnage passera à 0.01 seconde (routine d'interruption) si le courant est inférieur à la valeur désirée, alors la le rapport cyclique peut être augmenté ou diminué jusqu’à la valeur désirée qui est la consigne. par contre si le courant moteur est supérieur à la valeur de limitation, il y a une diminution rapide du rapport cyclique. pour ne pas avoir de dépassement de la valeur du rapport cyclique celui si sera saturé à 254 maximum et à la valeur minimum 6. '''code''' if (Imoteur<4000)                    // pas de limitation de courant à (20A*10)*20=4000 {if (consigne>Rcy)   {Rcy=Rcy+1;}   // rampe de de la Pwm +1*0.01seconde  integrateur pur if (consigne254)  {Rcy=254;}           //limitation du rapport cyclique analogWrite(PWM10,Rcy);   //frequence 32kHz timer2}      } if (Imoteur>4000)  { Rcy=Rcy-5;              //pas de filtrage du courant, pour etre plus rapide   if ( Rcy<6)  {Rcy=5;}       //rcy n'est pas signé, ni la PWM   donc Rcy minimun ne doit pas etre inferieur à 6                      analogWrite(PWM10,Rcy);   //frequence 32kHz timer2}                analogWrite(PWM10,Rcy);   //frequence 32kHz timer2}        +