BàiviếtnàyviếtchoIRF.
Grenoble,12/05/2005
Chàocácbạn,
Cóthểnói,hiệnnayviđiềukhiểnđãrấtphổbiếnởViệtNam,vàđượcứng
dụngrấtnhiều.NhữngsinhviênngànhĐiện,ĐiệnTử,CơĐiện
Tử,TinHọc,
ViễnThông hầunhưaicũngbiếtcáchđểlàmviệcvớiviđiềukhiển.Tuy
nhiên,đểviếtmộtbàiviếttổngquátvềviđiềukhiểnvàviệclậptrình
chovi
điềukhiển,quảthậtlàquákhókhănđốivớitôi.
Dovậy,tôiđặtngayvấnđềlàbàiviếtnàysẽhướngvàonhữngbạnsinhviên
mớibắtđầutiếpcận
vớiviđiềukhiển.Bàiviếtsẽđượcchiathành3nộidung
chính.Nộidungthứnhất,tôitrìnhbàykháiquátvềviđiềukhiển.Nộidung
nàyđượcđềcậptrongrấtnhi ềutàiliệ
u,vàdườngnhưlàvấnđềcơbản,do
vậy,tôichỉtrìnhbàynhữngýkiếncánhâncủatôisaochothậtphùhợpvới
cácbạnsinhviênmớitiếpcậnvớivi
điềukhiển.Nộidungthứhai,tôitrình
bàyvềcáchtiếpcậnmộthọviđiềukhiển,haycụthểhơnlàcácbạncầngìđể
bắtđầuhọcviđiềukhiển.Nội
dungcuốicùng,tôisẽliệtkêcácbướchọcvi
điềukhiểnmộtcáchtươngđốirõràng,màcánhântôichorằngnóhữuích
cho các bạn. Bởi vì những bước này
tôi cũng tham khảoởmột số tài liệu
hướngdẫn,vàkhihọcthìtôicũngphảilầnmòvàđitheoconđườngđó.
Von Ne umann làđường
truyềnchung.Trongkhiđó,kiếntrúcHarvardtá chrờibộnhớdữliệuvàbộ
nhớchươngtrình.
Mỗi kiến trúc này có m ột lợiđiểm riêng rẽ khác nhau. Kiến trúc Von
Neumann
tậndụngđượctàinguyênbộnhớ,trongkhiđókiếntrúcHarvard
sẽđạttốcđộxửlýcaohơn,mặtkhácđườngtruyềndữliệuvàđườngtruyền
lệnhđiềukhiển(chươngtrình)cóthể
códunglượngkhácnhau.
b)Tậplệnh
Tậplệnhởđâyđượccoilàtậpmãlệnhnhịphân,vàchúngtachưanênvộiđề
cậpđếnngônngữlậptrình.Bảnchấtcủatậplệnhlàmộttậphợpcácmã
nhị
phân,màtừđócácđơnvịxửlýtrungtâm(CPU)nhậnbiếtvàthựchiện.Dữ
liệuđượcCPUxửlýlàcácsốnhịphân.Chínhvìvậy,tậplệnhdùthếnàođi
nữacũng
sẽthựchiệnmấyviệcchínhsauđây:
‐tínhtoáncácconsốnhịphân.
‐cáclệnhđểchuyểncácgiátrịrathànhtínhiệuđiệntửởchânlinhkiện
‐cáclệnhdichuyểncácgiátrịgi
ữacácthanhghi
‐cáclệnhđiềukhiểncontrỏchươngtrình
Nhữngđiềunàytưởngchừngđơngiản,nhưngthiếtnghĩnósẽgiúpíchcho
cácbạnkhihọcvàhiểumộttậplệnh,cácbạncóthểphânloạichúngđúng
luậnnàysâucũngkhôngsâu,mànôngcũngkhôngnông,nhưngnólại
làcơsởđểnhữngnhàsảnxuấttungracácsảnphẩmviđiềukhiểncủamình.
Vàcũngtừđó,các
bạncũngdễphânloạiđểlựachọnviđiềukhiểnchomình
dùng.Ngoạitrừhailoạinày,thìnhữngloạikhácchúngtacứxemlàloạithứ
ba.
Chúngtacầnnhómloạiđểlàmgì?
Bởivìtínhnăngcủaviđiềukhiển,cóliên
quantrựctiếpđếnsốchâncủaviđiềukhiển.Chonênviệcphânloạivàhình
dungramộtbảnđồđầyđủcácloại,các
chứcnăngcủaviđiềukhiển,sẽgiúp
cácbạnlựachọnviđiềukhiểntốthơn.Mộtngườimớihọc,đểcómộttầm
nhìnrộngvềviđiềukhiển
màlựachọncũngthậtlàkhó,nhưngnếutìmtòi,
hiểuvàphânloạiđượcmộtsốloạiviđiềukhiển,tựnhiênsẽhiểurõđượccái
bảnđồtươngđốiphứctạpnày.
Làmthếnàođểbiết?Đơngiảnthôi,trongtấtcảcácdatasheetđượ
ccungcấp
chotừngloạiviđiềukhiển,đềucómôtảrõtínhnăngcủatừngloại.Cácbạn
tựmìnhtìmhiểuvàphânloạimộtsốviđiềukhiểnthôngdụng
(màcácbạn
cóthểmua)rồitựđánhgiáchúngvềmặttínhnăngquacácdatasheet.Vàđể
đọchiểuđượccáctínhnăngnày,thìcácbạnphảicómộtkiếnthứcnền,vd
nhưtimerlà
gì?pwmlà gì?capturelà gì?i2clàgì?usartlàgì?giaotiếpCAN
là gì? Những cáiđó, bạn không cần học từ nhiều con viđiều khiển, vì
nhữngtínhnăngđóhoàntoàngiống
nhau,chỉcócáchđểlàmchonóhoạt
Tôinóirằngchúngtaphảibiếtrằngchúngtacóthểmuađượcnó,chứđừng
đimuanóvội,màhãyxemnhữngvấnđềtiếptheo.
b)Lậptrình
Tấtnhiêncôngviệccủa bạnlàcông việclập trình,đểlàmcho conviđiều
khiểnđóhoạtđộngtheoýbạnmuốntronggiớihạncáctínhnăngcủanó.Ở
đâycó
mộtđiểmrấtvuiđólànếubạnxétlạitừthưởʺkhaisinhlậpđịaʺcủa
conviđiềukhiển,chứcnăngvàtậplệnhcủanóthậtđơngiản,nhưngnh
ững
côngviệcnhưbâygiờnóvẫnhoàntoànlàmđược.Đólàvisao?Làvìbản
chấtcủanóvẫnchỉlàthaotácvớinhữngconsốnhịphân.Dovậy,nếumột
conviđ
iềukhiểnkhông hỗtrợmộttínhnăngnàođó,thìchúngtacũngđều
cóthểthựchiệntínhnăngđóbằngphầnmềmvàmộtvàiphầncứnghỗtrợ
bênngoài.
Nhưng
tạmd ừngchuyệnđólại,cácbạnmuốnconviđiềukhiểnhiểuđược
nhữngchữlàchữmàcácbạnsẽdùngđểlậptrình,thìcácbạnphảibiếnđổi
cácchữđóthànhra
cácconsốnhịphân,thểhiệndướidạngfile.HEX
Muốnlàmđượcđiềunày,cácbạncầncómộtchươngtrìnhdịch.
Việcsauđólàbạnphảibiếtngônngữlập
trìnhnàođó,thôngthườngkhimới
bắtđầu,ngườitadùngASM
viđiềukhiển.Thạchanhthường dùngtừ 38KHzchođến40MHztuỳtheo
từngloạiviđiềukhiển.
Chínhvìnhữngđặcđiểmnày,nếuchúngtakhôngtínhđến
tấtcảcácthiếtbị
ngoạivicầnđiềukhiển,chúngtahãymạnhdạnthiếtkếmộtmạchchuẩncho
viđiềukhiển, cungcấpđiệnáp5V,dòng300mA,mạch reset
vàmạchdao
động.Khidùngbấtkỳloạiviđiềukhiểnnào,cũngcóthểdùngmạchnày.
Nguồnchothiếtbịngoạivi,tôikhuyênrằngnênthiếtkếriêngchotừngthiết
b
ịngoạivi,vàchorằngthiếtbịngoạivilàbấtkỳthiếtbịnàonốitrựctiếpvới
mạchviđiềukhiểnnêutrên.
Ngoàira,cầnlưuýrằng,viđiều
khiểnnhậnvàxuấttínhiệuđiệntrêncác
chântừ2.5Vđến5.5V(phụthuộcvàonguồn),vàtừ12mAđến20mA(tuỳ
loại).Vìvậy,cácthiếtbịngoạiviphảiđượcthiếtkếsao
chokhigiaotiếpvới
viđiềukhiển,trựctiếpnốivàocácchânviđiềukhiển,vàcódòngxuấtnhập,
cũngnhưđiệnáplogicnhưtrên.
e)Kếtluận
Trongtấtcảnhữngvấnđềcầncónày,chúngtathấyrằngcácmạchnguồn,
resetvàdaođộnglàkháđơngiản,vàhầunhưđượccungcấpmộtcáchchi
tiếtbởinhàsả
nxuất.Chínhvìthế,chỉcầnlậtdatasheetravàthiếtkếgiống
dịchtừngônngữcấpcaoC,Pascal,Basic, thườngđượcbánvớigiákhácao.
Tuynhiên,ởViệt Nam, th
ựctế làchúng ta dùng rấtnhiều nhữngchương
trìnhkhôngcóbảnquyền.Tôikhôngcổvũchoviệcdùngtrìnhdịchkhôngcó
bảnquyền,nhưngthựctếlàthựctế,bâygiờ
hầunhưcácchươngtrìnhdịch
ngônngữcấpcaochohầuhếtcácloạiviđiềukhiểnđềuđượccungcấpđầy
đủtrêncácdiễnđàncủa cảViệtNamlẫnnướcngoài.Vì
vậy,vềphầnchương
trìnhdịch,cácbạncũngchẳngphảilolắnggìnữa.
Vậyđiềuquantrọngnhất,cácbạncầnphảihọc,đólàhọccáchviết
chương
trình. Tôiđã phân tích vấnđềnàyởdiễnđànđiện tử
www.diendandientu.comvàsẽđănglạibàiviếtnàytạiwww.picvietnam.com
(diễnđànmàtôisắpmởra).Đểviếtđượcchươngtrình,cácbạnphảihiểu
rằng,bạnviếtchươngtrìnhchom ộtviđiềukhiển,tứclàsửdụngcáctính
năngcủaviđiềukhiển.Vậycácbạnphảitheocácbướcsau:
‐tínhnăngđóhoạtđộngnhưthếnào?tạisaochúngtadùngtínhnăngđó?
‐làmsaođểkíchhoạtchoviđiềukhiểnhiểurằngchúngtacầndùngtính
năngđó?
‐khilàmviệcvớ
imộttínhnăngbấtkỳ,chúngtaphảitươngtácvớinhững
thanhghiđặcbiệtnàotrongviđiềukhiển?
‐mộtsốthuậttoánđểthựchiệncôngviệc
Nhưvậy,các
bạnsẽnắmngay đượcrằng,đểđiềukhiểnmộtthiếtbịngoạivi
khác.Cánhântôikhuyêncácsinhviênmớib
ắtđầulàmviệcvớiviđiềukhiển
mộtlờikhuyênchânthànhlàcácbạnhãytheonhữngbướctôitrìnhbày,học
tậpvàtựmìnhđánhgiácácvấnđề,hìnhthànhmộtbả
nđồkiếnthức,rồitự
thựchiệnmộtđềtàibấtkỳ.Saukhilàmxongmộtđềtàibấtkỳ,kểcảđềtàiđó
chỉlàlàmnhấpnháymộtcáiđènled,cá cbạnsẽthấy
rằng,cácđềtàikhácrồi
cũngtươngtự.Nhưngvấnđềquantrọnglàphảixácđịnhđượcnhữngbước
thựchiệnnhưtôiđềcậptrênkiavàtiếpsauđây.
3)Cácbướcthựchiệnmộtđềtàivớ
iviđiềukhiển
Tôiviếtrađâycácbướcđểmộtngườimớihọccóthểtheovàtiếpcậnngay
đượcvớiviđiềukhiển
a)Tìmhiểumộtsốkháiniệmcầnthiết:
‐Hiệnnaycó3họ viđiềukhiểnnổi tiếng là8051(baogồm AVR),PICvà
Motorola.Nếubắtđầuhọc,chọnmộttrong3loạinàyđểbắtđầu.
‐Tìmhiểuvềkiến
trúcmáytính,hiểucơbảnvềkiếntrúcHarvardvàkiến
trúcVonNeumann
‐TìmhiểukháiniệmRISCvàCISC
‐Kháiniệmthanhghi
‐KháiniệmStack
‐Kháiniệmcontrỏ(pointer)
Vd:
ChỉcầnhiểuADC(AnalogtoDigitalConverter)dùngđểbiếnđổimộttín
hiệuđiệnápAnalogvàomộtchânnàođócủaviđiềukhiển,biếnđổinóqua
giátrịsố(Digital)bằngcáchsosánh
vớim ộtđiệnápthamchiếu(Reference
Voltage).Điệnáp thamchiếu cóthể làđiệnápVDD(điện áp nguồn)hoặc
điệnáp thamchiếuđượcđưa vàomộtchân khác.Nguyênlý biếnđổ
inày
đượcthựchiệnnhưthếnào?ThếnàolàADC10bit,12bit,8bit
Chỉcầnnhưvậythôi,cácbạnkhôngcầnhiểunhiềuhơnnữa.
Nóiđiềunàycũngthậtbu
ồncườichocácbạnđãhọclâurồi,nhưngđâylà
cácbạnmớihọc,thìviệcnàyvôcùngquantrọng.Vìrấtnhiềubạnlênmạng
vàhỏirằngPWMlà
cáigì?ThếnàolàDutycycle?
Dovậy,nhữngkháiniệmnày,nếucácbạnnắmvàhiểuđượcrồi,thìvấnđề
chỉcònlàứngdụngsửdụngnóthôngquaviệclậptrìnhtrên
viđiềukhiển
màbạnchọnnữathôi.Màcáctínhnăngnàythìviđiềukhiểnnàocũnggiống
nhau,chonênchỉcầnđọcmộtdatasheetthìsẽbiếthết.
c)Tìmdụng
cụhọctập
Tấtnhiên,đihọcphảicódụngcụhọctập.BạnmuốnhọcconviđiềukhiểnA,
thời buổi này không phải là thời buổi bao cấp, phát phiếuđi l
điềukhiển củamình,các bạnnhanh chónglàmngaymạ
ch nạp.Loadmột
chươngtrìnhmẫubấtkỳđơngiảnvàoviđiềukhiểnđểkiểmtramạchnạp
hoạtđộngtốthaykhông.Nếutốtthìoki,nếukhôngthìlạibòlên
cácdiễn
đànđểhỏi.Nhữngthằngrảnhrỗinhưtôisẵnsàngtrảlờichocácbạn.
d)Họcviếtchươngtrình
Họcviếtchươngtrìnhcóthểchiacụthểlàm2cáchhọc,họcđểviếtchovi
điềukhiểnchạyđượcthìnhảythẳngvàohọcngônngữcấpcao,họccấptốc
đểđốiphóvớimộtđồánnàođó.Thậmchívàidònglệnhbanđầuviếtsai,
nhảylêndiễnđànhỏi,tìmthầyhướngdẫnhỏi,tìmbạnhỏi cuốicùngrồi
cũng
viếtxongchonóchạyđược.Cáinàothấykhókhăn,khôngbiếtlàmthì
tìmcodemẫubằngngônngữcấpcao,thếlàxong.
Cáchthứhairườmrahơn,đólàhọcviếtASM.Họ
cASMkhácôngph u,phải
hiểuchitiếtcấutrúcviđiềukhiển,phảiđiềukhiểntừngthanhghi
Tuynhiên,tôikhuyênkhimớihọc,cácbạnnênbắtđầubằngviệchọcASM.
KhinắmvữngcáchviếtASMchomộtconviđiềukhiểnnàođó,chuyểnsang
conviđiềukhi
ểnkháckhôngmấykhókhăn,vàcácbạnsẽgiốngnhưmột
chuyêngiavềnómộtkhicácbạnđãhiểutườngtậnmọivấnđề.
Banđầucóvẻsẽhơikhóxơi
vàmệtmỏi,nhưngsaunàythìcácbạnsẽthấy
nhưngcácbạnthiếtkếđượcmộtm
ạchngoạivi,cắmvàoviđiềukhiểnđể
điềukhiểnnó,thìbạnchỉviệccắmnóvàocácchânđượcđưarangoàicủa
mạchtest(cácsocket,châncắm ).NhớrằngMassphảiđược
nốichungtrong
tấtcảcácmạchđiệntử.Mộtsốmạchđiệntửphứctạpdùngnhiềumasskhác
nhau,thìítnhấtcũngphảicómộtmasschungvớimasscủa
viđiềukhiển.
f)Cácbướchọctínhnăngviđiềukhiển
Saukhiùùcạccạclàmnhấpnháycáiđènled,theomộtsựhướngdẫnnào
đó,thậmchílàcopyandpaste,nhưngcáiđènnónhấpnháy,chứngtỏbạn
làmtốtmọ
iviệctừđầuđếnkhichínhthứcbắtđầuhọcviđiềukhiển.
Hãytiếnhànhcácbàitậpsau:
‐Họccácthanhghiđặcbiệt,bảnđồbộnhớ(memorymap)(họclýthuyết)
‐Họ
ccáchxuấttrêntừngchânviđiềukhiển(bàitậptắtmởđènled)
‐Họcviếthàmdelay(làmđènnhấpnháy)
‐Đènnhấpnháydùngtimer
‐Bấmmộtnút,đènbật/tắt(nhập
port,nhậptrêntừngchân,dùngngắtngoài)
‐Điềukhiểnđộngcơ(PWM)
‐Đọcencoder(Capture/Comparator)
‐ĐọcADCbằngcáchxoaybiếntrở
‐GiaotiếpRS232
‐GiaotiếpI2C
4)Kết
luận:
Tôidànhthờigianviết bàiviếtnày,khôngmongmuốngìhơnlàgiúpcácbạn
sinhviênmớihọc,mớibắttaylàmquenvớiviđiềukhiểncóm ộtcáinhìn
tổng
quátbanđầuvàcómộtđịnhhướngrõràngchoviệchọctậpcủamình.
Cánhântôicũngtừnglàngườimớihọc,vàbấtquáthìtôichỉhọctr ướccác
bạn
mộtvàinăm.Đếnbâygiờtôikhôngcòndùngviđiềukhiểnvàlậptrình
cho viđiều khiển nhiều nữa, nhưng tôi cũng muốn chia sẻ những kinh
nghiệmcủatôikhibắt
đầuhọcđếnkhilàmđượcmộtsốviệchữuíchbằngvi
điềukhiển,đếnchocácbạn.Hyvọngcácbạnbắtđầuhọc,vàhọctậpmau
tiếnbộ.
Nếu
cácbạncónhữngthắcmắcgìvềviđiềukhiểnMicrochipPIC,cácbạncó
thểemailtheođịachỉ
hoặcthamdựvàodiễnđàn
www.picvietnam.com
Chúcmọiđiềutốtlành!