Showing posts with label Microcontroller. Show all posts
Showing posts with label Microcontroller. Show all posts

Monday, 26 July 2010

MCU မ်ားႏွင့္ Embedded OS မ်ား ေပါင္းစပ္ျခင္း

Embedded (XP, Ubantu, Win CE, Android, LINUX) ေတြကို Industrial PC ေတြမွာ သံုးၾကပါတယ္။ သူတို႔က အရင္က CPU တစ္ခုပါရတယ္ (Intel, AMD, ..)။ အခုေနာက္ပိုင္း Smart phone, Touch screen phone, PDA ေတြ အသံုးတြင္က်ယ္လာတဲ့အခါမွာ MCU ေတြမွာ OS ေတြ ေပါင္းၿပီး ထဲ့လာၾကတယ္။ Rabbit MCU ေတြမွာေတာင္ FTP အတြက္ UNIX, Tiny OS ေတြ ထဲ့သံုးလာၾကတယ္။ Mini web server ေတြအထိ ထဲ့သံုးလာၾကတယ္။ အဲ့ဒီကေန တစ္ဆင့္ တက္လာတဲ့အခါ အခုေနာက္ပိုင္း အရမ္းေခတ္စားလာတာက Touch PDA development board ေတြပါ။ အမ်ိဳးအစား အမ်ားႀကီးရွိလာေပမယ့္ သေဘာတရားကအတူတူပါ။ ထူးျခားခ်က္က ထုတ္လုပ္သူ (Samsung, Freescale, ST) ေတြသာေျပာင္းသြားတယ္ သံုးၾကတဲ့ Core ကေတာ့ ARM9, 11 ေတြ ျဖစ္ေနတာပါပဲ။ Industrial PC ေတြေလာက္ စြမ္းရည္မျမင့္ေပမယ့္ Low level protocol ေတြသံုးဖို႔အတြက္ SPI, UART, I2C စတဲ့ protocol ေတြကို တိုက္႐ိုက္သံုးလို႔ရတဲ့အတြက္ အလြန္အဆင္ေျပပါတယ္။ က်ေတာ္ဒါကို ေလ့လာဆဲျဖစ္တဲ့အတြက္ သိသေလာက္ကို ထပ္ထပ္ တင္သြားေပးပါ့မယ္။


Thursday, 1 July 2010

4x4 Metrix Keypad

Matrix Keypad (4x4, 3x4, 3x3 ) ေတြကို ေနရာစံုမွာ သံုးၾကပါတယ္။ ဖုန္း ေတြရဲ့ ေတြ အျဖစ္၊ ေတြရဲ့ ေတြအျဖစ္ သံုးၾကပါတယ္။ ခုေျပာခ်င္တာက ဒီေကာင္ေလးရဲ့ တည္ေဆာက္ပံုနဲ႔ Matrix Keypad ရဲ့ သေဘာတရားပါ။ ႐ိုး႐ိုးေလး ေတြးၾကည့္လိုက္ရင္ 16 Keys (4x4) ကို scan လုပ္ဖို႔အတြက္ Input pin ၁၆ ခု လိုပါတယ္။ Input (whole 8 bits port) ေတြ အဲ့ေလာက္အမ်ားႀကီး မသံုးႏိုင္ေတာ့တဲ့အခါ Software controlled matrix Keypad ကို သံုးၾကပါတယ္။

ေအာက္က ပံုေတြမွာ Schematic ေကာ Keypad ပံုစံေတြပါ ျပထားပါတယ္။ Software controlled logic ကေတာ့ ..
၁။ ၄ လိုင္းစီ (4 Outputs and 4 Inputs) ထားပါ။ Row, Column ႀကိဳက္သလို ထားလို႔ရပါတယ္။
၂။ Output ၁ လိုင္းစီကေန logic (High/ Low) ေပးပါ။ ၁ လိုင္းေပးတိုင္း Input 4 lines လံုးကို scan ပါ။ ၁ လိုင္းမိတာနဲ႔ ထြက္ပစ္လိုက္ပါ။
ဥပမာ - Output 1 and Input 1 ဆိုရင္ Row 1, Col 1 ဆိုေတာ့ “Key 1"
Output 2 and Input 3 ဆိုရင္ Row 2, Col 3 ဆိုေတာ့ “Key 6"။ အဲလိုနည္းစနစ္နဲ႔ ေရးသြားပါတယ္။
၃။ Key Bonce ကို ေျဖာက္ခ်င္ယင္ေတာ့ ၂ ခါျပန္ scan လုပ္ၿပီး တူတယ္ဆိုမွ အဲ့ဒီ Key ကို ယူပါ။ ေအာက္မွာ နမူနာ source code ထဲ့ေပးထားပါတယ္။


#include //Include file for 8051
#define keyport P2 //keypad connected to P2
#define col1 P2_0 //column 1
#define col2 P2_1 //column 2
#define col3 P2_2 //column 3
#define col4 P2_3 //column 4
#define TRUE 1 //some defines
#define FALSE 0

