meten van een stroompuls met registratie van tijd

Arduino specifieke Software
Berichten: 2
Geregistreerd: 25 Nov 2021, 11:53

meten van een stroompuls met registratie van tijd

Berichtdoor MSC » 25 Nov 2021, 12:06

Hallo Iedereen ,

ik heb een probleem met het registreren van de tijdsduur bij het meten van een stoompuls ,

ik moet de totale duur van deze pulse en de stroom kunnen meten ,

De stroom is geen probleem maar de tijdsduur van de pulse wel

hieronder de code.

Graag opmerkingen en hoe dit op lossen

Met dank,

MSC

#include <LiquidCrystal_I2C.h>

// voor de LCD sluit de SDA op A4 van de arduino
// de SLC op A5 van de arduino

// VCC en gnd op gekende pennen

// de stroom gemeten via een led met weerstand 5 volt -> 21mA

LiquidCrystal_I2C lcd(0x27,20, 4);//Set the LCD I2C address
int reset =0;
int Ingang = 0;
float Mas =0;
int long Stroom = 0;
unsigned long t1=0;
unsigned long tint=0;
unsigned long tref=0;
unsigned long t2= 0;
unsigned long tnu = 0;
float tijdfinale = 0;
int lus=0;

void setup() {

// put your setup code here, to run once:


pinMode(reset, INPUT);

lcd.init();
lcd.backlight();
lcd.clear();
lcd.setCursor(0,0);
lcd.print( " **** mAS meter **** ");

Serial.begin(9600);

}

