Monday, 29 December 2008

Double Head (Double Auger) Powder Filler

ပံုမွန္ Powder Filler က Head တစ္ခုတည္းနဲ႔ 2 Speed သံုးၿပီး အမႈန္႔ေတြကို ျဖည့္ေလ့ရွိတယ္။ First နဲ႔ Second speed ေပါ့။ Normal speed နဲ႔ Prelim speed လို႔ ေခၚတာေပါ့။ Double Head (Auger) က်ေတာ့ အဲဒီသေဘာကိုပဲ Head ႏွစ္ခုခြဲလုပ္တာပါ။ Calculation နဲ႔ Processing (speed change) time ကို က်သြားေအာင္လုပ္တာေပါ့။ ပထမ head က Normal speed ပဲျဖည့္တယ္။ ဒုတိယ head က Second speed နဲ႔ဆက္ျဖည့္တာပါပဲ။ Container ၂ခုကို တစ္ၿပိဳင္နက္ျဖည့္တာေပါ့။ Conveyor (Assembly line) ေပၚမွာအလုပ္လုပ္မွ အဆင္ေျပႏိုင္ပါတယ္။



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 ေပၚမူတည္ၿပီး လြယ္တာ ခက္တာေတာ့ ရွိပါလိမ့္မယ္။



Tuesday, 23 September 2008

ဘာရယ္လို႔ေတာ့ မဟုတ္ပါဘူး .....

ဘာရယ္လို႔ေတာ့ မဟုတ္ပါဘူး .....

၁၉၉၆ ၾသဂုတ္လေလာက္မွာ MIT (Mandalay Institute of Technology) ေရာက္ေရာ။ ဒီဇင္ဘာေလာက္မွာ ေက်ာင္းေတြပိတ္ေရာ။ ေနာက္ပီးျပန္လည္းဖြင့္ေရာ MTU (Mandalay Technology University) ျဖစ္သြားတယ္။ အဲဒီကေနစပီး ပ်က္သြားလိုက္တာ GTC ေတြျဖစ္။ ဘြဲ႕ကလည္း B.E ကေန GTI, B.Tech ေတြျဖစ္နဲ႔။ တစ္ႏွစ္ကို လူ ၁၀၀၀ (တစ္ေထာင္) ေလာက္ေတာင္ မေခၚတဲ့ ေက်ာင္းကေန ခုဆို တစ္ႏွစ္ကို ၁၀၀၀၀၀ (တစ္သိန္း) ေတာင္ေက်ာ္သြားၿပီထင္တယ္။ တစ္ႏိုင္ငံလံုးမွာ ၂ ေက်ာင္းပဲ ရွိခဲ့တာကေန ခုဆို ၁၀ ေက်ာင္းေတာင္ေက်ာ္ေနၿပီ ထင္တယ္။ ၾကားဘူးတာေတာ့ရွိတယ္ “အေရအတြက္မွ အရည္အခ်င္းသို႔” ဆိုလား ....

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 မရရင္ ျဖစ္ႏိုင္မယ္မထင္ပါဘူး။



Monday, 15 September 2008

50+ Linux E-books

Linux E-Books ေတြပါ။ ကၽြန္ေတာ္အတြက္ေတာ့ သိပ္မလိုအပ္ပါဘူး။ Electronic နဲ႔လည္း သိပ္ေတာ့ မဆိုင္ပါဘူး။ ဒါေပမယ့္ အသံုးလိုတဲ့ သူမ်ားရွိရင္ မွာထားခဲ့ၾကပါ။

Thursday, 4 September 2008

Electronics E-Books Series (1)

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

Monday, 1 September 2008

SMART Card

Smart Card ဆိုတာကို ေတာ္ေတာ္ရင္းႏွီးၾကလိမ့္မယ္ ထင္တယ္။ Credit card, MRT card, Prepaid card, Telephone card (Sim card, prepaid card) ေတြမွာလည္း သံုးတယ္။ staff card, time card ေတြမွာလည္း သံုးတယ္။ သူ႔မွာ သံုးတဲ့ပံုကိုမူတည္ၿပီး ၂ မ်ိဳးရွိပါတယ္။

1. Contact Smart Card
2. Contact-less Smart Card
ဆိုပီးရွိပါတယ္။


Contact smart card က သူ႔မွာ contact area တစ္ခုရွိပါတယ္။ gold-plated contact pad ေလးတစ္ခုပါပါတယ္။ ေအာက္ကပံုမွာ ျပထားပါတယ္။ 1 cm2 ေလာက္ပဲရွိပါတယ္။ သူက reader ထဲမွာထည့္ၿပီး ဖတ္ရပါတယ္။

Contact-less smart card က RFID နည္းပညာကို သံုးပါတယ္။ အဲဒါကိုေတာ့ RFID post မွာေရးထားပီးပါၿပီ။

ေအာက္ကပံုက Smart Card ရဲ႕ pin out ေတြပါ။ မ်ားေသာအားျဖင့္ေတာ့ I2C protocol ကိုသံုးၿပီးေရးပါတယ္။ အဓိက ထိန္းထားတာကေတာ့ Security code နဲ႔ encryption system ကိုသံုးပါတယ္။ protocol က transparent ျဖစ္ပါတယ္။


Dummies E-Books

ကၽြန္ေတာ့္ဆီမွာ ရွိတဲ့ Dummies E-books ေတြပါ။ အရင္ ပို႔စ္ေတြမွာေတာ့ နဲနဲဆီ တင္ဘူးပါတယ္။ ဒါေပမယ့္ လင့္ခ္ေတြ ေသသြားလို႔ ေဒါင္းလို႔ရေတာ့မယ္ မထင္ဘူး။ လိုခ်င္ရင္ စီေဘာက္စ္မွာ ေျပာထားခဲ့ၾကပါ။ အီးေမးလ္ တစ္ခုလည္း ေပးထားပါ။ ကၽြန္ေတာ္ ပို႔ေပးလိုက္ပါမယ္။ စာအုပ္အားလံုးကို တင္လို႔ အဆင္မေျပလို႔ပါ။

Monday, 25 August 2008

PIC Microcontrollers Projects Samples

PIC Microcontroller ေတြနဲ႔ပါတ္သတ္တဲ့ နမူနာ Project ကေလးေတြပါတဲ့ Website ေလးပါ။ Source COde, Hardware Assembly ေတြပါထည့္ေရးထားလို႔ အဆင္ေျပမွာပါ။

http://www.micro-examples.com

Tuesday, 12 August 2008

I2C EEPROM Operation (Source Code)

I2C (EEPROM) Operation ေလးေတြပါ။ ဒါေပမယ့္ MiKroC Compiler နဲ႔ေရးမွရမွာပါ။ PIC18F series နဲ႔ 24LC256 EEPROM Memory အတြက္ပါ။



ZigBEE Topologies

ZigBEE မွာ Topology ၃ မ်ိဳးရွိပါတယ္။ ပံုမွန္ Wireless Network Topology ေတြနဲ႔ ခပ္ဆင္ဆင္ပါပဲ။
1. ZigBee Star
2. ZigBee Tree
3. Zig Bee Mesh Topology
ေတြလို႔ ရွိပါတယ္။ ဘာမွေတာ့ မဆန္းပါဘူး။ ပိုၿပီး Wireless Network Performance ေကာင္းလာတာပဲ ရွိပါတယ္။ လုပ္ငန္းေတြက အတူတူပါပဲ။ ထံုးစံအတိုင္း Performance ေကာင္းခ်င္ရင္ Devices ပိုတပ္ရတာေပါ့။

ZigBee Star Topology
ZigBee Tree Topology
Zigbee Mesh Topology

Friday, 1 August 2008

ZigBEE Introduction

WPLANs (Wireless Personal LANs) ေတြကို တည္ေဆာက္တဲ့ေနရာမွာ WiFi, Bluetooth, ZigBEE ဆိုၿပီး technology အမ်ိဳးမ်ိဳးရွိပါတယ္။ အဲဒီထဲမွာ ZigBEE က ေစ်းအသက္သာဆံုးနဲ႔ တည္ေဆာက္ရတာ အလြယ္ကူဆံုးပါ။ ZigBEE က Low-Power Digital Radio ကိုသံုးထားတာျဖစ္ပါတယ္။ short range, low data rate, low power requirement applicationေတြတည္ေဆာက္တဲ့ေနရာမွာ သံုးေလ့ရွိၾကပါတယ္။ IEEE 802.15.4 Standard ကိုအသံုးျပဳထားပါတယ္။ အသံုးျပဳေလ့ရွိတဲ့ ေနရာေတြကေတာ့။
- Home Automation
- ZigBee Smart Energy
- Telecommunication Application
- Personal Home
- Hospital Care ေတြမွာပါ။
တစ္ခုေတြ႕ဘူးတာက ေဆး႐ံုေတြမွာ လူနာကိုရွာတဲ့ စနစ္နဲ႔ စတိုေတြမွာ ပစၥည္းရွာတဲ့စနစ္ကေလးေတြ လုပ္ထားတာေလးေတြပါ။
ေနာက္ထပ္ သံုးတဲ့ ေနရာေလးေတြကေတာ့။
- Home Entertainment and Control — Smart lighting, advanced temperature control, safety and security, movies and music
- Home Awareness — Water sensors, power sensors, smoke and fire detectors, smart appliances and access sensors
- Mobile Services — m-payment, m-monitoring and control, m-security and access control, m-healthcare and tele-assist
- Commercial Building — Energy monitoring, HVAC, lighting, access control
Industrial Plant — Process control, asset management, environmental management, energy management, industrial device control

