INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Benötige ich Wiederstände?
04.02.2014, 08:54
Beitrag #1
Benötige ich Wiederstände?
Hallo liebe Arduino Gemeinde,

Ich arbeite momentan im Rahmen meines Praktikums mit dem Arduino und Drucksensoren zum messen von Über oder auch Unterdruck. Anfangs waren diese werte sehr weit aus der Luft gegriffen^^ dann habe ich die Sensoren erst einmal kalibriert aber dennoch es war immer noch eine leichte Nullpunktverschiebung vorhanden. Nun ist meine Idee, da ich es noch von der Ampelschaltung so kenne, das man ja fast immer mit Wiederständen arbeiten muss was mir leider noch nicht so ganz klar ist. So ist meine Frage nun ob ich das hier auch benötige also die Wiederstände. Wären diese Sinnvoll oder doch eher Sinnfrei?
Anbei hänge ich ein Bild an welches den Aufbau zeigt. Und ich würde auch jedem Blauen Kabel einen eigenen Wiederstand geben zum Orangen was bei mir GND ist.
Ich warte erst einmal ein paar ratschläge ab da ich noch ein wenig ängstlich bin es einfach auszuprobieren da evtl. etwas passieren kann bzw beschädigt.

LG Peter


Angehängte Datei(en) Thumbnail(s)
   
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
04.02.2014, 09:12
Beitrag #2
RE: Benötige ich Wiederstände?
Hey,

ahhhhhhhhhhhhh Wiederstände? Kenn ich nicht! Wink Big Grin

Welche Sensoren?
Welche Verdrahtung?
Schaltplan?
Blaues Kabel?!?
Code(ausschnitt)?

Nullpunktverschiebung kann man im Allgemeinen durch viele Bauteile erzeugen (oder per Software). Ich denke aber, dass dir das Datenblatt der Sensoren schon einiges an Infos liefert.

MfG demo
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
04.02.2014, 09:39
Beitrag #3
RE: Benötige ich Wiederstände?
Ok du hast Recht ich denke wohl eher an Widerstände... -.-

Also bei den Sensoren handelt es sich einfach um Drucksensoren die 2 anschlüsse haben und deshalb den über bzw Unterdruck zum Normaldruck bzw Umgebungsdruck anzeigen.
Es handelt sich hierbei um den LBA Sensor von Sensortechnics.
Und es gibt keinen genauen Schaltplan bzw nur das Foto so habe ich es halt verschaltet. Ich habe leider vorher nichts aufgezeichnet diese schaltpläne sind immer nur wie Hieroglyphen für mich.
Und mit den Blauen Kabeln meine ich die auf dem Foto die alle zusammen laufen auf einen GND Steckplatz im Arduino. und jetzt ist halt meine frage ob da evtl. die Widerstände hin müssten für den fall das überhaupt welche rein müssten.
Den Code hänge ich nochmal an aber der ist in Matlab geschrieben aber das sollte ja trotzdem keinen großen unterschied machen.

LG Peter
Code:
function dreilochsonde_nachlaufdelle(messbereich_hor, schrittweite_hor, n_messungen, rho_luft, n_Luefter)
% Funktion zur Vermessung der Nachlaufdelle mit einer an der kleinen Traverse befestigten Dreilochsonde
% Voraussetzung: jeder der drei Druckstutzen wird nacheinander an einen
% Drucksensor angeschlossen und der Winkelbereich durchfahren
% Autor: F. Rothe, 10/2013
% Beispielaufruf: dreilochsonde_nachlaufdelle(160, 3, 500, 1.175, 18)
%% globale Variablen
global init_status
global com_arduino


%% Initialisierung KUSB und Arduino
clc
delete(instrfindall)
% Erzeugen eines digitalen I/O-Objektes mit dem verwendeten
% KUSB-Matlab-Adapter und einer ID
dio = digitalio('dtol');
% COM5-Schnittstelle für Arduino konfigurieren
% eventuell vorhandene Schnittstelle auf COM5 löschen
delete(instrfind({'Port'},{'COM5'}))
% Schnittstelle erzeugen
com_arduino = arduino('COM5');

%% Positionierung
% Achsenbezeichnung (Horizontalachse: 3)
achse = 3;
% Richtung vorgeben
richtung = 0;
% Schrittzahl
schritte = 99 * (messbereich_hor / 2);
% Anzahl der Durchläufe der for-Schleife
schleifenzahl_hor = messbereich_hor/schrittweite_hor;


%% Zeilenvektor vorbelegen
av_1 = zeros(1,schleifenzahl_hor+1);
av_2 = zeros(1,schleifenzahl_hor+1);
av_3 = zeros(1,schleifenzahl_hor+1);
U_1 = zeros(1,schleifenzahl_hor+1);
U_2 = zeros(1,schleifenzahl_hor+1);
U_3 = zeros(1,schleifenzahl_hor+1);
p_1 = zeros(1,schleifenzahl_hor+1);
p_2 = zeros(1,schleifenzahl_hor+1);
p_3 = zeros(1,schleifenzahl_hor+1);
c_1 = zeros(1,schleifenzahl_hor+1);
c_2 = zeros(1,schleifenzahl_hor+1);
c_3 = zeros(1,schleifenzahl_hor+1);
c_m = zeros(1,schleifenzahl_hor+1);
n_1 = 2.5151;
n_2 = 2.5168;
n_3 = 2.5625;
m_1 = 0.0064;
m_2 = 0.0033;
m_3 = 0.0065;

% Schalter für Initialisierung
init_status = 0;
disp('SCHLAUCHANSCHLUSS PRÜFEN!!!')
wahl = input('Messfahrt starten? [j/n]','s');
disp('Messfahrt wird gestartet')
% Öffne Bildumgebung
figure(1)

if strcmp(wahl, 'j') == 1

    % Fahrt in Startposition
    disp('Sonde wird positioniert.')
    motor(dio,achse,richtung,schritte)
    % von nun an sind Takt- und Richtungspins festgelegt und brauchen nicht
    % erneut initialisiert werden, deshalb
    init_status = 1;
    % Abfrage und Ausgabe aktueller Position
    position_aktuell = messbereich_hor/2;
    disp(position_aktuell)
    
    
    % Messung am Ausgangspunkt
    for i = 1:n_messungen
        % Auslesen der Analogen Inputs 0..2
        av_1(i)= com_arduino.analogRead(0);
        av_2(i)= com_arduino.analogRead(1);
        av_3(i)= com_arduino.analogRead(2);
        % Umwandeln in Spannungswerte
        U_1(i) = 0.5 +  av_1(i)/1024 * 4;
        U_2(i) = 0.5 +  av_2(i)/1024 * 4;
        U_3(i) = 0.5 +  av_3(i)/1024 * 4;
    end
     % Mittelwerte bilden
    U_m_1 = mean(U_1);
    U_m_2 = mean(U_2);
    U_m_3 = mean(U_3);

    % Umrechnung in Drücke (ACHTUNG: SENSORMESSBEREICH ANPASSEN!)
    % Bidirektional
    p_1(1) = (U_m_1 - n_1)/m_1;
    p_2(1) = (U_m_2 - n_2)/m_2;
    p_3(1) = (U_m_3 - n_3)/m_3;
    
    c_1(1) = sqrt((p_1(1)*2) / 1.166);
    c_2(1) = sqrt((p_2(1)*2) / 1.166);
    c_3(1) = sqrt((p_3(1)*2) / 1.166);
    
  

    %% Messfahrt
    for n = 2:(schleifenzahl_hor + 1)
        clc
        % Abfrage aktueller Position
        position_aktuell = position_aktuell - schrittweite_hor;
        % Ausgabe aktueller Position
        disp('aktuelle Position in mm: ')
        disp(position_aktuell)
        % Richtung umkehren
        richtung = 1;
        schritte = 99 * schrittweite_hor;
        motor(dio,achse,richtung,schritte)
        pause(0.1)
        % Messung an Position
        for i = 1:n_messungen
            % Auslesen der Analogen Inputs 0..2
            av_1(i)= com_arduino.analogRead(0);
            av_2(i)= com_arduino.analogRead(1);
            av_3(i)= com_arduino.analogRead(2);
            % Umwandeln in Spannungswerte
            U_1(i) = 0.5 +  av_1(i)/1024 * 4;
            U_2(i) = 0.5 +  av_2(i)/1024 * 4;
            U_3(i) = 0.5 +  av_3(i)/1024 * 4;
        end
        % Mittelwerte bilden
        U_m_1 = mean(U_1);
        U_m_2 = mean(U_2);
        U_m_3 = mean(U_3);

        % Umrechnung in Drücke (ACHTUNG: SENSORMESSBEREICH ANPASSEN!)
        % Bidirektional
        p_1(n) = (U_m_1 - n_1)/m_1;
        p_2(n) = (U_m_2 - n_2)/m_2;
        p_3(n) = (U_m_3 - n_3)/m_3;
        
        % Berechungen vn geschwindigkeiten in m/s
        c_1(n) = sqrt((p_1(n)*2) / 1.166);
        c_2(n) = sqrt((p_2(n)*2) / 1.166);
        c_3(n) = sqrt((p_3(n)*2) / 1.166);
      
        c_00 = max(c_1(n));
        
        
      
        