/*
+---------------------------------------+
| Prototype: void key_init(void); |
| Return Type: void |
| Arguments: None |
| Description: Initialize ports and |
| Keypad. |
+---------------------------------------+
*/
void key_init(){
keyport &=0x0F; //make Rows as o/p and cols are i/p
}

/*
+-----------------------------------------------+
| Prototype: unsigned char get_key(void); |
| Return Type: unsigned char |
| Arguments: None |
| Description: To read key from the keypad |
+-----------------------------------------------+
*/
unsigned char get_key(){
unsigned char i,k,key=0;
k=1;
for(i=0;i<4;i++){>
keyport &=~(0x80>>i); //to make rows low 1 by 1
if(!col1){ //check if key1 is pressed
key = k+0; //set key number
while(!col1); //wait for release
return key; //return key number
}
if(!col2){ //check if key2 is pressed
key = k+1; //set key number
while(!col2); //wait for release
return key; //return key number
}
if(!col3){ //check if key3 is pressed
key = k+2; //set key number
while(!col3); //wait for release
return key; //return key number
}
if(!col4){ //check if key4 is pressed
key = k+3; //set key number
while(!col4); //wait for release
return key; //return key number
}
k+=4; //next row key number
keyport |= 0x80>>i; //make the row high again
}
return FALSE; //return false if no key pressed
}

Friday, 9 April 2010

MC54-74HC4052 (Serial Data Shift Register)

MCU တစ္ခုမွာ Serial port မေလာက္ေတာ့တဲ့ အေျခအေနေတြ ျဖစ္ခဲ့ရင္ သံုးတဲ့ အမ်ိဳးအစားပါ။ Motorola က ထုတ္ပါတယ္။ ဒီ က Serial IO ၄ ခုကို တစ္လွည့္စီ Channel-select Input ေတြကေနထိန္းၿပီး တစ္ဖက္ ရဲ့ Serial I/ O နဲ႔ ခ်ိန္ကိုက္ အလုပ္လုပ္ပါတယ္။ သေဘာက ရဲ့ Serial I/ O တစ္ခုတည္းကို အထြက္ အ၀င္လုပ္ၿပီး ဒီဘက္ကေန Serial I/ O ကို 4 Channel အထိ ပြားယူလိုက္တဲ့သေဘာပါ။ Serial Port ကို Multiplex လုပ္လိုက္တဲ့ သေဘာပါပဲ။ ေအာက္မွာ IC pin description န႔ဲ Function table ကို ျပထားပါတယ္။


Wednesday, 10 March 2010

TLC5925 LED Driver

ဒီေကာင္ေလးက CPU Output port ေတြ မေလာက္ေတာ့တဲ့အခါမွာ သံုးေလ့ရွိတာပါ။ အဓိကက LED ေတြကို ေမာင္းဖို႔အတြက္ဆိုေပမယ့္ အျခား Digital I/O ေတြကိုပါထုတ္ေပးလို႔ရပါတယ္။ ျပႆနာက Current source ျဖစ္တဲ့အတြက္ R-EXT value ကိုေသခ်ာတြက္ၿပီးမွ ထဲ့ရတဲ့ကိြဳင္ေပါ့။ ဘာေၾကာင့္လည္းဆိုေတာ့ I/O ေတြရဲ့ behavior (LED, CLK, C-Sel, ..) ေတြမတူတဲ့အခါမ်ိဳးမွာ resistant value တြက္ရခက္တဲ့အတြက္ပါ။ သူက 8 bit data ကို 1 bit ျခင္းတြန္းထုတ္ေပး႐ံုပါပဲ။ အဲဒီေတာ့ IC ကိုအလုပ္လုပ္ေစဖို႔ CLK အတြက္ 1 pin ၊ SDI အတြက္ 1 pin ပဲလိုပါတယ္။ ေအာက္မွာ Pin diagram နဲ႔ Connection ပံုေလးေတြ ျပထားပါတယ္။


Thursday, 18 February 2010

Multi-Chip and Single Chip solutions

Embedded Application ေတြကို Mass production ထုတ္လုပ္တဲ့အခါမွာ Single Chip solution ကို သံုးၾကပါတယ္။ သေဘာတရားကေတာ့ ကိုယ္လုပ္ခ်င္တဲ့ လုပ္ငန္း ၂ခုကို Chip တစ္ခုထဲမွာ ေပါင္းၿပီးထဲ့လိုက္တဲ့သေဘာပါ။

