Laserwaterpas ontvanger

Met gesmoorde ventielen ga je tegen een temperatuursprobleem aanlopen .

Heb je een tweede probleem, bij een grotere afwijking van uw niveau zal je sneller dienen bij te regelen . Zeg maar als er twee pijltjes tegelijkertijd branden .
Bij één pijltje dient het traag te verstellen, anders ga je voorbij uw niveaupunt eindigen door de traagheid van de kilver . Als de kilver met wielen is uitgerust, staan die altijd een eindje achter het mes ( halve meter of meer ) , en die volgen altijd iets later . Je hebt er ook met een sleepplaat, die ligt onmiddellijk achter het mes .

Waar de wielen staan maakt weinig verschil, meting moet ter hoogte van het mes zitten, dan is het mes altijd juist.
Een 3/2 ventiel met 1 leiding naar debietregelaar en 1 leiding rechtstreeks op de cilinders werkt mooi. En op de cilinders een drukgestuurde terugslagklep om negatieve belasting op te vangen zodat de snelheid altijd hetzelfde is.

Zo werken we hier met een kilverbord van 3m. De dode band van de ontvangers (links en rechts apart) kan ingesteld worden (0,2/0,5/1/2/3 of 5cm) en ook de snelheid van de cilinders. Ook is het mogelijk om de cilinders (1 of beide) onafhankelijk van de ontvangers te regelen vanuit de cabine, iets wat vaak gebruikt wordt bij het aanleggen taluds of glooiingen.

De sturing hebben we zelf aangepast naar onze noden.

Lambiek

Special Member

Op 30 augustus 2020 11:50:40 schreef BartL:
Vwb die fotodiodes, welke zouden jullie aanraden i.c.m.een Arduino? Ik kom namelijk diverse soorten tegen en heb geen idee welke ik hieruit moet selecteren.

Je zou bijv. de CNY70 kunnen gebruiken. Dat is een reflectie sensor, maar als je daar alleen de transistor van gebruikt moet het kunnen.

https://www.google.com/search?q=%60CNY70&rlz=1C1GCEA_enNL885NL885&…

Als je haar maar goed zit, GROETEN LAMBIEK.

Ok. Dan zal ik er daar eens wat van bestellen en kijken of ik het aan de praat kan krijgen met een arduino. Waarschijnlijk komen er nog wel wat vragen mbt het schrijven van het programma ;)

hennep

Golden Member

Dit lees ik in de datasheet op een website die "more info" toont:

The CNY70 is a reflective sensor that includes an infrared emitter and phototransistor in a leaded package which blocks visible light.

De fototransistor in de CNY70 is dus optimaal voor infraroodlicht maar minder goed voor de rode led-kleur door het daglichtfilter.

Lambiek

Special Member

Op 30 augustus 2020 19:03:40 schreef hennep:
De fototransistor in de CNY70 is dus optimaal voor infraroodlicht maar minder goed voor de rode led-kleur door het daglichtfilter.

Ik heb de CNY70 ook wel gebruikt om een kWu meter uit te lezen, dat ging ook goed. Dus waarom zou dit niet gaan.

Als je haar maar goed zit, GROETEN LAMBIEK.
hennep

Golden Member

Je gebruikt hem dan niet binnen de specificaties, maar als het werkt...
Ik had uit jouw verhaal niet afgeleid dat je de cny70 al voor daglicht had gebruikt.

Is er dan misschien een betere optie die wel binnen de specs blijft? Ik ben nu nog vrij om te kiezen.

Vwb het signaal van deze diode. Aangezien er altijd een waarde terug komt vanaf de diode maar deze kan variëren in hoogte afhankelijk van de hoeveelheid licht wat erop valt moet ik zeker de analoge input pinnen gebruiken op de Arduino? Of begrijp ik de werking van zo'n fotodiode nu niet goed?

