Berndiboy - Homemade Arduboy

Hi together,

i wanted to start doing my own PCBs since years now but never really got started. The Arduboy looked like a good starting Point so i made my first schematic and will now try to make a PCB out of it. But before doing so i thought Maybe it is better to get someone Looking over it before i just waste Money because of a stupid beginner error. As i struggle with this “just mentioned Pins but not connected” i connected all Pins directly. Looks a bit overloaded but this way i am able to understand it :slight_smile: Does anyone find any error? It has @Mr.Blinky Extension also alreay included.

1 Like

Did you do this online using EasyEDA? If so could you provide a link to the project? It would be much easier to check it using the schematic in the editor, so traces can be highlighted to show their connections.


You’ve got the CLK line of the flash chip wired (through the translator) to I2C SCL (pin 18). It should be going to SPI SCLK (pin 9)


Since you’re going to add a 3.3v regulator and level shifters for the serial flash chip, you should take the opportunity to use them for the display as well. Power the display from the same 3.3v output from the regulator and wire the display’s SCK and SDIN to the flash chip CLK and DI. You will need 3 more level shifters for the display’s CS, DC and RST. You could use use a TXB0108 instead of the TXB0104 to get these extra level shifters.


On a real Arduboy the battery charge LED is red, not yellow. The RX LED is green, not orange. The TX LED is yellow, like you have it.


The rest looks basically OK but I haven’t checked everything.

2 Likes

Wow thanks so much for your input.
Yes i did it online and can share it later.

Changed the CLK line - thanks.

The leds i will make colored, for the schematic i just used one color.

Ok will add the level shifter and change routings and the publish it. Lets see if i can wire it up correctly :wink:

1 Like

The FLASH is in standby in ~99.99% of the time ( in current context ) and the 1.8V regulator combined with the FLASH stby power draw is bigger than stby FLASH power draw at 3.3V, do not forget the triggering of the bidirectional inputs on the translator, two of them are wired to the display ( clk & mosi ) will draw a lot of power for triggering the change of the levels even if the FLASH is not addressed.
The power draw of the FLASH is influenced " big time " by the SPI BUS frequency because all data is going thru a static RAM cache and is active only when CS is asserted or a command is on execution.
You have a deep power down command for FLASH to reduce the power draw close to 0.
The translator is more useful for the display, the display is used all the time, arduboy games use static refresh principle, so the display receive data even if the screen buffer is not edited, but the translator at high frequency will draw more power than the display at 3.3V ( same situation ).
:innocent:

Sorry i do not understand anything… Is this an improvment proposal for my schematic? If so i am sorry but i am quite a noob in this stuff… Learning but way to go…

If this was for me please explain a bit more what should be changed.

Thanks

I displayed the reasons why the translator has no place in the schematic, you can use all components at 3.3V with no increase in power draw.
The translator has a power draw close to logarithmic with the frequency, at 8Mhz will draw more power than the FLASH at 3.3V with no translator.
A simplification of the sch.

The part number given in the schematic is a mistake. It should be a 3.3V regulator AP7333-33SA.

Can you show your calculation on this?

For most games, the display is refreshed at the default 60Hz. Refreshing the 1024 bytes of the display at 8MHz takes approximately 1.3ms. The time that communication is taking place to refresh the display is less than 8% of the total time that the display is on.


This is true. It might be better to also power the microprocessor from the 3.3V regulator and eliminate the level shifters. Running the processor at 16MHz at under 5V is technically “overclocking” it, so running at the raw battery voltage is better for this. However, evidence from all the Arduboys out there indicates that 3.3V operation isn’t a problem (since they seem to run OK right down to the 3.0V battery cut off voltage).

@mameise, You may wish to consider doing this. Connect the power switch SW2 to the input of 3.3V regulator U6, as you have it now, then use the regulated 3.3V output as your Vcc for everything. You can then eliminate the TX0108 level shifter.

I was confused by the battery charger, at quick look it seems to be a LDO :smiley: , so the uC is powered directly from battery, and the FLASH at 3.3V.
There can be all components powered by 3.3V, until the battery go under 3.4V will have a power draw smaller than if they are connected to battery.

My mistake…

There are three factors in the power draw by the translator:

  1. Static power = negligent.
  2. Dynamic power of the circuitry that is close to linear with the frequency and voltage.
  3. Dynamic power draw by the two schmit circuitry that store the level, practically these translators are two non inverting schmit the output connected to the other scmit input, so you need a pulse to change the level, the power on the pulse is constant, so the more you change the levels the more power will draw, not by the translator, but by the circuitry that command the change.

Different translator circuits behave differently but all have the same principle.

Power the entire circuitry from 3.3 or 3V :slight_smile: because will hit the lo battery anyway, at last you can power at 3.3V or 3V and you will have a constant power draw from 4.2V to 3.4 or 3.1V, else at 4.2V you will have pretty high power draw.

Or implement a buck regulator ( they are some at very low quiescent current ) and you will have less current draw at higher voltages :slight_smile:

The nominal voltage of the battery will be about 3.7V.
The drop across a 3.3V LDO will be 3.7V-3.3V = 0.4V.
0.4V is 11% of the total 3.7V, so the regulator’s efficiency is 89%.
You probably wouldn’t get much better efficiency from a buck regulator circuit and it would cost more (and maybe require more space).

The dropout voltage will enter in effect at the lower end of the voltage, the dropout depends of the power draw, with one uC one display and a FLASH the power draw will be around 20-30mA, the dropout on the LDO will be around 100-150mV, the 400mV dropout is at maximum supported current.

There are buck’s with P channel mos, that have 20-30mV dropout, because does not need time to charge up the gate capacitor.

True, will increase the regulator cost from 0.3-0.5$ to 1-2$.

With LDO the power draw in W is higher with the increase of the voltage, with buck is pretty constant, there is a pretty good gain in usage time with a buck, close to half more :slight_smile: , from here you can balance what you want, more time or cheap.

See TPS6214x, do not look at the delivered current, more is better ( lower on resistance, less dropout ), match the purpose ( Not sure if has P mos, sometime, producers display a default buck schematic block ).

According to the datasheet for the specified AP7333 LDO, its typical dropout voltage at 20-30mA would be about 20-30mV.

Better… :slight_smile:, remain only the problem of W vs V :slight_smile:

And cost (including assembly, test and fixing due to the number of potential points of failure) and board space.

True with cost, not with points of failure, there are more, but in this days is not a problem on PCBA, the rate of PCB failure due PCBA is less than 1 to 1000.

At least this rate of failure due to PCBA I experienced.

To be honest i do not understand anything :slight_smile: But at least i tried to Change now to:

I removed the Level shifter and tried to do the changes suggested taking the 3.3V regulated as VCC. Vbat is now going to the Level shifter, then to the switch. is it better to put the switch between VBAT and the 3.3V Regulator? Is the rest correct? Made it public here:

https://easyeda.com/editor#id=|d51a20a042694f3bbb8d97ded83effd4

And here the updated schematic.

Thanks for all your help.

Yes, that’s what I said:


You should consider adding a 6 pin header, or at least pads, for an ICSP (In circuit Serial Progammer) so you can burn the bootloader into the ATmega32U4.


You should review all the decoupling capacitors in your schematic and consider their values and whether you need more or less. For instance, you probably don’t need all of C3, C7 and C11. You may want to increase the size of C9 and C10 to 1uF or higher, as recommended in the AP7333 datasheet. You should add at least a 0.1uF decoupling capacitor close to the ATmega32U4 power pins and probably one for the display and one for the flash chip, as well.


When you removed the level shifter, I’m not sure if you joined up the traces properly When I try to highlight connections to the flash chip, I don’t always see the full path. You may have this problem in other places, as well. (Or maybe that;'s just how EasyEDA works.)


Depending on the mAh rating of the LiPo battery that you use, you may need to adjust the value of R10. The 2K resistor used by the Arduboy is actually too low. It will give a charge current of 500mA. For most small LiPo batteries the recommended charge current is 1C. For the Arduboy’s 180mAh battery that would be 180mA, so the 500mA charge rate is 2.7 times the recommended rate (which will reduce the life of the battery and maybe even cause it to overheat). The Arduboy should have used something closer to 6K.


If you think you might want to connect additional peripherals, and depending on the size and shape of your circuit board, you may wish to consider (or at least add pads for) a 12 pin expansion connector, as described by @Mr.Blinky. (Note that pin 8 has now been defined as connecting to A5).

You could also add pads for other unused I/O pins. The Arduboy circuit board has solder pads for almost all the useful pins, whether used internally or not.


Unless I missed something, everything else looks OK.

1 Like

Yes, that’s what I said:

Missed that :smiley:

Yes pads at least for ICSP are planned and if i am able to manage also other Pins.
An external Header i want to avoid as size should stay as small as possible. Thought of making a watch but i think it will not fit so for now target size is around 70x42mm or so.

Thanks for the guidance About capacitors. Will have to check :wink:

I will use a 1000mAh lipo so i would assume the 500mA should not be an issue.

Yes will try to bring out as much Pins as possible. But as far as i understand i will have to do this during PCB design, not in the schematic. But not sure, as i said, it is my first time playing around with this. Till now i just used modules for everything. But with modules the final built is Always bigger than needed…

I thank you so much for your review. Already corrected the Routings to the chip and will try to figure out the correct values for the capacitors.

Right now, you’ve still got the power switch wrong. It should go between VBat and the input of the regulator. The output of the regulator should be Vcc.

That will be charging the battery at 0.5C which is perfectly safe. It will take over 2 hours to charge, though. You could increase the charge current, to reduce charge time, by lowering R10 to as low as 1K, for a 1C charge, which would still be safe.

I’m not very familiar with EasyEDA but I think you’ll find you have to add connectors or pads to the schematic for this.

Ok corrected it i think :smiley: not so easy :wink:

Good, then i will reduce the resistor R10, thanks.

Good Point. As i have no idea i will go with this solution :slight_smile:

Edit: As per specs i Maybe should not lower R10 to 1k:
min typ max
450 505 550 mA PROG = 2.0 k

I missed this: The decoupling capacitors C9 and C10 on the regulator aren’t connected to GND.

You can always change the value later. It won’t affect the board layout. Personally, for a 1000mAh battery I would use around 1.2K for 833mA. However, if you’re trying to keep your unit small, you might want to use a smaller battery. A 1000mAh battery will power your design for over 25 hours.