Nieuws:

Nu in MSM 244 REPORTAGE: De Nederlandse Modelspoordagen * A4 Dioramawedstrijd * Virtuele Messe 2024

Hoofdmenu

Waar zijn we nu mee bezig ? Microcontrollers

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

Steam.N

Citaat van: conducteur op 05 mei 2013, 19:13:26 PM
... Ik weet niet of de servo-sturing in staat is om meerdere knoppen tegelijk in te lezen? ...
Die servo sturing behandelt de 16 ingangen los van mekaar.
Maw, sluit je er drie, worden betreffende drie servo's in gang gezet.
Knutselgroeten !  Jean       TP-I (B) & TP-II (DR) - N - DC - Handbediening - Zelfbouw  { Sedelocus - De Feniks - Pira-N's Crossing - Turnhout NEEB - Scrap Yard }

Sattrickske

Citaat van: Steam.N op 05 mei 2013, 19:08:48 PM
Matrix lijkt inderdaad aantrekkelijk, omdat je  aansluitingen vrij maakt, maar uitsluitend in de veronderstelling dat je slechts één schakelaar tegelijk sluit.  Stel dat je er twee sluit, is het niet meer eenduidig te bepalen welke schakelaars gesloten werden.
Klopt niet, zelfs met een matrix kan je bepalen welke toetsen gelijktijdig ingedrukt werden.  Alles hangt er van af hoe goed je software geschreven is.  Ik zal 't precies toch moeten uitleggen, 'k had gehoopt dat link duidelijk genoeg was, maar soit...
Stel je hebt x kolommen en y rijen, de kolommen staan als output en de rijen met pull-ups staan als input geconfigureerd.  Elke toets/schakelaar verbindt één rij met één kolom (matrix).
De kolommen staan initieel allemaal op '0'.  Als alle toetsen onberoerd zijn, zullen bijgevolg alle rijen op '1' staan (pull-up, remember).  Het scan algorithme draait gewoon rondjes over de rijen, van zodra er eentje niet op '1' staat springt ie naar subroutine die de output van de kolommen doet variëren (loopje).  Elke kolom wordt nu effe alleen op '0' gezet terwijl de anderen op '1' staan, als de rij nu op '0' staat heb je een ingedrukte toets gevonden en ga je verder met de volgende kolom.  Als alle kolommen afgehandeld zijn, ga je verder met de volgende rij en herhaal je de hele procedure.
Dit scan algorithme heeft een aantal varianten.  Zo loop ik bv. niet over de rijen, maar ik gebruik hiervoor een hardware interrupt, het loopen over de kolommen dien je wel te doen om te scannen welke toets(en) op deze rij ingedrukt werden.
Er bestaan nog andere -minder goede- algorithmes die stoppen van zodra een toets gevonden hebben; en die kunnen dan natuurlijk geen meerdere toetsen vinden.  Dus uitkijken hoe je je software schrijft.

Bottomline: je kan wel degelijk achterhalen of er toetsen gelijktijdig ingedrukt werden op een matrix.  Je toetsenbord op de PC gebruikt een identieke methode...

Steam.N

Oeps!  Te snel gereageerd, en de tekst onvoldoende gelezen  ::)
Knutselgroeten !  Jean       TP-I (B) & TP-II (DR) - N - DC - Handbediening - Zelfbouw  { Sedelocus - De Feniks - Pira-N's Crossing - Turnhout NEEB - Scrap Yard }

Sattrickske

Citaat van: Steam.N op 05 mei 2013, 20:02:42 PM
Oeps!  Te snel gereageerd, en de tekst onvoldoende gelezen  ::)
Geen probleem overkomt mij ook dikwijls.  En hopelijk helpt anderen ook wat vooruit ;)

Geert

Straks nog eens kijken hoe de servo's reageren als ik deze op spanning zet. Ik probeer nu mijn dag door te komen op het werk...

Het servo verhaal is bij mij al een tijdje geleden, maar ik herinner mij niet dat deze hevig begonnen te gedragen als je deze op spanning zet. Het kan zijn dat de servo's die ik gebruik anders zijn (regelbereik tussen 0.5 en 2.5ms) of dat nu net de voeding voor de servo's niet krachtig genoeg is om al de servo's te laten uitwijken als de spanning er op komt? Hier en daar lees ik dat een weerstand van 10k tussen referentiepuls en de massa naar de servo ook helpt?

Tot straks,

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

PeterC

Als tussendoortje: een poging om een dag-nacht verlichting te maken.

Een RGB Led-strip en een witte Led-strip.  Via 4 PWM sturingen alle ledstrips onafhankelijk van elkaar aansturen via I2C (één master zorgt voor de effecten - momenteel de PC).

Eens in de kast gekeken en nog enkele 18F2550's gevonden.  Deze controller bevat 2 hardware PWM's en hardware I2C.  Programmacode (JAL) is slechts enkele regels lang om via I2C de PWM's te sturen (via interrupt - de eigenlijke programmalus doet niets behalve door een ledje te kennen geven dat er een I2C opdracht is ontvangen).
2 keer zo'n controllertje en ik kan de RGB en de witte ledstrip aansturen.

Ook begonnen met een PC interface (in Delphi) om één en ander 'grafisch' in te stellen/aan te passen/te regelen/te programmeren.  Communicatie naar de controllerkes via de Bus Pirate.

Zo'n 18F2550 is wel een beetje teveel van het goede voor dergelijk eenvoudig schakelingetje maar ze lagen in de kast klaar voor gebruik.

PWM met 10 bits resolutie.

De eerste resultaten staan me wel aan.

