Auteur Topic: verzorging depot asche aan zee  (gelezen 5573 keer)

Offline raf

  • Forumlid
  • Berichten: 5.216
  • Voornaam: raf
verzorging depot asche aan zee
« Gepost op: 09 december 2015, 08:59:08 am »
hoi daar ik tegen problemen aan loop met communicatie bussen ga ik proberen mijn eigen protocol op te zetten om mijn digitale/analoog baan te sturen .

elke wissel krijgt een slaaf processor
elke stopplaats krijgt een processor en die dient ook meteen als bezet melder
1 master die de rijwegen en de communicatie bepaald

gebruik van 3 communicatie lijnen tussen alle processoren
pwm signaal om te bepalen wie wat waar moet gaan doen

nu aan de gang om een master te programmeren

gr raf en hopelijk snel een vervolg
Na 5 herseninfarcten kan het raar zijn wat ik schrijf .Dat is niet mijn fout maar je bril kuisen kan helpen en eens twee keer overlezen .Versta je het nog niet kan ik altijd de Ierse versie er nog van geven die leest misschien iets makkelijker

Offline Geert

  • Forumlid
  • Berichten: 1.959
    • Homepage
  • Voornaam: Geert
Re: verzorging depot asche aan zee
« Reactie #1 Gepost op: 09 december 2015, 10:43:36 am »
Welke problemen bedoel je met communicatie bussen?

Ik gebruik al een tijdje de hardware seriële receiver en transmitter van PIC µC om LocoNet data door te sturen.  Dan heb je maar 2 communicatie lijnen nodig (massa en één data lijn).

Geert

Edit: net opgemerk: blijkbaar in een ander draadje je probleem al aangekaart, loopt zo wel wat doorheen al je vragen...
Schaal HO - digitaal zelfbouw - Favoriete Lok: V200 DB
Huidig project: LocoNet 16 poorten ingangen/uitgangen

Offline raf

  • Forumlid
  • Berichten: 5.216
  • Voornaam: raf
Re: verzorging depot asche aan zee
« Reactie #2 Gepost op: 09 december 2015, 10:57:58 am »
geert voorlopig nog geen vragen maar daarom dit nieuwe topic er over gemaakt
het test bakje met schakelaars is reeds klaar

ik heb er 18 schakelaars op zitten maar ik moet nu gaan testen tot hoeveel ik kan gaan
dus pic programmeren en de display er aan hangen en kijken tot welke waarde alles stabiel blijft
indien ik niet tot 17 geraak doe ik de schakelaars in twee groepen (binnen in een schakelaar om zetten )en gebruik ik op de pic twee ingangen
waarom gebruik je een draadloze ontvanger voor je verbindingen ???
stuur je de baan vanuit een pc of laptop ???

gr raf
Na 5 herseninfarcten kan het raar zijn wat ik schrijf .Dat is niet mijn fout maar je bril kuisen kan helpen en eens twee keer overlezen .Versta je het nog niet kan ik altijd de Ierse versie er nog van geven die leest misschien iets makkelijker

Offline raf

  • Forumlid
  • Berichten: 5.216
  • Voornaam: raf
Re: verzorging depot asche aan zee
« Reactie #3 Gepost op: 09 december 2015, 15:51:09 pm »
reeds een stukje code geschreven zodat ik kan zien waar ik mee bezig ben
dit is nog maar alleen om de ingedrukte toets zichtbaar te maken nu moet ik nog aan het eigenlijke programma beginnen


Device 16F628A                ;Gebruik een 16F628A type
Config WDT_OFF, PWRTE_ON, LVP_OFF, MCLRE_OFF, HS_OSC ;INTRC_OSC_NOCLKOUT verwijderd
Xtal 20                       ;Kristal van 20MHz
All_Digital TRUE              ;Alle ingangen digitaal

;Poortnamen
Symbol Potmeter     = PORTA.1 ;PORTA.1 heet vanaf nu 'Potmeter'

;Variabele declareren
Dim Weerstand As Word         ;WORD variabele, bevat straks de stand van de potmeter 

Clear                         ;Wis alle RAM geheugen
DelayMS 500                   ;LCD stabilisering


;Hoofdprogramma
Cls                           ;LCD scherm wissen
While 1 = 1                   ;Oneindig door blijven meten
  High Potmeter               ;Condensator die aan de potmeterpoort zit ontladen
  DelayMS 1                   ;Even wachten zodat condensator helemaal leeg is
  Weerstand = RCIn Potmeter, High   ;Geef RC oplaadtijd aan variabele 'Weerstand'
  Print At 1, 1, Dec Weerstand, "      " ;Zet waarde van 'Weerstand' op het display
  If Weerstand > 0 Then GoSub test
