Watch it work
The problem
Small shops, hostel canteens and college snack counters usually sell through an attendant: the buyer asks, the seller picks the item, and change is counted by hand. That works while the counter is staffed, but it stops during breaks, after hours, and whenever the attendant steps away, and every sale depends on someone being present to take money and hand over stock. A coin-operated vending prototype removes the attendant from that loop. The buyer inserts coins, watches the balance grow on a display, presses the button for the product they want, and collects it from a pickup tray — the same transaction a staffed counter performs, handled by a coin acceptor, a controller, and a spiral dispenser. For an electronics student, the value of the build is that each stage is visible and testable: coin validation, pulse counting, balance arithmetic, price comparison, and motor timing all happen in hardware and code the student can probe.
| Approach | Attendant needed | Payment handling | Product selection | Stock visibility |
|---|---|---|---|---|
| Manual counter sale | Yes, every sale | Cash counted by hand | Buyer asks, seller picks | Only the seller knows |
| Card-only kiosk | No | Card or wallet only, no coins | Touchscreen menu | Screen shows stock |
| Full commercial vending machine | No | Notes, coins, card, telemetry | Keypad and large cabinet | Remote stock reporting |
| This coin-acceptor prototype | No | Coins validated by a programmable acceptor | Four push buttons, one per spiral lane | Visible coils behind a clear panel |
Inserts coins and presses a button.
Follow the working sequence
How it works
A sale begins when a buyer drops a coin into the acceptor slot and ends when the chosen product lands in the pickup tray, with the controller tracking money and stock at every step in between. The acceptor first checks the coin by size, thickness and material signature, and only a coin it recognises produces pulses; anything else falls through to the reject path without adding to the balance. The controller counts those pulses into a rupee balance and updates the LCD, so the buyer watches the total grow coin by coin. When a product button is pressed, the controller compares the balance with that lane's price: if the balance is short, nothing moves and the display shows the shortfall; if the balance covers the price, the lane motor turns its coil one full rotation, one item drops, the price is subtracted, and the remaining balance stays displayed for the next selection or a coin return.
- The buyer inserts a coin into the CH-926 acceptor, which validates it by diameter, thickness and material signature and rejects unrecognised coins to the return path.
- For each accepted coin, the acceptor sends a pulse train to the Arduino Uno, which adds the coin's programmed value (Rs 1, Rs 2, Rs 5 or Rs 10) to the running balance.
- The 16x2 LCD updates after every coin to show the current balance, and the four selection buttons stay armed for lanes A1, A2, B1 and B2.
- The buyer presses one product button; the controller reads the price stored for that lane and compares it with the balance.
- If the balance is short, no motor runs and the LCD shows INSUFFICIENT BALANCE with the shortfall, so the buyer can insert more coins.
- If the balance covers the price, the controller drives that lane's DC gear motor through the L298N driver for one full coil rotation, dropping exactly one item into the pickup tray.
- The controller subtracts the price from the balance, shows the remaining balance on the LCD, and the buyer collects the item or presses another product button or the coin-return button.
Tech stack:
- Arduino Uno · ATmega328P
- CH-926 multi-coin acceptor
- 16x2 LCD display
- DC gear motors · L298N driver
- Spiral dispenser coils
- Push-button selection panel
- 12 V DC power supply
- Arduino IDE · C++
| Parameter | Value |
|---|---|
| Controller | Arduino Uno R3, ATmega328P at 16 MHz, 5 V logic (datasheet) |
| Digital I/O | 14 pins, 6 with PWM output (datasheet) |
| Analog inputs | 6 pins (datasheet) |
| Coin acceptor | CH-926 programmable multi-coin acceptor (datasheet) |
| Coin types accepted | Up to 6 coin types simultaneously (datasheet) |
| Coin diameter range | 15–29 mm (datasheet) |
| Coin thickness range | 1.8–3.0 mm (datasheet) |
| Acceptor supply | DC 12 V ± 10% (datasheet) |
| Acceptor working current | 50 mA (datasheet) |
| Coin recognition speed | 0.6 seconds or less per coin (datasheet) |
| Demo denominations | Rs 1 · Rs 2 · Rs 5 · Rs 10 (design values) |
| Product lanes | 4 lanes: A1 · A2 · B1 · B2 (design count) |
| Demo lane prices | Rs 10 · Rs 15 · Rs 20 · Rs 25 (design values) |
| Dispense action | One full spiral-coil rotation per paid selection (design behaviour) |
| Display | 16x2 character LCD showing balance, price and status (design scope) |
| System power | 12 V DC, 2 A adapter with a buck step-down to 5 V for logic (design scope) |
Project features
The build is organised around four capabilities that together complete one unattended sale. Multi-coin acceptance lets the buyer pay with more than one denomination, because the programmable acceptor identifies each coin and reports it as pulses the controller can count. A live balance display keeps the transaction honest: the LCD shows the running total after every coin and the price of the selected product, so the buyer always knows where they stand. Spiral-lane dispensing turns a button press into a delivered product, with one motor per lane rotating its coil exactly one turn so a single item drops. Balance and refund handling closes the loop safely: an underpaid selection is refused without dispensing, and the remaining balance stays on the display for the next selection or a coin-return press, with the LCD confirming each step along the way.
- [Multi-coin acceptance] A programmable CH-926 acceptor identifies up to 6 coin types (datasheet) and reports each accepted coin as a pulse train, so the controller can add Rs 1, Rs 2, Rs 5 and Rs 10 coins into one running balance.
- [Live balance display] A 16x2 LCD shows the inserted balance after every coin, the price of the selected lane, and messages such as INSERT COIN, INSUFFICIENT BALANCE, and DISPENSING, so the buyer never guesses the machine state.
- [Four spiral dispenser lanes] Four labelled lanes (A1, A2, B1, B2) each hold one product behind a clear panel, and each coil is driven by its own DC gear motor through an L298N driver for independent dispensing.
- [One-turn dispense control] The controller runs the selected lane motor for one full coil rotation (design behaviour), so exactly one item advances and drops into the pickup tray per paid selection.
- [Insufficient-balance protection] A selection that costs more than the inserted balance is refused without rotating any coil, and the display shows the shortfall so the buyer can insert more coins.
- [Coin-return button — transaction reset] A return button ends the transaction, shows the balance being cleared on the display, and resets the balance to zero for the next buyer; it does not dispense coins as change (see Limitations).
- [Builder note — acceptor calibration] During calibration, a Rs 10 coin was first rejected because its pulse count overlapped the stored Rs 5 sample; re-teaching the acceptor with 20 sample insertions of each denomination, as the acceptor manual prescribes, separated the two coins cleanly. Budget calibration time for every denomination you plan to accept.
- [Builder note — spiral jam lesson] A packet wider than the coil pitch wedges between turns instead of advancing; keep packet width below the coil pitch and test each lane with its actual product before the demonstration, not with an empty coil.
What is included
- Complete vending machine prototype: cabinet, clear front panel, 4 spiral lanes, coin acceptor, display and selection panel
- Arduino Uno controller with the full coin-counting, balance and dispense firmware
- L298N motor driver board and 4 DC gear motors wired to the spiral coils
- 12 V DC power supply with step-down regulation for the logic circuits
- Project report PDF covering problem, coin validation, balance logic, dispensing mechanism, testing and limitations
- PPT presentation for review
- Viva Q&A preparation document covering coin acceptors, pulse counting, motor drivers and embedded control flow
To request this project on a quotation basis, message on WhatsApp with the scope needed: 2-lane bench demo, the full 4-lane cabinet, or the full build with documentation. The quotation covers the agreed scope, the build is prepared to order, and delivery timing is discussed on WhatsApp once the scope and any customisation are confirmed. No fixed price is quoted on this page, and no delivery date is promised before that discussion.
Limitations & prerequisites
- The prototype accepts coins only; it has no note acceptor, card reader or digital-payment module, and no change-dispensing mechanism — remaining balance is shown, not returned as coins.
- Coin recognition depends on the acceptor being taught with sample coins of each denomination; untaught, worn or foreign coins are rejected, and calibration must be repeated if the accepted coin set changes.
- The four-lane cabinet is a bench demonstration unit, not a commercial machine: it has no refrigeration, no security locking beyond a basic latch, and no remote stock or sales telemetry.
- Dispensing is tuned per product size; a product much wider than its coil pitch can jam, and each lane must be tested with its actual product before demonstration.
- The demo prices and denominations are design values for the prototype; real deployment would need pricing, coin-set and tax decisions outside this student build.
- The machine handles one selection at a time and one buyer at a time; there is no queue, no multi-user handling, and no inventory counting beyond the visible coils.
Frequently Asked Questions
How does the coin acceptor tell coins apart?
The CH-926 acceptor measures each inserted coin against the samples it was taught during programming, checking diameter, thickness and material signature, and it only reports a coin it recognises. An accepted coin produces a pulse train the controller counts into the balance, while an unrecognised or foreign coin falls through to the reject path without adding anything. Because recognition depends on taught samples, calibration with the actual coins you plan to accept is a required build step, not an optional tuning pass.
What happens if I do not insert enough money?
Nothing is dispensed and no money is lost: the controller compares the balance with the selected lane's price, and if the balance is short it refuses the selection without rotating any coil. The LCD shows INSUFFICIENT BALANCE together with the shortfall, so you can insert more coins to reach the price. The balance stays on the display until a successful selection subtracts the price or the coin-return button resets the transaction.
Can the machine give change?
No, this prototype does not return coins as change; the remaining balance after a purchase stays on the display for the next selection, and the coin-return button ends the transaction and resets the balance. A coin-change dispenser with a payout hopper and its own coin stock would be a separate mechanism, and it is listed as future scope in the report rather than claimed as delivered. The demo prices are chosen so a buyer can plan exact or near-exact payment.
How many products and coin types can it handle?
The prototype has 4 product lanes (A1, A2, B1, B2) and the CH-926 acceptor can be programmed for up to 6 coin types at once, with the demo build taught Rs 1, Rs 2, Rs 5 and Rs 10 coins. Adding a fifth lane would need another motor channel and a wider cabinet, and accepting a new denomination means re-teaching the acceptor with sample coins of that denomination. The lane count and coin set are design choices documented in the report, not fixed limits of the concept.
What can go wrong during the demonstration?
The two common failures are both calibration issues: an untaught or worn coin gets rejected, and a product wider than its coil pitch jams between turns instead of advancing. Both are covered in the builder notes — teach the acceptor with at least 20 sample insertions per denomination, and test every lane with its actual product before the demonstration. The report also documents the insufficient-balance and coin-return paths, so a refused selection is a working feature to show, not a demo failure.
Is this project suitable for a final-year project?
Yes, this project fits Electronics and Telecommunication, Electrical and Electronics, and Instrumentation programmes, because it combines sensor-based coin validation, embedded control logic, motor driving, and a complete user-facing transaction. The coin-counting logic, balance arithmetic, and dispense timing give concrete material for design discussion, testing, and demonstration. The report documents the mechanism, the datasheet values, and the limitations honestly.
Components & software requirements
- Arduino Uno · ATmega328P
- CH-926 multi-coin acceptor
- 16x2 LCD display
- DC gear motors · L298N driver
- Spiral dispenser coils
- Push-button selection panel
- 12 V DC power supply
- Arduino IDE · C++
Delivery information
Built-to-order project. Delivery timeline is shared after order confirmation based on current queue.
Support terms
Complete documentation, setup guide, and viva preparation included. Support for setup and explanation provided.
Download free synopsis (PDF)
Enter your name and WhatsApp number — the synopsis PDF downloads immediately. We may send occasional project updates on WhatsApp; no spam.