Search This Blog

Showing posts with label hardware. Show all posts
Showing posts with label hardware. Show all posts

Wednesday, November 25, 2015

CC2531 Zigbee USB Dongle

CC2531 USB Evaluation Module Kit ကိုသုံးပြီး wireless communication လုပ်ကြည့်တဲ့ အကြောင်းလေးပါ။ သူ့ရဲ့ website ကိုသွားပြီး CC USB Firmware Library and Examples ဆိုတဲ့ zip ဖိုင်ကို download လုပ်လိုက်ပါတယ်။ ဖိုင်ကိုဖြည်ပြီးတဲ့ အခါ Doc folder ထဲက CC USB Software Examples User’s Guide ထဲမှာ နမူနာပြထားတဲ့ USB RF Modem Example ကို စမ်းကြည့်ခဲ့ပါတယ်။

CC2531 Zigbee Wireless USB Dongle

Tuesday, November 24, 2015

Wireless Communication using CC2530 Zigbee Wireless MCU

CC2530 က IEEE 802.15.4 နဲ့ Zigbee တွေအတွက် RF transceiver နဲ့ 8051 MCU ကို ပေါင်းစပ်ထားတဲ့ system-on-chip (SoC) solution တခုပါ။ သူ့ကို သုံးပြီး wireless module စမ်းလုပ်ဖို့ အတွက် CC2530EM Evaluation Modules နှစ်ခု၊ SmartRF05EB Evaluation Boards နှစ်ခု၊ နဲ့ CC2531 USB Dongle တခုပါတဲ့ CC2530DK devolopment kit ကို ဝယ်တာ USD 400 လောက်ပေးရပါတယ်။ သူတို့နဲ့ သုံးဖို့အတွက် TI ရဲ့ ဝက်ဘ်ဆိုက်မှာ အလကားပေးတဲ့ SmartRF Studio ကို စက်ထဲမှာ install လုပ်ပါတယ်။

CC2530DK

Tuesday, November 17, 2015

Driving 28BYJ-48-5V Stepper Motor with ULN2003A Transistor Arrays on Arduino

28BYJ-48-5V Stepper Motor နဲ့ ULN2003A driver တွေက တော်တော် အသုံးများပုံရပြီး အလွယ်တကူ ဝယ်နိုင်ရုံတင်မက စျေးလည်း တော်တော်ပေါ ပါတယ်။ Stepper Library ကို မသုံးပဲ Arduino ရဲ့ Port B ကို သုံးပြီး Stepper motor ကို ထိန်းတဲ့ ရိုးရှင်းတဲ့ နမူနာလေး ဖော်ပြချင်ပါတယ်။


Figure. Driving 28BYJ-48-5V Stepper Motor with Arduino UNO using USB power.


28BYJ-48-5V Stepper Motor က 5V နဲ့ တိုက်ရိုက်မောင်းနိုင်ပြီး၊ unipolar stepper motor အမျိုးအစားပါ။ သူ့ရဲ့ schematic ကို အောက်မှာပြထားပါတယ်။


Figure. 28BYJ-48-5V Stepper Motor.


ULN2003A Transistor Arrays ကတော့ inductive load တွေကို drive လုပ်ဖို့ ဒီဇိုင်းလုပ်ထားတာမို့ အထဲမှာ free wheeling diode ပါ ပါ ပါတယ်။ Darlington pair သုံးထားတာမို့ အဝင် ဗို့ 1.4V လောက်ကနေ 30V အထိ ကြိုက်တဲ့ ဗို့နဲ့ တိုက်ရိုက်ဆက်ပြီး ထိန်းနိုင်ပါတယ်။


Figure. ULN2003A.


Wave drive, Full step drive နဲ့ Half step drive တွေကို သုံးပြထားတဲ့ နမူနာ ပရိုဂရမ် လေးကို အောက်မှာ ပြထားပါတယ်။


//Driving 28BYJ-48-5V Stepper Motor using ULN2003A Transistor Arrays
//Author: Yan Naing Aye
//Website: http://www.cool-emerald.com/

#include "StepperPortB.h"
//----------------------------------------------------------
void setup() {    
  StepperInit();//setup pins
  //StepperMode(WAVE);
  //StepperMode(FULL);
  StepperMode(HALF);
  //Serial.begin(9600);
}
void loop() {
  Step(4096,2500); //turn 4096 steps forward with 2500 us period for each step
  Step(-4096,2500);//turn 4096 steps backward with 2500 us period for each step
  //Serial.println(CS);
}


//File: StepperPortB.h
//Author: Yan Naing Aye
//Website: http://www.cool-emerald.com/

//Driving 28BYJ-48 – 5V Stepper Motor using ULN2003A Transistor Arrays
//----------------------------------------------------------
#ifndef StepperPortB_h
  #define StepperPortB_h
  #include "Arduino.h"
byte* S; //Stepping sequence

//Wave drive
//Step          0 | 1 | 2 | 3 | 0 |...

//Blue   = A :  1 | 0 | 0 | 0 | 1 | ...
//Pink   = B :  0 | 1 | 0 | 0 | 0 | ...
//Yellow = C :  0 | 0 | 1 | 0 | 0 | ...
//Orange = D :  0 | 0 | 0 | 1 | 0 | ...
byte Wave[4] = {0x01,0x02,0x04,0x08};

//Full Step drive
//Step          0 | 1 | 2 | 3 | 0 |...

//Blue   = A :  1 | 1 | 0 | 0 | 1 | ...
//Pink   = B :  0 | 1 | 1 | 0 | 0 | ...
//Yellow = C :  0 | 0 | 1 | 1 | 0 | ...
//Orange = D :  1 | 0 | 0 | 1 | 1 | ...  
byte FullStep[4] = {0x09,0x03,0x06,0x0C};

//Half Step drive
//Step          0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 0 |...

//Blue   = A :  1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 1 |...
//Pink   = B :  0 | 0 | 1 | 1 | 1 | 0 | 0 | 0 | 0 |...
//Yellow = C :  0 | 0 | 0 | 0 | 1 | 1 | 1 | 0 | 0 |...
//Orange = D :  1 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 |...
byte HalfStep[8] = {0x09,0x01,0x03,0x02,0x06,0x04,0x0C,0x08};
int CS=0;//Current step
int N;
//----------------------------------------------------------
//Mode definition
#define HALF 0
#define FULL 1
#define WAVE 2
//Define the mode to drive the stepper motor
void StepperMode(int Mode) {  
  if(Mode==WAVE) {S=Wave; N=4;}
  else if(Mode==FULL) {S=FullStep; N=4;}
  else {S=HalfStep; N=8;}
}
//----------------------------------------------------------
//Turn stepper motor n steps
//with t microseconds period for each step
//positive n for forward dir and negative n for backward dir
void Step(int n,int t) {
  int CD=1; 
  if(n<0) {n*=-1; CD=-1;}
  for(int i=0;i<n;i++) {
    CS=(CS+(N+CD))%N;
    PORTB=S[CS];
    delayMicroseconds(t);
  }
}
//----------------------------------------------------------
//Initialize
void StepperInit() {
  //Setup port B (digital pin 8 to 13)
  //The two high bits (6 & 7) map to the crystal pins and are not usable
  //only 4 pins - 8 to 11 are used in this program
  //where Blue - pin 8 (LSB), Pink -pin 9, Yellow -pin 10, Orange -pin 11
  DDRB=0xff;
  PORTB = 0x00;  
}
//----------------------------------------------------------
#endif

Tuesday, August 4, 2015

Bluetooth Module to be Used with Microcontroller

HC-05 Master/Slave Bluetooth Module လေးက စျေးသက်သာပြီး (~SGD 16) သံုးရလွယ်တဲ့ Bluetooth module တစ်ခုဖြစ်ပြီး UART interface သံုးပါတယ်။ အဲဒီ HC-05 နဲ့ Arduino Uno microcontroller ကိုသံုးပြီး LED မီးလံုးကို ဖုန်းနဲ့ Bluetooth communication သံုးပြီး အဖွင့်၊ အပိတ် ထိန်း တဲ့ နမူနာတစ်ခု ကို ဆွေးနွေးပါမယ်။ တကယ်တော့ UART interface ပါတဲ့ ဘယ် မိုက်ကရိုကွန်ထရိုလာ မဆို သံုးလို့ရပါတယ်။