ဥပမာ - Freescale က Energy meter ကိုထုတ္တဲ့ေနရာမွာ အရင္က 2 Chip solution ကို သံုးပါတယ္။ E-Meter အတြက္ ADC နဲ႔ဆိုင္တဲ့ Chip တစ္လံုးနဲ႔ Data collection, calculation, user interface ေတြအတြက္ MCU တစ္လံုးကို ခြဲၿပီးသံုးပါတယ္။ သေဘာကေတာ့ သူတို႔အရင္ ရွိၿပီးသား IC ေတြကို ယူသံုးလိုက္တဲ့သေဘာပါ။ R & D အဆင့္ေလာက္ေပါ့။ ေနာက္ပိုင္းက်ေတာ့ ခုန E-meter အဆင္ေျပသြားတဲ့ အခါ အဲ့ ၂ လံုးကို ေပါင္းလိုက္ၿပီးေတာ့ Chip တစ္ခုတည္းမွာ Embedded ထဲ့လိုက္တယ္။ Single chip solution ကိုေျပာင္းပစ္လိုက္တယ္။

အားသာခ်က္က ေစ်းသက္သာသြားတယ္၊ ေနရာပိုထြက္လာတယ္၊ power consumption က်သြားတယ္။ လိုအပ္ခ်က္က Mass production ထုတ္မွအဆင္ေျပတယ္။ ေအာက္ကပံုကေတာ့ Multi chip and single chip solution ကို ယွဥ္ျပထားတဲ့ပံုပါ။ ဒီစကားအသံုးအႏႈန္းက သပ္သပ္ အလုပ္လုပ္ႏိုင္ေနတဲ့ Chip ၂ လံုးကို တစ္လံုးတည္းမွာ ေပါင္းၿပီး သံုးတဲ့အခါမွာ ေျပာေလ့ရွိၾကပါတယ္။

Saturday, 13 February 2010

RCM5400W ေနာက္ဆက္တြဲ (၁)

RCM54XX ေတြရဲ့အားသာခ်က္က Zworld http mini server ေလးထဲ့လို႔ရပါတယ္။ ဒါေပမယ့္ အဲ့ဒီ Server ရဲ့ Foot Print က အေတာ္ႀကီးတဲ့အတြက္ တစ္ကယ္တမ္း အေသအေၾကသံုးၾကစတမ္းဆိုရင္ Storage Area မ်ားတဲ့ (၂ ဆ၊ ေစ်းလည္း ပိုပါတယ္) RCM5450 လိုေကာင္နဲ႔မွ အဆင္ေျပလိမ့္မယ္။ က်ေတာ္သံုးတဲ့ ပံုစံက FTP server ကို အဲဒီထဲမွာ ထဲ့ၿပီးေတာ့ Wireless Filer Transfer ေလာက္ပါပဲ။ http server ကို သံုးဖို႔ စဥ္းစားေပမယ့္လည္း Port forwarding ကိတ္စေတြမွာ ျပသနာရွိေနတဲ့အတြက္ တိုက္႐ိုက္ Data Access လုပ္တဲ့နည္းကို ေမ့ပစ္ၿပီး FTP နည္းစံနစ္ကို သံုးလိုက္ရတာပါ။

အားသာခ်က္ ေနာက္တစ္ခုက Embedded WiFi Module ျဖစ္တဲ့အတြက္ DHCP ကိုသံုးလို႔ရပါတယ္။ အရင္ 3700 ကေတာ့ Static IP ပဲ အဆင္ေျပပါတယ္။

Ref : http://www.rabbit.com/products/rcm5400W/


Introduction of RCM5400W

RCM5400W ကိုႀကိဳက္မိတာ ဒီရက္ပိုင္းမွပါ။ အရင္က်ေတာ္သံုးေနက်ေကာင္က RCM3700, 3720 ေတြ။ 3700 ေတြရဲ့အားနည္းခ်က္က သူ႔မွာ Ethernet Port ေတာ့ပါတယ္ ဒါေပမယ့္ ခုေနာက္ပိုင္းမွာ WiFi ေတြကိုပဲအဓိကထားၾကတာကိုး Cable ေတြကအဆင္မေျပေတာ့ေတာ့။ အဲ့ေတာ့ ဒီေကာင့္ကို အခုသံုးေနတဲ့ပံုစံက Acksys Wifi (Bridge) Card ကို ထပ္ထဲ့ေပးေနရတယ္။ Acksys က ေစ်းႀကီးတဲ့အျပင္ Setting လည္း ခ်ခ်ေပးေနရတာေၾကာင့္ ထပ္ရွာလိုက္တဲ့အခါ RCM5000 series ကိုေတြ႔တာပဲ။ ေနာက္ပိုင္းေတြမွာ b/ g အထိရလာေတာ့ အဲ့ေကာင္ကို ေနာက္ပိုင္းမွာ သံုးဖို႔ ဆံုးျဖတ္လိုက္တယ္။ ေစ်းကေတာ့ ၂ ဆေက်ာ္ရွိတယ္။


RCM5400W (Rabbit Core Module)

Friday, 26 December 2008

TX Level & RX Gain related to NOISE

