Vraag over welke hardware te gebruiken in project

Projecten die niet passen in bovenstaande onderwerpen
Berichten: 17
Geregistreerd: 25 Jan 2017, 01:03

Re: Vraag over welke hardware te gebruiken in project

Berichtdoor maikvdb » 25 Jan 2017, 21:51

Daar was ik al wel bang voor...

Een collega kwam net een ander idee...
Een Ultrasonic module. https://benselectronics.nl/hc-sr04-ultrasonic-module/

1. Deze heeft het juiste bereik (2 - 500cm)
2. 5V dus geen extra hardware nodig om te laten werken
3. maximale afwijking van 0,3cm dus zeer gerichte straal

Gezien mijn ervaring lijkt mij dit een betere oplossing.

Advertisement

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

Re: Vraag over welke hardware te gebruiken in project

Berichtdoor nicoverduin » 25 Jan 2017, 21:54

Gezien het soort omstandigheden met die karters ben ik het volledig met koepel eens. Of gaat voor penny wise pound foolish
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Berichten: 17
Geregistreerd: 25 Jan 2017, 01:03

Re: Vraag over welke hardware te gebruiken in project

Berichtdoor maikvdb » 25 Jan 2017, 22:04

Het gaat mij niet om het bedrag voor het complete systeem. Echter is dit voor een test om te kijken of we het systeem willen gaan gebruiken bij wedstrijden.

De sensor wordt dan zo geplaatst dat deze laag bij de grond (dus de kart ziet en niet de persoon) zit en geplaatst in een sluis waar alleen de karts door rijden.

Mocht het systeem bevallen dan kan ik altijd nog kijken om deze te upgraden met een betere sensor.

Ik denk dat ik het dus eerst ga proberen met de ultrasonic sensor en een aantal LED's.

Allemaal bedankt voor de informatie!

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

Re: Vraag over welke hardware te gebruiken in project

Berichtdoor shooter » 26 Jan 2017, 13:50

Vind ik eigenlijk een heel goed idee, en je kunt best een stukje folie voor de sensor plakken voor bescherming.
paul deelen
shooter@home.nl

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

Re: Vraag over welke hardware te gebruiken in project

Berichtdoor nicoverduin » 26 Jan 2017, 18:09

shooter schreef:Vind ik eigenlijk een heel goed idee, en je kunt best een stukje folie voor de sensor plakken voor bescherming.

Amateurs..... komt in ieder geval professioneel over.....
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Berichten: 17
Geregistreerd: 25 Jan 2017, 01:03

Re: Vraag over welke hardware te gebruiken in project

Berichtdoor maikvdb » 17 Feb 2017, 22:31

Hallo allemaal,

Inmiddels heb ik het systeem (bijna) werkend gekregen met de hc-sr04 sonic sensor.

Doormiddel van het bepalen van een vaste afstand wanneer er niets in de lijn van de sensor staat en wanneer deze afstand kleiner wordt (beweging in de sensor lijn) begint de tijd te lopen en gaat een blauwe led branden. Als de vooraf ingestelde 4 seconden voorbij zijn gaat de blauwe led uit en gaat de gele led aan.

Wat ik nu alleen niet voor elkaar krijg is dat wanneer de de tijd dat de sensor wordt onderbroken korter is dan de 4 seconden (kart rijdt te vroeg weg) dat dan de rode led aan gaat.
Ik loop steeds tegen het zelfde probleem aan dat de tijd altijd korter is dan de 4 seconden tenzij de 4 seconden zijn verstreken.

Het systeem zoals het nu is werkt en kan ik gebruiken maar zou graag de toevoeging hebben van de rode led.

Het systeem is nu alsvolgt:
- Sensor vrij: Rode led aan
- Kart rijdt in sensor: Rode en blauwe led aan, tijd begint te tellen
- 4 seconden verstreken: rode en blauwe led uit, gele led aan
- minder dan 4 seconden verstreken: blauwe led uit, rode blijft aan.

Wat ik dus wil is dat wanneer de kart in de sensor staat alleen de blauwe led aan is en de rode pas aan gaat wanneer de tijd in de sensor korter is geweest dan 4 seconden.
Iemand een oplossing hiervoor?

De code die ik nu heb is alsvolgt:
Code: Alles selecteren
// defines pins numbers
const int trigPin = 12;
const int echoPin = 13;
const int ledPinB = 8;
const int ledPinY = 9;
const int ledPinR = 10;