Figure. HC-05 Bluetooth module with Arduino Uno.

Thursday, September 18, 2014

Galaxy Note 2 Glass Screen Replacement

Samsung Galaxy note 2 ဖုန်းရဲ့ မှန်ကွဲသွားတာနဲ့ ပြန်လဲဖို့ လိုလာပါတယ်။ မှန်ပဲ ကွဲပြီး စကရင် က အလုပ်လုပ်နေတုန်းပဲ မို့ မှန်တင်ပဲ သီရိက အွန်လိုင်းကနေ မှာပေးတာ စင်ကာပူ ဒေါ်လာ ၁၅ ကျပ်လောက်ပဲကျတယ်။ နောက် အဖုံး၊ ဘက်ထရီ၊ ဆင်မ်းကဒ်၊ တုတ်တံ တွေကို ဖယ်ပြီးတဲ့အခါ အောက်ကပုံ မှာ ပြထားတဲ့ အတိုင်း ဝက်အူ ၁၁ လုံးကို ဖြုတ်ပါတယ်။

Tuesday, July 9, 2013

CAN bus

CAN Bus (controller area network) ဆိုသည်မှာ ဆက်သွယ်ရေး စနစ် တစ်ခုဖြစ်ပြီး မိုက်ခရိုကွန်ထရိုလာများ နှင့် အခြား အီလက်ထရွန်းနစ် ကိရိယာများကို ကွန်ပျူတာ မလိုအပ်ဘဲ အချင်းချင်း ဆယ်သွယ် နိုင်ရန် ပြုလုပ်ထားသော စနစ်ဖြစ်ပါတယ်။ CAN Bus ဟာ မက်ဆေ့ (message) အပေါ်တွင် အခြေခံသော ပရိုတိုကောလ်ဖြစ်ပြီး မော်တော်ယာဉ်များတွင် အဓိက အသုံးပြုလေ့ ရှိပေမယ့် စက်ရုံများနှင့် ဆေးဘက်ဆိုင်ရာ ကိရိယာများတွင်လည်း အသုံးပြုလေ့ ရှိပါတယ်။

Saturday, June 29, 2013

Using Analog to Digital Converter of AT89C51CC01 Microcontroller

AT89STK-06 starter kit ကိုသုံးပြီး 8051 microcontroller တစ်ခုဖြစ်တဲ့ AT89C51CC01 အတွက် analog to digital converter (ADC) အဝင် ကိုဖတ်တဲ့ C ကုဒ် တစ်ချို့ကို ရေးထားပါတယ်။ အဲဒီ မိုက်ခရို ကွန်ထရိုလာ မှာ 10 bit resolution ရှိတဲ့ multiplexed လုပ်ထားတဲ့ အဝင် ၈ ခုရှိပါတယ်။ ဒီနမူနာမှာ variable resister နဲ့ ဆက်ထားတဲ့ အဝင် ပင်နံပါတ် ၇ ကို ဖတ်ကြည့်ထား ပါတယ်။

Thursday, February 28, 2013

Non-inverting Amplifier Using op-amp

လတ်တလော သုံးနေတဲ့ amplifier (PiezoDrive PDX 150) လေးက ပျက်သွားတော့ အပိုရှိနေတဲ့ စပယ်ယာ amplifier လေးနဲ့ ပြောင်းသုံးဖို့ လိုလာပါတယ်။ အောက်ကပုံမှာ ပြထားတဲ့ စပယ်ယာ amplifier လေးက အဝင်ဗို့ -2 V ကနေ 12 V ရှိပြီး၊ အထွက်ဗို့က -20 V ကနေ 120 V ထုတ်ပေးနိုင်ပါတယ်။ ပျက်သွားတဲ့ ကောင်က ချဲ့ဆ ၂၀ ရှိပြီး၊ အပို ရှိတဲ့ amplifier လေးရဲ့ ချဲ့ဆ က ၁၀ ဆပဲရှိပါတယ်။ အဲဒီတော့ ချဲ့ဆ ၂ ဆရှိတဲ့ preamplifier လေး တစ်ခု ကို ကိုယ့်ဟာ ကိုယ် ဒီဇိုင်းလုပ်ပြီး ရှေ့ကနေ ခံသုံးဖို့ ဆုံးဖြတ်လိုက်ပါတယ်။

လုပ်ရမယ့် amplifier ရဲ့ အဝင်ဗို့က -1 V ကနေ 6 V ရှိမှာ ဖြစ်ပြီး၊ အထွက်ဗို့က -2 V ကနေ 12 V ထုတ်ပေးဖို့ လိုပါမယ်။ အဝင်ဗို့ နဲ့ အထွက်ဗို့က အတည့် (non-inverted) ဖြစ်ဖို့ လိုတာမို့ op-amp ကိုnon-inverting configuration သုံးပြီး ဒီဇိုင်းလုပ်လိုက်ပါတယ်။ ချဲ့ဆကို အသေးစိတ် ချိန်ညှိ ချင်တာဖို့ trimmer လေးကို ပါထည့်သုံးလိုက်ပါတယ်။ အလွယ်တကူ တွေ့တဲ့ LM358N op-amp IC ကိုပဲ ကောက်သုံးလိုက်ပါတယ်။ ဆားကစ် ပုံ နဲ့ lab ထဲမှာ အလွယ်တကူ ရတဲ့ ပစ္စည်းလေးတွေသုံးပြီး ရလာတဲ့ ဟာလေးကို အောက်မှာ ပြထားပါတယ်။ ဒီဆားကစ် ရဲ့ အဝင် ခုခံမှု (input impedance) က အရမ်းကြီးတာမို့ အဝင်ကို ဘာမှ ဆက်မထားတဲ့ အချိန် မှာ floating ဖြစ်မနေအောင် 56k ရီစစ္စတာလေး ထည့်လိုက်ပါတယ်။


ဒီ amplifier ရဲ့ ချဲ့ဆ ကို ၂ ဆတိတိရအောင် ချိန်တဲ့ အခါ oscilloscope ရဲ့peak to peak တန်ဖိုး ပြနေတာ ကို ဖတ်ရတာ သိပ်မသေချာဘူး ထင်တာနဲ့ တစ်ခြား နည်းလမ်း ကို ထပ်စဉ်းစား ကြည့်ပါတယ်။ နောက်တော့ ချန်နယ် ၁ နဲ့ ဆက်ထားတဲ့ အထွက် ကို 10 V per division ထားပြီး၊ ချန်နယ် ၂ နဲ့ ဆက်ထားတဲ့ အဝင်ကို 5 V per division ထားလိုက်ပါတယ်။ ပြီးတာနဲ့ trimmer လေးကို ဖြည်းဖြည်းခြင်း လှည့်ပြီး ထပ်တူကျတဲ့ လှိုင်းနှစ်ခု ရအောင် ချိန်လိုက်ပါတယ်။

Wednesday, February 6, 2013

TRIAC Power Control Circuit

