I wanted to drive a couple of LEDs using PWM from an Arduino. However the Arduino pins provide 5V and I needed it at 3.3V. I read online about PWM controllers but not quite sure how they work and how they are controlled.
Does anyone have any ideas how I could get 12 PWM signals at 3.3V using an Arduino? Also some info on PWM controllers would be appreciated.

You can run them on the 5 VDC outputs of the Arduino with the use of a current limiting resistor. However, if you are going to do more than one LED on an output you will have to use a transitor to switch the LED's on an off. This is due to the low current sinking/sourcing abilities of the outputs.

This is due to the low current sinking/sourcing abilities of the outputs.

Click to expand...

And also depending on the Arduino source capability. Checkj the datasheet of the regulator mounted on the board to know the maximum souce current it can drive, or in addition, an external power supply can be used.

Led's are driven by current..NOT voltage. you basically just need to ensure your supply voltage is higher than the Vf of the LED (or group of LED's if in series). Anyone can power than LED with a 1000V supply if they wanted to.. The important part is the 20mA rating for the LED which you ensure the LED gets only that via a resistor (or via a constant current supply)

Each LED will have it's own pin and they won't be running at the same time (2 at a time max). So actually I'm going to use the Mega.

Click to expand...

There is a VERY..VERY good chance that you don't need a mega either.. Maybe you should tell us EXACTLY what you are trying to do so you can learn the proper way to do it. (Charlieplexing/Multiplexing might be one solution)

There are arduino's out there that run on 3.3V only. So those would undoubtedly have the 3.3V pwm that you are looking for. As for the 5V versions I am uncertain. You can use the pwm pins to control any voltage level you want. Just use a transistor (BJT or FET) connected to the pin.

I have 12 LEDs in a ring. Each LED runs separately and one a time. I need to vary the intensity of the LEDs with PWM. The Mega has 14 PWM while the UNO only has 6. I am using a Arduino because I need to be able to control the LEDs with a computer and collect data. I have the interface almost ready.

I have 12 LEDs in a ring. Each LED runs separately and one a time. I need to vary the intensity of the LEDs with PWM. The Mega has 14 PWM while the UNO only has 6. I am using a Arduino because I need to be able to control the LEDs with a computer and collect data. I have the interface almost ready.

Click to expand...

Controlling the brightness of a LED using PWM is pretty simple. For a 5V logic output compute a nice value of resistor from:

R = (Vdrive - Vled) / Iled

Where Vdrive is the logic output voltage, Vled is the LED ON voltage, and Iled is the LED current when it is on. Make sure the micro can drive Iled.

Set up like that, the LED is running at full current or full brightness for a pulse width of 100%. If you drop the pulse to 50% you get 50% of the current and a lesser brightness (I don't think brightness and current have a direct linear relationship).

From what you've said 12 LEDs and 12 resistors should be all you need.