G.I.P: automatisch schaduwstation zonder wissels

Gestart door conducteur, 09 mei 2012, 21:33:26 PM

conducteur

Gedaan met prutsen, nu een Leadshine driver gekocht (DM442)
Rian 2-Rail DCC NMBS TPIII
Grote Modeltreinruilbeurs Blankenberge Pasen 2016
Zaal Forum

HYA

Ben het al een tijdje afgeleerd om te proberen met prutsen of met goedkopere en dikwijls kwalitatief mindere oplossingen. Veelal verlies je hopeloos veel tijd en moet je uiteindelijk toch uitwijken naar kwaliteit en heb je meer uitgegeven dan nodig was.

conducteur

De driver kun je verbinden met een pc (gelukkig had pa nog een rs232 poort op z'n pc staan :D ). En het ding draait fantastisch (tot 2000 tr/min zonder belasting aan, en volgens mij bij wat tragere beweging (ik heb aan enkele omwentelingen per seconde voldoende) voldoende koppel om het spel te doen draaien...
Rian 2-Rail DCC NMBS TPIII
Grote Modeltreinruilbeurs Blankenberge Pasen 2016
Zaal Forum

conducteur

#453
Ik denk de oplossing te hebben gevonden! Blijkbaar is de pickit 2 ook in te schakelen als rs 232 terminal, geen specifiek usb kabeltje nodig! Zeker dit weekend eens te testen!


Yes! het werkt!!!
Rian 2-Rail DCC NMBS TPIII
Grote Modeltreinruilbeurs Blankenberge Pasen 2016
Zaal Forum

conducteur


Het display en de knoppen communiceren al via rs 232 met de computer... Dit deel werkt dus al! http://www.treinbaanrian.be/html/16f887_6_Serial_tekst_commando.htm werkt...
(met dank aan Peter die me nogal wat geholpen heeft voor dit deel)...


Op naar de 2de microcontroller, die de sturing verzorgt voor oa de stappenmotor en al de rest  :D
Rian 2-Rail DCC NMBS TPIII
Grote Modeltreinruilbeurs Blankenberge Pasen 2016
Zaal Forum

Dirky

leuk te lezen dat er vooruitgang wordt geboekt... Nu nog foto's van het "ding" als het werkt met locomotieven er op...  ;)

MickeyMouse


conducteur


rs 232 terminal...

toelichting:


Rx: telkens de microcontroller een verandering detecteert (indrukken en loslaten) van de drukknoppen stuurt hij dat door via rs 232
Tx: Als bit 7 geset is is het een "commando"..., C0 wist display, A0-AF plaatst de cursor op de eerste rij, waarbij de low_nibble duid op welke kolom de cursor moet staan. Idem voor B0-BF maar dan voor de tweede rij... De rest zijn strings gecodeerd in hex code




Dit zijn de enige boodschappen die in de µC "ingebakken" zitten, en bij opstart even weergegeven worden, de rest zal via rs232 komen.



De pickit 2 programmer dient als omzetter usb-rs232, boodschap verstuurd en op de juiste plaats gezet op de display
hex: (A1 48 65 6C 6C 6F 20 53 65 72 69 61 6C 20 57 6F 72 6C 64 )  (A1= eerste rij 1/2de kolom (afhankelijk van hoe je begint te tellen))



C0: display gewist



omdat jullie het zo vriendelijk vragen  ;)
Rian 2-Rail DCC NMBS TPIII
Grote Modeltreinruilbeurs Blankenberge Pasen 2016
Zaal Forum

Steam.N

Leuk dat er in die electronica leven komt, Rian !
Eens die dingen met mekaar babbelen, ben je vertrokken !
Dan wordt het wat logisch denken en structureren, en vlieg je vooruit !
Goeie moed  ;)
Knutselgroeten !  Jean       TP-I (B) & TP-II (DR) - N - DC - Handbediening - Zelfbouw  { Sedelocus - De Feniks - Pira-N's Crossing - Turnhout NEEB - Scrap Yard }

PeterC

#459
Rian,

Dat display...  ...Is dat er eentje uit de tijd van '14 - 18'?  :) :) :)

De chinaman levert er binnenkort een tiental nieuwe en ik zal je er eentje opsturen (om je foto's wat moderner te maken  ;) ).

Je code: kuis het commentaar eens op.  Wat niets (of niets meer) met je prog te maken heeft: weg ermee!


Benieuwd naar het vervolg!


[Edit1] Ondertussen, dankzij jou, al zodanig aan die PICKit verkocht dat ik mijn PICStart Plus van de hand ga doen  ;)

[Edit2] Zeg niet dat je alle ASCII codes als hex in geeft: probeer eens MicTerm, RealTerm of Termite als terminal.

Groetjes, Peter


conducteur

Citaat van: PeterC op 24 februari 2014, 22:50:45 PM
Rian,

Dat display...  ...Is dat er eentje uit de tijd van '14 - 18'?  :) :) :)