ကၽြန္ေတာ္ ဒုကၡေရာက္ခဲ့တဲ့ အေတြ႔အၾကံဳေလးတစ္ခုပါ။ Modem data communication Project ေလးတစ္ခုကို ေရးတုန္းက Terminal ႏွစ္ခုကို Single Tone Dual Frequency (V.21 300bps FSK High band, Bell 103 300bps FSK High band, V.23 FSK 75bps, Bell 202 FSK Protocols) နဲ႔ပို႔ေတာ့ နဲ႔ Tx Level & Rx Gain ေတြကို steps ေရြးလို႔ရေအာင္ေရးတာေပါ့။ အဲဒီမွာ ျပႆနာက Transmit ပိုင္းမွာေတာ့ အိုေကပဲ။ Receive ပိုင္းက်ေတာ့ Noise ေတြ၀င္လာပါေလေရာ။ ကၽြန္ေတာ္က Tx level နဲ႔ Rx gain ေတြကို ခ်ိန္တဲ့ေနရွာမွာ step တစ္မ်ိဳးေရြးလိုက္တာနဲ႔ ၂ ခုလံုး Set ျဖစ္သြားေအာင္ ေရးထားလိုက္တယ္။ တစ္ကယ္ေတာ့ Tx level > Rx gain ျဖစ္ရမယ္ေလ။ ႏို႔မို႔ဆို Noise ေတြကိုပါ Rx ဘက္က Amplify လုပ္လိုက္ေတာ့ garbage data အမ်ားႀကီး ထြက္လာတာေပါ့ေလ။ Software Protocol ဘက္ကေန အမ်ိဳးမိ်ဴး Filter လုပ္တယ္။ မရဘူး။ ေနာက္ဆံုး Rx gain ကို ေလွ်ာ့ခ်ၿပီး လႊင့္ၾကည့္မွ အိုေကသြားတယ္။ Try in Error လုပ္လိုက္တာပါ။ Theory ေတြကို မပိုင္ခဲ့တဲ့ ဆိုးက်ိဳးေပါ့ဗ်ာ။

Monday, 22 December 2008

DTMF (Dual Tone Multi Frequency) (Part - 1)

DTMF Key Pad ေလးေတြကို လူတိုင္းသံုးဘူးၾကမွာပါ။ ကၽြန္ေတာ္ေျပာခ်င္တာက အဲဒီ DTMF ရဲ့ Encoding and Decoding အေၾကာင္းေတြပါ။

DTMF ဆိုတာက ကၽြန္ေတာ္ဟိုအရင္ကေရးဘူးတဲ့ PWM နဲ႔ယွဥ္ေျပာရမယ္ဆိုရင္ PWM က Single Tone အတြက္ Dual Frequency ပါ။ ဥပမာ 1 အတြက္ 2 KHz Frequency နဲ႔ 0 အတြက္က 1.5 KHz Frequency ဆိုပါစို႔။ DTMF က်ေတာ့ 0 အတြက္ 941, 1633 Hz ထုတ္ၿပီးေတာ့ 1 အတြက္ 697, 1209 Hz ထုတ္တာပါ။ 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F ေတြအတြက္လည္း Tone pair ေတြရွိပါတယ္။ သေဘာကေတာ့ A (0x65) ဆိုတဲ့ character ကို transmit လုပ္ဖို႔အတြက္ PWM က 0110 0101 = 2000, 1500, 2000, .... Hz ေတြထုတ္ရၿပီးေတာ့ DTMF ကေတာ့ 6 5 = 770-1477, 770-1336 Hz ေတြ ထုတ္ရတဲ့သေဘာပါ။ သေဘာကေတာ့ PWM နဲ႔ဆိုရင္ 8-bit အတြက္ ၈ ခါပို႔ရၿပီးေတာ့ DTMF နဲ႔ဆိုရင္ 8-bit အတြက္ ၂ ခါပဲ ပို႔ရတဲ့သေဘာပါ။

DTMF ရဲ့အားသာခ်က္က Noise အလြန္နည္းၿပီးေတာ့ Security အလြန္ေကာင္းပါတယ္။ အားနည္းခ်က္ကေတာ့ DTMF start-up time ၾကာတာပါပဲ။ သူ႔ရဲ့ Tone pair (frequency pair) ေတြနဲ႔ Key တစ္ခုခ်င္းစီကို ကိုယ္စားျပဳတဲ့ ဇယားေတြကို ေအာက္မွာျပထားပါတယ္။ ဒါေတြက တစ္ကမာၻလံုးက သံုးေနတဲ့ DTMF tone ေတြပါ။

ကၽြန္ေတာ္အခုသံုးတဲ့ CMX865 မွာေတာ့ start-up time က ၾကာ
ပါတယ္ one key အတြက္ 40 ms အနည္းဆံုးပါ။ ကၽြန္ေတာ္လိုခ်င္တဲ့ 200 Baud မရႏိုင္တဲ့အတြက္ DTMF ကိုမသံုးႏိုင္ပါဘူး။ Single tone ကိုပဲ သံုးလိုက္ပါတယ္။ Noise အတြက္ေတာ့ Software/ Hardware Filter ေတြထပ္ခံရမယ္ထင္တယ္။ ၿပီးေတာ့ Digital & Analogue ground ကိုခြဲရပါလိမ့္မယ္။




