Waar zijn we nu mee bezig ? Microcontrollers

Gestart door ToThePoint, 13 januari 2012, 10:27:28 AM

Geert


Een hoop printjes geëtst. Boren, solderen, en testen testen testen ...  tot er rook uit komt  8)







Geert



Schaal HO - digitaal zelfbouw - Favoriete Lok: V200 DB
Huidig project: LocoNet 16 poorten ingangen/uitgangen

raf

as ter rook uitkomt is het dus niet goed hé Geert
ik zit dus met een sensor probleem en hopelijk krijg ik het goed opgelost want anders dikke problemen
gr raf
If I make mistakes in "spelling"
Remember it's the pen, that's bad
Don't lay the blame on me.

loebaske

baaah als er rook uit komt dan weet je dat de stoomcentrale werkt  ;)

raf

ja hier werkt het  geven van rook signalen ook
juist 75 euro naar de pic hemel gestuurd
de ju al weer
ik ga zelf die dingen maken want ze proberen zoveel mogelijk in die rommel te steken wat ik niet nodig heb
dat de printjes te groot worden en ik krijg ze niet in mijn boten omdat ik nu kleiner begin te bouwen
dus programmeren maar en dan zelf de print in elkaar solderen
gr raf
If I make mistakes in "spelling"
Remember it's the pen, that's bad
Don't lay the blame on me.

PeterC

Citaat van: Geert op 11 mei 2015, 16:16:15 PM
...Een hoop printjes geëtst. Boren, solderen, en testen testen testen ...  tot er rook uit komt  8) ...

Geert,

Ziet er weer proper uit!

Een vraagje: stel dat je een baan hebt waar je reeds (vb) melder 1 tot en met 64 via een 'klassieke' S88 terug meldt.  De volgende 23 melders wil je met jou LocoNet terugmelder genereren.  Kan je de module eenvoudig op adres 65 (als eerste melder van je module) instellen en de module 'wijs maken' dat er slechts 23 van de 32 melders moeten worden gemeld?  Kan dit via een aangesloten LocoNet centrale of moet dit hardwarematig (via een PIC programmer) worden gerealiseerd?

Als je een proeframmelaar zoekt, wil ik wel testen  ;)
Groetjes, Peter


Gerolf

Mooi printje, maar ik zou minstens een deel in smd doen.
De 32 serieweerstanden zijn dan bvb 64 gaatjes minder te boren  ;)
Groeten uit "Marche-en-Bières"   ** Modelspoor is plezant **   TPIII-H0-DC-Zelfbouw

raf

kan dit kloppen want ik kan het niet testen voor ik het in de pic brand
probleem met die pulsgenerator van de real pic simulator om die in te stellen

Device 12F629
                   
Config INTRC_OSC_NOCLKOUT, WDT_OFF, PWRTE_ON,  MCLRE_OFF
All_Digital TRUE                                           
Xtal 4
Declare PortB_Pullups On
             
PORTB = %11111111             ;Maak alle poorten van PORTb hoog
TRISB = %11111111

Symbol relais1 = GPIO.0
Symbol relais2 = GPIO.1
Symbol led = GPIO.2
Dim W3 As Word

Clear
DelayMS 10

While 1 =1
PulsIn GPIO.3,1,W3
Toggle led             
If W3 <  800 Then
relais2 = 1
relais1 = 0

  Else
  relais1 = 1
  EndIf
If W3 >  900 Then
relais1 = 1
relais2 = 0 
Else
relais2 = 1
EndIf

Wend


met puls in lees ik dus de inkomende puls
als die kleiner  is dan 800 dan relais 1 aan trekken
is die groter dan 900 relais 2 aan trekken

zit die er tussen in niks doen
dit is het idee achter het programma

ik hoor het wel
gr raf
If I make mistakes in "spelling"
Remember it's the pen, that's bad
Don't lay the blame on me.

Gerolf

Ik ken niks van Pics, maar wel iets van AVR, maar naar mijn idee:

- uw ledje zal constant knipperen
- relais 1 zal vanaf 800 "aan" gaan - dus klapperen indien de pulslengte rond de 800 zweeft
- zelfde verhaal met relais 2, maar die klappert rond de 900
=> ik zou in de code geen "else" met het regeltje er onder gebruiken

