arduino controle navigatie verlichting

Projecten die niet passen in bovenstaande onderwerpen
Berichten: 3
Geregistreerd: 30 Jan 2017, 22:53

arduino controle navigatie verlichting

Berichtdoor cmo » 30 Jan 2017, 23:28

Hallo,

In het verleden heb ik wel eens wat gestoeid met een arduino.
Nu heb ik weer een projectje waar ik de ardunio voor wil gebruiken.

aan boord van een schip zit navigatie verlichting. (bakboord, stuurboord, toplicht, heklicht)
Vanuit de stuurhut zijn deze lampen niet te zien.
Ik wil een controle paneeltje maken die ziet of de lampen branden.

Met behulp van een stroom meet module( ACS712, https://www.hackerstore.nl/PDFs/ACS712.pdf) met ik dan per lamp of er stroom loopt.
als er stroom loopt gaat de bijbehorden uitgang op de arduino op hoog en deze stuurt een LED aan.
als de lamp dus defect gaat gaat de bijhoorden LED ook uit
Tot zover geen probleem.

Nu wil ik graag dat er ook nog een zoemer op komt die lawaai maakt als 1 of meer van de lampen brand
Hier kom ik niet uit.

en als laatste wens zou het ook nog mooi zijn als de lichtsterkte van de LED's te dimmen zou zijn. Hiervan heb ik helemaal al geen iedee hoe dit zou moeten.

Tot dusver heb ik dit er van gemaakt.

/*
nav licht controle
*/

// 1
const int analogPin1 = A0; // stroomsensor1
const int ledPin1 = 13; // led 1
const int threshold1 = 513; // 0 punt sensor
// 2
const int analogPin2 = A1; // stroomsensor2
const int ledPin2 = 12; // led 2
const int threshold2 = 513; // 0 punt sensor

void setup() {
// initialize the LED pin as an output:
pinMode(ledPin1, OUTPUT);
pinMode(12, OUTPUT);
pinMode(8, OUTPUT);

}

void loop() {
// lees ingang 1
int analogValue1 = analogRead(analogPin1);


// als ingang 1 hoog is uitgang ook hoog
if (analogValue1 > threshold1) {
digitalWrite(ledPin1, HIGH);
} else {
digitalWrite(ledPin1, LOW);

}


// 2
// lees ingang 2
int analogValue2 = analogRead(analogPin2);

// als ingang 2 hoog is uitgang ook hoog
if (analogValue2 > threshold2) {
digitalWrite(12, HIGH);

}


}

Advertisement

Gebruikers-avatar
Berichten: 2655
Geregistreerd: 06 Aug 2016, 01:03

Re: arduino controle navigatie verlichting

Berichtdoor Koepel » 31 Jan 2017, 01:59

Die ACS712 is nogal gevoelig voor magnetisme van bijvoorbeeld draden die in de buurt lopen. Verwacht niet dat je nauwkeurig de stroom kunt meten, je krijgt een indicatie die flink kan afwijken.

Ik maak graag code die met echte eenheden werkt (kg, meters, ampère, volt, luchtdruk in kPa), dat maakt de sketch gemakkelijker te lezen.

Om te beginnen zou ik de waarde van analogRead() omzetten naar een voltage (de spanning die op de analog pin staat) en dat omzetten naar een stroom. Vervolgens is het handig om de offset per ACS712 te berekenen. Dus voor elk apart de spanning bepalen waarbij er geen stroom loopt.

Daarna kun je een threshold instellen voor de stroom. Bijvoorbeeld float threshold1 = 1.5; voor 1.5 ampère.
Je zou een stel boolean variabele kunnen gebruiken om te kijken of er eentje boven de threshold zit.

Code: Alles selecteren
  boolean bakboordActive = false;
  boolean stuurboordActive = false;

  if( current1 > threshold1)
  {
    bakboordActive = true;
  }

  if( current2 > threshold2)
  {
    stuurdboordActive = true;
  }

  if( bakboordActive || stuurboordActive || toplichtActive || heklichtActive)
  {
    zoemer();
  }


Als je dit begrijpt, dan kun je de vier kanalen (de pin nummers, de offset) in een tabel zetten en een functie maken, die de stroom in ampère terug geeft.

Berichten: 3
Geregistreerd: 30 Jan 2017, 22:53

Re: arduino controle navigatie verlichting

Berichtdoor cmo » 31 Jan 2017, 10:31

Bedankt voor je reactie.

Ik ga er eens mee aan het stoeien. Het lijkt me welk ingewikkeld maar als ik er mee aan de gang ga valt het hopelijk wel mee.

Nauwkeurig hoef ik ook geen stroom te meten. Het gaat er om loopt er stroom of geen stroom.
stroomsterkte varieert van 0,5 tot 1 amp ( bij 24 volt)

Gebruikers-avatar
Berichten: 2655
Geregistreerd: 06 Aug 2016, 01:03

Re: arduino controle navigatie verlichting

Berichtdoor Koepel » 31 Jan 2017, 10:50

Het mag natuurlijk ook zonder die 'boolean' variabelen.
De '||' betekenen 'OR' in de taal 'c'. Dus zodra de ene of de andere waar is, dan wordt "zoemer()" uitgevoerd.
Code: Alles selecteren
if ( current1 > threshold1 || current2 > threshold2 || current3 > threshold3 || current4 > threshold4)
{
  zoemer();
}


Het gaat er om loopt er stroom of geen stroom
Duh! Dan is het veel handiger om de stroom te meten in ampère, anders gaat het nergens over ;)