%        KORREKTUR AUS DATENSHEET DES LBA-SENSORS FEHLT NOCH!!! ->
%        WERTE WERDEN GRÖSSER
         plot((- messbereich_hor/2):schrittweite_hor:messbereich_hor/2, p_1(1,1:(schleifenzahl_hor + 1)),'r+-',...
             (- messbereich_hor/2):schrittweite_hor:messbereich_hor/2, p_2(1,1:(schleifenzahl_hor + 1)),'b+',...
             (- messbereich_hor/2):schrittweite_hor:messbereich_hor/2, p_3(1,1:(schleifenzahl_hor + 1)),'c+')
        figure(1)
%       plot((- messbereich_hor/2):schrittweite_hor:messbereich_hor/2, p_1(1,1:(schleifenzahl_hor + 1)),'r+')
        xlabel('Position in mm')
        ylabel('Druck in Pa')
        legend('Bohrung 1','Bohrung 2','Bohrung 3');
        title('Abhängigkeit des Druckes von Sondenposition')
        grid
    end
    
        % Auflistung der referenzwinkel mit zugehörigem k_beta
        % Winkel in °
        y = [ -45, -40, -35, -30, -25, -20, -15, -10, -5, 0, 5, 10, 15, 20, 25, 30, 35, 40, 45 ];
        % k_Beta werte
        x = [ -8.759885, -4.565699, -3.189440, -2.314166, -1.785086, -1.338563, -0.955932, -0.656995, -0.318598, -0.109065, 0.245000, 0.465059, 0.777020, 1.057678, 1.477132, 1.900404, 2.727838, 4.334465, 8.071797 ];        
        
        % Berechnung von k_Beta
        % Mittelwert zwischen linker und rechter Bohrung
        p_m = (p_2 + p_3) ./ 2;
        % Berechnung des Direction coefficient nach Treaster A.L., Yocum A.M.: The Calibration and Application of Five-Hole Probes. ISA Transactions, Vol. 18, No. 3, pp. 23 – 34 (1979)
        k_beta = (p_2-p_3)./(p_1 - p_m);
        % Interpolation aus vorhandem k_beta
        yi = interp1(x,y,k_beta);
        % Korrigierte Geschwindigkeit im m/s
        c_k = c_1 .* cos(yi.*pi./180);
                
    for i = 1:length(c_k)-1
        % Berechnungen der Durchscnittsgeschwindigkeiten in den einzelnen
        % Kontrollvolumen in m/s
        c_m(i) = (c_k(i) + c_k(i+1))/2;
    
    end  
        
        % Einzelvolumenströme = Schrittweite * l * c_1(n)
        V_einzel = (schrittweite_hor/1000) .* 0.05 .* c_m;
    
        % Gesamtvolumenstrom in m³/s
        V_ges = sum(V_einzel);
        
        % KV-Volumen Austrittsfläche in m²
        A_2 = (messbereich_hor/1000) * 0.05;
        
        % mittlere Geschwindigkeit im Nachlauf in m/s
        c_m_2 = V_ges / A_2;
    
    % KV-Austrittslänge ist gleich messbereich_hor ====> daraus
    % Eintrittslänge berechnen in m
    l_1 = (messbereich_hor/1000) * c_m_2 / c_00;
    
    % KV-Eintrittsfläche in m²
    A_1 = l_1 * 0.05;
    
    % Cw-Wert berechen
    
    % Wiederstandskraft in N
    F_w = rho_luft * ( A_1 * c_00^2 - A_2 * c_m_2^2);
    % Widerstandsbeiwert
    c_w = ( 2* F_w ) / ( rho_luft * c_00^2 * 0.05 * 0.01);
    
    
    
    
    %% Fahrt zur Ausgangsposition
    % Richtung vorgeben
    richtung = 0;
    % Schrittzahl errechnen
    schritte = 99 * (messbereich_hor / 2);
    disp('Sonde fährt in Ausgangsposition.')
    motor(dio,achse, richtung, schritte)
    disp('Messung erfolgreich durchgeführt.')

    % Matrix der Drücke erstellen
    %p = [p_1; p_2; p_3];
    
    %% Speichern
    % Speichern der Ergebnisse als *.mat-File
    %assignin('base','p', p)
    assignin('base','messbereich_hor',messbereich_hor)
    assignin('base','schrittweite_hor',schrittweite_hor)
    assignin('base','c_1',c_1)
    %assignin('base','c_2',c_2)
    %assignin('base','c_3',c_3)
    assignin('base','k_beta',k_beta)
    assignin('base','c_m',c_m)
    assignin('base','c_m_2',c_m_2)
    assignin('base','l_1',l_1)
    assignin('base','F_w',F_w)
    assignin('base','c_w',c_w)
    
