Nieuws:

Nu in MSM 244 TEST: B-MODELS NMBS reeks 51

Hoofdmenu

Analoog via PC aansturen

Gestart door raf, 21 december 2013, 09:55:11 AM

raf

hallo

een oud topic maar ik begin juist met pic prossesoren dus zit ik hier normaal goed

oude baan met electronica en sturing van 20 jaar geleden
1 pc (286)met win 95
en gwbasic omdat ik daar in heb leren programmeren

printerpoort als uitgang 8 bits
makkelijk en redelijk betrouwbaar

probleem is dat de pc op de vuilhoop ligt en er dus een nieuwe moet komen(laptop is reeds aan geschaft met ME als systeem er op)
printer sturing werkt maar de oude electronica er achter aan is een bende

principe van programma is eenvoudig een 8 maar eigenlijk een 6 bits sturing
de 2 andere gebruik ik om iets te doen

de 6 bits gebruik ik als adressering
bit 7 is het iets laten doen bit
en bit 8 is schakel bit van 2 naar 3 rail (gelijkstroom )en 3 rail is standaard

nu wil ik dus met die pic procesoren beginnen  omdat ik veel dezelfde schakelingen nodig heb en eens het programma klaar is is het eenvoudig om de printjes te maken en in elkaar te zetten

de detektie gebeurt via een toetsenbord en met readschakelaars op de baan die ik wil gaan vervangen door IR (schaduw station) en stroom detectie

wissels en trein besturing via de pc de beveiliging via de pic processoren

VB
pc wil een trein laten vertrekken en stuurt adres naar de bus
betreffende pic krijgt het signaal en wil de trein laten vertekken maar het voorliggende blok is bezet
de trein blijft wachten maar als het blok vrij is vertrekt de trein toch als nog
de achter liggende trein kan niet vertrekken voor het blok is vrij gegeven 
voorlopig gebruik id een 7 bits programatie omdat ik nu meer 3 rail dan 2 railloco's heb en ik moet ergens beginnen dus daarom een iets makkelijkere detectie en programatie


gedachte sturing
led uitgang is rood
een uitgang geeft signaal naar achter liggende pic(bezetmelding)
de pc geeft via de adres bus aan de pic opdracht om de trein te laten vertrekken
bezetmelding voor liggende blok is bezet
pic schakelt een led op oranje (zolang het voor liggende blok bezet is)
bij vrijgave blok gaat de led op groen
en een uitgang stuurt een 3055 zodat de trein kan gaan rijden

bij bedienen (bezetmelder)geeft de pic zijn bezet melding aan het achterliggende blok vrij
en zet zichzelf terug op rood (3055 niet bedient)
de led gaat terug op rood staan
pic wacht terug op bevel van de pc en monitort de adres bus


er is dus 1 ingang en dat is de voorliggende blok bezet melding
dan is er de adres bus (7 ingangen)
dan is er het set bit(bepaald wat er moet gebeuren)
uitgang led rood
uitgang led oranje
uitgang led groen
uitgang 3055 sturing
uitgang bezet melding blok

kan een pic dit aan ???
want mij ervaring met deze dingen is nul,nul
ik heb een programmer besteld

en hopelijk kan ik hier mee doen wat ik zou willen

dan iemand die mij wat op weg zou kunnen helpen wat programatie aan gaat
ik was een crack in Gwbasic dus dat zou wel vlotjes moeten lopen dacht ik

gr raf die zich nog wat gaat verdiepen in een pic

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

Gerolf

Ik heb even van je vraag een apart topic gemaakt  ;)

Misschien is het een beetje zonde dat je die spullen al gekocht hebt.

Je opzet klinkt interessant, maar ik vrees dat je enkele problemen kan tegenkomen:
- een parallelle printerpoort ga je steeds moeilijker vinden.
- een microcontroller programmeren gaat meestal via USB (of RS232)
- er bestaan grofweg 2 grote soorten (fabrikanten) van microcontrollers: PIC (=microchip) en AVR (=Atmel)

Als je goed bent in Basic: Er bestaan programmeeromgevingen waarbij je in een soort van Basic schrijft, en je pakket vertaalt dit naar een programma dat de microcontroller begrijpt. Ik heb Bascom AVR, ik weet niet of er iets dergelijks voor PIC bestaat.