Tuesday, 9 December 2008

Short Notes (2)

Active Low အတြက္ Signal ကို Scope နဲ႔ဖတ္တဲ့အခါမွာ Low ျဖစ္တဲ့ Pulse ကိုပဲ ဖတ္ရၿပီးေတာ့ Active High အတြက္ဆိုရင္ High ျဖစ္တဲ့ Pulse ကိုဖတ္ရပါတယ္ Pulse ကိုဖတ္တဲ့အခါမွာလည္း One Cycle အျပည့္ကို ဖတ္လို႔မရပါဘူး။ ဖတ္ခဲ့ရင္ Pulse Rate (Frequency) ရသြားမွာပါ။ Pulse (Time) ကိုလိုခ်င္တဲ့အတြက္ Pulse (Low/ High) ျဖစ္သြားတဲ့ အခ်ိန္ေလးကိုပဲ ဖတ္ပါ။

Tuesday, 25 November 2008

C-Bus Vs SPI

C-Bus က SPI နဲ႔ ခပ္ဆင္ဆင္တူပါတယ္။ ေအာက္မွာ ဇယားနဲ႔ ကြာျခားပံုေတြကို ျပထားပါတယ္။

ဒါေပမယ့္ SPI မွာ command ေတြမလိုပဲ C-Bus မွာေတာ့ command ေတြသံုးရပါတယ္။ ဘာေၾကာင့္လည္းဆိုေတာ့ သူ႔မွာ mode ေတြရွိလို႔ပါ။ အေပၚသံုးခုက Modem mode ေတြျဖစ္ၿပီး ေအာက္ဆံုးတစ္ခုက DTMF (Dual Tone Multi-Frequency) mode ျဖစ္ပါတယ္။
- Bell 103 300bps (FSK High band (Answering modem))/ (Low band (Calling modem))
- V.23 FSK (1200bps/ 75bps)
- Bell 202 FSK (1200bps/ 150bps)
- DTMF / Tones
ဆိုၿပီး mode ေတြရွိပါတယ္။ အားလံုးအတြက္ commands က အတူတူပါပဲ။ အားသာခ်က္ကေတာ့ ကိုယ္လိုခ်င္တဲ့ speed (baud rate) ကိုတြက္ခ်က္ၿပီး ႀကိဳက္တဲ့ mode သံုးလို႔ရတာပါပဲ။ ကၽြန္ေတာ္တို႔ ပံုမွန္သံုးေနတဲ့ DTMF communication က 220 baud ေလာက္ပဲ ရပါတယ္။ Radio Channel ေပၚတင္လိုက္တဲ့ အခါမွာ 100 baud ေလာက္ေတာင္မက်န္တဲ့အတြက္ CMX865 ဆိုတဲ့ IC ကို သံုးခ်င္တဲ့အတြက္ အဲဒီ IC ကလက္ခံတဲ့ C-Bus ကို ေလ့လာရတာပါ။
command ေတြကေတာ့ -
General Reset Command (address only, no data). Address = $01
General Control Register, 16-bit write only. Address = $E0
Transmit Mode Register, 16-bit write-only. Address = $E1
Receive Mode Register, 16-bit write-only. Address = $E2
Transmit Data Register, 8-bit write only. Address = $E3
Receive Data Register, 8-bit read-only. Address = $E5
Status Register, 16-bit read-only. Address = $E6
Programming Register, 16-bit write-only. Address = $E8

ဒါက CMX865 ပါ။ သူနဲ႔ ဆက္စပ္တဲ့ components diagram ကိုပါ တင္ေပးလိုက္ပါတယ္။ coding ကိုေတာ့ ေနာက္ထပ္တင္ေပးပါမယ္။




Monday, 24 November 2008

C-Bus (Clipsal Bus) communication Overview