အိမ်က ဖုန်စုပ်စက်လေး ပျက်သွားတော့ ဖျု့စ် ပျက်တာလောက် ဆိုရင် ပြင်လို့ ရရင် ရနိုင်ကောင်းရဲ့ ဆိုပြီး စက်ကို ဖွင့် ဖျု့စ်လိုက်ရှာတော့ မတွေ့ပါဘူး :P။ ပလပ်မှာ လည်း မပါတော့ ဒါ ဆိုရင် ပါဝါ ကွန်ထရိုး လုပ်ပေးတဲ့ ဆားကစ် ကပျက်တာ လည်း ဖြစ်နိုင်တာပဲ ဆို ပြီး အဝင်ကြိုးကို ဆားကစ် ကို မဆက်ပဲ ကျော်ပြီး မော်တာ ကို တိုက်ရိုက် ဆက်ကြည့်ပါတယ်။ ဒါလည်း မလုပ်ပါဘူး။ နောက်ဆုံး တော့ စက် အဟောင်းကို ပစ်ပြီး၊ ဖုန်စက် စက် အသစ် တစ်လုံး ဝယ် ပြီး ဖြေရှင်းလိုက်တယ်။ အေးရော :P။ ပါဝါ ကွန်ထရိုး လုပ်ပေးတဲ့ ဆားကစ် လေးကိုတော့ မပစ်ပဲ အားတဲ့အချိန် trace လိုက်ကြည့်ပါတယ်။ သူက ရိုးရှင်းတဲ့ RC ဆားကစ်လေးနဲ့ DIAC ကိုသုံးပြီး TRIAC ဘယ်လောက် နောက်ကျပြီးမှ ပွင့် မလဲဆိုတဲ့ အချိန်ကို ထိန်းသွားတာပါ။ ဆားကစ်လေးက ရိုးရှင်းပြီး အခြေခံ ကျပါတယ်။ သူ့ကို အောက်ကပုံတွေမှာ ပြထားပါတယ်။

Wednesday, December 19, 2012

Current Driver for Laser Diode

Laser Diode ကို မောင်းဖို့ current driver ဆားကစ် တစ်ခုကို လုပ်ကြည့်ထား ပါတယ်။ ပုံမှန်အားဖြင့် အောက်က ပုံမှာ ပြထားတဲ့ အတိုင်း CE with RE ပုံစံ ကို LED အတွက် current source အနေနဲ့ သုံးရတာကို ကြိုက်ပါတယ်။ ဒီဆားကစ်မှာ Laser Components ကထုတ်တဲ့ laser diode ADL-65055TL ကိုသုံးထားပါတယ်။ သူ့ရဲ့ ပုံမှန် အလုပ်လုပ် တဲ့ operating current က 25mA၊ အမြင့်ဆုံး maximum current က 35mA နဲ့ ပုံမှန် အလုပ်လုပ်တဲ့ operating voltage က 2.2V ပါ။
12V ပါဝါ ဆပ်ပလိုင်း အတွက် ထရန်စစ်စတာရဲ့ VCE(saturation) ကို သုညလို့ အနီးစပ်ဆုံး ယူဆပြီး RE ရဲ့ တန်ဖိုးကို အောက်က အတိုင်း တွက်လို့ရပါတယ်။ $$R_E=\frac{Vcc-V_L}{I_{max}}=\frac{12-2.2}{35m}=280 \Omega $$ အဲဒီ CE configuration အတွက် ချဲ့ဆ အများကြီး မလိုတာနဲ့ bypass capacitor ကို မသုံးခဲ့ ပါဘူး။ ဒီ class A amplifier ရဲ့ အထွက် လျှပ်စီးcurrent ကို 23mA နဲ့ 29 mA ကြားမှာ ပြောင်းနေစေချင် တာနဲ့ ထရန်စစ်စတာ ၂ ရဲ့ ပုံမှန် quiescent emitter current ကို IE2=26mA (operating current ပတ်ဝန်းကျင်လောက်မှာ) လို့ သတ်မှတ်လိုက်ပါတယ်။ အဲဒါဆိုရင် emitter voltage က VE2=RE x Iop= 280 x 26m = 7.28V လို့ ရပါတယ်။ input impedance မြင့်ဖို့အတွက် CC amplifier ကိုရှေ့ကနေ တဆင့် ထပ်ခံလိုက်တဲ့ အခါ အောက်မှာ ပြထားတဲ့ ပုံအတိုင်း ဖြစ်သွားပါတယ်။
base-emitter junction voltage, VBE ကို 0.7V လို့ ယူလိုက်ရင် ထရန်စစ်စတာ ၁ ရဲ့ ပုံမှန် တည်ငြိမ် base voltage က VB1= 7.28+0.7+0.7=8.68V ဖြစ်သွားပါတယ်။ သေးငယ်လွန်းတဲ့ ဘေ့စ် လျှပ်စီးကို ထည့်မစဉ်းစား ပဲ R1 နဲ့ R2 ကို တွက်လိုက်ရင် $$ V_{B1}=Vcc \times \frac{R_2}{R_1+ R_2}$$ $$ \frac{R_1}{R_2}+ 1=\frac{12}{8.68V}$$ R2=2.6 R1 လို့ ထွက်လာပါတယ်။ R1 တန်ဖိုးကို 22k လို့ ကြုံရာ ယူလိုက်မယ်ဆိုရင် R2 က 57k လို့ရပါတယ်။ အဝင် ac input voltage ကတော့ (29-23)m x 280= 1.68V peak to peak လောက်ပေးရမှာ ဖြစ်ပါတယ်။ lab ထဲမှာ ရှိတဲ့ ဟာလေးတွေနဲ့ လုပ်ကြည့်ပြီး ရလာတဲ့ prototype လေးကို အောက်မှာ ပြထားပါတယ်။

Saturday, August 13, 2011

Troubleshooting Daikin Aircon

Daikin(3MKD58DVM) inverter multi-split (R-22) aircon ကိုသုံးနေတာ တစ်နှစ် နှစ်နှစ် လောက်တော့ ရှိပြီ။ ပြီးခဲ့တဲ့ လကမှ indoor unit (FTKD25DVM) တစ်ခုက အလုပ် မလုပ် တော့ပဲ ဖွင့်လိုက်ရင် စက္ကန့်ပိုင်း လေးပဲ ထလုပ်ပြီး ပြန်ပြန် ပိတ်ပိတ် သွားတယ်။ နောက်တော့ LED indicator က မှိတ်တုပ် မှိတ်တုပ် ပဲ ပြနေတယ်။ အင်တာနက် ပေါ် ရှာဖတ် ကြည့်မှ ARC433B47 ရီမု ကွန်ထရိုး ကိုသုံးပြီး စစ်ကြည့်ဖို့ နည်းလမ်းတွေ တွေ့ တာနဲ့ ပြန်ပြီး ထုတ်နုတ် ထားလိုက်ပါတယ်။

Check Method 1

၁။ Timer cancel ခလုတ်ကို ၅ စက္ကန့် လောက် ဖိထား မယ်ဆိုရင် အပူချိန် ပြတဲ့နေရာ မှာ ၀၀ လို့ ပေါ်လာပါလိမ့်မယ်။


၂။ Timer cancel ခလုတ်ကို နှိပ်ရင် အသံတို တစ်ချက် ဒါမှမဟုတ် အသံတို နှစ်ချက် ကြားရပါလိမ့်မယ်။ အသံရှည် မြည်သံ ကြားရတဲ့ထိ ထပ်ခါ တလဲလဲနှိပ်ပါ။ ပြထားတဲ့ နံပါတ် တွေက ၀၀ ကစပြီး အောက်ပါ အစီအစဉ် အတိုင်း ပြောင်းသွား ပါလိမ့်မယ်။


၃။ အသံရှည် မြည်သံ ကြားရတဲ့ အခါ ပြနေတဲ့ နံပါတ် ကerror code ဖြစ်ပြီး ဖြစ်နိုင်တဲ့ ပြဿနာ အကြောင်းကို ဖော်ပြထားတဲ့ ဇယားကို အောက်မှာ တွေ့နိုင်ပါတယ်။

၄။ စစ်ဆေး ပြီးတဲ့ အခါ ပုံမှန် အခြေအနေ normal mode ကိုပြန်ရောက်အောင် timer cancel ခလုတ် ကို ၅ စက္ကန့် လောက် ဖိထားနိုင်ပါတယ်။ ဘာမှ မလုပ်ပဲထားရင်လဲ စက္ကန့် ၆၀ လောက် ကြာတဲ့ အခါ ရီမု ကွန်ထရိုးကသူ့ဟာသူ ပုံမှန် အတိုင်း ပြန်ဖြစ်သွားမှာပါ။