Wend                          ;Terug naar WHILE
 test:
 
  If Weerstand < 1 Then       ;als geen Toets ingedrukt dan...
      Print At 2,1,"00"                  ;Zet het toetsnummer achter 'Toets' op het display
    ElseIf Weerstand < 33  Then  ;Toets 1 ingedrukt dan...
      Print At 2,1,"01"                  ;Zet het toetsnummer achter 'Toets' op het display
    ElseIf Weerstand < 330 Then  ;Toets 2 ingedrukt dan...
      Print At 2,1,"02"                  ;Zet het toetsnummer achter 'Toets' op het display
    ElseIf Weerstand < 640 Then  ;Toets 3 ingedrukt dan...
      Print At 2,1,"03"                  ;Zet het toetsnummer achter 'Toets' op het display
    ElseIf Weerstand < 990 Then  ;Toets 4 ingedrukt dan...
      Print At 2,1,"04"                  ;Zet het toetsnummer achter 'Toets' op het display
    ElseIf Weerstand < 1350 Then  ;Toets 5 ingedrukt dan...
      Print At 2,1,"05"                  ;Zet het toetsnummer achter 'Toets' op het display
    ElseIf Weerstand < 1750 Then  ;Toets 6 ingedrukt dan...
      Print At 2,1,"06"                  ;Zet het toetsnummer achter 'Toets' op het display
    ElseIf Weerstand < 2150  Then  ;Toets 7 ingedrukt dan...
      Print At 2,1,"07"                  ;Zet het toetsnummer achter 'Toets' op het display
    ElseIf Weerstand < 2300 Then  ;Toets 8 ingedrukt dan...
      Print At 2,1,"08"                  ;Zet het toetsnummer achter 'Toets' op het display
    ElseIf Weerstand < 3140 Then  ;Toets 9 ingedrukt dan...
      Print At 2,1,"09"                  ;Zet het toetsnummer achter 'Toets' op het display
    ElseIf Weerstand < 3600 Then  ;Toets 10 ingedrukt dan...
      Print At 2,1,"10"                  ;Zet het toetsnummer achter 'Toets' op het display
    ElseIf Weerstand < 4120 Then  ;Toets 11 ingedrukt dan...
      Print At 2,1,"11"                  ;Zet het toetsnummer achter 'Toets' op het display
    ElseIf Weerstand < 4750 Then  ;Toets 12 ingedrukt dan...
      Print At 2,1,"12"                  ;Zet het toetsnummer achter 'Toets' op het display
    ElseIf Weerstand < 5450  Then  ;Toets 13 ingedrukt dan...
      Print At 2,1,"13"                  ;Zet het toetsnummer achter 'Toets' op het display
    ElseIf Weerstand < 6258 Then  ;Toets 14 ingedrukt dan...
      Print At 2,1,"14"                  ;Zet het toetsnummer achter 'Toets' op het display
    ElseIf Weerstand < 7540 Then  ;Toets 15 ingedrukt dan...
      Print At 2,1,"15"                  ;Zet het toetsnummer achter 'Toets' op het display
    ElseIf Weerstand < 8200 Then  ;Toets 16 ingedrukt dan...
      Print At 2,1,"16"                  ;Zet het toetsnummer achter 'Toets' op het display
    ElseIf Weerstand < 10000 Then  ;Toets 17 ingedrukt dan...
      Print At 2,1,"17"                  ;Zet het toetsnummer achter 'Toets' op het display
      ElseIf Weerstand < 11650 Then  ;Toets 18 ingedrukt dan...
      Print At 2,1,"18"                  ;Zet het toetsnummer achter 'Toets' op het display
    EndIf

    Print At 1, 10, Dec5 Weerstand;Zet waarde van 'Weerstand' op regel 1 van het display
    Return
End                           ;Einde programma
Na 5 herseninfarcten kan het raar zijn wat ik schrijf .Dat is niet mijn fout maar je bril kuisen kan helpen en eens twee keer overlezen .Versta je het nog niet kan ik altijd de Ierse versie er nog van geven die leest misschien iets makkelijker

Offline raf

  • Forumlid
  • Berichten: 5.216
  • Voornaam: raf
Re: verzorging depot asche aan zee
« Reactie #4 Gepost op: 09 december 2015, 19:33:12 pm »
weer wat verder en de code aangepast want het geheugen van de pic zat vol
nu heb ik die 18 stukjes spoor dus 36 codes die ik moet verzenden als ik ze allemaal wil aan uit zetten
dan de 8 wissel servo's nog eens daar bij wat er nog eens 16 bij brengt
nu zie je dat ik telkens naar die paks spring om daar te doen wat er moet gebeuren om een rijweg in te stellen
dit wil ik nog eenvoudiger hebben (lees minder geheugen)
case heb ik nog niet goed onder de knie maar daar zou ik toch iets mee moeten kunnen doen om die 44 mogelijkheden te benutten zonder ze 4 of 6 keer dubbel te moeten zetten
iemand enig idee om me een beetje op weg te helpen
gr raf

Device 16F628A                ;Gebruik een 16F628A type
Config WDT_OFF, PWRTE_ON, LVP_OFF, MCLRE_OFF, HS_OSC ;INTRC_OSC_NOCLKOUT verwijderd
Xtal 20                       ;Kristal van 20MHz
All_Digital TRUE              ;Alle ingangen digitaal

;Poortnamen
Symbol Potmeter     = PORTA.1 ;PORTA.1 heet vanaf nu 'Potmeter'

;Variabele declareren
Dim Weerstand As Word         ;WORD variabele, bevat straks de stand van de potmeter 
Dim a As Byte
Dim b As Word
Dim c As Word


Dim spoor1 As Byte
Dim spoor2 As Byte
Dim spoor3 As Byte
Dim spoor4 As Byte
Dim spoor5 As Byte
Dim spoor6 As Byte
Dim spoor7 As Byte
Dim spoor8 As Byte
Dim spoor9 As Byte
Dim spoor10 As Byte
Dim spoor11 As Byte
Dim spoor12 As Byte
Dim spoor13 As Byte
Dim spoor14 As Byte
Dim spoor15 As Byte
Dim spoor16 As Byte
Dim spoor17 As Byte
Dim spoor18 As Byte




Clear                         ;Wis alle RAM geheugen
DelayMS 500                   ;LCD stabilisering

start:

Cls                           ;LCD scherm wissen
While 1 = 1                   ;Oneindig door blijven meten
  High Potmeter               ;Condensator die aan de potmeterpoort zit ontladen
  DelayMS 1                   ;Even wachten zodat condensator helemaal leeg is
  Weerstand = RCIn Potmeter, High   ;Geef RC oplaadtijd aan variabele 'Weerstand'
  Print At 2 ,6, Dec2 a
 
  If Weerstand > 0 Then GoSub test