void loop()
{
Ingang = analogRead(A0);

Stroom = Ingang/4.65 ; // hier wordt de spanning welke over een opamp werd gemeten en de deling gemaakt zodat de waarde klopt met de meting



if (Stroom >3) / / om drift te vermijden wordt er een offset van 3 genomen alvorens de duur van de pulse te meten
{
t1=millis();
t2=t1-t2;
delay(50); // delay is 50 ms
lus=lus+1;
tijdfinale=(t2*lus); // dit is dan de finale tijd van de pulseduur maar is niet ok

Serial.print("t1 = ");Serial.println(t1);
Serial.print("t2= ");Serial.println(t2);
Serial.print("lus= ");Serial.println(lus);
Serial.print("tijdfinale=");Serial.println(tijdfinale);
//Serial.print ("Stroom = ");Serial.println(Stroom);

Mas = (tijdfinale/1000) * Stroom;

lcd.clear();
lcd.setCursor(0,0);
lcd.print( "**** mAS meter **** ");
lcd.setCursor(0,1);
lcd.print("Tijdfinale=");lcd.print(tijdfinale);lcd.print("mS");
lcd.setCursor(0,2);
lcd.print("stroom=");lcd.print(Stroom);
lcd.setCursor(10,2);
lcd.print("mA");
lcd.setCursor(0,3);
lcd.print("Mas=");lcd.print(Mas);


}

// else (Stroom <3);
{

Advertisement

Berichten: 3728
Geregistreerd: 16 Okt 2013, 14:31
Woonplaats: s hertogenbosch

Re: meten van een stroompuls met registratie van tijd

Berichtdoor shooter » 25 Nov 2021, 21:08

zolang de stroom groter is dan 3 pak je telkens een starttijd, maar als je start dan moet je dus die starttijd in een variabele zetten, en dan kijken hoelang de stroom groter is dus je moet er een vlag bijmaken die bijhoudt dat je gestart bent.
paul deelen
shooter@home.nl

Berichten: 2
Geregistreerd: 25 Nov 2021, 11:53

Re: meten van een stroompuls met registratie van tijd

Berichtdoor MSC » 26 Nov 2021, 13:32

Bedankt voor uw reactie .

Ik ben nog niet zo vertrouwd met het programmeren van de arduino.

Kan u mij verwijzen naar een voorbeeld of de procedure even uitleggen , heb al naar verschillende projecten gekeken maar meestal is het een timer welke geprogrammeerd wordt .

Ik moet de pulstijd kunnen meten zolang de stroom groter is dan 3 in het programma.

Met Dank.

MSC

Berichten: 3728
Geregistreerd: 16 Okt 2013, 14:31
Woonplaats: s hertogenbosch

Re: meten van een stroompuls met registratie van tijd

Berichtdoor shooter » 01 Dec 2021, 16:52

dat bedoel ik dus als de stroom > 3 zet je de tijd die in millis() staat in een variabele en maak een stroomdiagram dan kun je daaruit wel verder en anders kun je hier vragen.
paul deelen
shooter@home.nl

Berichten: 13
Geregistreerd: 04 Sep 2021, 08:31

Re: meten van een stroompuls met registratie van tijd

Berichtdoor RobGood » 02 Dec 2021, 10:28

MSC, De 'stroom' meting en de 'tijd' meting probeer je in 1 cyclus te doen. Dat gaat niet omdat je voor de stroom meting tijd gebruikt, zelfs een delay zit in je sketch. Dus je meting van de puls duur lijkt dan nergens meer naar.
Eenvoudigste manier die ik zie is met een stukje hardware toe te voegen.
Het punt waar je de stroom van meet (ingang?) anode van een diode, cathode van de diode verbinden aan de + ingang van een LM324 opamp en via een 100K weerstand naar massa. - ingang van de opamp via 10K naar massa en via 100K naar de output van de opamp. De output van de opamp wordt nu 5V zodra de spanning over over jouw load meer dan 0.73V wordt. (twee diodes in serie maakt er 1,4V van)
Hier misschien even mee rommelen tot het goed werkt, gebruikt een ledje op de output van de opamp als hulp.
Of een ander schakelingetje, als die kleine spanningsverandering op de 'ingang' maar een 5v triggered.

Deze 'trigger' nu gebruiken als input van een externe interrupt op de arduino.
In de ISR een programmaatje maken die de tijd tussen aan en uitgaan meet. Hiervoor kun je de 'ingebouwde' timers gebruiken millis() en/of micros()
Deze tijd opslaan in een variabele, deze waarde in de variable ergens in de loop, periodiek (gemiddelde???) als het een puls trein is..? Of eenmalig laten uitprinten naar de Serial monitor......
Dat zou moeten werken, voor meer hulp graag wat meer info over wat je nu precies hiermee wilt....
Succes...
Rob

Berichten: 275
Geregistreerd: 15 Apr 2021, 20:05

Re: meten van een stroompuls met registratie van tijd

Berichtdoor ctunes » 03 Dec 2021, 02:04

MSC schreef:Hallo Iedereen ,

ik heb een probleem met het registreren van de tijdsduur bij het meten van een stoompuls


Hallo MSC, laat me je gerust stellen: "Je bent de enige niet!"

Misschien helpt het je om niet meer te denken in stroom en spanning, maar in: "Coulomb per tijdseenheid".

Dat moet je wiskunde een stuk makkelijker maken, zodat je na: "y" Coulumb, per "x" seconde schakelen kan.

Oh! Wacht!

MSC schreef:stoompuls


HM

Dan is weliswaar meer informatie over de detectoren vereist, maar het principe blijft hetzelfde.

Berichten: 275
Geregistreerd: 15 Apr 2021, 20:05

Re: meten van een stroompuls met registratie van tijd

Berichtdoor ctunes » 03 Dec 2021, 02:16

Probeer eens:

Code: Alles selecteren
void loop() {
    while(1) {
        jouw programma in loop();
   }
}


Ik ben heel benieuwd of het dan wel werkt.

Berichten: 275
Geregistreerd: 15 Apr 2021, 20:05

Re: meten van een stroompuls met registratie van tijd

Berichtdoor ctunes » 03 Dec 2021, 02:20

(Je maakt gebruik van de millis() functie, die wordt elke (nieuwe) loop() opnieuw geinitialiseerd.)

Terug naar Arduino software

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 2 gasten