đŸƒđŸŒ

Kinetic Sculpture

Kinetic Sculpture

Wiring up 1 MicroServo or Servo HS-318(?)

Next steps:

  • Book office hours with Rios OR Rozin (✅), to put in lights, what would I need to do?
    • This board can also be used with LEDs.
  • Solder in a capacitor if:
    • Driving more than 4–6 servos at once.
    • Servos move all at the same time.
    • What value?

      • 100”F per servo (minimum)
      • So for 3 servos: ~330”F is fine (470”F is safer)
      • For 16 servos: 1000–2200”F (6.3V or higher)
      Servos
      Suggested Cap Formula
      Result
      16
      n × 100”F (base rule)
      1600 ”F minimum
      16
      High stability scenario
      2200–4700 ”F preferred

⚡ Bonus: Power Budget for 16 SG90s

From your specs:

  • Running current per servo ≈ 400–500 mA
  • Stall current ≈ 1.3–1.6A
  • Let’s assume real-world peak ~0.8A × 16 servos = 12.8A peak draw

Your 5V 10A supply is close, but you may want to:

  • Be cautious with simultaneous full-speed startup
  • OR eventually upgrade to 5V 15A if you hit instability
💡

Get 360Âș servos of up to 6V. Look up attaching motors to fabric. Motor to fabric fasteners

💡

Can I chain 2 boards using an Arduino Nano or do I need to get an Uno?

image

I2C scanner sketch

Voltage readings:

PCA9685 Side VCC & GND: has 3.3V Blue Terminal (top right on board): has 5.21V

_____ I2C is not getting recognized. Serial print at setup is not happening. Replaced PCA9685 board, which seemed to be fried && the motor.

Code working for 1 servo:

code working to sweep through 6 servos

General tips:

  • Use short, thick wires between your 5V power supply and the PCA9685’s blue terminal block.
  • Make sure GND is shared between Arduino and power supply.

Issues:

  • Motor 15 was overheating severely and making a noise 
 Why? Is there something in the way I wrote the code that makes the PWM to keep getting sent there?!
  • ‣

    Solution with Serial Input working and fail safe

  • Next let's work on eliminating sudden movements of any kind from our SG90 MicroServos.
  • Right now the servos are going from initial position to final angle position very fast and then back to initial position in a relatively controlled speed. I want the speed to be controlled all throughout. Changing the value of delay didn't solve the issue of very sudden movements. Maybe it's just that we're consistently moving servos from 0Âș to 180Âș and therefore they have to go back to 0 to start the loop.

    → The fix: Store the last position and ease into new motion

    • Track the last known pulse for each servo
    • Start the sweep from that last position
    • Only move incrementally from where it last left off
    ‣

    Working Code

💡

GPT: Let me know if you'd like to:

  • Set angle like angle 3 90
  • Control speed like speed 5
  • Create simple motion sequences Could make a grid and then if MediaPipe is on that spot, move fabric there. Need to get a map of positions though.
‣

Full code for 2 boards and 31 servos

Code from PCA9685 library without any changes

SG90 9G MicroServo datasheet:

[Applications] SG90 9G servo motor, compatible with RC helicopters, micro robots, robot arm and ships etc. Support various remote control toys and Arduino project [Interface type] This SG90 servo is compatible with JR & Futaba interface [Operating speed] 0.12 second/ 60degree ( 4.8V no load), 0.1 second / 60degree ( 6.0V no load), Max rotation angle:180 degrees [Stalling torque] 17.5oz/in (1kg/cm); Dead zone width: 7 microseconds; Amplifier type: analog controller; Working voltage: 4.8V6.0V [Reminder] The starting current of the analog servo motor must be greater than 1A. SG90 Servo is an analog servo and needs to continuously provide PMW signal to work normally

Pulse Signal PWM: 50Hz/O.5-2.5ms No-load Speed: 0.09S/60 degree@4.8V Operating Voltage Range: 4.8V ~6.0V Operating Temperature Range: -25°c ~ 70°c

Mechanical Specification: ●Limit angle: 200°± 1° ●Weight: 9 ± 1 g ●Connector wire gauge: 28 PVC ●Connector wire length: 250 ± 5 mm ●Spline: 21T ●Horn type: Cross,star and bar-type ●Excessive play: ≀0.5°

Control Specification: ●Control system: Change the pulse width ●Amplifier type: Analog controller ●Operating trave: l120°±10° (900→2100 ÎŒsec) ●Left&Right travelling Angle deviation: ≀ 6° ●Centering deviation: ≀ 1° ●Neutral position: 1500 ÎŒsec ●Dead band width: 7 ÎŒsec ●Rotating direction: Counter Clockwise (900→2100ÎŒsec) ●Pulse width range: 900→2100 ÎŒsec ●Maximum travel: About 120° (900→2100 ÎŒsec)

Wire Layout: ●Electrical Specification (Function of the Performance): Operating ●speed (at no load): 0.09±0.01 sec/60°(4.8V ) 0.08±0.01 sec/60°(6V) ●Running current (at no load): 400±30mA (4.8V ) 500±30mA(6V) ●Stall torque (at locked): 2.0±0.20kg·cm (4.8V ) 2.2±0.20kg·cm(6V) ●Stall current (at locked): 1300±40mA (4.8V ) 1600±50mA(6v) ●Idle current (at stopped): 6±1mA (4.8V ) 6±1mA(6v) ●Running life(at no load): >350000 Turns(4.8V ) >320000 Turns(4.8V )

“If you want, I can now show you a simple step-by-step calibration guide to figure out SERVOMIN and SERVOMAX just by uploading sketches and watching your servo move (no special equipment).”

Working code with 5V 15A

Sweeping through all at the same time on 5V 10A

‣

Next working session:

June 12th 2025

Working sketch: Kinetic: myCam, external, handPose continuation with 1 hand, webserial by ineslucas -p5.js Web EditorKinetic: myCam, external, handPose continuation with 1 hand, webserial by ineslucas -p5.js Web Editor

image