// defines variables
long duration;
int distance;
int safetyDistance;
int normalDistance = 60;
long startTime = 0;
long endTime;
long Time;


void setup() {
pinMode(trigPin, OUTPUT); // Sets the trigPin as an Output
pinMode(echoPin, INPUT); // Sets the echoPin as an Input
pinMode(ledPinB, OUTPUT);
pinMode(ledPinY, OUTPUT);
pinMode(ledPinR, OUTPUT);
Serial.begin(9600); // Starts the serial communication




}

void loop() {
// Clears the trigPin
digitalWrite(trigPin, LOW);
delayMicroseconds(2);

// Sets the trigPin on HIGH state for 10 micro seconds
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
   digitalWrite(ledPinB, LOW);
      digitalWrite(ledPinY, LOW);
         digitalWrite(ledPinR, LOW);

// Reads the echoPin, returns the sound wave travel time in microseconds
duration = pulseIn(echoPin, HIGH);
// Calculating the standard distance
distance = duration*0.034/2;


if (distance < normalDistance ){
   digitalWrite(ledPinB, HIGH);
   digitalWrite(ledPinR, LOW);
  startTime = millis();

}
if (distance > normalDistance ){
   digitalWrite(ledPinB, LOW);
   endTime = millis();

}
else{
Time = startTime - endTime;
}
if (Time >= 4000){
  digitalWrite(ledPinB, LOW);
digitalWrite(ledPinY, HIGH);
delay(2000);
digitalWrite(ledPinY, LOW);
Time = 0;
}
else if (Time < startTime){
  digitalWrite(ledPinR, HIGH);
}
else{
  digitalWrite(ledPinR, LOW);
}



// Prints the distance on the Serial Monitor
Serial.print("Time: ");
Serial.println(Time/1000);
}


Groet, Maik

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

Re: Vraag over welke hardware te gebruiken in project

Berichtdoor Koepel » 18 Feb 2017, 01:34

maikvdb schreef:Inmiddels heb ik het systeem (bijna) werkend gekregen met de hc-sr04 sonic sensor.

Niet schrikken, maar je code zit niet op 90%, maar eerder op 30%. Dat wordt even door de taaie hap heen bijten om er iets moois van te maken :shock:

1 ) De drie variabelen die met millis() te maken hebben graag "unsigned long" maken. Dat hoort nu eenmaal zo. Door alle berekeningen met millis() met "unsigned long" te doen zijn de berekeningen altijd geldig.
2 ) Zou je de code voor de ultrasonic sensor bij elkaar willen houden, en daar niet andere code tussendoor zetten. De leds wijzigen kan daar voor of daar na.
3 ) Je kijkt of de afstand klein is om de timer te starten. Maar je wilt het moment weten dat de afstand begon met klein te zijn. Dat is de StateChangeDetection : https://www.arduino.cc/en/Tutorial/StateChangeDetection. Daar is een extra variabele voor nodig.
4 ) Hoe vaak wil je de ultrasound sensor laten meten ? Dat ligt nu niet vast, de loop() draait zomaar op zichzelf.
5 ) Weet je zeker dat je de leds goed beschreven hebt ? Dus zodra de 4 seconden zijn vertreken is alleen de gele led aan, en als daarna de kart weg rijdt, dan gaat het systeem naar rust-stand en is de rode led aan. Of wil je daar tussen nog een vertraging ?
6 ) Leds uit en aan en digitalWrite met HIGH en LOW... die code is niet zo goed te lezen. Kun je een functie maken voor de leds ?

Je kunt een variabele 'state' gebruiken om de overgang te kunnen detecteren wanneer een kart gearriveerd is.
Je kunt ook de complete sketch laten sturen door een variabele 'state'. Hier zie je daar een voorbeeld van: http://arduinoforum.nl/viewtopic.php?f=8&t=2371&start=30#p18004. Het voordeel van zo'n 'state machine' is dat als er ergens iets fout gaat, dat je dan alleen bij die bepaalde state hoeft te gaan zoeken in de code. Vanwege die 'state' hoef je niet nog weer een extra variabele te gebruiken om een overgang te detecteren en ook geen aparte variabele die aangeeft dat een software timer (met millis) aktief is.

Berichten: 17
Geregistreerd: 25 Jan 2017, 01:03

Re: Vraag over welke hardware te gebruiken in project

Berichtdoor maikvdb » 18 Feb 2017, 19:15