elseif strcmp(wahl, 'n')
    disp('Messfahrt wurde abgebrochen')
    delete(dio)
    delete(com_arduino)
    return

else
    disp('Fehler: Ungültige Eingabe')
    disp('Eingabe wiederholen')
end



% Messbereichsvektor erstellen
%messbereich = (- messbereich_hor/2):schrittweite_hor:messbereich_hor/2;
figure(2)
plot((- messbereich_hor/2):schrittweite_hor:messbereich_hor/2, k_beta(1:(schleifenzahl_hor + 1)),'r+')
            xlabel('Winkel in mm')
            ylabel('k_ß')
            title('Abhängigkeit k_ß von Anströmwinkel')
            grid

% Datenexport in *.txt-File
filename = [datestr(now), '.txt'];
filename(strfind(filename,' ')) = '_';
filename(strfind(filename,':')) = '_';
fid = fopen(filename, 'w');
fprintf(fid, '%6s %12s %12s %12s %12s %12s %12s %12s %12s %12s\n', 'p_1', 'p_2', 'p_3', 'c_1', 'c_2', 'c_3', 'p_m', 'k_beta', 'c_k', 'c_m');
fprintf(fid, '%6s %12s %12s %12s %12s %12s %12s %12s %12s %12s\n', 'Pa', 'Pa', 'Pa', 'm/s', 'm/s', 'm/s', 'Pa', '-', 'm/s', 'm/s');
fprintf(fid, '%6.2f %12.4f %12.4f %12.4f %12.4f %12.4f %12.4f %12.4f %12.4f %12.4f\n', [p_1; p_2; p_3; c_1; c_2; c_3; p_m; k_beta; c_k; c_m]);
fprintf(fid, '%6s %.3f\n', 'n_Luefter =', n_Luefter);
fprintf(fid, '%6s %.3f\n', '     c_00 =', c_00);
fprintf(fid, '%6s %.3f\n', '    c_m_2 =', c_m_2);
fprintf(fid, '%6s %.3f\n', '      l_1 =', l_1);
fprintf(fid, '%6s %.3f\n', '      l_2 =', messbereich_hor);
fprintf(fid, '%6s %.3f\n', '      A_1 =', A_1);
fprintf(fid, '%6s %.3f\n', '      A_2 =', A_2);
fprintf(fid, '%6s %.3f\n', '    V_ges =', V_ges);
fprintf(fid, '%6s %.3f\n', ' rho_luft =', rho_luft);
fprintf(fid, '%6s %.3f\n', '      F_w =', F_w);
fprintf(fid, '%6s %.3f\n', '      c_w =', c_w);
fclose(fid);