ZigBEE (Device Types) ေတြကေတာ့ သူ႔ရဲ႕ အသံုးေပၚမူတည္ၿပီးေတာ့ ၃ မ်ိဳးခြဲထားပါတယ္။
ZigBee coordinator(ZC): The most capable device, the coordinator forms the root of the network tree and might bridge to other networks. There is exactly one ZigBee coordinator in each network since it is the device that started the network originally. It is able to store information about the network, including acting as the Trust Centre & repository for security keys.
ZigBee Router (ZR): As well as running an application function a router can act as an intermediate router, passing data from other devices.
ZigBee End Device (ZED): Contains just enough functionality to talk to the parent node (either the coordinator or a router); it cannot relay data from other devices. This relationship allows the node to be asleep a significant amount of the time thereby giving long battery life. A ZED requires the least amount of memory, and therefore can be less expensive to manufacture than a ZR or ZC.
ဘာသာျပန္ရင္ မွားမွာစုိးလို႔ တုိက္႐ိုက္ တင္ေပးလိုက္ပါတယ္။

စိတ္၀င္စားတယ္ဆိုရင္ေတာ့ Freescale ကထုတ္တဲ့ Demo Board ေလးေတြက ေတာ္ေတာ္အဆင္ေျပ ပါတယ္။ ေက်ာင္းသား Project ေတြမွာ သံုးရင္ ေတာ္ေတာ္အဆင္ေျပတဲ့ Development Tool ေလးပါ။ သူ႔ကို Zigbee Router နဲ႔ End Devices ေတြအျဖစ္ သံုးလို႔ရပါတယ္။

Monday, 21 July 2008

EZ-Digital OS-310M Portable Oscilloscope

ကၽြန္ေတာ္အခုသံုးေနတဲ့ Oscilloscope ေလးပါ။ အရင္တစ္ခါေရးခဲ့တဲ့ Techtronik Oscilloscope နဲ႔ သေဘာတရားျခင္း တူပါတယ္။ Techtronik ကေတာ့ function ပိုမ်ား၊ ပိုျမင့္တာေပါ့။ ဒါေလးကေတာ့ Compact ျဖစ္တယ္။ Battery ပါတဲ့အတြက္ external power မလိုေတာ့ portable ျဖစ္တာေပါ့။ ေအာက္မွာ သူ႔ရဲ႕ features ေတြကို ေရးေပးထားပါတယ္။
- 100 MHz Band width
- Two channels and dual digitizers
- External trigger

- Built-in 3-3/4 (4,000 counts) digital multimeter with auto or manual range
- Extra bright backlit LCD display
- Automatic optimized panel setting and tracking according to input signal
- Automatic measurements
- RS-232C Programmability/Communication
- Arithmetic function
- Rechargeable Ni-Cd battery and external AC adapter
- Direct hardcopy through RS-232C

Wednesday, 16 July 2008

External Memory using I2C Serial EEPROM

နဲနဲအစပ်ိဳးပါဦးမယ္။ ကၽြန္ေတာ္တို႔ Microcontroller program ေရးတဲ့အခါ memory သံုးရပါတယ္။ ၂ မ်ိဳးသံုးေလ့ရွိပါတယ္။ On-Chip နဲ႔ External Memory ပါ။ On-Chip က MCU ထဲမွာ ပါၿပီးေတာ့ External က အျပင္မွာသပ္သပ္ထပ္ထည့္တဲ့ Memory ပါ။ ကြန္ပ်ဴတာမွာဆိုရင္ေတာ့ Cache နဲ႔ RAM သေဘာေပါ့။ ကၽြန္ေတာ္ ေျပာမွာက External Memory အေၾကာင္းပါ။ သူ႔မွာ application ေပၚမူတည္ၿပီး အမ်ိဳးအစားေတြကြဲေလ့ရွိပါတယ္။ SD, EEPROM, Flash ဆိုၿပီးရွိၾကပါတယ္။ protocol (I2C, SPI, UART) ေတြလည္းကြဲၾကပါတယ္။ ခုဟာက I2C protocol ကိုသံုးၿပီးေတာ့ ေရးရတဲ့ EEPROM အေၾကာင္းပါ။

