- Raspberry Pi Relay BoardPosted 3 weeks ago
- PCB CAD, A SELECTION GUIDEPosted 4 weeks ago
- Automatic dispenser for catsPosted 1 month ago
- Do you have a mask? RASPBERRY Pi SEES ITPosted 1 month ago
- RFID based Attendance system using Arduino and External EEPROMPosted 2 months ago
- ESP32 Neopixel Status Indicator and Sensor PCB Shield with Wi-Fi ManagerPosted 2 months ago
- Remote control power functions usbPosted 2 months ago
- ESP32-CAM with Telegram: Take Photos Control Outputs Sensor Readings and Motion NotificationsPosted 2 months ago
- Hands-free TokensPosted 2 months ago
- Making Your Own Photovoltaic 5V SystemPosted 2 months ago
ROBOTIC Arm in plexiglass part 1
We create our first robotic arm with four degrees of freedom, with bench-top, gripper for grasping objects and five servo controls that can be managed by Arduino or other electronics.
Automation and robotics represent the most promising sectors in Italy in the industrial field and companies that create solutions such as automatic assembly machines and robots proliferate; surely the most appreciated product is the robotic arm, because it is capable of carrying out many operations, fixed vertically or horizontally to the supporting structure and equipped with very complex mechanisms that allow a high degree of freedom and considerable speed in executing the required movements.
The robotic arm is also something coveted by the makers, for the fascination it exerts as the first, perhaps most significant, a step towards the construction of a humanoid robot.
The importance assumed in various sectors by this portion of robots makes it necessary to have, in schools and in research and development, skills, teaching and prototypical support to develop projects in the robotics sector. The arm that we propose in this article was designed precisely to take the first steps and experiment and develop robotic applications, clashing with issues such as motion control and related firmware; it is therefore aimed both at hobbyists and at technical schools, where it can become an indispensable teaching platform, and also to designers who need to prototype robotic applications, as well as develop and refine their software and firmware for managing more complex industrial automation systems..
Let us, therefore, explain better what the project consists of; it is composed of a mechanical structure in which the electric drives are integrated, as well as electronics that govern the latter to obtain the desired movements.
The arm is of articulated type (also called anthropomorphic) since all the joints are rotating, characterized by 4 degrees of freedom (basic rotation, shoulder movement, elbow, wrist rotation) which, together with the pincer on top, give a certain positioning and orientation ability for small objects.
Let’s start from the mechanical structure, which is the most important part because it is, in fact, the robotic arm; electronics is just the part that controls it. The arm has a structure made entirely of 3 and 5 mm thick laser-cut plexiglass parts and assembled by means of brass / ABS spacers, screws and nuts.
The arm has three joints for up and down movement (it is composed of an arm and a forearm to which a gripper is attached as the hand function) and can rotate on the horizontal plane thanks to a steel ring pressed to a circle of balls, in turn screwed to the base support of the whole; at this base the section containing the electronics is also fixed. The arm can rotate on the support base by 180 degrees and the fifth wheel joins the base of the arm to the support base. The arm and forearm length is 160 mm and the arm can extend in height for a maximum of 27 cm, which becomes 310 on the wrist (the joint on which the gripper rotates) and a good 400 mm considering also the gripper.
The base is large enough to support the extended arm, but if it has to lift heavy weights it must be fixed to the support surface; for this purpose, we have provided four holes for screwing it, for example, to a table, a workbench or a machine whose arm you want it to become part of. The gripper has 45 mm long concave jaws and toothed jaws, so as to facilitate the taking of objects of various kinds.
The arm is driven by two 13 kg/cm servos with metal gears: one controls the rotation of the first section and the second raises or lowers the forearm on the elbow joint. In correspondence with the latter, there is a rocker arm which, thanks to a connecting rod pivoted on the rotating base and to another pivoted on the clamp support, ensures that it remains horizontal regardless of how far it extends or retracts the arm.
The rotation of the arm is 180° and is controlled by a further 13 kg/cm servo with metal gears identical to the previous two; note that for kg/cm we mean the force exerted by the servomotor for a given length of the lever, considered at the end of the lever itself, therefore 13 kg/cm means that the servo exerts a force of 13 kg to one centimetre from the axis of its post, while at 2 cm the 13 kg halves (becoming 6.5) and so on. This is logical since the mechanical system consists of the servo shaft and the operating lever, a disadvantageous lever (power on the fulcrum and resistance at a certain distance).
The support base has a steel ring with one row of balls that allows the entire arm to rotate around its axis; the angle of rotation is determined by the maximum range angle of the pin of the servo used (in our case 180°). The use of a continuous rotation servomotor would allow the same rotation of the entire arm, but the existence of an external power supply cable connected to the control board in practice limits the range. The problem can be avoided by installing the power source (for example a battery) on the arm itself, which would eliminate said connection. In this case, however, there would be limits of autonomy.
The fifth wheel allows obtaining a smooth rotation with very low friction, allowing precise movements with the minimum effort of the servo concerned.
The gripper is mounted on a base (wrist) which is hinged on the forearm and can rotate 180 degrees using a 1.2 kg/cm miniature servo; the same type of servo is mounted in the drive that allows opening and closing of the jaws of the clamp, which can open up to hold objects 65 mm wide. The back of the arm is designed to house control boards such as Raspberry Pi and Arduino UNO, as well as suitable devices (electric vacuum pump and two-way solenoid valve) to create a pick and place system with a suction cup: an add-on of the robotic arm that we will describe in a future article.
From the tests carried out in the laboratory, the arm (with the base appropriately anchored to the support surface) has shown to be able to lift a maximum load of 250 g at the wrist level (not with the clamp), contrary to what would suggest the material used for the structure; in fact, although the plexiglass with reduced thickness is quite fragile and flexible, if every single element subjected to high stress is made to work “in coast” (i.e. crosswise) it reaches surprising degrees of resistance, even if its limits of mechanical stress are not comparable to those of metal. The servo controls have been chosen (at least three from 13 kg/cm) with metal gears to avoid the breaking of the teeth due to the high effort they undergo under conditions of maximum extension and load. The arm does not use ball bearings at the pivot points, as they would not be justified by the manageable load.
The jaws of the gripper are synchronized in movement with each other thanks to the teeth present at the point where they are pivoted. They are driven by a mini servo and a lever system that allows exerting a maximum pressure of about 160 ÷ 170 g (@ 5.5V) in closing.
THE ELECTRONIC CONTROL
Now let’s move on to the electronic part of the system, which, we specify, is an option and you can choose at your discretion: in the application described here, the arm control is entrusted to the Arduino UNO REV3 (or Fishino UNO) equipped with the Octopus shield, specific for the management of servos and already described in issue No. 203. This shield, compatible with the Arduino boards and with our Fishino Uno, using a minimum of hardware resources allows you to have as many as 16 PWM outputs and 16 additional digital inputs/outputs. Not only that, it is possible to stack up to a maximum of 8 Octopus shields (but in our robotic arm one suffices and is used…) allowing to manage with Arduino and Fishino up to 128 digital I/O and 128 additional PWM outputs; all made completely transparent to the user through a specific library called Octopus, with some features that make it very easy to use.
The shield is used because the Arduino and compatible boards have a small number of available outputs, especially I/O to which the PWM can be assigned, which are essential for servo control. Now, it is true that an Arduino/Fishino UNO has six PWM outputs and allows the piloting of the same servo controls, but the I/Os they are associated with could be used for other applications, so it seemed right to dedicate the Octopus expansion shield that (taking advantage of the only I²C-Bus connection of Arduino) takes care of the servo controls only. In addition, Octopus does not just supply the servo control signals, it also supplies the 5V power supply with all the current that the 13 kg/cm servo controls require to operate. Without shield we would still have to wire to part mass and + 5V servo, or create a simple shield capable of supplying power to the servo, so, in the end it seemed convenient to adopt a board ready to control the servos and to provide to the power supply independently, through its own power supply.
So, having explained the arm we can move on to see how to build it: all the necessary parts are available in assembly kits, in laser-cut plexiglass, complete with accessories for assembly such as screws, bolts, etc. However, nothing prevents you from making them yourself, however, by using plastic material and maybe with 3D printing.
In any case, once in possession of all the component parts, the mechanism is started by assembling the support base with the fifth wheel and adding to it the hub of the servo control which activates the rotation of the arm on the base. The plastic hub supplied with the servo must be fixed with 4 2.5×12 self-tapping screws complete with 3×6 flat washer (the screws must not be tightened so as to allow the hub to align correctly with the rotation servo pin that will be mounted later).
Once the support base has been put together, you can assemble the arm, starting with the rotating base: take the 5 mm plexiglass right shoulder, to which you must attach the 13 kg/cm servo with 4 M4x14 TCEI screws and 4 self-locking M4 nuts and then insert the cable into the indicated slot. Also, mount an analogous servo on the opposite shoulder (SX) (but interposing 4 4×4 mm ABS spacers between the two elements) securing it with 4 M4x18 TCEI screws and 4 M4 self-locking nuts. Also, in this case, you have to insert the servo cable into the special slot on the robot’s shoulder. Then assemble the lower part of the arm using the screws and the spacers with the hexagonal column, then fixing one side to the hub of the 13 kg/cm servo control mounted on the shoulder, obtaining the assembly seen in Fig. 2.
Now take the two “arm 2” elements in 3 mm plexiglass and connect them with M3x8 TB cross screws complete with 3×6 flat washers and 2 hexagonal F / F M3x15 spacers, obtaining the block seen in Fig. 3. You have thus made the forearm, which will then join the first portion of the arm and the return rod. Then take this 3 mm plexiglass rod and fix the lower end to the level of the corresponding servo, whose opposite side will be connected through the appropriate hub to the corresponding servo control (interposing 3×6 mm flat washers).
At this point, apply the intermediate support of the rotating base and in it introduce the axis of rotation of the initial part of the arm, which will also support the hubs of the two opposed 13 kg/cm servos and the operating lever of the return rod which will command the forearm. The set will result as shown in Fig. 4.
Before fixing everything to the base, at least it must have completed the essential structure of the arm, hinging the forearm to the first arm portion and applying the return rod and the rocker arm, obtaining what is seen in Fig. 5.
Then apply the base rotating with the first part of the arm and the return rod, to the fifth wheel, using the appropriate M4 screws to be inserted from the bottom into the holes of the upper part of the base bearing and then introducing the M4 nuts that you have previously interlocked in the special cross seats made in the lower part of the shoulder or rotating base (Fig. 6). At this point you have to assemble the fitting (wrist) between forearm and gripper, hinging it through the plastic bushings (using spacers) to the final part of the forearm and the return rod that starts from the elbow bar and which will allow you to lift and lower the fitting itself. On the inside of the wrist, you will have to place the small servo that will rotate the gripper, fixing it as expected.
The gripper must then be applied to the wrist with its actuator and the relative servo control, which must be coupled by means of the lever supplied to the servo itself and the return rod which will act on one of the two jaws; this jaw will be meshed in the other before closing the gripper with the appropriate 3MA screws, in order to obtain a stable assembly.
The gripper, the terminal part of the robotic arm, can be oriented horizontally or vertically; the numerical references in Fig. 7 explain how to mount the wrist in the first case (right) and in the second (left).
Once the robotic arm has been completed, it is necessary to fasten the base to the support surface by means of screws or suction cups. Alternatively, the tendency to overturn in extreme conditions can be countered by applying a mass-weight counterweight at the control board.
The 5 mm plexiglass support element, between the axes of the two servos that activate the arm, allows you to constrain the arm shoulder to the servo support base.
Note that as at each ignition each servo quickly returns its pin to the central position, before turning off the system it is always necessary to position the arm elements so that the servos are at rest; otherwise, the abrupt repositioning at switch-on can over-stress the mechanics and damage it in the long run. As for electronics, remember that the Octopus controller, being an I²C-Bus device, like all peripheral devices of this kind, must be addressed to ensure the univocality of the commands directed to each shield; for this purpose it has three jumpers to be set differently from one shield to the other, which allow 8 logical combinations.
Once the address has been chosen, it must be returned to the library called up by the firmware.
In Listing 1 we propose a simple test sketch that in the Octopus output section shows the assignment of the shield outputs (not to be confused with the Arduino pins) to the servo of the arm portions; you can change exists but you have to specify them in the sketch; in it, base is the shoulder, wrist etc. The loop performs the opening and closing of the gripper by moving the corresponding servo clockwise and counterclockwise alternately, with a range between 50 and 130°, with a period equal to 15 and a value frequency of 45.