مطلوب دائرة تعمل مع عداد سفن سيجما لقياس الفولت دي سي
قسم الميكروكنترولر والروبوت ودوائر الاتصال بالحاسب الاليقسم المتحكمات الـ microcontroller و المعالجات microprocessor و التحكم الرقمي بالكمبيوتر CNC والانظمة الآلية والروبوت Robots
مطلوب دائرة تعمل مع عداد سفن سيجما لقياس الفولت دي سي
بعد التحية والاحترام
الي خبراء القسم الافاضل
ارجوا المساعدة
محتاج دائرة اوصل عليها مجموعة من سيجمات سفن
بحيث في النهاية اقيس بها فولت دي سي
مثل جهاز الافو ميتر بشكل مصغر من 4 سيجمات
وتفضلوا بقبول وافر الاحترام
مجدي مجمعة
بعد التحية والاحترام
الي خبراء القسم الافاضل
ارجوا المساعدة
محتاج دائرة اوصل عليها مجموعة من سيجمات سفن
بحيث في النهاية اقيس بها فولت دي سي
مثل جهاز الافو ميتر بشكل مصغر من 4 سيجمات
وتفضلوا بقبول وافر الاحترام
مجدي مجمعة
السلام عليكم ورحمه الله
تفضل أخي اليك طلبك
دائرة قياس فرق الجهد بمدي قياس 500 فولت تيار مستمر ويمكن ذيادة المدي الي 1000 فولت
معدل القياس والمعايرة لكل واحد فولت داخل علي الدائرة يظهر علي الشاشات ب 100 فولت
بمعدل 1 الي 100
نسبة الخطأ للقياسات هي
واحد فولت نسبةخطأ لكل 100 فولت علي القياس
تحذيرات الدائرة مبنيه علي المتحكم الدقيق ميكروكنترولر ..
وأقصي فرق جهد يدخل علي محول التناظري هو 5 فولت ك حد أقصي
وهنا يجب التنويه علي المعايرة الخارجيه بحيث أن الدائرة عند قياس 500 فولت يجب أن تقسم ال 500 الي أن تصل الي 5 فولت فقط
كمثال للمعايرة الخارجيه
كل 100 فولت يجب أن يقسم الي واحد فولت لكي تكون المعايرة صحيحه وتظهر القرأة بشكل صحيح
ويفضل وضع حماية علي مدخل التناظري للمجس لمنع ذيادة فرق الجهد عن 5 فولت ولحمايه المتحكم ميكرو كنترولر
الكود الخاص بالدائرة
كود:
// DC V 500 //
// ENG ABDALLA HYGAZY //
// DATA 2020/12/19 //
// Frequency 4 MHz //
#define seg_data1 PORTB
#define seg_data2 PORTB
#define seg_data3 PORTB
#define seg_data4 PORTB
#define DP PORTB.f7
#define BUZ PORTA.F5=1; delay_ms(250); PORTA.F5=0; delay_ms(80);
#define DDS4 delay_ms(2000);
#define DDS5 delay_ms(800);
//********************========************************//
unsigned int adc_rd,DATA,DATA_X,STOP=0,NEXT;
unsigned int DATA_LOW,DATA_MEDEM,DATA_HAY;
unsigned int RD_DATA=0,RD_DATA1=0,RD_DATA2=0;
unsigned int AA1=0,AA2,AA3,AA4=0,AA5=0,AA6=0 ;
long tlong;
unsigned short mask(unsigned short num);
unsigned int a1=0,m1=0,e1=0,w1=0,k1=0;
//********************========************************//
//======================= show_adc ==========================================//
void show_adc() {
adc_rd = ADC_Read(0);
tlong = (long)adc_rd * 500000;
tlong = tlong / 1023;
}
//=============== show_adc === END ========================================//
//============ Timer0 =========== InitTimer0 ========================//
//Timer0
//Prescaler 1:8; TMR0 Preload = 6; Actual Interrupt Time : 1 ms
//Place/Copy this part in declaration section
void InitTimer0(){
OPTION_REG = 0x82;
TMR0 = 6;
INTCON = 0xA0;
}
//======================== END ===============================//
//======================== Interrupt ===============================//
void Interrupt(){
if (TMR0IF_bit){
TMR0IF_bit = 0;
TMR0 = 6;
//Enter your code here
AA4++; AA5++; AA6++;
if( AA4==1 ) { show_adc(); }
if( AA4==1000 ) { AA4=0; }
if(STOP==0)
{
if(AA5==1)
{
a1 = tlong / 100000;
if(a1==0){ PORTD=0;}
else PORTD=1;
PORTB=mask(a1); a1=0;
}
if(AA5==2)
{
a1 = (tlong % 100000)/10000;
PORTD=2;
PORTB=mask(a1); a1=0;
}
if(AA5==3)
{
a1 = (tlong % 10000)%1000/100;
PORTD=4;
PORTB=mask(a1); a1=0;
}
if(AA5==5)
{
a1 = (tlong % 100)%10%1; //////////
PORTD=4;
PORTB=mask(10);
}
if(AA5==6)
{
a1 = (tlong % 100)%10%1;
PORTD=8;
PORTB=mask(a1); a1=0;
}
if(AA5==7){ AA5=0;}
}
if(AA6==1 ){ PORTD.F7=1;}
if(AA6==400 ){ PORTD.F7=0;}
if(AA6==800){ AA6=0; }
}
}
//=================== Interrupt == END ===============================//
//======================== void main ==========================//
void main() {
TRISB=0; PORTB=0;
TRISD=0; PORTD=0;
TRISC=0; PORTC=0;
TRISE=0; PORTE=0;
TRISA=1; PORTA=0;
ADCON0=0x00;
CMCON=0;
InitTimer0();
RD_DATA = EEPROM_Read(0); delay_ms(10);
RD_DATA = RD_DATA *10;
RD_DATA1 = EEPROM_Read(1); delay_ms(10);
RD_DATA1 = RD_DATA1 *10;
RD_DATA2 = EEPROM_Read(2); delay_ms(10);
RD_DATA2 = RD_DATA2 *10;
delay_ms(1000);
BUZ BUZ
if( tlong <=15 )
{
while(AA1==0)
{
delay_ms(3000); BUZ
if( tlong >=15 ){ AA1=1; }
}
}
while(1){
}
}
//====================== void main === END ==========================//
//======================== switch (num) ==========================//
unsigned short mask(unsigned short num){
switch (num){
case 0 : return 0xC0;
case 1 : return 0xF9;
case 2 : return 0xA4;
case 3 : return 0xB0;
case 4 : return 0x99;
case 5 : return 0x92;
case 6 : return 0x82;
case 7 : return 0xF8;
case 8 : return 0x80;
case 9 : return 0x90;
case 10 : return 0x7F;
}
}
//======================== END ==========================//
بالتوفيق للجميع
التعديل الأخير تم بواسطة : عبدالله حجازى بتاريخ 20-12-2020 الساعة 06:10 AM
بعد التحية والاحترام
الي خبراء القسم الافاضل
ارجوا المساعدة
محتاج دائرة اوصل عليها مجموعة من سيجمات سفن
بحيث في النهاية اقيس بها فولت دي سي
مثل جهاز الافو ميتر بشكل مصغر من 4 سيجمات
وتفضلوا بقبول وافر الاحترام
مجدي مجمعة
كل الشكر للبشمهندس عبدالله حجازي
علي الرد السريع
ياريت صورة لمكونات الدائرة مع pcb وملف الهيكس فايل
ولك كل الشكر يابشمهندس عبدالله
ولفتح ملف العمل للبورد تحتاج الي تحميل هذا البرنامج اللذي صمم عليه ملف البورد PCB
" DipTrace Launcher " اسم البرنامج
ملاحظه مهمه جداا نسيت وضع مقاومات تحديد تيار للسفن سيجمن لاحظ توجد كباري علي المخرج B للمتحكم يجب وضع مقاومات 220 أوم بدلا من هذة الكباري عدد الكباري هو 8 لاحظهم باللون الأزرق حيث يتم وضع مقاومه لتحديد التيار 220 أوم علي كل طرف خارج من المنفذ B للمتحكم وذاهب لإطراف الشاشات
بالتوفيق
التعديل الأخير تم بواسطة : عبدالله حجازى بتاريخ 22-12-2020 الساعة 04:52 AM
الساعة معتمدة بتوقيت جرينتش +3 الساعة الآن: 07:37 AM
موقع القرية الالكترونية غير مسؤول عن أي اتفاق تجاري أو تعاوني بين الأعضاء
فعلى كل شخص تحمل مسئولية نفسه إتجاه مايقوم به من بيع وشراء وإتفاق وأعطاء معلومات موقعه
التعليقات المنشورة لا تعبر عن رأي موقع القرية الالكترونية ولايتحمل الموقع أي مسؤولية قانونية حيال ذلك (ويتحمل كاتبها مسؤولية النشر)