Hoi Koepel,

Bedankt voor je toevoegingen :)

Met bijna werkend bedoelde ik dat het doet wat ik graag wil dat het doet, de code ging ik al wel vanuit dat het niet moeders mooiste zou zijn ;)

1 & 2 ) Ga ik veranderen.
3 ) Kan ik hier dan ook mee bepalen dat de tijd in de sensor minder dan 4 seconden is geweest en dus de rode led aan moet gaan?
4 ) Ik begrijp niet precies wat je bedoelt. Bedoel je hoe vaak er een kart door de sensor komt?
5 ) Die vertraging die er tussen zit delay(2000) heb ik er tussen gezet zodat de gele led 2 seconden aan blijft en dus goed zichtbaar is voor de persoon die staat te controleren of de stop correct was.
De rode led zou eigenlijk alleen aan moeten gaan wanneer de tijd in de sensor minder dan 4 seconden is geweest. Deze is nu altijd aan omdat de tijd in ruststand minder is dan 4 seconden.
6 ) Ik zal eens kijken hoe ik het overzichtelijker kan maken.

Het stukje over de variabele state klinkt wel heel logisch. Hier ga ik nog even wat mee stoeien.

Bedankt voor het meedenken!

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

Re: Vraag over welke hardware te gebruiken in project

Berichtdoor Koepel » 18 Feb 2017, 20:13

Misschien is het nodig dat die twee seconden voor de gele led later ook met millis() gaat. Of je neemt dat meteen mee in een state machine ;)

4 ) Punt vier gaat alleen om de sensor. Hoe vaak per seconde wil je meten met de sensor ? Wil je dat 1000 keer seconde doen, of eens per seconde ? Nu laat je de loop() maar gewoon lekker draaien maar je weet niet hoe vaak dat is.
Dat geeft trouwens helemaal niets, maar ik bepaal liever zelf hoe vaak je naar de sensor kijkt.

3 ) Ja. Want alles draait om het moment dat een kart binnen de sensor rijdt.
Kijk eens naar dat voorbeeld met die drukknop (StateChangeDetection). Daar gaat het om het moment dat de drukknop begint met ingedrukt te worden. Dat is dus een verandering van de drukknop. Aangezien Arduino de loop() functie heeft die steeds opnieuw wordt uitgevoerd, heb je al snel zo'n detectie van een verandering nodig.

Dat voorbeeld is trouwens niet helemaal duidelijk.
Het gaat om een variabele die de vorige state onthoudt, en als de nieuwe state anders is, dan is er dus iets gewijzigd. Dat is alles.

Een "state machine" is een stap verder. Dat is wanneer je hele sketch door een variabele wordt bestuurd. Die variabele heet vaak 'state'.
Code: Alles selecteren

int state = IDLE;

void setup()
{
  staat er een kart ? zo ja, dan state = CART, alleen blauwe led, start timer1
  geen kart ? dan state = IDLE, aleen rode led
}

void loop()
{
  Haal alle gegevens op. Sensoren, drukknoppen en de rest.

  switch ( state )
  {
  case IDLE:
    // state IDLE is wanneer er (nog) geen kart is.
    kart gedetecteerd ? dan state = CART, alleen blauwe led, start timer1
    break;
  case CART:
    timer1 afgelopen ? dan state = IDLE, alleen rode led
    cart weg binnen de tijd: state = YELLOW, alleen gele led, start timer2
    break;
  case YELLOW:
    timer2 afgelopen ? dan state = IDLE, alleen rode led
    break;
  }
}


Wanneer de timer1 is afgelopen, en je wilt nog iets anders doen voordat je naar 'IDLE' terug gaat, dan is het eenvoudig om er een extra state bij te maken.

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

Re: Vraag over welke hardware te gebruiken in project

Berichtdoor shooter » 18 Feb 2017, 21:02

je hebt een denkfout met time en starttime, Time is de tijd tussen starten endtime, dus een paar seconden maar starttime is millis() en loopt dus erg op
verder heeft koepel gelijk met zijn unsigned, want er bestaan geen negatieve tijden.
een beetje commentaar zou ook prima zijn, net als structuur want dat is voor ons makkelijker te lezen.
verder prima opgelost, gebruik functies , en denk eraan dat bij pulsein en delay het programma stopt.
paul deelen
shooter@home.nl

VorigeVolgende

Terug naar Overige projecten

Wie is er online?

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