Check Method 2

၁။ TEMP ခလုတ် ရဲ့ အလယ်နဲ့၊ MODE ခလုတ်ကို ပြိုင်တူဖိလိုက်ပါ။ ပြနေတဲ့ နံပါတ် ရဲ့ ဘယ်ဘက် ဂဏန်း က မှိတ်တုပ် မှိတ်တုပ် ဖြစ်သွား ပါလိမ့်မယ်။


၂။ TEMP ခလုတ်ရဲ့ အပေါ် ဒါမှမဟုတ် အောက်ကို နှိပ်မယ် ဆိုရင် ဂဏန်း က ပြောင်းသွားပြီး အသံမြည်တာ ကြားရမှာပါ။

၃။ အသံကို အောက်က အတိုင်းစစ်နိုင်ပါတယ်။
အသံတို တစ်ချက်။ ။ ဘယ်ဘက် ဂဏန်းက error code မဟုတ်သေးပါဘူး။
အသံတို နှစ်ချက်။ ။ ဘယ်ဘက် ဂဏန်းက တော့ ဟုတ်သွားပြီ။ ဒါပေမယ့် ညာဖက် ဂဏန်းက error code မဟုတ်သေးပါဘူး။
အသံရှည် တစ်ချက်။ ။ ဂဏန်းနှစ်ခုလုံး ဟုတ်သွားပြီ။ ပြနေတဲ့ နံပါတ်က error code ဖြစ်ပါတယ်။


၄။ ဘယ်ဘက် ဂဏန်း ရပြီးတဲ့ အခါ MODE ခလုတ်ကို နှိပ်ပါ။ ညာဖက် ဂဏန်းက မှိတ်တုပ် မှိတ်တုပ် ဖြစ်သွား ပါလိမ့်မယ်။

၅။ TEMP ခလုတ်ရဲ့ အပေါ် ဒါမှမဟုတ် အောက်ကို နှိပ်မယ် ဆိုရင် ဂဏန်း က ပြောင်းသွားပြီး အသံမြည်တာ ကြားရမှာပါ။

၆။ အသံကို အောက်က အတိုင်းစစ်နိုင်ပါတယ်။
အသံတို တစ်ချက်။ ။ ဘယ်ဘက် ဂဏန်းက error code မဟုတ်သေးပါဘူး။
အသံတို နှစ်ချက်။ ။ ဘယ်ဘက် ဂဏန်းက ဟုတ်တယ်။ ဒါပေမယ့် ညာဖက် ဂဏန်းက error code မဟုတ်သေးပါဘူး။
အသံရှည် တစ်ချက်။ ။ ဂဏန်းနှစ်ခုလုံး ဟုတ်သွားပြီ။ ပြနေတဲ့ နံပါတ်က error code ဖြစ်ပါတယ်။


ရ။ အသံရှည် မြည်သံ ကြားရတဲ့ အခါ ပြနေတဲ့ နံပါတ် က error code ဖြစ်ပြီး၊ ဖြစ်နိုင်တဲ့ ပြဿနာ အကြောင်းကို ဖော်ပြထားတဲ့ ဇယားကို အောက်မှာ တွေ့နိုင်ပါတယ်။

၈။ စစ်ဆေး ပြီးတဲ့ အခါ diagnosis mode ကနေ ထွက်ဖို့ MODE ခလုတ် ကို နှိပ်ပါ။

၉။ ပုံမှန် အခြေအနေ normal mode ကိုပြန်ရောက်အောင် ON/OFF ခလုတ် ကို နှစ်ခါ နှိပ်ပါ။ ဘာမှ မလုပ်ပဲထားရင်လဲ စက္ကန့် ၆၀ လောက် ကြာတဲ့ အခါ ရီမု ကွန်ထရိုးကသူ့ဟာသူ ပုံမှန် အတိုင်း ပြန်ဖြစ်သွားမှာပါ။

Error Codes and Description of Fault

System

  • 00 ပုံမှန်
  • U0 refrigerant ဂတ်စ် အရည် နည်းနေပြီ
  • U2 ဗို့အား မမှန်။ မီးအား နည်း/များ နေပြီ
  • U4 အပြင်ယူနစ် နဲ့ အတွင်း ယူနစ် ကြား ဆက်သွယ်တဲ့ Signal ကြိုး ပြဿနာ
  • U7 အပြင်ယူနစ် ဆားကစ်ပြား ဆက်သွယ်ရေး Signal ပြဿနာ
  • UA အပြင်ယူနစ် နဲ့ အတွင်း ယူနစ် ကြား ဗို့အား မမှန်။
  • UH အခြား အခန်းက ရေ မခဲ အောင် လုပ်တဲ့ လုပ်ငန်း (Anti-icing function)


Indoor Unit

  • A1 အတွင်း ယူနစ် ဆားကစ်ပြား ပြဿနာ
  • A5 ခဲခြင်း၊ အပူလွန် ခြင်းမှ ကာကွယ်ခြင်း
  • A6 ပန်ကာ မော်တာနှင့် ဆက်စပ်သော ပြဿနာ
  • C4 အတွင်း အပူ ထိန်း (heat exchanger) ကိရိယာ၊ အပူချိန်တိုင်း ကိရိယာ တို့နှင့် ဆက်စပ်သော ပြဿနာ
  • C9 အခန်း အပူချိန်တိုင်း ကိရိယာ နှင့် ဆက်စပ်သော ပြဿနာ


Outdoor Unit

  • A5 ရေမခဲ အောင် လုပ်တဲ့ လုပ်ငန်း (Anti-icing function) ပြဿနာ
  • E1 အပြင် ယူနစ် ဆားကစ်ပြား ပြဿနာ
  • E5 ကွန်ပရက်စာ မနိုင်ဝန် ထမ်းခြင်း
  • E6 ကွန်ပရက်စာ ပိတ်သွားခြင်း (lock)
  • E7 DC ပန်ကာ ပိတ်သွားခြင်း (lock)
  • E8 အဝင် လျှပ်စစ် စီးဆင်းမှု လွန်ကဲခြင်း
  • EA လေးလမ်းသွား အဆို့ရှင် ပြဿနာ
  • F3 စွန့်ထုတ် ပိုက် အပူချိန်ထိန်း ပြဿနာ
  • F6 အအေးခံ ရာတွင် ဖိအား မြင့် အထိန်း ပြဿနာ
  • H0 ကွန်ပရက်စာ အာရုံခံ sensor စနစ် ပြဿနာ
  • H6 နေရာ အာရုံခံ စနစ် sensor ပြဿနာ
  • H8 CT နှင့် ဆက်စပ်သော ပြဿနာ
  • H9 အပြင် အပူချိန်တိုင်း ကိရိယာ နှင့် ဆက်စပ်သော ပြဿနာ
  • J3 စွန့်ထုတ် ပိုက် အပူချိန်တိုင်း ကိရိယာ နှင့် ဆက်စပ်သော ပြဿနာ
  • J6 အပြင် အပူ ထိန်း (heat exchanger) အပူချိန်တိုင်း ကိရိယာ နှင့် ဆက်စပ်သော ပြဿနာ
  • J8 အရည် ပိုက် အပူချိန်တိုင်း ကိရိယာ နှင့် ဆက်စပ်သော ပြဿနာ
  • J9 အငွေ့ ပိုက် အပူချိန်တိုင်း ကိရိယာ နှင့် ဆက်စပ်သော ပြဿနာ
  • L3 လျှပ်စစ် အိမ် အပူချိန် မြင့်တက်ခြင်း
  • L4 အပူဖြာ ဆူးတောင် အပူချိန် မြင့်တက်ခြင်း
  • L5 အထွက် လျှပ်စစ် စီးဆင်းမှု လွန်ကဲခြင်း
  • P4 အပူဖြာ ဆူးတောင်အပူချိန်တိုင်း ကိရိယာ နှင့် ဆက်စပ်သော ပြဿနာ