Je vraagt "kan een PIC dit aan ?" Er zijn véél types microcontrollers, binnen de twee "families".
... dus je zal allicht wel een PIC (of AVR) vinden die dat aankan. En je kan die dingen ook met elkaar laten overleggen  ;)

Het onderscheid tussen de verschillende types gaat over
- hoeveelheid geheugen (=programmageheugen, RAM, EPROM, ...)
- voedingsspanning, maximale kloksnelheid, energiezuinigheid, ...
- communicatiekanalen en -methodes (RS232, ISP, I2C, CAN, 1Wire, ...)
- aantal poorten en specifieke functies (timers en tellers, interrupts, ADC, ...)

Als ik jou was zou ik me eerst nog wat documenteren, dan een microcontrollerfamilie kiezen, dan een type (of enkele types), ...

Op dit forum zitten zowel mensen die vertrouwd zijn met PIC als met AVR
Groeten uit "Marche-en-Bières"   ** Modelspoor is plezant **   TPIII-H0-DC-Zelfbouw

Geert

Welkom in het fascinerende µC wereldje.

Maar ik vrees net zoals Gerolf dat je op je nieuwe laptop geen parallelle printer en een seriële RS232 poort meer zult vinden.

Je hebt blijkbaar al gekozen voor een PIC µC. Op zich geen slechte keuze, ik gebruik deze ook.  ;) PIC µC zijn redelijk krachtige µC, dus ik denk dat je wensen daar wel in geprogrammeerd geraken.

Voor de rest heeft Gerolf al veel gezegd (geschreven)

Het aanleren van µC heb ik gedaan via diverse cursussen op het net, maar dat was wel in assembler en een beetje C en wat JAL (via Peter (PeterC op dit forum))

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

raf

#3
hallo

eventjes over de laptop
dat is een oudje daarom draait er ook ME op omdat deze zo nog netjes de printerpoort aan spreekt
nieuwer dan ME heb je enorm problemen om de printerpoort vanuit basic aan te spreken
ik gebruik de poort als een 8 bits bus onder de baan
7 zijn voor het adres en 1 voor wat er moet gebeuren
dit werkt perfect met de oude materialen maar er zitten nogal veel relais onder die dus veel stroom verbruiken
er worden steeds 2 relais geschakeld als een soort van flipflop en dat gebruikt dus enorm veel stroom
ik heb eventjes een stukje geschreven in een programma (proton lite)
en het blijkt toch redelijk mee te vallen dacht ik
zie hier de bron code waar ik mee bezig geweest ben

Device 16F628A                ;Gebruik een 16F628A type
Config INTRC_OSC_NOCLKOUT, WDT_OFF, PWRTE_ON, LVP_OFF, MCLRE_OFF
All_Digital TRUE              ;Alle ingangen digitaal

;adres bepaling van de chip
;                     76543210 ;geheugen steuntje voor de te setten bids
;schakel bit is 00000001
;hoe moet ik start als label instellen ?????                         ;label om procedure te starten
Symbol adresset =0
Symbol adres=0000001        ;adres =0000001  dit varieerd naargelang de pic gebruikt word
Symbol OFF  = 0               ;UIT
Symbol On   = 1               ;AAN


Symbol trein = PORTA.0         ;Poort A.0 heeft nu de naam trein
Symbol LEDrood = PORTA.1       ;Poort A.1 heeft nu de naam LEDrood
Symbol LEDoranje = PORTA.2     ;Poort A.2 heeft nu de naam LEDoranje
Symbol LEDgroen = PORTA.3      ;Poort A.3 heeft nu de naam LEDgroen
Symbol bezetmelder = PORTA.4   ;Poort A.4 heeft nu de naam bezetmelder   
Symbol bezetdetect = PORTA.5       ;Poort A.5 heeft nu de naam bezetdetect 
Symbol vrijgave = PORTA.6       ;Poort A.6 heeft nu de naam vrijgave
Symbol S1   = PORTB.0         ;Poort B.0 heeft nu de naam S1
Symbol S2   = PORTB.1         ;Poort B.1 heeft nu de naam S2
Symbol S3   = PORTB.2         ;Poort B.2 heeft nu de naam S3
Symbol S4  = PORTB.3        ;Poort B.3 heeft nu de naam S4
Symbol S5  = PORTB.4         ;Poort B.4 heeft nu de naam S5
Symbol S6  = PORTB.5         ;Poort B.5 heeft nu de naam S6
Symbol S7   = PORTB.6         ;Poort B.6 heeft nu de naam S7
Symbol SetBit=PORTB.7         ;Poort B.7 heeft nu de naam setbit



