⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 modelisation_v2.asv

📁 Ultrasonor captor with Microchip dsPIC33F
💻 ASV
字号:
clc;
clear all;
close all;


disp('*******************************************');
disp('***         MATLAB - SBPA V0.4          ***');
disp('*** Recherche des param鑤res de la SBPA ***');
disp('*******************************************');

%% Param鑤res
vitesse_son = 340;              %340 m/s
distance_robot_balise = sqrt(3^2+2.1^2);      %5 m
f_us = 32e3;
F_osc = 128e6;
p = 1;

t=[1.5:0.01:10];
bar = waitbar(0,'Recherche en cours...');

%% Calcul des courbes
tic;
for i=[1:1:length(t)]
    waitbar(i/length(t));
    %% Longueur et fr閝uence SBPA
    t_robot_balise = round(distance_robot_balise / vitesse_son * 1000) / 1000;

    t_sbpa_haut = t(i)/f_us;

    %r閟olution de l'閝uation
    temp='';
    temp = strcat(temp,num2str(t_sbpa_haut));
    temp = strcat(temp,' * 2^(nr) - ');
    temp = strcat(temp,num2str(t_robot_balise));
    temp = strcat(temp,' * nr = ');
    temp = strcat(temp,num2str(t_sbpa_haut));
    sol = solve(temp);

    nr(i) = round(double(sol(2)));
    Tsbpa(i) = t_sbpa_haut / nr(i);
    f_ech = 1/Tsbpa(i);
    while f_ech < 100e3
        f_ech = f_ech+1/Tsbpa(i);
    end
    
    longueur_sbpa(i) = 2^nr(i) - 1;
    nb_ech(i) = round(longueur_sbpa(i) * f_ech * Tsbpa(i));

    %% Calcul charge m閙oire :
    mem(i) = 3 * 2 * 2 * nb_ech(i);
end

close(bar);

%% Affichage influence param鑤res
figure('Name', 'influence param鑤res', 'NumberTitle','off');
subplot(4,1,1);
plot(t,mem);
hold on;
plot(t,32e3*ones(length(mem)),'color',[1 0 0]);
title('Charge m閙oire', 'fontsize', 12);
subplot(4,1,2);
plot(t,nb_ech);
title('Nombre d''閏hantillons', 'fontsize', 12);
subplot(4,1,3);
plot(t,longueur_sbpa);
title('Longueur de la SBPA', 'fontsize', 12);
subplot(4,1,4);
fsbpa = 1./Tsbpa;
plot(t,fsbpa);
title('Fr閝uence de la SBPA', 'fontsize', 12);

%% Choix des param鑤res
f_select = min(fsbpa(find(longueur_sbpa(:) > 1024)));
idx = find(fsbpa(:) == f_select);

f_ech = 1/Tsbpa(idx);

%% Calcul des param鑤res du dsPIC
ADCS = 2*(F_osc)/(4*f_ech*13)-1;
ADCS = round(ADCS);
f_ech_pic = 2*F_osc/(4*13*(ADCS+1));

PR1 = F_osc/(4*f_ech_pic);


%% Calcul charge m閙oire :
mem = 3 * 2 * 2 * nb_ech(idx);


%% Affichage
disp('R閟ultats :');
s = sprintf('\t Nombre de registres : \t\t\t    %d registres',nr(idx));
disp(s);
s = sprintf('\t Longeur de la SBPA : \t\t\t  %d 閘閙ents',longueur_sbpa(idx));
disp(s);
s = sprintf('\t Fr閝uence de la SBPA : \t\t% d Hz',1/Tsbpa(idx));
disp(s);
s = sprintf('\t Fr閝uence d''閏hantillonnage : \t %d Hz',f_ech);
disp(s);
s = sprintf('\t Nombre d''閏hantillons n閏essaire pour 1 SBPA : %g 閘閙ents',nb_ech(idx));
disp(s);
s = sprintf('Charge m閙oire pour trois signaux : %g octets, soit %g ko',mem, mem/1024);
disp(s);

disp('*******************************************');
disp('Param鑤res du dsPIC :');
disp('TIMER 1 :');
s = sprintf('\t Valeur de PR1 : \t\t  %d',PR1);
disp(s);
s = sprintf('\t Pr閟calaire du timer 1 : \t%d',1);
disp(s);
s = sprintf('\t Fr閝uence TIMER 1 : \t%d Hz',f_ech_pic);
disp(s);
disp('ADC :');
s = sprintf('\t ADC_SAMPLE_TIME_%d',0);
disp(s);
s = sprintf('\t ADC_CONV_CLK_%dTcy',round(ADCS/2));
disp(s);
disp('*******************************************');
s = sprintf('\t Fr閝uence d''閏hantillonnage du dsPIC : \t\t%g kHz',f_ech_pic*1e-3);
disp(s);
s = sprintf('\t Temps d''閏hantillonnage du dsPIC : \t\t\t  %g 祍',1e6/f_ech_pic);
disp(s);
disp('*******************************************');
s = sprintf('Temps de calcul Matlab : %g s',toc);
disp(s);

disp('.');

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -