Wanhao / Monoprice Maker Select Plus RAMPS Upgrade: Considerations

This is the first in a series of posts about converting a Monoprice Maker Select Plus (which is a rebranded Wanhao Duplicator i3 Plus) to a RAMPS board. Here are some things you need to consider in doing this upgrade and why you may or may not want to go down this path.

The reason I started through this is that my Monoprice printer stopped working properly (was not getting information from the hotend thermistor). Monoprice ultimately agreed to replace it, but I would have to send it back at my expense (more than $70 in shipping costs). I decided to do this upgrade instead. If you are buying a printer for the purpose of doing this upgrade, then stick with the Maker Select v2 (Duplicator I3 v2 or 2.1). That machine is much easier to convert and there is already a great tutorial on how to do it. You end up with the same features but at $100 cheaper for the original machine.


Here are some of the things that need to be considered in this conversion. These may or may not be covered in this order. There is much more to the conversion, but these are some of the decisions you should be thinking about before even starting down this path.

  • My Credentials
  • 24 Volts
  • Wiring
  • Firmware

My Credentials

What is my authority for being your guide through this? Almost nothing other than I have done the conversion and my printer works at least as good as it did before. Therefore I don’t claim to be an authority on building and modifying 3D printers outside of my experience.

My first, and only, 3D printer is the Maker Select Plus by Monoprice (which is a rebranded Wanhao). I have no experience with any other printer. Mine worked fine for almost 4 months before it died and now I have successfully gotten it up and running again. I am a fan of open source software and hardware. While the Monoprice/Wanhao printer is not completely open source, it had enough modifiable components on it that I knew if it ever came to a dead printer that I could probably rebuild it using parts from Amazon and eBay.

As of the writing on this tutorial, I don’t have my printer working. I am documenting as I go. Hopefully, by the time most people read this, I will have my printer up and running and have corrected any documentation that I find did not lead me to a solution.

My printer is running well and I am pleased with the results of the conversion process. I don’t know that I would recommend undertaking this conversion unless your control board is unrepairable. In other words, I wouldn’t buy this printer for the sole purpose of swapping out the brains unless you got a good price on a non-working model.

I am open to any suggestions you may have on how to improve this information for the purpose of helping others. This certainly worked for me.


You will need a RAMPS board for this. RAMPS stands for RepRap Arduino Mega Pololu Shield. It is the basis for many RepRap designs, especially older ones. It is an open source design so that you could build your own, or buy one pre-built. There is a ton of information online about the board and you can get help with just about any aspect of configuration. There are newer control boards than RAMPS with more features, but I did not find any reason that made the newer boards superior for my purposes. Plus, the RAMPS board is so well documented and inexpensive that it is considerably more appealing to me.

Something else I discovered in the end of my conversion process is that the RAMPS board barely fits under the printer like the original mother board. Any of the other solutions would be too big to fit in the available space. You would have to build an external enclosure which defeats part of the purpose I had for buying the Plus version of this printer: the compactness compared to the original version.

You can get RAMPS kits from Amazon, eBay or one of the big Chinese shipping sites like dx.com, AliExpress or Gearbest. Where’s the best place to get one? I don’t know. I would recommend reading many reviews.

The one I bought on Amazon has not been overly impressive. There are some obvious quality control issues. After having it powered up for a few minutes the voltage regulator on the Arduino burned out. I was able to swap an AMS1117 5.0 regulator from another Arduino onto this board. Here’s my 3-star review of the product. (The seller has contacted me several times asking me to change the review to something better. Purchase at your own risk.)

You will probably want to get one of the kits with a screen, but it is not absolutely necessary if you are using an computer to be your print server. I am using a Raspberry Pi running OctoPi (OctoPrint). The cost is not that much more to get the screen and then you have the option to use the printer without a computer hooked up to it all the time.

You will also need an Arduino Mega which should come with a RAMPS kit. You can buy the shield without the Arduino, but unless you have one lying around unused, you should get a complete kit with one included.

24 Volts

The Maker Select Plus has a 24 volt power supply. It is supposed to be better for motor control. I’m sure it is, but it also adds to some of the complication of the conversion.