သူ႔မွာ operation ၂ မ်ိဳးပဲပါပါတယ္။ Read နဲ႔ Write ေပါ့။ ေအာက္မွာ Read/ Write operation ေတြရဲ႕ Data Frame ပံုစံေတြျပထားပါတယ္။ I2C protocol အေၾကာင္းကိုေတာ့ ထပ္ေျပာပါဦးမယ္။


Operate Speed Mode Servo Motor using PWM

PWM အေၾကာင္းကို ကၽြန္ေတာ္ေရးေနတာမ်ားပါၿပီ ဘယ္ေနရာေတြမွာ ဘယ္လိုသံုးလည္း ဆိုတာကို ဆက္ေရးပါမယ္။ ကၽြန္ေတာ္သံုးဘူးတဲ့ ေနရာေတြေပါ့။ ပထမတစ္ခုက Servo Motor (Direction Mode) မွာပါ။ Motor ရဲ႕ Revolution မွာ လိုအပ္တဲ့ Pulse ေတြေပးႏုိင္ေအာင္ သံုးပါတယ္။ Pulse ေတြက အေသေပးထားလို႔ မရ (Speed ကိုေျပာင္းၿပီး သံုးခ်င္တဲ့အတြက္) တဲ့အတြက္ PWM ကိုသံုးရတာပါ။ Forward/ Backward (Directions) ေပးတာကေတာ့ Digital I/ O ကို low/ high လုပ္ၿပီး သံုးလို႔ရပါတယ္။

Friday, 11 July 2008

Bittorrent protocol with Free Download Manager

RSJ က Cbox မွာေရးသြားလို႔ တစ္ခုသတိရ သြားတယ္။ Torrent နဲ႔ပါတ္သတ္လို႔ ဆက္ေရးစရာ နည္းနည္းရွိလို႔ပါ။ Bittorrent ဆိုတဲ့ Software ကိုသံုးလို႔ရတယ္လို႔ အရင္ပို႔စ္မွာ ကၽြန္ေတာ္ေရးခဲ့ပါတယ္။ Bittorrent က Bandwidth ေတြကို ရႏိုင္သမွ်ဆြဲၿပီး သူ႔ Software မွာသံုးတဲ့အတြက္ တစ္ခါတစ္ေလမွာ Whole Network (LAN) ႀကီး breakdown ျဖစ္သြားတတ္ပါတယ္။ အဲဒီေတာ့ အေကာင္းဆံုးနည္းက Free Download Manager ကိုသံုးၿပီး bittorrent protocol ကို ျပန္သံုးပါ။ FDM ကို Install လုပ္တဲ့အခါမွာ bittorrent protocol ကိုသံုးမလားဆိုတဲ့ Checkbox ေလးပါပါတယ္။ အဲဒါကို checked လုပ္ေပးလိုက္႐ံုပါပဲ။ သူ႔ကိုသံုးမည့္ bandwidth ကိုလည္း သတ္မွတ္ေပးထားလို႔ရေတာ့ LAN ႀကီး breakdown မျဖစ္ေတာ့ဘူးေပါ့။ ပံုမွန္ speed (စင္ကာပူ ရဲ႕ Internet Speed နဲ႔ဆို) 600 MB ေလာက္ကို တစ္ရက္ခြဲေလာက္ပဲ ၾကာပါတယ္။ Health ေကာင္းတဲ့ torrent ဆိုရင္ေပါ့။ Health ဆိုတာ Seeder နဲ႔ Leecher ရဲ႕ ratio ပါ။ Leecher က ဆြဲတဲ့သူျဖစ္ၿပီး၊ Seeder က တင္တဲ့သူေတြပါ။ torrent ေတြကို ေႏွာက္ယွက္တဲ့ Tracker ဆိုတာလည္းရွိပါေသးတယ္။ ေတြ၀င္လာရင္ torrent ေတြ download လုပ္ေနရင္းနဲ႔ ျပတ္က်သြားတတ္ပါတယ္။ အဲလိုဆိုရင္ ေနာက္ torrent တစ္ခုထပ္ရွာၿပီး ဆြဲရပါတယ္။

Download Free Download Manager :

Wednesday, 9 July 2008

Pulse Width Modulation (PWM) over Analog Communication