Wend                          ;Terug naar WHILE
 test:
  If Weerstand < 1 Then       ;als geen Toets ingedrukt dan...
      a = 0
    ElseIf Weerstand < 33  Then  ;Toets 1 ingedrukt dan...
     a = 1
    ElseIf Weerstand < 330 Then  ;Toets 2 ingedrukt dan...
      a = 2
    ElseIf Weerstand < 640 Then  ;Toets 3 ingedrukt dan...   
      a = 3
    ElseIf Weerstand < 990 Then  ;Toets 4 ingedrukt dan...   
      a = 4
    ElseIf Weerstand < 1350 Then  ;Toets 5 ingedrukt dan...     
     a = 5
    ElseIf Weerstand < 1750 Then  ;Toets 6 ingedrukt dan...   
      a = 6
    ElseIf Weerstand < 2150  Then  ;Toets 7 ingedrukt dan...   
       a = 7
    ElseIf Weerstand < 2300 Then  ;Toets 8 ingedrukt dan...   
      a = 8
    ElseIf Weerstand < 3140 Then  ;Toets 9 ingedrukt dan...                     
      a = 9
    ElseIf Weerstand < 3600 Then  ;Toets 10 ingedrukt dan...     
      a = 10
    ElseIf Weerstand < 4120 Then  ;Toets 11 ingedrukt dan...     
      a = 11
    ElseIf Weerstand < 4750 Then  ;Toets 12 ingedrukt dan...   
      a = 12
    ElseIf Weerstand < 5450  Then  ;Toets 13 ingedrukt dan...     
      a = 13   
    ElseIf Weerstand < 6258 Then  ;Toets 14 ingedrukt dan...   
      a = 14
    ElseIf Weerstand < 7540 Then  ;Toets 15 ingedrukt dan...   
      a = 15
    ElseIf Weerstand < 8200 Then  ;Toets 16 ingedrukt dan...   
      a = 16
    ElseIf Weerstand < 10000 Then  ;Toets 17 ingedrukt dan...
      a = 17
    ElseIf Weerstand < 11650 Then  ;Toets 18 ingedrukt dan..
      a = 18
    EndIf
      If a < 10 Then
Print At 2,1,"0"
Print At 2,2,a
    Else
Print At 2,1,a
    EndIf
       If b > 0 And c = 0 And Weerstand >0 Then GoSub testb
       If b = 0 And Weerstand > 0 Then GoSub testa
     
    Print At 1,12,Dec2 b
    Print At 2,12,Dec2 c
    Return
   
testa:
If b = 0 Then b = a
a = 0
Weerstand = 0
DelayMS 300
Return
testb:
If c = 0 Then c = a
  a = 0
  Weerstand = 0
  DelayMS 300
  Return
 
 If c = 1 Then
  If b = 2 Then GoTo pak1
  If b = 4 Then GoTo pak2
  If b = 3 Then GoTo pak3
  If b = 5 Then GoTo pak4
  If b  = 6 Then GoTo pak5
  If b  = 7 Then GoTo pak6
  If b = 14 Then GoTo pak7
EndIf
If b = 1 Then
 If c = 2 Then GoTo pak1
 If c = 4 Then GoTo pak2
 If c = 3 Then GoTo pak3
 If c = 6 Then GoTo pak5
 If c = 7 Then GoTo pak6
 If c = 14 Then GoTo pak8
 EndIf
 
 If c = 14 Then
 If b = 7 Then GoTo pak9
  If b = 6 Then GoTo pak10
  If b = 3 Then GoTo pak11
  If b = 4 Then GoTo pak12
   EndIf
pak1:    ;  van 1 naar 2
PWM PORTA.3, 150 , 3  ;wissel1
 PWM PORTA.4,10 , 3   ;wissel1 recht
 PWM PORTA.3, 10 , 3  ;blok1
 PWM PORTA.4,10 , 3   ;blok1 vrijgeven
 PWM PORTA.3,20 , 3   ;blok2
 PWM PORTA.4 ,10 , 3  ;blok2 vrijgeven
 GoTo wissen
pak2: ;van 1 naar 4
PWM PORTA.3, 150 , 3  ;wissel1
 PWM PORTA.4,10 , 3   ;wissel1 recht
PWM PORTA.3, 10 , 3  ;blok1
 PWM PORTA.4,10 , 3   ;blok1 vrijgeven
 PWM PORTA.3,20 , 3   ;blok2
 PWM PORTA.4 ,10 , 3  ;blok2 vrijgeven
  PWM PORTA.3, 150 , 3  ;wissel1
 PWM PORTA.4,10 , 3   ;wissel1 recht
  PWM PORTA.3, 40 , 3  ;blok4
 PWM PORTA.4,10 , 3   ;blok4 vrijgeven
GoTo wissen
 
 pak3: ;van 1 naar 3
 PWM PORTA.3, 150 , 3  ;wissel1
 PWM PORTA.4,20 , 3   ;wissel1 rond
PWM PORTA.3, 10 , 3  ;blok1
 PWM PORTA.4,10 , 3   ;blok1 vrijgeven
 PWM PORTA.3,30 , 3   ;blok3
 PWM PORTA.4 ,10 , 3  ;blok3 vrijgeven

 GoTo wissen
pak4: ;van 1 naar 5
  PWM PORTA.3, 150 , 3  ;wissel1
 PWM PORTA.4,20 , 3   ;wissel1 rond
 PWM PORTA.3, 160 , 3  ;wissel2
 PWM PORTA.4,10 , 3   ;wissel2 recht
PWM PORTA.3, 10 , 3  ;blok1
 PWM PORTA.4,10 , 3   ;blok1 vrijgeven
 PWM PORTA.3,30 , 3   ;blok3
 PWM PORTA.4 ,10 , 3  ;blok3 vrijgeven
 PWM PORTA.3,50 , 3   ;blok5
 PWM PORTA.4 ,10 , 3  ;blok5 vrijgeven
 GoTo wissen
 
  pak5:  ;van 1 naar 6
  PWM PORTA.3, 150 , 3  ;wissel1
 PWM PORTA.4,20 , 3   ;wissel1 rond
 PWM PORTA.3, 160 , 3  ;wissel2
 PWM PORTA.4,20 , 3   ;wissel1 rond
PWM PORTA.3, 10 , 3  ;blok1
 PWM PORTA.4,10 , 3   ;blok1 vrijgeven
 PWM PORTA.3,30 , 3   ;blok3
 PWM PORTA.4 ,10 , 3  ;blok3 vrijgeven
 PWM PORTA.3,60 , 3   ;blok6
 PWM PORTA.4 ,10 , 3  ;blok6 vrijgeven 
 GoTo wissen
 pak6:      ;van 1 naar 7
  PWM PORTA.3, 150 , 3  ;wissel1
 PWM PORTA.4,20 , 3   ;wissel1 rond
 PWM PORTA.3, 160 , 3  ;wissel2
 PWM PORTA.4,20 , 3   ;wissel1 rond