The Pololu shield (the PS of RAMPS) can work with 24V. But the Arduino (AM of RAMPS) cannot. You will need to supply the Arduino with 12V separately. You have to decide how you want to supply the two separate voltages. You will also need to modify the Pololu shield to make it work with 24V and not feed that 24V into the Arduino.

This is all explained in the next post.


This has been the tricky part of the conversion so far. The main issue is the breakout board and ribbon cable that come from just behind the print head. The ribbon cable is great in that it simplifies how many separate wires run from the print head to the control board underneath the printer. However, that also means we need to figure out which wires control which sensors and actuators. I have a wiring diagram that I included in a post about wiring.


There is a variety of firmware that you could use with RAMPS. In my build I am using Marlin. My choice is made on the fact that I have found quite a bit of information about Marlin and a friend who built his printer from scratch uses a Marlin variant. I can lean on him for configuration help. I may move to a different firmware in the future, but this is where I started and it is working for me.


So if you are ready to jump in then get started with the RAMPS information and move through the rebuild of your machine.

Monoprice Maker Select Plus: Replacement Followup

A couple of months ago I posted about trying to get my Monoprice Maker Select Plus 3D printer replaced, or at least get a new main or breakout board for it. Ultimately they agreed to replace the whole printer. They don’t have any of the individual components to even repair the printer themselves. That is a shame since that means that otherwise perfectly good printers are sent back to the manufacturer (Wanhao) and never actually get repaired by Monoprice.

Monoprice’s Offer

Monoprice’s solution/agreement was that, yes the printer was poorly manufactured and that it is their fault that my printer does not work. However, because I installed firmware on it, they would no longer cover it under their normal warranty policy. I was welcome to send it back to them at my expense and they would replace it with a new machine.

There are two problems with that: at my expense and new machine. It would cost just over $70 to ship the printer back to them. I realize that if you are not interested in upgrading and modifying your own printer, $70 may seem like a good deal. However, I was probably going to replace all the logic parts on this printer in the future anyway. I like the design of the Maker Select Plus (though if you are doing this upgrade, the Maker Select v2 is the better choice at a cheaper price), but their motherboard and firmware are not the most friendly for hacking purposes. Since I already bought all the electronics to do the upgrade when they had originally convinced me that they would not consider replacement, I would rather move forward with that upgrade path.

The second problem I had with their offer is that they would completely replace the machine and not send me my old machine back. My machine is not perfect (print bed base is bent) but at least I know its quirks and have learned to work around them. I have also done some reversible mods, but I really don’t want to have to disassemble all of my LED and Z-axis upgrades and start over. I would rather have this same machine back.

Definite Main Board Problem

Up to the point of them agreeing to replace the machine, I wasn’t even certain which of the two boards was at fault on this printer. At first it seemed like it was the main board. Then I found a burned electrical trace on the small breakout board as well as a couple of bad solder joints. Since I decided that I would not have the machine replaced I launched into repairing the breakout board myself. I found that the printer still did not function properly after repair. It displayed the exact same symptoms. So the problem is definitely the main board which may have caused the breakout board to fail.

Installing RAMPS

Now I am in the process of installing a RAMPS board and getting it all wired up. (Here’s the board I bought. It seems the manufacturer/seller has some serious quality control issues. Spend more money for a better board if you are able to). Even though the original problem showed up 3 months ago, it took me a month to finally get Monoprice to answer emails and phone calls to come to the decision that I was going to keep it and not have it replaced. Then I began a busy time of work and travel that kept me from doing the upgrade. I am home for a few weeks and will get back to the RAMPS upgrade. I will document what I can here for others who want to convert their Maker Select Plus to an open source control board.

I have actually gotten far enough into the upgrade to be encouraged that this will work as well as I had hoped. I have been able to test most of the motors and sensors with the new board. I am now in the process of assembling the new wiring harness for the machine. I will probably break down the upgrade path into several blog posts. I hope it is a help to the next person who would like (or need) to do this conversion.

And for those who have the Maker Select v2 (or 2.1) or the Wanhao original version of the same thing, there is already a great tutorial on how to do the conversion. If you are looking for a base printer to convert, then the hardware on the $300 Monoprice v2 is almost identical to the $400 Plus (with the exception of the motherboard and control screen which get replaced in the conversion anyway). The Maker Select v2 is cheaper and easier to modify in this way.

Monoprice Maker Select Plus: Burned Breakout Board

I’ve had an issue with my 4-month old 3D printer. I have made heavy use of it and it has performed well…at least until it didn’t. It is a Monoprice Maker Select Plus printer. It is the Wanhao Duplicator i3 Plus that has been rebranded for Monoprice.

Thermistor Reporting Error

About a month ago (from when I am documenting this), my printer suddenly started reporting that the hotend temperature was 58° C no matter what the temperature actually was. It seemed likely that it was the thermistor itself since they seem to short out or go bad according to my reading. And they are so cheap that it is worth trying with a replacement.

I did not have a replacement yet, so I did some testing. The thermistor performed as expected when it was removed from the printer. Yet when the thermistor wasn’t even plugged in, the printer and OctoPi reported the hotend at 58°. Everything pointed to the main control board as being the problem.

It was a Sunday afternoon and Monoprice support was not open. So, it seemed reasonable to contact them via email. After waiting a couple of days with no response, I tried contacting them via chat. The chat sessions kept timing out. Presumably because there was no one available to help at that time.

Carlos from Monoprice finally got back with me by email on Thursday (4 days after my support request). He asked for more information and what exactly I had done to test for the problem. When he replied again on Friday it was agreed that the problem seemed to be the mother board. I would have to send in the whole printer for replacement and not just the board.

Well, in the mean time of waiting for support that I thought would never come, I reflashed the board to the Wanhao firmware (Monoprice has not released a firmware to the public even though theirs has had a typo in it since the printer first released). Even with the Wanhao firmware the symptoms were exactly the same. And, as a result of reflashing my board, I voided my warranty. So on Friday of that week, Carlos said that I could not get the board replaced under warranty. On top of that, Monoprice did not even have boards available they could sell me. They suggested that if I wanted to get a new board to buy it directly from Wanhao.

RAMPS Upgrade

I started down the path to upgrade to a RAMPS control board. Ultimately that is where I will probably go with this printer. But for the moment, while making the conversion to RAMPS, I found a definite hardware issue that I thought Monoprice would like to know about.

Monoprice Support

I started a new support request email. This time on a Saturday because that is when I discovered the problem. They don’t have phone support on the weekends. After sending the support request I got a message saying that Monoprice support would get back with me within 1 business day.

On Thursday of the same week (today) I tried Monoprice support chat again. Between the last attempts and the attempts today, I probably tried to use their chat 6 or 8 times. Each time the session timed out without an explanation. I assume that it is because no one was available to help.

I called and was put on hold for only 7 minutes. For which I was very thankful. Israel answered and I started off by telling him that I was trying to follow up on an email support request. I gave him the ticket number and he was able to find my email. He apologized for their support being slow but that they were very busy. “Then,” I said to him, “don’t tell me that you will get back with me within 1 business day.” He agreed that something should be done about the message. What would be better, in my opinion, is to hire enough qualified people who could help them stay caught up.

Cold Solder Joint

While I don’t have much hope that Monoprice will replace the broken part on my printer, I did still want to do the responsible thing and let them know they had a problem. I believe my printer failed because of a manufacturer defect and I wanted to send them pictures of what was happening. That was the nature of my second request for support. Of course, I hope they do replace the bad part, but I have been in the warranty-voiding business for approximately 37 years. So I am used to it. In fact, this may be the first time that I have approached a company about warranty work. I usually try to fix it myself if it is something worth keeping.

Picture of a bad solder joint.

What I discovered were some poor solder connections. As you can see in the picture, there are at least 2 bad solder joints. One of the bad solder jobs is on the thermistor connector. No surprise. I have confirmed that there is no electrical conductivity from that pin to the ribbon cable connecting plug.

You also see that the connector is red. It is the only connector on the breakout board that is not white. I wonder if other Monoprice/Wanhao boards are like this?

Burnt Trace

On the top side of the board there is a burned electrical trace. You can see in the picture below that there is an enamel coating on the board. But one trace, which happens to be for the thermistor that is not working, is burnt.

Picture of a burned electrical trace

What will Monoprice Do?

Again, I contacted Monoprice today to let them know about the problem and to see if they would at least replace that small breakout board. This board, by the way, is behind the print head and is only about 1.25 by 1.75 inches in size.

Israel said that I could send my pictures to him and he would pass them along to the next person. He also told me that the breakout board was not in stock at this time, but that I could call back on Monday and see if they had a projected date of getting more stock.

I dutifully sent my pictures to Israel today at the email address he provided. It is now 8 hours later and I have not heard back from him. A simple “thanks for the pictures” would have been nice.

We’ll see what happens.

Controlling a Fan Using PWM and Arduino

Here is how to give speed control to a regular 12V computer fan using an Arduino and PWM (pulse width modulation). This will work for other motors as well.

This is not intended to be a deep tutorial on the subject, but if you need more information you can check out the various links provided. This is mainly a quick write-up to show a friend how to do speed control on a fan that will eventually be hooked to a temperature sensor so that the fan can regulate the temperature inside an enclosed box.

Items Needed

  • Arduino (can be done with a Raspberry Pi using Python)
  • TIP122 (or adjusted for just about any Darlington transistor)
  • 1N4001 diode
  • 12V computer fan
  • 12V power supply
  • 270Ω resistor

The above items are not special or magical. If you don’t have a TIP122 transistor, you can probably make this work with just about any large transistor or MOSFET (large as in handling power as opposed to just physical size, though they often correspond). The same applies for the diode: as long as it is sufficiently large, it will probably work. The resistor size was chosen simply based on it being the one closest to my Arduino when I started the project.


I leaned heavily on an Instructables article for getting my wiring set up. Certainly check out his article for more details about the wiring if you need more than a schematic to figure this out.

Or, an even more detailed description of what we are doing (at least on a partial level) is the Adafruit article on motor control. They have lots of pictures and a great explanation. But what their article is lacking is how to power a motor that needs much more voltage than what the Arduino can provide. That is why you are reading this article.

Here is my schematic of the build.

Electrical schematic of the project.

The Build Logic

I find it helps to try to understand what is happening in the electrical path so that I can complete the build and adjust the hardware or the code. Let me try to logically walk you through what is happening. Check out the video below for a rough verbal description.

The two connections to the Arduino are ground and digital pin 9 which is what sends the PWM signal to the transistor. PWM signal goes out of the Arduino into a resistor. I’m not entirely sure how much resistance is needed for this build. It works with no resistor and I have seen builds that call for up to a 2.2 kΩ. I don’t know that the resistor value is super critical, but you should probably include one.

So far we have PWM → resistor.

Now you go from the resistor to the base of the Darlington transistor. I am using a TIP122 because that is what I had handy. This should work identically with a TIP120 (and probably dozens of other transistors).

When the base of the transistor gets power from the PWM signal, it will allow power to pass through from the collector to the emitter. Check out Adafruit’s explanation of transistors for more details.

When the signal on the base pin triggers the collector/emitter connection, the transistor begins passing 12V from the power supply to the fan. The signal on the base is making the transistor act like a switch to turn on and off the collector/emitter connection.

Therefore, we kinda have 2 separate halves to this project:

  • The low power side (Arduino side) is PWM → resistor → base → emitter → ground.
  • The high power side is 12V positive → fan positive → through the motor → fan negative → collector → emitter → ground.

Between the collector and emitter we also insert a diode. This prevents the spinning of the fan (or DC motor) from pushing power back through the transistor and blowing up the Arduino. A DC motor (which a fan is) generates electricity when spinning but does not have outside power pushing it. So when the Arduino stops sending a signal to the fan the fan will spin down and in the process create a small DC voltage. In this case it is probably not enough to matter, but it is a good habit to put a diode in place to stop the newly created voltage from traveling backwards into the Arduino. As you probably know, a diode only allows the electricity to travel one direction. We want power to travel from the Arduino to the fan but not the other direction.

Both the ground coming from the Arduino and the ground of the 12V power supply need to be tied together. You should have only 1 ground in a circuit even if you have multiple power supplies and voltages.

In my video below you also see an LED and another resistor. This is just an indicator that power is being supplied. The second resistor is 100 kΩ. Also carefully chosen because of its proximity to my workspace.

Note that the code in the video turns the fan/LED full on and full off. However, the code I provide here is full on and only about 40% off. Being able to adjust the speed of the fan using PWM is what this project is about. Therefore you can adjust the provided code to run the fan at any speed you would like.


This sets pin 9 as the control pin. Then makes its pinMode to be an output. The loop turns on pin 9 at 100% speed (255) for 3 seconds and then drops to 40% speed (100) for 6 seconds.

And that’s it!

The ultimate project is to control the fan based on temperature. Getting temperature values from a digital or analog temperature sensor on an Arduino is fairly simple. It then becomes a matter of telling the fan PWM to raise or lower the speed based on the temperature.

Beginner Rubik’s Cube Method

Recently I have taught a couple of people how to solve a Rubik’s cube using a beginner method. I know there are many of these guides on the Internet (I will link to some later), but I wanted a place where I could look and find the same method each time. Putting it on my site will help me remember where I wrote this.

There are certainly more comprehensive guides. This is not intended to replace them. I don’t intend to explain a lot of what is happening with the cube and I assume a basic understanding of how the cube works for my guide. And that you can solve one side on your own.

Again, this is written down here so that I can consistently go to the same method and talk people through how to use it. (Since I don’t use a beginner method myself, I don’t easily remember these steps).

A good comprehensive guide to fill in any gaps (except where we differ on our steps) is at SolveTheCube.com.

Cube Notation

Hold the cube so that one face is pointed to you. You can easily understand that there are six sides with a face (F), left (L), right (R), top (called up) (U), bottom (called down) (D) and back (B). Each face will be turned 1/4 turn either clockwise or counter-clockwise.

For the beginner method you will only use the above mentioned letters to denote turns. The letter by itself indicates a 1/4 turn clockwise. That is clockwise when looking at that particular face directly. If the letter has a tick mark after it (‘), then you turn the side counter-clockwise.

A number after the letter indicates how many 1/4 turns you do. This is only ever the number 2. Because it is a half turn, it does not matter whether you turn the cube clockwise or counter-clockwise. Whichever works best in the situation.

Solve the First Layer Cross

Decide on a color to start with. I only recommend you start by solving the white side because most guides on the Internet assume you are starting with white. Other than for that reason, you can start with any side you want.

We are separating solving the first layer cross and corners though you could actually solve them together. The cross includes the center piece and all four edge pieces.

There is not much to say about solving the cross. If you can solve one side completely, then you can do the cross easily.


  • It is easier to solve the cross and then the corners as opposed to the corners and then the cross even though you could technically do these together.
  • The cross is not solved until you have each edge of the cross correctly lined up with the center piece.

Solve the First Layer Corners

Again, if you can solve one side, you can solve the first layer corners. This is an intuitive step and should be figured out. If you can’t solve one layer on your own, then this guide is not the right one for you.


Each edge and corner of the first layer must line up, color wise, with the other pieces and center pieces on each side

Insert the Second Layer Edges

Turn the cube over so that the solved side is on the bottom. Line up a center piece on what is now the top layer with a side making an upside-down T (as in the illustration). There are three possible edges that could could make the upside-down T. You want one that does not have the top layer color in it. For example, if your top layer is yellow and you are trying to make a blue T, you need a blue edge piece that does not have a yellow side. So a blue-red or blue-orange piece is what you need (on a cube with a standard color scheme).

Inserting Edge to the Left

You now have the upside-down T and need to put the top layer edge piece between the front and left sides.

U’ L’ U L U F U’ F’

Inserting Edge to the Right

You now have the upside-down T and need to put the top layer piece between the front and right sides.

U R U’ R’ U’ F’ U F

Create the Last Layer Cross

You now need to get a cross on the top layer. You may also end up with other top-layer colors in place. If starting the solve from the white face, this will mean you need to look for the yellow pieces on the top layer.

In this step it does not matter what corners are oriented properly. We are only concerned with the edges.

Corner Case

If you have the middle and two edges facing up, and those two edges are side by side (not opposite of one another) you have a corner case. Hold the cube so that the two properly oriented edges are on the left and back edges like in the illustration. In this picture you are looking at the top of the cube. You still need to solve it with the face and right sides being the unsolved edges.

F U R U’ R’ F’

Line Case

If you have the middle and two edges facing up, and those two edges are opposite one another (not side by side) you have a line case. Hold the cube so the line goes left to right like in the illustration. In this picture you are looking at the top of the cube. You still need to solve it with the front and back sides being the unsolved edges.

F R U R’ U’ F’

Dot Case

Perform both the corner case algorithm and line case algorithms one after another. It does not matter which one you do first. Just make sure you orient the cube properly between the algorithms.

Simpler (but possibly longer)

Orient the cube like in one of the cases above and do either algorithm until the cross is in the right place. You might have to do it as many as 3 times. But this requires that you only learn one algorithm.

Solve (Orient) the Last Layer Cross

The cross might be solved at this point. Meaning that you can turn the top layer (also known as the last layer) and all the edges will line up with the side colors all at the same time. More than likely though, you will only have 2 edges that line up on the proper color.

To swap the front and left side edges do the following algorithm. This means that your good edges will go in the back and right sides of the top layer. It is possible that your two good edges are opposite one another. In this case, just do the algorithm twice. The first time to get two solved edges adjacent to one another and the second time to finish orienting the top cross.

This algorithm has a name–Sune.

R U R’ U R U2 R

Last Layer Corners to Correct Slots

In this step we need the last layer corners to be in their correct places even if they are not twisted the right way. With the first two layers and the top cross solved and correctly oriented, you need to look at each corner and see if they are in the right spot. Meaning, the yellow/blue/orange corner piece is in the corner between the yellow/blue/orange sides.

You should have at least one corner that is in the right place. Turn the whole cube–not just the top layer–so that the correct corner piece is in the front-top-right corner position.

This algorithm may need to be done twice from the same orientation. Check to see if all corners are in the right spots after the first time. If not, then do it a second time.

U R U’ L’ U R’ U’ L

Solve the Last Layer Corners

Only one super-simple step away from solving the cube! While it is super-simple, it may also be the most confusing. There are a couple of parts in this step that seem to trip people up until they understand it.

To review:

  1. You have the bottom two layers solved. These are also known as the first two layers because you solved them first.
  2. You have the top cross edges oriented correctly and lined up with the correct side colors.
  3. You have the top layer corner pieces all in their right slots even if they are not twisted correctly.

If any of the three statements above is not true, then you are not ready to move on to this step.

Place an unsolved corner in the front-top-right position. Perform the following algorithm two or four times to twist that corner into proper orientation.

R’ D’ R D

After 2 or 4 cycles through that simple four-step move, you will have the corner solved. However, it may look like you have messed up the cube. Don’t panic!

Do not turn the cube, but turn the top layer until the next corner that needs to be solved is in the front-top-right corner and do R’ D’ R D again either 2 or 4 times. Keep turning the top layer (not the cube) and performing the algorithm until the whole cube is solved.

If it doesn’t work one of the following is probably the reason:

  • You turned the cube when you should have only turned the top layer.
  • You did not do the final D move in one of the many R’ D’ R D combinations.
  • You are turning the D layer the wrong direction. This is your first experience with the D layer. Make sure you are turning it clockwise and counter-clockwise appropriately based on looking at the bottom layer directly.


If not, read through the description carefully and try to figure out what went wrong. It could also be that my description does not make sense to you. There are plenty of other beginner’s guides. Try one of them to see if another works better for you.

Alternate Guides

Not every beginner’s method is the same. There are many different methods that could be considered a beginner’s one. Beginner’s guides are usually defined by having more steps but with fewer or simpler algorithms. In each step the algorithm should work even if you have to apply it several times. This is in contrast to advanced solving methods where an algorithm will solve the case each time but there may be as many as 57 algorithms to choose from in each step.

Solve the Cube’s guide is very similar to my guide, but with much better pictures and explanation.

Mats Valk’s video guide playlist. As of this writing, Valk holds the world record for the fastest human solve–4.74 seconds. However, the videos are a beginner’s method using one main move to explain the method. Very clever and might become my go-to way to teach new cubers.

Yet another guide from Ruwix. They link to more at the bottom of their page.