ကျွန်တော် တို့ရဲ့ ရီမု နဲ့ စစ်ကြည့်တော့ U4 လို့ ပြနေပါတယ်။ အပြင်ယူနစ် နဲ့ အတွင်း ယူနစ် ကြား ဆက်သွယ်မှု Signal ပြဿနာ ပေါ့။ အပြင်ယူနစ် ကပို့တာကို ကောင်းကောင်း မရတာ၊ ဒါမှမဟုတ် အပြင်ယူနစ် က ကောင်းကောင်း မပို့နိုင်တာပါ။ အဲဒီ လက်ကိုင်စာအုပ် မှာ ပြောထားတဲ့ ဖြစ်နိုင်တဲ့ ပြဿနာတွေက
၁။ အပြင် ယူနစ် ဆားကစ်ပြား ပြဿနာ
၂။ အတွင်း ယူနစ် ဆားကစ်ပြား ပြဿနာ
၃။ ဝါယာကြိုး ပြဿနာ
၄။ ပါဝါ ဆပ်ပလိုင်း မကောင်းတာ
၅။ အတွင်း ယူနစ် နဲ့ အပြင် ယူနစ် ဆက်ထားတဲ့ ဝါယာ နံပါတ် ၃ ပြတ်နေတာ တွေ ပါ။


အဲယားကွန်း ပြင်တဲ့သူတွေ အိမ်ကို ရောက်လာပြီး စစ်လိုက်တော့ အတွင်း ယူနစ် နဲ့ အပြင် ယူနစ် ဆက်ထားတဲ့ ဝါယာ နံပါတ် ၃ ပြတ်နေတာ ပါ။ ပြတ်တာက အပြင် ယူနစ် မှာ ဆက်ထားတဲ့ အဆက် နေရာမှာ ရေလေ တိုက်စားပြီးပြတ်တာပါ။ သူ့တို့ လှုပ်ပြလိုက်မှ နောက်ထပ် တစ်ခြား အတွင်း ယူနစ် တွေကို ဆက်ထားတဲ့ ဝါယာ နံပါတ် ၃ တွေပါ ပြတ်သွား သေးတယ်။ သူ့တို့က ဆက်ထားတဲ့ အိမ်ထဲ၊ အိမ်ပြင်က ဝါယာအားလုံး ဖြုတ်လဲရမယ်လို့ ပြောပါတယ်။ မလိုဘူး ထင်ပါတယ်။ ဝါယာ ထိပ်နားကို အခွံလေး နွာပြီး ပြန်ဆက် လိုက်တော့ OK သွားပါတယ်။ စိတ်ဝင်စားစရာ ကတော့ အတွင်း ယူနစ် တွေကို ဆက်ထားတဲ့ ဝါယာ အားလုံးမှာ နံပါတ် ၃ တွေပဲ တိုက်စား ခံရတာပါ။ ကြည့်ရတာတော့ အဲဒီ ဝါယာက DC ဗို့ကို သုံးပြီး electrode လို ဖြစ်သွားတယ် ထင်ပါတယ်။ နောက်ထပ် ပြန်ဖြစ် ဦးမယ့် ပုံပါပဲ။

၂၀၁၃ ဇွန် ၁၀ ဖြည့်စွက်ချက်

အဲကွန်းက အဲဒီကတည်းက ကောင်းသွားတာ အခုထက်ထိ ဘာပြဿနာမှ ပြန်မပေါ်သေးဘူး။ electrode ပြဿနာလည်း မဟုတ်လောက်ပြန်ဘူး။ အချို့သူတွေ ကွန်မန့်ပေးထားတာ ဒီစီ ဗို့မသုံးဘူးတဲ့။ ကွန်ထရက်တာ က အရည်အသွေးညံ့တဲ့ ဝါယာတွေ သုံးသွားလို့လည်း ဖြစ်နိုင်ပါတယ်။ ဒါကြောင့်နေမှာ သူတို့က ဝါယာအားလုံး ပြန်လဲဖို့ လိုတယ်လို့ ပြောပြီး ပြန်လဲသွားတာ။

၂၀၁၄ ဖေဖော်ဝါရီ ၁၀ ဖြည့်စွက်ချက်

ဒီပြဿနာပဲ နောက် အတွင်းယူနစ် တစ်ခု မှာ ထပ်ဖြစ်ပါတယ်။ ဒီတစ်ခါတော့ အပြင်ယူနစ်ထဲက ဆားကစ်ဘုတ် ပျက်တယ်လို့ ဆိုပါတယ်။ ပြန်လဲချင်ရင် ဒေါ်လာ ၈၀၀ လောက်ကုန်မယ် လို့ပြောပါတယ်။

Reference:
Malfunction code chart
Service Manual

Friday, March 4, 2011

Simple 6 DOF Translation and Rotation Stages

ပစ္စည်း တစ်ခု ကို 6 degrees of freedom (DOF) နဲ့ ထိန်းဖို့ လိုအပ်ချက် ပေါ်လာပါတယ်။ နေရာ ရွေ့ ဖို့ မော်တာနဲ့ မောင်းတဲ့ translation stage သုံးခု ရယ်၊ အနေအထား အတွက် မော်တာနဲ့ မောင်းတဲ့ rotary stage သုံးခု ကို သုံးပြီး ထိန်းမှာပါ။ သူ့ကို prismatic joint သုံးခု နဲ့ revolute joint သုံးခု ပါတဲ့ robot arm တစ်ခု အနေနဲ့ စဉ်းစားလို့ ရပေမယ့်၊ သာမန် ရိုးရှင်းတဲ့ ကိရိယာ တစ်ခု အတွက် မသင့်တော် တဲ့ ရှုပ်ထွေးတဲ့ kinematics တွက်ချက်မှု တွေ မပါအောင် တည်ဆောက်ချင် ပါတယ်။ နမူနာ တွက်ချက်မှု တစ်ခု ကို ဒီမှာ တွေ့ နိုင်ပါတယ်။ rotary stage တွေရဲ့ ဝင်ရိုးတွေ ကို အထိန်းခံ ပစ္စည်း မှာ ဖြတ်သွားအောင် စီစဉ် ထားမယ် ဆိုရင်တော့ ရိုးရှင်းတဲ့၊ ဒါရိုက် ထိန်းချုပ်လို့ ရတဲ့ ကိရိယာ တစ်ခုကို ရရှိနိုင်ပါတယ်။ ကျွန်တော် ဒီဇိုင်း လုပ်ကြည့်ထား တဲ့ ပုံတွေကို အောက်မှာတွေ့ နိုင်ပါတယ်။

Thursday, March 3, 2011

Capacitor selection for a Crystal Oscillator

ပုံမှန် crystal oscillator တစ်ခု နဲ့ နမူနာ layout design တစ်ခုကို ပုံတွေမှာ ဖော်ပြထားပါတယ်။ Crystal ထုတ်လုပ်သူ တွေက crystal တစ်ခု အတွက် ရှိသင့်တဲ့ CL (load capacitance) ကို သူ့အတွက် datasheet မှာ ဖော်ပြထားလေ့ ရှိပါတယ်။ အဲဒီ တန်ဖိုးဟာ crystal ကမြင်ရမယ့် C1 ၊ C2 နဲ့ pin ၊ board ၊ PCB trace တို့ရဲ့ ရှိသမျှ စုစုပေါင်း capacitance ( Cstray ) တို့ကို တန်းဆက် (series ဆက်) ထားတဲ့ တန်ဖိုးပါ။ Cstray ရဲ့ ပုံမှန် တန်ဖိုးက 2 pF နဲ့ 7 pF ကြားမှာ ရှိတတ်ပါတယ်။ သူတို့ ရဲ့ ဆက်သွယ်မှု ကို အောက်ပါ ညီမျှခြင်း နဲ့ ဖော်ပြနိုင် ပါတယ်။

CL=(C1 * C2)/(C1 + C2) + Cstray