PWM PORTA.3, 10 , 3  ;blok1
 PWM PORTA.4,10 , 3   ;blok1 vrijgeven
 PWM PORTA.3,30 , 3   ;blok3
 PWM PORTA.4 ,10 , 3  ;blok3 vrijgeven
 PWM PORTA.3,60 , 3   ;blok6
 PWM PORTA.4 ,10 , 3  ;blok6 vrijgeven 
 PWM PORTA.3,70 , 3   ;blok7
 PWM PORTA.4 ,10 , 3  ;blok7 vrijgeven 
GoTo wissen
 pak7:   ;van 1 naar 14
  PWM PORTA.3, 150 , 3  ;wissel1
 PWM PORTA.4,20 , 3   ;wissel1 rond
 PWM PORTA.3, 160 , 3  ;wissel2
 PWM PORTA.4,20 , 3   ;wissel1 rond
PWM PORTA.3, 10 , 3  ;blok1
 PWM PORTA.4,10 , 3   ;blok1 vrijgeven
 PWM PORTA.3,30 , 3   ;blok3
 PWM PORTA.4 ,10 , 3  ;blok3 vrijgeven
 PWM PORTA.3,60 , 3   ;blok6
 PWM PORTA.4 ,10 , 3  ;blok6 vrijgeven 
 PWM PORTA.3,70 , 3   ;blok7
 PWM PORTA.4 ,10 , 3  ;blok7 vrijgeven
 PWM PORTA.3,140 , 3   ;blok7
 PWM PORTA.4 ,10 , 3  ;blok7 vrijgeven   
 GoTo wissen
 pak8:   ;via de onderste rail naar 1
 PWM PORTA.3, 150 , 3  ;wissel1
 PWM PORTA.4,20 , 3   ;wissel1 rond
 PWM PORTA.3, 160 , 3  ;wissel2
 PWM PORTA.4,20 , 3   ;wissel2 rond
 PWM PORTA.3, 170 , 3  ;wissel3
 PWM PORTA.4,20 , 3   ;wissel3 rond
PWM PORTA.3, 10 , 3  ;blok1
 PWM PORTA.4,10 , 3   ;blok1 vrijgeven
 PWM PORTA.3,30 , 3   ;blok3
 PWM PORTA.4 ,10 , 3  ;blok3 vrijgeven
 PWM PORTA.3,60 , 3   ;blok6
 PWM PORTA.4 ,10 , 3  ;blok6 vrijgeven 
 PWM PORTA.3,70 , 3   ;blok7
 PWM PORTA.4 ,10 , 3  ;blok7 vrijgeven
 PWM PORTA.3,140 , 3   ;blok7
 PWM PORTA.4 ,10 , 3  ;blok7 vrijgeven   
 GoTo wissen
 pak9:    ;van 14 naar 7
   PWM PORTA.3, 170 , 3  ;wissel3
 PWM PORTA.4,20 , 3   ;wissel3 rond
  PWM PORTA.3,70 , 3   ;blok7
 PWM PORTA.4 ,10 , 3  ;blok7 vrijgeven
 PWM PORTA.3,140 , 3   ;blok7
 PWM PORTA.4 ,10 , 3  ;blok7 vrijgeven
 GoTo wissen
 pak10:   ;van 14 naar 6
  PWM PORTA.3, 170 , 3  ;wissel3
 PWM PORTA.4,20 , 3   ;wissel3 rond
  PWM PORTA.3,70 , 3   ;blok7
 PWM PORTA.4 ,10 , 3  ;blok7 vrijgeven
  PWM PORTA.3,140 , 3   ;blok7
 PWM PORTA.4 ,10 , 3  ;blok7 vrijgeven
PWM PORTA.3,60 , 3   ;blok6
 PWM PORTA.4 ,10 , 3  ;blok6 vrijgeven
  GoTo wissen
 pak11:  ;van 14 naar 3
   PWM PORTA.3, 170 , 3  ;wissel3
 PWM PORTA.4,20 , 3   ;wissel3 rond
  PWM PORTA.3,70 , 3   ;blok7
 PWM PORTA.4 ,10 , 3  ;blok7 vrijgeven
 PWM PORTA.3,140 , 3   ;blok7
 PWM PORTA.4 ,10 , 3  ;blok7 vrijgeven
PWM PORTA.3,60 , 3   ;blok6
PWM PORTA.4 ,10 , 3  ;blok6 vrijgeven
 PWM PORTA.3,30 , 3   ;blok3
 PWM PORTA.4 ,10 , 3  ;blok3 vrijgeven
 GoTo wissen
 pak12: ;van 14 naar 4
 PWM PORTA.3, 180 , 3  ;wissel4
 PWM PORTA.4,20 , 3   ;wissel4 rond
 PWM PORTA.3, 170 , 3  ;wissel3
 PWM PORTA.4,10 , 3   ;wissel3 rond
 PWM PORTA.3, 190 , 3  ;wissel5
 PWM PORTA.4,20 , 3   ;wissel5 rond
 PWM PORTA.3, 200 , 3  ;wissel6
 PWM PORTA.4,10 , 3   ;wissel6 recht
PWM PORTA.3, 10 , 3  ;blok1
 PWM PORTA.4,10 , 3   ;blok1 vrijgeven
 PWM PORTA.3,40 , 3   ;blok4
 PWM PORTA.4 ,10 , 3  ;blok4 vrijgeven
 PWM PORTA.3,140 , 3   ;blok14
 PWM PORTA.4 ,10 , 3  ;blok14 vrijgeven 
 GoTo wissen
 
   pak13: ;van 14 naar 3
 PWM PORTA.3, 180 , 3  ;wissel4
 PWM PORTA.4,20 , 3   ;wissel4 rond
 PWM PORTA.3, 170 , 3  ;wissel3
 PWM PORTA.4,10 , 3   ;wissel3 rond
 PWM PORTA.3, 190 , 3  ;wissel5
 PWM PORTA.4,20 , 3   ;wissel5 rond
 PWM PORTA.3, 200 , 3  ;wissel6
 PWM PORTA.4,10 , 3   ;wissel6 recht
