قسم الميكروكنترولر والروبوت ودوائر الاتصال بالحاسب الالي قسم المتحكمات الـ microcontroller و المعالجات microprocessor و التحكم الرقمي بالكمبيوتر CNC والانظمة الآلية والروبوت Robots

أدوات الموضوع

systeme32
:: مهندس ::
تاريخ التسجيل: Aug 2010
المشاركات: 23
نشاط [ systeme32 ]
قوة السمعة:0
قديم 29-08-2010, 02:48 PM المشاركة 1   
ha UART ?? VB.NET ?? MAX232 للخبراء , والعباقرة Twitter FaceBook Google+



بسم الله الرحمن الرحيم
السلام عليكم ورحمة الله وبركاته
اخوتي الا عزاء.. لقد قمت بكتابة برنامج للتحكم في 4 stepper motor عن طريق الكمبيوتر .
لما قمت بعمل تجربة الاحظ انه لا يوجد تزامن بين الكمبيوتر و PIC16F877A .
لو تكرمتم علي وقمتم بتفسير و تصحيح المشكلة،، الله يجازيكم كل خير..

code mikroC:

كود:
char text;
short i;

void main()
{
UART1_Init(9600);
i=0;
//text=9;
TRISB=0;
TRISD=0;
PORTB=0;
PORTD=0;

while(1) {

       if(UART1_Data_Ready()){
            text=UART1_Read();

           }
             if(text==8)

           {

           PORTB=0;
           PORTD=0;
           } else {

           }
         if(text=='0')
         {

       PORTB=0B00000001;delay_ms(150);
       PORTB=0B00000100;delay_ms(150);
       PORTB=0B00000010;delay_ms(150);
       PORTB=0B00001000;delay_ms(150);
       }
         if(text=='1')
           {
       PORTB=0B00001000;delay_ms(150);
       PORTB=0B00000010;delay_ms(150);
       PORTB=0B00000100;delay_ms(150);
       PORTB=0B00000001;delay_ms(150);
        }

           if(text=='2')
           {
       PORTB=0B00010000;delay_ms(150);
       PORTB=0B01000000;delay_ms(150);
       PORTB=0B00100000;delay_ms(150);
       PORTB=0B10000000;delay_ms(150);
        }
         if(text=='3')
           {
       PORTB=0B10000000;delay_ms(150);
       PORTB=0B00100000;delay_ms(150);
       PORTB=0B01000000;delay_ms(150);
       PORTB=0B00010000;delay_ms(150);
        }

           if(text=='4')
       {
       PORTD=0B00000001;delay_ms(150);
       PORTD=0B00000100;delay_ms(150);
       PORTD=0B00000010;delay_ms(150);
       PORTD=0B00001000;delay_ms(150);
        }
         if(text=='5')
           {
       PORTD=0B00001000;delay_ms(150);
       PORTD=0B00000010;delay_ms(150);
       PORTD=0B00000100;delay_ms(150);
       PORTD=0B00000001;delay_ms(150);
        }

           if(text=='6')
           {
       PORTD=0B00010000;delay_ms(150);
       PORTD=0B01000000;delay_ms(150);
       PORTD=0B00100000;delay_ms(150);
       PORTD=0B10000000;delay_ms(150);
        }
         if(text=='p')
           {

}
}
}


code VB.NET :


