For my final-year design project at the University of Sri Jayewardenepura, I developed a SCARA-type robot capable of desoldering Surface Mount Device (SMD) ICs from printed circuit boards (PCBs). This project involved several technologies, such as machine vision, control systems, programming, and problem-solving. To ensure the success of this project and achieve better results, I encountered and resolved numerous challenges. I will describe the project in several steps.
The primary issue in electronics repair is the intricate process of desoldering and soldering very small SMD components onto circuit boards, which demands significant skill and time. Our solution was to create a robot capable of desoldering SMD components selected by users through a computer interface.
When selecting a robot for the project, we considered various options, including SCARA-type robots and Cartesian robots. Ultimately, we chose a SCARA-type robot because of its rapid X and Y-axis movement capabilities, as well as its simplicity and the number of components.
After selecting the SCARA-type robot, I conducted extensive simulations to refine the design. Initially, I used SolidWorks to create the design and performed stress and bending movement analyses to determine the appropriate size of the robot. This step was essential to ensure that the robot could handle the required tasks effectively.
Subsequently, I transferred the SolidWorks design to MATLAB Simulink. While doing so, I made some modifications to the design and joints. This was necessary because the default Simulink model generated from Simscape was not accurate. I had to manually assign joint values and orientations within Simulink to ensure that the model accurately represented the physical robot's behavior.
I implemented the inverse kinematics calculations in MATLAB and fed these values into the Simulink model. This allowed me to verify whether the inverse kinematics was functioning correctly and if the robot could accurately perform the desired movements.
During this process, I also identified singular points within the robot's workspace using the simulation. Singular points are positions where the robot's manipulator becomes less controllable due to limitations in its design. To address this, I incorporated constraints in the code to avoid these singularities and ensure the robot could safely and effectively operate within its workspace.
By integrating these components into the project, I aimed to create a robust and reliable SCARA-type robot that could perform its desoldering tasks with precision and safety.
In order to control the motors of the SCARA-type robot, I designed a custom electronic circuit. Instead of relying on the default CNC shield available in the market, I opted to create my own motor control solution.
For controlling the stepper motors that drive the robot's joints, I used three A4988 stepper motor drivers. These drivers played a crucial role in ensuring precise control over the Nema 17 stepper motors, which were selected to power the robot's joints.
This custom motor control setup was designed to meet the specific requirements of the project, providing the necessary level of control and precision for the robot's movements. By taking this approach, I aimed to tailor the electronics circuit to the unique needs of the SCARA-type robot, contributing to the success of the project.
Machine vision serves as a fundamental and integral component of this project, as it is essential for creating a fully automatic system. To achieve this, I needed to develop a methodology for detecting the SMD IC selected by the user and converting pixel coordinates into real-world coordinates.
The machine vision system was designed to identify the IC on the PCB based on user selection, making it possible to precisely locate the target component within the robot's workspace. This conversion from pixel coordinates to real-world coordinates was critical for accurately guiding the robot to the desired location on the PCB.
Furthermore, as a part of the project's future enhancements, I considered the need for a mechanism to verify the successful removal of the IC. This would involve integrating additional machine vision capabilities to confirm that the desoldering process was completed as intended.
The incorporation of machine vision technologies was a pivotal element of this project, ensuring not only accuracy and precision but also the ability to verify task success in an automated and efficient manner.
In order to accurately measure the depth from the camera to the PCB board, various techniques can be employed. Among them, stereo vision, time of flight, and structured light are commonly used methods. However, in this particular case, a single webcam is utilized along with two laser lights. This method involves directing the two laser lights towards the PCB board, and by measuring the distance between these two points in pixel coordinates using OpenCV, it is possible to convert it into real-world coordinates. The distance between the two laser points in pixel coordinates is proportional to the distance between the camera and the PCB board. Therefore, this approach allows for the determination of the distance between the PCB board and the camera, providing a reliable measure of depth.
To achieve precise positioning along the X and Y axes, we implemented Visual Servoing techniques. This approach utilizes visual feedback from a camera to dynamically control the motion of the robotic system. By integrating visual servoing, we were able to fine-tune and adjust the robot's movements based on real-time visual information, enhancing the accuracy of its operations.
In the next phase of the project, I programmed an Arduino to read values sent from MATLAB. These values played a crucial role in determining the steps necessary to control the stepper motors. To achieve precise control, I employed the AccelStepper library, which allowed me to meticulously manage the stepper motors' movements, including acceleration and deceleration profiles. This level of control was essential in ensuring that the robot's motions were accurate and well-coordinated, aligning with the project's objectives for precision and reliability.
Additionally, I developed a virtual serial port driver to establish a seamless connection between PyCharm and MATLAB. This communication channel served as a means to exchange image processing data. The image processing data was a vital input for controlling the stepper motors, especially within the context of visual servoing. By leveraging image processing data, the system could accurately calculate the next move of the end effector of the robot, ensuring precise positioning and enhancing the effectiveness of the visual servoing process. This bidirectional data exchange played a key role in optimizing the robot's movements and overall project success.
If you need more information about this project feel free to contact me. Thank you .