PWM PORTA.3, 10 , 3  ;blok1
 PWM PORTA.4,10 , 3   ;blok1 vrijgeven
 PWM PORTA.3,40 , 3   ;blok4
 PWM PORTA.4 ,10 , 3  ;blok4 vrijgeven
 PWM PORTA.3,30 , 3   ;blok3
 PWM PORTA.4 ,10 , 3  ;blok3 vrijgeven 
 GoTo wissen
wissen:
c= 0
b = 0
GoTo start
Return


 
End                           ;Einde programma
Na 5 herseninfarcten kan het raar zijn wat ik schrijf .Dat is niet mijn fout maar je bril kuisen kan helpen en eens twee keer overlezen .Versta je het nog niet kan ik altijd de Ierse versie er nog van geven die leest misschien iets makkelijker

Offline raf

  • Forumlid
  • Berichten: 5.216
  • Voornaam: raf
Re: verzorging depot asche aan zee
« Reactie #5 Gepost op: 10 december 2015, 17:58:53 pm »
zo we zijn weer een dag verder en er is weer wat aan het programma veranderd

deze nacht de case instructie onder de knie gekregen alsook de arry's definiëren
dan een beslissing genomen om de manuele sturing aan het spoor aan te sluiten en dat gaat via relais gebeuren
 
zo 4 relais kaarten besteld en die zijn goedkoper dan servo's met een switch er op
begrijpen wie kan dat ze voor dat geld zulke kaarten kunnen bouwen (5.96 dollar) das een 5.50 euries


als je alles los zou moeten kopen hier dan ben je een pak geld kwijt want ze durven 6 euro per relais vragen en nu alles mooi op een kaartje en dat kun je netjes weg werken

de schakeling zelf werkt ook dat is hier op het filmpje te zien
eerst uitleg

links boven komt de waarde die ik inlees van de toetsen

links onder de herberekende waarde naar het sporen plan (1 - 18 )en baan vakken
de wissels worden niet aan een schakelaar gekoppeld die worden door de slaven zelf bestuurd

in het midden boven
de waarde die ingelezen word in de spoorbezet array

in het midden onder
het array dat op dat ogenblik gelezen en geschreven word

rechts boven
het vertrek spoor dat je kunt kiezen

rechts onder
het spoor waar je naar toe wil gaan
https://youtu.be/FLoXEO41ch8
als de processor niets te doen heeft ( vertrek en eindspoor zijn 0)dan gaat hij de bezetmelders af om hun gegevens te laden
dat is of een 1 bezet of een 0 leeg spoor

dit heeft hij nodig om een rijweg te berekenen en de wissels te stellen

de wissels vraag ik niet af want dat maakt niet uit ze worden elke keer gesteld al staan ze in de juiste stand
de servo gaat toch niet meer verdraaien als hij reeds de juiste stand bereikt heeft

zo weer wat geleerd maar kan het nog beter met minder code (buiten de print functies)

gr raf en hier is de code zoals ze voorlopig is want er komt een andere processor met meer geheugen (16F648a)

Device 16F628A                ;Gebruik een 16F628A type
 Config INTRC_OSC_NOCLKOUT, WDT_OFF, PWRTE_ON, LVP_OFF, MCLRE_OFF
  All_Digital TRUE
  Xtal 4
  Declare PortB_Pullups On              ;Alle ingangen digitaal

;Poortnamen
Symbol Potmeter     = PORTA.1 ;PORTA.1 heet vanaf nu 'Potmeter'

;Variabele declareren




Dim Weerstand As Word         ;WORD variabele, bevat straks de stand van de potmeter 
Dim a As Byte
Dim b As Word
Dim c As Word
Dim w3 As Word
Dim teller As Byte
Dim blok As Byte
Dim spoor [17] As Byte



 
Clear                         ;Wis alle RAM geheugen
DelayMS 500                   ;LCD stabilisering

start:


While 1 = 1                   ;Oneindig door blijven meten
  High Potmeter               ;Condensator die aan de potmeterpoort zit ontladen
  DelayMS 1                   ;Even wachten zodat condensator helemaal leeg is
  Weerstand = RCIn Potmeter, High   ;Geef RC oplaadtijd aan variabele 'Weerstand'
  Print At 1 ,1, "        "
  Print At 1 ,1, Dec Weerstand
  DelayMS 200
 If Weerstand = 0 And a = 0 And b = 0 And c  = 0 Then GoSub leren
 If Weerstand > 0 Then GoSub test
Wend                          ;Terug naar WHILE
 test:

  Select Weerstand
        Case < 1
            a = 0
        Case 1 To 50
            a = 1
        Case 51 To 120
            a = 2
        Case 121 To 190
            a = 3
         Case 191 To 260
            a = 4
        Case 261 To 341
            a = 5
        Case 341 To 420
            a = 6
         Case 421 To 500
            a = 7
        Case 501 To 600
            a = 8
        Case 601 To 700
            a = 9
        Case 701 To 800
            a = 10
         Case 801 To 900
            a = 11
        Case 901 To 1000
            a = 12
        Case 1001 To  1100
            a = 13
        Case 1101 To 1300
            a = 14
        Case 1301 To 1500
            a = 15
         Case 1501 To 1800
            a = 16
        Case 1801 To 2000
            a = 17
        Case 2001 To  2400
            a = 18         
  EndSelect
 
   

Print At 2,1,Dec2 a
'    EndIf
    If a = 18 Then b = 0
    If a = 18  Then c = 0
    DelayMS 100
    If a = 18 Then a = 0
       If b > 0 And c = 0 And Weerstand >0 Then GoSub testb
       If b = 0 And Weerstand > 0 Then GoSub testa
     
   Print At 1,15,Dec2 b
    Print At 2,15,Dec2 c
    Return
   