De chinaman levert er binnenkort een tiental nieuwe en ik zal je er eentje opsturen (om je foto's wat moderner te maken  ;) ).

Je code: kuis het commentaar eens op.  Wat niets (of niets meer) met je prog te maken heeft: weg ermee!


Benieuwd naar het vervolg!


[Edit1] Ondertussen, dankzij jou, al zodanig aan die PICKit verkocht dat ik mijn PICStart Plus van de hand ga doen  ;)

[Edit2] Zeg niet dat je alle ASCII codes als hex in geeft: probeer eens MicTerm, RealTerm of Termite als terminal.
-Dat display is nog maar 10 jaar ze (http://www.nieuwsblad.be/article/detail.aspx?articleid=DMF20140111_028).
-Bedankt alvast voor het nieuwe exemplaar
-commentaar verwijderen, doe ik zeker  :)
-Het vervolg komt er zeker  ;)
-Pickit: ik was me maar half bewust dat deze voorzien was van de UART, en er zou blijkbaar ook een primitieve 3 kanaals logic-analyzer inzitten. Die eerste ben ik blij dat ik die gevonden heb, de logic analayzer nog niet gebruikt :p allicht zullen die ook in V3 zitten?
-ASCII code: http://www.swingnote.com/tools/texttohex.php heeft al veel geholpen  (de terminal van de pickit 2 kan of strings of Hex aan, en met die eerste kun je niet zo simpel de "commando's " doorsturen


@Jean: bedankt

Rian 2-Rail DCC NMBS TPIII
Grote Modeltreinruilbeurs Blankenberge Pasen 2016
Zaal Forum

PeterC

Citaat van: conducteur op 24 februari 2014, 23:12:33 PM
...de terminal van de pickit 2 kan of strings of Hex aan, en met die eerste kun je niet zo simpel de "commando's " doorsturen ...

Als je een ASCII karakter met een waarde groter dan 128 (decimaal) wil doorsturen vb 0xC0, dan zet je dat getal naar decimaal om (192 in dit geval) en typ dit in je terminal met de 'Alt' toets ingedrukt.  Met de 'alt' toets ingedrukt kan je elk mogelijk karakter typen (als je de ASCII code kent).
Groetjes, Peter


conducteur

#462
Ook de 2de µC gaat vooruit. De stappenmotor draait toch al, aangestuurd door de µC. Ik zorg wel nog voor een uitgebreid verslag in de loop van de vakantie als ik wat verder gevorderd ben.
Rian 2-Rail DCC NMBS TPIII
Grote Modeltreinruilbeurs Blankenberge Pasen 2016
Zaal Forum

conducteur

http://www.treinbaanrian.be/html/main.htm


Stap voor stap nu het programma testen en de fouten eruit halen, maar deze vind ik niet direct:


De motor loopt bij het aanzetten richting nulpunt, activeert microswitch en zet positie op nul (staat normaal al op nul) en start in de andere richting. (tot hier werkt het al)


Dan kijk ik per spoor of er een trein aanwezig is. Je zou dit ook kunnen opslaan in het geheugen maar als je een trein bijplaatst/wegneemt in het systeem klopt die info niet meer, dus verkies ik het om bij het opstarten dit eens te controleren.


De posities per spoor staan in een array (die ik tijdelijk in een soort random volgorde heb gezet, om het probleem op te sporen) en één voor één worden deze waarden uit de array gehaald en in de variabele "eindpositie" gezet. De procedure berekent dan hoeveel stappen gezet moeten worden tot aan de te bereiken positie en in welke draaizin dit moet gebeuren. (de driver staat op 800 stappen per omwenteling, dit geeft een vloeiende loop met nog voldoende kracht en snelheid). Echter lijkt het alsof de richting altijd op "1" blijft staan...


Eerst had ik een versie van de procedure waarbij het verschil tussen "positie" (=waar de plaat nu staat, op x stappen van het nulpunt) en eindpositie(=de te bereiken positie) in een variabele werd gestopt en gekeken werd of deze groter dan of kleiner dan 0 is, en dacht dat het probleem zat in het verschil tussen een signed word en een word, maar dat lijkt niet volledig de oorzaak te zijn?
Rian 2-Rail DCC NMBS TPIII
Grote Modeltreinruilbeurs Blankenberge Pasen 2016
Zaal Forum

PeterC

In je programma declareer je 2 variabelen: positie en eindpositie


;-------------------------------------------------------------------------------
;variabelen voor programma
;-------------------------------------------------------------------------------
var word eindpositie
var word positie


Iets verder declareer je 2 variabelen in je procedure: positie en eindpositie


procedure verplaatsen (word in positie, word in eindpositie) is


2 keer dezelfde variabelen.  Weet jij welke wordt gebruikt?  De compiler vermoedelijk ook niet...

Gebruik ofwel andere namen voor je globale variabelen ofwel voor die in de procedure.

Een ander probleem zie ik niet direct...

Groetjes, Peter