;                 76543210
PORTA = %11100000             
TRISA = %11100000             ;Alleen PORTA.0 - porta.4 als uitgang portA.5 word een bezetdetect porta.6 vrijgave
TRISB = %11111111             ;Dit zijn nu allemaal ingangen

PortB_Pullups On              ;On-chip pull-up weerstanden actief
Clear                         ;Wis alle RAM geheugen

While 1 = 1                   ;Oneindige lus
If bezetdetect = On Then trein =OFF   And LEDrood = On  And bezetmelder = On
If S1=0 And S2=0 And S3=0 And S4=0 And S5=0 And S6=0 And S7=1  Then adresset =0000001
If adresset = adres Then GoTo start
setbitbit =0
  Wend
 
;start procedure
start:
SetBit =1
If bezetdetect = On Then trein =OFF   And LEDoranje = On  And bezetmelder = On ;start secuentie gestart maar volg blok is bezet

If bezetdetect = OFF And SetBit=1 Then trein =On   And LEDgroen = On  And bezetmelder = On ;start secuentie gestart en trein begint te rijden blok blijft nog bezet
If vrijgave =0 Then LEDrood =1  And bezetmelder =OFF  And Wend ;trein is vertrokken en heeft vrijgave rail berijkt dus het blok is vrijvan obstakels
GoTo start


kan eventueel eens iemand kijken of dit kan werken aub

gr raf


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

raf

hallo

der zit nog een fout in want ik detecteer het set bit niet
ik zet het wel terug op 0 en ook op 1 maar dit zonder detectie van het betreffende bit zelf
dus terug naar het ontwerp dan maar
er zal natuurlijk nog een betere manier zijn om de adres bus te detecteren maar dat gaat nu eventjes te ver

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 zie dat je Basic nog steeds goed kent, en het ziet er logisch uit  :)

Toch heb ik de indruk dat je wil lopen voor je kan stappen
Heb je een pakket om dit programma in een microcontroller te steken, zodat hij het kan uitvoeren?

In Bascom AVR (Basic Compiler voor AtMel processoren) zou je een hoop foutmeldingen krijgen
Ik wil je echt aanraden om eerst op zoek te gaan naar een voor jou geschikte programmeeromgeving
Als je die gevonden hebt, en jezelf wat hebt geleerd om er mee om te gaan,
zal je zien dat je op verschillende manieren een oplossing voor je blokbeveiliging kan bereiken

Wat je relais en zo betreft: je weet waarschijnlijk wel dat een microcontroller niet krachtig genoeg is om die rechtstreeks aan te sturen, je zal (transistor-)eindtrapjes moeten maken.
Zorg ook voor een aparte voeding voor je microcontroller, zodat hij geen last heeft van de relais-schakelpulsen  ;)
Groeten uit "Marche-en-Bières"   ** Modelspoor is plezant **   TPIII-H0-DC-Zelfbouw

raf

hallo gerolf

mijn programmer is besteld (zie vorige posting)

mijn werk is voorlopig nog op ford en ik doe elektronica herstelling aan de wagens dus ik weet wel zo een beetje en ben niet echt een leek
het programmeren heb ik vroeger veel gedaan want ik heb zelf mijn  eigen computer in elkaar gesoldeerd op basis van de Z80 processoren
en dat was dus niet printjes steken maar de printjes zelf bouwen en geheugentjes stapelen
toen was er alleen de comodore 32 die in de handel te koop was en ik was reeds daar voor bezig dus ik draai reeds een lange tijd mee

het probleem is dat met de nieuwe ontwikkelingen men nu veel meer kan dan vroeger (die pic heeft meer geheugen dan mijn computer uit vervlogen tijden (1K))