testa:
If b = 0 Then b = a
a = 0
Weerstand = 0
DelayMS 300
Return
testb:
If c = 0 Then c = a
  a = 0
  Weerstand = 0
  DelayMS 300
  Return
 
 If c = 1 Then
  If b = 2 Then GoTo pak1
  If b = 4 Then GoTo pak2
  If b = 3 Then GoTo pak3
  If b = 5 Then GoTo pak4
  If b  = 6 Then GoTo pak5
  If b  = 7 Then GoTo pak6
  If b = 14 Then GoTo pak7
EndIf
If b = 1 Then
 If c = 2 Then GoTo pak1
 If c = 4 Then GoTo pak2
 If c = 3 Then GoTo pak3
 If c = 6 Then GoTo pak5
 If c = 7 Then GoTo pak6
 If c = 14 Then GoTo pak8
 EndIf
 
 If c = 14 Then
 If b = 7 Then GoTo pak9
  If b = 6 Then GoTo pak10
  If b = 3 Then GoTo pak11
  If b = 4 Then GoTo pak12
   EndIf
pak1:    ;  van 1 naar 2
blok = 25: GoSub GeefBlokVrij
 blok = 1: GoSub GeefBlokVrij
blok = 2: GoSub GeefBlokVrij
 GoTo wissen
pak2: ;van 1 naar 4
blok = 25: GoSub GeefBlokVrij
blok = 1: GoSub GeefBlokVrij
 blok = 2: GoSub GeefBlokVrij
  blok = 4: GoSub GeefBlokVrij
GoTo wissen
 
 pak3: ;van 1 naar 3
blok = 25: GoSub GeefBlokVrij
blok = 1: GoSub GeefBlokVrij
 blok = 3: GoSub GeefBlokVrij
 GoTo wissen
pak4: ;van 1 naar 5
   blok = 25: GoSub wisselrond
blok = 26: GoSub GeefBlokVrij
blok = 1: GoSub GeefBlokVrij
 blok = 3: GoSub GeefBlokVrij
 blok = 5: GoSub GeefBlokVrij
 GoTo wissen
 
  pak5:  ;van 1 naar 6
 blok = 25: GoSub wisselrond
 blok = 26: GoSub wisselrond
blok = 1: GoSub GeefBlokVrij
blok = 3: GoSub GeefBlokVrij
 blok = 6: GoSub GeefBlokVrij
 GoTo wissen
 pak6:      ;van 1 naar 7
  blok = 25: GoSub wisselrond
 blok = 26: GoSub wisselrond
 blok = 1: GoSub GeefBlokVrij
 blok = 3: GoSub GeefBlokVrij
 blok = 6: GoSub GeefBlokVrij
 blok = 7: GoSub GeefBlokVrij
GoTo wissen
 pak7:   ;van 1 naar 14
  blok = 25: GoSub wisselrond
 blok = 26: GoSub wisselrond
blok = 1: GoSub GeefBlokVrij
 blok = 3: GoSub GeefBlokVrij
 blok = 6: GoSub GeefBlokVrij 
 blok = 7: GoSub GeefBlokVrij
 blok = 14: GoSub GeefBlokVrij 
 GoTo wissen
 pak8:   ;via de onderste rail naar 1
 blok = 25: GoSub wisselrond
 blok = 26: GoSub wisselrond
 blok = 27: GoSub wisselrond
blok = 1: GoSub GeefBlokVrij
 blok = 3: GoSub GeefBlokVrij
 blok = 6: GoSub GeefBlokVrij
 blok = 7: GoSub GeefBlokVrij
 blok = 14: GoSub GeefBlokVrij
 GoTo wissen
 pak9:    ;van 14 naar 7
   blok = 27: GoSub wisselrond
  blok = 7: GoSub GeefBlokVrij
 blok = 14: GoSub GeefBlokVrij
 GoTo wissen
 pak10:   ;van 14 naar 6
  blok = 27: GoSub wisselrond
  blok = 7: GoSub GeefBlokVrij
  blok = 14: GoSub GeefBlokVrij
blok = 6: GoSub GeefBlokVrij
  GoTo wissen
 pak11:  ;van 14 naar 3
  blok = 27: GoSub wisselrond
  blok = 6: GoSub GeefBlokVrij
  blok = 7: GoSub GeefBlokVrij
  blok = 14: GoSub GeefBlokVrij
 blok = 3: GoSub GeefBlokVrij
 GoTo wissen
 pak12: ;van 14 naar 4
 blok = 28: GoSub wisselrond
 blok = 27: GoSub GeefBlokVrij
 blok = 29: GoSub wisselrond
 blok = 20: GoSub GeefBlokVrij
blok = 1: GoSub GeefBlokVrij
 blok = 4: GoSub GeefBlokVrij
 blok = 14: GoSub GeefBlokVrij
 GoTo wissen
 
   pak13: ;van 14 naar 3
 blok = 28: GoSub wisselrond
 blok = 27: GoSub GeefBlokVrij
 blok = 29: GoSub wisselrond
 blok = 20: GoSub GeefBlokVrij
blok = 1: GoSub GeefBlokVrij
 blok = 4: GoSub GeefBlokVrij
 blok = 3: GoSub GeefBlokVrij
 GoTo wissen
wissen:
c= 0
b = 0
GoTo start
Return
 
 GeefBlokVrij:

 PulseOut PORTA.3, blok * 10 , High
 DelayMS 10
 PulseOut PORTA.4, 10 , High
 DelayMS 10
 Return
 wisselrond:
  PulseOut PORTA.3, blok * 10 , High
  DelayMS 10
 PulseOut PORTA.4, 20 , High
 DelayMS 10
 Return
End                           ;Einde programma


leren:;array vullen met data
 For teller = 0 To 17
 PulseOut PORTA.3, teller + 1 , High
 DelayMS 2
 PulseOut PORTA.4, 2500 , High
 DelayMS 2
 PulseIn PORTA.5,1,w3
 If w3 < 10 Then w3 = 1
 If w3 >10 Then w3 = 0
 
 spoor [teller]= w3
 DelayMS 10
 Weerstand = RCIn Potmeter, High
 If Weerstand >0 Then GoTo retest
 Print At 1,10, Dec w3
 Print At 2,10, Dec2 teller
 Next
 Return
 retest:
 Weerstand = 0
 Print At 2,1,"  "
 Return[/img]