ik zie ook niet goed hoe je de tijdmeting doet:
- ik denk dat je delayms 10 verdwaald is - hoort die niet in de While ... Wend lus ?
- hoor je w3 niet op te hogen (en op nul te zetten indien groter dan ... ) ?
Groeten uit "Marche-en-Bières"   ** Modelspoor is plezant **   TPIII-H0-DC-Zelfbouw

Geert

#878
Citaat van: PeterC op 11 mei 2015, 19:22:45 PM


Een vraagje: stel dat je een baan hebt waar je reeds (vb) melder 1 tot en met 64 via een 'klassieke' S88 terug meldt.  De volgende 23 melders wil je met jou LocoNet terugmelder genereren.  Kan je de module eenvoudig op adres 65 (als eerste melder van je module) instellen en de module 'wijs maken' dat er slechts 23 van de 32 melders moeten worden gemeld?  Kan dit via een aangesloten LocoNet centrale of moet dit hardwarematig (via een PIC programmer) worden gerealiseerd?


Peter,

Om een antwoord te geven op je vraag: hierbij een deel van de tekst die ik al langer klaar heb om de schakeling te beschrijven:

'Instellen Device bereik:


Dit is zeer eenvoudig gehouden. Bij eerste gebruik zal een terugmeld Device bereik ingesteld zijn van melder 1 tot 32. Als je nu een brugje zet op PROGRAM ADRES DEVICE en je toetst op de INTELLIBOX II schakelcontact 2 in (of uit), en je verwijderd het brugje, dan zal de Device bereik ingesteld zijn voor melders 33 tot 64. Schakelcontact 3 stelt een Device in voor melder bereik 65 tot 96 enz... Het komt er op neer dat elk schakelcontact een bereik van 32 melders instelt. Maximaal kan je met schakelcontact 128 een Device bereik instellen voor melders 4065 tot 4096. Je moet er op letten dat tijdens het instellen van een Device bereik er geen ander gebruiker (PC bijvoorbeeld) ook schakelopdrachten doorgeeft op LocoNet.
'

Peter,
De reden waarom ik nu overschakel voor de testen van LocoNet met printjes is om na te gaan wat de software doet als er botsingen zijn tussen verschillende LocoNet gebruikers die gelijke tijd het net gebruiken. Dit deel van de software testen kan ik niet op de PIC simulator. Vandaar mijn woord gebruik, 'tot er rook uit komt'.  ;) Maar ik weet dat je kan volgen als ik het over botsingen (de nederlandse term ) heb...

Geert


Schaal HO - digitaal zelfbouw - Favoriete Lok: V200 DB
Huidig project: LocoNet 16 poorten ingangen/uitgangen

raf

gerolf W3 is de variabele die word ingelezen door pulsein op poort 3 van de processor
als de waarde minder dan 800 is moet relais 1 aan trekken
als de waarde groter is dan 900 moet relais 2 aan trekken
voor de rest als de waarde van W3 tussen 800 en 900 zit moet er niks gebeuren
die else kan er eventueel nog wel tussen uit


Device 12F629
                   
Config INTRC_OSC_NOCLKOUT, WDT_OFF, PWRTE_ON,  MCLRE_OFF
All_Digital TRUE                                           
Xtal 4
Declare PortB_Pullups On
OSCCAL = 67             
PORTB = %11111111             ;Maak alle poorten van PORTb hoog
TRISB = %11111111

Symbol relais1 = GPIO.0
Symbol relais2 = GPIO.1
Symbol led = GPIO.2
Dim W3 As Word

Clear
DelayMS 10

While 1 =1
PulseIn GPIO.3,1,W3
Toggle led             
If W3 <  800 Then
relais2 = 1
relais1 = 0
  EndIf
If W3 >  900 Then
relais1 = 1
relais2 = 0 
EndIf

Wend

de delayms die staat daar op zijn plaats wand die zorgt dat er na het opstarten eventjes tijd is om de impulsen van de ontvanger te stabiliseren en dat moet maar 1 keer per opstart gebeuren
het kan zijn dat die tijd langer moet worden als de pulsen langer tijd nodig hebben om te stabiliseren
If I make mistakes in "spelling"
Remember it's the pen, that's bad
Don't lay the blame on me.

Geert

#880
Citaat van: raf op 11 mei 2015, 20:41:24 PM
Device 12F629

...
Declare PortB_Pullups On
             
PORTB = %11111111             ;Maak alle poorten van PORTb hoog
TRISB = %11111111


