Build an Automatic Dosa-Making Robot
A crowd-favorite science expo project: an Arduino UNO controls DC gear motors and servos to rotate the pan, dispense batter, spread it into a circle, and flip the dosa — all on its own.
Mission Overview
How does an automatic dosa maker work?
The whole process is broken down into small, repeatable robot actions — the same way a real dosa chef works, just controlled by code instead of hands.
A servo opens a valve to release batter onto the pan.
A DC gear motor spins the pan while a servo arm spreads the batter.
The pan keeps turning gently so the dosa cooks evenly.
A flipper servo lifts and turns the dosa over.
Shopping List
Parts you'll need
This build mixes two kinds of motors — DC gear motors for continuous spinning, and servos for precise, controlled movements.
Wiring Guide
Circuit connections
The DC gear motor connects through the L298N driver, while all three servos connect directly to the Arduino's signal pins.
| Component | Arduino UNO Pin | Purpose |
|---|---|---|
| L298N — IN1 | Pin 8 | Motor direction control |
| L298N — IN2 | Pin 7 | Motor direction control |
| L298N — ENA | Pin 10 (PWM) | Motor speed control |
| Servo 1 — Batter valve | Pin 5 (PWM) | Opens/closes batter gate |
| Servo 2 — Spreader arm | Pin 6 (PWM) | Sweeps batter into a circle |
| Servo 3 — Flipper arm | Pin 9 (PWM) | Flips the dosa |
Servos and the motor driver share ground with the Arduino, but the DC motor and servos should be powered from a separate supply to avoid overloading the Arduino's 5V pin.
Build Log
Step-by-step build instructions
Build the turntable base
Mount the DC gear motor under a bearing plate so it can spin the dosa pan smoothly and evenly.
Add the batter dispenser
Fix the batter container above the pan with a small valve controlled by Servo 1, positioned to drip batter near the center.
Mount the spreader arm
Attach a thin, flat arm to Servo 2 so it can sweep from the center of the pan outward, spreading the batter into a circle as the pan turns.
Mount the flipper arm
Position Servo 3 with a thin lifting arm at the edge of the pan, angled so it can slide under the dosa and flip it over.
Wire everything up
Connect the L298N driver and all three servos to the Arduino following the wiring table, using a separate power supply for the motors.
Upload the code
Copy the sketch from the next section into the Arduino IDE and upload it to your Arduino UNO over USB.
Do a dry run first
Test the full sequence with water instead of batter and with the pan cold, to check timing before adding real heat and batter.
Code Room
Arduino code for the dosa-making sequence
This sketch runs through the full cooking sequence once: dispense, spread, cook, and flip.
// Automatic Dosa Maker — Arduino UNO // Controls: 1 DC gear motor (via L298N) + 3 servo motors #include <Servo.h> // ---- L298N motor driver pins ---- #define IN1 8 #define IN2 7 #define ENA 10 // ---- Servo objects ---- Servo valveServo; // releases batter Servo spreaderServo; // spreads batter into a circle Servo flipperServo; // flips the dosa void setup() { pinMode(IN1, OUTPUT); pinMode(IN2, OUTPUT); pinMode(ENA, OUTPUT); valveServo.attach(5); spreaderServo.attach(6); flipperServo.attach(9); valveServo.write(0); // valve closed spreaderServo.write(0); // arm parked flipperServo.write(0); // arm parked delay(2000); // small pause before starting runDosaSequence(); } void rotatePan(int speed, int durationMs) { digitalWrite(IN1, HIGH); digitalWrite(IN2, LOW); analogWrite(ENA, speed); // 0-255 delay(durationMs); } void stopPan() { analogWrite(ENA, 0); } void runDosaSequence() { // 1. Dispense batter valveServo.write(90); // open valve delay(1200); valveServo.write(0); // close valve // 2. Rotate pan while spreading batter digitalWrite(IN1, HIGH); digitalWrite(IN2, LOW); analogWrite(ENA, 120); // gentle spin for (int i = 0; i < 3; i++) { spreaderServo.write(120); delay(500); spreaderServo.write(20); delay(500); } spreaderServo.write(0); // park the arm // 3. Let it cook while turning gently delay(6000); // 4. Flip the dosa stopPan(); flipperServo.write(160); delay(800); flipperServo.write(0); // 5. Cook the other side briefly, then stop rotatePan(100, 4000); stopPan(); } void loop() { // The sequence runs once in setup(). // Add a push-button here later to trigger runDosaSequence() // again for the next dosa! }
This version uses simple delay() timing so it's easy to follow — once it works, try adding a push-button so a new dosa sequence starts each time someone presses it, instead of only running once at power-on.
Important Notes
Safety and good practice
Adult supervision is mandatory for this project. It involves a heated cooking surface and mains-powered heating element, which are burn and shock hazards. A parent, teacher, or mentor must handle the heating setup and supervise every test and demo.
For the science expo demo, consider skipping real heat. Many expo teams demonstrate just the robotics (dispensing, spreading, flipping) using water or cold batter on an unheated pan — it shows the engineering just as well, without any burn risk.
Keep electronics away from batter and water. Shield the Arduino, driver, and wiring from spills, and make sure hands are dry before touching any powered circuit.
Power the motors separately. Run the DC motor and servos from their own 6-12V supply rather than the Arduino's onboard regulator, to avoid overheating or resetting the board.
Quick Answers
Frequently asked questions
What's the difference between a DC gear motor and a servo motor?
A DC gear motor spins continuously in one direction, which is perfect for rotating the pan. A servo motor moves to an exact angle and holds it, which is ideal for precise actions like opening a valve or sweeping an arm.
Is this a good project for a school science expo?
Yes — it combines mechanical design, electronics, and coding in one visual, easy-to-explain demo, which judges tend to love. Just make sure the heating part is handled safely, as noted above.
Do I need to add a heating element myself?
Heating is a separate system from the robotics controller described here, and should only be added and wired by an adult using a proper thermostatically controlled hot plate, kept well away from any batter spills or bare wiring.
Can I control the timing more precisely?
Yes — once the basic delay()-based version works, you can upgrade to using millis() for non-blocking timing, or add sensors (like a light sensor to detect when the batter has set) to trigger the next step automatically.
What else can I build using DC gear motors and servos together?
The same combination powers projects like automatic paint mixers, rotating plant-watering rigs, small conveyor sorters, and turntable-based camera rigs.

Comments
Post a Comment