كود:
Imports System
Imports System.Collections.Generic
Imports System.ComponentModel
Imports System.Data
Imports System.Drawing
Imports System.Linq
Imports System.Text
Imports System.Windows.Forms
Imports System.IO.Ports
Public Class Form1
    Public m, p As Boolean
    Dim S As String
    Dim x As Integer
    Dim Port As SerialPort
    Public Sub WritePort(ByVal Chaine As String)
        Port.Write(Chaine)
    End Sub
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        CmbPort.SelectedIndex = 2
        p = False
        m = False
    End Sub

    Private Sub Connect_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Connect.Click
        Button1.Enabled = True
        'InitializeComponent()
        Port = New SerialPort(CmbPort.Text, 9600)
        Port.Open()
    End Sub

    Private Sub BtnM1M_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles BtnM1M.MouseDown
        S = 1
        BtnM1M.BackColor = Color.Green
        m = True
        WritePort(S)
    End Sub

    Private Sub BtnM1M_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles BtnM1M.MouseUp
        S = "8"
        BtnM1M.BackColor = Color.Red
        m = False
        WritePort(S)
    End Sub

    Private Sub Tim_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Tim.Tick

        'If m Then
        '    WritePort(S)
        'End If
        'If p Then
        '    WritePort(S)
        'End If
        Static j As Integer = 4
        WritePort(j)
        j += 1
        If j = 8 Then
            j = 4
        End If



    End Sub

    Private Sub BtnM1P_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles BtnM1P.MouseDown
        S = 0
        BtnM1P.BackColor = Color.Green
        p = True
        WritePort(S)
    End Sub

    Private Sub BtnM1P_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles BtnM1P.MouseUp
        S = "8"
        BtnM1P.BackColor = Color.Red
        p = False
        WritePort(S)
    End Sub

    Private Sub TimInt_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TimInt.ValueChanged
        'Tim.Interval = TimInt.Value
    End Sub

    Private Sub BtnM2P_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles BtnM2P.MouseDown
        S = "2"
        BtnM2P.BackColor = Color.Green
        p = True
        WritePort(S)
    End Sub

    Private Sub BtnM3P_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles BtnM3P.MouseDown
        S = 4
        BtnM3P.BackColor = Color.Green
        p = True
        WritePort(S)
    End Sub

    Private Sub BtnM4P_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles BtnM4P.MouseDown
        S = 6
        BtnM4P.BackColor = Color.Green
        p = True
        WritePort(S)
    End Sub

    Private Sub BtnM2M_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles BtnM2M.MouseDown
        S = 3
        BtnM2M.BackColor = Color.Green
        m = True
        WritePort(S)
    End Sub

    Private Sub BtnM2M_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles BtnM2M.MouseUp
        S = "8"
        BtnM2M.BackColor = Color.Red
        m = False
        WritePort(S)
    End Sub

    Private Sub BtnM3M_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles BtnM3M.MouseDown
        S = 5
        BtnM3M.BackColor = Color.Green
        m = True
        WritePort(S)
    End Sub

    Private Sub BtnM3M_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles BtnM3M.MouseUp
        S = "8"
        BtnM3M.BackColor = Color.Red
        m = False
        WritePort(S)
    End Sub

    Private Sub BtnM4M_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles BtnM4M.MouseDown
        S = "p"
        BtnM4M.BackColor = Color.Green
        m = True
        WritePort(S) 
    End Sub

    Private Sub BtnM4M_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles BtnM4M.MouseUp
        S = "8"
        BtnM4M.BackColor = Color.Red
        m = False
        WritePort(S)
    End Sub

    Private Sub BtnM2P_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles BtnM2P.MouseUp
        S = "8"
        BtnM2P.BackColor = Color.Red
        p = False
        WritePort(S)
    End Sub

    Private Sub BtnM3P_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles BtnM3P.MouseUp
        S = "8"
        BtnM3P.BackColor = Color.Red
        p = False
        WritePort(S)
    End Sub

    Private Sub BtnM4P_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles BtnM4P.MouseUp
        S = "8"
        BtnM4P.BackColor = Color.Red
        p = False
        WritePort(S)
    End Sub

    
    Private Sub BtnM1M_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnM1M.Click

    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        WritePort(Tx.Text)
        'Tim.Start()
        ' 
        For i = 0 To 100
            Threading.Thread.Sleep(200)
            Application.DoEvents()
            WritePort(x)
            x += 1
            If x = 8 Then
                x = 4
            End If
        Next

    End Sub
End Class


التعديل الأخير تم بواسطة : systeme32 بتاريخ 31-08-2010 الساعة 04:49 AM
اعلانات

الصورة الرمزية ahmed-1a
ahmed-1a
:: مهندس جيد ::
تاريخ التسجيل: Apr 2008
المشاركات: 205
نشاط [ ahmed-1a ]
قوة السمعة:0
قديم 29-08-2010, 11:33 PM المشاركة 2   
افتراضي


