Output Devices

Similar to input devices, output devices refer to any type of device meant to “export” information from the micro-controller to the outside world. If we look at it like a sequence of events, input devices are first, then the micro-controller processes the received information, and finally the output device reacts upon it.

Output devices can be as simple as LED or as complex as a series of motos that must act in a very specific and time sensitive manner. Like with input devices, there are a lot of types of output devices, al tailored to any type of project you can have in mind. Some examples of output devices include:

The Stepper Motor

For my final project I need a 360 degrees rotating base. This base can be built in various ways, but most requiere a basic component to work: a stepper motor.

As its name implies, a stepper motor is a motor that works by rotating in a small angular step. Unlike servo motors, where powering the motor makes it move, stepper motors require to know exactly how many steps to take in order to move. Servo motors are better used for applications where speed and torque are a must, stepper motors are better used for applications where precision and a full rotation range are a must. For our rotating base, a stepper motor will work.


Using a Stepper Motor

Using a steppe motor is not as straight forward as using a servo motor. Unlike a servo motor where you just “plug and play”, a stepper motor require some extra hardware to correctly operarte. We need a way of telling the stepper motor how many steps to take on which direction, and for that we need a Driver. A driver is a chip that converts digital signals into electrical pulses. In simple terms, is a translation between our micro-controller language and our stepper motor language.

For our driver we will be using a drv8428, mostly because it is the available chip in our University. Using this chip is also not as easy, as it requires extra components to work correctly. This is a good thing however, as it gives us the opportunity to design its module directly into our PCB, without depending on a pre-built module design.

Taking a look at the drv8428 datasheet, we can see a typical use schematic, which we will be implementing into our custom PCB.

drv8428 schematic

We can now take this schematic and replicate it in our new KiCad project. Doing it is quite simple, as the symbol for the drv8428 is available on our FAB library. It only took a couple of minutes, and the schematic was ready!

drv kiCad schematic

Now, as we will be using out RP2350 for this project as well, we must design the needed connections.

Rp2350 connection

And with that, we are ready to design the PCB. Similarly to the previous week’s PCB, this one was also quite small, as it has the bare minimum components needed to operate our servo motor.

drv PCB

With the PCB, is now time to engrave and cut our PCB.

Producing the PCB

This time, I tried to make the edge cut in our Roland milling machine and then engraving in the XTool. But for whatever reason, the edge cut in the Roland kept being cut smaller that needed. I don’t know if this is a problem with the mods project configuration, or if I’m doing a step wrong when choosing my edge cut image. I decided to solve this problem later on, and stick with the previous XTool engrave and band saw cut workflow.

Engraving the PCB was pretty straight forward, as my previous experimenting with the different parameters of the XTool gave me the perfect values which I just need to plug and send. It took some time, but in the end I got a high quality PCB in my hands. Plus, this week requires the use of the drv8428 chip, which has very small legs and, therefore, small tracks. I’m sure the Roland would have had trouble with this small tracks.