Bedoeling is om alles op mijn JAL pagina te zetten en de evolutie hier te laten zien.

Een 'teaserke' van de grafische interface (schuiverkes voor de RGB en witte kleur - bovenaan resultaat RGB kleur - I2C adressen en kanalen en onderaan de I2C communicatie via een terminalvenster):


Groetjes, Peter


Geert

Toch mooi die µC en wat je er mee kunt, en ook zo eenvoudig via JAL. En wat ligt daar nog allemaal in die kast van jou... 

Ik heb geprobeerd op de schuifbalk van je tekening naar omhoog te scrollen voor de code, maar dat lukte niet   :D

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

Gerolf

Dit (grote) topic is nu verplaatst naar een nieuwe specifieke microcontroller-rubriek
Helaas kan ik dit draadje niet splitsen in de verschillende verhaallijnen  :'(

Er zitten nogal wat projecten door elkaar te lopen in dit topic, in de nieuwe rubriek kunnen we elk project een eigen verhaallijn geven.
Voor zij die dit willen doen: Het lijkt nuttig om je project dat je hier beschreef opnieuw op te starten in een apart topic in deze rubriek.

Dit topic zelf zou ik alleen nog gebruiken voor korte bedenkingen. Misschien is het zelfs een goed idee om dit topic af te sluiten ...

Groeten uit "Marche-en-Bières"   ** Modelspoor is plezant **   TPIII-H0-DC-Zelfbouw

Geert

Eindelijk is werk gemaakt van mijn zelfbouw centrale. De meeste bug's zijn er uit 'denk ik toch  ::) ' Nu bezig met hardware testen.  Als het ooit werkt, dan volgt er meer info en de asm code...



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

PeterC

Geert,
Precies een centrale met een minimum aan componenten?  Wat gebruik ja als vermogenstrap?  En hoe ga je van je pulserende 5V DC naar 18 V AC?

Fluke 123: goe machien hé  ;)  ...En bijna onmisbaar voor dergelijke projecten.


Groetjes, Peter


Geert

#415
Peter,

het 0-5V digitaal signaal wordt met een vrij kanaal van een MAX232 omgezet naar een digitaal signaal tussen -10V en +10V. Hiermee stuur ik twee vermogentransistors aan nl. een TIP145 en zijn tegenhanger TIP142 via voorschakeltransistors. De +-18V komt van een regelbare LAB voeding met kortsluitbeveiliging.



Twee andere kanalen van de MAX232 dienen voor seriële communicatie met de PC. Maar dit software deel is nog niet af ... Het is eigenlijk de bedoeling dat heel de centrale werkt zonder hulp van PC.  En het feit dat de MAX232 het digitaal signaal ook nog eens inverteert, komt mij goed uit om stroomdetectie te doen via de middenrail van de sporen. Geen slijpwerk dus aan sporen.

Ik zal wel eens een ander draadje starten, want ik heb nog niet alles onder controle. En meedenkers zijn altijd welkom  ;)

Geert

edit, beetje meer verduidelijkt.


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

Geert

#416
Nog een projectje, een digitaal pendelautomaat voor 4 NEWMM lok's. Proberen alles door 1 µC te laten uitvoeren. De PC dient enkel om deze in te stellen. Hierbij al een plattegrondje. Alles is al softwarematig getest, hardware matig ook , maar ik zit te sukkelen met de timing van het NEWMM formaat...





Edit: voor zij die er iets aan hebben? de ASM code.

Edit2: Diverse loks kunnen over hetzelfde traject rijden. Ik bepaal welke lok mag vertrekken en/of moet stoppen.


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

PeterC

Dergelijke sturing in slechts één controllerke?  Weinig 'speelruimte' vermoed ik...


Citaat van: Geert op 22 augustus 2013, 23:55:01 PM
...maar ik zit te sukkelen met de timing van het NEWMM formaat...

De timing is volgens mij net hetzelfde als bij het oude systeem.  Alleen worden de gegevens (snelheid, functies, ...) over verschillende blokken verdeeld.  Snelheid wordt meer verzonden dan functies. 

Aan de hand van deze uitgebreide uitleg heb ik een MM2 sniffer in elkaar geflansd (met als doel om ooit eens een geautomatiseerde lift/tafel) te bouwen.
Groetjes, Peter


Geert

Citaat van: PeterC op 23 augustus 2013, 10:51:32 AM
Dergelijke sturing in slechts één controllerke?  Weinig 'speelruimte' vermoed ik...

Geen probleem het digitaal signaal verloopt via de PWM modul, de rest is redelijk traag. De servo's kunnen enkel één voor één aangestuurd worden. Maar daar zorgt de software voor.


Citaat van: PeterC op 23 augustus 2013, 10:51:32 AM
De timing is volgens mij net hetzelfde als bij het oude systeem.  Alleen worden de gegevens (snelheid, functies, ...) over verschillende blokken verdeeld.  Snelheid wordt meer verzonden dan functies. 

Aan de hand van deze uitgebreide uitleg heb ik een MM2 sniffer in elkaar geflansd (met als doel om ooit eens een geautomatiseerde lift/tafel) te bouwen.

Heb ik eerst ook zo uitgevoerd volgens deze link. Maar volgens deze link spreken ze over andere 'pauze' tijden.

we zien wel, het zal iets stom zijn zeker...

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

Geert

Hij rijd, Hij rijd  :)  :D ;D :P

Eindelijk kan ik met een µC zelf digitale treinen laten rijden. Het stomme, hiervoor, waarom het maar niet werkte was dat ik het adres omgekeerd doorstuurde.

Geert

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