How to run Arduino-on-breadboard at 3.3V and still have USB communication to PC

3.3varduinoftdiuart

I have built an Arduino on a breadboard (using an ATmega328PU) with an 5V FTDI USB controller.

I want to be able to run the Arduino at 3.3V instead of 5V.

It works completely at 5V supplied by the FTDI controller, including USB serial from the Arduino IDE to the FTDI controller.

I am using a voltage regulator to lower the FTDI controller's 5V down to 3.3V (I have checked and its always 3.2-3.4V out) to power the Arduino. Everything works (it can power some 3.3V sensors and run my sketch), except I can't communicate with it over USB serial at all.

I have a 22μf cap between the DTR line and the ATmega's RESET pin and I have a 10k resistor on the ATmega's RESET pin (from tutorials the 328PU needs both for uploading sketches), and it works at 5V.

I have tried an NTE4050 non-buffering inverter to convert between the 3.3V and 5V signalling and it still doesn't work. Has anyone tried that?

For serial monitoring (which doesn't work at 3.3V either) I am running at 115200 baud but I also can't upload sketches which is at a lower baud rate (19200?).

Best Answer

The supply voltage of the FTDI chip will usually be 5V. However the communication I/O voltage can be set separately. For example on the FT232R there is a VCCIO pin which needs to be pulled to the desired I/O level.

If your FTDI board allows you to change the voltage on the VCCIO pin then you could connect it directly to the 3V3OUT pin and the FTDI will work correctly with the lower voltage 3.3V compliant I/O.

If the FTDI board is fixed to 5V I/O then you will need to use some form of level translator.