Úvodem
Pro práci s MATLABem vytvořil výrobce LabJacku sadu knihovních funci a příkladů, které demonstrují základní použití dvojice LabJack – MATLAB. Obojí lze samozřejmě stáhnout z webových stránek výrobce. Pro správnou funkci je nutné mít nainstalovaný MATLAB verze 7.0.0.19920 (R14) a novější. S některými omezeními je možné propojení realizovat i na verzi 6.5.
Stažený archiv funkcí a příkladů rozbalte do libovolného místa na pevném disku. Spusťte MATLAB a volbou FILE-Set Path… vyvolejte dialogové okno pro výběr adresářů. V tomto okně vyberte složku obsahující rozbalený archiv a vložte adresu kliknutí na tlačítko „Add with Subfolders“. Nastavení uložte a dialogové okno uzavřete. Tímto je přípravný proces zdárně ukončen.
Připravené příklady se dotýkají několika témat:
- Využití prostého měření analogových vstupu
- Digitální vstupy / výstupy
- Jednoduchý kombinovaný Loger (4x analog, 2x digital)
- Měření vlhkosti a teploty
- Steamování
- Využití Čítače /časovače v režimu PWM
Mimo dvou posledně zmíněných témat jsme si v průběhu seriálu snad už všechno ukázali. Přesto není na škodu si i tyto elementární úkony zopakovat. Obzvlášť v prostředí MATLABu.
Úkol první, změřme si analogovou veličinu
Jednoduchý příklad pro změření analogové veličiny nám přináší hned „U3_Simple_Analog.m“. Jedná se o klasický „M-FILE“. Po nastavení uvedeném v textu výše jej stačí pouze otevřít a spustit (funkční klávesa F5). Výstupem jsou dvě napětí. Nenechte se odradit v případě, že na Vás MATLAB místo výsledků měření vychrlí chybová hlášení. Skript spusťte znovu. Stává se to většinou při první komunikaci s LABJACKem. Příklad „U3_Simple_Analog.m“. vrací dvě napětí. Prvím je napětí analogového vstupu AIN2, druhým napětí analogového vstupu AIN3 vztažené k referenčnímu napětí VREF.
Výsledek může vypadat takto:
AIN2 = 0.4559 AIN3_VREF = -0.0173 >>
Proměnné lze samozřejmě využívat k další práci.
Celý kód pak vypadá takto:
% ------------------------------------------------------------------------- % Simple Analog In % This file calls the eGet function and returns the % analog voltages AIN2 and AIN3-VREF from the U3. % ------------------------------------------------------------------------- clc % Clears the command window clear global % Clears all global variables ljud_LoadDriver; % Loads LabJack UD Function Library ljud_Constants; % Loads LabJack UD constant file [Error ljHandle] = ljud_OpenLabJack(LJ_dtU3,LJ_ctUSB,'1',1); % Returns ljHandle for open LabJack Error_Message(Error) % Check for and display any Errros %Start by using the pin_configuration_reset IOType so that all %pin assignments are in the factory default condition. [Error] = ljud_ePut(ljHandle, LJ_ioPIN_CONFIGURATION_RESET, 0, 0, 0); Error_Message(Error) %First some configuration commands. These will be done with the ePut %function which combines the add/go/get into a single call. %Configure FIO2 and FIO3 as analog, all else as digital. That means we %will start from channel 0 and update all 16 flexible bits. We will %pass a value of b0000000000001100 or d12. [Error] = ljud_ePut(ljHandle, LJ_ioPUT_ANALOG_ENABLE_PORT, 0, 12, 16); Error_Message(Error) % Call eGet function to get AIN2 single-ended voltage. [Error AIN2] = ljud_eGet(ljHandle,LJ_ioGET_AIN,2,0,0); Error_Message(Error) % Call eGet function to get AIN3-VREF differential voltage. [Error AIN3_VREF] = ljud_eGet(ljHandle,LJ_ioGET_AIN_DIFF,3,0,30); Error_Message(Error) AIN2 % Display AIN2 value AIN3_VREF % Display AIN3_VREF value
Úkol druhý, digitální vstup / výstup
V tomto příkladě je nejprve uživatel dotázán na logický stav, do kterého má být nastaven výstup FIO0. Po jeho nastavení je přečtena druhá digitální linka a to FIO1 (nezapomeňme, že v klidu je zde log. 1 – pull-up). Příklad „U3_Simple_Digital.m“
Možný výstup:
Enter 1 for High and 0 for Low FIO0 Output FIO0 = 0 FIO0 = 0 FIO1 = 1 >>
Řešení v podobě M-FILE je opět velmi jednoduché
% ----------------------------------------------------------- % Digital Bit In/Out Example % This file sets a single digital output channel based on user % input and reads a single digital input channel. Jumper a wire % from FIO0 to FIO1 and the program will return the value you set % FIO0 to as FIO1. % ----------------------------------------------------------- clc %clear the MATLAB command window clear global %Clears MATLAB global variables ljud_LoadDriver; % Loads LabJack UD Function Library ljud_Constants; % Loads LabJack UD constant file [Error ljHandle] = ljud_OpenLabJack(LJ_dtU3,LJ_ctUSB,'1',1); % Returns ljHandle for open LabJack Error_Message(Error) % Check for and display any Errros %Start by using the pin_configuration_reset IOType so that all %pin assignments are in the factory default condition. Error = ljud_ePut (ljHandle, LJ_ioPIN_CONFIGURATION_RESET, 0, 0, 0); Error_Message(Error) % Prompt user for FIO0 output value FIO0 = input('Enter 1 for High and 0 for Low FIO0 Output FIO0 = ') Error = ljud_ePut(ljHandle,LJ_ioPUT_DIGITAL_BIT,0,FIO0,0); Error_Message(Error) % Gets FIO1's State [Error FIO1] = ljud_eGet(ljHandle,LJ_ioGET_DIGITAL_BIT,1,0,0); Error_Message(Error) % Display FIO1 FIO1
Příklad třetí, generujeme PWM
Zajímavým příkladem je využití časovače / čítače. Jsou zde předvedeny dva režimy. Osmibitová PWM a vyžití čítače k čítání externích událostí. Příklad předpokládá propojení výstupu PWM FIO0 se vstupem čítače FIO1. Osmibitová PWM je nastavena na frekvenci 7812 (u staršího HW na poloviční). Obě periferie jsou připojeny po dobu jedné sekundy a tak čítač načítá přibližně stejnou frekvenci:
Counter1 = 7865 >>
Chyba je dána skutečností, že zastavení periferií neproběhne zcela přesně po uplynutí jedné sekundy. O režimech a využití čítačů/časovačů si řekněme něco v příštím díle. Následuje řešení, tak jak ho vytvořil výrovce LJ.
% ------------------------------------------------------ % Timer Counter Example: PWM Output and Counter Input % This example has been written to create a 3.9 kHz PWM output % over FIO0 with a 50% duty cycle. It also enables Counter0 over FIO1. % Jumper a wire from FIO0 to FIO1 and run the program from % the command window. Counter should return roughly 7812 counts % for a U3 version 1.21. Counter should return roughly 3906 counts % for a U3 version 1.20. % ------------------------------------------------------ clc %clear the MATLAB command window clear global % Clears MATLAB global variables ljud_LoadDriver; % Loads LabJack UD Function Library ljud_Constants; % Loads LabJack UD constant file [Error ljHandle] = ljud_OpenLabJack(LJ_dtU3,LJ_ctUSB,'1',1); % Returns ljHandle for open LabJack Error_Message(Error) %Start by using the pin_configuration_reset IOType so that all %pin assignments are in the factory default condition. Error = ljud_ePut (ljHandle, LJ_ioPIN_CONFIGURATION_RESET, 0, 0, 0); Error_Message(Error) % Checks for errors and displays them if they occur %Set the pin offset for the timers and counters on the U3 Error = ljud_AddRequest(ljHandle,LJ_ioPUT_CONFIG,LJ_chTIMER_COUNTER_PIN_OFFSET,0,0,0); Error_Message(Error) % Configure the U3's timer clock to 48 MHz Error = ljud_AddRequest(ljHandle,LJ_ioPUT_CONFIG,LJ_chTIMER_CLOCK_CONFIG,LJ_tc48MHZ_DIV,0,0); Error_Message(Error) %Call this command for a U3 Hardware version 1.20 %Error = ljud_AddRequest(ljHandle,LJ_ioPUT_CONFIG,LJ_chTIMER_CLOCK_CONFIG,LJ_tc24MHZ_DIV,0,0); % Configure the U3's timer clock to be divided by 24 % Resulting timer clock is 1 MHz. % Frequency = 2 MHz / (256 * 24) = 7.812 kHz Error = ljud_AddRequest(ljHandle,LJ_ioPUT_CONFIG,LJ_chTIMER_CLOCK_DIVISOR,24,0,0); Error_Message(Error) Error = ljud_AddRequest(ljHandle,LJ_ioPUT_CONFIG,LJ_chNUMBER_TIMERS_ENABLED,1,0,0); % Enable 1 timer. Error_Message(Error) Error = ljud_AddRequest(ljHandle,LJ_ioPUT_TIMER_MODE,0,LJ_tmPWM8,0,0); % Timer0 set to 8-bit PWM. Error_Message(Error) Error = ljud_AddRequest(ljHandle,LJ_ioPUT_TIMER_VALUE,0,10000,0,0); % Timer0 Duty Cycle = 50%. Error_Message(Error) Error = ljud_AddRequest(ljHandle,LJ_ioPUT_COUNTER_ENABLE,1,1,0,0); % Enable Counter1. Error_Message(Error) Error = ljud_GoOne(ljHandle); Error_Message(Error) % Get all results just to check for errors Error = ljud_GetFirstResult(ljHandle,0,0,0,0,0); Error_Message(Error) % Run while loop until Error 1006 is returned to ensure that the device has % fully configured its channels before continuing. while (Error ~= 1006) % 1006 Equates to LJE_NO_MORE_DATA_AVAILABLE Error = ljud_GetNextResult(ljHandle,0,0,0,0,0); if ((Error ~= 0) && (Error ~= 1006)) Error_Message (Error) break end end pause (1) % Pause for 1 second [Error Counter1] = ljud_eGet(ljHandle,LJ_ioGET_COUNTER,1,0,0); % Get Counter1 Reading Counter1 %Disable Timer Error = ljud_AddRequest(ljHandle,LJ_ioPUT_CONFIG,LJ_chNUMBER_TIMERS_ENABLED,0,0,0); Error_Message(Error) %Disable Counter Error = ljud_AddRequest(ljHandle,LJ_ioPUT_COUNTER_ENABLE,0,0,0,0); Error_Message(Error) Error = ljud_GoOne(ljHandle); Error_Message(Error)
Všechny uvedené příklady a mnohem více je možné stáhnout na webu výrobce. Od pondělí 20.10. máte také možnost využít českého zrcadla: http://www.labjack.cz.
Odkazy a Download
- LABJACK U3 – KROK ZA KROKEM I
- LABJACK U3 – KROK ZA KROKEM II
- LABJACK U3 – KROK ZA KROKEM III
- LABJACK U3 – KROK ZA KROKEM IV
- Domovská stránka výrobce - http://www.labjack.com/
- Objednat USB / Ethernet měřící kartu LabJack U3 v HW Shopu => 3.187Kč bez DPH
- Produkty LabJack na HW serveru - Měřící ústředna LabJack
- Produkty LabJack v HW Shopu
- Další měřící přístroje v HW Shopu - Měřící zařízení k PC
- Domovská stránka National Instruments - http://www.ni.com/
- Domovská stránka LabView - http://www.ni.com/labview/
- DAQFactory Express - www.azeotech.com
- Download katalogového listu U3 - LabJack_U3_Users_Guide.pdf
- Download Starting Guide U3 - LabJack_U3_Quickstart_Guide.pdf
- Download DAQFactory - U3 Tutorial - DAQFactory - U3 Tutorial.pdf
- Download LabJackUDSetupV250 - LabJackUDSetupV250.exe
- Další soubory ke stažení - http://www.labjack.com/labjack_u3_downloads.html
Komentáře
Pokud to umí to, co si myslím že by to umět mohlo,
tak by mne to možná zajímalo. Bude ten systém někde k vidění, příp. je možnost si o tom poklábosit s někým kdo už to používá a něco o tom ví?
V danem okamziku bych
V danem okamziku bych jako osobu nejpovolanejsi videl autora clanku. Pokud se vam sam neozve, tak mi poslete maila a zkontaktuji Vas primo. Za HW Vam mohu nejaky model zapujcit na zkousku.
Pokud máte dotazy, prosím
Pokud máte dotazy, prosím piště na karas@hw.cz. Soukromých zpráv si bohužel všímám až po několika dnech. Pokud budu vědět, samozřejmě rád odpovím.