Na 5 herseninfarcten kan het raar zijn wat ik schrijf .Dat is niet mijn fout maar je bril kuisen kan helpen en eens twee keer overlezen .Versta je het nog niet kan ik altijd de Ierse versie er nog van geven die leest misschien iets makkelijker

Offline raf

  • Forumlid
  • Berichten: 5.216
  • Voornaam: raf
Re: verzorging depot asche aan zee
« Reactie #6 Gepost op: 11 december 2015, 13:11:00 pm »
het programma zoals het nu is wil niet werken want ik verzend geen adressen
dus nu heb ik twee picjes geprogrammeerd waarmee ik de data /adres lijnen kan testen
en nu krijg ik de waarde van weerstand wel op de 2 display's

nu heb ik dus een mogelijkheid om de data lijnen te testen als het nodig moest zijn
met de test pic kan ik nu mooi de adressen en data uitlezen
nu het hoofd programma terug aan passen zodat dit ook begint te werken

hier het progje om de data lijnen te testen op de master

             Device 16F628A                ;Gebruik een 16F628A type
 Config INTRC_OSC_NOCLKOUT, WDT_OFF, PWRTE_ON, LVP_OFF, MCLRE_OFF
  ALL_DIGITAL TRUE
  XTAL 4
  Declare PORTB_PULLUPS On              ;Alle ingangen digitaal
 
;Poortnamen
Symbol Potmeter     = PORTA.1 ;PORTA.1 heet vanaf nu 'Potmeter'
 
;Variabele declareren
 
 
 
 
Dim Weerstand As Word         ;WORD variabele, bevat straks de stand van de potmeter 
Dim a As Byte
Dim b As Word
Dim c As Word
Dim w3 As Word
Dim teller As Byte
Dim blok As Byte
Dim spoor [17] As Byte
 
 
 
 
Clear                         ;Wis alle RAM geheugen
DelayMS 500                   ;LCD stabilisering
 
start:
 
 
While 1 = 1                   ;Oneindig door blijven meten
  High Potmeter               ;Condensator die aan de potmeterpoort zit ontladen
  DelayMS 1                   ;Even wachten zodat condensator helemaal leeg is
  Weerstand = RCIn Potmeter, High   ;Geef RC oplaadtijd aan variabele 'Weerstand'
  Print At 1 ,1, "        "
  Print At 1 ,1, Dec Weerstand
  DelayMS 200
  PulseOut PORTA.2, Weerstand , High
  DelayMS 500
Wend                          ;Terug naar WHILE


en hier het progje om die adres lijn uit te lezen
dit word nog aangepast zodat ik ook de data lijn kan uitlezen
er is een minimaal verschil tussen de verstuurde data en ontvangen data
BV ik verzend 62 en ik ontvang 61 wat meer dan voldoende is om alsnog de chip te adresseren .

Device 16F628A                ;Gebruik een 16F628A type
Config INTRC_OSC_NOCLKOUT, WDT_OFF, PWRTE_ON, LVP_OFF, MCLRE_OFF
ALL_DIGITAL TRUE              ;Alle ingangen digitaal
 
;Variabele declareren
Dim data1 As Word         ;WORD variabele, bevat straks de stand van de potmeter
 
Clear                         ;Wis alle RAM geheugen
DelayMS 500                   ;LCD stabilisering
 
 
;Hoofdprogramma
Cls                           ;LCD scherm wissen
While 1 = 1                   ;Oneindig door blijven meten
 
  PulsIn PORTA.2,1,data1    ;Geef RC oplaadtijd aan WORD variabele 'Weerstand'
  Print At 1, 1, Dec4 data1, "   " ;Zet waarde van 'Weerstand' op het display
Wend                          ;Terug naar WHILE
 
End                           ;Einde programma

nu de rest aan het werken krijgen en hier een filmpke

[MEDIA=youtube]NqeRuJfQeUs[/MEDIA]
Na 5 herseninfarcten kan het raar zijn wat ik schrijf .Dat is niet mijn fout maar je bril kuisen kan helpen en eens twee keer overlezen .Versta je het nog niet kan ik altijd de Ierse versie er nog van geven die leest misschien iets makkelijker

Offline raf

  • Forumlid
  • Berichten: 5.216
  • Voornaam: raf
Re: verzorging depot asche aan zee
« Reactie #7 Gepost op: 11 december 2015, 15:39:39 pm »
filmpke want het werkt
de slaaf reageerd alleen op het juiste adres in dit geval alles tussen 1 en 61
en dan word alleen maar de data over gedragen (tussen de 1 en 10 is stroomloos)en boven de 10 maar < 100 is spanning naar de rails)
hoger dan 150 is een grote puls en die dient om de slaaf data naar de processor te laten zenden
 https://www.youtube.com/watch?v=odKftvkSVQE&feature=youtu.be
links boven het adres dat verzonden word
links als het niet goed is dus een verkeerd adres
en dan links boven 10 de data die verzonden is geworden

ikke een blije mens vandaag
Na 5 herseninfarcten kan het raar zijn wat ik schrijf .Dat is niet mijn fout maar je bril kuisen kan helpen en eens twee keer overlezen .Versta je het nog niet kan ik altijd de Ierse versie er nog van geven die leest misschien iets makkelijker

Offline dani

  • Forumlid
  • Berichten: 6.094
  • Game over. Insert coin.
  • Voornaam: Dani
Re: verzorging depot asche aan zee
« Reactie #8 Gepost op: 11 december 2015, 15:47:28 pm »
goed bezig !   Stapje voor stapje zal dat wel in orde komen zeker ?

Dat idee van de haakse printconnectortjes op de display print en dan een vlakke connector er op ga ik even lenen als ik mag :-)

Zijn die schakelaar met een weerstandsnetwerk geschakeld zodat je maar 2 draden naar je controller brengt en een analoge waarde inleest ?

Wat voor weerstanden gebruik je dan ?  Losse van verschillende waarden, of alles in serie met allemaal dezelfde waarde of zo een kant  en klaar weerstandsnetwerkjes van de SC reeks (in serie) ?  Ik zou wel eens de achterkant van da cahakelbordje willen zien als dat kan .
De kruik is te water gegaan...
De kruik is niet meer.

