I’m using the Gearmotor and Encoder Assembly for Romi and the Motor Driver and Power Distribution Board for Romi Chassis for a class with Arduino Zero clones (using 3v3 SAMD21 MCUs).
Looking at the datasheet for the hall effect sensors listed on the encoder schematic (AH1751), it says that the sensors need a minimum of 3.5V and have an open drain signal output. To make sure there wasn’t a 5V input on the 3v3 SAMD21, I kept the encoders powered through the power distribution board’s 5V regulator, cut the pull-up jumper on the distribution board, and instructed students to activate the SAMD21’s internal pullups for the encoder channels.
Three out of five romi bots had no issues with this configuration (encoders powered from 5V Romi and open-drain outputs pulled high to 3v3 internally through SAMD21). However, two students have working encoders (I had them test the encoder channels were switching between high impedance and sinking to ground with a test LED & resistor since the hall effect can sink up to 50mA) but the encoder readings on the SAMD21 would not go high reliably with the internal pullups when their encoder channel wires were connected. So I had them hook up stronger external pullups (4k7’s) and they seem to work fine now.
Unfortunately, the robot I have doesn’t have these issues and I won’t be able to get pictures/videos to really confirm their setup at home with this being a distance learning class. If it was just one student, I could blame it on bad/loose wiring and that was the first thing I had them check. Am I on the right rack in thinking that the SAMD21’s internal pullups just aren’t strong enough for the encoders under certain circumstances (e.g. the effected bot’s parts are in a different level of their tolerances)? Is my setup correct? I was thinking for future classes I could just change the distribution board’s Vreg output to 3v3 but would that really be enough for the encoders to still work (plus it is nice having a 5V rail for other parts like LCDs)?
Thanks in advance - if I’m on the right track, I’ll just have to think of a way of fool proofing the 3v3 pullups (I would rather not have students have to breadboard external ones if we continue this distance class) or figure out another way of getting a 5V rail if the encoders will work fine off of 3v3.
We did use the AH1751 on early units of the Romi encoder board, and we do not commit to a specific part, but we switched to a different sensor IC on more recent units that should work fine at 3.3V.
In general, I would not expect internal pull-ups to be reliably strong enough to work well for something like this. You might try looking at the encoder signals with an oscilloscope to see if they look acceptable (I know you said you don’t have access to the ones that aren’t working, but maybe the ones you have are marginal too). However, it doesn’t seem surprising that stronger external pull-ups might be needed. Another possible solution might be to cut the VPU = VREG jumper (which it sounds like you are already doing) and then connect an external 3.3V source to VPU, which would allow you to keep using the on-board pull-ups without reconfiguring VREG for 3.3V output.
We are excited to hear that you are using our Romi robots for teaching a class! If you would like to share any more details about what you are doing with them, we’d be interested in hearing about it.
Thanks for the quick reply. You reminded me I had a pocket scope at home (all the fancy stuff is locked away at work ) and you were right; the voltage doesn’t get pulled nearly as high as with an internal pullup (it turns out that even though I had thought I cut the VPU jumper on my bot, there was still enough copper to pull it to 5V - once I made sure it was cut, I started having the same issues). I attached a pic of the scope readings side by side.
Thanks for the advice on using the VPU pad to connect to 3v3 and that it is OK to use 3v3 for VccEnc (I saw that the AH1751 was listed just an example part but wasn’t sure); either way may make a good solution.
We have a small group of students gearing up for the Robocup Junior Maze challenge next season so we had to quickly adapt to find a distance learning solution that they could use at home to practice (normally we have them 3D print a chassis and work on one bot as a team in class). Teaching electronics using real circuits over Zoom has been…well…an experience (students are great but it is very frustrating not really being able to see what they’re doing especially since this is their first time wiring anything). The Romi chassis definitely made a pretty solid base for the class given the short notice we had.
This little glitch turned into a good lesson about pullups though! Thanks again!