Op/Neer Links/Rechts

algemene C code
Berichten: 115
Geregistreerd: 15 Dec 2012, 21:02
Woonplaats: Delfzijl

Op/Neer Links/Rechts

Berichtdoor FPCUser » 18 Jan 2017, 15:20

Bij het aansturen van motoren, zoals van een robot of rolluiken, is het ongewenst dat beide bewegngen (op/neer of links/rechts) geljktijdig gegeven worden.
In de relaistechniek worden de stuurknoppen meestal op elkaar vergendeld, en de spoelen van de hoofdrelais ook.

Bij een microcontroller programma, waarbj de schakelweg tussen ingang en uitgang best wel eens lang kan zijn, is een programmeerfoutje zo gemaakt waardoor beide bewegingen toch gemakkeljk aangestuurd worden.
Je kan dan een z.g. inhibitor toepassen. Dit wordt ook wel een vergrendel schakeling genoemd.
Het is een En-poortje met minmaal 2 ingangen, waarvan een geinverteerd is. Deze neem je op vlak voor de uitgangspin.
Op de niet geinverteerde ingang komt het stuursignaal van de eerste beweging, op de geinverteeerde de uitgang van tweede beweging. De tweede beweging verbied daarmee de aansturing van de eerste. (to inhbit = verbieden)
B.v. de sturing van omhoog wordt dus vergrendeld door omlaag, en omgekeerd.

Een (heel)klein programmatje verduidelijkt het geheel denk ik.

En met twee coderegels kan je een hoop problemen voorkomen.


cpp code
/* Inhibitor
* test met 2 drukknopen, een voor op en een voor neer
* Arduino Uno
*/

byte sturingOp = 3; // drukknoppen
byte sturingNeer = 4;
byte Op = 7; // uitgangen
byte Neer = 8;

void setup() {
pinMode(Op, OUTPUT);
pinMode(Neer, OUTPUT);
}

/* netwerk 1:
*
* | st_Op +---+ Op |
* +---[ ]---+--| & |--+---+-----+---( )---+
* | +--o | | |
* | | +---+ | |
* | +---------------+ |
* | | | |
* | +-------------+ | |
* | | +---+ | Neer |
* | st_Neer +--o & |--+-----+---+---( )---+
* +---[ ]---+--| | |
* | +---+
*/

void loop() {
digitalWrite(Op, digitalRead(sturingOp) && !digitalRead(Neer));
digitalWrite(Neer, digitalRead(sturingNeer) && !digitalRead(Op));
}

Advertisement

Terug naar C code

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 1 gast