C1 နဲ့ C2 တို့ကို ရွေးချယ်တဲ့ အခါ ပုံမှန်အား ဖြင့် တန်ဖိုးတူ တာကို သုံးကြပါတယ်။ ဒါကြောင့်

C1 = C2=2 * (CL - Cstray)

ဖြစ်ပါတယ်။ ဥပမာ Cstray က 4 pF နဲ့ CL က 18 pF ဖြစ်မယ်ဆိုရင် C1 နဲ့ C2 က 28 pF ဖြစ်သင့်ပါတယ်။ ဒါဆို ဝယ်လို့ရမယ့် normalized တန်ဖိုး 30 pF ကို သုံးနိုင်ပါတယ်။

Friday, June 11, 2010

Circular Buffered UART Com Module for 8051 Microcontroller

Embedded system အများစု မှာ UART communication ကို သုံးကြပါတယ်။ ဒါကြောင့် ကျွန်တော် ရေးထားတဲ့ circular buffered UART comm module လေးကို ဒီမှာ ဖော်ပြချင်ပါတယ်။ သူ့ကို 8051 microcontroller အတွက် ရေးထားတာ ဖြစ်ပေမယ့် တစ်ခြား microcontroller တွေ အတွက်ဆိုရင် လဲ အလွယ်တစ်ကူ ပြောင်းသုံးလို့ ရပါတယ်။

Using Circular Buffered UART Com Module

သူ့ကို သုံးချင်တဲ့ module မှာ ထုံးစံ အတိုင်း header file ကြေငြာဖို့ လိုပါတယ်။ ကျွန်တော့် နမူနာ မှာတော့ header အားလုံးကို 'headers.h' ဖိုင်ထဲမှာ စုထားတဲ့ အတွက် အဲဒီဖိုင်ကို ထည့်လိုက်ရုံ ပါပဲ။
ပို့ဖို့၊ လက်ခံဖို့ အတွက် buffer အရွယ်အစားတွေကို ComConfig.h မှာ သတ်မှတ် နိုင်ပါတယ်။ အဲဒီမှာပဲ ဒေတာ လက်ခံရရှိတဲ့ အခါ ခေါ်ချင်တဲ့ function ကို သတ်မှတ်နိုင်ပါတယ်။
main function ထဲမှာ buffer ထဲမှာ ဒေတာ တွေ ရောက်နေ မနေ စစ်ဖို့ ComChkRx() function ကို poll လုပ် နိုင်ပါတယ်။
နမူနာ source code ကို

UART-Timer-8051 on GitHub

မှာရယူ နိုင်ပါတယ်။

Thursday, June 10, 2010

Soft-Timer Module for 8051 Microcontroller

Embedded system အားလုံးလိုလို မှာ timer တွေကို သုံးကြပါတယ်။ 8051 microcontroller မှာ hardware timer နှစ်ခု၊ သုံးခု ပဲ ပါတဲ့ အတွက် ပုံမှန် system တစ်ခု အတွက် လိုအပ်တဲ့ timer အားလုံးကို hardware timer တွေပဲ သုံးပြီး ရေးမယ် ဆိုရင် လုံလောက်မှာ မဟုတ်ပါဘူး။ ဒါကြောင့် သိပ်ပြီး တိကျဖို့ မလိုတဲ့ timer တွေကို ရေးတဲ့အခါ software ကိုပဲ သုံးပါတယ်။ ဒီမှာ ကျွန်တော် ရေးထားတဲ့ soft-timer module လေး တစ်ခု အကြောင်း ကို ပြောချင်ပါတယ်။ သူ့ကို 8051 microcontroller အတွက် ရေးထားတာ ဖြစ်ပေမယ့် တစ်ခြား microcontroller တွေ အတွက်ဆိုရင် လဲ အလွယ်တစ်ကူ ပြောင်းသုံးလို့ ရပါတယ်။
နမူနာ source code ကို

UART-Timer-8051 on GitHub

မှာရယူ နိုင်ပါတယ်။

Using soft-timer module

သူ့ကို သုံးချင်တဲ့ module မှာ ထုံးစံ အတိုင်း header file ကြေငြာဖို့ လိုပါတယ်။ ကျွန်တော့် နမူနာ မှာတော့ header အားလုံးကို 'headers.h' ဖိုင်ထဲမှာ စုထားတဲ့ အတွက် အဲဒီဖိုင်ကို ထည့်လိုက်ရုံ ပါပဲ။
Timer က သတ်မှတ်ချိန် ကုန် လို့ time out ဖြစ်ရင် လုပ်ချင်တဲ့ function ရယ်၊ timer ရဲ့ အချိန် သတ်မှတ်ဖို့၊ timer စတင်ဖို့ အတွက် function များကိုရေးပါ။ ကျွန်တော့် နမူနာ မှာတော့ SysSBYLEDTmrTO() နဲ့ SysSBYLEDInit() တို့ကို System.c module ထဲမှာ ရေးထားပါတယ်။
TmrConfig.h ဖိုင်ကို ဖွင့်ပြီး အဲဒီမှာ ရှိတဲ့ အဆင့် သုံးဆင့် ကို လုပ်ဖို့ လိုပါတယ်။ သင့် compiler က function pointers တွေကို သုံးလို့ မရရင် switch structure နဲ့ ပြောင်းသုံး နိုင်ပါတယ်။
main function ထဲမှာ initialize လုပ်ဖို့ TmrInit() နဲ့ ပုံမှန် poll လုပ်နေဖို့ TmrTask() တွေကို ခေါ်ဖို့ လို့ပါတယ်။ သူတို့ကို Tmr.c ထဲမှာ ရေးထားပါတယ်။

Wednesday, May 26, 2010

Using SPI on Low-End Microcontroller

SPI က IC အချင်းချင်း ဆက်သွယ်ဖို့ အတွက် ရိုးရှင်းပြီး ထိရောက်တဲ့ bus တစ်ခုပါ။ Real Time Clock၊ EEPROM အစရှိတဲ့ chip အများစုမှာ ဆက်သွယ်ဖို့ အတွက် SPI ဒါမှမဟုတ် I2C bus တွေ ပါလေ့ရှိပါတယ်။ ထူးခြားတဲ့ အချက် မရှိရင် တော့ SPI သုံးရတာကို I2C ထက်ပိုကြိုက်ပါတယ်။ သူက ပိုမြန်ပြီး ပိုရှင်းလို့ပါ။ သူ့ကို software နဲ့ ဖန်တီး emulate လုပ်ဖို့လဲ လွယ်ပါတယ်။
တစ်ခါက 10MHz ရှိတဲ့ SPI ပါတဲ့ LED driver chip တစ်ခုကို လုပ်ဆောင်မှု အရမ်းမမြင့်တဲ့ 4MHz microcontroller နဲ့ တွဲသုံးဖြစ်ပါတယ်။ Design လုပ်တုန်းက ဈေးသက်သာ ဖို့ အတွက် အဓိက ထားလို့ပါ။ Microcontroller ကလဲ တစ် ဒေါ်လာတောင် မပေးရပါဘူး။ ဒါပေမယ့် သူ့မှာ firmware နဲ့ font တွေသိမ်းဖို့ flash အလုံအလောက် ရှိပါတယ်။ အစကတော့ SPI ကို ဒေတာ ပို့ဖို့၊ လက်ခံဖို့ အတွက် ပုံမှန် အတိုင်းပဲ နှေးတဲ့ အဝေးပို့ RS232 တို့၊ CAN bus တို့မှာ သုံးနေကြ အတိုင်း circular buffer ကို hardware interrupt နဲ့ တွဲသုံးပါတယ်။ အဲဒါက ပုံမှန် အခြေအနေမှာ တော့ အိုကေ ပါတယ်။ ပြဿနာ က ကြီးမားတဲ့ 96x16 dot-matrix LED ဆိုင်းဘုတ် ကြီးကို တစ်စက္ကန့် ၁၂၅ ကြိမ် မောင်းချင်ပြီး CPU ကို အသုံးချ တဲ့ utilization က အရမ်းမြင့်နေတာပါ။ အကျိုးဆက် အနေနဲ့ စာသားတွေကို ဘေးတိုက် ပြေးတာ အစရှိတဲ့ ဂရပ်ဖစ် လုပ်ဆောင်မှုတွေကို ကိုင်တွယ်ရတဲ့ အခါ ကောင်းကောင်း မလုပ်နိုင်တော့ပဲ ဖုတ်လှိုက် ဖုတ်လှိုက် ဖြစ်ချင်လာ ပါတယ်။ ဒါနဲ့ပဲ အရင်းအမြစ်ကို စာရင်းစစ် ကြည့်လိုက်တော့ အဓိက အသုံးအများဆုံး ဖြစ်တဲ့၊ CPU က အမြဲတမ်းလိုလို လုပ်ဆောင်နေ ရတဲ့ SPI function က interrupt တွေ၊ circular buffer တွေနဲ့ ဖောင်းပွ နေပြီး သူ့ကို ထိရောက်အောင် ပြင်နိုင်ရင် CPU က တော်တော် သက်သာသွားမယ် ဆိုတာ တွေ့ရပါတယ်။ ပုံမှန်ကတော့ hardware interrupt ကိုသုံးတာက ပိုထိရောက်၊ ပိုမြန်တာ မှန်ပါတယ်။ ဒါပေမယ့် ဒီ ကိစ္စမှာတော့ ပုံမှန် မဟုတ်ပါဘူး နှေးတဲ့ CPU က အရမ်းမြန် အရမ်းအသုံးပြုဖို့ လိုတဲ့ SPI ကို မောင်းဖို့ လိုနေလို့ပါ။ SPI ကို ဒေတာ တစ်လုံး ပို့တိုင်း CPU cycle တွေ အရမ်းစားတဲ့ ပို့တဲ့ interrupt function၊ လက်ခံတဲ့ interrupt function တွေကို လုပ်နေရလို့ပါ။ နောက်တော့ polling ဒါမှမဟုတ် emulation ကို သုံးပြီး SPI ကို ဆက်သွယ်တာက interrupt ထက် ပိုမြန်တာကို တွေ့ရပါတယ်။ ဒါတောင် polling ကိုသုံးမယ်ဆိုရင် hardware က လက်ခံတဲ့ bus speed ကိုပဲ သုံးလို့ရမှာပါ။ ဒါနဲ့ SPI function ကို ပိုထိရောက်အောင် firmware ကို ပြင်လိုက်တော့ ကောင်းသွားပါတယ်။ ဒါကြောင့် SPI ကို emulating လုပ်ရင် ကောင်းတဲ့ အချက် တစ်ချို့ ကို ကျွန်တော် တို့ရဲ့ အတွေ့အကြုံ အရ ပြောချင်တာက
  1. SPI ကို software မှာ emulate လုပ်ရင် ပိုမြန်တဲ့ အခါတွေ လည်း ရှိပါတယ်။
  2. အရည်အသွေး လည်း ပိုကောင်းပါတယ်။ ဘာကြောင့်လဲ ဆိုတော့ ရိုးရှင်းတာရယ်၊ interrupt ကြောင့် ဖြစ်လာနိုင်တဲ့ ပြဿနာ အများစုကနေ ရှောင်ပြီးသား ဖြစ်သွားလို့ပါ။
  3. ရိုးရှင်းတဲ့ code လေးကို ရေးရတာ ပိုမြန်၊ ပိုလွယ်ကူ၊ ပိုပြီး အမှားနည်းနိုင်ပါတယ်။ မဟုတ်ရင် အသစ်သုံးမယ့် microcontroller တိုင်း အတွက် အမျိုးမျိုးသော register setting တွေနားလည်ဖို့ datasheet ကို အချိန်ပေး ဖတ်ဖို့ လိုမှာပါ။
  4. အကောင်းဆုံးကတော့ portable ဖြစ်ပြီး hardware ကို မမှီခိုတော့ တာပါပဲ။
SPI မှာ တိကျတဲ့ formal standard မရှိပါဘူး။ ပုံမှန် shift register တစ်ခုလို ရှင်းလွန်းလို့ပါ။ Timing diagram ကိုမြင်ရုံနဲ့ နားလည်နိုင်ပါတယ်။ အောက်က နမူနာက SPI မျိုးကွဲ တစ်ခုကို emulate လုပ်တဲ့ C function တစ်ခုပါ။
//-------------------------------------
unsigned char spi(unsigned char d)
{
    unsigned char i;
    SCLK=1;
    EN=1;
    for(i=0;i<8;i++)
    {
        MOSI=(d & 0x80)?1:0;        
        //Delay(period/2)-optional for slower SPI bus speed
        SCLK=0;
        d<<=1;        
        d|=MISO;
        //Delay(period/2)-optional for slower SPI bus speed
        SCLK=1;
    }
    EN=0;
    return d;
}
//-------------------------------------

Tuesday, May 25, 2010

Astable Multivibrator using Op-amp

မိတ်ဆွေ တစ်ယောက်က op-amp circuit တစ်ခုရဲ့ oscillation frequency ကို တွက်ထုတ်ဖို့ အကူ အညီ တောင်းလာ ပါတယ်။ တိုင်းကြည့်လို့ ရတဲ့ frequency က ၁၀၉ kHz ရှိတယ်လို့ ဆိုပါတယ်။ သူက ထွက်လာတဲ့ oscillation frequency နဲ့ သုံးထားတဲ့ passive component တွေရဲ့ ဆက်သွယ်မှု ကို တွက်ထုတ် ချင်တာ ပါ။ ဒီလို analog circuits တွေကို မတွေ့ ဖြစ်တာ တော်တော် ကြာနေ ပေမယ့် ကြည့်ပေးမယ် လို့ သဘောတူ လိုက်ပါတယ်။ ဒါနဲ့ သူက ဆားကစ် ပတ်လမ်း ပုံကို ဖုန်းနဲ့ ဓာတ်ပုံရိုက် ပြီး MMS နဲ့ ပို့ လိုက်ပါတယ်။ ကြည့် လိုက်တော့ သူ့ရဲ့ တည်ဆောက်ပုံ က ရိုးရှင်းပြီး တွေ့ နေကြ ပုံစံ မျိုး ဖြစ်နေတာနဲ့ frequency ကို တွက်ကြည့် ပြီး ဖုန်းနဲ့ ဓာတ်ပုံ ပြန်ရိုက်၊ အောက်က ပုံတွေကို သူဆီကို MMS နဲ့ ပြန် ပို့ လိုက်ပါတယ်။

Friday, December 11, 2009

Protecting Flash Memory of a Fujitsu MCU

တစ်လောက Fujitsu MB95F128JB ရဲ့ flash memory ကို ကာကွယ် ဖို့ အတွက် သင့်တော်တဲ့ နည်းလမ်း ရှာ ကြည့် တော့ စိတ်ကြိုက် မတွေ့ခဲ့ပါဘူး။ နောက်တော့ သူ့ရဲ့ .mhx ဖိုင်ကို ပြင်ကြည့် ဖို့ စိတ်ကူးရပါတယ်။ ဖိုင်ရဲ့ နောက်ဆုံးလိုင်း ရဲ့ ရှေ့ မှာ အောက်ပါ လိုင်းကို ဖြည့်လိုက်ရင် အဆင်ပြေသွား ပါလိမ့်မယ်။
S104400001BA
Ref: http://en.wikipedia.org/wiki/SREC_%28file_format%29

Saturday, October 10, 2009

Multidrop network for RS232

