Een hartelijk hallo aan alle slimmeriken.
Even vooraf, op het gebied van programmeren ben ik zwakbegaafd. Ik ben nu bezig in mijn 80e levensjaar en zal zeker geen prof meer worden.
Ik zit nu echter met een software probleempje. Een klein proces moet gestart worden met een impulscontakt, dus geen duurcommando. Het proces is als volgt.
Na de start wordt een relais aangestuurd en gaat een timer lopen. Na een korte tijd (ca. 6 sec) komt een signaal van een niveaumeter binnen en stopt de timer, relais blijft op. Na einde niveausignaal gaat het proces nog een zekere tijd door (ca 6 sec) en wordt alles gereset en wordt gewacht op een volgende startimpuls.
Het gaat mij in dit geval alleen om de startroutine, de rest los ik wel op.
Ik ga uit van een PIC12F675 en gebruik als taal PIC-basic, en maak gebruik van de Wisp628 en BumbleBee.
Bij voorbaat mijn dank,
Oom Jan

Kan ook wel weer simpel zonder controller:

Op 12 mei 2020 13:51:07 schreef Oom Jan:
Even vooraf, op het gebied van programmeren ben ik zwakbegaafd. Ik ben nu bezig in mijn 80e levensjaar en zal zeker geen prof meer worden.

Gewoon lekker doorgaan. :)

Na de start wordt een relais aangestuurd en gaat een timer lopen.

Waar komt die start_puls vandaan?, komt die van de niveauregelaar? of anders?

En hoelang duurt die start_puls?, is dat die 6 sec? of anders?

Arco, bedankt, maar dit zijn te veel onderdelen, het moet klein blijven.

Lambiek, ik ben niet geheel duidelijk geweest. De startpuls komt van een handbediende drukknop en zal ca. een 0,5 duren en zal het programma in de PIC starten. Het gaat mij met name om het starten van het PIC-basic programma zonder duurcommando. De rest van de software los ik wel op.

Dat kan gewoon een eenvoudiog programma zijn in een oneindige wihle 1=1 lus en dan voer je het uit via IF ingang = 1 Then ....
Wordt behandeld in de eerste lessen van picbasic (ik zag dat je die ook had gevolgd) :-)

Marcob, dat is mij niet als zodanig duidelijk geweest, ik ga dit morgen proberen.

Lastig om te begrijpen wat je wilt. Voor programmeren probeer eens eerst de stappen uit te schrijven voordat je 'echt' gaat programmeren.

Ik denk dat je het volgende wilt bereiken?


Stap 1, Wacht op start signaal
Stap 2, Relais aan
Stap 3, Wachten op niveaumeter
Stap 4, Wachten 6 sec
Stap 5, Relais uit
Stap 6, Ga naar stap 1

Dit lijstje is al praktisch code, in C wordt dit:


while(true)								//Voer dit telkens opnieuw uit.
{
	While(StartInput() == false);		//Wacht op start signaal
	SetRelais(true);					//Zet relais aan
	While(LevelSensor() == false);		//Wacht op niveaumeter
	Delay(6000);						//Wacht 6 sec.
	SetRelais(false);					//Zet relais uit
}

Arco, bedankt, maar dit zijn te veel onderdelen, het moet klein blijven.

Tja,,'t Ligt er maar aan wat je klein noemt... ;)
Past met gemak op een (kleine) postzegel. (relais niet meegerekend)

[Bericht gewijzigd door Arco op (27%)]

Allen bedankt voor het meedenken. Het blijkt dat het soms moeilijk is om een goede vraagstelling op papier te zetten. Waar het mij om gaat, ik zoek het begin van een programma geschreven in PIC-basic waarin een actie wordt gestart met impulscontact. Na het openen van het contact loopt het verder tot- END - van het programma en daarna wordt weer gewacht op een eventuele volgende start.
Alle tussenliggende acties kan ik zelf oplossen.

Ik gebruik een PIC12F675 en maak gebruik van de Wisp628, BumbleBEE en de Proton IDE compiler.

