Monday, 29 December 2008
Double Head (Double Auger) Powder Filler
Friday, 26 December 2008
TX Level & RX Gain related to NOISE
Monday, 22 December 2008
DTMF (Dual Tone Multi Frequency) (Part - 1)
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
ဒါေပမယ့္ 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
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 ေတြကိုပံုနဲ႔ ျပထားပါတယ္။
Friday, 14 November 2008
Ethernet Module at Embedded Software (Rabbit)
ဒီလိုလုပ္တဲ့ ေနရာမွာ TCP/ IP protocol က Transparent ျဖစ္ပါတယ္။ ဘာမွၾကားခံ Hardware, Software ေတြထည့္ေနစရာ မလိုပါဘူး။
ကၽြန္ေတာ္က Filezilla, Core FTP Software ေတြသံုးၿပီး access လုပ္ပါတယ္။
Thursday, 6 November 2008
Short Notes (1)
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 အေဟာင္းနဲ႔ ခ်ိတ္ထားတဲ့ 4 wire ပံုပါ။ ညာဘက္က ႀကိဳးေတြက Power နဲ႔ Rs-232C ႀကိဳးေတြပါ။
Thursday, 23 October 2008
Load Cell Degitizing Unit (LDU 78.1) for Weighting Machine
Monday, 20 October 2008
PIC18F4420 Timer Module (8 bit/ 16 bit)
ထံုးစံအတိုင္း ဘယ္ကေန ညာကို စဖတ္မယ္ဆိုရင္ -
၁။ 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
Monday, 15 September 2008
50+ Linux E-books
Thursday, 4 September 2008
Electronics E-Books Series (1)
Monday, 1 September 2008
SMART 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 ျဖစ္ပါတယ္။
Monday, 25 August 2008
PIC Microcontrollers Projects Samples
http://www.micro-examples.com
Tuesday, 12 August 2008
I2C EEPROM Operation (Source Code)
ZigBEE Topologies
Friday, 1 August 2008
ZigBEE Introduction
- 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
- 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
Operate Speed Mode Servo Motor using PWM
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 တစ္ခုထပ္ရွာၿပီး ဆြဲရပါတယ္။
Wednesday, 9 July 2008
Pulse Width Modulation (PWM) over Analog Communication
ဥပမာ ။ ။ 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
}