C-Bus (Clipsal Bus) ဆိုတာကေတာ့ Communication Protocol တစ္မ်ိဳးပါပဲ။ I2C, SPI, UART တို႔လိုပါ။ ဒါေပမယ့္ သူက Remote Control Communication အတြက္ အဓိက လုပ္ထားတဲ့ Protocol ပါ။ Wired ေကာ၊ Wireless ေကာ ရပါတယ္။ အဲဒါက အားသာခ်က္ပါ။
Wired C-Bus System ကေတာ့ Standard Category 5 UTP Network Communication Cable ကို သံုးပါတယ္။ Network Topology ကေတာ့ ႀကိဳက္တာ သံုးလို႔ရတယ္လို႔ ေျပာပါတယ္။ ကၽြန္ေတာ္က ခုမွ စေလ့လာတုန္းပါ။ ကၽြန္ေတာ့ Application ကေတာ့ Star Topology ကိုပဲ သံုးမွာပါ။ Wired မွာ Cable Length က 1000 meters အထိအရွည္ဆံုးရပါတယ္။ Wireless မွာေတာ့ Attenuation, Noise, Distoration ေတြေၾကာင့္ အဲဒီေလာက္ အရွည္ေတာ့ ရမယ္ မထင္ပါဘူး။
Network တစ္ခုမွာ Terminal 255 အထိ အမ်ားဆံုး ခ်ိတ္ဆက္လို႔ရပါတယ္။ 8 bit Addressing ကိုသံုးထားတယ္လို႔ ထင္ပါတယ္။
သူ႔မွာလည္း ထံုးစံအတိုင္း Data Synchronisation အတြက္ ONE system colck generating unit တစ္ခုလိုပါတယ္။
C-Bus က တစ္ျခား Protocol ေတြ (TCP/IP, Crestron, AMX, LonWorks, ModBus, Charmed Quark Controller, etc ..) နဲ႔လည္း ခ်ိတ္ဆက္ သံုးလို႔ရပါတယ္။ သေဘာကေတာ့ PC Network၊ PLC ေတြနဲ႔လည္း ဆက္သြယ္လို႔ရတဲ့ သေဘာေပါ့။
ေအာက္မွာ C-Bus overview နဲ႔ သူဆက္သြယ္လို႔ရတဲ့ Device ေတြကိုပံုနဲ႔ ျပထားပါတယ္။




Electronics E-Books Series (2)

Electronic စာအုပ္ လက္က်န္ေတြ ထပ္တင္ေပးလိုက္ပါတယ္။









Friday, 14 November 2008

Ethernet Module at Embedded Software (Rabbit)

Embedded Software ေတြမွာ Flash File System သံုးတာကို ကၽြန္ေတာ္ ေရးခဲ့ဘူးပါတယ္။ အခု အဲဒီထဲက ဖိုင္ေတြကို ဘယ္လို ယူလို႔ရလည္း၊ MCU ထဲကို file ေတြဘယ္လိုထည့္လည္း ဆိုတာကို ေျပာမွာပါ။ FTP protocol ေတာ္ေတာ္မ်ားမ်ား ၾကားဘူးပါလိမ့္မယ္။ MCU ေတြမွာလည္း FTP, TCP/ IP, UDP စတဲ့ Protocol ေတြကို သံုးပါတယ္။ အဲလိုသံုးဖုိ႔အတြက္ MCU မွာ Ethernet port ရွိရပါတယ္။ MCU ကို IP Address အရင္ေပးရမွာပါ။ Dynamic IP ေကာ Static IP ေကာ လုပ္လို႔ရပါတယ္။ ဟိုဘက္က DHCP သံုးရင္ေတာ့ Dynamic IP ကိုသံုးလို႔ရပါတယ္။ ဒါေပမယ့္ Static ကေတာ့ ပိုၿပီးအဆင္ေျပာပါတယ္။ အဲဒီ Ehternet port ကေနၿပီး နဲ႔ Network cable ကိုခ်ိတ္ဆက္ၿပီး PC ကေန FTP software တစ္မ်ိဳးမ်ိဳးနဲ႔ လုပ္ၾကတာပါ။ MCU ဘက္မွာေတာ့ IP Address, User Name, Password ေတြကို setting လုပ္ေပးရတာေပါ့။ အဲဒီ Ethernet port ကေနပဲ WLAN Module နဲ႔ဆက္ၿပီးေတာ့ WLAN facility ေတြကို သံုးလို႔ရပါတယ္။

ဒီလိုလုပ္တဲ့ ေနရာမွာ TCP/ IP protocol က Transparent ျဖစ္ပါတယ္။ ဘာမွၾကားခံ Hardware, Software ေတြထည့္ေနစရာ မလိုပါဘူး။

ကၽြန္ေတာ္က Filezilla, Core FTP Software ေတြသံုးၿပီး access လုပ္ပါတယ္။

Thursday, 6 November 2008

Short Notes (1)

၁။ Battery Backup RAM က power ျဖတ္လိုက္ေသာ္လည္း RAM variables ထဲမွာ ေနာက္ဆံုး data ေတြက်န္ခဲ့တယ္။ ေနာက္တစ္ႀကိမ္ power on ၿပီး ျပန္ run လို႔ အဲဒီ ေတြကို Initialize မလုပ္ဘူးဆိုရင္ contents အေဟာင္းအတိုင္း က်န္ခဲ့တယ္။
Non-battery backup RAM က power ျဖတ္လိုက္ရင္ variable ထဲက data ေတြ အကုန္ေပ်ာက္ကုန္တယ္။ initialize လည္း ျပန္လုပ္စရာမလိုဘူး။ ဒါေၾကာင့္ MCU ေတြမွာ program ေရးေတာ့မယ္ဆိုရင္ battery backup ပါ၊ မပါ အရင္စစ္ေဆးပါ။
၂။ Mifare card reader မွာ Wegan mode နဲ႔ Command mode ဆိုၿပီး ရွိတယ္။ Wegan က card ကို အျမဲဖတ္ေနၿပီးေတာ့ Command mode က command ေပးတဲ့အခါမွာပဲ card ကို ဖတ္တယ္။
wegan mode ကို Barcode reader ေတြမွာသံုးထားၿပီးေတာ့ command mode ကို Smart card reader ေတြမွာသံုးေလ့ရွိတယ္။

