Use the Arduino board as a single-shot data aqcuisition (DAQ) device for computer-controlled systems practices (Digital Control Theory). This package comes with four main m-file functions: daqduino_start, daqduino_end, daqduino_write, daqduino_read. As an example, consider the fragment of a code to implement a digital PID control loop:
for k=1:2, % Initial conditions
y(k)=0; u(k)=0; e(k)=0; % output, control, error
for k=3:nit, % nit=number of iterations
e(k)=yr(k)-y(k); %yr(k) is a reference sequence
daqduino_write(u(k),Ts); % Ts is the sampling time
A Simulink block is also available. However, it has not been tested very much. You may face some bugs.
An m-file example is given doing three practices: (1) Open-loop datalog; (2) Least-squares offline identification; (3) IMC Model-based Digital PID control tuned by the selection of the closed-loop time constant.
This package has been tested only with Arduino Uno R3 and Arduino Nano R3. The I/O pins in use are the Analog Input A0 and Pin 6 PWM. However, the Arduino code is very simple and you can modify it to your own needs. If you do so, please remember to reference/cite the author and research groups involved.
Laboratory of Control and Systems - LACOS, Federal University of Para, Brazil (ufpa.br)
Group of Control and Systems - GCS, State University of Santa Catarina, Brazil (udesc.br)
Author: Professor Antonio S. Silveira (lattes.cnpq.br/1828468407562753)
Antonio Silveira (2020). DaqDuino (https://www.mathworks.com/matlabcentral/fileexchange/50784-daqduino), MATLAB Central File Exchange. Retrieved .
Small corrections to make DaqDuino compatible with MATLAB R2018 and with SCILAB 6.0.2.
Updated help and functions for installation procedures in Linux systems.
- Added some lines into the Arduino side program in order to limit the I/O range between 0V to 5V, and a new program to set the PWM frequency to 2kHz;
Sampling time Ts within the daqduino_block.mdl is now working fine at 0.04 seconds.