Net nog is nagekeken in Data sheet 12F629, deze heeft geen PORTB...

Geert
Schaal HO - digitaal zelfbouw - Favoriete Lok: V200 DB
Huidig project: LocoNet 16 poorten ingangen/uitgangen

Gerolf

Citaat van: raf op 11 mei 2015, 21:59:35 PM
W3 is de variabele die word ingelezen door pulsein op poort 3 van de processor

En wordt die door die instructie dan met 1 opgehoogd, of hoe geraakt hij aan de waarde 800/900 ?

Het is toch de bedoeling dat die relais reageren op servo-PWM-pulsen, niet?
Dus zijn 800/900 de drempels tegenover 65536 van een volledige periode?
... en je while-wend-lus duurt 1/65536 van diezelfde periode?

Zit er geen interne timer in die Pic ? Dat lijkt me veel makkelijker werken ...
Groeten uit "Marche-en-Bières"   ** Modelspoor is plezant **   TPIII-H0-DC-Zelfbouw

Harm

#882
Citaat van: Gerolf op 12 mei 2015, 10:00:21 AM
hoe geraakt hij aan de waarde 800/900 ?

Een RC besturing geeft een puls die in lengte verschilt afhankelijk van de uitslag van de stick.
Stuurknuppel geheel naar je toe geeft bijvoorbeeld 500
Midden is 850
Geheel van je af is misschien wel 1200

Omdat de midden positie niet zo nauwkeurig is neem je een wat bredere band waarbij er niet moet worden gereageerd bijv: 800-900.

Raf probeer dit eens:

If W3 < 800 Then relais1 = 0
If W3 >= 800 Then relais1 = 1

If W3 >  900 Then relais2 = 0 
If W3 <= 900 Then relais2 = 1

Verder zet je met die TRISB alle poorten als input (=1), je moet wel de led en die relais als uitgang (=0)  benoemen;
TRISB wordt dan 11111000

Kijk in hoofdstuk 3 in:  http://ww1.microchip.com/downloads/en/devicedoc/41190c.pdf  voor benoemen van in- en uitgangen





raf

hoi harm

ja zo kan het ook
en ik heb die poorten veranderd al nam hij portb wel aan
nu is het zo
GPIO = %11111111             ;Maak alle poorten van PORTb hoog
TRISIO = %11111000

nu heb ik het zo gedaan en alles compilde dus het zou goed moeten zijn
Device 12F629
                   
Config INTRC_OSC_NOCLKOUT, WDT_OFF, PWRTE_ON,  MCLRE_OFF
All_Digital TRUE                                           
Xtal 4
Declare PORTB_Pullups On
OSCCAL = 67             
GPIO = %11111111             ;Maak alle poorten van PORTb hoog
TRISIO = %11111000

Symbol relais1 = GPIO.0
Symbol relais2 = GPIO.1
Symbol led = GPIO.2
Dim W3 As Word

Clear
DelayMS 10

While 1 =1
PulseIn GPIO.3,1,W3
Toggle led             
If W3 < 800 Then relais1 = 0
If W3 >= 800 Then relais1 = 1

If W3 >  900 Then relais2 = 0 
If W3 <= 900 Then relais2 = 1


Wend

en hoe gek het ook klinkt maar om de pullups aan te zetten moet ik portb kiezen
want anders werkt het niet
misschien doe ik iets verkeerd maar ik krijg het met geen stokken gecompiled als ik het anders doen

gr raf
If I make mistakes in "spelling"
Remember it's the pen, that's bad
Don't lay the blame on me.

raf

#884
Gerolf

telkens deze instructie aan gesproken word (PulseIn GPIO.3,1,W3 )
word de huidige status van de pulsbreedte in W3 geladen
daar ik twee relais aan stuur maakt de frequentie niet zoveel uit ze behouden hun laatste stand
later kan ik nog een fail safe bij programmeren als het signaal moest weg vallen
maar daar heb ik wel reeds over gelezen maar dat is niet zo eenvoudig
omdat de pulsein reageerd op de op en neergaande flank van het signaal
komt er geen signaal dan is er ook geen reactie

de 12f629 heeft een interne clock van 4Mhz dacht ik daarom ook de keuze in het begin van het programma

gr raf die straks eens gaat proberen om 2 ledjes te sturen met een servo tester

If I make mistakes in "spelling"
Remember it's the pen, that's bad
Don't lay the blame on me.