من الأفضل ترفق المشروع ،، مشروع vb.net وأيضا المايكروسي ....

اعلانات اضافية ( قم بتسجيل الدخول لاخفائها )
  

systeme32
:: مهندس ::
تاريخ التسجيل: Aug 2010
المشاركات: 23
نشاط [ systeme32 ]
قوة السمعة:0
قديم 31-08-2010, 04:55 AM المشاركة 3   
افتراضي المشروع


من الأفضل ترفق المشروع ،، مشروع vb.net وأيضا المايكروسي ....
شكرا اخي و جزاك الله كل خير

انه في الأعلى


systeme32
:: مهندس ::
تاريخ التسجيل: Aug 2010
المشاركات: 23
نشاط [ systeme32 ]
قوة السمعة:0
قديم 31-08-2010, 09:42 PM المشاركة 4   
افتراضي اين انتم يا اخوان


السلام عليكم ورحمة الله وبركاته

اين انتم يا اخوان


الصورة الرمزية صقر الافق
صقر الافق
:: مهندس جيد ::
تاريخ التسجيل: Dec 2009
الدولة: المغرب
المشاركات: 218
نشاط [ صقر الافق ]
قوة السمعة:0
قديم 01-09-2010, 07:21 PM المشاركة 5   
افتراضي


سامحني أخي أن من محبي هدا التحكم لكن مبتدئ أن فقط أستفيد الأن وأدعوك ان وجدت الحل اطلاق موضوع للكلام على هدا التحكم
أتمنى أن تجدالاجاــــــــــــــــــــــــــــــــــــــــــ ـــــــة


الصورة الرمزية ahmed-1a
ahmed-1a
:: مهندس جيد ::
تاريخ التسجيل: Apr 2008
المشاركات: 205
نشاط [ ahmed-1a ]
قوة السمعة:0
قديم 02-09-2010, 10:54 PM المشاركة 6   
افتراضي


أهلا أخي systeme32 ،،

أتوقع أنه لديك خبرة بالستيبر موتور ، لذلك ، انت كتبت في برنامج المايكروسي تسلسل تشغيل المحرك الخطوي هكذا
0001
0100
0010
1000
أنت تعرف كيف يعمل المحرك الخطوي ، وتعرف كيفية ضبط نبظاته ، يجب أن تكون متتابعة ؟
بالنسبة للنبظات يجب أن تكون مستمرة بحيث مثلا إذا أرسلت للمتحكم من الكمبيوتر شي ، فإن 4 نبظات تحرك المحرك حركة بسيطة ، لذلك يجب أن تعمل النبظات الأربع مثلا وتكرر نفسها 4 مرات أو على حسب اختيارك
ويجب أن تكون هناك فترات إنتظار بسيطة بين النبظة والتي تليها ، لأنه كما تعلم أن المتحكم سريع جدا ...
هذه الملاحظة فقط بالنسببة للكود
وأما بالنسبة للمشروع بأكمله ، فهل أنته تجري له محاكاة ، أم تجربة على الواقع ؟

اذا كانت تعمل له محاكة في الكمبيوتر ، فيجب أن تستخدم برنامج للمساعدة في عمل ربط وهمي للمنفذ التسلسلي

وإذا كنت تعمل على الواقع ، فيجب أن تتأكد من أن المتحكم يعمل ...

إضافة رد

العلامات المرجعية

«     الموضوع السابق       الموضوع التالي    »
أدوات الموضوع

الانتقال السريع إلى


الساعة معتمدة بتوقيت جرينتش +3 الساعة الآن: 07:08 PM
موقع القرية الالكترونية غير مسؤول عن أي اتفاق تجاري أو تعاوني بين الأعضاء
فعلى كل شخص تحمل مسئولية نفسه إتجاه مايقوم به من بيع وشراء وإتفاق وأعطاء معلومات موقعه
التعليقات المنشورة لا تعبر عن رأي موقع القرية الالكترونية ولايتحمل الموقع أي مسؤولية قانونية حيال ذلك (ويتحمل كاتبها مسؤولية النشر)

Powered by vBulletin® Version 3.8.6, Copyright ©2000 - 2025