Offline raf

  • Forumlid
  • Berichten: 5.216
  • Voornaam: raf
Re: verzorging depot asche aan zee
« Reactie #9 Gepost op: 11 december 2015, 16:04:53 pm »
ja ik gebruik een weerstands netwerkje
je kunt geen arry gebruiken want je hebt meer plaats nodig
dus ik heb losse 4K7 weerstanden metaal film  direct aan de schakelaars zitten
ik had toch ergens een foto van geplaatst hoe ik het gedaan had maar ik maak een nieuwe


de massa draden heb ik in het midden afgetakt om deze zo kort mogelijk aan alle schakelaars bij elkaar te krijgen
ja en dit doe ik nog maar recent want mijn vorige hand sturing was nog met 5 draden

het werkt redelijk goed en je krijgt een deel waardes waar je dan in het programma iets mee kunt doen
een condensator van 100nF en een 220E weerstand van de pic pen naar de condensator
dan nog een 220K weerstand over de condensator



de bovenkant is de + van de 5 volt
maar dus het knoop punt tussen de weerstand en de schakelaar daar zit dus mijn lange draad
eens dit allemaal werkt gaat heel de zooi naar boven en word daar in een schakel paneel aangesloten
en dan komt het bakje weer vrij voor nieuwe projecten

gr raf
Na 5 herseninfarcten kan het raar zijn wat ik schrijf .Dat is niet mijn fout maar je bril kuisen kan helpen en eens twee keer overlezen .Versta je het nog niet kan ik altijd de Ierse versie er nog van geven die leest misschien iets makkelijker

Offline dani

  • Forumlid
  • Berichten: 6.094
  • Game over. Insert coin.
  • Voornaam: Dani
Re: verzorging depot asche aan zee
« Reactie #10 Gepost op: 11 december 2015, 16:17:34 pm »
... dat laatste is vermoedelijk om contactdender uit te sluiten ... je kan dat ook in de controller opvangen (de-bounce functie) maar dit is simpel en goedkoop en kost geen processorcycli.

Ik ben even gaan kijken naar DIP series weerstandsnetwerken, en met de waarde die jij gebruikt kan je in principe toekomen met   2stuks  van het type  BOURNS 4120R-001-472

Dat zijn arrays in  "IC-vorm" met 20 pins dus eigenlijk 10 weerstanden elk parallel op elkaar en volledig gescheiden.   Als je ze per kant afwisselend doorverbindt en van op die verbinding naar je schakelaars dan heb je hetzelfde effect.   (en er zijn ook 4108,4114, 4116 en 4118 modellen met resp.  4,7,8 en 9 weerstandjes).

check dit es :   http://www.mouser.com/ds/2/54/bourns_4100r-322555.pdf
Deze datasheet (op pag2) legt alles letjes uit

Dat was ook de reden waarom ik het vroeg, omdat het dan netjes op een printje te maken is.
De kruik is te water gegaan...
De kruik is niet meer.

Offline raf

  • Forumlid
  • Berichten: 5.216
  • Voornaam: raf
Re: verzorging depot asche aan zee
« Reactie #11 Gepost op: 11 december 2015, 16:20:45 pm »
nee dat heeft te maken met het ontladen van de condensator en contact dender heb ik geen last van want zolang je de knop ingedrukt houd gaat het programma niet verder

een printje en dergelijke allemaal mooi en wel maar je krijgt dan wel langere draden en ik zit op mijn schakel paneel reeds aan 1 meter lengte
en die weerstanden wil je zo dicht mogelijk bij je schakelaars hebben mijn gedacht

gr raf
Na 5 herseninfarcten kan het raar zijn wat ik schrijf .Dat is niet mijn fout maar je bril kuisen kan helpen en eens twee keer overlezen .Versta je het nog niet kan ik altijd de Ierse versie er nog van geven die leest misschien iets makkelijker

Offline dani

  • Forumlid
  • Berichten: 6.094
  • Game over. Insert coin.
  • Voornaam: Dani
Re: verzorging depot asche aan zee
« Reactie #12 Gepost op: 11 december 2015, 16:32:10 pm »
dat printje kan je natuurlijk ook in je schakelkastje inbouwen. Dan zijn de draadjes naar de schakelaars maar even lang als nu.

Maar 't was maar een idee, van mij moet je dat niet doen hoor.   Als het op deze manier ook werkt, waarom niet, het zal goedkoper zijn, sowieso.
Een 10 R netwerk kost al gauw een euro per stuk, terwijl je de "gewone" werstandjes hebt voor  3.. 4 cent of zo ?


Ik zat gewoon te denken aan een printje met centraal daar op de R-netwerken en dan de schakelaartjes van het print-montage type.  Alles netjes in 1 geheel en geen draden behalve de 2 naar de controller.
De kruik is te water gegaan...
De kruik is niet meer.

Offline raf

  • Forumlid
  • Berichten: 5.216
  • Voornaam: raf
Re: verzorging depot asche aan zee
« Reactie #13 Gepost op: 11 december 2015, 16:43:21 pm »
ja daar in heb je gelijk maar dit moet op het schakel paneel komen wat aan de baan hangt aan de voorkant
dus de onderlinge afstanden van de schakelaar worden max 1 meter en dan zijn die arrys niet zo handig
nu een massa kabel naar alle schakelaars en dan aan elke schakelaar een weerstand en dan verbinden maar met stukjes draad

Na 5 herseninfarcten kan het raar zijn wat ik schrijf .Dat is niet mijn fout maar je bril kuisen kan helpen en eens twee keer overlezen .Versta je het nog niet kan ik altijd de Ierse versie er nog van geven die leest misschien iets makkelijker

Offline dani

  • Forumlid
  • Berichten: 6.094
  • Game over. Insert coin.
  • Voornaam: Dani
Re: verzorging depot asche aan zee
« Reactie #14 Gepost op: 14 december 2015, 09:43:02 am »
ik denk niet dat je snapt wat ik bedoel, maar laat maar zitten...
De kruik is te water gegaan...
De kruik is niet meer.