Friday, 31 October 2008

LDU ၏ေနာက္ဆက္တြဲ

LDU နဲ႔ ပါတ္သတ္ၿပီး ေျပာစရာေလးေတြ က်န္ေနလို႔ ဆက္ေရးတာပါ။ ပံုက LDU Wiring Diagram ပါ။ ေျပာမွာက Weigher နဲ႔ LDU ခ်ိတ္မည့္ ကိစၥပါ။ ကၽြန္ေတာ့္ အရင္သံုးထားတဲ့ LDU က 4 wire ပဲခ်ိတ္စရာ လိုပါတယ္။ Exc+, Exc-, Sig+, Sig- ေတြေပါ့။ ေနာက္အသစ္က 6 wire ခ်ိတ္ရပါတယ္။ အမွန္က 6 wire ခ်ိတ္ရတာေပါ့။ ဘာေၾကာင့္ Sen+, Sen- ပိုပါလည္းဆိုေတာ့ Compensate လုပ္ဖို႔အတြက္ပါ။ ပထမ LDU ရဲ့ Firmware မွာ Sen+/ - ကို checiking လုပ္ထားတာမပါပါဘူး။ ေနာက္ LDU က်ေတာ့မပါမျဖစ္ေအာင္ စစ္ထားတဲ့အတြက္ Sen (2 wire) ထည့္ကို ထည့္ေပးရပါတယ္။ တစ္ကယ္လို႔ Weigher မွာ 4 wire ပဲထြက္ရင္ေတာ့ Exc+ နဲ႔ - ကို loop ျပန္ပါတ္ ထည့္ေပးလိုက္ (short) ပါ။

ေအာက္ဆံုးက ေနာက္တစ္ပံုက LDU အေဟာင္းနဲ႔ ခ်ိတ္ထားတဲ့ 4 wire ပံုပါ။ ညာဘက္က ႀကိဳးေတြက Power နဲ႔ Rs-232C ႀကိဳးေတြပါ။

Thursday, 23 October 2008

Load Cell Degitizing Unit (LDU 78.1) for Weighting Machine

ဒီပစၥည္းက Weighting Machine ေတြမွာပဲ သံုးတဲ့ပစၥည္းပါ။ ၁ x ၂ လက္မ ပတ္လည္ပဲ ရွိပါတယ္။ သူရဲ႕လုပ္ငန္းကေတာ့ Weighter နဲ႔ PLC or MCU ၾကားမွာ အေလးခ်ိန္ကို တြက္ခ်က္ ေဖၚျပေပးတဲ့ အလုပ္ပါပဲ။ High Precision Measuremment Tool တစ္ခုပါ။ ကၽြန္ေတာ္သံုးတဲ့ Load Cell Unit က FLINTEC/ SOEMER ပါ။ Germany (EU) က ထုတ္ပါတယ္။ သူက RS-485 Communication ကိုပဲ လုပ္ေပးတာပါ။ ဒါေပမယ့္ MCU နဲ႔ သံုးတဲ့အခါမွာ RS-232 ကိုပဲ အလုပ္လုပ္တဲ့အတြက္ converter (adaptor) တစ္ခုထပ္ထည့္ေပးရပါတယ္။ အဲဒီ Converter က ပံုမွာျပထားတဲ့ အစိမ္းေရာင္ ေအာက္ခံေလးပါ။ ပံုကိုၾကည့္မယ္ဆိုရင္ ဘယ္ဘက္ပိုင္းက Weighter နဲ႔ ဆက္ရၿပီးေတာ့ ညာဘက္ပိုင္းက Power supply, MCU/ PLC ေတြနဲ႔ ဆက္ရပါတယ္။ သူ႔မွာ Firmware သပ္သပ္ပါတဲ့အတြက္ command level communication လည္းလုပ္လို႔ရပါတယ္။ PC's HyperTerminal ဒါမွမဟုတ္ သူ႔ရဲ႕သက္ဆိုင္ရာ software (DOP program) ကိုသံုးရင္လည္း ရပါတယ္။

Monday, 20 October 2008

PIC18F4420 Timer Module (8 bit/ 16 bit)