Het is een fototransistor, geen fotodiode (die bestaan ook, maar werken anders), maar je hebt zeker gelijk dat er in principe een analoog signaal uit komt. Echter, als je deze met een pull-down weerstand (ik zou met 47k beginnen) tegen de behuizing monteert, recht voor de LED, en het verder afschermt tegen omgevingslicht, verwacht ik dat je vrijwel 0V krijgt met de LED uit, en ruimschoots voldoende spanning voor een digitaal hoog niveau met de LED aan.

Ik zou inderdaad ook een fototransistor gebruiken zonder zo'n IR filter; de keuze is een beetje afhankelijk van waar je je onderdelen kunt bestellen. Heb je een account bij Farnell, of wil je het liever bij Conrad of zo halen?

Wat afscherming betreft: zelf zou ik Polymorph gebruiken, met zwarte kleurstof, in ieder geval voor de eerste test, en misschien wel permanent. Dat is kunststof die je zelf in vorm kunt kneden als je het in heet water legt.

Een manager is iemand die denkt dat negen vrouwen in één maand een kind kunnen maken
hennep

Golden Member

Farnell heeft een pagina waar je de gewenste golflengte kunt invoeren.
https://nl.farnell.com/w/c/optoelectronics-displays/photo-diodes/prl/r…
of
https://nl.farnell.com/w/c/optoelectronics-displays/phototransistors/p…

Ik zou gaan voor een daglicht type als er meerdere kleuren leds op zitten.

Op 31 augustus 2020 10:07:00 schreef SparkyGSX:
Heb je een account bij Farnell, of wil je het liever bij Conrad of zo halen?

Het makkelijkste is bij Conrad voor mij omdat ik daar al een account heb. Maar de transistors van hennep kan ik daar dan weer niet vinden.

hennep

Golden Member

Hennep maakt geen fototransistoren :-)

Conrad heeft wel een daglichtsensor:
https://www.conrad.nl/p/omgevingslichtsensor-kps-3227sp1c-kingbright-k…

EDIT, dat de golflengte van dit ding 580nm is en er van een sensor voor omgevingslicht wordt gesproken vind ik dan wel weer raar.
580nm zit tegen het rood aan.

Op 31 augustus 2020 13:19:56 schreef hennep:
Hennep maakt geen fototransistoren :-)

Niet? Jammer hoor :P

Zou zoiets niet goed genoeg zijn?
https://www.conrad.nl/p/everlight-opto-pt331cpt333-3c-fototransistor-5…
Makkelijk in te bouwen, en qua golflengte volgens mij prima voor wat ik ermee wil.

hennep

Golden Member

Ik had deze over het hoofd gezien omdat alleen 1100nm in de titel stond.
Rood licht zit bij dit exemplaar binnen het spectrum, tussen 400 en 1100nm. Afhankelijk van de toegepaste rode leds ergens in de buurt van 620nm.

PS.
Als je ook nog een PID regelaar wilt toepassen. Ik kwam deze tegen. Ik heb de code nog niet geprobeerd maar het zou wel eens een goede manier zijn om te schielijk regelgedrag te voorkomen.
https://gist.github.com/ivanseidel/b1693a3be7bb38ff3b63

Een (PID) regeling is TERING moeilijk als je error signaal maar 5 mogelijke niveaus heeft. Ik vermoed dat er een meer "analoog" signaal beschikbaar is via de canbus.

four NANDS do make a NOR . Kijk ook eens in onze shop: http://www.bitwizard.nl/shop/
Lambiek

Special Member

Op 30 augustus 2020 22:01:42 schreef hennep:
Je gebruikt hem dan niet binnen de specificaties, maar als het werkt...
Ik had uit jouw verhaal niet afgeleid dat je de cny70 al voor daglicht had gebruikt.

Als er geen daglicht bij komt, is er niets aan de hand.

Op 31 augustus 2020 09:44:07 schreef BartL:
Is er dan misschien een betere optie die wel binnen de specs blijft? Ik ben nu nog vrij om te kiezen.

Je kan ook een ander type gebruiken als je dat wil. :)

