Het bouwen van een robotarm

Gepost door Jeroen Vreuls op maandag 30 december 2019 00:18

Bediening via de PC

Voor de bediening via de PC heb ik een programma gemaakt in Profilab Expert 4.0. Hieronder de frontplaat.

Frontplaat in ProfilabFrontplaat in Profilab

De naam “YASKAWA – ROBOTICS” heb ik gekozen omdat dit een bestaand merk is en omdat ik daar vroeger wel eens aan gewerkt heb. Zoals je kunt zien staan alle functies op de frontplaat. Het lampje onder “DATA – ONTVANGEN” licht op zodra er een commando verstuurd is naar de interfacecontroller, de interfacecontroller geeft dus een signaal terug als de data ontvangen is. Het verzenden en ontvangen van het signaal gebeurt 300 maal per seconde, het kan nog sneller maar dat is niet nodig. Helemaal rechtsboven in zie je een USB stekker staan, als je daar op klikt kun je de desbetreffende USB poort instellen. Linksonder in loopt er een systeem klokje mee.

Voor de rest wijst het voor zich denk ik. De stopknop bedient hier alle assen weer, dus als er bijvoorbeeld vier assen draaien en er wordt op de stopknop gedrukt, dan stoppen alle assen. Dit is alleen voor de basis, bovenarm, onderarm en de pols. De hand wordt door een DC motor bediend op tijd. De hand gaat open en dicht in ongeveer 1 seconde, als je een commando aan de hand geeft duurt dat 1,2 seconde. Dus dat is tijd genoeg om de hand geheel open te sturen of dicht te sturen. Op de hand zit ook een beveiliging zodat de motor niet kan verbranden, als de hand snel achter elkaar open en dicht gestuurd wordt stop deze er even mee, dan spreekt de beveiliging dus aan. Maar bij normaal gebruik heb je daar geen last van.

Hieronder het programma in Profilab Expert 4.0.

Het Profilab Expert programmaHet Profilab Expert programma

Ik verzend hier alleen bepaalde waardes mee, eigenlijk het zelfde als met de IR afstandsbediening.

Voor homen is dat waarde 5.
Voor start run auto is dat waarde 10.
Voor basis rechtsom is dat waarde 15.
Voor basis linksom is dat warde 20.
Voor bovenarm omhoog is dat waarde 25.
Voor bovenarm omlaag is dat waarde 30.
Voor onderarm omhoog is dat waarde 35.
Voor onderarm omlaag is dat waarde 40.
Voor pols rechtsom is dat waarde 45.
Voor pols linksom is dat waarde 50.
Voor hand open is dat waarde 55.
Voor hand dicht is dat waarde 60.
Voor stop is dat waarde 200.
Voor de terugmelding of het signaal aangekomen is, is dat waarde 100.

Als er dus op een desbetreffende drukknop wordt gedrukt en de drukknop wordt weer losgelaten wordt de bij behorende waarde serieel verzonden naar de interfacecontroller. De interfacecontroller stuurt een commando aan de hoofdcontroller en deze werkt de opdracht verder af. De lampjes boven sommige drukknoppen worden bediend door een teller, door de teller op een bepaalde manier te schakelen krijg je een toggle functie. Eenmaal drukken is aan, nog eenmaal drukken is uit. Ik had de lampjes ook kunnen bedienen op terug melding van de interfacecontroller, maar dat zou een stuk ingewikkelder zijn geworden en het geeft weinig meerwaarde aan het geheel. Ik kan nu ook zien of er data ontvangen is of niet.

Zoals ik al eerder aanhaalde lijkt het overbodig om hiervoor twee controllers te gebruiken, maar dat is het niet. De tijd om bijvoorbeeld het IR signaal in te lezen komt nogal precies en kost nogal wat instructie tijd. Ook het inlezen van het seriële signaal kost tijd en de controller wacht op binnen komende data voordat deze er iets mee doet. Nu is er nog wel iets mogelijk met bijvoorbeeld een interrupt, maar ik vond dat het niet lekker werkte. Dus vandaar dat ik voor deze oplossing gekozen heb en daar heb ik geen spijt van, want het werkt vlekkenloos en lekker snel. Ik gebruik nu een USB naar serieel converter om de waardes te verzenden en te ontvangen, maar dat zou ook zonder kunnen als ik de seriële poort van de PC zou gebruiken. Dus die mogelijkheid is er ook. Maar aangezien er steeds meer PC's komen zonder seriële poort, heb ik voor deze oplossing gekozen.