Dit vind ik code die meteen de prullenbak in kan. Er staan zomaar wat willekeurige getallen in. Wanneer je er een jaar later naar kijkt, dan is het erg lastig om na te gaan of die getallen juist zijn.
Code: Alles selecteren
  int adc = analogRead( A0 );
  int x = analogRead ( A1 );
  if ( adc > 540 && (x / 2 + 4 ) < 10 )
  {
    do_iets();
  }


Dit is te begrijpen:
Code: Alles selecteren
  float current1 = getCurrent ( A0 );  // get current of toplicht in ampere.
  int daylight = getDayLight();  // get daylight in percentage
  if ( current1 > 0.2 && daylight < 20 )   // is it dark and light is on ?
  {
    Indicator ( 1, true );
  }


Tot hoever kan jouw module stroom meten ? Hou rekening met een grote onnauwkeurigheid van de ACS712. Als je wilt meten of er geen stroom loopt of 0.5 ampère, dan zou een module van 5 ampère kunnen, maar met een module die 30 ampère kan meten moet je gaan opletten dat er geen draden langs die module lopen, en misschien is het nodig om het in een metalen kastje te plaatsen om af te schermen.

Berichten: 3
Geregistreerd: 30 Jan 2017, 22:53

Re: arduino controle navigatie verlichting

Berichtdoor cmo » 31 Jan 2017, 13:15

Ik ga er vanavond eens mee aan het stoeien.
Ik wist niet dat de acs712 zo onnauwkeurig zou zijn.
bedankt in iedergeval

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

Re: arduino controle navigatie verlichting

Berichtdoor shooter » 31 Jan 2017, 21:50

koepel heeft een goede voorzet gegeven. en hij heeft gelijk maak het vooral niet te precies.
leds dimmen kan heel goed op de PWM uitgangen. vooral snachts is dat slim (dimmen kan met een simpele LDR als sensor), je kunt ze zelfs laten knipperen als er een lamp kapot is. en dan ook de zoemer natuurlijk, gewoon een piepertje onder in het kastje. maar die zou ik alleen aanzetten als er een lamp kapot is.

omdatje nog veel ingangen overhebt, zou ik ook voor elke lamp kijken of deze aan moet zijn, dus met een paar weerstanden een spanningsdeler maken om te zien of de schakelaar aanstaat.
Op zeeschepen zit trouwens ook zo een paneel, maar de oude werkt met 2 of 3(bij dubelle lamp) relais.
paul deelen
shooter@home.nl

Terug naar Overige projecten

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 14 gasten