als programmers gebruik ik proton of MPlab ide 8.00
proton vind ik makkelijker werken dus waarscheinlijk zal ik met dat programma verder gaan
mijn programma is reeds getest en het geeft geen fouten
dan bedoel ik dat er geen loops vast lopen of dat hij oneindig blijft wachten
zo op zich is het een niet te moeilijk programma maar gwbasic en dit is toch niet hetzelfde
met gwbasic kan ik naar regels springen en dat heb ik hier niet

een relais stuur ik aan met een BC 547 en de treinen met een tip145 of een 2N3055 welke meer dan voldoende zijn voor deze klus

ik vind het spijtig dat er hier niet veel programmatie getoond word en dat over program code ???? daar kun je geen claim op leggen want met een goto kun je nu  niet zoveel anders doen dan waar de bouwers van de code mee gedacht hebben
maar zoals reeds geschreven zullen er veel programmas zijn die wel werken maar met haken en ogen aan elkaar hangen
en de erro's onderdrukken das ook een manier om toch een werkbaar programma te hebben

bij mij is het de bedoeling om voor de blokken een progje te schrijven en een µp te programmeren en onder elk blok komt zo een printje(in de buurt van de adresbus)
voor de stations neemt de pc het over en het schaduw station (is een fifo )daar komt ook een progje voor geschreven en komt ook onder de baan
zo heb ik kleine overzichtelijke programmas in µp zitten en heb ik niet 1 groot programma
eens zien of ik het hoofd programma kan plaatsen zoals het er nu bij staat
maar das een hele brak basic code

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

raf

hallo

vreemd verschijnsel doet zich voor in bascom
ik krijg errors bij de check maar niet op programma maar op de text die ik heb toegevoegd

blijkbaar kent bascom de (;)funktie niet maar werkt mischien met (rem)als commando
dit is dan niet een fout in het programmeren maar gewoon een ander programma wat de programmatie niet verstaat
bascom zou wel eens alleen C verstaan en geen basic en dan is dus het programma waardeloos voor mijn toepassing

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

Gerolf

In Bascom gebruik je ' voor je begeleidende tekst  ;)
Bascom verstaat Basic, geen C. Maar er zijn verschillen tussen Bascom-Basic en bvb GWBasic ...

Maar bij mijn weten kan je met Bascom geen PIC-controller programmeren !
Groeten uit "Marche-en-Bières"   ** Modelspoor is plezant **   TPIII-H0-DC-Zelfbouw

raf

ik heb bascom avr ide

en daar kan je wel degelijk met F4 naar de pic schrijven maar via de paralellepoort
en dat is voor mijn programmer niet bruikbaar omdat die usb heeft
met F2 kan je een simulatie doen

ik ge gewoon proton blijven gebruiken want daar herken ik het meeste wat de basic aan gaat
hopelijk volgende week mijn programmer in de bus en kan ik beginnen met programmeren

een ledje laten pinken als programma vind ik absurd want ik heb knipper ledjes die dat zelf doen

maar er zitten inderdaad verschillen tussen proton en bascom
bij proton gebruik je ; voor je begeleidende text
Symbol trein = PORTA.0         ;Poort A.0 heeft nu de naam trein

en deze regel geeft helemaal geen foutmelding in proton maar in bascom wel
bascom werkt met dim als instructie en proton met symbol
dus twee verschillende talen mijn gedacht
maar het gaat goe komen ik voel dat aan mijn water hahahaha

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

argilla

Citaat van: Gerolf op 22 december 2013, 10:44:42 AM
In Bascom gebruik je ' voor je begeleidende tekst  ;)
Bascom verstaat Basic, geen C. Maar er zijn verschillen tussen Bascom-Basic en bvb GWBasic ...

Maar bij mijn weten kan je met Bascom geen PIC-controller programmeren !


Gerolf Basic en GW basic dat is toch die taal van de VIC 20 de C64 en ZX81 toch.....bedoel  IF....THAN en GO TO...... PEEK and POKE


of vergis ik mij ? destijds werden die programmas over de radio verstuurd naar de gebruikers.
Wist niet dat het nog in gebruik was als programmeer taal.
argilla
H0, On30, 1/29, Gn15

Geert

Ik kan je niet helpen met Basic, zoals hiervoor al aangehaald ik programmeer vooral in assembler en soms in C.