Deze bijv.

https://www.conrad.nl/p/osram-sfh-305-23-fototransistor-speciaal-1100-…

@TS,
Dus als je een behuizing print, zorg dat het echt licht dicht is.

Als je haar maar goed zit, GROETEN LAMBIEK.

Op 31 augustus 2020 16:53:55 schreef Lambiek:
Je kan ook een ander type gebruiken als je dat wil. :)

Ik heb inmiddels deze besteld.
https://www.conrad.nl/p/everlight-opto-pt331cpt333-3c-fototransistor-5…

@TS,
Dus als je een behuizing print, zorg dat het echt licht dicht is.

Dat zou geen probleem moeten zijn.

Dan nog even een programmeer vraagje. Hieronder een stukje van mijn programmaatje:

if (digitalRead(Far_up) == HIGH) {
digitalWrite(LED_Far_up, HIGH);
} else {
digitalWrite(LED_Far_up, HIGH);
}

Hierin zeg ik dus simpelweg dat de output hoog moet zijn als de input hoog is. Echter zoals eerder besproken knipperen de lampjes op de ontvanger (ca. 4x per sec.) waardoor de output dus ook zal pulsen. Hoe krijg ik dit eruit geschreven?

Lambiek

Special Member

Op 31 augustus 2020 19:48:07 schreef BartL:
Dan nog even een programmeer vraagje. Hieronder een stukje van mijn programmaatje:

Daar kan ik je niet bij helpen, ik gebruik geen Arduino.

Zelf gebruik ik pic controllers en pic basic.

Op 31 augustus 2020 19:48:07 schreef BartL:
Echter zoals eerder besproken knipperen de lampjes op de ontvanger (ca. 4x per sec.) waardoor de output dus ook zal pulsen. Hoe krijg ik dit eruit geschreven?

Als je een pulsje binnen krijgt kun je naar een loop springen waar je de uitgang hoog maakt, als het ledje van de nullijn dan gaat knipperen maak je de uitgang laag en stap je uit de loop.

Als je haar maar goed zit, GROETEN LAMBIEK.
Lambiek

Special Member

Foutje.

[Bericht gewijzigd door Lambiek op 31 augustus 2020 21:21:24 (97%)]

Als je haar maar goed zit, GROETEN LAMBIEK.

Op 31 augustus 2020 23:26:12 schreef Lead Acid:
Met een interrupt .

Hier had ik idd ook iets over gevonden maar het is me niet helemaal duidelijk hoe ik deze dan moet toepassen. Zou je hier een voorbeeldje van kunnen geven?

Hangt dat toestelletje buiten de kabine? want dat wordt terug werken met een kabeltje.

Een goede raad, test eerst uw componenten zonder al teveel programmeren want als een of ander niet compatibel is, zoals de fototransistors/ledlicht/omgevingslicht dan zul je er gauw de brui aan geven.

LDmicro user.

Op 31 augustus 2020 23:26:12 schreef Lead Acid:
Met een interrupt .

Nergens voor nodig, dat knipperen gaat zo langzaam dat je prima kunnen pollen (herhaaldelijk de ingang lezen in een main loop).

Maar dat knipperen geeft wel weer extra uitdagingen; als alle LEDs uit zijn, weet je niet wat de status is, en kun je alleen aannemen dat die niet is veranderd. Dat, in combinatie met maar 5 niveau's, maakt een regeling lastig; je kunt hooguit de hoogte corrigeren met 2 snelheden in elke richting, afhankelijk van welke LED actief is.

Een manager is iemand die denkt dat negen vrouwen in één maand een kind kunnen maken

Op 1 september 2020 09:47:17 schreef MGP:
Hangt dat toestelletje buiten de kabine? want dat wordt terug werken met een kabeltje.

Een goede raad, test eerst uw componenten zonder al teveel programmeren want als een of ander niet compatibel is, zoals de fototransistors/ledlicht/omgevingslicht dan zul je er gauw de brui aan geven.

De ontvanger hangt inderdaad buiten de cabine. Mijn idee was om eerst de componenten te testen op een breadboard zodat ik makkelijk eea kan vervangen of aanpassen en het pas daarna werkend te maken in het uiteindelijke kastje. Neemt niet weg dat ik dan wel het programma moet hebben om het te kunnen testen.

Op 1 september 2020 10:20:25 schreef SparkyGSX:
[...]Nergens voor nodig, dat knipperen gaat zo langzaam dat je prima kunnen pollen (herhaaldelijk de ingang lezen in een main loop).

Dat dacht ik ook, voor de Arduino is dit makkelijk bij te benen, maar de vraag is hoe ik het zo kan programmeren dat de uitgang niet knippert maar HOOG blijft?

Op 1 september 2020 10:20:25 schreef SparkyGSX:
Maar dat knipperen geeft wel weer extra uitdagingen; als alle LEDs uit zijn, weet je niet wat de status is, en kun je alleen aannemen dat die niet is veranderd.

Dit kan eigenlijk niet. Er branden altijd lampjes als de stroom ingeschakeld is. Het enige wat voor kan komen is dat de bovenste en de onderste tegelijk knipperen als hij geen signaal ontvangt, bijvoorbeeld als de laser uitstaat of iets het signaal blokkeerd.

hennep

Golden Member

Op 31 augustus 2020 19:48:07 schreef BartL:
Echter zoals eerder besproken knipperen de lampjes op de ontvanger (ca. 4x per sec.) waardoor de output dus ook zal pulsen. Hoe krijg ik dit eruit geschreven?

Ik heb dit even uit de losse pols getypt. Vergeef me een enkele denk/type fout.

code:

#define LED_MAX_ON 300 // ms

uint32_t elapsed_ms( void ) {
    static uint32_t previous;
    uint32_t ms = millis();
    uint32_t diff = ms - previous;  
    previous = ms;
    return diff;
}

loop() {
    static uint32_t timerFarUp, timerFarDn, timerMediumUp, timerMediumDn, timerNeutral;
    uint32_t ms = elapsed_ms();
    timerFarUp += ms;
    if( digitalRead( Far_up ) == HIGH ) {
        digitalWrite( LED_Far_up, HIGH );
        timerFarUp = 0;
    }
    timerFarDn += ms;
    if( digitalRead( Far_dn ) == HIGH ) {
        digitalWrite( LED_Far_dn, HIGH );
        timerFarDn = 0;
    }
    timerMediumUp += ms;
    if( digitalRead( Medium_up ) == HIGH ) {
        digitalWrite( LED_Medium_up, HIGH );
        timerMediumUp = 0;
    }
    timerMediumDn += ms;
    if( digitalRead( Medium_dn ) == HIGH ) {
        digitalWrite( LED_Medium_dn, HIGH );
        timerMediumDn = 0;
    }
    timerNeutral += ms;
    if( digitalRead( Neutral ) == HIGH ) {
        digitalWrite( LED_Neutral, HIGH );
        timerNeutral = 0;
    }
	
    if( digitalRead( Far_up ) == LOW && timerFarUp >= LED_MAX_ON ) {
        digitalWrite( LED_Far_up, LOW );
    }
    if( digitalRead( Far_dn ) == LOW && timerFarDn >= LED_MAX_ON ) {
        digitalWrite( LED_Far_dn, LOW );
    }
    if( digitalRead( Medium_up ) == LOW && timerMediumUp >= LED_MAX_ON ) {
        digitalWrite( LED_Medium_up, LOW );
    }
    if( digitalRead( Medium_dn ) == LOW && timerMediumDn >= LED_MAX_ON ) {
        digitalWrite( LED_Medium_dn, LOW );
    }
    if( digitalRead( Neutral ) == LOW && timerNeutral >= LED_MAX_ON ) {
        digitalWrite( LED_Neutral, LOW );
    }
}