Affichage des articles dont le libellé est Microship. Afficher tous les articles
Affichage des articles dont le libellé est Microship. Afficher tous les articles

samedi 21 novembre 2015

How To Control Speed,Comportment,Direction Of a Stepper Motor Using Pic and Labview !!!

How To Control Speed,Comportment,Direction Of a Stepper Motor Using Pic and Labview !!!


Bonjour !!!
Notre but c'est de savoir commander un moteur pas a pas bipolaire a l'aide d'une interface graphique faite sur Labview basée sur une communication série !!

Pour ceci on aura besoin:

Moteur pas à pas bipolaire
L297
L298
Pic 16F877A
Max 232
RS232
Résultat de recherche d'images pour "pic16f877a"Résultat de recherche d'images pour "motor stepper bipolar"Résultat de recherche d'images pour "l297"Résultat de recherche d'images pour "l298"Résultat de recherche d'images pour "max232"Résultat de recherche d'images pour "rs232 port for pcb"



Alors pour comprendre le fonctionnement pas à pas on peut le décomposer en plusieurs etapes :

Le L297 est un circuit recommandé pour la  commande et de contrôle de moteurs pas à pas unipolaire et même  bipolaire.
En l'associant avec un driver double pont tel que le L298, l'ensemble jouent une interface parfaite pour la commande d'un moteur pas à pas bipolaire par microprocesseur ou micro contrôleur.
On peut  contrôler un moteur pas à pas unipolaire avec un L297 en lui associant quatre transistors darlington ou mosfet.

Le circuit de Control de moteur pas à pas L297 est recommandé pour être utilisé avec un circuit L298 ou L293E.
Il reçoit les signaux de contrôle venant d'unité de traitement qui est un pic a notre projet et la traduit en des signaux de forte puissances qui vont se communiquer avec le moteur.
Ce circuit inclue deux régulations à découpage type PWM (Pulse Width Modulation) pour réguler le courant de moteur.

De plus il est capable de toucher le comportement de moteur genre pas complète ou demi pas ou même un quart de pas  .

Le circuit intégré L298N est un étage de puissance (hacheur) spécialisée pour les moteurs àqui fonctionnent en courant continu.

Interface du L297



Pour des moteurs bipolaires avec des courants de l'ordre de 2 A max dans les enroulements comme notre moteur ici  le L297 doit accompagner  L298N. 
Pour des courants jusqu'à 1 A le hacheur L293 est recommandé fortement.
Résultat de recherche d'images pour "moteur pas a pas"

La carte électronique qu'on va réaliser elle doit contenir ces deux circuits intégrées avec un Pic 16F877A 
  

Le Clock du circuit L297 est générée automatiquement avec le PIC sinon on pourra utilisée un timer NE555 pour réaliser cette tache.


Pour que la carte electronique qui fonctionne sous la technologie TTL (transistor transistor Logic) sera lisable sur l'ordinateur on doit insérer un convertisseur TTL/Série composée d'un max 232 et RS232 et quelques condensateurs.
   

Pour le test sur ISIS il suffit d’insérer un ("COMPIM")  qui va jouer le rôle de ce circuit.

A propos du programme 









char uart_rd;
void main()
{
  TRISB = 0; //Makes PORTB0 or RB0 Output Pin
  PORTB =  0;
      UART1_Init(9600);               // Initialize UART module at 9600 bps
    Delay_ms(100);                  // Wait for UART module to stabilize
    UART1_Write_Text("Start");
  while(1) //Infinite Loop
  {
    PORTB.F0 = 1;
    Delay_ms(250);
    PORTB.F0 = 0;
    Delay_ms(250);

    if (UART1_Read() == ('e') ) {   

    PORTB.F2 = 0;
    }
    else         {
    PORTB.F2 = 1; }
    if (UART1_Read() == ('a') ) {    

    PORTB.F3 = 1;

    }
    else         {
     }
       if (UART1_Read() == ('b') ) {     

    PPORTB.F3 = 0;
    }
    else         {
     }
     
          if (UART1_Read() == ('c') ) {   

    PPORTB.F4 = 0;
    }
    else         {
     }
             if (UART1_Read() == ('d') ) {   

    PPORTB.F4 = 1;
    }
    else         {
     }     
}}

 Maintenant a propos d'interface graphique sur Labview comme j'ai vous indiqué avant que il est divisé en deux parties que j'ai nommée Design et Praogram 



Voila une vidéo démonstrative de fonctionnement de ce projet:

et j'ai vous mis ici le routage finale de la carte:





Vous pouvez télécharger tout le projet sur ce dossier : 





 Télécharger le projet complet ici :   https://drive.google.com/file/d/0B9EKWF9Q9HyvbE13VTlPeHZCNmc/view?usp=sharing