Pulse Width Modulation ထုတ္တယ္ဆိုတာ Digital Circuit ကေန Analog Signal ေတြထုတ္ခ်င္တဲ့အခါ သံုးပါတယ္။ တစ္နည္းအားျဖင့္ Modulation ေပါ့ဗ်ာ။ Frequency Division Modulation (FDM) လို႔လည္းေခၚၾကတယ္။ သူရဲ႕ processing ကနဲနဲေတာ့႐ႈပ္တယ္။ အဓိကက timing နဲ႔ noise ပါ။ ဥပမာေလးနဲ႔ေျပာတာေပါ့။

ဥပမာ ။ ။ A ကိုပို႔ခ်င္တယ္ဆိုၾကပါဆို႔ ASCII အေနနဲ႔ဆိုရင္ 65၊ Hexa နဲ႔ဆိုရင္ 41။ သူ႕ကို ပံုမွန္ serial communication (UART) နဲ႔ပို႔မယ္ဆိုရင္ Start bit, Data, Stop bit ဆိုတဲ့ protocol နဲ႔ ႐ိုး႐ိုးတန္းတန္းပို႔ပါတယ္။ ထံုးစံအတိုင္း Low/ High နဲ႔ေပါ့။ Binary digit ဆိုရင္ 1000001 ေပါ့။ အဲဒီေနရာမွာ Frequency နဲ႔က်ေတာ့ Low = 2400 Hz, High = 3000 Hz ထားတယ္ဆိုပါစုိ႔။ Low ေတြျဖစ္တဲ့အခ်ိန္မွာ 24 KHz ကိုလႊတ္ၿပီးေတာ့ High ေတြျဖစ္တဲ့အခ်ိန္မွာ 30 Kz ကိုလႊတ္တယ္။ ၁၀ ဆ လႊတ္ရတာကေတာ့ Resolution အတြက္ပါ။ အဆမ်ားေလေလ Resolution ပိုေကာင္းေလေပါ့။ timing က 5ms ဆိုရင္ 1 bit ကို 5ms ထားၿပီးလႊတ္ရတာေပါ့။ ျပန္ဖမ္းတဲ့အခါမွာလည္း အဲဒီ protocol အတိုင္းဖမ္းရပါတယ္။

တကယ္ေတာ့ FM Radio ေတြလည္း အဲလိုပဲ လႊင့္ေလ့ရွိပါတယ္။ Frequency ျမင့္ေလ timing နဲ႔ filtering လုပ္ရတာေတြ ခက္လာေလပါပဲ။ ေနာက္ထပ္အေရးႀကီးတာက Noise ပါ။

Monday, 30 June 2008

Pulse Width Modulation (PWM) with Rabbit 3000 MCU

PWM (Pulse Width Modulation) ကို ေနာက္ပိုင္း MCU ေတြမွာ ေတာ္ေတာ္ေတြ႕လာရပါတယ္။ ကၽြန္ေတာ္အခုျပမွာက Rabbit 3000 နဲ႔ပါ။ အရင္ကၽြန္ေတာ္သံုးခဲ့တဲ့ MCU ေတြ Cygnal, NEC, ARM မွာ ဒီ function မပါတဲ့အတြက္ Timer ေတြ၊ Interrupt ေတြနဲ႔ ႐ႈပ္ေနေအာင္တြက္ရ ေရးခဲ့ရပါတယ္။ ၿပီးေတာ့ Time interval တိက်မႈလည္း မရွိပါဘူး။ ဒီ PWM function ကေတာ့ interval တိက်မႈရွိတဲ့အျပင္ Duty Cycle ကိုလည္း လိုအပ္သလို (%) နဲ႔ထုတ္ေပးလို႔ရပါတယ္။ တကယ္ေတာ့ MCU ေတြရဲ႕အားသာခ်က္ပါသလို compiler (core module) ေတြရဲ႕စြမ္းရည္ကလည္း အရမ္းျမင့္လာလို႔ပါ။ ဒီမွာ pwm_set ၄ ခါေရးရတာကေတာ့ Rabbit 3000 မွာ PWM Channel ၄ ခုပါတဲ့အတြက္ျဖစ္ပါတယ္။ Duty cycle တစ္မ်ိဳးစီနဲ႔ ေရးျပထားတာပါ။

void main()
{
unsigned long freq;
int pwm_options;

// request 10kHz PWM cycle (will select closest possible value)
freq = pwm_init(10000);
printf("Actual PWM frequency = %d Hz\n", freq);
pwm_options = 0;
pwm_set(0, 0.10 * 1024, pwm_options);

pwm_set(1, 0.25 * 1024, pwm_options);
pwm_set(2, 0.50 * 1024, pwm_options);
pwm_set(3, 0.99 * 1024, pwm_options);
while(1); //keep running the program

}