Timer ေတြနဲ႔ပါတ္သတ္တဲ့ ပို႔စ္ေတြေတာ့ တင္ဘူးပါတယ္။ ခုေရးမွာက Datasheet ေတြမွာပါတဲ့ Block Diagram ကိုဖတ္ၿပီး Timer ရဲ႕အလုပ္လုပ္ပံုကို ေလ့လာတဲ့ သေဘာပါ။ ေအာက္မွာ ကၽြန္ေတာ္ျပထားတာက 8 bit နဲ႔ 16 bit Timer ရဲ႕ Diagram ေတြပါ။
ထံုးစံအတိုင္း ဘယ္ကေန ညာကို စဖတ္မယ္ဆိုရင္ -
၁။ Timer ရဲ႕ speed က Oscillator (External) ရဲ႕ ၄ ပံုတစ္ပံု ရွိပါတယ္။ အဲဒါကို Timer interrupt နဲ႔ တစ္ၿပိဳင္နက္ ON ပါတယ္။ Interrupt က Pin (Hardware) ဒါမွမဟုတ္ Software interrupt ရွိပါမယ္။
၂။ Prescaler သံုးရင္ Prescaler အတြက္ Ratio ထည့္တြက္ပါတယ္။
၃။ Internal clock က Timer interval အတြက္ သံုးပါတယ္။ သံုးတဲ့ Register ကေတာ့ datasheet ကေန ထပ္ေလ့လာရပါတယ္။
၄။ TM0L က Tick တန္ဖိုးတစ္ခုပါ။ Tick ေပါင္း 00 FF (256) အထိရပါတယ္။ 8 bit ျဖစ္ေနလို႔ပါ။ TM0H မွာၾကည့္လိုက္ရင္ 16 bit ရတဲ့အတြက္ FF FF (65535) tick အထိ ထည့္ေပးလို႔ရပါတယ္။ ပိုၿပီး interval ရွည္လို႔ရတဲ့ သေဘာေပါ့။
ဒါက PIC18F4420 MCU အတြက္သံုးတဲ့ Timer Routine ပါ။
အထက္က အဆင့္ေတြအတိုင္း ေရးရင္ Timer sub routine ကိုရမွာပါ။ ေရးတာကေတာ့ compiler ေပၚမူတည္ၿပီး လြယ္တာ ခက္တာေတာ့ ရွိပါလိမ့္မယ္။



Saturday, 20 September 2008

Programming with Touch Panel

Touch Panel အေၾကာင္းကို ပို႔စ္တစ္ခုမွာေတာ့ ေရးဘူးပါတယ္။ Touch Panel ေတြမွာ Program ေရးတဲ့အခါမွာ Protocol တစ္ခုကို ကိုယ္တိုင္ဖန္တီးယူရပါတယ္။ Microcontroller ေတြကို သံုးပီး Low level နဲ႔ software ေရးရင္ေပါ့။ PLC နဲ႔တြဲသံုးမယ္ဆိုရင္ေတာ့ PLC ေတြမွာ support လုပ္တဲ့ dedicated protocol အမ်ိဳးအစားကို ေရြးခ်ယ္ေပး႐ံုပါပဲ။ တကယ္ေတာ့ Touch Panel ေတြက PLC ေတြအတြက္ အဓိကထားၿပီး ထုတ္ထားတဲ့အတြက္ MCU ေတြနဲ႔ေရးတဲ့အခါ ေတြမွာ handshaking ျပသနာတက္ေလ့ရွိပါတယ္။ ကၽြန္ေတာ္အရင္က TOP2M touch panel ကိုသံုးပါတယ္။ သူ႔မွာက program routine အေနနဲ႔သက္သက္ေရးလို႔မရပဲ Register ေလးေတြကို setting ခ်ေပးလိုက္ပီး communication ေတြလုပ္ပါတယ္။ အခုသံုးေနတဲ့ Delta ကေတာ့ program routine ေတြကိုေရးလို႔ရပါတယ္။ VB source code ေတြနဲ႔ ခပ္ဆင္ဆင္ပါပဲ။ ဒါေပမယ့္ ျပသနာက MCU ကေန Direct Memory addressing လုပ္လို႔မရတဲ့အတြက္ data read/ write လုပ္တဲ့အခါမွာ အခက္အခဲေတြေတြ႔ပါတယ္။ အခုေလာေလာဆယ္ေတာ့ အဲဒါနဲ႔ေခါင္းကိုက္ေနပါတယ္။ သက္ဆိုင္ရာကုမ္ပနီရဲ႕ AE နဲ႔ေတာ့ အဆက္အသြယ္လုပ္ ထားပါတယ္။ ျပန္ေတာ့မေျဖေသးဘူး။ ကၽြန္ေတာ့္အထင္ေတာ့ direct memory addressing မရရင္ ျဖစ္ႏိုင္မယ္မထင္ပါဘူး။



Thursday, 4 September 2008

Electronics E-Books Series (1)

အရင္ကေတာ့ တစ္ခ်ိဳ႕တစ္၀က္ေတြကို တင္ထားပါေသးတယ္။ Electronic နဲ႔ပါတ္သတ္တဲ့ စာအုပ္ေတြပါပဲ။ လင့္ခ္ေတြ ေသကုန္လို႔ စာရင္းေတြ ျပန္တင္ေပးလိုက္တာပါ။ ထံုးစံအတိုင္း အီးေမးလ္ကေနပဲ ပို႔ေပးပါမယ္။ စီေဘာက္စ္မွာ ေတာင္းခဲ့ၾကပါ။