mardi 18 août 2015

Control Arduino/Pic/... With Your Own Serial Communication Read/Write C sharp Application !!

Control Arduino/Pic/... With Your Own Serial Communication Read/Write C sharp Application  !!

Cette article comme il est inclus au titre il va nous aidez a bien comprendre de quoi il s'agit lorsque on entend Serial Communication, Va nous aidez a découvrir le C Sharp  (C#).
 
   Alors aujourd'hui on va construire une application en se basant sur le logiciel Microsoft Visual Studio 
C# (C Sharp).
Cette application sera utilisable presque dans tout les projet qui assure une interface de communication série et surtout pour tester la communication.
 








Tout d'abord c'est quoi C Sharp ? 

Le C#  est un langage de programmation orienté objet , créé par la société Microsoft, et notamment un de ses employés, Anders Hejlsberg, le créateur du langage Delphi.
Il a été créé afin que la plate-forme Microsoft .NET soit dotée d'un langage permettant d'utiliser toutes ses capacités. Il est très proche du Java dont il reprend la syntaxe générale ainsi que les concepts (la syntaxe reste cependant relativement semblable à celle de langages tels que le C++ et le C). Un ajout notable au C# est la possibilité de surcharge des opérateurs, inspirée du C++. Toutefois, l'implémentation de la redéfinition est plus proche de celle du Pascal Objet.

Alors,Parlons un peu de l'application qu'on va réaliser. c'est tout simplement un interface graphique qui va relier l'ordinateur avec le microcontrôleur via un câble série.   

L'application comme j'ai déja dis dans les deux tutoriels précédents elle inclus deux grandes parties une appelé Design et l'autre code


Design 






Code 

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO.Ports;
namespace Serial_Communication_By_Aymen_Lachkhem
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            getAvailablePorts();
        }
        void getAvailablePorts()
        {
            string[] Ports = SerialPort.GetPortNames();
            comboBox1.Items.AddRange(Ports);
        }

        private void button3_Click(object sender, EventArgs e)
        {
            try
            {
                if (comboBox1.Text == "" || comboBox2.Text == "")
                {
                    comboBox2.Text = "Please select port setting ? ";
                }
                else
                {

                    serialPort1.PortName = comboBox1.Text;
                    serialPort1.BaudRate = Convert.ToInt32(comboBox2.Text);
                    serialPort1.Open();
                    progressBar1.Value = 100;
                    button1.Enabled = true;
                    button2.Enabled = true;
                    textBox1.Enabled = true;
                    button3.Enabled = false;
                    button4.Enabled = true;
                }
            }
            catch (UnauthorizedAccessException)
            {
                textBox2.Text = "Unauthorized Access";
            }
        }

        private void button4_Click(object sender, EventArgs e)
        {
            serialPort1.Close();
            progressBar1.Value = 0;
            button1.Enabled = false;
            button2.Enabled = false;
            button4.Enabled = false;
            button3.Enabled = true;
            textBox1.Enabled = false;
        }

        private void button1_Click(object sender, EventArgs e)
        {
            serialPort1.WriteLine(textBox1.Text);
            textBox1.Text = "";
        }

        private void button2_Click(object sender, EventArgs e)
        {
            try
            {
                textBox2.Text = serialPort1.ReadLine();
            }
            catch(TimeoutException)
                {
                    textBox2.Text="time out exeption";
                }
        }

        private void textBox1_TextChanged(object sender, EventArgs e)
        {

        }

        private void textBox2_TextChanged(object sender, EventArgs e)
        {

        }

        private void label4_Click(object sender, EventArgs e)
        {

        }

        private void label3_Click(object sender, EventArgs e)
        {

        }
    }
}



J'ai vous mis ce vidéo qui va vous expliquer comment j'ai la réaliser cette application 





Apres avoir créer votre propre application le reste sera facile, il suffit de relier votre ordinateur avec la carte électronique dédiée un simple câble RS est capable d'assurer cette mission.

Tant que on va tester cette application sur PROTEUS il faut pas oublier d'ajouter un couple de Port Virtuelle en utilisant Serial Port Virtual comme il est indiquée dans les deux tutoriels précédents.

Simulation

  
  

Programme




Comme ça se voit ici rien est spécial, si on envoi un A la LED va s'allumer et si on va envoyer B cette dernière va s’éteindre.

Une video démonstrative pour bien comprendre le fonctionnement 

  



Exactement La même simulation sera passée avec une Arduino:
Rélier sa cable usb vers l'ordinateur est se communiquer avec l'application voila le programme a televerser dans l'Arduino.  







Et Voila, C'est tout, Vous Pouvez me contacter pour avoir une copie complète de ce tutoriel.