save dreilochsonde_nachlaufdelle.mat
end
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
04.02.2014, 09:51
Beitrag #4
RE: Benötige ich Wiederstände?
Also deinen Code habe ich jetzt nicht zerpflückt Wink

Sind es diese Sensoren?
LINK

Falls ja: Die Teile liefern dir eine lineare Spannung von 0,5...4.5V.
Natürlich kannst du dir jetzt mit einem Poti einen Spannungsteiler basteln, um die Eingangsspannung leicht zu korrigieren.

Ich bin allerdings eher ein Freund von Softwarelösungen. Dein Sensor sollte dir am Analogeingang Werte im Bereich (ca.) 102...921 liefern. Da du diese eh noch in eine passende Druckeinheit umrechnen musst, kannst du natürlich auch einen Korrekturfaktor einberechnen (musst du laut Datenblatt eh je nach Gas machen).

MfG demo
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
04.02.2014, 10:35
Beitrag #5
RE: Benötige ich Wiederstände?
Genau um diese Sensoren handelt es sich. Ich habe wie gesagt die Sensoren auch schon selber neu Kalibriert aber irgendwie zeigt der erste Sensor 8 Pa überdruck an der zweite zeigt 9 Pa überdruck und der dritte zeigt 16 Pa überdruck....
Für den Korrekturfaktor habe ich 1 beibehalten es ist zwar keine Trockene Luft aber dennoch das nähste was in der Liste zu finden ist.
Deshalb bin ich so langsam am ende mit meinem latein... da ich die Sensoren einfach nicht alle 3 auf den Nullpunkt bekomme -.-
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
04.02.2014, 10:39
Beitrag #6
RE: Benötige ich Wiederstände?
Hast du denn eine lineare Abweichung? Also gleichbleibend über den kompletten Messbereich, oder nur um den Nullpunkt und deine Maximalwerte passen?

MfG demo
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
04.02.2014, 13:50
Beitrag #7
RE: Benötige ich Wiederstände?
Entschuldige die lange Wartezeit ich habe alles noch einmal akribisch durchgetestet. Also alle 3 Sensoren noch einmal bei verschiedenen parametervariationen laufen lassen. raus gekommen ist das der zweite Sensor doch recht gut funktioniert bis auf kleine abweichungen. Auch der Inzwischen 3 sensor funkioniert recht gut hat allerdings auch kleinere abweichungen aber für den Preis darf man doch eigentlich qualität erwarten und keine größeren abweichungen...
Allerdings der eine Sensor macht wirklich probleme mit großen abweichungen meint ihr der könnte Kaputt sein?

Anbei ein Bild von meiner Tabelle.

LG


Angehängte Datei(en) Thumbnail(s)
   
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Timer.h - es will nicht so, wie ich will. Daher benötige ich Hilfe. Gelegenheitsbastler 1 641 13.09.2015 14:32
Letzter Beitrag: Bitklopfer
  Benötige hilfe bei der programmierung des "Arduino Xadow" avoid 0 599 05.04.2015 22:21
Letzter Beitrag: avoid
  Benötige richtigen Sketch für Webserver. purzele 2 1.066 29.11.2014 16:58
Letzter Beitrag: rkuehle

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste