5
\$\begingroup\$

I created a circuit using a keypad, a servo and a few LED's. This was connected to my Arduino Uno. Now I tried putting everything onto a single PCB and thus building my own custom "Arduino" into it.

I made the mistake of etching and assembling the new circuit without testing it on a breadboard.

The problem will most probably be within the "custom arduino" part of the sketch.

Can you please take a look and help me out (Click for full-size):

the schematic

I tested the power source and found it at 5.47V and the voltage on the output side of the 5V-regulator is ~4V.

Edit

I disconnected the reset pin from anything, but the board still reacts the same. I tried bypassing the voltage regulator, but it did not do anything.

The red LED is supposed to shine and the servo must move to a certain position upon startup, but it does not happen - the servo does get power and keeps it reacts in two ways:

1) When power goes through regulator, it jumps, step by step to the one side
2) when I skip the regulator, it goes straight all the way to the opposite side.

Is there any other thing I might have forgotten? It would be very difficult to add those capacitors.

\$\endgroup\$
  • \$\begingroup\$ You absolutely need all the capacitors mentioned in my answer (check your datasheets, they will tell you to use them) Also, have you actually tied the reset pin high? (i.e. to Vcc through the resistor) Unless the datasheet specifically says you can leave it floating (and it will pull itself high) then you need to do this. \$\endgroup\$ – Oli Glaser Aug 24 '12 at 13:03
9
\$\begingroup\$

Your reset signal is tied low. The bar above it indicates that it is an active low signal. It needs to be pulled high to avoid resetting constantly. However, there should also be a button there so that your processor can have the reset signal pulled low (by the button) in order to reset it in the event of a lock or something. The reset button would have the same configuration as your switches do.

You can easily fix your problem by cutting the trace to ground and attaching a wire to 5V, so you don't have to make another PCB. You should update your schematic though so the next time you have your design fab'd you don't make the same mistake.

\$\endgroup\$
4
\$\begingroup\$

Like JGord says your AVR won't come out of reset since R10 keeps it pulled low. Note that almost all microcontrollers will have an active low reset. But you don't have to change anything to the PCB. The reset pin doubles as a GPIO pin, PC6.

Says the datasheet, page 5:

If the RSTDISBL Fuse is programmed, PC6 is used as an I/O pin. Note that the electrical characteristics of PC6 differ from those of the other pins of Port C.
If the RSTDISBL Fuse is unprogrammed, PC6 is used as a Reset input. A low level on this pin for longer than the minimum pulse length will generate a Reset, even if the clock is not running.

Alternatively, just remove R10. The AVR has an internal reset, so there's no need to use the reset pin. In that case make sure to program PC6 as output to prevent it from floating.

\$\endgroup\$
  • 1
    \$\begingroup\$ Be aware that if you do set the fuses to use PC6 as I/O instead of RESET, programming the chip afterwards will be harder since you'll have to use the parallel/high-voltage method instead of SPI. \$\endgroup\$ – Craig Aug 24 '12 at 1:01
  • \$\begingroup\$ Yeah I strongly recommend against programming the fuse to remove the RESET. \$\endgroup\$ – NickHalden Aug 24 '12 at 17:28
3
\$\begingroup\$

Jgord has already covered the main problem of the reset being tied low (reset is active low so it needs to be held high during operation), so I'll just add a couple of points (main point on capacitors at the bottom if you want to skip the boring stuff ;-) ):

You say the input voltage to the 5V regulator is ~5.47V and the output is ~4V. This means the regulator is not regulating.
This is because a linear regulator needs an input voltage somwhat higher than the output voltage to maintain regulation (i.e hold it's output at 5V) How much higher this needs to be is referred to as the "dropout voltage". There are two main types of linear regulator - "Standard" and "LDO" - the basic difference is that the LDO use an open collector rather than emitter follower used in a "standard" regulator, which enables a lower dropout voltage.

Anyway, if we look at the regulator used in the Arduino UNO (NCP1117 and MC33269 in different revisions, both very similar), it is an LDO type with a dropout voltage of around 1.4V max (MCP33269 1.2V).
This means the input voltage has to be the regulation voltage (5V in this case) plus 1.4V to maintain the regulation, so at least 6.4V is needed. If we look at the Arduino specs we see a recommended range of 7V-12V for the input voltage (to leave a bit of headroom is always a good idea)
The upper limit is dictated by the maximum input voltage of the regulator or the power dissipation, which ever "comes first". In this case it is the power dissipation. If we assume the Arduino is capable of drawing 200mA at full tilt, then with 12V input the regulator has to dissipate (12V - 5V) * 0.2A = 1.4W.
This doesn't sound like a lot of power to dissipate, but the package is a SOT223 with a thermal resistance from junction to ambient (θja) of ~160°C/W. This means at 1W the package will rise by 160°C above ambient, so at 1.4W it will rise by 1.4 * 160 = 224°C. So this is clearly not possible.
If we assume a maximum ambient of 50°C, then the maximum current we can draw through the regulator with an input voltage of 12V will be:

(150°C - 50°C) / 160°C/W = 0.625W is the maximum we can dissipate so:
0.625W / (12V - 5V) = 89mA is the maximum we can draw.

At 7V, the situation wouldn't be as bad:

0.625W / (7V - 5V) = 312mA

So you can see why they advise to limit the voltage to 12V maximum.

Regulator Capacitors

You need some capacitors on your regulator input and output:

NCP1117 Typical Circuit

The output capacitor is required for stability, and the input capacitor is a good idea for transient response (may be required for stability if the regulator is a more than a few inches from the power source - see datasheet page 8, linked to above)

Microcontroller bypass capacitor

Finally, you also need a bypass capacitor on your microcontroller Vcc and AVcc pins, a typical value is 100nF or 1uF ceramic (from each pin to ground, place as near the pins as possible) Have a look in the datasheet for recommended decoupling and follow the example circuit (should be one provided)
If you are using the analogue features then some isolation of Vcc and AVcc is a good idea (usually something like a series 10Ω resistor and/or inductor is recommended between the Vcc and AVcc supplies, again the datasheet should have details)

\$\endgroup\$
  • \$\begingroup\$ Please see edit. Another thing, are these stuff you mentioned such as bypass capacitor etc a necessity? Or can I ignore them? \$\endgroup\$ – LouwHopley Aug 24 '12 at 11:07
  • \$\begingroup\$ @LouwHopley - You may get away with omitting the decoupling capacitors, but you should place them. Always. On each IC's power connection. \$\endgroup\$ – stevenvh Aug 24 '12 at 11:10

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.