Ik lees dat je goed op de hoogte bent van auto elektronica, dan is de CAN bus je zeker niet vreemd. Je weet toch dat er PIC µC zijn met ingebakken CAN bussen. Mogelijk kan je daar iets mee doen met je ervaring daarin als communicatie middel...

Mogelijk toch is overwegen om over te schakelen naar C, en waarom niet in assembler, als je zelfs in het verleden een PC ineen soldeerde.

Citaat van: raf op 22 december 2013, 10:18:46 AM
ik vind het spijtig dat er hier niet veel programmatie getoond word en dat over program code ????

Ik geef mijn code meestal wel vrij op dit forum of op mijn site, stel nu eens dat ik dit niet doe en morgen (hopelijk niet) dood val, zo heeft er niemand er iets aan.  :D

(werkt je punt op je toetsenbord soms niet? het is niet belangrijk, maar stoort me wel...)

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

Gerolf

#12
@Argilla: Basic bestaat nog steeds, hoor, maar is geëvolueerd in verschillende richtingen.
Visual Basic is bijvoorbeeld een object-georiënteerde programmeertaal

Citaat van: raf op 22 december 2013, 11:00:25 AMmaar er zitten inderdaad verschillen tussen proton en bascom
bij proton gebruik je ; voor je begeleidende text
Symbol trein = PORTA.0         ;Poort A.0 heeft nu de naam trein
bascom werkt met dim als instructie en proton met symbol

Ik denk dat er veel verschillen zijn, ja  :)
In Bascom gebruik je bvb "trein alias porta.0" als je iets een handigere (interne) naam wil geven
Dim dient om geheugenruimte voor variabelen te reserveren: dim bf as byte, wf as word, wg as word, if as integer, ...
Const pi=3.1415926535 dient dan weer om een waarde niet telkens te hoeven herhalen

labels zijn namen, afgesloten met ":" - zoals "MijnLabel25:" en die kan je gebruiken om naar te springen met goto of gosub

Als je Bascom avr ide hebt, heb je ook de helpfile. Daarin staan "language fundamentals" en "language reference"

Maar nogmaals: volgens mij kan je met Bascom geen PIC, maar alleen Atmels programmeren.
Bascom ondersteund trouwens ook 2 chips met CAN:
de AT90CAN32 en AT90CAN128 (het laatste getal is de hoeveelheid programmageheugen in kbyte)
Groeten uit "Marche-en-Bières"   ** Modelspoor is plezant **   TPIII-H0-DC-Zelfbouw

raf

Hallo

Ik heb dus proton om mee te werken en daar kan ik dus wel mee programeren (.) kijk het werkt wel.
dat ik basic gebruik is gewoon om dat er zoveel talen zijn dat ik met deze gewoon was om mee te werken.
je vergeet pascal ,c+ , c++ ,comordore basic ,COBOL, Algol,  Fortran,  Java, SQL , Progress, 4GL,Prolog.,en zo zijn er nog wel wat.
heel de machine taal van de Z80 is nu ook niet eenvoudig om mee te werken.
al kende ik er wel ongeveer 80% van toen in de tijd.
en ja we konden zelfs over een 27 Mhz bakje code versturen over heel de wereld als het moest en het werkte nog goed ook.
de processoren die we gebuikte die haalde we in een legerstock die raketten had opgekocht .
die in de winkel waren 4 Mhz en die militaire waren 18 Mhz wat een heel verschil maakte
maar dat is nostalgie en daar kijk ik dus wel graag naar terug want het was een leerrijke tijd maar daar kom ik dus nu niet verder mee.

ik moet nu wachten tot de processoren binnen zijn en de programmer voor ik verder kan en dan zien of het werkt.

en sorry nog eens voor dat puntje maar op andere forums zijn der die in verkorte woordjes typen en dat is nog veel ergerlijker.
dus  W8 .

gr raf en hop naar het volgende programmatje.


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

Geert

Goe bezig Raf, nu nog elke zin beginnen met een hoofdletter  ;)

Je moet wel rekening houden, dat je op je PIC-programmer niet elke type µC kan programmeren. Ik heb even op het internet gekeken naar je programmer, en deze kan heel wat µC niet programmeren, die ik nu bijvoorbeeld wel gebruik op een andere programmer.

Dus, kijk eerst maar eens naar deze lijst voor je PIC µC besteld...



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