တစ်ခါက project တစ်ခုမှာ master device တစ်ခုနဲ့ slave device ရှစ်ခု ဆက်သွယ်ပြီး communicate လုပ်ဖို့ လိုလာပါတယ်။ အစက RS485 half-duplex communication သုံးဖို့ ရည်ရွယ်ထား ပေမယ့် ဖြစ်ချင်တော့ ရောက်လာ ပြီးသား ပစ္စည်း အားလုံးက RS232 interface တွေပဲ ရှိကြတယ်။ RS232 communication က ပစ္စည်း တစ်ခု တစ်ခု ချင်းဆက်ဖို့ပါ။ တစ်ကယ်လို့ master device တစ်ခုက ပဲ ပို့ပြီး ကျန်တဲ့ slave တွေက နားပဲထောင် နေရင် ပြသနာ မရှိပေမယ့် slave တွေရဲ့ transmit line တွေက disable ဖြစ်အောင် ပိတ်ထားလို့ မရတဲ့ အတွက် master device ဆီကို ပြန်ပို့ဖို့ ဝါယာ လိုင်း တစ်ခုထဲကို တိုက်ရိုက် သွားဆက်လို့ မရပါဘူး။ သူ့တို့ရဲ့voltage အဝင်အထွက် တွေကို ကြည့်ပြီးတဲ့ အခါမှာတော့ အဲဒီ ပြသနာကို ဖြေရှင်းဖို့ နည်းလမ်းတစ်ခု ကို စဉ်းစားမိ ပါတယ်။ slave တစ်ခုချင်း စီရဲ့ transmit line တွေမှာ diode တစ်ခုစီ ထည့်ပေးလိုက်ရင် RS485 half-duplex communication လိုပဲ ဆက်သွယ်လို့ ရမယ့် hardware connection တစ်ခုကို ရရှိနိုင်ပြီး အဲဒါကိုအောက်က ပုံမှာ ကြည့်နိုင်ပါတယ်။
Updated: 2017 Sep 02
မှတ်ချက် ရေးကြ၊ မေးကြ တဲ့ ပေါ်မူ တည်ပြီး နောက်ထပ် ဆက်လို့ ရတဲ့ ပုံစံ တွေထပ် ဖြည့်လိုက် ပါတယ်။ စိတ်ဝင်စား ကြတဲ့ အတွက် ကျေးဇူး တင် ပါတယ်။

RS232 network with multiple masters and multiple slaves



UART/TTL-Serial network with single master and multiple slaves

RS232 transceivers တွေ မသုံးပဲ UART ကအထွက် TTL level signal တွေကိုပဲ သုံးမယ် ဆိုရင်တော့ အောက် ကအတိုင်း ဆက်နိုင် ပါတယ်။



UART/TTL-Serial network with multiple masters and multiple slaves



Sunday, May 4, 2008

RS232-RS485 Converter

တစ်ခါတလေ ကွန်ပျူတာ ရဲ့ serial port က RS232 ကနေ RS422 သို့မဟုတ် RS485 ပြောင်းသုံးဖို့ လိုတာပဲဖြစ်ဖြစ်၊ RS485 သုံးတဲ့ ပစ္စည်းတွေကို ကွန်ပျူတာနဲ့ လှမ်းပြီးဆက်သွယ်ဖို့ လိုလာရင်ဖြစ်ဖြစ် RS485 converter များကို အလွယ်တကူ ဝယ်ယူ အသုံးပြုနိုင်ပါတယ်။ အောက်မှာ နမူနာအဖြစ် IC-485SN ဆိုတဲ့ bidirectional converter တစ်ခုကိုဖော်ပြထားပါတယ်။




ပထမပုံမှာ ပြထားတဲ့အတိုင်း သူ့ရဲ့ အသုံးပြုပုံကို ခလုပ်လေးနှစ်ခု ကိုသုံးပြီး လိုသလို configure လုပ်သုံးလို့ရပါတယ်။
ပထမ ခလုပ်က device mode ကို ရွေးဖို့ပါ... RS232 ဖက် (DB25 Female connector ရှိတဲ့ဖက်) က ကွန်ပျူတာ (သို့မဟုတ် Data Terminal Equipment တစ်ခုခု) ဆိုရင် DTE မှာထားပါ။ ဒါမှမဟုတ် modem အစရှိတဲ့ device (data communication equipment) တစ်ခုခု ဆိုရင် DCE မှာ ထားဖို့လိုပါတယ်။
ဒုတိယ ခလုပ်ကတော့ transmitting and receiving mode ကို ရွေးဖို့ပါ။

1. TxON, RxON Mode


TxON, RxON ကို point to point operations တွေအတွက် သုံးလေ့ရှိပါတယ်။ အမြဲတမ်း transmit driver က enable ဖြစ်နေပြီး၊ အမြဲတမ်းလဲ receiving လုပ်နေမှာပါ။ RS232 ကနေ RS422 ပြောင်းပေးတယ်လို့ ပြောနိုင်ပါတယ်။ RS232 ဖက်မှာ RTS နဲ့ CTS၊ DTR နဲ့ DSR တို့က loopback ဆက်နေပါတယ်။
RS485 ဖက်မှာကတော့ အောက်ပါအတိုင်း ဖြစ်ပါတယ်။


Pin 1 = Tx+
Pin 2 = Tx-
Pin 3 = Rx-
Pin 4 = Rx+


2. TxRTS, RxON Mode


TxRTS, RxON ကို multidrop operations တွေအတွက်သုံးပါတယ်။ အမြဲတမ်း receiving လုပ်နေပေမယ့် RTS ကို high ပေးမှ transmit driver က enable ဖြစ်ပြီး ဒေတာ ပို့လို့ရပါတယ်။ DCE အတွက်ဆိုရင် RTS အစား CTS ကိုသုံးရမှာပါ။ ဝါယာလေးခုသုံးတဲ့ RS485 full duplex အဖြစ်သုံးနိုင်ပါတယ်။ RS232 ဖက်မှာ RTS နဲ့ CTS၊ DTR နဲ့ DSR တို့ကလည်း loopback ဆက်နေပါတယ်။
RS485 ဖက်မှာကတော့ အောက်ပါအတိုင်း ဖြစ်ပါတယ်။


Pin 1 = Tx+
Pin 2 = Tx-
Pin 3 = Rx-
Pin 4 = Rx+


3. TxDTR/RTS, RxDSR/ON Mode


TxDTR/RTS, RxDSR/ON ကို RS485 half duplex အဖြစ်သုံးနိုင်ပါတယ်။ DTE အတွက်ဆိုရင် RTS က true ဖြစ်မှ data lines တွေနဲ့ busy lines တွေရဲ့ transmit driver တွေက enable ဖြစ်မှာ ဖြစ်ပါတယ်။ DTR ကို true ပေးရင် busy ဖြစ်ကြောင်း transmit လုပ်မှာ ဖြစ်ပြီး၊ busy ဖြစ်ကြောင်း receive ရရှိမယ်ဆိုရင် DSR မှာ true ပြမှာပါ။ DCE အတွက်ဆိုရင် RTS အစား CTS ဖြစ်ပြီး၊ DTR နဲ့ DSR ပြောင်းပြန်ဖြစ်သွားမှာပါ။ RS232 ဖက်မှာ RTS နဲ့ CTS တို့က loopback ဆက်နေပါတယ်။
RS485 ဖက်မှာကတော့ အောက်ပါအတိုင်း ဖြစ်ပါတယ်။


Pin 1 = Data+
Pin 2 = Data-
Pin 3 = Busy-
Pin 4 = Busy+

DB 9 female နဲ့ DB25 male Cable ရဲ့ ဆက်သွယ်မှုကို အောက်ပါ အတိုင်း တွေ့ရှိရပါတယ်။


Female DB9 -------------- Male DB25
pin 1 ---------------------- pin 8 .......... Black
pin 2 ---------------------- pin 3 .......... Brown
pin 3 ---------------------- pin 2 .......... Red
pin 4 ---------------------- pin 20 ........ Orange
pin 5 ---------------------- pin 7 .......... Yellow
pin 6 ---------------------- pin 6 .......... Green
pin 7 ---------------------- pin 4 .......... Blue
pin 8 ---------------------- pin 5 .......... Magenta
pin 9 ---------------------- pin 22 ........ Gray