K16F887 interface met Profilab Expert

Gepost door Jeroen Vreuls op zaterdag 1 april 2023

Profilab Expert 4.0

We gaan nu naar het programma kijken wat gemaakt is in Profilab. Hieronder een stukje van het zend gedeelte.

Het zend gedeelteHet zend gedeelte

Op de bovenste twee ingangen zie je twee potmeters zitten, deze potmeters bedienen de C1 en de C2 poort van de controller. Via een MW module (gemiddelde waarde) en de potmeter wordt er een waarde op de vergelijker gezet. Als de potmeter niet verdraaid wordt gebeurt er niets, als de potmeter nu verdraait wordt naar een hogere waarde dan wordt de pin A > B hoog. De OR-poort in combinatie met de AND-poort zorgt er nu voor dat de data verzonden wordt door de seriële module CS1. Dit gebeurt 10 maal per seconde door de G1 module.

Als de potmeter nu naar een lagere waarde wordt gedraaid, dan wordt de pin A < B hoog en wordt de waarde weer verzonden.

Onder eigenschappen kun je de seriële module benaderen om bepaalde waarden te veranderen. Je kunt hier zien dat de standaard waarde gebruikt worden voor de COM-poort.

De seriële verzendmoduleDe seriële verzendmodule

Onder kader zie je dat de waarde 1// ingevuld is, die waarde wordt als eerste verzonden. Deze waarde gebruik ik als adres, iedere module (CS1 tot CS 12) heeft dus een adres van 1 tot en met 12. Op deze manier kun je uitfilteren welke module er uit gelezen moet worden door de controller, later daarover meer.

Het hele zend gedeelte bestaat dus uit 12 CS1 modules, je kunt dus 12 modules in serie zetten. Later laat ik het complete programma zien.

We gaan nu naar het ontvang gedeelte kijken.

Het ontvang gedeelteHet ontvang gedeelte

De CRB module is een acht bit seriële module waar de data uit de controller binnen komt. Achter deze module staat een acht bit D/A-converter die de waardes doorstuurt naar twintig vergelijkers. Achter de vergelijkers staat een RS flipflop. Bij de vergelijkers zie je een FW module (vaste waarde) staan, daar staan de waardes in die door de controller verzonden worden. Als de ingangen op de controller laag zijn, dan worden de waardes 10, 20, 30, 40, enzovoort verzonden. Dit zorgt ervoor dat de flipflops continu gereset worden en de uitgang in Profilab niet hoog wordt.

Dit signaal wordt 200 maal per seconde ingelezen door Profilab. Als bijvoorbeeld nu ingang A.0 op de controller hoog gemaakt wordt, dan wordt de waarde vijf verzonden door de controller en door de vergelijker vergeleken. Als de vergelijker de waarde vijf ziet zal de flipflop RS1 hoog worden.

In totaal worden er twintig waardes vergeleken en verwerkt door Profilab. Er zijn dus tien uitgangen ter beschikking in Profilab.

Onder eigenschappen van de CRB module kun je weer het een en ander aanpassen.

De seriële ontvangstmoduleDe seriële ontvangstmodule

Hier staan dezelfde gegevens in, alleen hier kun je geen adres in vullen. En dat is ook niet nodig, want je kunt hier 255 lijnen uitlezen als je dat zou willen. Ik heb er nu iedere keer een waarde van vijf tussen gehouden, omdat ik genoeg heb aan tien uitgangen in Profilab.

Nu is er een mogelijkheid om binnen Profilab een macro te maken, hier kun je dus je eigen IC's mee maken. Met een pin-macro kun je een naam aan de pin geven van het IC.

Om een macro te maken hebben we de totale schakeling nodig die we gemaakt hebben in Profilab.

De totale schakeling in ProfilabDe totale schakeling in Profilab

Je ziet dat er ook nog een OR-poort staat in de totale schakeling, hiermee wordt gekeken of er data wordt verstuurd naar de controller. Het is een twaalf bit OR-poort, omdat er twaalf signalen uitgelezen moeten worden, dit kun je onder eigenschappen van de OR-poort instellen. Je kunt tot zestien bit instellen.

Er zit ook een reset ingang op, daar sluiten we het Profilab programma mee af. Ook worden dan alle pinnen die nog hoog zijn op de controller laag gezet. Als Profilab weer opgestart wordt, zijn alle pinnen van de controller dus laag.

We halen nu de potmeters, schakelaars en de ledjes los. Daarvoor in de plaats zetten we een zogenaamde pin macro. Hieronder zie je een pin macro als ingang staan.

Pin macro als ingangPin macro als ingang

Hier ga je dus alle gebruikte pinnen een naam mee geven, hier is dat digitale ingang B1. Hier komen dus de Profilab componenten aan zoals de potmeters en de schakelaars of drukknoppen. Hieronder een pin macro als uitgang.

Pin macro als uitgangPin macro als uitgang

Hier komen dan de ledjes aan of ander Profilab componenten, zoals een schrijver of een tabel.

Hier zie je het macro IC met alle benamingen van de pinnen.

Het macro ICHet macro IC

Linksboven de twee aansluitingen voor de potmeters, DI-C1 en DI-C2 met daaronder de digitale ingangen DI-B0 tot en met DI-C5.

De uitgangen zijn DO-A0 tot en met DO-C3. De pinnen BSY1 en BSY2 zijn de busy pinnen, daar aan kun je zien of er data verzonden en ontvangen wordt. RESET is een ingang en RUN is een uitgang om te zien of het programma loopt.

Op deze manier maak je dus zelf een IC, in principe kan dat met iedere schakeling gedaan worden.

We gaan nu kijken hoe we hier een schakeling mee op kunnen zetten.

Test schakeling met de K16F887Test schakeling met de K16F887

Hier kun je zien hoe dat gedaan is, de twee potmeters bedienen de twee PWM-kanalen op de controller (HPWM-1 en HPWM-2), daaronder zie je tien schakelaars staan die de poorten B0 tot en met C5 bedienen. Deze pinnen staan als uitgang geconfigureerd op de controller.

Dan zie je LED-1 tot en met LED-10, dat zijn uitgangen binnen Profilab. Deze worden bediend door schakelaars die op de controller aangesloten zijn. Dan hebben we nog de RESET ingang en de twee BUSY uitgangen binnen Profilab.

We gaan nu naar de frontplaat kijken van de interface.

Het bedieningspaneelHet bedieningspaneel

Op de frontplaat zie je de tien uitgang ledjes, waarvan DO-A0 en DO-A3 bediend zijn, dit zijn schakelaars aangesloten en bediend op de controller. Je ziet dat de meest rechtse drukknop bedient is, die zet pin DI-B0 op de controller aan. Die uitgang is nu dus hoog op de controller.

De twee schuifpotmeters zijn ook bediend, die sturen de PWM-pinnen DI-C1 en DI-C2 aan op de controller. De waarde van het PWM-signaal wordt ook op het display getoond van beide PWM-signalen. Het display zit aangesloten op de controller. Rechtsboven op de frontplaat zie je het teken van de USB-poort staan, als je daar op drukt kom je in een scherm waar je de COM-poort mee in kunt stellen. Er staan in het totaal veertien COM-poort modules binnen de macro en daar kun je niet meer bij. Dus het is wel handig dat het op deze manier wel benaderd kan worden.

Tot zover het gedeelte over Profilab.