AMS1117 3.3V Youth - Make 3.3V the Way You Want

by KusTech in Circuits > Arduino

48 Views, 1 Favorites, 0 Comments

AMS1117 3.3V Youth - Make 3.3V the Way You Want

AMS1117 3v3 Youth.png


Hello fellas!

In this article, we’ll take a look at a series of modules based on the AMS1117—a low dropout voltage regulator designed to provide a stable 3.3V output.

The AMS1117 is a common chip found in many devices where a stable 3.3V is needed for currents up to 1A. It’s a perfect fit for your projects that use 3.3V logic, such as microcontrollers from the ESP32 family or some Arduino boards.

So, what makes this module with the AMS1117 so useful?

  1. 8 unique Anime designs
  2. Input voltage up to 15V and output current up to 1A
  3. Multiple connection options: USB-C, screw terminals, or female headers
  4. Physical power switch
  5. Output options: screw terminals or female headers


We’ll measure voltage using a multimeter and current with an ACS712 Youth current sensor module paired with the ESP32-S3 Youth. Links to all the modules used are provided below.

Supplies

PXL_20241221_165241197.jpg

Is It Easy to Connect?

AMS1117 Connection.png

As I mentioned earlier, you can connect the modules however you like. The photo shows four AMS1117 modules connected in different ways: via USB-C, screw terminals, and directly with wires using gold pins. The last board is connected through USB-C but turned off using the physical power switch. This switch cuts power to the chip, so you don’t have to unplug wires every time—just flip the switch.

We’re also supplying different input voltages to the regulator: 5V and 14.5V. As you can see, nothing overheats, and everything works smoothly. (Unfortunately, I only have one multimeter, so I can’t show the output values of all the devices, but the glowing white LED indicates a steady 3.3V output.)

The input voltage is supplied using the MT3608 converter, which I’ve written about in a this article.

Let's Check Values

AMS1117 Measurment.png
AMS1117_1#_ACS712_code.png

For the test, we connected a resistor to the output of the AMS1117 module (powered via USB-C). In the circuit, we also added an ammeter and an ACS712 Youth current sensor module, connected to an ESP32-S3 Youth to display values in the Serial port. The results are shown in the photo.

The ESP32-S3 code (how to upload it read in this article):

#include <Arduino.h>

// Configuration
const int ACS712_Pin = 14; // ESP32-S3 Youth pin (A0) connected to ACS712 sensor
const float Sensitivity = 185.0; // Sensor sensitivity (185 mV/A for the 5A version)
const float ADC_Resolution = 4095.0; // ESP32 ADC resolution (12-bit)
const float V_Ref = 5.0; // Reference voltage for the divider (5V)
const float VoltageDividerGain = 1.5; // Voltage divider gain (1k + 2k) / 2k
const float noiseThreshold = 0.02; // Ignore current below 20 mA (noise reduction)
const float calibrationFactor = 1.075; // Calibration factor (adjust to match multimeter readings)

// Smoothing parameters
const float alpha = 0.5; // Smoothing factor (0.3-0.6 for faster response)

// Variables
float zeroCurrentVoltage = 0; // Voltage at zero current
float current = 0; // Current value
float smoothedVoltage = 0; // Smoothed voltage value

void setup() {
Serial.begin(115200);

// Measure "zero current" voltage
Serial.println("Calibrating sensor...");
zeroCurrentVoltage = calibrateSensor();
smoothedVoltage = zeroCurrentVoltage; // Initialize smoothed value
Serial.println("Calibration completed!");
Serial.print("Zero current voltage: ");
Serial.println(zeroCurrentVoltage, 3);
}

void loop() {
// Read raw voltage from the sensor
float rawVoltage = analogRead(ACS712_Pin) * V_Ref / ADC_Resolution * VoltageDividerGain;

// Apply exponential smoothing
smoothedVoltage = alpha * rawVoltage + (1 - alpha) * smoothedVoltage;

// Calculate current (voltage relative to zero point)
current = (smoothedVoltage - zeroCurrentVoltage) / (Sensitivity / 1000.0);

// Apply calibration factor
current *= calibrationFactor;

// Ignore noise below the threshold
if (abs(current) < noiseThreshold) {
current = 0; // Set current to zero
}

// Output data to the Serial Monitor
Serial.print("Smoothed Voltage: ");
Serial.print(smoothedVoltage, 3);
Serial.print(" V | Current: ");
Serial.print(current, 3);
Serial.println(" A");

delay(100); // Reduced delay for faster response
}

// Function to calibrate the sensor (measures voltage at zero current)
float calibrateSensor() {
float sum = 0;
const int samples = 100; // Number of samples for calibration

for (int i = 0; i < samples; i++) {
sum += analogRead(ACS712_Pin) * V_Ref / ADC_Resolution * VoltageDividerGain;
delay(10);
}

return sum / samples; // Return average voltage
}


Both the ammeter and the ACS712 showed a current slightly above 1A, while the output voltage of the module dropped slightly to 3V. During the tests, the module ran for about an hour, and thanks to the large board area, metal components, and wide copper traces, it didn’t overheat and managed heat dissipation quite well. At input voltages above 5V, it will heat up faster since more energy needs to be dissipated.

Overall, I think it’s a pretty solid module that holds up to its specifications, has some cool features not found in other modules on the market, and looks unique and eye-catching.

In Conclusion

AMS1117 3.3V Youth

Thank you for reading this article! If you have any questions or if something doesn’t work, feel free to ask in the comments section.


By the way - don't forget to check all Collection in my Tindie shop :)