analoge sensor input met relais uitgang

Arduino specifieke Software
Berichten: 161
Geregistreerd: 03 Okt 2015, 13:39

Re: analoge sensor input met relais uitgang

Berichtdoor DeDraak » 03 Okt 2018, 20:42

Hallo Nico,

Komt dit in de buurt??

Code: Alles selecteren
const int relais1 = 3;

unsigned long previousMillis = 0;   // will store last time LED was updated


// constants won't change:
const long interval = 5000;  // interval at which to blink (milliseconds)

void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);
  pinMode(relais1, OUTPUT);
}


void loop() {
  // put your main code here, to run repeatedly:

  unsigned long currentMillis = millis();

  int sensorValue1 = analogRead(A0);

  // Convert the analog reading (which goes from 0 - 1023) to a voltage (0 - 9V):
  float voltage1 = sensorValue1 * (9 / 1023.0);

  if ( voltage1 < 1.80) {
    if (currentMillis - previousMillis >= interval) {
      previousMillis = currentMillis;
      digitalWrite (relais1, HIGH);
    }
  }

  if (currentMillis - previousMillis >= interval) {
    previousMillis = currentMillis;
    digitalWrite (relais1, LOW);
  }

}


Advertisement

Gebruikers-avatar
Berichten: 4895
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: analoge sensor input met relais uitgang

Berichtdoor nicoverduin » 04 Okt 2018, 10:34

Niet helemaal. Ik maak gebruik van een bool die aangeeft of de timer al loopt. Immers als deze al is gestart, dan moet je hem niet opnieuw starten. Als ik jouw specificaties goed begreep was het de bedoeling dat zodra de spanning onder de 1.8V kwam dat het relais gedurende de interval tijd aan gaat.
Dat doet mijn pseudo code. In de tweede stap gaat mijn code kijken of de timer loopt (dus nu vraag je die bool uit). En als hij loopt kijk je of de timer is verlopen. Zo ja dan gaat het relais uit. en wordt de bool op false gezet.
Bij die derde (optionele stap) kijk ik of de spanning weer boven de 1.8V is. Dan zet die het relais uit.

Blijft natuurlijk de vraag wat doe je als de spanning onder de 1.8V langer als het interval duurt. In mijn schakeling wordt hij gelijk weer aangezet. En daar een loop als deze al gauw 10000x of meer per seconde wordt uitgevoerd, wordt het relais direct weer ingeschakeld voor een volgende periode.
Docent HBO Software Engineering, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Berichten: 161
Geregistreerd: 03 Okt 2015, 13:39

Re: analoge sensor input met relais uitgang

Berichtdoor DeDraak » 04 Okt 2018, 20:01

Wellicht is dit beter?

Code: Alles selecteren
onst int relais1 = 3;

unsigned long previousMillis = 0;   // will store last time relais was updated


// constants won't change:
const long interval = 5000;  // interval at which to switch (milliseconds)

void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);
  pinMode(relais1, OUTPUT);
}


void loop() {
  // put your main code here, to run repeatedly:

  unsigned long currentMillis = millis();

  int sensorValue1 = analogRead(A0);

  // Convert the analog reading (which goes from 0 - 1023) to a voltage (0 - 9V):
  float voltage1 = sensorValue1 * (9 / 1023.0);

  if ( voltage1 > 1.80) {
    if (currentMillis - previousMillis >= interval) {
      previousMillis = currentMillis;
      digitalWrite(relais1, HIGH);
    } else {
      digitalWrite(relais1, LOW);
    }
  }
}


Als de spanning boven de 1.80 Volt is dan moet het relais voor 5 seconden hoog gaan. (dit heb ik even aangepast)
Het maakt niet uit dat het relais weer hoog gaat als de spanning boven de 1.80 volt blijft.

Gebruikers-avatar
Berichten: 4895
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: analoge sensor input met relais uitgang

Berichtdoor nicoverduin » 04 Okt 2018, 21:18

Zal aan mij liggen maar hiervoor was het nog onder de 1.8v???? Dus jouw code lijkt absoluut niet op mijn pseudocode.
Docent HBO Software Engineering, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Berichten: 161
Geregistreerd: 03 Okt 2015, 13:39

Re: analoge sensor input met relais uitgang

Berichtdoor DeDraak » 04 Okt 2018, 21:30

Dat klopt maar dat is toch niet een heel groot probleem?
Ik was in de veronderstelling dat de spanning minder werd als de sensor actief was maar die wordt dus meer dan 1.8 volt..

Gebruikers-avatar
Berichten: 4895
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: analoge sensor input met relais uitgang

Berichtdoor nicoverduin » 04 Okt 2018, 22:39

Dus nu gaat hij na 3 seconden naar beneden onder de 1.8v. Wanneer gaat het relais uit?
Docent HBO Software Engineering, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Berichten: 161
Geregistreerd: 03 Okt 2015, 13:39

Re: analoge sensor input met relais uitgang

Berichtdoor DeDraak » 04 Okt 2018, 22:50

Nee wacht even Nico,

Ik zit helemaal vast en heb van alles geprobeerd. Met een Delay krijg ik het aan de praat maar ik wil geen Delay meer omdat ik meerdere zelfde sensoren uiteindelijk tegelijk hetzelfde wil laten gaan doen op verschillende tijden.
Met millis heb ik geen ervaring en met allen de blink without Delay kom ik niet verder.

Als de spanning hoger dan 1.8Volt wordt dan moet mijn relais 5 seconden hoog blijven, daarna moet hij weer laag worden.
Met een Delay krijg ik dit natuurlijk voor elkaar maar ik wil bv een 2e sensor toevoegen die hetzelfde doet, daarom moet die Delay eruit en dat krijg ik niet voor elkaar.

Gebruikers-avatar
Berichten: 4895
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: analoge sensor input met relais uitgang

Berichtdoor nicoverduin » 04 Okt 2018, 23:24

Ik heb jou een voorbeeld gegeven waarin staat wat je moet doen. In pseudo code met de opmerking trek het probleem uit elkaar. Vervolgens maak jij iets anders wat geheel niet meer lijkt op mijn voorstel. Want dat voorstel werkt gewoon. Dus ik zie wel wanneer je dat uitgewerkt hebt.
Docent HBO Software Engineering, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Vorige

Terug naar Arduino software

Wie is er online?

Gebruikers in dit forum: Google [Bot] en 5 gasten