Arco, er moeten 10 schakelingetjes worden gemaakt, dan gaat het met een PIC12F675 iets makkelijker.

Kan toch zoiets:
Dit blijft in de lus lopen, maar alleen wordt je programma uitgevoerd als de input geschakeld wordt.

WHILE 1 = 1
  IF INPUT = 1 THEN       ; input wordt actief
  WHILE INPUT = 1 : WEND  ; wachten tot contact weer open is (anti dender)
  rest programma
  ...
  ...
  ...
  ENDIF
WEND
END

Is dit een beetje wat je bedoeld.


Device = 12F675

Xtal 10                     ; Kristal 10MHz

Config HS_OSC,_             ; Oscilator op 10MHz  INTRC_OSC_NOCLKOUT,_
       WDT_OFF,_            ; WatchDog Timer uit
       PWRTE_ON,_           ; Power-up Timer Enable aan
       MCLRE_OFF,_          ; Externe Master Reset Enable uit
       CP_OFF,_
       CPD_OFF,_
       BOREN_ON,_
       IESO_OFF,_
       FCMEN_OFF
                         
All_Digital TRUE            ; Alle ingangen digitaal

Symbol S1 = GPIO.0          ; Ingang drukknop

Dim START_BIT As Bit        ; Variabele

Clear                       ; Wis geheugen 

         ;543210            ; Hulpregel Poort IO
GPIO   = %000000            ; Zet poort op nul    
TRISIO = %000001            ; Poort I/O

;---------------------------------------------------

START_BIT = 0

START:
 

    If S1 = 1 Then
       START_BIT = 1
       DelayMS 100
    EndIf
    
    If START_BIT = 1 Then
       If S1 = 0 Then
       DelayMS 100
       GoTo RUN
       EndIf
    EndIf
    
GoTo START

RUN:


    ; JOU DING
    
    ; JOU DING
    
    ; JOU DING


    START_BIT = 0

    ; EN ALS JE KLAAR BENT

    GoTo START
 
GoTo RUN

END

Als je S1 "jou drukknop" indrukt en loslaat ga je naar het gedeelte waar jou programma komt. Je moet even kijken of je drukknop op de goede ingang zit, dat ik hier vandaan niet beoordelen. :)

Allen bedankt, ik ga hiermee experimenteren, kan nog even duren.
Het resultaat za ik t.z.t. tonen.

Is de interne oscillator niet voldoende? waarschijnlijk heeft Lambiek dat uit een van zijn andere programma's gefilterd.
Dat bespaart weer wat componenten.

Ja dat moet Oom Jan maar even aanpassen naar zijn eigen instellingen. :)

Op 12 mei 2020 19:49:42 schreef Oom Jan:
Ik gebruik een PIC12F675 en maak gebruik van de Wisp628, BumbleBEE en de Proton IDE compiler.
Arco, er moeten 10 schakelingetjes worden gemaakt, dan gaat het met een PIC12F675 iets makkelijker.

Wanneer je bedenkt dat de de 4 logische poorten op één IC zitten dan is het aantal onderdelen al een heel stuk minder. Maar toch begrijp ik je standpunt want wanneer je alle hardware reeds 'aan boord' hebt en met wat code te schrijven het gewenste resultaat kunt bereiken, dan is bij wijze van spreken iedere diode nog teveel. Vooral bij meerdere schakelingen, met (eventueel) hetzelfde programma.

Ik denk dat het relais zelf de meeste plaats nodig gaat hebben... ;)

Uit verveling een klein programmaatje gemaakt, kun je zo in de pic programmeren.
De werking is zoals Hardbass het opgelijst heeft.

pin2 = niveau NC contact (naar de + of naar de GND schakelen met pulldown of pullup weerstand naargelang het soort contact).
pin3 = startknop .. 5V in = start
pin5 = relaisoutput
pin7 = start led output (led met weerstand naar de GND)

Jammer genoeg niet in picbasic